@apple-pie/slice 0.1.31 → 0.1.32

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 (288) hide show
  1. package/README.md +35 -284
  2. package/dist/cjs/chunks/{AudioBubble-k7qS53g6.js → AudioBubble-Dh2IlYW0.js} +2 -2
  3. package/dist/cjs/chunks/{Avatar-hP8GuwvD.js → Avatar-WcBAu25_.js} +1 -1
  4. package/dist/cjs/chunks/{AvatarGroup-DMy34q7_.js → AvatarGroup-eUkVdeTf.js} +1 -1
  5. package/dist/cjs/chunks/{Badge-D2TbyfJS.js → Badge-4tBynWZe.js} +1 -1
  6. package/dist/cjs/chunks/{Button-CTsHZBEB.js → Button-QJ5lsSAz.js} +1 -1
  7. package/dist/cjs/chunks/{ButtonBar-BRb1PTmw.js → ButtonBar-DcpvT1vD.js} +1 -1
  8. package/dist/cjs/chunks/{Camera-CKv087kr.js → Camera-iDyPLq9h.js} +3 -3
  9. package/dist/cjs/chunks/{CheckBox-VRIL1FHh.js → CheckBox-CmZJd8u2.js} +1 -1
  10. package/dist/cjs/chunks/{Chip-Dr3vKvRY.js → Chip-Bd1bSYeC.js} +1 -1
  11. package/dist/cjs/chunks/{DivInput-Ci0gaCWL.js → DivInput-BY9pQ6ty.js} +1 -1
  12. package/dist/cjs/chunks/{Dot-C0MvSJOl.js → Dot-BeWDLajy.js} +1 -1
  13. package/dist/cjs/chunks/{DrggablePanel-DflouLUs.js → DrggablePanel-DzY5wTco.js} +2 -2
  14. package/dist/cjs/chunks/{DropDown-BS1H62yj.js → DropDown-Cn_nX8u7.js} +1 -1
  15. package/dist/cjs/chunks/{ErrorSummary-B3tof7ir.js → ErrorSummary-D-0uVwyV.js} +2 -2
  16. package/dist/cjs/chunks/{FileIcon-Te8MaqTs.js → FileIcon-JfY2AYqG.js} +2 -2
  17. package/dist/cjs/chunks/{FileList-CDcfKIV6.js → FileList-Dc1nfpR2.js} +1 -1
  18. package/dist/cjs/chunks/{FlexDiv-wO8IY0Zf.js → FlexDiv-B5Pi0-aJ.js} +1 -1
  19. package/dist/cjs/chunks/{Grouper-DyGkzdvz.js → Grouper-DKZkTlow.js} +2 -2
  20. package/dist/cjs/chunks/{Icon-BFZ_5Qv3.js → Icon-BVYVJp9J.js} +2 -2
  21. package/dist/cjs/chunks/{IconButton-CgsuJIuF.js → IconButton-CP1Wsvsx.js} +1 -1
  22. package/dist/cjs/chunks/{IndexedDB-Dgwal8na.js → IndexedDB-CeiVT55Z.js} +1 -1
  23. package/dist/cjs/chunks/{Label-BuyhcJbF.js → Label-DIs1rOey.js} +1 -1
  24. package/dist/cjs/chunks/Level-3yxetsco.js +58 -0
  25. package/dist/cjs/chunks/{MdStreamBuffer-CbG_VeRI.js → MdStreamBuffer-BudWFoNw.js} +38 -16
  26. package/dist/cjs/chunks/{Modal-ByRyv3wy.js → Modal-CjpQdoOe.js} +34 -8
  27. package/dist/cjs/chunks/{ModalController-xjflFsjF.js → ModalController-Cp2PXOOS.js} +1 -1
  28. package/dist/cjs/chunks/{Overlay-FooE9M_s.js → Overlay-DRpHYZek.js} +1 -1
  29. package/dist/cjs/chunks/{Pager-B-cuwffo.js → Pager-ChnTKwml.js} +1 -1
  30. package/dist/cjs/chunks/{ProgressIndicator-ByZ_aYAZ.js → ProgressIndicator-CFiAU-aF.js} +2 -2
  31. package/dist/cjs/chunks/{PromptInput--grtHPvy.js → PromptInput-BFWR0TaP.js} +2 -2
  32. package/dist/cjs/chunks/{RadioButton-DP2X1dA_.js → RadioButton-Bi-FP41j.js} +1 -1
  33. package/dist/cjs/chunks/{RadioButtonList-COGNW5y3.js → RadioButtonList-JHPKMCoX.js} +1 -1
  34. package/dist/cjs/chunks/{Slider-G1a8UKef.js → Slider-D97ws1Cl.js} +1 -1
  35. package/dist/cjs/chunks/{Spacer-CsRCleXv.js → Spacer-DvI2M1wZ.js} +1 -1
  36. package/dist/cjs/chunks/{Switch-OBVHKn_D.js → Switch-DDSSprb7.js} +1 -1
  37. package/dist/cjs/chunks/{TabBar-C1HkBaxE.js → TabBar-TllSeSzb.js} +2 -2
  38. package/dist/cjs/chunks/{TextArea-BEmNI_HZ.js → TextArea-DjZRDixt.js} +1 -1
  39. package/dist/cjs/chunks/{TextField-D9_COA9H.js → TextField-CKA3K0AN.js} +3 -3
  40. package/dist/cjs/chunks/{Tip-2W0u_oQN.js → Tip-BdGXN-TQ.js} +1 -1
  41. package/dist/cjs/chunks/{Toast-B9jX6ioq.js → Toast-COrDS_50.js} +5 -5
  42. package/dist/cjs/chunks/{ToggleButton-C_Gu5dYR.js → ToggleButton-hoOMzBZc.js} +1 -1
  43. package/dist/cjs/chunks/{UploadArea-ENFAf4tE.js → UploadArea-ClG8ZgRZ.js} +1 -1
  44. package/dist/cjs/chunks/{WSConnection-CZ22tcLz.js → WSConnection-Brxc2hEv.js} +1 -1
  45. package/dist/cjs/chunks/WebRTCConnection-eWP4lueC.js +252 -0
  46. package/dist/cjs/chunks/{localDBStore-Ca73jeFf.js → localDBStore-SS_r0C6F.js} +1 -1
  47. package/dist/cjs/chunks/{microphoneStore-lxYIvhN8.js → microphoneStore-DM_8bhFr.js} +27 -4
  48. package/dist/cjs/chunks/{misc-DZAbObFp.js → misc-4xyXRU2K.js} +1 -1
  49. package/dist/cjs/chunks/{sseStore-Bq7sVvyA.js → sseStore-Ag-UnuQq.js} +2 -2
  50. package/dist/cjs/chunks/{uploads-worker-CD-annza.js → uploads-worker-CI-SZptI.js} +1 -1
  51. package/dist/cjs/chunks/{uploadsStore-CUeB10zx.js → uploadsStore-DR2hc4ct.js} +2 -2
  52. package/dist/cjs/chunks/{volumeStore-roYTyKJ2.js → volumeStore-DtTHf-9_.js} +5 -4
  53. package/dist/cjs/chunks/webRTCStore-DWWn7k-0.js +55 -0
  54. package/dist/cjs/chunks/{windowStore-BdJv-RF0.js → windowStore-BUo9Du_e.js} +1 -1
  55. package/dist/cjs/components/AudioBubble/index.js +4 -4
  56. package/dist/cjs/components/Avatar/index.js +3 -3
  57. package/dist/cjs/components/AvatarGroup/index.js +3 -3
  58. package/dist/cjs/components/Badge/index.js +2 -2
  59. package/dist/cjs/components/Button/index.js +7 -7
  60. package/dist/cjs/components/ButtonBar/index.js +3 -3
  61. package/dist/cjs/components/Camera/index.js +5 -5
  62. package/dist/cjs/components/CheckBox/index.js +3 -3
  63. package/dist/cjs/components/Chip/index.js +4 -4
  64. package/dist/cjs/components/DivInput/index.js +3 -3
  65. package/dist/cjs/components/Dot/index.js +2 -2
  66. package/dist/cjs/components/DraggablePanel/index.js +3 -3
  67. package/dist/cjs/components/DropDown/index.js +3 -3
  68. package/dist/cjs/components/ErrorSummary/index.js +3 -3
  69. package/dist/cjs/components/FileIcon/index.js +3 -3
  70. package/dist/cjs/components/FileList/index.js +4 -4
  71. package/dist/cjs/components/FlexDiv/index.js +2 -2
  72. package/dist/cjs/components/Grouper/index.js +4 -4
  73. package/dist/cjs/components/Icon/index.js +3 -3
  74. package/dist/cjs/components/IconButton/index.js +6 -6
  75. package/dist/cjs/components/Label/index.js +3 -3
  76. package/dist/cjs/components/Level/index.js +7 -0
  77. package/dist/cjs/components/Modal/index.js +7 -7
  78. package/dist/cjs/components/ModalController/index.js +3 -3
  79. package/dist/cjs/components/Overlay/index.js +2 -2
  80. package/dist/cjs/components/Pager/index.js +3 -3
  81. package/dist/cjs/components/Progress/index.js +3 -3
  82. package/dist/cjs/components/PromptInput/index.js +7 -7
  83. package/dist/cjs/components/RadioButton/index.js +3 -3
  84. package/dist/cjs/components/RadioButtonList/index.js +4 -4
  85. package/dist/cjs/components/Slider/index.js +4 -4
  86. package/dist/cjs/components/Spacer/index.js +2 -2
  87. package/dist/cjs/components/Switch/index.js +2 -2
  88. package/dist/cjs/components/TabBar/index.js +5 -5
  89. package/dist/cjs/components/TextArea/index.js +7 -7
  90. package/dist/cjs/components/Textfield/index.js +7 -7
  91. package/dist/cjs/components/Tip/index.js +3 -3
  92. package/dist/cjs/components/Toast/index.js +4 -4
  93. package/dist/cjs/components/ToggleButton/index.js +7 -7
  94. package/dist/cjs/components/UploadArea/index.js +5 -5
  95. package/dist/cjs/hooks/useAudioRecorder.js +1 -1
  96. package/dist/cjs/hooks/useBindWebRTC.js +60 -0
  97. package/dist/cjs/hooks/useLocalStore.js +3 -3
  98. package/dist/cjs/hooks/useMdStreamBuffer.js +55 -30
  99. package/dist/cjs/hooks/useMicrophone.js +1 -1
  100. package/dist/cjs/hooks/useTrackRenders.js +2 -2
  101. package/dist/cjs/hooks.js +7 -4
  102. package/dist/cjs/index.js +19 -17
  103. package/dist/cjs/providers/ThemeProvider.js +5 -4
  104. package/dist/cjs/providers/themeServer.js +15 -9
  105. package/dist/cjs/stores/LocalDB.js +3 -3
  106. package/dist/cjs/stores/SSE.js +2 -2
  107. package/dist/cjs/stores/WS.js +2 -2
  108. package/dist/cjs/stores/WebRTC.js +9 -0
  109. package/dist/cjs/stores/microphone.js +5 -4
  110. package/dist/cjs/stores/modal.js +1 -1
  111. package/dist/cjs/stores/tip.js +1 -1
  112. package/dist/cjs/stores/toast.js +1 -1
  113. package/dist/cjs/stores/uploads.js +2 -2
  114. package/dist/cjs/stores/volume.js +2 -2
  115. package/dist/cjs/stores/window.js +2 -2
  116. package/dist/cjs/stores.js +18 -13
  117. package/dist/cjs/utils/index.js +4 -3
  118. package/dist/cjs/utils/objects/index.js +4 -3
  119. package/dist/cjs/workers/uploads/uploads.js +2 -2
  120. package/dist/esm/chunks/{AudioBubble-DfrxyTX_.mjs → AudioBubble-cYlxxQ7c.mjs} +3 -3
  121. package/dist/esm/chunks/{Avatar-pA41Pcyl.mjs → Avatar-D84wF2os.mjs} +2 -2
  122. package/dist/esm/chunks/{AvatarGroup-CZBtWjnj.mjs → AvatarGroup-DiwfbRxH.mjs} +2 -2
  123. package/dist/esm/chunks/{Badge-pLwG0zm7.mjs → Badge-DuUb5-80.mjs} +1 -1
  124. package/dist/esm/chunks/{Button-BJoMLZIs.mjs → Button-BIgwWrPJ.mjs} +6 -6
  125. package/dist/esm/chunks/{ButtonBar-BO2RUJ8R.mjs → ButtonBar-vNvnvw7u.mjs} +3 -3
  126. package/dist/esm/chunks/{Camera-4MNA52HG.mjs → Camera-BMwkTJPq.mjs} +5 -5
  127. package/dist/esm/chunks/{CheckBox-7KAsvZld.mjs → CheckBox-Cpoxy8w_.mjs} +3 -3
  128. package/dist/esm/chunks/{Chip-BuGvCLLU.mjs → Chip-BayNVv7N.mjs} +4 -4
  129. package/dist/esm/chunks/{DivInput-D0YzSWjJ.mjs → DivInput-CWRUxy1y.mjs} +2 -2
  130. package/dist/esm/chunks/{Dot-h26m47Z-.mjs → Dot-v_kcIWV2.mjs} +1 -1
  131. package/dist/esm/chunks/{DrggablePanel-Bh6HLPMX.mjs → DrggablePanel-yEeGeE1w.mjs} +2 -2
  132. package/dist/esm/chunks/{DropDown-NgMYjjXn.mjs → DropDown-QQhwAg_J.mjs} +3 -3
  133. package/dist/esm/chunks/{ErrorSummary-nNm9qymE.mjs → ErrorSummary-DzIZMIll.mjs} +2 -2
  134. package/dist/esm/chunks/{FileIcon-BqyV1wut.mjs → FileIcon-6UlkbKzk.mjs} +2 -2
  135. package/dist/esm/chunks/{FileList-C1tOvoc0.mjs → FileList-vMiGJByw.mjs} +5 -5
  136. package/dist/esm/chunks/{FlexDiv-CkK-DAyg.mjs → FlexDiv-B1m7aY04.mjs} +1 -1
  137. package/dist/esm/chunks/{Grouper-CyrOkuu2.mjs → Grouper-BDrAnfDF.mjs} +3 -3
  138. package/dist/esm/chunks/{Icon-DjW0Krm8.mjs → Icon-D4A6_c4x.mjs} +2 -2
  139. package/dist/esm/chunks/{IconButton-DdLhTUl0.mjs → IconButton-B_W-aOsB.mjs} +5 -5
  140. package/dist/esm/chunks/{IndexedDB-DVoDikoA.mjs → IndexedDB-CTqfKmp1.mjs} +1 -1
  141. package/dist/esm/chunks/{Label-DhmJ_Sln.mjs → Label-I75yz3gq.mjs} +2 -2
  142. package/dist/esm/chunks/Level-DgczkKBr.mjs +63 -0
  143. package/dist/esm/chunks/{MdStreamBuffer-4AJH8WaN.mjs → MdStreamBuffer-CoQWQwRL.mjs} +38 -16
  144. package/dist/esm/chunks/{Modal-FztrJsQo.mjs → Modal-CwwyijaO.mjs} +39 -13
  145. package/dist/esm/chunks/{ModalController-C1BnM5Dz.mjs → ModalController-IyB9lDRa.mjs} +2 -2
  146. package/dist/esm/chunks/{Overlay-Dsy55Bxm.mjs → Overlay-C-yori3-.mjs} +1 -1
  147. package/dist/esm/chunks/{Pager-BqSdwL0L.mjs → Pager-BEtfyKtq.mjs} +2 -2
  148. package/dist/esm/chunks/{ProgressIndicator-BnqZFATV.mjs → ProgressIndicator-BV0ginXb.mjs} +2 -2
  149. package/dist/esm/chunks/{PromptInput-CRkcPXJu.mjs → PromptInput-Cn5fRYap.mjs} +3 -3
  150. package/dist/esm/chunks/{RadioButton-DXq3yniV.mjs → RadioButton-DWlg6ldv.mjs} +3 -3
  151. package/dist/esm/chunks/{RadioButtonList-BgOskHCP.mjs → RadioButtonList-D9FdlhPL.mjs} +3 -3
  152. package/dist/esm/chunks/{Slider-DPOy9uNI.mjs → Slider-B2WZkZSg.mjs} +3 -3
  153. package/dist/esm/chunks/{Spacer-BJd_D0Fn.mjs → Spacer-7Oj0SlD0.mjs} +1 -1
  154. package/dist/esm/chunks/{Switch-DHqlyizo.mjs → Switch-DRhnznnO.mjs} +1 -1
  155. package/dist/esm/chunks/{TabBar-RBXExqMK.mjs → TabBar-D6VR71ye.mjs} +5 -5
  156. package/dist/esm/chunks/{TextArea-CIlx_P26.mjs → TextArea-CkB5rJjI.mjs} +2 -2
  157. package/dist/esm/chunks/{TextField-CX72ybwH.mjs → TextField-BIXmkjEz.mjs} +5 -5
  158. package/dist/esm/chunks/{Tip-COBSyEjm.mjs → Tip-CTdrwLky.mjs} +2 -2
  159. package/dist/esm/chunks/{Toast-BTm3HxDD.mjs → Toast-8bUziIgh.mjs} +6 -6
  160. package/dist/esm/chunks/{ToggleButton-DujsCKF3.mjs → ToggleButton-BOFITa8_.mjs} +2 -2
  161. package/dist/esm/chunks/{UploadArea-D--Nt8Ed.mjs → UploadArea-DE2ccDVx.mjs} +4 -4
  162. package/dist/esm/chunks/{WSConnection-BMXcuW3f.mjs → WSConnection-CHudrD62.mjs} +1 -1
  163. package/dist/esm/chunks/WebRTCConnection-DQbNa7Z9.mjs +252 -0
  164. package/dist/esm/chunks/{localDBStore-36E3160Z.mjs → localDBStore-CaYiqITY.mjs} +2 -2
  165. package/dist/esm/chunks/{microphoneStore-Cexu82zH.mjs → microphoneStore-COEGtgyX.mjs} +26 -3
  166. package/dist/esm/chunks/{misc-CTGTuM2J.mjs → misc-2MIIqzsX.mjs} +1 -1
  167. package/dist/esm/chunks/{sseStore-Dow4NXkZ.mjs → sseStore-nW9CMec_.mjs} +2 -2
  168. package/dist/esm/chunks/{tslib.es6-BX2F90pK.mjs → tslib.es6-C81Qhn1z.mjs} +1 -1
  169. package/dist/esm/chunks/{uploads-worker-Dhyp4ot3.mjs → uploads-worker-CMomtRvm.mjs} +1 -1
  170. package/dist/esm/chunks/{uploadsStore-DT4lFybE.mjs → uploadsStore-CsfpSOTS.mjs} +1 -1
  171. package/dist/esm/chunks/{volumeStore-RAxdmQ60.mjs → volumeStore-TSYPqbHx.mjs} +5 -4
  172. package/dist/esm/chunks/webRTCStore-CVCDJzj5.mjs +57 -0
  173. package/dist/esm/chunks/{windowStore-C4AZexIa.mjs → windowStore-BvejIR82.mjs} +1 -1
  174. package/dist/esm/components/AudioBubble/index.mjs +4 -4
  175. package/dist/esm/components/Avatar/index.mjs +3 -3
  176. package/dist/esm/components/AvatarGroup/index.mjs +4 -4
  177. package/dist/esm/components/Badge/index.mjs +2 -2
  178. package/dist/esm/components/Button/index.mjs +8 -8
  179. package/dist/esm/components/ButtonBar/index.mjs +4 -4
  180. package/dist/esm/components/Camera/index.mjs +6 -6
  181. package/dist/esm/components/CheckBox/index.mjs +4 -4
  182. package/dist/esm/components/Chip/index.mjs +5 -5
  183. package/dist/esm/components/DivInput/index.mjs +3 -3
  184. package/dist/esm/components/Dot/index.mjs +2 -2
  185. package/dist/esm/components/DraggablePanel/index.mjs +3 -3
  186. package/dist/esm/components/DropDown/index.mjs +4 -4
  187. package/dist/esm/components/ErrorSummary/index.mjs +3 -3
  188. package/dist/esm/components/FileIcon/index.mjs +3 -3
  189. package/dist/esm/components/FileList/index.mjs +6 -6
  190. package/dist/esm/components/FlexDiv/index.mjs +2 -2
  191. package/dist/esm/components/Grouper/index.mjs +5 -5
  192. package/dist/esm/components/Icon/index.mjs +4 -4
  193. package/dist/esm/components/IconButton/index.mjs +7 -7
  194. package/dist/esm/components/Label/index.mjs +3 -3
  195. package/dist/esm/components/Level/index.mjs +11 -0
  196. package/dist/esm/components/Modal/index.mjs +10 -10
  197. package/dist/esm/components/ModalController/index.mjs +4 -4
  198. package/dist/esm/components/Overlay/index.mjs +2 -2
  199. package/dist/esm/components/Pager/index.mjs +3 -3
  200. package/dist/esm/components/Progress/index.mjs +4 -4
  201. package/dist/esm/components/PromptInput/index.mjs +11 -11
  202. package/dist/esm/components/RadioButton/index.mjs +4 -4
  203. package/dist/esm/components/RadioButtonList/index.mjs +5 -5
  204. package/dist/esm/components/Slider/index.mjs +4 -4
  205. package/dist/esm/components/Spacer/index.mjs +2 -2
  206. package/dist/esm/components/Switch/index.mjs +2 -2
  207. package/dist/esm/components/TabBar/index.mjs +8 -8
  208. package/dist/esm/components/TextArea/index.mjs +9 -9
  209. package/dist/esm/components/Textfield/index.mjs +10 -10
  210. package/dist/esm/components/Tip/index.mjs +3 -3
  211. package/dist/esm/components/Toast/index.mjs +5 -5
  212. package/dist/esm/components/ToggleButton/index.mjs +9 -9
  213. package/dist/esm/components/UploadArea/index.mjs +7 -7
  214. package/dist/esm/hooks/useAudioRecorder.mjs +1 -1
  215. package/dist/esm/hooks/useBindWebRTC.mjs +72 -0
  216. package/dist/esm/hooks/useLocalStore.mjs +3 -3
  217. package/dist/esm/hooks/useMdStreamBuffer.mjs +56 -28
  218. package/dist/esm/hooks/useMicrophone.mjs +1 -1
  219. package/dist/esm/hooks/useTrackRenders.mjs +2 -2
  220. package/dist/esm/hooks.mjs +14 -2
  221. package/dist/esm/index.mjs +62 -50
  222. package/dist/esm/providers/ThemeProvider.mjs +6 -5
  223. package/dist/esm/providers/themeServer.mjs +11 -6
  224. package/dist/esm/stores/LocalDB.mjs +3 -3
  225. package/dist/esm/stores/SSE.mjs +3 -3
  226. package/dist/esm/stores/WS.mjs +2 -2
  227. package/dist/esm/stores/WebRTC.mjs +7 -0
  228. package/dist/esm/stores/microphone.mjs +2 -2
  229. package/dist/esm/stores/modal.mjs +1 -1
  230. package/dist/esm/stores/tip.mjs +1 -1
  231. package/dist/esm/stores/toast.mjs +1 -1
  232. package/dist/esm/stores/uploads.mjs +3 -3
  233. package/dist/esm/stores/volume.mjs +2 -2
  234. package/dist/esm/stores/window.mjs +2 -2
  235. package/dist/esm/stores.mjs +17 -13
  236. package/dist/esm/utils/index.mjs +11 -9
  237. package/dist/esm/utils/objects/index.mjs +8 -6
  238. package/dist/esm/workers/uploads/uploads.mjs +2 -2
  239. package/dist/styles.css +51 -11
  240. package/dist/types/components/Level/Level.d.ts +5 -0
  241. package/dist/types/components/Level/_types.d.ts +21 -0
  242. package/dist/types/components/Level/index.d.ts +2 -0
  243. package/dist/types/components/Modal/_types.d.ts +3 -0
  244. package/dist/types/components/Toast/_types.d.ts +1 -0
  245. package/dist/types/hooks/index.d.ts +2 -0
  246. package/dist/types/hooks/useBindWebRTC/index.d.ts +1 -0
  247. package/dist/types/hooks/useBindWebRTC/useBindWebRTC.d.ts +15 -0
  248. package/dist/types/hooks/useLocalStore/useLocalStore.d.ts +1 -1
  249. package/dist/types/hooks/useMdStreamBuffer/useMdStreamBuffer.d.ts +6 -1
  250. package/dist/types/index.d.ts +3 -1
  251. package/dist/types/providers/ThemeProvider.d.ts +1 -0
  252. package/dist/types/providers/themeServer.d.ts +7 -3
  253. package/dist/types/stores/WebRTC/_types.d.ts +16 -0
  254. package/dist/types/stores/WebRTC/index.d.ts +2 -0
  255. package/dist/types/stores/WebRTC/webRTCStore.d.ts +21 -0
  256. package/dist/types/stores/index.d.ts +1 -0
  257. package/dist/types/stores/microphone/index.d.ts +1 -1
  258. package/dist/types/stores/microphone/microphoneStore.d.ts +14 -1
  259. package/dist/types/stores/toast/_types.d.ts +1 -0
  260. package/dist/types/stores/volume/_types.d.ts +3 -1
  261. package/dist/types/stores/volume/volumeStore.d.ts +6 -2
  262. package/dist/types/utils/functions/files.d.ts +1 -1
  263. package/dist/types/utils/index.d.ts +2 -2
  264. package/dist/types/utils/objects/MDStreamBuffer/MdStreamBuffer.d.ts +10 -0
  265. package/dist/types/utils/objects/MDStreamBuffer/_types.d.ts +2 -0
  266. package/dist/types/utils/objects/WebRTCConnection/WebRTCConnection.d.ts +37 -3
  267. package/dist/types/utils/objects/WebRTCConnection/_types.d.ts +13 -4
  268. package/dist/types/utils/objects/index.d.ts +2 -0
  269. package/package.json +1 -1
  270. /package/dist/cjs/chunks/{SSEConnection-ACoOeeTO.js → SSEConnection-DfjLAlOG.js} +0 -0
  271. /package/dist/cjs/chunks/{_types-k-3V1fz_.js → _types-DMyBIF8s.js} +0 -0
  272. /package/dist/cjs/chunks/{audioVisualizer-MOSbvvnZ.js → audioVisualizer-BxPvUj4h.js} +0 -0
  273. /package/dist/cjs/chunks/{colors-B0_3srZN.js → colors-4n0sNFRA.js} +0 -0
  274. /package/dist/cjs/chunks/{debounce-CaoYvh12.js → debounce-_IK-La-Z.js} +0 -0
  275. /package/dist/cjs/chunks/{modalStore-D4bOjuWd.js → modalStore-CFsfK3ba.js} +0 -0
  276. /package/dist/cjs/chunks/{sharedTypes-CthHPjrO.js → sharedTypes-C0ZHzH_T.js} +0 -0
  277. /package/dist/cjs/chunks/{tipStore-CPB7RHKY.js → tipStore-dqD9-c30.js} +0 -0
  278. /package/dist/cjs/chunks/{toastStore-6eHe6esp.js → toastStore-BN1N7WXv.js} +0 -0
  279. /package/dist/cjs/chunks/{tslib.es6-CzpRaW14.js → tslib.es6-DsF7Wv4Y.js} +0 -0
  280. /package/dist/esm/chunks/{SSEConnection-qNnkZUOe.mjs → SSEConnection-iFKOV9Uo.mjs} +0 -0
  281. /package/dist/esm/chunks/{_types-CEStVWlB.mjs → _types-DrNviSG6.mjs} +0 -0
  282. /package/dist/esm/chunks/{audioVisualizer-BUNbarKP.mjs → audioVisualizer-BsmpLZyK.mjs} +0 -0
  283. /package/dist/esm/chunks/{colors-D-qeA9gU.mjs → colors-BAATtfbL.mjs} +0 -0
  284. /package/dist/esm/chunks/{debounce-D5b6tZ5a.mjs → debounce-CYBH5qXQ.mjs} +0 -0
  285. /package/dist/esm/chunks/{modalStore-Crg_QmSJ.mjs → modalStore-DmaeMv7z.mjs} +0 -0
  286. /package/dist/esm/chunks/{sharedTypes-U5H1I85x.mjs → sharedTypes-CyrInj1b.mjs} +0 -0
  287. /package/dist/esm/chunks/{tipStore-pvswaezx.mjs → tipStore-B_MUZfr2.mjs} +0 -0
  288. /package/dist/esm/chunks/{toastStore-80oOTYsj.mjs → toastStore-DAprlBVj.mjs} +0 -0
@@ -6,6 +6,8 @@ export { type KeyboardShortcut, type KeyboardShortcuts, useKeyboardShortcuts, }
6
6
  export { useLastUpdated } from './useLastUpdated/useLastUpdated';
7
7
  export { useLocalStore } from './useLocalStore/useLocalStore';
8
8
  export { useMDStreamBuffer } from './useMdStreamBuffer/useMdStreamBuffer';
9
+ export type { UseMDStreamBufferOptions } from './useMdStreamBuffer/useMdStreamBuffer';
10
+ export { useBindWebRTC, type UseBindWebRTCOptions, type UseBindWebRTCReturn, } from './useBindWebRTC/useBindWebRTC';
9
11
  export { useMicrophone } from './useMicrophone/useMicrophone';
10
12
  export type { MicOption, UseMicrophoneReturn, } from './useMicrophone/useMicrophone';
11
13
  export { useAudioRecorder } from './useAudioRecorder/useAudioRecorder';
@@ -0,0 +1 @@
1
+ export * from './useBindWebRTC';
@@ -0,0 +1,15 @@
1
+ import type { WebRTCStoreConnectionOptions } from '../../stores/WebRTC';
2
+ import type { WebRTCConnection } from '../../utils';
3
+ export type UseBindWebRTCOptions = {
4
+ connectionName: string;
5
+ offerOptions?: RTCOfferOptions;
6
+ bearerToken?: string;
7
+ } & Omit<WebRTCStoreConnectionOptions, 'micStream' | 'micTrack' | 'volume'>;
8
+ export type UseBindWebRTCReturn = {
9
+ connection: WebRTCConnection | null;
10
+ error: Error | null;
11
+ bind: () => Promise<WebRTCConnection | null>;
12
+ unbind: () => void;
13
+ bound: boolean;
14
+ };
15
+ export declare function useBindWebRTC(options: UseBindWebRTCOptions): UseBindWebRTCReturn;
@@ -1 +1 @@
1
- export declare function useLocalStore<T>(key: string, value: T): readonly [T, (data: T) => void];
1
+ export declare function useLocalStore<T>(key: string, value: T): readonly [T, (data: T) => void, boolean];
@@ -1,8 +1,13 @@
1
1
  import type { MarkdownStreamBufferOptions, MarkdownStreamBufferSnapshot } from '../../utils';
2
- export declare function useMDStreamBuffer(options?: MarkdownStreamBufferOptions): {
2
+ export type UseMDStreamBufferOptions = MarkdownStreamBufferOptions & {
3
+ paceDelayMs?: number;
4
+ paceChunkSize?: number;
5
+ };
6
+ export declare function useMDStreamBuffer(options?: UseMDStreamBufferOptions): {
3
7
  raw: string;
4
8
  healthy: string;
5
9
  isComplete: boolean;
10
+ pendingCharacters: number;
6
11
  append: (value: string) => void;
7
12
  flush: () => MarkdownStreamBufferSnapshot | undefined;
8
13
  complete: () => MarkdownStreamBufferSnapshot | undefined;
@@ -3,7 +3,7 @@ export type { ToolTip, ToolTipInfo } from './components/sharedTypes';
3
3
  export { ToolTipType } from './components/sharedTypes';
4
4
  export { light, dark, lightTheme, darkTheme, motion, elevations, Elevation, } from './theme';
5
5
  export type { SliceTheme, Colors, Type, Corners, Elevations, } from './theme';
6
- export { type KeyboardShortcut, type KeyboardShortcuts, type BreakPoints, type WindowGeolocation, type WindowGeolocationError, type MicOption, type UseMicrophoneReturn, useKeyboardShortcuts, useTheme, useObserveTheme, useToolTip, useLastUpdated, useLocalStore, useMDStreamBuffer, useAudioRecorder, useMicrophone, useWindow, useDoubleClick, useObserveResize, } from './hooks';
6
+ export { type KeyboardShortcut, type KeyboardShortcuts, type BreakPoints, type WindowGeolocation, type WindowGeolocationError, type MicOption, type UseBindWebRTCOptions, type UseBindWebRTCReturn, type UseMDStreamBufferOptions, type UseMicrophoneReturn, useBindWebRTC, useKeyboardShortcuts, useTheme, useObserveTheme, useToolTip, useLastUpdated, useLocalStore, useMDStreamBuffer, useAudioRecorder, useMicrophone, useWindow, useDoubleClick, useObserveResize, } from './hooks';
7
7
  export { AudioBubble } from './components/AudioBubble/index';
8
8
  export type { AudioBubbleProps } from './components/AudioBubble/index';
9
9
  export { Avatar } from './components/Avatar/index';
@@ -79,6 +79,8 @@ export type { BarButton, ButtonBarProps } from './components/ButtonBar/_types';
79
79
  export { Label } from './components/Label';
80
80
  export { LabelBackground } from './components/Label';
81
81
  export type { LabelProps } from './components/Label';
82
+ export { Level } from './components/Level';
83
+ export type { LevelProps } from './components/Level';
82
84
  export { UploadArea } from './components/UploadArea';
83
85
  export type { UploadAreaProps } from './components/UploadArea/_types';
84
86
  export { imageTypes, videoTypes, documentTypes, audioTypes, textTypes, allTypes, } from './components/UploadArea/_types';
@@ -3,6 +3,7 @@ interface ThemeProviderProps {
3
3
  children?: React.ReactNode;
4
4
  theme?: string;
5
5
  initialTheme?: string;
6
+ initialSystem?: boolean;
6
7
  system?: boolean;
7
8
  global?: boolean;
8
9
  }
@@ -1,14 +1,18 @@
1
1
  export type SliceThemeName = 'lightMode' | 'darkMode';
2
2
  type ResolveInitialThemeOptions = {
3
3
  theme?: string | null;
4
- cookieTheme?: string | null;
4
+ systemTheme?: boolean;
5
+ activeTheme?: string | null;
5
6
  fallbackTheme?: SliceThemeName;
6
7
  };
7
8
  /**
8
9
  * Resolve the startup Slice theme from an explicit theme value, cookie value,
9
- * or fallback theme in that order.
10
+ * or fallback theme in that order. Resolves a system to true if undefined.
10
11
  */
11
- export declare function resolveInitialTheme(options?: ResolveInitialThemeOptions): SliceThemeName;
12
+ export declare function resolveInitialTheme(options?: ResolveInitialThemeOptions): {
13
+ initialTheme: SliceThemeName;
14
+ initialSystem: boolean;
15
+ };
12
16
  /**
13
17
  * Return the root HTML attributes needed to render the active Slice theme
14
18
  * before client hydration.
@@ -0,0 +1,16 @@
1
+ import type { WebRTCConnection, WebRTCConnectionOptions } from '../../utils';
2
+ export type WebRTCStoreConnectionOptions = WebRTCConnectionOptions;
3
+ export interface WebRTCStoreConnection {
4
+ name: string;
5
+ connection: WebRTCConnection;
6
+ }
7
+ export interface WebRTCStore {
8
+ connections: WebRTCStoreConnection[];
9
+ actions: {
10
+ addConnection: (name: string, options: WebRTCStoreConnectionOptions) => WebRTCStoreConnection;
11
+ initializeConnection: (name: string, offerOptions?: RTCOfferOptions, bearerToken?: string) => Promise<void>;
12
+ removeConnection: (name: string) => void;
13
+ setMicStream: (name: string, stream: MediaStream | null) => Promise<void>;
14
+ setVolume: (name: string, volume: number) => void;
15
+ };
16
+ }
@@ -0,0 +1,2 @@
1
+ export * from './_types';
2
+ export * from './webRTCStore';
@@ -0,0 +1,21 @@
1
+ import type { WebRTCStore, WebRTCStoreConnectionOptions } from './_types';
2
+ export declare const useWebRTCStore: import("zustand").UseBoundStore<import("zustand").StoreApi<WebRTCStore>>;
3
+ export declare const useWebRTC: () => {
4
+ addConnection: (name: string, options: WebRTCStoreConnectionOptions) => import("./_types").WebRTCStoreConnection;
5
+ initializeConnection: (name: string, offerOptions?: RTCOfferOptions, bearerToken?: string) => Promise<void>;
6
+ removeConnection: (name: string) => void;
7
+ setMicStream: (name: string, stream: MediaStream | null) => Promise<void>;
8
+ setVolume: (name: string, volume: number) => void;
9
+ };
10
+ export declare const useWebRTCConnections: () => import("./_types").WebRTCStoreConnection[];
11
+ export declare const useWebRTCConnection: (name: string) => import("./_types").WebRTCStoreConnection | null;
12
+ export declare const useWebRTCConnected: (name?: string) => boolean;
13
+ export declare const useWebRTCActions: {
14
+ addConnection: (name: string, options: WebRTCStoreConnectionOptions) => import("./_types").WebRTCStoreConnection;
15
+ initializeConnection: (name: string, offerOptions?: RTCOfferOptions, bearerToken?: string) => Promise<void>;
16
+ removeConnection: (name: string) => void;
17
+ setMicStream: (name: string, stream: MediaStream | null) => Promise<void>;
18
+ setVolume: (name: string, volume: number) => void;
19
+ };
20
+ export declare function getWebRTCConnections(): ReturnType<typeof useWebRTCStore.getState>['connections'];
21
+ export declare function getWebRTCConnections(name: string): ReturnType<typeof useWebRTCStore.getState>['connections'][number] | null;
@@ -6,4 +6,5 @@ export * from './toast';
6
6
  export * from './tip';
7
7
  export * from './uploads';
8
8
  export * from './volume';
9
+ export * from './WebRTC';
9
10
  export * from './window';
@@ -1,2 +1,2 @@
1
- export { useMicrophoneStore, useSyncMicrophoneStore, useMicStream, useProcessedMicStream, useMicTrack, useCurrentMicDeviceId, useMicActive, useMicInputVolume, useMicMuted, useMicSupported, useMicRequesting, useMicError, useMicrophones, useMicOptions, useMicrophoneStoreActions, microphoneActions, getMicrophoneState, } from './microphoneStore';
1
+ export { useMicrophoneStore, useSyncMicrophoneStore, useMicStream, useProcessedMicStream, useMicTrack, useCurrentMicDeviceId, useCurrentMicDeviceLabel, useMicActive, useMicInputVolume, useMicMuted, useMicSupported, useMicRequesting, useMicError, useMicrophones, useMicOptions, useMicrophoneStoreActions, microphoneActions, getMicrophoneState, getCurrentMicDeviceLabel, } from './microphoneStore';
2
2
  export type { MicrophoneStore, MicrophoneStoreActions, MicrophoneStoreState, } from './_types';
@@ -14,6 +14,7 @@ export declare const useMicStream: () => RefObject<MediaStream | null>;
14
14
  export declare const useProcessedMicStream: () => RefObject<MediaStream | null>;
15
15
  export declare const useMicTrack: () => RefObject<MediaStreamTrack | null>;
16
16
  export declare const useCurrentMicDeviceId: () => string | null;
17
+ export declare const useCurrentMicDeviceLabel: () => string | null;
17
18
  export declare const useMicActive: () => boolean;
18
19
  export declare const useMicInputVolume: () => number;
19
20
  export declare const useMicMuted: () => boolean;
@@ -23,5 +24,17 @@ export declare const useMicError: () => Error | null;
23
24
  export declare const useMicrophones: () => MediaDeviceInfo[];
24
25
  export declare const useMicOptions: () => DropDownOption<MicOption>[];
25
26
  export declare const useMicrophoneStoreActions: () => MicrophoneStoreActions;
26
- export declare const microphoneActions: MicrophoneStoreActions;
27
+ export declare const microphoneActions: {
28
+ sync: (microphone: UseMicrophoneReturn | null) => void;
29
+ clear: () => void;
30
+ requestMicrophone: () => Promise<MediaStream | null>;
31
+ stopMicrophone: () => void;
32
+ muteMic: () => boolean;
33
+ unmuteMic: () => boolean;
34
+ toggleMute: () => void;
35
+ setInputVolume: (volume: number) => number;
36
+ refreshMicrophones: () => Promise<MediaDeviceInfo[]>;
37
+ setMicrophone: (deviceId: string | DropDownOption<MicOption>) => Promise<void>;
38
+ };
27
39
  export declare const getMicrophoneState: () => MicrophoneStore;
40
+ export declare const getCurrentMicDeviceLabel: () => string | null;
@@ -1,5 +1,6 @@
1
1
  import type { ToastType } from '../../components/Toast';
2
2
  export type Toast = {
3
+ notifId?: string;
3
4
  message: string | null;
4
5
  duration?: number | 'Infinite';
5
6
  type?: ToastType;
@@ -10,7 +10,9 @@ export type VolumeStore = {
10
10
  attachFeedbackElement: (element: AudioElement) => void;
11
11
  detachFeedbackElement: (element: AudioElement) => void;
12
12
  playFeedback: (volume?: number) => Promise<void>;
13
- setVolume: (volume: number) => void;
13
+ setVolume: (volume: number, options?: {
14
+ playFeedback?: boolean;
15
+ }) => void;
14
16
  mute: () => Promise<void>;
15
17
  unmute: () => Promise<void>;
16
18
  clearMedia: () => void;
@@ -10,7 +10,9 @@ export declare const useVolumeActions: () => {
10
10
  attachFeedbackElement: (element: AudioElement) => void;
11
11
  detachFeedbackElement: (element: AudioElement) => void;
12
12
  playFeedback: (volume?: number) => Promise<void>;
13
- setVolume: (volume: number) => void;
13
+ setVolume: (volume: number, options?: {
14
+ playFeedback?: boolean;
15
+ }) => void;
14
16
  mute: () => Promise<void>;
15
17
  unmute: () => Promise<void>;
16
18
  clearMedia: () => void;
@@ -21,7 +23,9 @@ export declare const volumeActions: {
21
23
  attachFeedbackElement: (element: AudioElement) => void;
22
24
  detachFeedbackElement: (element: AudioElement) => void;
23
25
  playFeedback: (volume?: number) => Promise<void>;
24
- setVolume: (volume: number) => void;
26
+ setVolume: (volume: number, options?: {
27
+ playFeedback?: boolean;
28
+ }) => void;
25
29
  mute: () => Promise<void>;
26
30
  unmute: () => Promise<void>;
27
31
  clearMedia: () => void;
@@ -8,7 +8,7 @@ export declare function nameAndExtension(fileName: string): {
8
8
  /**
9
9
  * Map a file extension to the corresponding file icon name.
10
10
  */
11
- export declare function fileIconName(extension: string): "other" | "video" | "text" | "sheet" | "image" | "audio" | "md" | "code" | "preso" | "pdf" | "clipboard";
11
+ export declare function fileIconName(extension: string): "other" | "audio" | "video" | "text" | "sheet" | "image" | "md" | "code" | "preso" | "pdf" | "clipboard";
12
12
  /**
13
13
  * Create a clipboard-text file with a guaranteed `.clipboard` extension.
14
14
  */
@@ -1,5 +1,5 @@
1
1
  export { copyToClipboard, hexToRgb } from './functions/misc';
2
2
  export { debounce } from './functions/debounce';
3
3
  export * from './functions/colors';
4
- export { AudioVisualizer, IndexedDB, MdBuffer, SSEConnection, WSConnection, } from './objects';
5
- export type { AudioVisualizerOptions, AudioVisualizerSource, IndexedDBOptions, MarkdownAutoCloseRule, MarkdownStreamBufferOptions, MarkdownStreamBufferSnapshot, SSECustomEvent, SSEConnectionCloseOption, SSEConnectionOptions, SSEEventMap, SSEUnifiedBuiltInMessage, SSEUnifiedCustomMessage, SSEUnifiedMessage, UnifiedMessageEvent, WSConnectionOptions, } from './objects';
4
+ export { AudioVisualizer, IndexedDB, MdBuffer, SSEConnection, WebRTCConnection, WSConnection, } from './objects';
5
+ export type { AudioVisualizerOptions, AudioVisualizerSource, IndexedDBOptions, MarkdownAutoCloseRule, MarkdownStreamBufferOptions, MarkdownStreamBufferSnapshot, SSECustomEvent, SSEConnectionCloseOption, SSEConnectionOptions, SSEEventMap, SSEUnifiedBuiltInMessage, SSEUnifiedCustomMessage, SSEUnifiedMessage, UnifiedMessageEvent, WebRTCConnectionOptions, WSConnectionOptions, } from './objects';
@@ -7,6 +7,7 @@ export declare class MdBuffer {
7
7
  private readonly healthyEndMarker?;
8
8
  private readonly htmlHandling;
9
9
  private readonly includeLinksAndImages;
10
+ private readonly flushDelayMs;
10
11
  private readonly onFlush?;
11
12
  private readonly requestFrame;
12
13
  private readonly cancelFrame;
@@ -14,6 +15,9 @@ export declare class MdBuffer {
14
15
  private committedRaw;
15
16
  private activeRaw;
16
17
  private frameHandle;
18
+ private flushTimer;
19
+ private lastFlushAt;
20
+ private lastFlushedRawLength;
17
21
  private completeSignal;
18
22
  constructor(options?: MarkdownStreamBufferOptions);
19
23
  /**
@@ -24,6 +28,10 @@ export declare class MdBuffer {
24
28
  * The current parser-safe preview derived from the raw buffer.
25
29
  */
26
30
  get healthy(): string;
31
+ /**
32
+ * Characters appended since the last emitted snapshot.
33
+ */
34
+ get pendingCharacters(): number;
27
35
  /**
28
36
  * Append a streamed Markdown token and schedule a frame flush.
29
37
  */
@@ -46,6 +54,8 @@ export declare class MdBuffer {
46
54
  dispose(): void;
47
55
  private handleEndOfStreamToken;
48
56
  private scheduleFlush;
57
+ private getRemainingFlushDelay;
58
+ private clearScheduledFlush;
49
59
  private commitStableLines;
50
60
  private buildHealthyOutput;
51
61
  private applyHealthyEndMarker;
@@ -3,6 +3,7 @@ export interface MarkdownStreamBufferSnapshot {
3
3
  healthy: string;
4
4
  reason: 'raf' | 'manual' | 'complete';
5
5
  isComplete: boolean;
6
+ pendingCharacters: number;
6
7
  }
7
8
  export interface MarkdownAutoCloseRule {
8
9
  name?: string;
@@ -19,6 +20,7 @@ export interface MarkdownStreamBufferOptions {
19
20
  healthyEndMarker?: string;
20
21
  htmlHandling?: 'ignore' | 'strip';
21
22
  includeLinksAndImages?: boolean;
23
+ flushDelayMs?: number;
22
24
  onFlush?: (snapshot: MarkdownStreamBufferSnapshot) => void;
23
25
  requestFrame?: (callback: FrameRequestCallback) => number;
24
26
  cancelFrame?: (handle: number) => void;
@@ -1,8 +1,10 @@
1
1
  import type { WebRTCConnectionOptions } from './_types';
2
2
  export declare class WebRTCConnection {
3
3
  private readonly peerConnection;
4
- private readonly RTCSenderAudioTrack?;
4
+ private RTCSenderAudioTrack;
5
5
  private readonly RTCSenderVideoTrack?;
6
+ private RTCSenderAudioSender;
7
+ private readonly RTCSenderAudioStream;
6
8
  private RTCScreenShareTrack;
7
9
  private RTCScreenShareSender;
8
10
  private readonly RTCReceiverAudioStream;
@@ -11,7 +13,7 @@ export declare class WebRTCConnection {
11
13
  private readonly RTCDataChannels;
12
14
  private readonly connectionUrl;
13
15
  private connectionOffer;
14
- private audioElement;
16
+ private readonly audioElement;
15
17
  private readonly autoPlayAudio;
16
18
  private readonly onRemoteAudioStream?;
17
19
  private readonly onRemoteVideoStream?;
@@ -19,6 +21,22 @@ export declare class WebRTCConnection {
19
21
  private iceTimer?;
20
22
  private offerOptions?;
21
23
  private bearerToken?;
24
+ /**
25
+ * Report whether the peer connection is currently connected
26
+ */
27
+ get connected(): boolean;
28
+ /**
29
+ * Report whether the connection currently has an audio path attached
30
+ */
31
+ get audioConnected(): boolean;
32
+ /**
33
+ * Report whether the connection currently has a video path attached
34
+ */
35
+ get videoConnected(): boolean;
36
+ /**
37
+ * Report whether any data channel is currently open
38
+ */
39
+ get dataConnected(): boolean;
22
40
  /**
23
41
  * Create the base instance
24
42
  */
@@ -54,7 +72,19 @@ export declare class WebRTCConnection {
54
72
  /**
55
73
  * Set the playback volume for the incoming audio element
56
74
  */
57
- setAudioVolume(volume: number): void;
75
+ setVolume(volume: number): void;
76
+ /**
77
+ * Replace the outgoing audio source with the first track from a stream
78
+ */
79
+ setOutgoingAudioStream(stream: MediaStream | null): Promise<void>;
80
+ /**
81
+ * Replace the outgoing audio track without rebuilding the peer connection
82
+ */
83
+ replaceAudioTrack(track: MediaStreamTrack | null): Promise<void>;
84
+ /**
85
+ * Close the peer connection and release local media bindings
86
+ */
87
+ close(): void;
58
88
  /**
59
89
  * Create an audio source node from the unified incoming audio stream
60
90
  */
@@ -71,6 +101,10 @@ export declare class WebRTCConnection {
71
101
  * Set up a local stream with mic and video tracks and add to peer connection
72
102
  */
73
103
  private setupOutgoingMediaStream;
104
+ /**
105
+ * Keep the sender stream aligned to the current local audio track
106
+ */
107
+ private syncSenderAudioStream;
74
108
  /**
75
109
  * Setup data channels
76
110
  */
@@ -1,11 +1,20 @@
1
- export interface WebRTCConnectionOptions {
1
+ type WebRTCMicStreamOption = {
2
+ micStream: MediaStream;
3
+ micTrack?: MediaStreamTrack | null;
4
+ };
5
+ type WebRTCMicTrackOption = {
6
+ micStream?: MediaStream | null;
7
+ micTrack: MediaStreamTrack;
8
+ };
9
+ export type WebRTCConnectionOptions = (WebRTCMicStreamOption | WebRTCMicTrackOption) & {
2
10
  connectionUrl?: string;
3
11
  audioElement?: HTMLAudioElement;
4
12
  autoPlayAudio?: boolean;
13
+ volume?: number;
5
14
  dataChannels?: string | string[];
6
- micMediaTrack: MediaStreamTrack;
7
- videoMediaTrack?: MediaStreamTrack;
15
+ videoTrack?: MediaStreamTrack | null;
8
16
  onRemoteVideoStream?: (streams: Map<string, MediaStream>) => void;
9
17
  onRemoteAudioStream?: (streams: Map<string, MediaStream>) => void;
10
18
  onDataChannelEvent?: (channel: string, eventType: 'message' | 'open' | 'close' | 'error', eventData: MessageEvent | Event | RTCErrorEvent) => void;
11
- }
19
+ };
20
+ export {};
@@ -8,3 +8,5 @@ export { SSEConnection } from './SSEConnection/SSEConnection';
8
8
  export { WSConnection } from './WSConnection/WSConnection';
9
9
  export type { SSECustomEvent, SSEConnectionCloseOption, SSEConnectionOptions, SSEEventMap, SSEUnifiedBuiltInMessage, SSEUnifiedCustomMessage, SSEUnifiedMessage, } from './SSEConnection/SSEConnection';
10
10
  export type { UnifiedMessageEvent, WSConnectionOptions, } from './WSConnection/WSConnection';
11
+ export { WebRTCConnection } from './WebRTCConnection/WebRTCConnection';
12
+ export type { WebRTCConnectionOptions } from './WebRTCConnection/_types';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apple-pie/slice",
3
- "version": "0.1.31",
3
+ "version": "0.1.32",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.mjs",
6
6
  "exports": {