@apple-pie/slice 0.1.31 → 0.1.33

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 (293) hide show
  1. package/README.md +35 -284
  2. package/dist/cjs/chunks/{AudioBubble-k7qS53g6.js → AudioBubble-_eYM1QMu.js} +4 -3
  3. package/dist/cjs/chunks/{Avatar-hP8GuwvD.js → Avatar-DTro_MXZ.js} +1 -1
  4. package/dist/cjs/chunks/{AvatarGroup-DMy34q7_.js → AvatarGroup-OPJJ_Te5.js} +1 -1
  5. package/dist/cjs/chunks/{Badge-D2TbyfJS.js → Badge-DWUeXxm2.js} +1 -1
  6. package/dist/cjs/chunks/{Button-CTsHZBEB.js → Button-CuGvPAkH.js} +1 -1
  7. package/dist/cjs/chunks/{ButtonBar-BRb1PTmw.js → ButtonBar-CbXToyfD.js} +1 -1
  8. package/dist/cjs/chunks/{Camera-CKv087kr.js → Camera-DjENiyud.js} +5 -4
  9. package/dist/cjs/chunks/{CheckBox-VRIL1FHh.js → CheckBox-DiJpbdy5.js} +1 -1
  10. package/dist/cjs/chunks/{Chip-Dr3vKvRY.js → Chip-kzOvEo0P.js} +1 -1
  11. package/dist/cjs/chunks/{DivInput-Ci0gaCWL.js → DivInput-B917fKB9.js} +1 -1
  12. package/dist/cjs/chunks/{Dot-C0MvSJOl.js → Dot-DaRF2JyO.js} +1 -1
  13. package/dist/cjs/chunks/{DrggablePanel-DflouLUs.js → DrggablePanel-CJTEmYW6.js} +4 -3
  14. package/dist/cjs/chunks/{DropDown-BS1H62yj.js → DropDown-DRSQvXCC.js} +1 -1
  15. package/dist/cjs/chunks/{ErrorSummary-B3tof7ir.js → ErrorSummary-ltiIsgJ6.js} +4 -3
  16. package/dist/cjs/chunks/{FileIcon-Te8MaqTs.js → FileIcon-WIVOTJLa.js} +5 -3
  17. package/dist/cjs/chunks/{FileList-CDcfKIV6.js → FileList-CzQZZErI.js} +1 -1
  18. package/dist/cjs/chunks/{FlexDiv-wO8IY0Zf.js → FlexDiv-CBENyLT4.js} +1 -1
  19. package/dist/cjs/chunks/{Grouper-DyGkzdvz.js → Grouper-Cd3AJEFv.js} +4 -3
  20. package/dist/cjs/chunks/{Icon-BFZ_5Qv3.js → Icon-DjvProjz.js} +4 -3
  21. package/dist/cjs/chunks/{IconButton-CgsuJIuF.js → IconButton-BuwQLUuj.js} +1 -1
  22. package/dist/cjs/chunks/{IndexedDB-Dgwal8na.js → IndexedDB-Ddhq6Gjd.js} +1 -1
  23. package/dist/cjs/chunks/{Label-BuyhcJbF.js → Label-d32ENzwL.js} +1 -1
  24. package/dist/cjs/chunks/Level-B8eT8XyV.js +58 -0
  25. package/dist/cjs/chunks/{MdStreamBuffer-CbG_VeRI.js → MdStreamBuffer-Chwibu07.js} +38 -16
  26. package/dist/cjs/chunks/{Modal-ByRyv3wy.js → Modal-CUAj4e6x.js} +34 -8
  27. package/dist/cjs/chunks/ModalController-BwFAVI5G.js +80 -0
  28. package/dist/cjs/chunks/{Overlay-FooE9M_s.js → Overlay-CaAA3ey5.js} +1 -1
  29. package/dist/cjs/chunks/{Pager-B-cuwffo.js → Pager-uExZ5E3x.js} +1 -1
  30. package/dist/cjs/chunks/{ProgressIndicator-ByZ_aYAZ.js → ProgressIndicator-DwqslY4o.js} +4 -3
  31. package/dist/cjs/chunks/{PromptInput--grtHPvy.js → PromptInput-Dl8l8cZv.js} +34 -30
  32. package/dist/cjs/chunks/{RadioButton-DP2X1dA_.js → RadioButton-DPpAOFQt.js} +1 -1
  33. package/dist/cjs/chunks/{RadioButtonList-COGNW5y3.js → RadioButtonList-IbPA6A3y.js} +1 -1
  34. package/dist/cjs/chunks/{Slider-G1a8UKef.js → Slider-D5oa7NGy.js} +1 -1
  35. package/dist/cjs/chunks/{Spacer-CsRCleXv.js → Spacer-DtUh2VLv.js} +1 -1
  36. package/dist/cjs/chunks/{Switch-OBVHKn_D.js → Switch-Bs0r5va5.js} +1 -1
  37. package/dist/cjs/chunks/{TabBar-C1HkBaxE.js → TabBar-BCSTg_Uc.js} +4 -3
  38. package/dist/cjs/chunks/{TextArea-BEmNI_HZ.js → TextArea-Dj7jsvVr.js} +1 -1
  39. package/dist/cjs/chunks/{TextField-D9_COA9H.js → TextField-DNP0wJla.js} +5 -4
  40. package/dist/cjs/chunks/{Tip-2W0u_oQN.js → Tip-awq6PDZa.js} +1 -1
  41. package/dist/cjs/chunks/{Toast-B9jX6ioq.js → Toast-xS1TC3Ba.js} +7 -6
  42. package/dist/cjs/chunks/{ToggleButton-C_Gu5dYR.js → ToggleButton-CqD5c6JA.js} +4 -3
  43. package/dist/cjs/chunks/{UploadArea-ENFAf4tE.js → UploadArea-CvWqk8YK.js} +1 -1
  44. package/dist/cjs/chunks/{WSConnection-CZ22tcLz.js → WSConnection-BACWw4TS.js} +1 -1
  45. package/dist/cjs/chunks/WebRTCConnection-DBeyg4j9.js +252 -0
  46. package/dist/cjs/chunks/{localDBStore-Ca73jeFf.js → localDBStore-wgCc1SmV.js} +1 -1
  47. package/dist/cjs/chunks/{microphoneStore-lxYIvhN8.js → microphoneStore-Dy5TwE2I.js} +27 -4
  48. package/dist/cjs/chunks/{misc-DZAbObFp.js → misc-BwQIEIuF.js} +1 -1
  49. package/dist/cjs/chunks/{sseStore-Bq7sVvyA.js → sseStore-CFFaYonG.js} +2 -2
  50. package/dist/cjs/chunks/{uploads-worker-CD-annza.js → uploads-worker-DWvOe9F8.js} +1 -1
  51. package/dist/cjs/chunks/{uploadsStore-CUeB10zx.js → uploadsStore-BCmts7Ie.js} +2 -2
  52. package/dist/cjs/chunks/{volumeStore-roYTyKJ2.js → volumeStore-BXFAQhvS.js} +5 -4
  53. package/dist/cjs/chunks/webRTCStore-DRjvbnve.js +55 -0
  54. package/dist/cjs/chunks/{windowStore-BdJv-RF0.js → windowStore-C4Bg6I9i.js} +1 -1
  55. package/dist/cjs/components/AudioBubble/index.js +6 -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 +9 -7
  60. package/dist/cjs/components/ButtonBar/index.js +6 -4
  61. package/dist/cjs/components/Camera/index.js +7 -5
  62. package/dist/cjs/components/CheckBox/index.js +6 -4
  63. package/dist/cjs/components/Chip/index.js +7 -5
  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 +5 -3
  67. package/dist/cjs/components/DropDown/index.js +6 -4
  68. package/dist/cjs/components/ErrorSummary/index.js +5 -3
  69. package/dist/cjs/components/FileIcon/index.js +5 -3
  70. package/dist/cjs/components/FileList/index.js +7 -5
  71. package/dist/cjs/components/FlexDiv/index.js +2 -2
  72. package/dist/cjs/components/Grouper/index.js +7 -5
  73. package/dist/cjs/components/Icon/index.js +5 -3
  74. package/dist/cjs/components/IconButton/index.js +8 -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 +10 -8
  78. package/dist/cjs/components/ModalController/index.js +6 -4
  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 +5 -3
  82. package/dist/cjs/components/PromptInput/index.js +9 -7
  83. package/dist/cjs/components/RadioButton/index.js +6 -4
  84. package/dist/cjs/components/RadioButtonList/index.js +7 -5
  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 +8 -6
  89. package/dist/cjs/components/TextArea/index.js +9 -7
  90. package/dist/cjs/components/Textfield/index.js +9 -7
  91. package/dist/cjs/components/Tip/index.js +3 -3
  92. package/dist/cjs/components/Toast/index.js +6 -4
  93. package/dist/cjs/components/ToggleButton/index.js +9 -7
  94. package/dist/cjs/components/UploadArea/index.js +11 -10
  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 -18
  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 +24 -19
  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-SB1LCBlJ.mjs} +9 -3
  121. package/dist/esm/chunks/{Avatar-pA41Pcyl.mjs → Avatar-B6PcVOmT.mjs} +2 -2
  122. package/dist/esm/chunks/{AvatarGroup-CZBtWjnj.mjs → AvatarGroup-DEb3j2IZ.mjs} +2 -2
  123. package/dist/esm/chunks/{Badge-pLwG0zm7.mjs → Badge-bh5UVUnt.mjs} +1 -1
  124. package/dist/esm/chunks/{Button-BJoMLZIs.mjs → Button-CWKs3uAV.mjs} +6 -6
  125. package/dist/esm/chunks/{ButtonBar-BO2RUJ8R.mjs → ButtonBar-CWeMhkSb.mjs} +3 -3
  126. package/dist/esm/chunks/{Camera-4MNA52HG.mjs → Camera-BmuMA9xY.mjs} +11 -5
  127. package/dist/esm/chunks/{CheckBox-7KAsvZld.mjs → CheckBox-BR6a2n0j.mjs} +3 -3
  128. package/dist/esm/chunks/{Chip-BuGvCLLU.mjs → Chip-DXW0jxKf.mjs} +4 -4
  129. package/dist/esm/chunks/{DivInput-D0YzSWjJ.mjs → DivInput-BWO1EJXA.mjs} +2 -2
  130. package/dist/esm/chunks/{Dot-h26m47Z-.mjs → Dot-DMst-5Q2.mjs} +1 -1
  131. package/dist/esm/chunks/{DrggablePanel-Bh6HLPMX.mjs → DrggablePanel-qxrCS7Ot.mjs} +8 -2
  132. package/dist/esm/chunks/{DropDown-NgMYjjXn.mjs → DropDown-DlO2J4QP.mjs} +3 -3
  133. package/dist/esm/chunks/{ErrorSummary-nNm9qymE.mjs → ErrorSummary-BplQFunJ.mjs} +8 -2
  134. package/dist/esm/chunks/{FileIcon-BqyV1wut.mjs → FileIcon-iFmAF7_a.mjs} +8 -2
  135. package/dist/esm/chunks/{FileList-C1tOvoc0.mjs → FileList-CztHFCJe.mjs} +5 -5
  136. package/dist/esm/chunks/{FlexDiv-CkK-DAyg.mjs → FlexDiv-DGmDZL7M.mjs} +1 -1
  137. package/dist/esm/chunks/{Grouper-CyrOkuu2.mjs → Grouper-DxOISLzH.mjs} +9 -3
  138. package/dist/esm/chunks/{Icon-DjW0Krm8.mjs → Icon-L8B35JN1.mjs} +8 -2
  139. package/dist/esm/chunks/{IconButton-DdLhTUl0.mjs → IconButton-DxwJemEK.mjs} +5 -5
  140. package/dist/esm/chunks/{IndexedDB-DVoDikoA.mjs → IndexedDB-DA5oZXju.mjs} +1 -1
  141. package/dist/esm/chunks/{Label-DhmJ_Sln.mjs → Label-wDPtyK4h.mjs} +2 -2
  142. package/dist/esm/chunks/Level-B9JayinM.mjs +63 -0
  143. package/dist/esm/chunks/{MdStreamBuffer-4AJH8WaN.mjs → MdStreamBuffer-Cyon3ytf.mjs} +38 -16
  144. package/dist/esm/chunks/{Modal-FztrJsQo.mjs → Modal-C-Q2A_RY.mjs} +39 -13
  145. package/dist/esm/chunks/ModalController-ClAjHLPb.mjs +91 -0
  146. package/dist/esm/chunks/{Overlay-Dsy55Bxm.mjs → Overlay-Dr9YYxJ6.mjs} +1 -1
  147. package/dist/esm/chunks/{Pager-BqSdwL0L.mjs → Pager-DPbTCMNe.mjs} +2 -2
  148. package/dist/esm/chunks/{ProgressIndicator-BnqZFATV.mjs → ProgressIndicator-HaJJDZ-m.mjs} +8 -2
  149. package/dist/esm/chunks/{PromptInput-CRkcPXJu.mjs → PromptInput-wGhpXw-h.mjs} +38 -31
  150. package/dist/esm/chunks/{RadioButton-DXq3yniV.mjs → RadioButton-oOGgTDhg.mjs} +3 -3
  151. package/dist/esm/chunks/{RadioButtonList-BgOskHCP.mjs → RadioButtonList-CDWKVvyL.mjs} +3 -3
  152. package/dist/esm/chunks/{Slider-DPOy9uNI.mjs → Slider-ioPGftDY.mjs} +3 -3
  153. package/dist/esm/chunks/{Spacer-BJd_D0Fn.mjs → Spacer-VJBjxVlr.mjs} +1 -1
  154. package/dist/esm/chunks/{Switch-DHqlyizo.mjs → Switch-BCk2sTh3.mjs} +1 -1
  155. package/dist/esm/chunks/{TabBar-RBXExqMK.mjs → TabBar-C1DYnCRx.mjs} +11 -5
  156. package/dist/esm/chunks/{TextArea-CIlx_P26.mjs → TextArea-CF3r5m2G.mjs} +2 -2
  157. package/dist/esm/chunks/{TextField-CX72ybwH.mjs → TextField-BNfTj9v2.mjs} +11 -5
  158. package/dist/esm/chunks/{Tip-COBSyEjm.mjs → Tip-DIKQvxxO.mjs} +2 -2
  159. package/dist/esm/chunks/{Toast-BTm3HxDD.mjs → Toast-CkXPrDpp.mjs} +12 -6
  160. package/dist/esm/chunks/{ToggleButton-DujsCKF3.mjs → ToggleButton-Dvy8fc4t.mjs} +5 -4
  161. package/dist/esm/chunks/{UploadArea-D--Nt8Ed.mjs → UploadArea-D_xGzR2e.mjs} +4 -4
  162. package/dist/esm/chunks/{WSConnection-BMXcuW3f.mjs → WSConnection-TiYLENWB.mjs} +1 -1
  163. package/dist/esm/chunks/WebRTCConnection-d0Yvd66q.mjs +252 -0
  164. package/dist/esm/chunks/{localDBStore-36E3160Z.mjs → localDBStore-C-5y16uv.mjs} +2 -2
  165. package/dist/esm/chunks/{microphoneStore-Cexu82zH.mjs → microphoneStore-Cbx9nV4R.mjs} +26 -3
  166. package/dist/esm/chunks/{misc-CTGTuM2J.mjs → misc-zecH7-IH.mjs} +1 -1
  167. package/dist/esm/chunks/{sseStore-Dow4NXkZ.mjs → sseStore-DIquUNpm.mjs} +2 -2
  168. package/dist/esm/chunks/{tslib.es6-BX2F90pK.mjs → tslib.es6-CVvvNSPr.mjs} +1 -1
  169. package/dist/esm/chunks/{uploads-worker-Dhyp4ot3.mjs → uploads-worker-CUggKU9b.mjs} +1 -1
  170. package/dist/esm/chunks/{uploadsStore-DT4lFybE.mjs → uploadsStore-9QngohOe.mjs} +1 -1
  171. package/dist/esm/chunks/{volumeStore-RAxdmQ60.mjs → volumeStore-BrgZCRKF.mjs} +5 -4
  172. package/dist/esm/chunks/webRTCStore-DhFE9-bb.mjs +57 -0
  173. package/dist/esm/chunks/{windowStore-C4AZexIa.mjs → windowStore-BKW7HyoD.mjs} +1 -1
  174. package/dist/esm/components/AudioBubble/index.mjs +14 -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 +18 -8
  179. package/dist/esm/components/ButtonBar/index.mjs +14 -4
  180. package/dist/esm/components/Camera/index.mjs +16 -6
  181. package/dist/esm/components/CheckBox/index.mjs +14 -4
  182. package/dist/esm/components/Chip/index.mjs +15 -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 +13 -3
  186. package/dist/esm/components/DropDown/index.mjs +14 -4
  187. package/dist/esm/components/ErrorSummary/index.mjs +13 -3
  188. package/dist/esm/components/FileIcon/index.mjs +13 -3
  189. package/dist/esm/components/FileList/index.mjs +16 -6
  190. package/dist/esm/components/FlexDiv/index.mjs +2 -2
  191. package/dist/esm/components/Grouper/index.mjs +15 -5
  192. package/dist/esm/components/Icon/index.mjs +14 -4
  193. package/dist/esm/components/IconButton/index.mjs +17 -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 +20 -10
  197. package/dist/esm/components/ModalController/index.mjs +14 -6
  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 +14 -4
  201. package/dist/esm/components/PromptInput/index.mjs +22 -12
  202. package/dist/esm/components/RadioButton/index.mjs +14 -4
  203. package/dist/esm/components/RadioButtonList/index.mjs +15 -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 +18 -8
  208. package/dist/esm/components/TextArea/index.mjs +19 -9
  209. package/dist/esm/components/Textfield/index.mjs +20 -10
  210. package/dist/esm/components/Tip/index.mjs +3 -3
  211. package/dist/esm/components/Toast/index.mjs +15 -5
  212. package/dist/esm/components/ToggleButton/index.mjs +19 -9
  213. package/dist/esm/components/UploadArea/index.mjs +19 -9
  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 +18 -14
  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 +76 -13
  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/PromptInput/PromptInput.d.ts +10 -2
  245. package/dist/types/components/PromptInput/_types.d.ts +5 -1
  246. package/dist/types/components/Toast/_types.d.ts +1 -0
  247. package/dist/types/components/ToggleButton/_types.d.ts +1 -0
  248. package/dist/types/hooks/index.d.ts +2 -0
  249. package/dist/types/hooks/useBindWebRTC/index.d.ts +1 -0
  250. package/dist/types/hooks/useBindWebRTC/useBindWebRTC.d.ts +15 -0
  251. package/dist/types/hooks/useLocalStore/useLocalStore.d.ts +1 -1
  252. package/dist/types/hooks/useMdStreamBuffer/useMdStreamBuffer.d.ts +6 -1
  253. package/dist/types/index.d.ts +3 -1
  254. package/dist/types/providers/ThemeProvider.d.ts +1 -0
  255. package/dist/types/providers/themeServer.d.ts +7 -3
  256. package/dist/types/stores/WebRTC/_types.d.ts +16 -0
  257. package/dist/types/stores/WebRTC/index.d.ts +2 -0
  258. package/dist/types/stores/WebRTC/webRTCStore.d.ts +21 -0
  259. package/dist/types/stores/index.d.ts +1 -0
  260. package/dist/types/stores/microphone/index.d.ts +1 -1
  261. package/dist/types/stores/microphone/microphoneStore.d.ts +14 -1
  262. package/dist/types/stores/toast/_types.d.ts +1 -0
  263. package/dist/types/stores/volume/_types.d.ts +3 -1
  264. package/dist/types/stores/volume/volumeStore.d.ts +6 -2
  265. package/dist/types/utils/functions/files.d.ts +1 -1
  266. package/dist/types/utils/index.d.ts +2 -2
  267. package/dist/types/utils/objects/MDStreamBuffer/MdStreamBuffer.d.ts +10 -0
  268. package/dist/types/utils/objects/MDStreamBuffer/_types.d.ts +2 -0
  269. package/dist/types/utils/objects/WebRTCConnection/WebRTCConnection.d.ts +37 -3
  270. package/dist/types/utils/objects/WebRTCConnection/_types.d.ts +13 -4
  271. package/dist/types/utils/objects/index.d.ts +2 -0
  272. package/package.json +1 -1
  273. package/dist/cjs/chunks/ModalController-xjflFsjF.js +0 -68
  274. package/dist/esm/chunks/ModalController-C1BnM5Dz.mjs +0 -76
  275. /package/dist/cjs/chunks/{SSEConnection-ACoOeeTO.js → SSEConnection-CF5WZG9b.js} +0 -0
  276. /package/dist/cjs/chunks/{_types-k-3V1fz_.js → _types-BTdDWVYI.js} +0 -0
  277. /package/dist/cjs/chunks/{audioVisualizer-MOSbvvnZ.js → audioVisualizer-C7fMG0WH.js} +0 -0
  278. /package/dist/cjs/chunks/{colors-B0_3srZN.js → colors-CmOkcjB3.js} +0 -0
  279. /package/dist/cjs/chunks/{debounce-CaoYvh12.js → debounce-BtCCTkbG.js} +0 -0
  280. /package/dist/cjs/chunks/{modalStore-D4bOjuWd.js → modalStore-CaQkdY5_.js} +0 -0
  281. /package/dist/cjs/chunks/{sharedTypes-CthHPjrO.js → sharedTypes-BOieqpQy.js} +0 -0
  282. /package/dist/cjs/chunks/{tipStore-CPB7RHKY.js → tipStore-4Bs9v2sg.js} +0 -0
  283. /package/dist/cjs/chunks/{toastStore-6eHe6esp.js → toastStore-CyCE9-lr.js} +0 -0
  284. /package/dist/cjs/chunks/{tslib.es6-CzpRaW14.js → tslib.es6-DqjaJVC3.js} +0 -0
  285. /package/dist/esm/chunks/{SSEConnection-qNnkZUOe.mjs → SSEConnection-g0GBGAqe.mjs} +0 -0
  286. /package/dist/esm/chunks/{_types-CEStVWlB.mjs → _types-9ekyeJYl.mjs} +0 -0
  287. /package/dist/esm/chunks/{audioVisualizer-BUNbarKP.mjs → audioVisualizer-nMo67yOW.mjs} +0 -0
  288. /package/dist/esm/chunks/{colors-D-qeA9gU.mjs → colors-v5b8_oYV.mjs} +0 -0
  289. /package/dist/esm/chunks/{debounce-D5b6tZ5a.mjs → debounce-DFxAyrPi.mjs} +0 -0
  290. /package/dist/esm/chunks/{modalStore-Crg_QmSJ.mjs → modalStore-D6_oc47l.mjs} +0 -0
  291. /package/dist/esm/chunks/{sharedTypes-U5H1I85x.mjs → sharedTypes-CdmzhKXN.mjs} +0 -0
  292. /package/dist/esm/chunks/{tipStore-pvswaezx.mjs → tipStore-C2M6zBzd.mjs} +0 -0
  293. /package/dist/esm/chunks/{toastStore-80oOTYsj.mjs → toastStore-B-6kdNHw.mjs} +0 -0
@@ -0,0 +1,63 @@
1
+ import { _ as __rest } from "./tslib.es6-CVvvNSPr.mjs";
2
+
3
+ import { jsx } from "react/jsx-runtime";
4
+
5
+ import React, { useRef, useState, useMemo, useEffect } from "react";
6
+
7
+ import { s as setStyle } from "./misc-zecH7-IH.mjs";
8
+
9
+ import { A as AudioVisualizer } from "./audioVisualizer-nMo67yOW.mjs";
10
+
11
+ var css_wrapper = "Level-module_wrapper__yOfXw", css_barContainer = "Level-module_barContainer__QMUdv", css_bar = "Level-module_bar__MnApX";
12
+
13
+ const Level = React.memo(function(props) {
14
+ const {width: width = 100, height: height = 4, gap: gap = 0, audioStream: audioStream, playing: playing = !1, minIntensity: minIntensity = 0, maxIntensity: maxIntensity = 5, intensity: intensity = 3.5, peakIntensity: peakIntensity = .5, risePerSeconds: risePerSeconds = 4, releasePerSeconds: releasePerSeconds, ReleasePerSeconds: ReleasePerSeconds = 1.5, borderRadius: borderRadius = 4, borderColor: borderColor = "transparent", borderWidth: borderWidth = 0, colorActive: colorActive = "var(--feedback-positive)", backgroundColor: backgroundColor = "var(--core-surface-primary-tint)"} = props, divAttributes = __rest(props, [ "width", "height", "gap", "audioStream", "playing", "minIntensity", "maxIntensity", "intensity", "peakIntensity", "risePerSeconds", "releasePerSeconds", "ReleasePerSeconds", "borderRadius", "borderColor", "borderWidth", "colorActive", "backgroundColor" ]), {id: divId, className: className, style: style} = divAttributes, rest = __rest(divAttributes, [ "id", "className", "style" ]), divStyle = null != style ? style : {}, divClass = className ? ` ${className}` : "", visualizerRef = useRef(null), [normalizedIntensity, setNormalizedIntensity] = useState(0), totalBars = Math.max(1, Math.floor(maxIntensity)), minBars = Math.max(0, Math.min(Math.floor(minIntensity), totalBars)), releaseRate = null != releasePerSeconds ? releasePerSeconds : ReleasePerSeconds, intensityIntervals = useMemo(() => new Array(totalBars).fill(0).map((_, index) => index), [ totalBars ]), activeBars = useMemo(() => {
15
+ const scaledBars = Math.round(minBars + normalizedIntensity * (totalBars - minBars));
16
+ return Math.max(minBars, Math.min(scaledBars, totalBars));
17
+ }, [ minBars, normalizedIntensity, totalBars ]), visualizerSettings = useMemo(() => ({
18
+ intensityMultiplier: intensity,
19
+ peakIntensity: peakIntensity,
20
+ risePerSecond: risePerSeconds,
21
+ releasePerSecond: releaseRate,
22
+ onUpdate: ({intensity: nextIntensity}) => setNormalizedIntensity(nextIntensity)
23
+ }), [ intensity, peakIntensity, releaseRate, risePerSeconds ]);
24
+ useEffect(() => {
25
+ var _a;
26
+ if (null === (_a = visualizerRef.current) || void 0 === _a || _a.dispose(), visualizerRef.current = null,
27
+ !audioStream) return void setNormalizedIntensity(0);
28
+ const visualizer = new AudioVisualizer(audioStream, visualizerSettings);
29
+ return visualizerRef.current = visualizer, playing && visualizer.start(), () => {
30
+ visualizer.dispose(), visualizerRef.current === visualizer && (visualizerRef.current = null);
31
+ };
32
+ }, [ audioStream, playing, visualizerSettings ]), useEffect(() => {
33
+ visualizerRef.current && (playing ? visualizerRef.current.start() : (visualizerRef.current.stop(),
34
+ setNormalizedIntensity(0)));
35
+ }, [ playing ]);
36
+ const cssVars = useMemo(() => ({
37
+ "--level-width": setStyle(width),
38
+ "--level-height": setStyle(height),
39
+ "--level-gap": setStyle(gap),
40
+ "--level-bar-border-radius": setStyle(borderRadius),
41
+ "--level-border-color": borderColor,
42
+ "--level-border-width": setStyle(borderWidth),
43
+ "--level-color": colorActive,
44
+ "--level-bg-color": backgroundColor
45
+ }), [ width, height, gap, borderRadius, borderColor, borderWidth, colorActive, backgroundColor ]);
46
+ return jsx("div", Object.assign({
47
+ id: divId,
48
+ className: `${css_wrapper}${divClass}`,
49
+ style: Object.assign(Object.assign({}, cssVars), divStyle)
50
+ }, rest, {
51
+ children: intensityIntervals.map(barIndex => jsx("div", {
52
+ className: css_barContainer,
53
+ children: jsx("div", {
54
+ className: css_bar,
55
+ style: {
56
+ opacity: barIndex < activeBars ? 1 : 0
57
+ }
58
+ })
59
+ }, barIndex))
60
+ }));
61
+ });
62
+
63
+ export { Level as L };
@@ -88,18 +88,19 @@ const DEFAULT_WATCHED_MARKERS = [ {
88
88
  * Buffer streamed Markdown and emit parser-safe snapshots on animation frames.
89
89
  */ class MdBuffer {
90
90
  constructor(options) {
91
- var _a, _b, _c, _d, _e, rules;
92
- this.committedRaw = "", this.activeRaw = "", this.frameHandle = null, this.completeSignal = !1,
93
- this.endOfStreamToken = null == options ? void 0 : options.endOfStreamToken, this.healthyEndMarker = null == options ? void 0 : options.healthyEndMarker,
94
- this.htmlHandling = null !== (_a = null == options ? void 0 : options.htmlHandling) && void 0 !== _a ? _a : "ignore",
91
+ var _a, _b, _c, _d, _e, _f, rules;
92
+ this.committedRaw = "", this.activeRaw = "", this.frameHandle = null, this.flushTimer = null,
93
+ this.lastFlushAt = 0, this.lastFlushedRawLength = 0, this.completeSignal = !1, this.endOfStreamToken = null == options ? void 0 : options.endOfStreamToken,
94
+ this.healthyEndMarker = null == options ? void 0 : options.healthyEndMarker, this.htmlHandling = null !== (_a = null == options ? void 0 : options.htmlHandling) && void 0 !== _a ? _a : "ignore",
95
95
  this.includeLinksAndImages = null !== (_b = null == options ? void 0 : options.includeLinksAndImages) && void 0 !== _b && _b,
96
- this.onFlush = null == options ? void 0 : options.onFlush, this.requestFrame = null !== (_c = null == options ? void 0 : options.requestFrame) && void 0 !== _c ? _c : function() {
96
+ this.flushDelayMs = Math.max(0, null !== (_c = null == options ? void 0 : options.flushDelayMs) && void 0 !== _c ? _c : 0),
97
+ this.onFlush = null == options ? void 0 : options.onFlush, this.requestFrame = null !== (_d = null == options ? void 0 : options.requestFrame) && void 0 !== _d ? _d : function() {
97
98
  if ("undefined" != typeof globalThis && "function" == typeof globalThis.requestAnimationFrame) return globalThis.requestAnimationFrame.bind(globalThis);
98
99
  return callback => globalThis.setTimeout(() => callback(Date.now()), 16);
99
- }(), this.cancelFrame = null !== (_d = null == options ? void 0 : options.cancelFrame) && void 0 !== _d ? _d : function() {
100
+ }(), this.cancelFrame = null !== (_e = null == options ? void 0 : options.cancelFrame) && void 0 !== _e ? _e : function() {
100
101
  if ("undefined" != typeof globalThis && "function" == typeof globalThis.cancelAnimationFrame) return globalThis.cancelAnimationFrame.bind(globalThis);
101
102
  return handle => globalThis.clearTimeout(handle);
102
- }(), this.watchedMarkers = (rules = null !== (_e = null == options ? void 0 : options.watchedMarkers) && void 0 !== _e ? _e : DEFAULT_WATCHED_MARKERS,
103
+ }(), this.watchedMarkers = (rules = null !== (_f = null == options ? void 0 : options.watchedMarkers) && void 0 !== _f ? _f : DEFAULT_WATCHED_MARKERS,
103
104
  [ ...rules ].sort((left, right) => right.open.length - left.open.length));
104
105
  }
105
106
  /**
@@ -112,6 +113,11 @@ const DEFAULT_WATCHED_MARKERS = [ {
112
113
  */ get healthy() {
113
114
  return this.buildHealthyOutput();
114
115
  }
116
+ /**
117
+ * Characters appended since the last emitted snapshot.
118
+ */ get pendingCharacters() {
119
+ return Math.max(0, this.raw.length - this.lastFlushedRawLength);
120
+ }
115
121
  /**
116
122
  * Append a streamed Markdown token and schedule a frame flush.
117
123
  */ append(chunk) {
@@ -123,11 +129,15 @@ const DEFAULT_WATCHED_MARKERS = [ {
123
129
  * Emit the current snapshot immediately.
124
130
  */ flush(reason = "manual") {
125
131
  var _a;
132
+ this.clearScheduledFlush();
133
+ const raw = this.committedRaw + this.activeRaw, healthy = this.buildHealthyOutput();
134
+ this.lastFlushAt = Date.now(), this.lastFlushedRawLength = raw.length;
126
135
  const snapshot = {
127
- raw: this.committedRaw + this.activeRaw,
128
- healthy: this.buildHealthyOutput(),
136
+ raw: raw,
137
+ healthy: healthy,
129
138
  reason: reason,
130
- isComplete: this.completeSignal
139
+ isComplete: this.completeSignal,
140
+ pendingCharacters: this.pendingCharacters
131
141
  };
132
142
  return null === (_a = this.onFlush) || void 0 === _a || _a.call(this, snapshot),
133
143
  snapshot;
@@ -135,14 +145,13 @@ const DEFAULT_WATCHED_MARKERS = [ {
135
145
  /**
136
146
  * Mark the stream as complete and flush one final snapshot.
137
147
  */ complete() {
138
- return null !== this.frameHandle && (this.cancelFrame(this.frameHandle), this.frameHandle = null),
139
- this.completeSignal = !0, this.flush("complete");
148
+ return this.clearScheduledFlush(), this.completeSignal = !0, this.flush("complete");
140
149
  }
141
150
  /**
142
151
  * Clear the buffered state and cancel any pending frame.
143
152
  */ reset() {
144
- null !== this.frameHandle && (this.cancelFrame(this.frameHandle), this.frameHandle = null),
145
- this.committedRaw = "", this.activeRaw = "", this.completeSignal = !1;
153
+ this.clearScheduledFlush(), this.committedRaw = "", this.activeRaw = "", this.lastFlushAt = 0,
154
+ this.lastFlushedRawLength = 0, this.completeSignal = !1;
146
155
  }
147
156
  /**
148
157
  * Cancel future work and release the retained state.
@@ -158,10 +167,23 @@ const DEFAULT_WATCHED_MARKERS = [ {
158
167
  return this.dispose(), snapshot;
159
168
  }
160
169
  scheduleFlush() {
161
- null === this.frameHandle && (this.frameHandle = this.requestFrame(() => {
162
- this.frameHandle = null, this.flush("raf");
170
+ null === this.frameHandle && null === this.flushTimer && (this.frameHandle = this.requestFrame(() => {
171
+ this.frameHandle = null;
172
+ const remainingDelay = this.getRemainingFlushDelay();
173
+ remainingDelay <= 0 ? this.flush("raf") : this.flushTimer = setTimeout(() => {
174
+ this.flushTimer = null, this.flush("raf");
175
+ }, remainingDelay);
163
176
  }));
164
177
  }
178
+ getRemainingFlushDelay() {
179
+ if (this.flushDelayMs <= 0) return 0;
180
+ const elapsed = Date.now() - this.lastFlushAt;
181
+ return Math.max(0, this.flushDelayMs - elapsed);
182
+ }
183
+ clearScheduledFlush() {
184
+ null !== this.frameHandle && (this.cancelFrame(this.frameHandle), this.frameHandle = null),
185
+ null !== this.flushTimer && (clearTimeout(this.flushTimer), this.flushTimer = null);
186
+ }
165
187
  commitStableLines() {
166
188
  if (this.buildHealthyTail(this.activeRaw) !== this.activeRaw) return;
167
189
  const lastNewlineIndex = this.activeRaw.lastIndexOf("\n");
@@ -1,22 +1,24 @@
1
- import { a as __rest } from "./tslib.es6-BX2F90pK.mjs";
1
+ 'use client';
2
+ import { _ as __rest } from "./tslib.es6-CVvvNSPr.mjs";
2
3
 
3
4
  import { jsxs, jsx } from "react/jsx-runtime";
4
5
 
5
- import React, { useMemo } from "react";
6
+ import React, { useRef, useState, useCallback, useMemo, useEffect } from "react";
6
7
 
7
- import { s as setStyle } from "./misc-CTGTuM2J.mjs";
8
+ import { s as setStyle } from "./misc-zecH7-IH.mjs";
8
9
 
9
- import { B as Button } from "./Button-BJoMLZIs.mjs";
10
+ import { B as Button } from "./Button-CWKs3uAV.mjs";
10
11
 
11
- import { I as Icon } from "./Icon-DjW0Krm8.mjs";
12
+ import { I as Icon } from "./Icon-L8B35JN1.mjs";
12
13
 
13
- import { I as IconButton } from "./IconButton-DdLhTUl0.mjs";
14
+ import { I as IconButton } from "./IconButton-DxwJemEK.mjs";
14
15
 
15
16
  var css = {
16
17
  wrapper: "Modal-module_wrapper__34Hds flexBox-module_columnBetween__ERfp7",
17
18
  title: "Modal-module_title__A5OeE flexBox-module_rowBetween__5FEvi",
18
19
  titleBlock: "Modal-module_titleBlock__HUepX flexBox-module_rowStart__4tcxS",
19
20
  titleIcon: "Modal-module_titleIcon__xJYzy flexBox-module_row__z24tF",
21
+ contentWrapper: "Modal-module_contentWrapper__Swyjx flexBox-module_columnStart__C7P44",
20
22
  content: "Modal-module_content__dWO-B flexBox-module_columnStart__C7P44",
21
23
  actions: "Modal-module_actions__hY6zi flexBox-module_rowBetween__5FEvi",
22
24
  leftActions: "Modal-module_leftActions__-M-DM flexBox-module_rowStart__4tcxS",
@@ -29,7 +31,19 @@ var css = {
29
31
  };
30
32
 
31
33
  const Modal = React.memo(props => {
32
- const {children: children, id: id, className: className, style: style, minWidth: minWidth = 300, minHeight: minHeight = 200, maxHeight: maxHeight = 400, maxWidth: maxWidth = 400, padding: padding, close: close = !0, title: title, titleSize: titleSize = "l", contentSize: contentSize = "m", actions: actions, titleIcon: titleIcon, titleIconFill: titleIconFill = !0, titleBorderColor: titleBorderColor = "var(--core-outline-primary)", titleBorderWidth: titleBorderWidth = 0, actionsBorderColor: actionsBorderColor = "var(--core-outline-primary)", actionsBorderWidth: actionsBorderWidth = 0, onAction: onAction, onReject: onReject, onResolve: onResolve, onClose: onClose, onToolTip: onToolTip, onDragPointerDown: onDragPointerDown, backgroundColor: backgroundColor = "var(--core-surface-secondary)", titleColor: titleColor = "var(--core-text-special)", borderColor: borderColor = "var(--core-outline-primary)", borderRadius: borderRadius = 8, borderWidth: borderWidth = 1} = props, rest = __rest(props, [ "children", "id", "className", "style", "minWidth", "minHeight", "maxHeight", "maxWidth", "padding", "close", "title", "titleSize", "contentSize", "actions", "titleIcon", "titleIconFill", "titleBorderColor", "titleBorderWidth", "actionsBorderColor", "actionsBorderWidth", "onAction", "onReject", "onResolve", "onClose", "onToolTip", "onDragPointerDown", "backgroundColor", "titleColor", "borderColor", "borderRadius", "borderWidth" ]), modalStyle = null != style ? style : {}, modalClass = className ? ` ${className}` : "", cssVars = useMemo(() => ({
34
+ const {children: children, id: id, className: className, style: style, minWidth: minWidth = 300, minHeight: minHeight = 200, maxHeight: maxHeight = 400, maxWidth: maxWidth = 400, padding: padding, close: close = !0, title: title, titleSize: titleSize = "l", contentSize: contentSize = "m", actions: actions, titleIcon: titleIcon, titleIconFill: titleIconFill = !0, titleBorderColor: titleBorderColor = "var(--core-outline-primary)", titleBorderWidth: titleBorderWidth = 0, actionsBorderColor: actionsBorderColor = "var(--core-outline-primary)", actionsBorderWidth: actionsBorderWidth = 0, autoBorderBottom: autoBorderBottom = !0, onAction: onAction, onReject: onReject, onResolve: onResolve, onClose: onClose, onToolTip: onToolTip, onDragPointerDown: onDragPointerDown, backgroundColor: backgroundColor = "var(--core-surface-secondary)", scrollHandleColor: scrollHandleColor = "var(--core-text-disabled)", scrollHandleColorHover: scrollHandleColorHover = "var(--core-text-disabled)", titleColor: titleColor = "var(--core-text-special)", borderColor: borderColor = "var(--core-outline-primary)", borderRadius: borderRadius = 8, borderWidth: borderWidth = 1} = props, rest = __rest(props, [ "children", "id", "className", "style", "minWidth", "minHeight", "maxHeight", "maxWidth", "padding", "close", "title", "titleSize", "contentSize", "actions", "titleIcon", "titleIconFill", "titleBorderColor", "titleBorderWidth", "actionsBorderColor", "actionsBorderWidth", "autoBorderBottom", "onAction", "onReject", "onResolve", "onClose", "onToolTip", "onDragPointerDown", "backgroundColor", "scrollHandleColor", "scrollHandleColorHover", "titleColor", "borderColor", "borderRadius", "borderWidth" ]), contentWrapperRef = useRef(null), modalStyle = null != style ? style : {}, modalClass = className ? ` ${className}` : "", [scrolls, setScrolls] = useState(!1), getScrolls = useCallback(() => {
35
+ var _a, _b;
36
+ const height = null === (_a = contentWrapperRef.current) || void 0 === _a ? void 0 : _a.offsetHeight, scrollHeight = null === (_b = contentWrapperRef.current) || void 0 === _b ? void 0 : _b.scrollHeight;
37
+ return !(!height || !scrollHeight) && height < scrollHeight;
38
+ }, []), setActionBorderWidth = useMemo(() => scrolls && 0 === actionsBorderWidth && autoBorderBottom ? "1px" : setStyle(actionsBorderWidth), [ actionsBorderWidth, scrolls, autoBorderBottom ]), setContentPaddingTops = useMemo(() => {
39
+ if (scrolls && autoBorderBottom) {
40
+ if ("string" == typeof padding) {
41
+ return padding.split(" ")[0];
42
+ }
43
+ return setStyle(padding, "16px");
44
+ }
45
+ return "0";
46
+ }, [ scrolls, padding, autoBorderBottom ]), cssVars = useMemo(() => ({
33
47
  "--modal-min-width": setStyle(minWidth),
34
48
  "--modal-min-height": setStyle(minHeight),
35
49
  "--modal-max-height": setStyle(maxHeight),
@@ -38,13 +52,20 @@ const Modal = React.memo(props => {
38
52
  "--modal-title-color": titleColor,
39
53
  "--modal-border-radius": setStyle(borderRadius),
40
54
  "--modal-border-width": setStyle(borderWidth),
41
- "--modal-padding": setStyle(padding, 16),
55
+ "--modal-padding": setStyle(padding, "16px 24px"),
42
56
  "--modal-background-color": backgroundColor,
43
57
  "--modal-title-border-color": titleBorderColor,
44
58
  "--modal-title-border-width": setStyle(titleBorderWidth),
45
59
  "--modal-actions-border-color": actionsBorderColor,
46
- "--modal-actions-border-width": setStyle(actionsBorderWidth)
47
- }), [ minWidth, minHeight, maxHeight, maxWidth, borderColor, titleColor, borderRadius, borderWidth, padding, titleBorderWidth, titleBorderColor, actionsBorderWidth, actionsBorderColor, backgroundColor ]), renderActions = position => null == actions ? void 0 : actions.map((action, index) => action.position || "left" !== position ? action.position && position !== action.position ? null : jsx(Button, {
60
+ "--modal-scroll-handle": setStyle(scrollHandleColor),
61
+ "--modal-scroll-handle-hover": setStyle(scrollHandleColorHover),
62
+ "--modal-actions-border-width": setActionBorderWidth,
63
+ "--modal-content-padding-tops": setContentPaddingTops
64
+ }), [ minWidth, minHeight, maxHeight, maxWidth, borderColor, titleColor, borderRadius, borderWidth, padding, titleBorderWidth, titleBorderColor, actionsBorderColor, backgroundColor, scrollHandleColor, scrollHandleColorHover, setContentPaddingTops, setActionBorderWidth ]);
65
+ useEffect(() => {
66
+ children && maxHeight && setScrolls(getScrolls());
67
+ }, [ children, maxHeight, getScrolls ]);
68
+ const renderActions = position => null == actions ? void 0 : actions.map((action, index) => action.position || "left" !== position ? action.position && position !== action.position ? null : jsx(Button, {
48
69
  variant: action.primary ? "solid" : "outline",
49
70
  label: action.label,
50
71
  onClick: e => (action => {
@@ -67,9 +88,9 @@ const Modal = React.memo(props => {
67
88
  }, rest, {
68
89
  children: [ (title || close) && jsxs("div", {
69
90
  className: `${css.title} ${css[titleSize]}`,
91
+ onPointerDown: onDragPointerDown,
70
92
  children: [ jsxs("div", {
71
93
  className: css.titleBlock,
72
- onPointerDown: onDragPointerDown,
73
94
  children: [ titleIcon && jsx("div", {
74
95
  className: css.titleIcon,
75
96
  children: jsx(Icon, {
@@ -95,10 +116,15 @@ const Modal = React.memo(props => {
95
116
  })
96
117
  }) ]
97
118
  }), jsx("div", {
98
- className: `${css.content} ${css[contentSize]}`,
99
- children: children
119
+ className: css.contentWrapper,
120
+ ref: contentWrapperRef,
121
+ children: jsx("div", {
122
+ className: `${css.content} ${css[contentSize]}`,
123
+ children: children
124
+ })
100
125
  }), actions && actions.length > 0 && jsxs("div", {
101
126
  className: css.actions,
127
+ onPointerDown: onDragPointerDown,
102
128
  children: [ jsx("div", {
103
129
  className: css.leftActions,
104
130
  children: renderActions("left")
@@ -0,0 +1,91 @@
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
+
3
+ import { useDragControls, AnimatePresence, motion } from "motion/react";
4
+
5
+ import { useRef } from "react";
6
+
7
+ import "./microphoneStore-Cbx9nV4R.mjs";
8
+
9
+ import "./volumeStore-BrgZCRKF.mjs";
10
+
11
+ import "./webRTCStore-DhFE9-bb.mjs";
12
+
13
+ import { O as Overlay } from "./Overlay-Dr9YYxJ6.mjs";
14
+
15
+ import { u as useModal, a as useModalActions } from "./modalStore-D6_oc47l.mjs";
16
+
17
+ var css_container = "ModalController-module_container__3cSaO", css_box = "ModalController-module_box__cPzOz", css_wrapper = "ModalController-module_wrapper__HkOoX flexBox-module_row__z24tF";
18
+
19
+ const defaultTransition = {
20
+ ease: "easeOut",
21
+ duration: .25,
22
+ delay: .1
23
+ }, defaultVariants = {
24
+ initial: {
25
+ opacity: 0,
26
+ y: 20
27
+ },
28
+ animate: {
29
+ opacity: 1,
30
+ y: 0
31
+ },
32
+ exit: {
33
+ opacity: 0,
34
+ y: 20
35
+ }
36
+ };
37
+
38
+ function ModalController(props) {
39
+ const {dragConstraintsRef: dragConstraintsRef, transition: transition = defaultTransition, variants: variants = defaultVariants, initial: initial = "initial", animate: animate = "animate", exit: exit = "exit", draggable: draggable = !0, overlayOpacity: overlayOpacity = .7, overlayColor: overlayColor = "rgb(0,0,0)"} = props, controls = useDragControls(), modal = useModal(), resolve = useModalActions().resolve, reject = useModalActions().reject, hide = useModalActions().hide, ModalComponent = null == modal ? void 0 : modal.component, modalProps = null == modal ? void 0 : modal.props, ref = useRef(null), constraints = null != dragConstraintsRef ? dragConstraintsRef : ref;
40
+ return jsxs(Fragment, {
41
+ children: [ jsx(Overlay, {
42
+ show: !!modal,
43
+ type: "dark",
44
+ opacity: overlayOpacity,
45
+ color: overlayColor,
46
+ onClick: () => hide()
47
+ }), jsx(AnimatePresence, {
48
+ children: modal && ModalComponent && jsx("div", {
49
+ className: css_container,
50
+ ref: ref,
51
+ children: jsx("div", {
52
+ className: css_box,
53
+ children: jsx(motion.div, {
54
+ className: css_wrapper,
55
+ variants: variants,
56
+ initial: initial,
57
+ animate: animate,
58
+ exit: exit,
59
+ transition: transition,
60
+ drag: draggable,
61
+ dragListener: !draggable && void 0,
62
+ dragControls: draggable ? controls : void 0,
63
+ dragConstraints: draggable ? constraints : void 0,
64
+ dragElastic: draggable ? 0 : void 0,
65
+ dragMomentum: !draggable && void 0,
66
+ children: jsx(ModalComponent, Object.assign({}, modalProps, {
67
+ onResolve: value => {
68
+ "function" == typeof (null == modalProps ? void 0 : modalProps.onResolve) && modalProps.onResolve(value),
69
+ resolve(value);
70
+ },
71
+ onReject: error => {
72
+ "function" == typeof (null == modalProps ? void 0 : modalProps.onReject) && modalProps.onReject(error),
73
+ reject(error);
74
+ },
75
+ onClose: () => {
76
+ "function" == typeof (null == modalProps ? void 0 : modalProps.onClose) && modalProps.onClose(),
77
+ hide();
78
+ },
79
+ onDragPointerDown: e => {
80
+ "function" == typeof (null == modalProps ? void 0 : modalProps.onDragPointerDown) && (null == modalProps || modalProps.onDragPointerDown(e)),
81
+ controls.start(e);
82
+ }
83
+ }))
84
+ })
85
+ })
86
+ })
87
+ }) ]
88
+ });
89
+ }
90
+
91
+ export { ModalController as M };
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { a as __rest } from "./tslib.es6-BX2F90pK.mjs";
2
+ import { _ as __rest } from "./tslib.es6-CVvvNSPr.mjs";
3
3
 
4
4
  import { jsx } from "react/jsx-runtime";
5
5
 
@@ -1,11 +1,11 @@
1
1
  'use client';
2
- import { a as __rest } from "./tslib.es6-BX2F90pK.mjs";
2
+ import { _ as __rest } from "./tslib.es6-CVvvNSPr.mjs";
3
3
 
4
4
  import { jsx } from "react/jsx-runtime";
5
5
 
6
6
  import React, { useState, useMemo, useEffect, useCallback } from "react";
7
7
 
8
- import { a as accessibleKeyDown } from "./misc-CTGTuM2J.mjs";
8
+ import { a as accessibleKeyDown } from "./misc-zecH7-IH.mjs";
9
9
 
10
10
  var css_wrapper = "Pager-module_wrapper__eutVg flexBox-module_row__z24tF", css_bullet = "Pager-module_bullet__TxyR5 flexBox-module_row__z24tF", css_selected = "Pager-module_selected__C6xbR";
11
11
 
@@ -7,11 +7,17 @@ import { useTheme } from "../hooks/useTheme.mjs";
7
7
 
8
8
  import "../theme/colors.mjs";
9
9
 
10
- import { a as __rest } from "./tslib.es6-BX2F90pK.mjs";
10
+ import { _ as __rest } from "./tslib.es6-CVvvNSPr.mjs";
11
+
12
+ import "./webRTCStore-DhFE9-bb.mjs";
13
+
14
+ import "./microphoneStore-Cbx9nV4R.mjs";
15
+
16
+ import "./volumeStore-BrgZCRKF.mjs";
11
17
 
12
18
  import "../hooks/useWindow.mjs";
13
19
 
14
- import { I as Icon } from "./Icon-DjW0Krm8.mjs";
20
+ import { I as Icon } from "./Icon-L8B35JN1.mjs";
15
21
 
16
22
  import { AnimatePresence, motion } from "motion/react";
17
23
 
@@ -7,13 +7,21 @@ import { useTheme } from "../hooks/useTheme.mjs";
7
7
 
8
8
  import "../theme/colors.mjs";
9
9
 
10
- import "./tslib.es6-BX2F90pK.mjs";
10
+ import "./tslib.es6-CVvvNSPr.mjs";
11
+
12
+ import { s as setStyle } from "./misc-zecH7-IH.mjs";
13
+
14
+ import "./webRTCStore-DhFE9-bb.mjs";
15
+
16
+ import "./microphoneStore-Cbx9nV4R.mjs";
17
+
18
+ import "./volumeStore-BrgZCRKF.mjs";
11
19
 
12
20
  import "../hooks/useWindow.mjs";
13
21
 
14
- import { B as Button } from "./Button-BJoMLZIs.mjs";
22
+ import { B as Button } from "./Button-CWKs3uAV.mjs";
15
23
 
16
- import { F as FileList } from "./FileList-C1tOvoc0.mjs";
24
+ import { F as FileList } from "./FileList-CztHFCJe.mjs";
17
25
 
18
26
  var css = {
19
27
  wrapperBg: "PromptInput-module_wrapperBg__zabZq flexBox-module_columnStart__C7P44",
@@ -30,7 +38,7 @@ var css = {
30
38
  };
31
39
 
32
40
  const PromptInputBase = React.forwardRef((props, ref) => {
33
- const {children: children, attachments: attachments = [], value: value = "", working: working = !1, maxHeight: maxHeight, borderStyle: borderStyle = "gradient", borderColor: borderColor, borderColorOn: borderColorOn, borderAnimate: borderAnimate = !0, borderWidth: borderWidth = 1, borderRadius: borderRadius = 8, focused: focused = !1, placeholder: placeholder = "Ask me anything ...", placeholderWorking: placeholderWorking = "Working ...", submitClears: submitClears = !0, submitEnablesStop: submitEnablesStop = !0, enterSubmits: enterSubmits = !0, attachButton: attachButton = !0, sendButton: sendButton = !0, stopEnabled: stopEnabled = !1, textSize: textSize = "m", maxLength: maxLength, toolbarGap: toolbarGap = 8, onChange: onChange, onBlur: onBlur, onFocus: onFocus, onSubmit: onSubmit, onStop: onStop, onAttachmentsChange: onAttachmentsChange} = props, {isDark: isDark} = useTheme(), [isFocused, setIsFocused] = useState(null != focused && focused), [isWorking, setIsWorking] = useState(null != working && working), [isStopEnabled, setIsStopEnabled] = useState(stopEnabled), [textValue, setTextValue] = useState(value), textAreaRef = useRef(null), handleFocus = useCallback(() => {
41
+ const {children: children, attachments: attachments = [], value: value = "", width: width = "100%", maxWidth: maxWidth, minWidth: minWidth, working: working = !1, maxHeight: maxHeight, attachmentsDisabled: attachmentsDisabled = !1, submitWorking: submitWorking = !1, borderStyle: borderStyle = "gradient", borderColor: borderColor, borderColorOn: borderColorOn, borderAnimate: borderAnimate = !0, borderWidth: borderWidth = 1, borderRadius: borderRadius = 8, focused: focused = !1, placeholder: placeholder = "Ask me anything ...", placeholderWorking: placeholderWorking = "Working ...", submitClears: submitClears = !0, enterSubmits: enterSubmits = !0, attachButton: attachButton = !0, sendButton: sendButton = !0, stopEnabled: stopEnabled = !1, textSize: textSize = "m", maxLength: maxLength, toolbarGap: toolbarGap = 8, onChange: onChange, onBlur: onBlur, onFocus: onFocus, onSubmit: onSubmit, onStop: onStop, onAttachmentsChange: onAttachmentsChange} = props, {isDark: isDark} = useTheme(), [isFocused, setIsFocused] = useState(null != focused && focused), [textValue, setTextValue] = useState(value), textAreaRef = useRef(null), handleFocus = useCallback(() => {
34
42
  var _a, _b;
35
43
  setIsFocused(!0), null === (_a = null == textAreaRef ? void 0 : textAreaRef.current) || void 0 === _a || _a.focus(),
36
44
  null == onFocus || onFocus(null === (_b = textAreaRef.current) || void 0 === _b ? void 0 : _b.value, attachments);
@@ -46,47 +54,46 @@ const PromptInputBase = React.forwardRef((props, ref) => {
46
54
  setTextValue(newValue), null == onChange || onChange(newValue, attachments);
47
55
  }, [ onChange, attachments ]), handleSubmit = useCallback(() => {
48
56
  var _a;
49
- if (isWorking || isStopEnabled) return;
57
+ if (stopEnabled) return;
58
+ if (working && submitWorking) return;
50
59
  const currentValue = null === (_a = textAreaRef.current) || void 0 === _a ? void 0 : _a.value;
51
- currentValue && (null == onSubmit || onSubmit(currentValue, attachments), setIsWorking(!0),
52
- submitClears && setTextValue(""), submitEnablesStop && setIsStopEnabled(!0), handleBlur());
53
- }, [ submitClears, onSubmit, handleBlur, submitEnablesStop, isWorking, isStopEnabled, attachments ]), handleStop = useCallback(() => {
54
- setIsWorking(!1), setIsStopEnabled(!1), null == onStop || onStop(), handleFocus();
60
+ currentValue && (null == onSubmit || onSubmit(currentValue, attachments), submitClears && setTextValue(""),
61
+ handleBlur());
62
+ }, [ stopEnabled, submitClears, onSubmit, handleBlur, attachments, working, submitWorking ]), handleStop = useCallback(() => {
63
+ null == onStop || onStop(), handleFocus();
55
64
  }, [ onStop, handleFocus ]), handleKeyDown = useCallback(e => {
56
- if ("Enter" === e.key && enterSubmits) {
57
- if (e.preventDefault(), isWorking) return;
58
- handleSubmit();
59
- }
60
- }, [ handleSubmit, isWorking, enterSubmits ]), handleClickSend = useCallback(e => {
61
- e.preventDefault(), e.stopPropagation(), isWorking && !isStopEnabled || (isStopEnabled ? handleStop() : handleSubmit());
62
- }, [ handleSubmit, handleStop, isStopEnabled, isWorking ]), handleClickAttach = useCallback(e => {
65
+ "Enter" === e.key && enterSubmits && (e.preventDefault(), handleSubmit());
66
+ }, [ handleSubmit, enterSubmits ]), handleClickSend = useCallback(e => {
67
+ e.preventDefault(), e.stopPropagation(), stopEnabled ? handleStop() : handleSubmit();
68
+ }, [ handleSubmit, handleStop, stopEnabled ]), handleClickAttach = useCallback(e => {
63
69
  e.preventDefault(), e.stopPropagation();
64
70
  }, []), handleClickButtonBar = useCallback(e => {
65
- e.preventDefault(), isWorking || handleFocus();
66
- }, [ handleFocus, isWorking ]), setBorderColor = useMemo(() => {
71
+ e.preventDefault(), handleFocus();
72
+ }, [ handleFocus ]), setBorderColor = useMemo(() => {
67
73
  if ("gradient" === borderStyle) {
68
74
  const radial = isDark ? "var(--conic-gradient-dark)" : "var(--conic-gradient-light)";
69
- return isWorking && borderAnimate ? radial : isFocused ? null != borderColorOn ? borderColorOn : radial : null != borderColor ? borderColor : radial;
75
+ return working && borderAnimate ? radial : isFocused ? null != borderColorOn ? borderColorOn : radial : null != borderColor ? borderColor : radial;
70
76
  }
71
- return "solid" === borderStyle ? isWorking || isFocused ? null != borderColorOn ? borderColorOn : "var(--core-outline-special)" : null != borderColor ? borderColor : "transparent" : "transparent";
72
- }, [ borderStyle, isFocused, borderColorOn, borderColor, isWorking, borderAnimate, isDark ]), setPlaceholder = useMemo(() => isWorking && placeholderWorking ? placeholderWorking : placeholder, [ isWorking, placeholder, placeholderWorking ]), setSendIconColor = useMemo(() => isStopEnabled || isWorking ? "var(--core-text-primary)" : "" !== textValue ? "var(--core-text-light)" : "var(--core-text-disabled)", [ textValue, isWorking, isStopEnabled ]), sendButtonState = useMemo(() => isStopEnabled || "" !== textValue || isWorking ? "normal" : "disabled", [ textValue, isStopEnabled, isWorking ]), attachState = useMemo(() => isWorking ? "disabled" : "normal", [ isWorking ]);
77
+ return "solid" === borderStyle ? working || isFocused ? null != borderColorOn ? borderColorOn : "var(--core-outline-special)" : null != borderColor ? borderColor : "transparent" : "transparent";
78
+ }, [ borderStyle, isFocused, borderColorOn, borderColor, working, borderAnimate, isDark ]), setPlaceholder = useMemo(() => working && placeholderWorking ? placeholderWorking : placeholder, [ working, placeholder, placeholderWorking ]), setSendIconColor = useMemo(() => stopEnabled ? "var(--core-text-primary)" : "" !== textValue ? "var(--core-text-light)" : "var(--core-text-disabled)", [ textValue, stopEnabled ]), sendButtonState = useMemo(() => working && submitWorking || stopEnabled ? "normal" : "" === textValue ? "disabled" : "normal", [ textValue, stopEnabled, working, submitWorking ]), attachState = useMemo(() => attachmentsDisabled ? "disabled" : "normal", [ attachmentsDisabled ]);
73
79
  useEffect(() => {
74
80
  var _a, _b;
75
81
  focused ? null === (_a = textAreaRef.current) || void 0 === _a || _a.focus() : null === (_b = textAreaRef.current) || void 0 === _b || _b.blur();
76
82
  }, [ focused ]), useEffect(() => {
77
83
  var _a;
78
84
  (null === (_a = textAreaRef.current) || void 0 === _a ? void 0 : _a.value) !== value && setTextValue(value);
79
- }, [ value ]), useEffect(() => {
80
- void 0 !== working && setIsWorking(working);
81
- }, [ working ]), useEffect(() => setIsStopEnabled(stopEnabled), [ stopEnabled ]);
85
+ }, [ value ]);
82
86
  const cssVars = useMemo(() => ({
87
+ "--prompt-width": setStyle(width),
88
+ "--prompt-min-width": setStyle(minWidth, "unset"),
89
+ "--prompt-max-width": setStyle(maxWidth, "unset"),
83
90
  "--prompt-border-color": setBorderColor,
84
91
  "--prompt-max-height": maxHeight ? `${maxHeight}px` : "unset",
85
92
  "--prompt-border-width": borderWidth ? `${borderWidth}px` : "0",
86
- "--prompt-state": isWorking && borderAnimate ? "running" : "paused",
93
+ "--prompt-state": working && borderAnimate ? "running" : "paused",
87
94
  "--prompt-border-radius": borderRadius ? `${borderRadius}px` : "8px",
88
95
  "--prompt-inner-border-radius": borderRadius ? borderRadius - 1 + "px" : "7px"
89
- }), [ isWorking, borderAnimate, setBorderColor, borderWidth, borderRadius, maxHeight ]);
96
+ }), [ working, borderAnimate, setBorderColor, borderWidth, borderRadius, maxHeight, width, maxWidth, minWidth ]);
90
97
  return jsx("div", {
91
98
  className: css.wrapperBg,
92
99
  ref: ref,
@@ -137,13 +144,13 @@ const PromptInputBase = React.forwardRef((props, ref) => {
137
144
  }), sendButton && jsx(Button, {
138
145
  round: !0,
139
146
  label: void 0,
140
- variant: isStopEnabled ? "outline" : "solid",
141
- iconLeft: isStopEnabled ? "stop" : "arrow up",
142
- iconSize: isStopEnabled ? 16 : 20,
147
+ variant: stopEnabled ? "outline" : "solid",
148
+ iconLeft: stopEnabled ? "stop" : "arrow up",
149
+ iconSize: stopEnabled ? 16 : 20,
143
150
  state: sendButtonState,
144
151
  bgColorDisabled: "var(--core-outline-primary)",
145
- progress: !isStopEnabled,
146
- working: !isStopEnabled && isWorking,
152
+ progress: !stopEnabled,
153
+ working: submitWorking && working,
147
154
  onMouseDown: handleClickSend,
148
155
  iconColor: setSendIconColor
149
156
  }) ]
@@ -1,13 +1,13 @@
1
1
  'use client';
2
- import { a as __rest } from "./tslib.es6-BX2F90pK.mjs";
2
+ import { _ as __rest } from "./tslib.es6-CVvvNSPr.mjs";
3
3
 
4
4
  import { jsxs, jsx } from "react/jsx-runtime";
5
5
 
6
6
  import React, { useState, useEffect, useCallback, useMemo } from "react";
7
7
 
8
- import { s as setStyle } from "./misc-CTGTuM2J.mjs";
8
+ import { s as setStyle } from "./misc-zecH7-IH.mjs";
9
9
 
10
- import { I as Icon } from "./Icon-DjW0Krm8.mjs";
10
+ import { I as Icon } from "./Icon-L8B35JN1.mjs";
11
11
 
12
12
  var css_wrapper = "RadioButton-module_wrapper__-pWRe flexBox-module_row__z24tF", css_radioIcon = "RadioButton-module_radioIcon__I27Xv flexBox-module_column__ezvMq", css_radioTitle = "RadioButton-module_radioTitle__zCQII flexBox-module_rowStart__4tcxS type-module_body-m-regular__LuQBA", css_radioContent = "RadioButton-module_radioContent__38xVx flexBox-module_columnStart__C7P44";
13
13
 
@@ -1,13 +1,13 @@
1
1
  'use client';
2
- import { a as __rest } from "./tslib.es6-BX2F90pK.mjs";
2
+ import { _ as __rest } from "./tslib.es6-CVvvNSPr.mjs";
3
3
 
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
 
6
6
  import React, { useId, useState, useEffect, useCallback, useMemo } from "react";
7
7
 
8
- import { s as setStyle } from "./misc-CTGTuM2J.mjs";
8
+ import { s as setStyle } from "./misc-zecH7-IH.mjs";
9
9
 
10
- import { R as RadioButton } from "./RadioButton-DXq3yniV.mjs";
10
+ import { R as RadioButton } from "./RadioButton-oOGgTDhg.mjs";
11
11
 
12
12
  var css_wrapper = "RadioButtonList-module_wrapper__wnq1-", css_column = "RadioButtonList-module_column__Bq16e flexBox-module_columnStart__C7P44", css_row = "RadioButtonList-module_row__D3szq flexBox-module_rowStart__4tcxS";
13
13
 
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { a as __rest } from "./tslib.es6-BX2F90pK.mjs";
2
+ import { _ as __rest } from "./tslib.es6-CVvvNSPr.mjs";
3
3
 
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
 
@@ -7,9 +7,9 @@ import React, { useRef, useState, useMemo, useCallback, useEffect } from "react"
7
7
 
8
8
  import { useObserveResize } from "../hooks/useObserveResize.mjs";
9
9
 
10
- import { p as pointerPosition } from "./misc-CTGTuM2J.mjs";
10
+ import { p as pointerPosition } from "./misc-zecH7-IH.mjs";
11
11
 
12
- import { d as debounce } from "./debounce-D5b6tZ5a.mjs";
12
+ import { d as debounce } from "./debounce-DFxAyrPi.mjs";
13
13
 
14
14
  var css_wrapper = "Slider-module_wrapper__KCCs1", css_trackBg = "Slider-module_trackBg__7zfqm flexBox-module_rowStart__4tcxS", css_track = "Slider-module_track__kaJkL flexBox-module_rowStart__4tcxS", css_trackHead = "Slider-module_trackHead__W-UdG", css_trackWrapper = "Slider-module_trackWrapper__Ot0Wh flexBox-module_rowStart__4tcxS";
15
15
 
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { a as __rest } from "./tslib.es6-BX2F90pK.mjs";
2
+ import { _ as __rest } from "./tslib.es6-CVvvNSPr.mjs";
3
3
 
4
4
  import { jsx } from "react/jsx-runtime";
5
5
 
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { a as __rest } from "./tslib.es6-BX2F90pK.mjs";
2
+ import { _ as __rest } from "./tslib.es6-CVvvNSPr.mjs";
3
3
 
4
4
  import { jsx } from "react/jsx-runtime";
5
5