@bendyline/squisq-editor-react 1.5.1 → 1.5.3

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 (405) hide show
  1. package/dist/index.d.ts +1991 -90
  2. package/dist/index.js +17162 -82
  3. package/dist/index.js.map +1 -1
  4. package/package.json +4 -4
  5. package/src/RawEditor.tsx +49 -18
  6. package/src/VersionHistoryPanel.tsx +59 -17
  7. package/src/recorder/hooks/useMediaRecorder.ts +9 -1
  8. package/src/useMonacoLoader.ts +83 -0
  9. package/dist/DocumentSettingsDialog.d.ts +0 -26
  10. package/dist/DocumentSettingsDialog.d.ts.map +0 -1
  11. package/dist/DocumentSettingsDialog.js +0 -115
  12. package/dist/DocumentSettingsDialog.js.map +0 -1
  13. package/dist/DropZoneOverlay.d.ts +0 -24
  14. package/dist/DropZoneOverlay.d.ts.map +0 -1
  15. package/dist/DropZoneOverlay.js +0 -53
  16. package/dist/DropZoneOverlay.js.map +0 -1
  17. package/dist/EditorContext.d.ts +0 -391
  18. package/dist/EditorContext.d.ts.map +0 -1
  19. package/dist/EditorContext.js +0 -471
  20. package/dist/EditorContext.js.map +0 -1
  21. package/dist/EditorShell.d.ts +0 -328
  22. package/dist/EditorShell.d.ts.map +0 -1
  23. package/dist/EditorShell.js +0 -290
  24. package/dist/EditorShell.js.map +0 -1
  25. package/dist/EmojiPicker.d.ts +0 -50
  26. package/dist/EmojiPicker.d.ts.map +0 -1
  27. package/dist/EmojiPicker.js +0 -182
  28. package/dist/EmojiPicker.js.map +0 -1
  29. package/dist/ImageEditor.d.ts +0 -68
  30. package/dist/ImageEditor.d.ts.map +0 -1
  31. package/dist/ImageEditor.js +0 -166
  32. package/dist/ImageEditor.js.map +0 -1
  33. package/dist/ImageNodeView.d.ts +0 -27
  34. package/dist/ImageNodeView.d.ts.map +0 -1
  35. package/dist/ImageNodeView.js +0 -215
  36. package/dist/ImageNodeView.js.map +0 -1
  37. package/dist/ImageViewer.d.ts +0 -26
  38. package/dist/ImageViewer.d.ts.map +0 -1
  39. package/dist/ImageViewer.js +0 -119
  40. package/dist/ImageViewer.js.map +0 -1
  41. package/dist/InlineIcon.d.ts +0 -17
  42. package/dist/InlineIcon.d.ts.map +0 -1
  43. package/dist/InlineIcon.js +0 -72
  44. package/dist/InlineIcon.js.map +0 -1
  45. package/dist/InlinePreviewGutter.d.ts +0 -52
  46. package/dist/InlinePreviewGutter.d.ts.map +0 -1
  47. package/dist/InlinePreviewGutter.js +0 -397
  48. package/dist/InlinePreviewGutter.js.map +0 -1
  49. package/dist/LinkDialog.d.ts +0 -43
  50. package/dist/LinkDialog.d.ts.map +0 -1
  51. package/dist/LinkDialog.js +0 -102
  52. package/dist/LinkDialog.js.map +0 -1
  53. package/dist/MediaBin.d.ts +0 -29
  54. package/dist/MediaBin.d.ts.map +0 -1
  55. package/dist/MediaBin.js +0 -166
  56. package/dist/MediaBin.js.map +0 -1
  57. package/dist/MentionExtension.d.ts +0 -22
  58. package/dist/MentionExtension.d.ts.map +0 -1
  59. package/dist/MentionExtension.js +0 -245
  60. package/dist/MentionExtension.js.map +0 -1
  61. package/dist/OutlinePanel.d.ts +0 -17
  62. package/dist/OutlinePanel.d.ts.map +0 -1
  63. package/dist/OutlinePanel.js +0 -167
  64. package/dist/OutlinePanel.js.map +0 -1
  65. package/dist/PlainHtmlPreview.d.ts +0 -50
  66. package/dist/PlainHtmlPreview.d.ts.map +0 -1
  67. package/dist/PlainHtmlPreview.js +0 -155
  68. package/dist/PlainHtmlPreview.js.map +0 -1
  69. package/dist/PreviewControls.d.ts +0 -55
  70. package/dist/PreviewControls.d.ts.map +0 -1
  71. package/dist/PreviewControls.js +0 -277
  72. package/dist/PreviewControls.js.map +0 -1
  73. package/dist/PreviewPanel.d.ts +0 -29
  74. package/dist/PreviewPanel.d.ts.map +0 -1
  75. package/dist/PreviewPanel.js +0 -94
  76. package/dist/PreviewPanel.js.map +0 -1
  77. package/dist/RawEditor.d.ts +0 -32
  78. package/dist/RawEditor.d.ts.map +0 -1
  79. package/dist/RawEditor.js +0 -440
  80. package/dist/RawEditor.js.map +0 -1
  81. package/dist/RecorderEntry.d.ts +0 -24
  82. package/dist/RecorderEntry.d.ts.map +0 -1
  83. package/dist/RecorderEntry.js +0 -139
  84. package/dist/RecorderEntry.js.map +0 -1
  85. package/dist/StatusBar.d.ts +0 -15
  86. package/dist/StatusBar.d.ts.map +0 -1
  87. package/dist/StatusBar.js +0 -24
  88. package/dist/StatusBar.js.map +0 -1
  89. package/dist/TemplateAnnotation.d.ts +0 -20
  90. package/dist/TemplateAnnotation.d.ts.map +0 -1
  91. package/dist/TemplateAnnotation.js +0 -97
  92. package/dist/TemplateAnnotation.js.map +0 -1
  93. package/dist/TemplatePicker.d.ts +0 -53
  94. package/dist/TemplatePicker.d.ts.map +0 -1
  95. package/dist/TemplatePicker.js +0 -388
  96. package/dist/TemplatePicker.js.map +0 -1
  97. package/dist/ThemeCustomizerPanel.d.ts +0 -32
  98. package/dist/ThemeCustomizerPanel.d.ts.map +0 -1
  99. package/dist/ThemeCustomizerPanel.js +0 -256
  100. package/dist/ThemeCustomizerPanel.js.map +0 -1
  101. package/dist/ThemePicker.d.ts +0 -33
  102. package/dist/ThemePicker.d.ts.map +0 -1
  103. package/dist/ThemePicker.js +0 -148
  104. package/dist/ThemePicker.js.map +0 -1
  105. package/dist/Toolbar.d.ts +0 -36
  106. package/dist/Toolbar.d.ts.map +0 -1
  107. package/dist/Toolbar.js +0 -1001
  108. package/dist/Toolbar.js.map +0 -1
  109. package/dist/Tooltip.d.ts +0 -10
  110. package/dist/Tooltip.d.ts.map +0 -1
  111. package/dist/Tooltip.js +0 -104
  112. package/dist/Tooltip.js.map +0 -1
  113. package/dist/VersionHistoryPanel.d.ts +0 -14
  114. package/dist/VersionHistoryPanel.d.ts.map +0 -1
  115. package/dist/VersionHistoryPanel.js +0 -147
  116. package/dist/VersionHistoryPanel.js.map +0 -1
  117. package/dist/ViewMenuPanel.d.ts +0 -13
  118. package/dist/ViewMenuPanel.d.ts.map +0 -1
  119. package/dist/ViewMenuPanel.js +0 -58
  120. package/dist/ViewMenuPanel.js.map +0 -1
  121. package/dist/ViewSwitcher.d.ts +0 -14
  122. package/dist/ViewSwitcher.d.ts.map +0 -1
  123. package/dist/ViewSwitcher.js +0 -26
  124. package/dist/ViewSwitcher.js.map +0 -1
  125. package/dist/WysiwygEditor.d.ts +0 -39
  126. package/dist/WysiwygEditor.d.ts.map +0 -1
  127. package/dist/WysiwygEditor.js +0 -537
  128. package/dist/WysiwygEditor.js.map +0 -1
  129. package/dist/__tests__/detectMarkdown.test.d.ts +0 -2
  130. package/dist/__tests__/detectMarkdown.test.d.ts.map +0 -1
  131. package/dist/__tests__/detectMarkdown.test.js +0 -55
  132. package/dist/__tests__/detectMarkdown.test.js.map +0 -1
  133. package/dist/__tests__/documentSettingsDialog.test.d.ts +0 -2
  134. package/dist/__tests__/documentSettingsDialog.test.d.ts.map +0 -1
  135. package/dist/__tests__/documentSettingsDialog.test.js +0 -132
  136. package/dist/__tests__/documentSettingsDialog.test.js.map +0 -1
  137. package/dist/__tests__/emojiPicker.test.d.ts +0 -2
  138. package/dist/__tests__/emojiPicker.test.d.ts.map +0 -1
  139. package/dist/__tests__/emojiPicker.test.js +0 -111
  140. package/dist/__tests__/emojiPicker.test.js.map +0 -1
  141. package/dist/__tests__/fileKind.test.d.ts +0 -2
  142. package/dist/__tests__/fileKind.test.d.ts.map +0 -1
  143. package/dist/__tests__/fileKind.test.js +0 -94
  144. package/dist/__tests__/fileKind.test.js.map +0 -1
  145. package/dist/__tests__/imageEditAffordance.test.d.ts +0 -2
  146. package/dist/__tests__/imageEditAffordance.test.d.ts.map +0 -1
  147. package/dist/__tests__/imageEditAffordance.test.js +0 -188
  148. package/dist/__tests__/imageEditAffordance.test.js.map +0 -1
  149. package/dist/__tests__/imageEditorShell.test.d.ts +0 -2
  150. package/dist/__tests__/imageEditorShell.test.d.ts.map +0 -1
  151. package/dist/__tests__/imageEditorShell.test.js +0 -52
  152. package/dist/__tests__/imageEditorShell.test.js.map +0 -1
  153. package/dist/__tests__/imageEditorState.test.d.ts +0 -3
  154. package/dist/__tests__/imageEditorState.test.d.ts.map +0 -1
  155. package/dist/__tests__/imageEditorState.test.js +0 -148
  156. package/dist/__tests__/imageEditorState.test.js.map +0 -1
  157. package/dist/__tests__/inlinePreviewGutter.test.d.ts +0 -2
  158. package/dist/__tests__/inlinePreviewGutter.test.d.ts.map +0 -1
  159. package/dist/__tests__/inlinePreviewGutter.test.js +0 -51
  160. package/dist/__tests__/inlinePreviewGutter.test.js.map +0 -1
  161. package/dist/__tests__/inlinePreviewGutterAllBlocks.test.d.ts +0 -2
  162. package/dist/__tests__/inlinePreviewGutterAllBlocks.test.d.ts.map +0 -1
  163. package/dist/__tests__/inlinePreviewGutterAllBlocks.test.js +0 -63
  164. package/dist/__tests__/inlinePreviewGutterAllBlocks.test.js.map +0 -1
  165. package/dist/__tests__/jsonEditor.test.d.ts +0 -2
  166. package/dist/__tests__/jsonEditor.test.d.ts.map +0 -1
  167. package/dist/__tests__/jsonEditor.test.js +0 -134
  168. package/dist/__tests__/jsonEditor.test.js.map +0 -1
  169. package/dist/__tests__/layersPanel.test.d.ts +0 -2
  170. package/dist/__tests__/layersPanel.test.d.ts.map +0 -1
  171. package/dist/__tests__/layersPanel.test.js +0 -84
  172. package/dist/__tests__/layersPanel.test.js.map +0 -1
  173. package/dist/__tests__/linkDialogDocPicker.test.d.ts +0 -7
  174. package/dist/__tests__/linkDialogDocPicker.test.d.ts.map +0 -1
  175. package/dist/__tests__/linkDialogDocPicker.test.js +0 -75
  176. package/dist/__tests__/linkDialogDocPicker.test.js.map +0 -1
  177. package/dist/__tests__/mediaAttachmentFlow.test.d.ts +0 -2
  178. package/dist/__tests__/mediaAttachmentFlow.test.d.ts.map +0 -1
  179. package/dist/__tests__/mediaAttachmentFlow.test.js +0 -99
  180. package/dist/__tests__/mediaAttachmentFlow.test.js.map +0 -1
  181. package/dist/__tests__/outlinePanel.test.d.ts +0 -2
  182. package/dist/__tests__/outlinePanel.test.d.ts.map +0 -1
  183. package/dist/__tests__/outlinePanel.test.js +0 -68
  184. package/dist/__tests__/outlinePanel.test.js.map +0 -1
  185. package/dist/__tests__/plainHtmlPreview.test.d.ts +0 -2
  186. package/dist/__tests__/plainHtmlPreview.test.d.ts.map +0 -1
  187. package/dist/__tests__/plainHtmlPreview.test.js +0 -87
  188. package/dist/__tests__/plainHtmlPreview.test.js.map +0 -1
  189. package/dist/__tests__/propertiesPanel.test.d.ts +0 -2
  190. package/dist/__tests__/propertiesPanel.test.d.ts.map +0 -1
  191. package/dist/__tests__/propertiesPanel.test.js +0 -64
  192. package/dist/__tests__/propertiesPanel.test.js.map +0 -1
  193. package/dist/__tests__/recorderFormats.test.d.ts +0 -2
  194. package/dist/__tests__/recorderFormats.test.d.ts.map +0 -1
  195. package/dist/__tests__/recorderFormats.test.js +0 -121
  196. package/dist/__tests__/recorderFormats.test.js.map +0 -1
  197. package/dist/__tests__/recorderTimingJson.test.d.ts +0 -2
  198. package/dist/__tests__/recorderTimingJson.test.d.ts.map +0 -1
  199. package/dist/__tests__/recorderTimingJson.test.js +0 -37
  200. package/dist/__tests__/recorderTimingJson.test.js.map +0 -1
  201. package/dist/__tests__/templateAnnotationRoundTrip.test.d.ts +0 -2
  202. package/dist/__tests__/templateAnnotationRoundTrip.test.d.ts.map +0 -1
  203. package/dist/__tests__/templateAnnotationRoundTrip.test.js +0 -31
  204. package/dist/__tests__/templateAnnotationRoundTrip.test.js.map +0 -1
  205. package/dist/__tests__/tiptapBridge.test.d.ts +0 -2
  206. package/dist/__tests__/tiptapBridge.test.d.ts.map +0 -1
  207. package/dist/__tests__/tiptapBridge.test.js +0 -303
  208. package/dist/__tests__/tiptapBridge.test.js.map +0 -1
  209. package/dist/__tests__/tiptapImageRoundTrip.test.d.ts +0 -2
  210. package/dist/__tests__/tiptapImageRoundTrip.test.d.ts.map +0 -1
  211. package/dist/__tests__/tiptapImageRoundTrip.test.js +0 -68
  212. package/dist/__tests__/tiptapImageRoundTrip.test.js.map +0 -1
  213. package/dist/__tests__/useImageEditor.test.d.ts +0 -2
  214. package/dist/__tests__/useImageEditor.test.d.ts.map +0 -1
  215. package/dist/__tests__/useImageEditor.test.js +0 -131
  216. package/dist/__tests__/useImageEditor.test.js.map +0 -1
  217. package/dist/__tests__/useMediaRecorder.test.d.ts +0 -2
  218. package/dist/__tests__/useMediaRecorder.test.d.ts.map +0 -1
  219. package/dist/__tests__/useMediaRecorder.test.js +0 -153
  220. package/dist/__tests__/useMediaRecorder.test.js.map +0 -1
  221. package/dist/__tests__/versionHistory.test.d.ts +0 -2
  222. package/dist/__tests__/versionHistory.test.d.ts.map +0 -1
  223. package/dist/__tests__/versionHistory.test.js +0 -124
  224. package/dist/__tests__/versionHistory.test.js.map +0 -1
  225. package/dist/blockSlice.d.ts +0 -24
  226. package/dist/blockSlice.d.ts.map +0 -1
  227. package/dist/blockSlice.js +0 -63
  228. package/dist/blockSlice.js.map +0 -1
  229. package/dist/buildPreviewDoc.d.ts +0 -22
  230. package/dist/buildPreviewDoc.d.ts.map +0 -1
  231. package/dist/buildPreviewDoc.js +0 -262
  232. package/dist/buildPreviewDoc.js.map +0 -1
  233. package/dist/detectMarkdown.d.ts +0 -20
  234. package/dist/detectMarkdown.d.ts.map +0 -1
  235. package/dist/detectMarkdown.js +0 -61
  236. package/dist/detectMarkdown.js.map +0 -1
  237. package/dist/emojiData.d.ts +0 -81
  238. package/dist/emojiData.d.ts.map +0 -1
  239. package/dist/emojiData.js +0 -1283
  240. package/dist/emojiData.js.map +0 -1
  241. package/dist/fileKind.d.ts +0 -34
  242. package/dist/fileKind.d.ts.map +0 -1
  243. package/dist/fileKind.js +0 -144
  244. package/dist/fileKind.js.map +0 -1
  245. package/dist/hooks/useFileDrop.d.ts +0 -41
  246. package/dist/hooks/useFileDrop.d.ts.map +0 -1
  247. package/dist/hooks/useFileDrop.js +0 -205
  248. package/dist/hooks/useFileDrop.js.map +0 -1
  249. package/dist/imageEditor/CanvasSurface.d.ts +0 -31
  250. package/dist/imageEditor/CanvasSurface.d.ts.map +0 -1
  251. package/dist/imageEditor/CanvasSurface.js +0 -264
  252. package/dist/imageEditor/CanvasSurface.js.map +0 -1
  253. package/dist/imageEditor/ImageVersionHistoryDropdown.d.ts +0 -39
  254. package/dist/imageEditor/ImageVersionHistoryDropdown.d.ts.map +0 -1
  255. package/dist/imageEditor/ImageVersionHistoryDropdown.js +0 -283
  256. package/dist/imageEditor/ImageVersionHistoryDropdown.js.map +0 -1
  257. package/dist/imageEditor/LayersPanel.d.ts +0 -14
  258. package/dist/imageEditor/LayersPanel.d.ts.map +0 -1
  259. package/dist/imageEditor/LayersPanel.js +0 -43
  260. package/dist/imageEditor/LayersPanel.js.map +0 -1
  261. package/dist/imageEditor/PropertiesPanel.d.ts +0 -14
  262. package/dist/imageEditor/PropertiesPanel.d.ts.map +0 -1
  263. package/dist/imageEditor/PropertiesPanel.js +0 -97
  264. package/dist/imageEditor/PropertiesPanel.js.map +0 -1
  265. package/dist/imageEditor/Toolbar.d.ts +0 -30
  266. package/dist/imageEditor/Toolbar.d.ts.map +0 -1
  267. package/dist/imageEditor/Toolbar.js +0 -108
  268. package/dist/imageEditor/Toolbar.js.map +0 -1
  269. package/dist/imageEditor/icons.d.ts +0 -24
  270. package/dist/imageEditor/icons.d.ts.map +0 -1
  271. package/dist/imageEditor/icons.js +0 -45
  272. package/dist/imageEditor/icons.js.map +0 -1
  273. package/dist/imageEditor/layers/EditorImageLayer.d.ts +0 -16
  274. package/dist/imageEditor/layers/EditorImageLayer.d.ts.map +0 -1
  275. package/dist/imageEditor/layers/EditorImageLayer.js +0 -37
  276. package/dist/imageEditor/layers/EditorImageLayer.js.map +0 -1
  277. package/dist/imageEditor/layers/EditorShapeLayer.d.ts +0 -15
  278. package/dist/imageEditor/layers/EditorShapeLayer.d.ts.map +0 -1
  279. package/dist/imageEditor/layers/EditorShapeLayer.js +0 -20
  280. package/dist/imageEditor/layers/EditorShapeLayer.js.map +0 -1
  281. package/dist/imageEditor/layers/EditorTextLayer.d.ts +0 -18
  282. package/dist/imageEditor/layers/EditorTextLayer.d.ts.map +0 -1
  283. package/dist/imageEditor/layers/EditorTextLayer.js +0 -13
  284. package/dist/imageEditor/layers/EditorTextLayer.js.map +0 -1
  285. package/dist/imageEditor/layers/SelectionHandles.d.ts +0 -17
  286. package/dist/imageEditor/layers/SelectionHandles.d.ts.map +0 -1
  287. package/dist/imageEditor/layers/SelectionHandles.js +0 -19
  288. package/dist/imageEditor/layers/SelectionHandles.js.map +0 -1
  289. package/dist/imageEditor/state.d.ts +0 -76
  290. package/dist/imageEditor/state.d.ts.map +0 -1
  291. package/dist/imageEditor/state.js +0 -87
  292. package/dist/imageEditor/state.js.map +0 -1
  293. package/dist/imageEditor/useImageEditor.d.ts +0 -53
  294. package/dist/imageEditor/useImageEditor.d.ts.map +0 -1
  295. package/dist/imageEditor/useImageEditor.js +0 -244
  296. package/dist/imageEditor/useImageEditor.js.map +0 -1
  297. package/dist/imageEditor/useImageEditorTokens.d.ts +0 -16
  298. package/dist/imageEditor/useImageEditorTokens.d.ts.map +0 -1
  299. package/dist/imageEditor/useImageEditorTokens.js +0 -45
  300. package/dist/imageEditor/useImageEditorTokens.js.map +0 -1
  301. package/dist/index.d.ts.map +0 -1
  302. package/dist/jsonEditor/EmbeddedRichTextField.d.ts +0 -15
  303. package/dist/jsonEditor/EmbeddedRichTextField.d.ts.map +0 -1
  304. package/dist/jsonEditor/EmbeddedRichTextField.js +0 -74
  305. package/dist/jsonEditor/EmbeddedRichTextField.js.map +0 -1
  306. package/dist/jsonEditor/JsonEditor.d.ts +0 -36
  307. package/dist/jsonEditor/JsonEditor.d.ts.map +0 -1
  308. package/dist/jsonEditor/JsonEditor.js +0 -15
  309. package/dist/jsonEditor/JsonEditor.js.map +0 -1
  310. package/dist/jsonEditor/JsonEditorContext.d.ts +0 -28
  311. package/dist/jsonEditor/JsonEditorContext.d.ts.map +0 -1
  312. package/dist/jsonEditor/JsonEditorContext.js +0 -41
  313. package/dist/jsonEditor/JsonEditorContext.js.map +0 -1
  314. package/dist/jsonEditor/RenderNode.d.ts +0 -16
  315. package/dist/jsonEditor/RenderNode.d.ts.map +0 -1
  316. package/dist/jsonEditor/RenderNode.js +0 -32
  317. package/dist/jsonEditor/RenderNode.js.map +0 -1
  318. package/dist/jsonEditor/editors.d.ts +0 -36
  319. package/dist/jsonEditor/editors.d.ts.map +0 -1
  320. package/dist/jsonEditor/editors.js +0 -347
  321. package/dist/jsonEditor/editors.js.map +0 -1
  322. package/dist/jsonEditor/index.d.ts +0 -3
  323. package/dist/jsonEditor/index.d.ts.map +0 -1
  324. package/dist/jsonEditor/index.js +0 -2
  325. package/dist/jsonEditor/index.js.map +0 -1
  326. package/dist/jsonEditor/useJsonEditorTokens.d.ts +0 -13
  327. package/dist/jsonEditor/useJsonEditorTokens.d.ts.map +0 -1
  328. package/dist/jsonEditor/useJsonEditorTokens.js +0 -38
  329. package/dist/jsonEditor/useJsonEditorTokens.js.map +0 -1
  330. package/dist/mediaDragMime.d.ts +0 -17
  331. package/dist/mediaDragMime.d.ts.map +0 -1
  332. package/dist/mediaDragMime.js +0 -22
  333. package/dist/mediaDragMime.js.map +0 -1
  334. package/dist/recorder/RecorderButton.d.ts +0 -31
  335. package/dist/recorder/RecorderButton.d.ts.map +0 -1
  336. package/dist/recorder/RecorderButton.js +0 -24
  337. package/dist/recorder/RecorderButton.js.map +0 -1
  338. package/dist/recorder/RecorderModal.d.ts +0 -59
  339. package/dist/recorder/RecorderModal.d.ts.map +0 -1
  340. package/dist/recorder/RecorderModal.js +0 -333
  341. package/dist/recorder/RecorderModal.js.map +0 -1
  342. package/dist/recorder/RecorderPanel.d.ts +0 -25
  343. package/dist/recorder/RecorderPanel.d.ts.map +0 -1
  344. package/dist/recorder/RecorderPanel.js +0 -30
  345. package/dist/recorder/RecorderPanel.js.map +0 -1
  346. package/dist/recorder/formats.d.ts +0 -51
  347. package/dist/recorder/formats.d.ts.map +0 -1
  348. package/dist/recorder/formats.js +0 -144
  349. package/dist/recorder/formats.js.map +0 -1
  350. package/dist/recorder/hooks/useMediaRecorder.d.ts +0 -90
  351. package/dist/recorder/hooks/useMediaRecorder.d.ts.map +0 -1
  352. package/dist/recorder/hooks/useMediaRecorder.js +0 -277
  353. package/dist/recorder/hooks/useMediaRecorder.js.map +0 -1
  354. package/dist/recorder/hooks/useStreamPreview.d.ts +0 -22
  355. package/dist/recorder/hooks/useStreamPreview.d.ts.map +0 -1
  356. package/dist/recorder/hooks/useStreamPreview.js +0 -44
  357. package/dist/recorder/hooks/useStreamPreview.js.map +0 -1
  358. package/dist/recorder/sources/cameraStream.d.ts +0 -22
  359. package/dist/recorder/sources/cameraStream.d.ts.map +0 -1
  360. package/dist/recorder/sources/cameraStream.js +0 -24
  361. package/dist/recorder/sources/cameraStream.js.map +0 -1
  362. package/dist/recorder/sources/micStream.d.ts +0 -15
  363. package/dist/recorder/sources/micStream.d.ts.map +0 -1
  364. package/dist/recorder/sources/micStream.js +0 -24
  365. package/dist/recorder/sources/micStream.js.map +0 -1
  366. package/dist/recorder/sources/screenStream.d.ts +0 -53
  367. package/dist/recorder/sources/screenStream.d.ts.map +0 -1
  368. package/dist/recorder/sources/screenStream.js +0 -114
  369. package/dist/recorder/sources/screenStream.js.map +0 -1
  370. package/dist/recorder/timingJson.d.ts +0 -51
  371. package/dist/recorder/timingJson.d.ts.map +0 -1
  372. package/dist/recorder/timingJson.js +0 -42
  373. package/dist/recorder/timingJson.js.map +0 -1
  374. package/dist/tiptap/TiptapAudio.d.ts +0 -26
  375. package/dist/tiptap/TiptapAudio.d.ts.map +0 -1
  376. package/dist/tiptap/TiptapAudio.js +0 -58
  377. package/dist/tiptap/TiptapAudio.js.map +0 -1
  378. package/dist/tiptap/TiptapVideo.d.ts +0 -30
  379. package/dist/tiptap/TiptapVideo.d.ts.map +0 -1
  380. package/dist/tiptap/TiptapVideo.js +0 -66
  381. package/dist/tiptap/TiptapVideo.js.map +0 -1
  382. package/dist/tiptap/useResolvedMediaSrc.d.ts +0 -2
  383. package/dist/tiptap/useResolvedMediaSrc.d.ts.map +0 -1
  384. package/dist/tiptap/useResolvedMediaSrc.js +0 -42
  385. package/dist/tiptap/useResolvedMediaSrc.js.map +0 -1
  386. package/dist/tiptapBridge.d.ts +0 -24
  387. package/dist/tiptapBridge.d.ts.map +0 -1
  388. package/dist/tiptapBridge.js +0 -749
  389. package/dist/tiptapBridge.js.map +0 -1
  390. package/dist/useHeadingLayout.d.ts +0 -54
  391. package/dist/useHeadingLayout.d.ts.map +0 -1
  392. package/dist/useHeadingLayout.js +0 -260
  393. package/dist/useHeadingLayout.js.map +0 -1
  394. package/dist/utils/collectInlineFontAwesomeCss.d.ts +0 -21
  395. package/dist/utils/collectInlineFontAwesomeCss.d.ts.map +0 -1
  396. package/dist/utils/collectInlineFontAwesomeCss.js +0 -68
  397. package/dist/utils/collectInlineFontAwesomeCss.js.map +0 -1
  398. package/dist/utils/dropUtils.d.ts +0 -55
  399. package/dist/utils/dropUtils.d.ts.map +0 -1
  400. package/dist/utils/dropUtils.js +0 -110
  401. package/dist/utils/dropUtils.js.map +0 -1
  402. package/dist/utils/normalizeMalformedAssetUrl.d.ts +0 -15
  403. package/dist/utils/normalizeMalformedAssetUrl.d.ts.map +0 -1
  404. package/dist/utils/normalizeMalformedAssetUrl.js +0 -27
  405. package/dist/utils/normalizeMalformedAssetUrl.js.map +0 -1
@@ -1,59 +0,0 @@
1
- /**
2
- * RecorderModal — configure-and-capture dialog for browser-based audio,
3
- * camera, and screen recording.
4
- *
5
- * States: configure (pick mode + optional script) → previewing (acquired
6
- * stream, not yet recording) → recording → review (blob in hand) → saved
7
- * | error. The user can cancel from any state.
8
- *
9
- * Persists the captured `Blob` into the supplied `MediaProvider` and,
10
- * for narration mode, writes a `.timing.json` sidecar so
11
- * `resolveAudioMapping()` in `@bendyline/squisq` picks it up at the next
12
- * doc parse.
13
- *
14
- * Visual conventions match `VideoExportModal` from `@bendyline/squisq-
15
- * video-react` (cream / gold palette, inline styles, no external CSS).
16
- */
17
- import type { MediaProvider } from '@bendyline/squisq/schemas';
18
- import type { ContentContainer } from '@bendyline/squisq/storage';
19
- import { type RecorderSource } from './hooks/useMediaRecorder.js';
20
- export interface RecorderModalProps {
21
- /** Required — recordings are written here. */
22
- mediaProvider: MediaProvider;
23
- /**
24
- * Optional — when provided, narration-mode recordings drop a
25
- * `.timing.json` sidecar at the matching container path so
26
- * `resolveAudioMapping()` can auto-link them. Without it, only the
27
- * raw recording is saved.
28
- */
29
- container?: ContentContainer | null;
30
- /** Initial capture source. Defaults to `'mic'` (narration). */
31
- initialMode?: RecorderSource;
32
- /** Called after the modal is dismissed (save or cancel). */
33
- onClose: () => void;
34
- /**
35
- * Fired after a successful save. Hosts typically use this to insert a
36
- * markdown reference at the cursor — see {@link RecorderSaveResult}
37
- * for the fields a host needs to build that reference.
38
- */
39
- onSave?: (result: RecorderSaveResult) => void;
40
- }
41
- /** Payload handed to {@link RecorderModalProps.onSave} on a successful save. */
42
- export interface RecorderSaveResult {
43
- /** Path returned by `mediaProvider.addMedia()` — what the doc should reference. */
44
- relativePath: string;
45
- /** Filename the modal chose (e.g. `narration-20260516-091200.webm`). */
46
- filename: string;
47
- /** Capture source the user picked. */
48
- source: RecorderSource;
49
- /** MIME type of the saved blob. */
50
- mimeType: string;
51
- /** Recording length in seconds. */
52
- duration: number;
53
- /** Whether a narration sidecar was written. Always `false` for video sources. */
54
- hasTimingSidecar: boolean;
55
- /** Script text the user typed (narration only). */
56
- sourceText?: string;
57
- }
58
- export declare function RecorderModal({ mediaProvider, container, initialMode, onClose, onSave, }: RecorderModalProps): import("react/jsx-runtime").JSX.Element;
59
- //# sourceMappingURL=RecorderModal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecorderModal.d.ts","sourceRoot":"","sources":["../../src/recorder/RecorderModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAOpF,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,aAAa,EAAE,aAAa,CAAC;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,4DAA4D;IAC5D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC/C;AAED,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA2LD,wBAAgB,aAAa,CAAC,EAC5B,aAAa,EACb,SAAgB,EAChB,WAAmB,EACnB,OAAO,EACP,MAAM,GACP,EAAE,kBAAkB,2CAiVpB"}
@@ -1,333 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * RecorderModal — configure-and-capture dialog for browser-based audio,
4
- * camera, and screen recording.
5
- *
6
- * States: configure (pick mode + optional script) → previewing (acquired
7
- * stream, not yet recording) → recording → review (blob in hand) → saved
8
- * | error. The user can cancel from any state.
9
- *
10
- * Persists the captured `Blob` into the supplied `MediaProvider` and,
11
- * for narration mode, writes a `.timing.json` sidecar so
12
- * `resolveAudioMapping()` in `@bendyline/squisq` picks it up at the next
13
- * doc parse.
14
- *
15
- * Visual conventions match `VideoExportModal` from `@bendyline/squisq-
16
- * video-react` (cream / gold palette, inline styles, no external CSS).
17
- */
18
- import { useCallback, useEffect, useRef, useState } from 'react';
19
- import { useMediaRecorder } from './hooks/useMediaRecorder.js';
20
- import { useStreamPreview } from './hooks/useStreamPreview.js';
21
- import { buildFilename } from './formats.js';
22
- import { buildTimingJson, encodeTimingJson, timingPathFor } from './timingJson.js';
23
- // ── Styles ─────────────────────────────────────────────────────────
24
- const overlayStyle = {
25
- position: 'fixed',
26
- inset: 0,
27
- background: 'rgba(0, 0, 0, 0.5)',
28
- display: 'flex',
29
- alignItems: 'center',
30
- justifyContent: 'center',
31
- zIndex: 10000,
32
- };
33
- const modalStyle = {
34
- background: '#FFFDF7',
35
- border: '1px solid #c9b98a',
36
- borderRadius: 0,
37
- padding: '24px 28px',
38
- width: 'min(560px, calc(100vw - 48px))',
39
- maxHeight: 'calc(100vh - 48px)',
40
- overflowY: 'auto',
41
- boxShadow: '0 8px 32px rgba(0,0,0,0.18)',
42
- fontFamily: 'system-ui, -apple-system, sans-serif',
43
- color: '#4a3c1f',
44
- };
45
- const titleStyle = {
46
- margin: '0 0 16px 0',
47
- fontSize: 18,
48
- fontWeight: 600,
49
- color: '#2d2310',
50
- };
51
- const labelStyle = {
52
- display: 'block',
53
- fontSize: 13,
54
- fontWeight: 500,
55
- marginBottom: 4,
56
- color: '#5a4a2a',
57
- };
58
- const inputStyle = {
59
- width: '100%',
60
- padding: '6px 8px',
61
- fontSize: 13,
62
- fontFamily: 'inherit',
63
- border: '1px solid #c9b98a',
64
- borderRadius: 0,
65
- background: '#fff',
66
- color: '#4a3c1f',
67
- marginBottom: 12,
68
- boxSizing: 'border-box',
69
- };
70
- const textareaStyle = {
71
- ...inputStyle,
72
- resize: 'vertical',
73
- minHeight: 72,
74
- };
75
- const btnPrimary = {
76
- padding: '8px 20px',
77
- fontSize: 14,
78
- fontFamily: 'inherit',
79
- fontWeight: 500,
80
- cursor: 'pointer',
81
- background: '#8B6914',
82
- color: '#fff',
83
- border: '1px solid #7a5c10',
84
- borderRadius: 0,
85
- };
86
- const btnSecondary = {
87
- padding: '8px 20px',
88
- fontSize: 14,
89
- fontFamily: 'inherit',
90
- fontWeight: 500,
91
- cursor: 'pointer',
92
- background: '#E8DFC6',
93
- color: '#4a3c1f',
94
- border: '1px solid #c9b98a',
95
- borderRadius: 0,
96
- };
97
- const btnDanger = {
98
- ...btnPrimary,
99
- background: '#B33A3A',
100
- borderColor: '#902929',
101
- };
102
- const tabRowStyle = {
103
- display: 'flex',
104
- gap: 4,
105
- marginBottom: 16,
106
- borderBottom: '1px solid #c9b98a',
107
- };
108
- const tabBase = {
109
- padding: '6px 12px',
110
- fontSize: 13,
111
- fontFamily: 'inherit',
112
- cursor: 'pointer',
113
- background: 'transparent',
114
- color: '#5a4a2a',
115
- border: 'none',
116
- borderBottom: '2px solid transparent',
117
- marginBottom: -1,
118
- };
119
- const tabActive = {
120
- ...tabBase,
121
- color: '#2d2310',
122
- fontWeight: 600,
123
- // Use the `borderBottom` shorthand (not `borderBottomColor` longhand)
124
- // so React's style diff cleanly resets the underline when this tab
125
- // goes inactive — mixing shorthand + longhand can leave the old
126
- // color stuck on a previously-active tab between renders.
127
- borderBottom: '2px solid #8B6914',
128
- };
129
- const previewBoxStyle = {
130
- width: '100%',
131
- background: '#000',
132
- borderRadius: 0,
133
- marginBottom: 12,
134
- overflow: 'hidden',
135
- aspectRatio: '16 / 9',
136
- display: 'flex',
137
- alignItems: 'center',
138
- justifyContent: 'center',
139
- color: '#888',
140
- fontSize: 13,
141
- };
142
- const audioMeterStyle = {
143
- width: '100%',
144
- height: 56,
145
- background: '#F2EBD9',
146
- border: '1px solid #c9b98a',
147
- marginBottom: 12,
148
- display: 'flex',
149
- alignItems: 'center',
150
- justifyContent: 'center',
151
- color: '#5a4a2a',
152
- fontSize: 13,
153
- fontVariantNumeric: 'tabular-nums',
154
- };
155
- const errorStyle = {
156
- background: '#FCEEEE',
157
- border: '1px solid #D88A8A',
158
- color: '#8C2A2A',
159
- padding: '8px 10px',
160
- fontSize: 13,
161
- marginBottom: 12,
162
- };
163
- const buttonRowStyle = {
164
- display: 'flex',
165
- gap: 8,
166
- justifyContent: 'flex-end',
167
- marginTop: 8,
168
- };
169
- // ── Helpers ────────────────────────────────────────────────────────
170
- function formatDurationMs(ms) {
171
- const totalSec = Math.floor(ms / 1000);
172
- const m = Math.floor(totalSec / 60);
173
- const s = totalSec % 60;
174
- return `${m}:${s.toString().padStart(2, '0')}`;
175
- }
176
- const TABS = [
177
- {
178
- id: 'mic',
179
- label: 'Narration',
180
- description: 'Voice-only audio. Pairs with a written script for auto-mapping to blocks.',
181
- },
182
- { id: 'camera', label: 'Camera', description: 'Camera + microphone. Saved as a video clip.' },
183
- { id: 'screen', label: 'Screen', description: 'Screen capture. System audio when available.' },
184
- { id: 'screen+mic', label: 'Screen + Mic', description: 'Screen with your microphone mixed in.' },
185
- ];
186
- // ── Component ──────────────────────────────────────────────────────
187
- export function RecorderModal({ mediaProvider, container = null, initialMode = 'mic', onClose, onSave, }) {
188
- const [source, setSource] = useState(initialMode);
189
- const [sourceText, setSourceText] = useState('');
190
- const [basename, setBasename] = useState('');
191
- const [includeSystemAudio, setIncludeSystemAudio] = useState(false);
192
- const [isSaving, setIsSaving] = useState(false);
193
- const [saveError, setSaveError] = useState(null);
194
- const [playbackUrl, setPlaybackUrl] = useState(null);
195
- const previewRef = useRef(null);
196
- const recorder = useMediaRecorder({
197
- source,
198
- systemAudio: source === 'screen' || source === 'screen+mic' ? includeSystemAudio : false,
199
- });
200
- useStreamPreview(previewRef, recorder.state === 'stopped' ? null : recorder.stream);
201
- // Generate (and later revoke) a blob URL for the recorded clip so the
202
- // playback element has something to point at. The dependency on the
203
- // blob identity means a new URL is created every time a fresh
204
- // recording lands, and the cleanup callback revokes the previous one.
205
- useEffect(() => {
206
- if (!recorder.blob) {
207
- setPlaybackUrl(null);
208
- return;
209
- }
210
- const url = URL.createObjectURL(recorder.blob);
211
- setPlaybackUrl(url);
212
- return () => {
213
- URL.revokeObjectURL(url);
214
- };
215
- }, [recorder.blob]);
216
- // Switching capture source mid-session: tear down whatever stream/
217
- // recorder we had so the new mode acquires a fresh one. The hook
218
- // already handles its own internal teardown on unmount; cancel()
219
- // here covers in-place source changes.
220
- const previousSourceRef = useRef(source);
221
- useEffect(() => {
222
- if (previousSourceRef.current !== source) {
223
- previousSourceRef.current = source;
224
- recorder.cancel();
225
- }
226
- }, [source, recorder]);
227
- // Make sure tearing down the modal always releases the camera /
228
- // screen-capture indicator. The hook's own unmount effect handles
229
- // this, but we also kill the stream eagerly on close so a slow
230
- // unmount doesn't leave the indicator lit between renders.
231
- const handleClose = useCallback(() => {
232
- recorder.cancel();
233
- onClose();
234
- }, [recorder, onClose]);
235
- const handleRequest = useCallback(async () => {
236
- setSaveError(null);
237
- try {
238
- await recorder.request();
239
- }
240
- catch {
241
- // Already surfaced via recorder.error.
242
- }
243
- }, [recorder]);
244
- const handleStart = useCallback(() => {
245
- setSaveError(null);
246
- recorder.start();
247
- }, [recorder]);
248
- const handleStop = useCallback(async () => {
249
- setSaveError(null);
250
- await recorder.stop();
251
- }, [recorder]);
252
- const handleSave = useCallback(async () => {
253
- if (!recorder.blob || !recorder.mimeType || !recorder.extension || !recorder.directory) {
254
- setSaveError('Nothing to save yet — record something first.');
255
- return;
256
- }
257
- setIsSaving(true);
258
- setSaveError(null);
259
- try {
260
- const filename = buildFilename(source === 'mic' ? 'audio' : 'video', recorder.extension, basename);
261
- const relativeName = `${recorder.directory}/${filename}`;
262
- const relativePath = await mediaProvider.addMedia(relativeName, recorder.blob, recorder.mimeType);
263
- let hasTimingSidecar = false;
264
- if (source === 'mic') {
265
- const timing = buildTimingJson(sourceText, recorder.durationMs / 1000);
266
- const encoded = encodeTimingJson(timing);
267
- const sidecarPath = timingPathFor(relativePath);
268
- // Prefer direct container write so the sidecar lands at the
269
- // exact path the audio-mapping pipeline expects. Fall back to
270
- // addMedia(), which may rename — log if so.
271
- if (container) {
272
- await container.writeFile(sidecarPath, encoded, 'application/json');
273
- hasTimingSidecar = true;
274
- }
275
- else {
276
- const written = await mediaProvider.addMedia(sidecarPath, encoded, 'application/json');
277
- hasTimingSidecar = written === sidecarPath;
278
- if (!hasTimingSidecar) {
279
- console.warn(`[squisq-recorder] timing.json was saved as "${written}" instead of "${sidecarPath}" — auto-mapping may not pick it up.`);
280
- }
281
- }
282
- }
283
- const result = {
284
- relativePath,
285
- filename,
286
- source,
287
- mimeType: recorder.mimeType,
288
- duration: recorder.durationMs / 1000,
289
- hasTimingSidecar,
290
- };
291
- if (source === 'mic') {
292
- result.sourceText = sourceText;
293
- }
294
- onSave?.(result);
295
- handleClose();
296
- }
297
- catch (err) {
298
- setSaveError(err instanceof Error ? err.message : 'Failed to save recording');
299
- }
300
- finally {
301
- setIsSaving(false);
302
- }
303
- }, [recorder, source, basename, sourceText, mediaProvider, container, onSave, handleClose]);
304
- const handleDiscard = useCallback(() => {
305
- recorder.reset();
306
- }, [recorder]);
307
- const isAudioOnly = source === 'mic';
308
- const showPreview = recorder.state !== 'idle' && recorder.state !== 'error';
309
- const canRecord = recorder.state === 'ready';
310
- const canStop = recorder.state === 'recording';
311
- const canSave = recorder.state === 'stopped' && recorder.blob !== null;
312
- const isBusy = recorder.state === 'requesting' || recorder.state === 'stopping' || isSaving;
313
- const activeTabDescription = TABS.find((t) => t.id === source)?.description;
314
- return (_jsx("div", { style: overlayStyle, role: "dialog", "aria-modal": "true", "aria-label": "Record media", children: _jsxs("div", { style: modalStyle, onClick: (e) => e.stopPropagation(), children: [_jsx("h2", { style: titleStyle, children: "Record media" }), _jsx("div", { style: tabRowStyle, role: "tablist", children: TABS.map((tab) => {
315
- const active = tab.id === source;
316
- return (_jsx("button", { role: "tab", "aria-selected": active, type: "button", style: active ? tabActive : tabBase, onClick: () => setSource(tab.id), disabled: recorder.state === 'recording' || recorder.state === 'requesting', children: tab.label }, tab.id));
317
- }) }), activeTabDescription && (_jsx("p", { style: { margin: '0 0 12px 0', fontSize: 12, color: '#5a4a2a' }, children: activeTabDescription })), recorder.error && _jsx("div", { style: errorStyle, children: recorder.error.message }), saveError && _jsx("div", { style: errorStyle, children: saveError }), !showPreview && (_jsx("div", { style: previewBoxStyle, children: _jsx("span", { children: "Click Start Preview to start a recording." }) })), showPreview && recorder.state !== 'stopped' && !isAudioOnly && (_jsx("div", { style: previewBoxStyle, children: _jsx("video", { ref: previewRef, autoPlay: true, muted: true, playsInline: true, style: { width: '100%', height: '100%', objectFit: 'contain' } }) })), showPreview && recorder.state !== 'stopped' && isAudioOnly && (_jsx("div", { style: audioMeterStyle, children: recorder.state === 'recording' ? (_jsxs(_Fragment, { children: ["\u25CF Recording ", formatDurationMs(recorder.durationMs)] })) : (_jsx(_Fragment, { children: "Microphone ready" })) })), recorder.state === 'stopped' && playbackUrl && !isAudioOnly && (_jsx("div", { style: previewBoxStyle, children: _jsx("video", { src: playbackUrl, controls: true, playsInline: true, style: { width: '100%', height: '100%', objectFit: 'contain' } }) })), recorder.state === 'stopped' && playbackUrl && isAudioOnly && (_jsxs("div", { style: { marginBottom: 12 }, children: [_jsxs("div", { style: { ...audioMeterStyle, marginBottom: 8 }, children: ["\u2713 Recorded ", formatDurationMs(recorder.durationMs)] }), _jsx("audio", { src: playbackUrl, controls: true, style: { width: '100%' } })] })), source === 'mic' && (_jsxs(_Fragment, { children: [_jsx("label", { style: labelStyle, htmlFor: "recorder-source-text", children: "Script (used to auto-match this narration to a block)" }), _jsx("textarea", { id: "recorder-source-text", style: textareaStyle, placeholder: "Type the text you're going to read aloud.", value: sourceText, onChange: (e) => setSourceText(e.target.value), disabled: recorder.state === 'recording' })] })), (source === 'screen' || source === 'screen+mic') && (_jsxs("label", { style: {
318
- display: 'flex',
319
- alignItems: 'center',
320
- gap: 6,
321
- marginBottom: 12,
322
- fontSize: 13,
323
- }, children: [_jsx("input", { type: "checkbox", checked: includeSystemAudio, onChange: (e) => setIncludeSystemAudio(e.target.checked), disabled: recorder.state === 'recording' || recorder.state === 'requesting' }), "Include system audio (Chrome only)"] })), _jsx("label", { style: labelStyle, htmlFor: "recorder-basename", children: "Filename (optional)" }), _jsx("input", { id: "recorder-basename", type: "text", style: inputStyle, placeholder: source === 'mic' ? 'narration' : 'recording', value: basename, onChange: (e) => setBasename(e.target.value), disabled: recorder.state === 'recording' }), recorder.state === 'recording' && !isAudioOnly && (_jsxs("div", { style: {
324
- fontSize: 13,
325
- fontVariantNumeric: 'tabular-nums',
326
- marginBottom: 12,
327
- color: '#8B6914',
328
- fontWeight: 600,
329
- }, children: ["\u25CF Recording ", formatDurationMs(recorder.durationMs)] })), _jsxs("div", { style: buttonRowStyle, children: [_jsx("button", { type: "button", style: btnSecondary, onClick: handleClose, disabled: isBusy, children: "Close" }), (recorder.state === 'idle' ||
330
- recorder.state === 'error' ||
331
- recorder.state === 'requesting') && (_jsx("button", { type: "button", style: btnPrimary, onClick: handleRequest, disabled: isBusy, children: recorder.state === 'requesting' ? 'Requesting…' : 'Start preview' })), canRecord && (_jsx("button", { type: "button", style: btnPrimary, onClick: handleStart, disabled: isBusy, children: "Record" })), canStop && (_jsx("button", { type: "button", style: btnDanger, onClick: handleStop, disabled: isBusy, children: "Stop" })), canSave && (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", style: btnSecondary, onClick: handleDiscard, disabled: isBusy, children: "Discard & re-record" }), _jsx("button", { type: "button", style: btnPrimary, onClick: handleSave, disabled: isBusy, children: isSaving ? 'Saving…' : 'Save to document' })] }))] })] }) }));
332
- }
333
- //# sourceMappingURL=RecorderModal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecorderModal.js","sourceRoot":"","sources":["../../src/recorder/RecorderModal.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAsB,MAAM,OAAO,CAAC;AAGrF,OAAO,EAAE,gBAAgB,EAAuB,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA4CnF,sEAAsE;AAEtE,MAAM,YAAY,GAAkB;IAClC,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,oBAAoB;IAChC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,mBAAmB;IAC3B,YAAY,EAAE,CAAC;IACf,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,gCAAgC;IACvC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,6BAA6B;IACxC,UAAU,EAAE,sCAAsC;IAClD,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,MAAM,EAAE,YAAY;IACpB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,GAAG;IACf,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,GAAG;IACf,YAAY,EAAE,CAAC;IACf,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,mBAAmB;IAC3B,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,SAAS;IAChB,YAAY,EAAE,EAAE;IAChB,SAAS,EAAE,YAAY;CACxB,CAAC;AAEF,MAAM,aAAa,GAAkB;IACnC,GAAG,UAAU;IACb,MAAM,EAAE,UAAU;IAClB,SAAS,EAAE,EAAE;CACd,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,GAAG;IACf,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,mBAAmB;IAC3B,YAAY,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,YAAY,GAAkB;IAClC,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,GAAG;IACf,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,mBAAmB;IAC3B,YAAY,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,SAAS,GAAkB;IAC/B,GAAG,UAAU;IACb,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,SAAS;CACvB,CAAC;AAEF,MAAM,WAAW,GAAkB;IACjC,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,CAAC;IACN,YAAY,EAAE,EAAE;IAChB,YAAY,EAAE,mBAAmB;CAClC,CAAC;AAEF,MAAM,OAAO,GAAkB;IAC7B,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,aAAa;IACzB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,uBAAuB;IACrC,YAAY,EAAE,CAAC,CAAC;CACjB,CAAC;AAEF,MAAM,SAAS,GAAkB;IAC/B,GAAG,OAAO;IACV,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,GAAG;IACf,sEAAsE;IACtE,mEAAmE;IACnE,gEAAgE;IAChE,0DAA0D;IAC1D,YAAY,EAAE,mBAAmB;CAClC,CAAC;AAEF,MAAM,eAAe,GAAkB;IACrC,KAAK,EAAE,MAAM;IACb,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,QAAQ;IACrB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,eAAe,GAAkB;IACrC,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,EAAE;IACV,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,mBAAmB;IAC3B,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;IACZ,kBAAkB,EAAE,cAAc;CACnC,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,EAAE;IACZ,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF,MAAM,cAAc,GAAkB;IACpC,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,CAAC;IACN,cAAc,EAAE,UAAU;IAC1B,SAAS,EAAE,CAAC;CACb,CAAC;AAEF,sEAAsE;AAEtE,SAAS,gBAAgB,CAAC,EAAU;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC;IACxB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,IAAI,GAAsE;IAC9E;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,2EAA2E;KACzF;IACD,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;IAC7F,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE;IAC9F,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,uCAAuC,EAAE;CAClG,CAAC;AAEF,sEAAsE;AAEtE,MAAM,UAAU,aAAa,CAAC,EAC5B,aAAa,EACb,SAAS,GAAG,IAAI,EAChB,WAAW,GAAG,KAAK,EACnB,OAAO,EACP,MAAM,GACa;IACnB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAiB,WAAW,CAAC,CAAC;IAClE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEpE,MAAM,UAAU,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAEzD,MAAM,QAAQ,GAAG,gBAAgB,CAAC;QAChC,MAAM;QACN,WAAW,EAAE,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK;KACzF,CAAC,CAAC;IAEH,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEpF,sEAAsE;IACtE,oEAAoE;IACpE,8DAA8D;IAC9D,sEAAsE;IACtE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpB,mEAAmE;IACnE,iEAAiE;IACjE,iEAAiE;IACjE,uCAAuC;IACvC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACzC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,iBAAiB,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YACzC,iBAAiB,CAAC,OAAO,GAAG,MAAM,CAAC;YACnC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,gEAAgE;IAChE,kEAAkE;IAClE,+DAA+D;IAC/D,2DAA2D;IAC3D,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAExB,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC3C,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACxC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvF,YAAY,CAAC,+CAA+C,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,aAAa,CAC5B,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EACpC,QAAQ,CAAC,SAAS,EAClB,QAAQ,CACT,CAAC;YACF,MAAM,YAAY,GAAG,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;YACzD,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,QAAQ,CAC/C,YAAY,EACZ,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,QAAQ,CAClB,CAAC;YAEF,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAC7B,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;gBACvE,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;gBAChD,4DAA4D;gBAC5D,8DAA8D;gBAC9D,4CAA4C;gBAC5C,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;oBACpE,gBAAgB,GAAG,IAAI,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;oBACvF,gBAAgB,GAAG,OAAO,KAAK,WAAW,CAAC;oBAC3C,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACtB,OAAO,CAAC,IAAI,CACV,+CAA+C,OAAO,iBAAiB,WAAW,sCAAsC,CACzH,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAuB;gBACjC,YAAY;gBACZ,QAAQ;gBACR,MAAM;gBACN,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,UAAU,GAAG,IAAI;gBACpC,gBAAgB;aACjB,CAAC;YACF,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YACjC,CAAC;YACD,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;YACjB,WAAW,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,YAAY,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;QAChF,CAAC;gBAAS,CAAC;YACT,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAE5F,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,WAAW,GAAG,MAAM,KAAK,KAAK,CAAC;IACrC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,KAAK,MAAM,IAAI,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC;IAC5E,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,KAAK,WAAW,CAAC;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC;IACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,KAAK,YAAY,IAAI,QAAQ,CAAC,KAAK,KAAK,UAAU,IAAI,QAAQ,CAAC;IAE5F,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,WAAW,CAAC;IAE5E,OAAO,CACL,cAAK,KAAK,EAAE,YAAY,EAAE,IAAI,EAAC,QAAQ,gBAAY,MAAM,gBAAY,cAAc,YACjF,eAAK,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,aACzD,aAAI,KAAK,EAAE,UAAU,6BAAmB,EAExC,cAAK,KAAK,EAAE,WAAW,EAAE,IAAI,EAAC,SAAS,YACpC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;wBAChB,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC;wBACjC,OAAO,CACL,iBAEE,IAAI,EAAC,KAAK,mBACK,MAAM,EACrB,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAChC,QAAQ,EAAE,QAAQ,CAAC,KAAK,KAAK,WAAW,IAAI,QAAQ,CAAC,KAAK,KAAK,YAAY,YAE1E,GAAG,CAAC,KAAK,IARL,GAAG,CAAC,EAAE,CASJ,CACV,CAAC;oBACJ,CAAC,CAAC,GACE,EAEL,oBAAoB,IAAI,CACvB,YAAG,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,YAC/D,oBAAoB,GACnB,CACL,EAEA,QAAQ,CAAC,KAAK,IAAI,cAAK,KAAK,EAAE,UAAU,YAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAO,EACxE,SAAS,IAAI,cAAK,KAAK,EAAE,UAAU,YAAG,SAAS,GAAO,EAStD,CAAC,WAAW,IAAI,CACf,cAAK,KAAK,EAAE,eAAe,YACzB,uEAAsD,GAClD,CACP,EACA,WAAW,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,WAAW,IAAI,CAC9D,cAAK,KAAK,EAAE,eAAe,YACzB,gBACE,GAAG,EAAE,UAAU,EACf,QAAQ,QACR,KAAK,QACL,WAAW,QACX,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAC9D,GACE,CACP,EACA,WAAW,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,IAAI,CAC7D,cAAK,KAAK,EAAE,eAAe,YACxB,QAAQ,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,CAChC,mDAAe,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CACzD,CAAC,CAAC,CAAC,CACF,iDAAqB,CACtB,GACG,CACP,EACA,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,IAAI,CAAC,WAAW,IAAI,CAC9D,cAAK,KAAK,EAAE,eAAe,YACzB,gBACE,GAAG,EAAE,WAAW,EAChB,QAAQ,QACR,WAAW,QACX,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAC9D,GACE,CACP,EACA,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,CAC7D,eAAK,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aAC9B,eAAK,KAAK,EAAE,EAAE,GAAG,eAAe,EAAE,YAAY,EAAE,CAAC,EAAE,iCACrC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAC7C,EACN,gBAAO,GAAG,EAAE,WAAW,EAAE,QAAQ,QAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAI,IAC1D,CACP,EAGA,MAAM,KAAK,KAAK,IAAI,CACnB,8BACE,gBAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAC,sBAAsB,sEAEhD,EACR,mBACE,EAAE,EAAC,sBAAsB,EACzB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAC,2CAA2C,EACvD,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9C,QAAQ,EAAE,QAAQ,CAAC,KAAK,KAAK,WAAW,GACxC,IACD,CACJ,EACA,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,YAAY,CAAC,IAAI,CACnD,iBACE,KAAK,EAAE;wBACL,OAAO,EAAE,MAAM;wBACf,UAAU,EAAE,QAAQ;wBACpB,GAAG,EAAE,CAAC;wBACN,YAAY,EAAE,EAAE;wBAChB,QAAQ,EAAE,EAAE;qBACb,aAED,gBACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EACxD,QAAQ,EAAE,QAAQ,CAAC,KAAK,KAAK,WAAW,IAAI,QAAQ,CAAC,KAAK,KAAK,YAAY,GAC3E,0CAEI,CACT,EAED,gBAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAC,mBAAmB,oCAE7C,EACR,gBACE,EAAE,EAAC,mBAAmB,EACtB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EACzD,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,QAAQ,EAAE,QAAQ,CAAC,KAAK,KAAK,WAAW,GACxC,EAGD,QAAQ,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,WAAW,IAAI,CACjD,eACE,KAAK,EAAE;wBACL,QAAQ,EAAE,EAAE;wBACZ,kBAAkB,EAAE,cAAc;wBAClC,YAAY,EAAE,EAAE;wBAChB,KAAK,EAAE,SAAS;wBAChB,UAAU,EAAE,GAAG;qBAChB,kCAEY,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAC9C,CACP,EAGD,eAAK,KAAK,EAAE,cAAc,aACxB,iBAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAExE,EAER,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM;4BACzB,QAAQ,CAAC,KAAK,KAAK,OAAO;4BAC1B,QAAQ,CAAC,KAAK,KAAK,YAAY,CAAC,IAAI,CACpC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAC9E,QAAQ,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,GAC3D,CACV,EAEA,SAAS,IAAI,CACZ,iBAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAEtE,CACV,EAEA,OAAO,IAAI,CACV,iBAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAEpE,CACV,EAEA,OAAO,IAAI,CACV,8BACE,iBAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,oCAE1E,EACT,iBAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAC3E,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,GACnC,IACR,CACJ,IACG,IACF,GACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,25 +0,0 @@
1
- /**
2
- * RecorderPanel — toolbar-anchored trigger that opens the
3
- * {@link RecorderModal} in a portal. Shaped to slot into an editor
4
- * toolbar alongside other panels (e.g. `VersionHistoryPanel`); ships a
5
- * compact mic/record icon and no label by default.
6
- *
7
- * For a button that owns its own visual label, use {@link RecorderButton}
8
- * instead.
9
- */
10
- import type { MediaProvider } from '@bendyline/squisq/schemas';
11
- import type { ContentContainer } from '@bendyline/squisq/storage';
12
- import { type RecorderSaveResult } from './RecorderModal.js';
13
- import type { RecorderSource } from './hooks/useMediaRecorder.js';
14
- export interface RecorderPanelProps {
15
- mediaProvider: MediaProvider;
16
- container?: ContentContainer | null;
17
- initialMode?: RecorderSource;
18
- onSave?: (result: RecorderSaveResult) => void;
19
- /** ARIA / tooltip label. Defaults to `'Record media'`. */
20
- tooltip?: string;
21
- /** Optional className for the trigger button. */
22
- className?: string;
23
- }
24
- export declare function RecorderPanel({ mediaProvider, container, initialMode, onSave, tooltip, className, }: RecorderPanelProps): import("react/jsx-runtime").JSX.Element;
25
- //# sourceMappingURL=RecorderPanel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecorderPanel.d.ts","sourceRoot":"","sources":["../../src/recorder/RecorderPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2BD,wBAAgB,aAAa,CAAC,EAC5B,aAAa,EACb,SAAgB,EAChB,WAAmB,EACnB,MAAM,EACN,OAAwB,EACxB,SAAS,GACV,EAAE,kBAAkB,2CAgCpB"}
@@ -1,30 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /**
3
- * RecorderPanel — toolbar-anchored trigger that opens the
4
- * {@link RecorderModal} in a portal. Shaped to slot into an editor
5
- * toolbar alongside other panels (e.g. `VersionHistoryPanel`); ships a
6
- * compact mic/record icon and no label by default.
7
- *
8
- * For a button that owns its own visual label, use {@link RecorderButton}
9
- * instead.
10
- */
11
- import { useCallback, useState } from 'react';
12
- import { createPortal } from 'react-dom';
13
- import { RecorderModal } from './RecorderModal.js';
14
- /**
15
- * Inline 16×16 SVG mic icon — currentColor-driven so it inherits the
16
- * toolbar's icon color regardless of theme.
17
- */
18
- function MicIcon() {
19
- return (_jsxs("svg", { width: 16, height: 16, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("rect", { x: 5.5, y: 2, width: 5, height: 8, rx: 2.5 }), _jsx("path", { d: "M3.5 7.5v1a4.5 4.5 0 0 0 9 0v-1" }), _jsx("line", { x1: 8, y1: 13, x2: 8, y2: 15 }), _jsx("line", { x1: 5.5, y1: 15, x2: 10.5, y2: 15 })] }));
20
- }
21
- export function RecorderPanel({ mediaProvider, container = null, initialMode = 'mic', onSave, tooltip = 'Record media', className, }) {
22
- const [open, setOpen] = useState(false);
23
- const handleClose = useCallback(() => setOpen(false), []);
24
- return (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: className, "data-tooltip": tooltip, "aria-label": tooltip, "aria-expanded": open, onClick: () => setOpen((v) => !v), children: _jsx(MicIcon, {}) }), open &&
25
- typeof document !== 'undefined' &&
26
- createPortal(_jsx(RecorderModal, { mediaProvider: mediaProvider, container: container, initialMode: initialMode, onClose: handleClose, onSave: (result) => {
27
- onSave?.(result);
28
- } }), document.body)] }));
29
- }
30
- //# sourceMappingURL=RecorderPanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecorderPanel.js","sourceRoot":"","sources":["../../src/recorder/RecorderPanel.tsx"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC;AAc5E;;;GAGG;AACH,SAAS,OAAO;IACd,OAAO,CACL,eACE,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,GAAG,EAChB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,iBACV,MAAM,aAElB,eAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAI,EACpD,eAAM,CAAC,EAAC,iCAAiC,GAAG,EAC5C,eAAM,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAI,EACtC,eAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAI,IACvC,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAC5B,aAAa,EACb,SAAS,GAAG,IAAI,EAChB,WAAW,GAAG,KAAK,EACnB,MAAM,EACN,OAAO,GAAG,cAAc,EACxB,SAAS,GACU;IACnB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAE1D,OAAO,CACL,8BACE,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,SAAS,kBACN,OAAO,gBACT,OAAO,mBACJ,IAAI,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAEjC,KAAC,OAAO,KAAG,GACJ,EACR,IAAI;gBACH,OAAO,QAAQ,KAAK,WAAW;gBAC/B,YAAY,CACV,KAAC,aAAa,IACZ,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;wBACjB,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;oBACnB,CAAC,GACD,EACF,QAAQ,CAAC,IAAI,CACd,IACF,CACJ,CAAC;AACJ,CAAC"}
@@ -1,51 +0,0 @@
1
- /**
2
- * Format probing for MediaRecorder.
3
- *
4
- * Different browsers expose different container/codec combinations. Chrome
5
- * and Firefox produce WebM (VP8/VP9 + Opus); Safari produces MP4 (H.264 +
6
- * AAC). We probe at runtime via `MediaRecorder.isTypeSupported()` and pick
7
- * the best supported option, falling back to whatever the browser hands
8
- * back when no probe succeeds.
9
- */
10
- /** What the recorded stream is intended to capture. */
11
- export type CaptureKind = 'audio' | 'video';
12
- /** A probed format choice — what to pass to `MediaRecorder` and where to write it. */
13
- export interface ResolvedFormat {
14
- /** MIME type to pass to `new MediaRecorder(stream, { mimeType })`. Empty string means "let the browser pick". */
15
- mimeType: string;
16
- /** File extension to use when writing to the container, including the leading dot. */
17
- extension: string;
18
- /** Container directory inside the `ContentContainer` (no trailing slash). */
19
- directory: 'audio' | 'video';
20
- }
21
- /**
22
- * Resolve the format the recorder will use for a given capture kind. If a
23
- * `preferred` MIME type is supported, it wins; otherwise we fall through
24
- * the priority list. When nothing matches (extremely old browser), we
25
- * return an empty `mimeType` — `MediaRecorder` will pick a default and we
26
- * tag the file with `.webm` as a best guess.
27
- */
28
- export declare function resolveFormat(kind: CaptureKind, preferred?: string): ResolvedFormat;
29
- /**
30
- * `MediaRecorder` support probe. Returns false when running in a
31
- * non-browser environment (e.g. SSR) or on a browser that doesn't
32
- * implement the API at all.
33
- */
34
- export declare function supportsMediaRecorder(): boolean;
35
- /**
36
- * `getUserMedia` support probe (for mic / camera capture).
37
- */
38
- export declare function supportsUserMedia(): boolean;
39
- /**
40
- * `getDisplayMedia` support probe (for screen capture). Browsers may
41
- * implement `mediaDevices` without `getDisplayMedia` (Firefox on Android
42
- * being the long-standing example), so this is its own probe.
43
- */
44
- export declare function supportsDisplayMedia(): boolean;
45
- /**
46
- * Build a default filename for a recording. `basename` is a hint
47
- * (e.g. user-typed name); when omitted, a sortable timestamp is used so
48
- * concurrent recordings don't collide.
49
- */
50
- export declare function buildFilename(kind: CaptureKind, extension: string, basename?: string): string;
51
- //# sourceMappingURL=formats.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../../src/recorder/formats.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,uDAAuD;AACvD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;AAE5C,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,iHAAiH;IACjH,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC;CAC9B;AAiED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAMnF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAM3C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAM9C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB7F"}