@bendyline/squisq-editor-react 1.5.0 → 1.5.2

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 (401) hide show
  1. package/dist/index.d.ts +1991 -90
  2. package/dist/index.js +17088 -82
  3. package/dist/index.js.map +1 -1
  4. package/package.json +4 -4
  5. package/dist/DocumentSettingsDialog.d.ts +0 -26
  6. package/dist/DocumentSettingsDialog.d.ts.map +0 -1
  7. package/dist/DocumentSettingsDialog.js +0 -115
  8. package/dist/DocumentSettingsDialog.js.map +0 -1
  9. package/dist/DropZoneOverlay.d.ts +0 -24
  10. package/dist/DropZoneOverlay.d.ts.map +0 -1
  11. package/dist/DropZoneOverlay.js +0 -53
  12. package/dist/DropZoneOverlay.js.map +0 -1
  13. package/dist/EditorContext.d.ts +0 -391
  14. package/dist/EditorContext.d.ts.map +0 -1
  15. package/dist/EditorContext.js +0 -471
  16. package/dist/EditorContext.js.map +0 -1
  17. package/dist/EditorShell.d.ts +0 -328
  18. package/dist/EditorShell.d.ts.map +0 -1
  19. package/dist/EditorShell.js +0 -290
  20. package/dist/EditorShell.js.map +0 -1
  21. package/dist/EmojiPicker.d.ts +0 -50
  22. package/dist/EmojiPicker.d.ts.map +0 -1
  23. package/dist/EmojiPicker.js +0 -182
  24. package/dist/EmojiPicker.js.map +0 -1
  25. package/dist/ImageEditor.d.ts +0 -68
  26. package/dist/ImageEditor.d.ts.map +0 -1
  27. package/dist/ImageEditor.js +0 -166
  28. package/dist/ImageEditor.js.map +0 -1
  29. package/dist/ImageNodeView.d.ts +0 -27
  30. package/dist/ImageNodeView.d.ts.map +0 -1
  31. package/dist/ImageNodeView.js +0 -215
  32. package/dist/ImageNodeView.js.map +0 -1
  33. package/dist/ImageViewer.d.ts +0 -26
  34. package/dist/ImageViewer.d.ts.map +0 -1
  35. package/dist/ImageViewer.js +0 -119
  36. package/dist/ImageViewer.js.map +0 -1
  37. package/dist/InlineIcon.d.ts +0 -17
  38. package/dist/InlineIcon.d.ts.map +0 -1
  39. package/dist/InlineIcon.js +0 -72
  40. package/dist/InlineIcon.js.map +0 -1
  41. package/dist/InlinePreviewGutter.d.ts +0 -52
  42. package/dist/InlinePreviewGutter.d.ts.map +0 -1
  43. package/dist/InlinePreviewGutter.js +0 -397
  44. package/dist/InlinePreviewGutter.js.map +0 -1
  45. package/dist/LinkDialog.d.ts +0 -43
  46. package/dist/LinkDialog.d.ts.map +0 -1
  47. package/dist/LinkDialog.js +0 -102
  48. package/dist/LinkDialog.js.map +0 -1
  49. package/dist/MediaBin.d.ts +0 -29
  50. package/dist/MediaBin.d.ts.map +0 -1
  51. package/dist/MediaBin.js +0 -166
  52. package/dist/MediaBin.js.map +0 -1
  53. package/dist/MentionExtension.d.ts +0 -22
  54. package/dist/MentionExtension.d.ts.map +0 -1
  55. package/dist/MentionExtension.js +0 -245
  56. package/dist/MentionExtension.js.map +0 -1
  57. package/dist/OutlinePanel.d.ts +0 -17
  58. package/dist/OutlinePanel.d.ts.map +0 -1
  59. package/dist/OutlinePanel.js +0 -167
  60. package/dist/OutlinePanel.js.map +0 -1
  61. package/dist/PlainHtmlPreview.d.ts +0 -50
  62. package/dist/PlainHtmlPreview.d.ts.map +0 -1
  63. package/dist/PlainHtmlPreview.js +0 -155
  64. package/dist/PlainHtmlPreview.js.map +0 -1
  65. package/dist/PreviewControls.d.ts +0 -55
  66. package/dist/PreviewControls.d.ts.map +0 -1
  67. package/dist/PreviewControls.js +0 -277
  68. package/dist/PreviewControls.js.map +0 -1
  69. package/dist/PreviewPanel.d.ts +0 -29
  70. package/dist/PreviewPanel.d.ts.map +0 -1
  71. package/dist/PreviewPanel.js +0 -94
  72. package/dist/PreviewPanel.js.map +0 -1
  73. package/dist/RawEditor.d.ts +0 -32
  74. package/dist/RawEditor.d.ts.map +0 -1
  75. package/dist/RawEditor.js +0 -440
  76. package/dist/RawEditor.js.map +0 -1
  77. package/dist/RecorderEntry.d.ts +0 -24
  78. package/dist/RecorderEntry.d.ts.map +0 -1
  79. package/dist/RecorderEntry.js +0 -139
  80. package/dist/RecorderEntry.js.map +0 -1
  81. package/dist/StatusBar.d.ts +0 -15
  82. package/dist/StatusBar.d.ts.map +0 -1
  83. package/dist/StatusBar.js +0 -24
  84. package/dist/StatusBar.js.map +0 -1
  85. package/dist/TemplateAnnotation.d.ts +0 -20
  86. package/dist/TemplateAnnotation.d.ts.map +0 -1
  87. package/dist/TemplateAnnotation.js +0 -97
  88. package/dist/TemplateAnnotation.js.map +0 -1
  89. package/dist/TemplatePicker.d.ts +0 -53
  90. package/dist/TemplatePicker.d.ts.map +0 -1
  91. package/dist/TemplatePicker.js +0 -388
  92. package/dist/TemplatePicker.js.map +0 -1
  93. package/dist/ThemeCustomizerPanel.d.ts +0 -32
  94. package/dist/ThemeCustomizerPanel.d.ts.map +0 -1
  95. package/dist/ThemeCustomizerPanel.js +0 -256
  96. package/dist/ThemeCustomizerPanel.js.map +0 -1
  97. package/dist/ThemePicker.d.ts +0 -33
  98. package/dist/ThemePicker.d.ts.map +0 -1
  99. package/dist/ThemePicker.js +0 -148
  100. package/dist/ThemePicker.js.map +0 -1
  101. package/dist/Toolbar.d.ts +0 -36
  102. package/dist/Toolbar.d.ts.map +0 -1
  103. package/dist/Toolbar.js +0 -1001
  104. package/dist/Toolbar.js.map +0 -1
  105. package/dist/Tooltip.d.ts +0 -10
  106. package/dist/Tooltip.d.ts.map +0 -1
  107. package/dist/Tooltip.js +0 -104
  108. package/dist/Tooltip.js.map +0 -1
  109. package/dist/VersionHistoryPanel.d.ts +0 -14
  110. package/dist/VersionHistoryPanel.d.ts.map +0 -1
  111. package/dist/VersionHistoryPanel.js +0 -147
  112. package/dist/VersionHistoryPanel.js.map +0 -1
  113. package/dist/ViewMenuPanel.d.ts +0 -13
  114. package/dist/ViewMenuPanel.d.ts.map +0 -1
  115. package/dist/ViewMenuPanel.js +0 -58
  116. package/dist/ViewMenuPanel.js.map +0 -1
  117. package/dist/ViewSwitcher.d.ts +0 -14
  118. package/dist/ViewSwitcher.d.ts.map +0 -1
  119. package/dist/ViewSwitcher.js +0 -26
  120. package/dist/ViewSwitcher.js.map +0 -1
  121. package/dist/WysiwygEditor.d.ts +0 -39
  122. package/dist/WysiwygEditor.d.ts.map +0 -1
  123. package/dist/WysiwygEditor.js +0 -537
  124. package/dist/WysiwygEditor.js.map +0 -1
  125. package/dist/__tests__/detectMarkdown.test.d.ts +0 -2
  126. package/dist/__tests__/detectMarkdown.test.d.ts.map +0 -1
  127. package/dist/__tests__/detectMarkdown.test.js +0 -55
  128. package/dist/__tests__/detectMarkdown.test.js.map +0 -1
  129. package/dist/__tests__/documentSettingsDialog.test.d.ts +0 -2
  130. package/dist/__tests__/documentSettingsDialog.test.d.ts.map +0 -1
  131. package/dist/__tests__/documentSettingsDialog.test.js +0 -132
  132. package/dist/__tests__/documentSettingsDialog.test.js.map +0 -1
  133. package/dist/__tests__/emojiPicker.test.d.ts +0 -2
  134. package/dist/__tests__/emojiPicker.test.d.ts.map +0 -1
  135. package/dist/__tests__/emojiPicker.test.js +0 -111
  136. package/dist/__tests__/emojiPicker.test.js.map +0 -1
  137. package/dist/__tests__/fileKind.test.d.ts +0 -2
  138. package/dist/__tests__/fileKind.test.d.ts.map +0 -1
  139. package/dist/__tests__/fileKind.test.js +0 -94
  140. package/dist/__tests__/fileKind.test.js.map +0 -1
  141. package/dist/__tests__/imageEditAffordance.test.d.ts +0 -2
  142. package/dist/__tests__/imageEditAffordance.test.d.ts.map +0 -1
  143. package/dist/__tests__/imageEditAffordance.test.js +0 -188
  144. package/dist/__tests__/imageEditAffordance.test.js.map +0 -1
  145. package/dist/__tests__/imageEditorShell.test.d.ts +0 -2
  146. package/dist/__tests__/imageEditorShell.test.d.ts.map +0 -1
  147. package/dist/__tests__/imageEditorShell.test.js +0 -52
  148. package/dist/__tests__/imageEditorShell.test.js.map +0 -1
  149. package/dist/__tests__/imageEditorState.test.d.ts +0 -3
  150. package/dist/__tests__/imageEditorState.test.d.ts.map +0 -1
  151. package/dist/__tests__/imageEditorState.test.js +0 -148
  152. package/dist/__tests__/imageEditorState.test.js.map +0 -1
  153. package/dist/__tests__/inlinePreviewGutter.test.d.ts +0 -2
  154. package/dist/__tests__/inlinePreviewGutter.test.d.ts.map +0 -1
  155. package/dist/__tests__/inlinePreviewGutter.test.js +0 -51
  156. package/dist/__tests__/inlinePreviewGutter.test.js.map +0 -1
  157. package/dist/__tests__/inlinePreviewGutterAllBlocks.test.d.ts +0 -2
  158. package/dist/__tests__/inlinePreviewGutterAllBlocks.test.d.ts.map +0 -1
  159. package/dist/__tests__/inlinePreviewGutterAllBlocks.test.js +0 -63
  160. package/dist/__tests__/inlinePreviewGutterAllBlocks.test.js.map +0 -1
  161. package/dist/__tests__/jsonEditor.test.d.ts +0 -2
  162. package/dist/__tests__/jsonEditor.test.d.ts.map +0 -1
  163. package/dist/__tests__/jsonEditor.test.js +0 -134
  164. package/dist/__tests__/jsonEditor.test.js.map +0 -1
  165. package/dist/__tests__/layersPanel.test.d.ts +0 -2
  166. package/dist/__tests__/layersPanel.test.d.ts.map +0 -1
  167. package/dist/__tests__/layersPanel.test.js +0 -84
  168. package/dist/__tests__/layersPanel.test.js.map +0 -1
  169. package/dist/__tests__/linkDialogDocPicker.test.d.ts +0 -7
  170. package/dist/__tests__/linkDialogDocPicker.test.d.ts.map +0 -1
  171. package/dist/__tests__/linkDialogDocPicker.test.js +0 -75
  172. package/dist/__tests__/linkDialogDocPicker.test.js.map +0 -1
  173. package/dist/__tests__/mediaAttachmentFlow.test.d.ts +0 -2
  174. package/dist/__tests__/mediaAttachmentFlow.test.d.ts.map +0 -1
  175. package/dist/__tests__/mediaAttachmentFlow.test.js +0 -99
  176. package/dist/__tests__/mediaAttachmentFlow.test.js.map +0 -1
  177. package/dist/__tests__/outlinePanel.test.d.ts +0 -2
  178. package/dist/__tests__/outlinePanel.test.d.ts.map +0 -1
  179. package/dist/__tests__/outlinePanel.test.js +0 -68
  180. package/dist/__tests__/outlinePanel.test.js.map +0 -1
  181. package/dist/__tests__/plainHtmlPreview.test.d.ts +0 -2
  182. package/dist/__tests__/plainHtmlPreview.test.d.ts.map +0 -1
  183. package/dist/__tests__/plainHtmlPreview.test.js +0 -87
  184. package/dist/__tests__/plainHtmlPreview.test.js.map +0 -1
  185. package/dist/__tests__/propertiesPanel.test.d.ts +0 -2
  186. package/dist/__tests__/propertiesPanel.test.d.ts.map +0 -1
  187. package/dist/__tests__/propertiesPanel.test.js +0 -64
  188. package/dist/__tests__/propertiesPanel.test.js.map +0 -1
  189. package/dist/__tests__/recorderFormats.test.d.ts +0 -2
  190. package/dist/__tests__/recorderFormats.test.d.ts.map +0 -1
  191. package/dist/__tests__/recorderFormats.test.js +0 -121
  192. package/dist/__tests__/recorderFormats.test.js.map +0 -1
  193. package/dist/__tests__/recorderTimingJson.test.d.ts +0 -2
  194. package/dist/__tests__/recorderTimingJson.test.d.ts.map +0 -1
  195. package/dist/__tests__/recorderTimingJson.test.js +0 -37
  196. package/dist/__tests__/recorderTimingJson.test.js.map +0 -1
  197. package/dist/__tests__/templateAnnotationRoundTrip.test.d.ts +0 -2
  198. package/dist/__tests__/templateAnnotationRoundTrip.test.d.ts.map +0 -1
  199. package/dist/__tests__/templateAnnotationRoundTrip.test.js +0 -31
  200. package/dist/__tests__/templateAnnotationRoundTrip.test.js.map +0 -1
  201. package/dist/__tests__/tiptapBridge.test.d.ts +0 -2
  202. package/dist/__tests__/tiptapBridge.test.d.ts.map +0 -1
  203. package/dist/__tests__/tiptapBridge.test.js +0 -303
  204. package/dist/__tests__/tiptapBridge.test.js.map +0 -1
  205. package/dist/__tests__/tiptapImageRoundTrip.test.d.ts +0 -2
  206. package/dist/__tests__/tiptapImageRoundTrip.test.d.ts.map +0 -1
  207. package/dist/__tests__/tiptapImageRoundTrip.test.js +0 -68
  208. package/dist/__tests__/tiptapImageRoundTrip.test.js.map +0 -1
  209. package/dist/__tests__/useImageEditor.test.d.ts +0 -2
  210. package/dist/__tests__/useImageEditor.test.d.ts.map +0 -1
  211. package/dist/__tests__/useImageEditor.test.js +0 -131
  212. package/dist/__tests__/useImageEditor.test.js.map +0 -1
  213. package/dist/__tests__/useMediaRecorder.test.d.ts +0 -2
  214. package/dist/__tests__/useMediaRecorder.test.d.ts.map +0 -1
  215. package/dist/__tests__/useMediaRecorder.test.js +0 -153
  216. package/dist/__tests__/useMediaRecorder.test.js.map +0 -1
  217. package/dist/__tests__/versionHistory.test.d.ts +0 -2
  218. package/dist/__tests__/versionHistory.test.d.ts.map +0 -1
  219. package/dist/__tests__/versionHistory.test.js +0 -124
  220. package/dist/__tests__/versionHistory.test.js.map +0 -1
  221. package/dist/blockSlice.d.ts +0 -24
  222. package/dist/blockSlice.d.ts.map +0 -1
  223. package/dist/blockSlice.js +0 -63
  224. package/dist/blockSlice.js.map +0 -1
  225. package/dist/buildPreviewDoc.d.ts +0 -22
  226. package/dist/buildPreviewDoc.d.ts.map +0 -1
  227. package/dist/buildPreviewDoc.js +0 -262
  228. package/dist/buildPreviewDoc.js.map +0 -1
  229. package/dist/detectMarkdown.d.ts +0 -20
  230. package/dist/detectMarkdown.d.ts.map +0 -1
  231. package/dist/detectMarkdown.js +0 -61
  232. package/dist/detectMarkdown.js.map +0 -1
  233. package/dist/emojiData.d.ts +0 -81
  234. package/dist/emojiData.d.ts.map +0 -1
  235. package/dist/emojiData.js +0 -1283
  236. package/dist/emojiData.js.map +0 -1
  237. package/dist/fileKind.d.ts +0 -34
  238. package/dist/fileKind.d.ts.map +0 -1
  239. package/dist/fileKind.js +0 -144
  240. package/dist/fileKind.js.map +0 -1
  241. package/dist/hooks/useFileDrop.d.ts +0 -41
  242. package/dist/hooks/useFileDrop.d.ts.map +0 -1
  243. package/dist/hooks/useFileDrop.js +0 -205
  244. package/dist/hooks/useFileDrop.js.map +0 -1
  245. package/dist/imageEditor/CanvasSurface.d.ts +0 -31
  246. package/dist/imageEditor/CanvasSurface.d.ts.map +0 -1
  247. package/dist/imageEditor/CanvasSurface.js +0 -264
  248. package/dist/imageEditor/CanvasSurface.js.map +0 -1
  249. package/dist/imageEditor/ImageVersionHistoryDropdown.d.ts +0 -39
  250. package/dist/imageEditor/ImageVersionHistoryDropdown.d.ts.map +0 -1
  251. package/dist/imageEditor/ImageVersionHistoryDropdown.js +0 -283
  252. package/dist/imageEditor/ImageVersionHistoryDropdown.js.map +0 -1
  253. package/dist/imageEditor/LayersPanel.d.ts +0 -14
  254. package/dist/imageEditor/LayersPanel.d.ts.map +0 -1
  255. package/dist/imageEditor/LayersPanel.js +0 -43
  256. package/dist/imageEditor/LayersPanel.js.map +0 -1
  257. package/dist/imageEditor/PropertiesPanel.d.ts +0 -14
  258. package/dist/imageEditor/PropertiesPanel.d.ts.map +0 -1
  259. package/dist/imageEditor/PropertiesPanel.js +0 -97
  260. package/dist/imageEditor/PropertiesPanel.js.map +0 -1
  261. package/dist/imageEditor/Toolbar.d.ts +0 -30
  262. package/dist/imageEditor/Toolbar.d.ts.map +0 -1
  263. package/dist/imageEditor/Toolbar.js +0 -108
  264. package/dist/imageEditor/Toolbar.js.map +0 -1
  265. package/dist/imageEditor/icons.d.ts +0 -24
  266. package/dist/imageEditor/icons.d.ts.map +0 -1
  267. package/dist/imageEditor/icons.js +0 -45
  268. package/dist/imageEditor/icons.js.map +0 -1
  269. package/dist/imageEditor/layers/EditorImageLayer.d.ts +0 -16
  270. package/dist/imageEditor/layers/EditorImageLayer.d.ts.map +0 -1
  271. package/dist/imageEditor/layers/EditorImageLayer.js +0 -37
  272. package/dist/imageEditor/layers/EditorImageLayer.js.map +0 -1
  273. package/dist/imageEditor/layers/EditorShapeLayer.d.ts +0 -15
  274. package/dist/imageEditor/layers/EditorShapeLayer.d.ts.map +0 -1
  275. package/dist/imageEditor/layers/EditorShapeLayer.js +0 -20
  276. package/dist/imageEditor/layers/EditorShapeLayer.js.map +0 -1
  277. package/dist/imageEditor/layers/EditorTextLayer.d.ts +0 -18
  278. package/dist/imageEditor/layers/EditorTextLayer.d.ts.map +0 -1
  279. package/dist/imageEditor/layers/EditorTextLayer.js +0 -13
  280. package/dist/imageEditor/layers/EditorTextLayer.js.map +0 -1
  281. package/dist/imageEditor/layers/SelectionHandles.d.ts +0 -17
  282. package/dist/imageEditor/layers/SelectionHandles.d.ts.map +0 -1
  283. package/dist/imageEditor/layers/SelectionHandles.js +0 -19
  284. package/dist/imageEditor/layers/SelectionHandles.js.map +0 -1
  285. package/dist/imageEditor/state.d.ts +0 -76
  286. package/dist/imageEditor/state.d.ts.map +0 -1
  287. package/dist/imageEditor/state.js +0 -87
  288. package/dist/imageEditor/state.js.map +0 -1
  289. package/dist/imageEditor/useImageEditor.d.ts +0 -53
  290. package/dist/imageEditor/useImageEditor.d.ts.map +0 -1
  291. package/dist/imageEditor/useImageEditor.js +0 -244
  292. package/dist/imageEditor/useImageEditor.js.map +0 -1
  293. package/dist/imageEditor/useImageEditorTokens.d.ts +0 -16
  294. package/dist/imageEditor/useImageEditorTokens.d.ts.map +0 -1
  295. package/dist/imageEditor/useImageEditorTokens.js +0 -45
  296. package/dist/imageEditor/useImageEditorTokens.js.map +0 -1
  297. package/dist/index.d.ts.map +0 -1
  298. package/dist/jsonEditor/EmbeddedRichTextField.d.ts +0 -15
  299. package/dist/jsonEditor/EmbeddedRichTextField.d.ts.map +0 -1
  300. package/dist/jsonEditor/EmbeddedRichTextField.js +0 -74
  301. package/dist/jsonEditor/EmbeddedRichTextField.js.map +0 -1
  302. package/dist/jsonEditor/JsonEditor.d.ts +0 -36
  303. package/dist/jsonEditor/JsonEditor.d.ts.map +0 -1
  304. package/dist/jsonEditor/JsonEditor.js +0 -15
  305. package/dist/jsonEditor/JsonEditor.js.map +0 -1
  306. package/dist/jsonEditor/JsonEditorContext.d.ts +0 -28
  307. package/dist/jsonEditor/JsonEditorContext.d.ts.map +0 -1
  308. package/dist/jsonEditor/JsonEditorContext.js +0 -41
  309. package/dist/jsonEditor/JsonEditorContext.js.map +0 -1
  310. package/dist/jsonEditor/RenderNode.d.ts +0 -16
  311. package/dist/jsonEditor/RenderNode.d.ts.map +0 -1
  312. package/dist/jsonEditor/RenderNode.js +0 -32
  313. package/dist/jsonEditor/RenderNode.js.map +0 -1
  314. package/dist/jsonEditor/editors.d.ts +0 -36
  315. package/dist/jsonEditor/editors.d.ts.map +0 -1
  316. package/dist/jsonEditor/editors.js +0 -347
  317. package/dist/jsonEditor/editors.js.map +0 -1
  318. package/dist/jsonEditor/index.d.ts +0 -3
  319. package/dist/jsonEditor/index.d.ts.map +0 -1
  320. package/dist/jsonEditor/index.js +0 -2
  321. package/dist/jsonEditor/index.js.map +0 -1
  322. package/dist/jsonEditor/useJsonEditorTokens.d.ts +0 -13
  323. package/dist/jsonEditor/useJsonEditorTokens.d.ts.map +0 -1
  324. package/dist/jsonEditor/useJsonEditorTokens.js +0 -38
  325. package/dist/jsonEditor/useJsonEditorTokens.js.map +0 -1
  326. package/dist/mediaDragMime.d.ts +0 -17
  327. package/dist/mediaDragMime.d.ts.map +0 -1
  328. package/dist/mediaDragMime.js +0 -22
  329. package/dist/mediaDragMime.js.map +0 -1
  330. package/dist/recorder/RecorderButton.d.ts +0 -31
  331. package/dist/recorder/RecorderButton.d.ts.map +0 -1
  332. package/dist/recorder/RecorderButton.js +0 -24
  333. package/dist/recorder/RecorderButton.js.map +0 -1
  334. package/dist/recorder/RecorderModal.d.ts +0 -59
  335. package/dist/recorder/RecorderModal.d.ts.map +0 -1
  336. package/dist/recorder/RecorderModal.js +0 -333
  337. package/dist/recorder/RecorderModal.js.map +0 -1
  338. package/dist/recorder/RecorderPanel.d.ts +0 -25
  339. package/dist/recorder/RecorderPanel.d.ts.map +0 -1
  340. package/dist/recorder/RecorderPanel.js +0 -30
  341. package/dist/recorder/RecorderPanel.js.map +0 -1
  342. package/dist/recorder/formats.d.ts +0 -51
  343. package/dist/recorder/formats.d.ts.map +0 -1
  344. package/dist/recorder/formats.js +0 -144
  345. package/dist/recorder/formats.js.map +0 -1
  346. package/dist/recorder/hooks/useMediaRecorder.d.ts +0 -90
  347. package/dist/recorder/hooks/useMediaRecorder.d.ts.map +0 -1
  348. package/dist/recorder/hooks/useMediaRecorder.js +0 -277
  349. package/dist/recorder/hooks/useMediaRecorder.js.map +0 -1
  350. package/dist/recorder/hooks/useStreamPreview.d.ts +0 -22
  351. package/dist/recorder/hooks/useStreamPreview.d.ts.map +0 -1
  352. package/dist/recorder/hooks/useStreamPreview.js +0 -44
  353. package/dist/recorder/hooks/useStreamPreview.js.map +0 -1
  354. package/dist/recorder/sources/cameraStream.d.ts +0 -22
  355. package/dist/recorder/sources/cameraStream.d.ts.map +0 -1
  356. package/dist/recorder/sources/cameraStream.js +0 -24
  357. package/dist/recorder/sources/cameraStream.js.map +0 -1
  358. package/dist/recorder/sources/micStream.d.ts +0 -15
  359. package/dist/recorder/sources/micStream.d.ts.map +0 -1
  360. package/dist/recorder/sources/micStream.js +0 -24
  361. package/dist/recorder/sources/micStream.js.map +0 -1
  362. package/dist/recorder/sources/screenStream.d.ts +0 -53
  363. package/dist/recorder/sources/screenStream.d.ts.map +0 -1
  364. package/dist/recorder/sources/screenStream.js +0 -114
  365. package/dist/recorder/sources/screenStream.js.map +0 -1
  366. package/dist/recorder/timingJson.d.ts +0 -51
  367. package/dist/recorder/timingJson.d.ts.map +0 -1
  368. package/dist/recorder/timingJson.js +0 -42
  369. package/dist/recorder/timingJson.js.map +0 -1
  370. package/dist/tiptap/TiptapAudio.d.ts +0 -26
  371. package/dist/tiptap/TiptapAudio.d.ts.map +0 -1
  372. package/dist/tiptap/TiptapAudio.js +0 -58
  373. package/dist/tiptap/TiptapAudio.js.map +0 -1
  374. package/dist/tiptap/TiptapVideo.d.ts +0 -30
  375. package/dist/tiptap/TiptapVideo.d.ts.map +0 -1
  376. package/dist/tiptap/TiptapVideo.js +0 -66
  377. package/dist/tiptap/TiptapVideo.js.map +0 -1
  378. package/dist/tiptap/useResolvedMediaSrc.d.ts +0 -2
  379. package/dist/tiptap/useResolvedMediaSrc.d.ts.map +0 -1
  380. package/dist/tiptap/useResolvedMediaSrc.js +0 -42
  381. package/dist/tiptap/useResolvedMediaSrc.js.map +0 -1
  382. package/dist/tiptapBridge.d.ts +0 -24
  383. package/dist/tiptapBridge.d.ts.map +0 -1
  384. package/dist/tiptapBridge.js +0 -749
  385. package/dist/tiptapBridge.js.map +0 -1
  386. package/dist/useHeadingLayout.d.ts +0 -54
  387. package/dist/useHeadingLayout.d.ts.map +0 -1
  388. package/dist/useHeadingLayout.js +0 -260
  389. package/dist/useHeadingLayout.js.map +0 -1
  390. package/dist/utils/collectInlineFontAwesomeCss.d.ts +0 -21
  391. package/dist/utils/collectInlineFontAwesomeCss.d.ts.map +0 -1
  392. package/dist/utils/collectInlineFontAwesomeCss.js +0 -68
  393. package/dist/utils/collectInlineFontAwesomeCss.js.map +0 -1
  394. package/dist/utils/dropUtils.d.ts +0 -55
  395. package/dist/utils/dropUtils.d.ts.map +0 -1
  396. package/dist/utils/dropUtils.js +0 -110
  397. package/dist/utils/dropUtils.js.map +0 -1
  398. package/dist/utils/normalizeMalformedAssetUrl.d.ts +0 -15
  399. package/dist/utils/normalizeMalformedAssetUrl.d.ts.map +0 -1
  400. package/dist/utils/normalizeMalformedAssetUrl.js +0 -27
  401. package/dist/utils/normalizeMalformedAssetUrl.js.map +0 -1
@@ -1,7 +0,0 @@
1
- /**
2
- * Covers the LinkDialog's "Browse documents" picker added behind the
3
- * `documentLinkProvider` prop. The picker is purely additive — when
4
- * the prop is absent the dialog renders its original URL-only layout.
5
- */
6
- export {};
7
- //# sourceMappingURL=linkDialogDocPicker.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linkDialogDocPicker.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/linkDialogDocPicker.test.tsx"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1,75 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * Covers the LinkDialog's "Browse documents" picker added behind the
4
- * `documentLinkProvider` prop. The picker is purely additive — when
5
- * the prop is absent the dialog renders its original URL-only layout.
6
- */
7
- import { describe, expect, it, vi } from 'vitest';
8
- import { fireEvent, render, screen, waitFor } from '@testing-library/react';
9
- import { LinkDialog } from '../LinkDialog';
10
- const NEIGHBORS = [
11
- { path: 'resume.md', label: 'Resume', description: 'My CV' },
12
- { path: 'projects.md', label: 'Projects' },
13
- { path: 'misc/notes.md', label: 'Notes', description: 'Scratchpad' },
14
- ];
15
- const provider = async (q) => {
16
- const query = q.trim().toLowerCase();
17
- if (!query)
18
- return NEIGHBORS;
19
- return NEIGHBORS.filter((n) => n.label.toLowerCase().includes(query) || n.path.toLowerCase().includes(query));
20
- };
21
- describe('LinkDialog — document picker', () => {
22
- it('hides the documents tab when no provider is supplied', () => {
23
- render(_jsx(LinkDialog, { mode: "insert", initialText: "", initialUrl: "", onConfirm: () => { }, onClose: () => { } }));
24
- expect(screen.queryByRole('tab', { name: /browse documents/i })).toBeNull();
25
- });
26
- it('shows both tabs when the provider is supplied', () => {
27
- render(_jsx(LinkDialog, { mode: "insert", initialText: "", initialUrl: "", onConfirm: () => { }, onClose: () => { }, documentLinkProvider: provider }));
28
- expect(screen.getByRole('tab', { name: 'URL' })).toBeTruthy();
29
- expect(screen.getByRole('tab', { name: 'Browse documents' })).toBeTruthy();
30
- });
31
- it('lists initial candidates when the documents tab opens', async () => {
32
- render(_jsx(LinkDialog, { mode: "insert", initialText: "", initialUrl: "", onConfirm: () => { }, onClose: () => { }, documentLinkProvider: provider }));
33
- fireEvent.click(screen.getByRole('tab', { name: 'Browse documents' }));
34
- await waitFor(() => {
35
- expect(screen.getByText('Resume')).toBeTruthy();
36
- expect(screen.getByText('Projects')).toBeTruthy();
37
- expect(screen.getByText('Notes')).toBeTruthy();
38
- });
39
- });
40
- it('filters candidates as the user types', async () => {
41
- render(_jsx(LinkDialog, { mode: "insert", initialText: "", initialUrl: "", onConfirm: () => { }, onClose: () => { }, documentLinkProvider: provider }));
42
- fireEvent.click(screen.getByRole('tab', { name: 'Browse documents' }));
43
- await waitFor(() => screen.getByText('Resume'));
44
- const search = screen.getByLabelText('Search');
45
- fireEvent.change(search, { target: { value: 'proj' } });
46
- await waitFor(() => {
47
- expect(screen.getByText('Projects')).toBeTruthy();
48
- expect(screen.queryByText('Resume')).toBeNull();
49
- });
50
- });
51
- it('picking a document fills the URL and auto-fills the caption when empty', async () => {
52
- const onConfirm = vi.fn();
53
- render(_jsx(LinkDialog, { mode: "insert", initialText: "", initialUrl: "", onConfirm: onConfirm, onClose: () => { }, documentLinkProvider: provider }));
54
- fireEvent.click(screen.getByRole('tab', { name: 'Browse documents' }));
55
- await waitFor(() => screen.getByText('Resume'));
56
- fireEvent.click(screen.getByRole('option', { name: /Resume/i }));
57
- // After picking, the dialog jumps back to the URL tab so Enter submits.
58
- const urlInput = screen.getByLabelText('URL');
59
- expect(urlInput.value).toBe('resume.md');
60
- const textInput = screen.getByLabelText('Text');
61
- expect(textInput.value).toBe('Resume');
62
- // Submit
63
- fireEvent.submit(urlInput.closest('form'));
64
- expect(onConfirm).toHaveBeenCalledWith('Resume', 'resume.md');
65
- });
66
- it('preserves a caption the user already typed when picking a document', async () => {
67
- render(_jsx(LinkDialog, { mode: "insert", initialText: "Read my work", initialUrl: "", onConfirm: () => { }, onClose: () => { }, documentLinkProvider: provider }));
68
- fireEvent.click(screen.getByRole('tab', { name: 'Browse documents' }));
69
- await waitFor(() => screen.getByText('Resume'));
70
- fireEvent.click(screen.getByRole('option', { name: /Resume/i }));
71
- const textInput = screen.getByLabelText('Text');
72
- expect(textInput.value).toBe('Read my work');
73
- });
74
- });
75
- //# sourceMappingURL=linkDialogDocPicker.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linkDialogDocPicker.test.js","sourceRoot":"","sources":["../../src/__tests__/linkDialogDocPicker.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=mediaAttachmentFlow.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mediaAttachmentFlow.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/mediaAttachmentFlow.test.ts"],"names":[],"mappings":""}
@@ -1,99 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { markdownToTiptap, tiptapToMarkdown } from '../tiptapBridge';
3
- /**
4
- * Attachment-flow regression: earlier versions of MediaBin dropped
5
- * uploaded files into the bin without inserting a markdown ref into
6
- * the editor body. A user would upload an image, hit Send in the
7
- * downstream chat composer, and the outgoing markdown would have no
8
- * image reference — the gezel would reply "nothing came through."
9
- *
10
- * The fix: after `mediaProvider.addMedia(...)` succeeds, MediaBin
11
- * fires `onMediaUploaded(relativePath, name, mimeType)`. The
12
- * EditorShell wires this to an `insertAtCursor` that emits
13
- * `![alt](attachments/<filename>)` so the file actually participates
14
- * in the outgoing markdown.
15
- *
16
- * These tests exercise the contract directly: the markdown snippet
17
- * produced by the upload callback, once round-tripped through the
18
- * editor's markdown↔HTML bridge, must round-trip back to a form
19
- * the gezel service's image-extraction regex can see.
20
- */
21
- function fakeMediaProvider(records) {
22
- let counter = 0;
23
- return {
24
- async addMedia(name, _data, _mime) {
25
- counter += 1;
26
- const relative = `attachments/${counter}-${name}`;
27
- records.push(relative);
28
- return relative;
29
- },
30
- async resolveUrl(relPath) {
31
- return relPath;
32
- },
33
- async listMedia() {
34
- return [];
35
- },
36
- async removeMedia(_relPath) {
37
- /* no-op */
38
- },
39
- dispose() {
40
- /* no-op */
41
- },
42
- };
43
- }
44
- /**
45
- * Re-implements the exact snippet EditorShell's `insertMediaRef`
46
- * builds. Keeping this aligned with the real impl would ordinarily
47
- * rely on directly importing the helper; since it's currently inline
48
- * in EditorShell, mirror the logic here and lean on the test to
49
- * alert us if we drift apart.
50
- */
51
- function buildAttachmentSnippet(relativePath, name, mimeType) {
52
- const alt = name.replace(/\.[^.]+$/, '').replace(/[-_]/g, ' ');
53
- return mimeType.startsWith('image/') ? `![${alt}](${relativePath})` : `[${alt}](${relativePath})`;
54
- }
55
- describe('media attachment flow', () => {
56
- it('addMedia → buildAttachmentSnippet → markdown round-trip keeps the ref', async () => {
57
- const records = [];
58
- const provider = fakeMediaProvider(records);
59
- // Simulate MediaBin.handleFileChange for a single PNG drop.
60
- const pngBytes = new Uint8Array([0x89, 0x50, 0x4e, 0x47]);
61
- const relative = await provider.addMedia('my_screenshot.png', pngBytes, 'image/png');
62
- expect(records).toEqual([relative]);
63
- const snippet = buildAttachmentSnippet(relative, 'my_screenshot.png', 'image/png');
64
- expect(snippet).toBe(`![my screenshot](${relative})`);
65
- // Insert snippet into the editor: markdown → HTML → markdown.
66
- // This is the path a real insertAtCursor + tiptap onUpdate goes
67
- // through. The outbound markdown must still contain the ref.
68
- const html = markdownToTiptap(snippet);
69
- expect(html).toMatch(/<img\b/);
70
- expect(html).toContain(`src="${relative}"`);
71
- const back = tiptapToMarkdown(html);
72
- expect(back).toContain(`![my screenshot](${relative})`);
73
- });
74
- it('handles empty-alt (most common pasted-image shape)', async () => {
75
- const records = [];
76
- const provider = fakeMediaProvider(records);
77
- const relative = await provider.addMedia('pasted.png', new Uint8Array([0]), 'image/png');
78
- // Simulate what happens when alt is empty — common for bare pastes
79
- // where the user hasn't typed a caption.
80
- const snippet = `![](${relative})`;
81
- const html = markdownToTiptap(snippet);
82
- expect(html).toMatch(/<img\b/);
83
- expect(html).toContain(`src="${relative}"`);
84
- const back = tiptapToMarkdown(html);
85
- expect(back).toContain(`![](${relative})`);
86
- });
87
- it('non-image files fall back to a plain link, still preserving the ref', async () => {
88
- const records = [];
89
- const provider = fakeMediaProvider(records);
90
- const relative = await provider.addMedia('design.pdf', new Uint8Array([0]), 'application/pdf');
91
- const snippet = buildAttachmentSnippet(relative, 'design.pdf', 'application/pdf');
92
- expect(snippet).toBe(`[design](${relative})`);
93
- // Non-images don't go through the `<img>` regex — they stay as
94
- // plain markdown links, which the service-side extractor ignores
95
- // but the UI renders as normal hyperlinks.
96
- expect(snippet).not.toContain('!');
97
- });
98
- });
99
- //# sourceMappingURL=mediaAttachmentFlow.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mediaAttachmentFlow.test.js","sourceRoot":"","sources":["../../src/__tests__/mediaAttachmentFlow.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=outlinePanel.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"outlinePanel.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/outlinePanel.test.tsx"],"names":[],"mappings":""}
@@ -1,68 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { describe, expect, it, beforeAll } from 'vitest';
3
- import { render, screen } from '@testing-library/react';
4
- import { EditorProvider } from '../EditorContext';
5
- import { OutlinePanel } from '../OutlinePanel';
6
- // jsdom lacks ResizeObserver — the pane wires one up to track the editor's
7
- // page edge. A no-op shim is enough for the rendering tests below.
8
- beforeAll(() => {
9
- if (typeof globalThis.ResizeObserver === 'undefined') {
10
- globalThis.ResizeObserver = class {
11
- observe() { }
12
- unobserve() { }
13
- disconnect() { }
14
- };
15
- }
16
- });
17
- function renderOutline(markdown) {
18
- return render(_jsx(EditorProvider, { initialMarkdown: markdown, initialView: "wysiwyg", articleId: "test", children: _jsx(OutlinePanel, {}) }));
19
- }
20
- describe('OutlinePanel', () => {
21
- it('renders the empty placeholder when the doc has no headings', async () => {
22
- renderOutline('Just a paragraph, no headings.\n');
23
- expect(await screen.findByText(/add a heading to populate the outline/i)).toBeTruthy();
24
- });
25
- it('renders one row per heading and nests by depth', async () => {
26
- const md = [
27
- '# Top Level',
28
- '',
29
- '## Subsection A',
30
- '',
31
- 'Body.',
32
- '',
33
- '### Detail',
34
- '',
35
- 'Body.',
36
- '',
37
- '## Subsection B',
38
- '',
39
- 'Body.',
40
- '',
41
- ].join('\n');
42
- const { container } = renderOutline(md);
43
- await screen.findByTestId('outline-panel');
44
- const rows = container.querySelectorAll('.squisq-outline-row');
45
- expect(rows.length).toBe(4);
46
- // Depth modifier classes are applied per heading level.
47
- const depths = Array.from(rows).map((r) => {
48
- const match = r.className.match(/squisq-outline-row--depth-(\d)/);
49
- return match ? Number(match[1]) : null;
50
- });
51
- expect(depths).toEqual([1, 2, 3, 2]);
52
- // Heading text is reflected in row labels.
53
- const labels = Array.from(rows).map((r) => r.textContent?.trim());
54
- expect(labels).toContain('Top Level');
55
- expect(labels).toContain('Subsection A');
56
- expect(labels).toContain('Detail');
57
- expect(labels).toContain('Subsection B');
58
- });
59
- it('shows a template chip on annotated headings', async () => {
60
- const md = '# Welcome {[title]}\n\nIntro.\n';
61
- const { container } = renderOutline(md);
62
- await screen.findByTestId('outline-panel');
63
- const chip = container.querySelector('.squisq-outline-template-chip');
64
- expect(chip).not.toBeNull();
65
- expect(chip.textContent).toContain('Title');
66
- });
67
- });
68
- //# sourceMappingURL=outlinePanel.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"outlinePanel.test.js","sourceRoot":"","sources":["../../src/__tests__/outlinePanel.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=plainHtmlPreview.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plainHtmlPreview.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/plainHtmlPreview.test.tsx"],"names":[],"mappings":""}
@@ -1,87 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { describe, expect, it, vi } from 'vitest';
3
- import { render, screen, waitFor } from '@testing-library/react';
4
- import { resolveTheme } from '@bendyline/squisq/schemas';
5
- import { PlainHtmlPreview } from '../PlainHtmlPreview';
6
- function getIframeSrcDoc() {
7
- const iframe = screen.getByTestId('plain-html-preview');
8
- return iframe.srcdoc;
9
- }
10
- describe('PlainHtmlPreview', () => {
11
- it('renders the markdown into the iframe srcDoc', () => {
12
- render(_jsx(PlainHtmlPreview, { markdown: '# Hello\n\nWorld' }));
13
- const srcdoc = getIframeSrcDoc();
14
- expect(srcdoc).toContain('<!DOCTYPE html>');
15
- expect(srcdoc).toContain('<h1>Hello</h1>');
16
- expect(srcdoc).toContain('<p>World</p>');
17
- });
18
- it('refuses scripts via sandbox attribute (allow-same-origin only)', () => {
19
- render(_jsx(PlainHtmlPreview, { markdown: 'hi' }));
20
- const iframe = screen.getByTestId('plain-html-preview');
21
- const sandbox = iframe.getAttribute('sandbox') ?? '';
22
- expect(sandbox).toContain('allow-same-origin');
23
- expect(sandbox).not.toContain('allow-scripts');
24
- });
25
- it('applies pre-resolved images via the images prop', () => {
26
- render(_jsx(PlainHtmlPreview, { markdown: '![a](a.jpg)', images: new Map([['a.jpg', 'data:image/png;base64,AAA']]) }));
27
- expect(getIframeSrcDoc()).toContain('src="data:image/png;base64,AAA"');
28
- });
29
- it('resolves image URLs through the supplied mediaProvider', async () => {
30
- const provider = {
31
- resolveUrl: vi.fn(async (ref) => `blob:resolved/${ref}`),
32
- listMedia: vi.fn(async () => []),
33
- addMedia: vi.fn(async () => ''),
34
- removeMedia: vi.fn(async () => { }),
35
- dispose: vi.fn(() => { }),
36
- };
37
- render(_jsx(PlainHtmlPreview, { markdown: '![a](cat.jpg)', mediaProvider: provider }));
38
- await waitFor(() => {
39
- expect(getIframeSrcDoc()).toContain('src="blob:resolved/cat.jpg"');
40
- });
41
- expect(provider.resolveUrl).toHaveBeenCalledWith('cat.jpg');
42
- });
43
- it('does not resolve external URLs through the provider', async () => {
44
- const provider = {
45
- resolveUrl: vi.fn(async (ref) => `blob:should-not-fire/${ref}`),
46
- listMedia: vi.fn(async () => []),
47
- addMedia: vi.fn(async () => ''),
48
- removeMedia: vi.fn(async () => { }),
49
- dispose: vi.fn(() => { }),
50
- };
51
- render(_jsx(PlainHtmlPreview, { markdown: '![ext](https://example.com/x.jpg)', mediaProvider: provider }));
52
- await waitFor(() => {
53
- expect(getIframeSrcDoc()).toContain('src="https://example.com/x.jpg"');
54
- });
55
- expect(provider.resolveUrl).not.toHaveBeenCalled();
56
- });
57
- it('applies the supplied theme to the iframe document', () => {
58
- const theme = resolveTheme('warm-earth');
59
- render(_jsx(PlainHtmlPreview, { markdown: '# Hi', theme: theme }));
60
- const srcdoc = getIframeSrcDoc();
61
- expect(srcdoc).toContain(`--plain-bg: ${theme.colors.background};`);
62
- expect(srcdoc).toContain(`--plain-primary: ${theme.colors.primary};`);
63
- expect(srcdoc).toContain('--plain-body-font:');
64
- });
65
- it('loads Google Fonts for themes that reference google-hosted faces', () => {
66
- const theme = resolveTheme('documentary');
67
- render(_jsx(PlainHtmlPreview, { markdown: '# Hi', theme: theme }));
68
- expect(getIframeSrcDoc()).toContain('https://fonts.googleapis.com/css2?');
69
- });
70
- it('resolves raw HTML <img> tags too (resized image case)', async () => {
71
- // Resized images round-trip through the markdown source as raw
72
- // HTML, which the preview must scan to keep the iframe's <img>
73
- // pointing at a fetchable blob URL.
74
- const provider = {
75
- resolveUrl: vi.fn(async (ref) => `blob:r/${ref}`),
76
- listMedia: vi.fn(async () => []),
77
- addMedia: vi.fn(async () => ''),
78
- removeMedia: vi.fn(async () => { }),
79
- dispose: vi.fn(() => { }),
80
- };
81
- render(_jsx(PlainHtmlPreview, { markdown: '<img alt="resized" src="resized.png" width="194">', mediaProvider: provider }));
82
- await waitFor(() => {
83
- expect(getIframeSrcDoc()).toContain('src="blob:r/resized.png"');
84
- });
85
- });
86
- });
87
- //# sourceMappingURL=plainHtmlPreview.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plainHtmlPreview.test.js","sourceRoot":"","sources":["../../src/__tests__/plainHtmlPreview.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=propertiesPanel.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"propertiesPanel.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/propertiesPanel.test.tsx"],"names":[],"mappings":""}
@@ -1,64 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * @vitest-environment jsdom
4
- */
5
- import { describe, it, expect, vi } from 'vitest';
6
- import { fireEvent, render, screen } from '@testing-library/react';
7
- import { PropertiesPanel } from '../imageEditor/PropertiesPanel.js';
8
- function buildDoc() {
9
- return {
10
- version: 1,
11
- canvas: { width: 100, height: 80, background: '#ffffff' },
12
- layers: [
13
- {
14
- id: 'a',
15
- type: 'shape',
16
- name: 'Box',
17
- position: { x: 5, y: 6, width: 30, height: 20 },
18
- content: { shape: 'rect', fill: '#3399ff' },
19
- },
20
- ],
21
- };
22
- }
23
- describe('PropertiesPanel', () => {
24
- it('shows an empty hint when no layer is selected', () => {
25
- const dispatch = vi.fn();
26
- render(_jsx(PropertiesPanel, { doc: buildDoc(), selectedLayerId: null, dispatch: dispatch }));
27
- expect(screen.getByText(/no layer selected/i)).toBeTruthy();
28
- });
29
- it('editing the canvas width dispatches set-canvas', () => {
30
- const dispatch = vi.fn();
31
- render(_jsx(PropertiesPanel, { doc: buildDoc(), selectedLayerId: null, dispatch: dispatch }));
32
- const widthInput = screen.getByDisplayValue('100');
33
- fireEvent.change(widthInput, { target: { value: '200' } });
34
- expect(dispatch).toHaveBeenCalledWith({
35
- type: 'set-canvas',
36
- canvas: expect.objectContaining({ width: 200, height: 80 }),
37
- });
38
- });
39
- it('renaming a layer dispatches update-layer with patch.name', () => {
40
- const dispatch = vi.fn();
41
- render(_jsx(PropertiesPanel, { doc: buildDoc(), selectedLayerId: "a", dispatch: dispatch }));
42
- const nameInput = screen.getByDisplayValue('Box');
43
- fireEvent.change(nameInput, { target: { value: 'Renamed' } });
44
- expect(dispatch).toHaveBeenCalledWith({
45
- type: 'update-layer',
46
- layerId: 'a',
47
- patch: expect.objectContaining({ name: 'Renamed' }),
48
- });
49
- });
50
- it('changing position X dispatches update-layer with merged position', () => {
51
- const dispatch = vi.fn();
52
- render(_jsx(PropertiesPanel, { doc: buildDoc(), selectedLayerId: "a", dispatch: dispatch }));
53
- const xInput = screen.getByDisplayValue('5');
54
- fireEvent.change(xInput, { target: { value: '50' } });
55
- const calls = dispatch.mock.calls.map((c) => c[0]);
56
- const last = calls[calls.length - 1];
57
- expect(last).toMatchObject({
58
- type: 'update-layer',
59
- layerId: 'a',
60
- patch: { position: { x: 50, y: 6, width: 30, height: 20 } },
61
- });
62
- });
63
- });
64
- //# sourceMappingURL=propertiesPanel.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"propertiesPanel.test.js","sourceRoot":"","sources":["../../src/__tests__/propertiesPanel.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=recorderFormats.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recorderFormats.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/recorderFormats.test.ts"],"names":[],"mappings":""}
@@ -1,121 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from 'vitest';
2
- import { buildFilename, resolveFormat, supportsDisplayMedia, supportsMediaRecorder, supportsUserMedia, } from '../recorder/formats.js';
3
- /**
4
- * Most of these probes touch global APIs that jsdom doesn't implement.
5
- * Each test installs the minimum stub needed to exercise the probe and
6
- * cleans up after itself so probes in other suites stay independent.
7
- */
8
- const originalMediaRecorder = globalThis.MediaRecorder;
9
- const originalNavigator = globalThis.navigator;
10
- afterEach(() => {
11
- if (originalMediaRecorder === undefined) {
12
- delete globalThis.MediaRecorder;
13
- }
14
- else {
15
- globalThis.MediaRecorder = originalMediaRecorder;
16
- }
17
- Object.defineProperty(globalThis, 'navigator', {
18
- value: originalNavigator,
19
- configurable: true,
20
- });
21
- });
22
- function installMediaRecorderStub(supported) {
23
- const stub = {
24
- isTypeSupported: (mime) => supported.includes(mime),
25
- };
26
- globalThis.MediaRecorder = stub;
27
- }
28
- describe('supportsMediaRecorder', () => {
29
- it('is false when MediaRecorder is undefined', () => {
30
- delete globalThis.MediaRecorder;
31
- expect(supportsMediaRecorder()).toBe(false);
32
- });
33
- it('is true when a MediaRecorder global exists', () => {
34
- installMediaRecorderStub(['audio/webm']);
35
- expect(supportsMediaRecorder()).toBe(true);
36
- });
37
- });
38
- describe('supportsUserMedia / supportsDisplayMedia', () => {
39
- it('is false when navigator.mediaDevices is unavailable', () => {
40
- Object.defineProperty(globalThis, 'navigator', {
41
- value: {},
42
- configurable: true,
43
- });
44
- expect(supportsUserMedia()).toBe(false);
45
- expect(supportsDisplayMedia()).toBe(false);
46
- });
47
- it('is true only for the methods that exist', () => {
48
- Object.defineProperty(globalThis, 'navigator', {
49
- value: { mediaDevices: { getUserMedia: vi.fn() } },
50
- configurable: true,
51
- });
52
- expect(supportsUserMedia()).toBe(true);
53
- expect(supportsDisplayMedia()).toBe(false);
54
- Object.defineProperty(globalThis, 'navigator', {
55
- value: { mediaDevices: { getUserMedia: vi.fn(), getDisplayMedia: vi.fn() } },
56
- configurable: true,
57
- });
58
- expect(supportsUserMedia()).toBe(true);
59
- expect(supportsDisplayMedia()).toBe(true);
60
- });
61
- });
62
- describe('resolveFormat', () => {
63
- it('picks the first supported audio candidate', () => {
64
- installMediaRecorderStub(['audio/webm;codecs=opus', 'audio/webm']);
65
- const fmt = resolveFormat('audio');
66
- expect(fmt.mimeType).toBe('audio/webm;codecs=opus');
67
- expect(fmt.extension).toBe('.webm');
68
- expect(fmt.directory).toBe('audio');
69
- });
70
- it('picks the first supported video candidate', () => {
71
- installMediaRecorderStub(['video/mp4;codecs=avc1.42E01E,mp4a.40.2']);
72
- const fmt = resolveFormat('video');
73
- expect(fmt.mimeType).toBe('video/mp4;codecs=avc1.42E01E,mp4a.40.2');
74
- expect(fmt.extension).toBe('.mp4');
75
- expect(fmt.directory).toBe('video');
76
- });
77
- it('honors a caller-supplied preferred MIME when supported', () => {
78
- installMediaRecorderStub(['audio/webm', 'audio/ogg;codecs=opus']);
79
- const fmt = resolveFormat('audio', 'audio/ogg;codecs=opus');
80
- expect(fmt.mimeType).toBe('audio/ogg;codecs=opus');
81
- expect(fmt.extension).toBe('.ogg');
82
- });
83
- it('falls through the candidate list when the preferred MIME is unsupported', () => {
84
- installMediaRecorderStub(['audio/webm']);
85
- const fmt = resolveFormat('audio', 'audio/aac');
86
- expect(fmt.mimeType).toBe('audio/webm');
87
- });
88
- it('returns an empty MIME with a .webm extension fallback when nothing matches', () => {
89
- installMediaRecorderStub([]);
90
- const fmt = resolveFormat('video');
91
- expect(fmt.mimeType).toBe('');
92
- expect(fmt.extension).toBe('.webm');
93
- });
94
- it('returns the .webm fallback extension when MediaRecorder is absent entirely', () => {
95
- delete globalThis.MediaRecorder;
96
- const fmt = resolveFormat('audio');
97
- expect(fmt.mimeType).toBe('');
98
- expect(fmt.extension).toBe('.webm');
99
- expect(fmt.directory).toBe('audio');
100
- });
101
- });
102
- describe('buildFilename', () => {
103
- it('uses the basename when supplied, prefixed with the chosen extension', () => {
104
- expect(buildFilename('audio', '.webm', 'intro')).toBe('intro.webm');
105
- });
106
- it('sanitizes filesystem-hostile characters', () => {
107
- expect(buildFilename('video', '.mp4', 'my recording: take/2?')).toBe('my-recording--take-2-.mp4');
108
- });
109
- it('falls back to a timestamped name when no basename is supplied', () => {
110
- const name = buildFilename('audio', '.webm');
111
- expect(name.startsWith('narration-')).toBe(true);
112
- expect(name.endsWith('.webm')).toBe(true);
113
- // Format is narration-YYYYMMDD-HHMMSS.webm — 15 chars after the prefix.
114
- expect(name).toMatch(/^narration-\d{8}-\d{6}\.webm$/);
115
- });
116
- it('uses the recording-* prefix for video sources', () => {
117
- const name = buildFilename('video', '.mp4');
118
- expect(name).toMatch(/^recording-\d{8}-\d{6}\.mp4$/);
119
- });
120
- });
121
- //# sourceMappingURL=recorderFormats.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recorderFormats.test.js","sourceRoot":"","sources":["../../src/__tests__/recorderFormats.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=recorderTimingJson.test.d.ts.map