@bendyline/squisq-editor-react 1.5.1 → 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,52 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * @vitest-environment jsdom
4
- *
5
- * High-level smoke test for the `<ImageEditor>` shell — verifies it
6
- * mounts against a sidecar container, finishes its initial seed, and
7
- * renders the toolbar / canvas / panels.
8
- */
9
- import { describe, it, expect, beforeEach, vi } from 'vitest';
10
- import { render, screen, waitFor } from '@testing-library/react';
11
- import { MemoryContentContainer, scopeContainer } from '@bendyline/squisq/storage';
12
- import { writeImageEditDoc, createEmptyImageEditDoc } from '@bendyline/squisq/imageEdit';
13
- import { ImageEditor } from '../ImageEditor.js';
14
- beforeEach(() => {
15
- if (typeof URL.createObjectURL !== 'function') {
16
- Object.defineProperty(URL, 'createObjectURL', {
17
- configurable: true,
18
- value: vi.fn(() => 'blob:stub'),
19
- });
20
- }
21
- if (typeof URL.revokeObjectURL !== 'function') {
22
- Object.defineProperty(URL, 'revokeObjectURL', {
23
- configurable: true,
24
- value: vi.fn(),
25
- });
26
- }
27
- });
28
- describe('<ImageEditor>', () => {
29
- it('mounts an existing state.json and shows toolbar / layers / properties', async () => {
30
- const parent = new MemoryContentContainer();
31
- const sidecar = scopeContainer(parent, 'pic_files');
32
- await writeImageEditDoc(sidecar, createEmptyImageEditDoc(64, 48));
33
- render(_jsx(ImageEditor, { filesContainer: sidecar }));
34
- await waitFor(() => {
35
- expect(screen.getByTestId('image-editor')).toBeTruthy();
36
- });
37
- expect(screen.getByTestId('image-editor-toolbar')).toBeTruthy();
38
- expect(screen.getByTestId('image-editor-layers')).toBeTruthy();
39
- expect(screen.getByTestId('image-editor-properties')).toBeTruthy();
40
- // SVG canvas viewBox reflects the doc dimensions.
41
- const svg = document.querySelector('svg.squisq-image-editor-canvas');
42
- expect(svg).not.toBeNull();
43
- expect(svg.getAttribute('viewBox')).toBe('0 0 64 48');
44
- });
45
- it('shows the loading state before the seed completes', () => {
46
- const parent = new MemoryContentContainer();
47
- const sidecar = scopeContainer(parent, 'pic_files');
48
- render(_jsx(ImageEditor, { filesContainer: sidecar }));
49
- expect(screen.getByText(/loading image editor/i)).toBeTruthy();
50
- });
51
- });
52
- //# sourceMappingURL=imageEditorShell.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"imageEditorShell.test.js","sourceRoot":"","sources":["../../src/__tests__/imageEditorShell.test.tsx"],"names":[],"mappings":";AAAA;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,UAAU,CAAC,GAAG,EAAE;IACd,IAAI,OAAO,GAAG,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QAC9C,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,iBAAiB,EAAE;YAC5C,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QAC9C,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,iBAAiB,EAAE;YAC5C,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;SACf,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,MAAM,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACpD,MAAM,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAElE,MAAM,CAAC,KAAC,WAAW,IAAC,cAAc,EAAE,OAAO,GAAI,CAAC,CAAC;QAEjD,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAEnE,kDAAkD;QAClD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,gCAAgC,CAAC,CAAC;QACrE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,MAAM,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACpD,MAAM,CAAC,KAAC,WAAW,IAAC,cAAc,EAAE,OAAO,GAAI,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ImageEditDoc } from '@bendyline/squisq/schemas';
2
- export type _Unused = ImageEditDoc;
3
- //# sourceMappingURL=imageEditorState.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"imageEditorState.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/imageEditorState.test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,2BAA2B,CAAC;AAyK9E,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC"}
@@ -1,148 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { createEmptyImageEditDoc } from '@bendyline/squisq/imageEdit';
3
- import { imageEditorReducer, initialImageEditorState, } from '../imageEditor/state.js';
4
- function bootstrap() {
5
- const doc = createEmptyImageEditDoc(400, 300);
6
- // touch sets updatedAt — clear it for stable comparisons
7
- return initialImageEditorState(doc);
8
- }
9
- function dispatchAll(state, actions) {
10
- return actions.reduce((s, a) => imageEditorReducer(s, a), state);
11
- }
12
- describe('imageEditorReducer', () => {
13
- it('initial state is clean and selects no layer', () => {
14
- const s = bootstrap();
15
- expect(s.dirty).toBe(false);
16
- expect(s.selectedLayerId).toBe(null);
17
- expect(s.tool).toBe('select');
18
- expect(s.doc.canvas.width).toBe(400);
19
- });
20
- it('add-layer assigns an id, marks dirty, and selects by default', () => {
21
- const s0 = bootstrap();
22
- const s1 = imageEditorReducer(s0, {
23
- type: 'add-layer',
24
- layer: {
25
- type: 'shape',
26
- position: { x: 0, y: 0, width: 50, height: 50 },
27
- content: { shape: 'rect', fill: '#fff' },
28
- },
29
- });
30
- expect(s1.dirty).toBe(true);
31
- expect(s1.doc.layers).toHaveLength(1);
32
- const added = s1.doc.layers[0];
33
- expect(added.id).toMatch(/^layer-/);
34
- expect(s1.selectedLayerId).toBe(added.id);
35
- });
36
- it('add-layer with select:false leaves selection untouched', () => {
37
- const s = imageEditorReducer(bootstrap(), {
38
- type: 'add-layer',
39
- select: false,
40
- layer: {
41
- type: 'shape',
42
- position: { x: 0, y: 0, width: 1, height: 1 },
43
- content: { shape: 'rect' },
44
- },
45
- });
46
- expect(s.selectedLayerId).toBe(null);
47
- });
48
- it('remove-layer drops the layer and clears selection if it was selected', () => {
49
- const s1 = imageEditorReducer(bootstrap(), {
50
- type: 'add-layer',
51
- layer: {
52
- type: 'shape',
53
- position: { x: 0, y: 0, width: 1, height: 1 },
54
- content: { shape: 'rect' },
55
- },
56
- });
57
- const id = s1.doc.layers[0].id;
58
- const s2 = imageEditorReducer(s1, { type: 'remove-layer', layerId: id });
59
- expect(s2.doc.layers).toHaveLength(0);
60
- expect(s2.selectedLayerId).toBe(null);
61
- });
62
- it('update-layer applies a shallow patch', () => {
63
- const s1 = imageEditorReducer(bootstrap(), {
64
- type: 'add-layer',
65
- layer: {
66
- type: 'shape',
67
- position: { x: 10, y: 10, width: 20, height: 20 },
68
- content: { shape: 'rect' },
69
- },
70
- });
71
- const id = s1.doc.layers[0].id;
72
- const s2 = imageEditorReducer(s1, {
73
- type: 'update-layer',
74
- layerId: id,
75
- patch: { name: 'Box', opacity: 0.5 },
76
- });
77
- const layer = s2.doc.layers[0];
78
- expect(layer.name).toBe('Box');
79
- expect(layer.opacity).toBe(0.5);
80
- // Untouched fields are preserved.
81
- expect(layer.position).toEqual({ x: 10, y: 10, width: 20, height: 20 });
82
- });
83
- it('reorder-layer moves a layer to the requested index', () => {
84
- let s = bootstrap();
85
- s = dispatchAll(s, [
86
- { type: 'add-layer', layer: shape('a') },
87
- { type: 'add-layer', layer: shape('b') },
88
- { type: 'add-layer', layer: shape('c') },
89
- ]);
90
- const ids = s.doc.layers.map((l) => l.id);
91
- // Move the first layer to the top of the stack.
92
- const s2 = imageEditorReducer(s, { type: 'reorder-layer', layerId: ids[0], toIndex: 2 });
93
- expect(s2.doc.layers.map((l) => l.id)).toEqual([ids[1], ids[2], ids[0]]);
94
- });
95
- it('crop translates layer positions into the new origin and resizes the canvas', () => {
96
- let s = bootstrap();
97
- s = imageEditorReducer(s, {
98
- type: 'add-layer',
99
- layer: {
100
- type: 'shape',
101
- position: { x: 100, y: 80, width: 50, height: 50 },
102
- content: { shape: 'rect' },
103
- },
104
- });
105
- const s2 = imageEditorReducer(s, {
106
- type: 'crop',
107
- rect: { x: 50, y: 50, width: 200, height: 150 },
108
- });
109
- expect(s2.doc.canvas.width).toBe(200);
110
- expect(s2.doc.canvas.height).toBe(150);
111
- const layer = s2.doc.layers[0];
112
- expect(layer.position.x).toBe(50);
113
- expect(layer.position.y).toBe(30);
114
- });
115
- it('mark-clean clears the dirty flag without touching the doc', () => {
116
- let s = bootstrap();
117
- s = imageEditorReducer(s, { type: 'set-canvas', canvas: { width: 1, height: 1 } });
118
- expect(s.dirty).toBe(true);
119
- const docRef = s.doc;
120
- s = imageEditorReducer(s, { type: 'mark-clean' });
121
- expect(s.dirty).toBe(false);
122
- expect(s.doc).toBe(docRef);
123
- });
124
- it('select / set-tool do not mark the doc dirty', () => {
125
- const s0 = imageEditorReducer(bootstrap(), {
126
- type: 'add-layer',
127
- layer: shape('x'),
128
- });
129
- const s1 = imageEditorReducer({ ...s0, dirty: false }, {
130
- type: 'select',
131
- layerId: s0.doc.layers[0].id,
132
- });
133
- expect(s1.dirty).toBe(false);
134
- const s2 = imageEditorReducer(s1, { type: 'set-tool', tool: 'crop' });
135
- expect(s2.dirty).toBe(false);
136
- expect(s2.tool).toBe('crop');
137
- });
138
- });
139
- function shape(name) {
140
- return {
141
- id: '', // assigned by reducer
142
- type: 'shape',
143
- name,
144
- position: { x: 0, y: 0, width: 10, height: 10 },
145
- content: { shape: 'rect' },
146
- };
147
- }
148
- //# sourceMappingURL=imageEditorState.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"imageEditorState.test.js","sourceRoot":"","sources":["../../src/__tests__/imageEditorState.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=inlinePreviewGutter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inlinePreviewGutter.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/inlinePreviewGutter.test.tsx"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { describe, expect, it } from 'vitest';
3
- import { render, screen } from '@testing-library/react';
4
- import { EditorProvider } from '../EditorContext';
5
- import { InlinePreviewGutter } from '../InlinePreviewGutter';
6
- /**
7
- * The gutter pulls its data from the EditorContext's parsed Doc. We mount
8
- * it against a real provider seeded with markdown that contains both an
9
- * annotated heading (`{[title]}`) and a plain heading. The first
10
- * should produce a card; the second should be ignored.
11
- *
12
- * We deliberately don't snapshot the SVG — the BlockRenderer covers that
13
- * elsewhere. Here we just assert (a) the gutter mounts, (b) it renders
14
- * one card per annotated block, and (c) the empty state shows when there
15
- * are no annotated blocks.
16
- */
17
- function renderGutter(markdown) {
18
- return render(_jsx(EditorProvider, { initialMarkdown: markdown, initialView: "wysiwyg", articleId: "test", children: _jsx(InlinePreviewGutter, {}) }));
19
- }
20
- describe('InlinePreviewGutter', () => {
21
- it('renders the empty state when no blocks are template-annotated', async () => {
22
- renderGutter('# Plain heading\n\nSome body text.\n');
23
- expect(await screen.findByText(/tag a heading with a template/i)).toBeTruthy();
24
- });
25
- it('renders one card per template-annotated block', async () => {
26
- const md = [
27
- '# Welcome {[title]}',
28
- '',
29
- 'Subtitle goes here.',
30
- '',
31
- '## Plain heading',
32
- '',
33
- 'No template tag — should not produce a card.',
34
- '',
35
- '## Big number {[statHighlight]}',
36
- '',
37
- '42',
38
- ].join('\n');
39
- const { container } = renderGutter(md);
40
- // Two annotated headings → two cards.
41
- await screen.findByTestId('inline-preview-gutter');
42
- const cards = container.querySelectorAll('.squisq-inline-preview-card');
43
- expect(cards.length).toBe(2);
44
- // Template labels are rendered alongside each card.
45
- const labels = Array.from(container.querySelectorAll('.squisq-inline-preview-card-template')).map((el) => el.textContent);
46
- // Templates render their human-readable label (via `templateLabel`).
47
- expect(labels).toContain('Title');
48
- expect(labels).toContain('Stat Highlight');
49
- });
50
- });
51
- //# sourceMappingURL=inlinePreviewGutter.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inlinePreviewGutter.test.js","sourceRoot":"","sources":["../../src/__tests__/inlinePreviewGutter.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;;;;;GAUG;AAEH,SAAS,YAAY,CAAC,QAAgB;IACpC,OAAO,MAAM,CACX,KAAC,cAAc,IAAC,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAC,SAAS,EAAC,SAAS,EAAC,MAAM,YAC/E,KAAC,mBAAmB,KAAG,GACR,CAClB,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,YAAY,CAAC,sCAAsC,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,gCAAgC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,EAAE,GAAG;YACT,qBAAqB;YACrB,EAAE;YACF,qBAAqB;YACrB,EAAE;YACF,kBAAkB;YAClB,EAAE;YACF,8CAA8C;YAC9C,EAAE;YACF,iCAAiC;YACjC,EAAE;YACF,IAAI;SACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAEvC,sCAAsC;QACtC,MAAM,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,SAAS,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;QACxE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE7B,oDAAoD;QACpD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CACvB,SAAS,CAAC,gBAAgB,CAAC,sCAAsC,CAAC,CACnE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QAC9B,qEAAqE;QACrE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=inlinePreviewGutterAllBlocks.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inlinePreviewGutterAllBlocks.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/inlinePreviewGutterAllBlocks.test.tsx"],"names":[],"mappings":""}
@@ -1,63 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { describe, expect, it, beforeAll } from 'vitest';
3
- import { render, screen, waitFor } from '@testing-library/react';
4
- import { EditorProvider } from '../EditorContext';
5
- import { InlinePreviewGutter } from '../InlinePreviewGutter';
6
- // jsdom lacks ResizeObserver — the gutter's heading-layout hook wires one
7
- // up to recompute on editor resizes. Stub a no-op for these tests.
8
- beforeAll(() => {
9
- if (typeof globalThis.ResizeObserver === 'undefined') {
10
- globalThis.ResizeObserver = class {
11
- observe() { }
12
- unobserve() { }
13
- disconnect() { }
14
- };
15
- }
16
- });
17
- /**
18
- * The gutter pulls heading data from the parsed Doc (via `useHeadingLayout`)
19
- * and pairs it to DOM headings inside the `.squisq-wysiwyg-container`.
20
- * To exercise the all-blocks bracket logic we provide both: real markdown
21
- * (so the parser populates `doc.blocks`) AND a sibling stub container with
22
- * matching `<h*>` elements (so the DOM-pairing path finds something to
23
- * measure).
24
- */
25
- function renderWithMatchingDom(markdown, headingHtml) {
26
- return render(_jsx(EditorProvider, { initialMarkdown: markdown, initialView: "wysiwyg", articleId: "test", children: _jsxs("div", { className: "squisq-editor-with-gutter", style: { position: 'relative', height: 600 }, children: [_jsx("div", { className: "squisq-wysiwyg-container", style: { position: 'relative', width: 800, height: 600 }, children: _jsx("div", { className: "squisq-wysiwyg-editor", dangerouslySetInnerHTML: { __html: headingHtml } }) }), _jsx(InlinePreviewGutter, {})] }) }));
27
- }
28
- describe('InlinePreviewGutter — all-block bracket lines', () => {
29
- it('renders a vertical-extent bar per heading even when none are annotated', async () => {
30
- const md = '# Hello World\n\nBody\n\n## Getting Started\n\nBody\n\n## Tips\n\nBody\n';
31
- const { container } = renderWithMatchingDom(md, '<h1>Hello World</h1>' +
32
- '<p>Body</p>' +
33
- '<h2>Getting Started</h2>' +
34
- '<p>Body</p>' +
35
- '<h2>Tips</h2>' +
36
- '<p>Body</p>');
37
- await waitFor(() => {
38
- const bars = container.querySelectorAll('.squisq-inline-preview-extent');
39
- expect(bars.length).toBe(3);
40
- }, { timeout: 1000 });
41
- // All three should be the untagged variant (no `data-template` on any).
42
- const bars = container.querySelectorAll('.squisq-inline-preview-extent');
43
- bars.forEach((bar) => expect(bar.classList.contains('squisq-inline-preview-extent--untagged')).toBe(true));
44
- });
45
- it('renders a strong tagged bar for annotated headings + lighter bars for the rest', async () => {
46
- const md = '# Welcome\n\n## Getting Started {[sectionHeader]}\n\n## Tips\n';
47
- const { container } = renderWithMatchingDom(md, '<h1>Welcome</h1>' +
48
- '<h2 data-template="sectionHeader">Getting Started</h2>' +
49
- '<h2>Tips</h2>');
50
- await waitFor(() => {
51
- const bars = container.querySelectorAll('.squisq-inline-preview-extent');
52
- expect(bars.length).toBe(3);
53
- }, { timeout: 1000 });
54
- const bars = Array.from(container.querySelectorAll('.squisq-inline-preview-extent'));
55
- const tagged = bars.filter((b) => !b.classList.contains('squisq-inline-preview-extent--untagged'));
56
- const untagged = bars.filter((b) => b.classList.contains('squisq-inline-preview-extent--untagged'));
57
- expect(tagged.length).toBe(1);
58
- expect(untagged.length).toBe(2);
59
- });
60
- });
61
- // `screen` import unused but kept to mirror the sibling test file's style.
62
- void screen;
63
- //# sourceMappingURL=inlinePreviewGutterAllBlocks.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inlinePreviewGutterAllBlocks.test.js","sourceRoot":"","sources":["../../src/__tests__/inlinePreviewGutterAllBlocks.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=jsonEditor.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsonEditor.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/jsonEditor.test.tsx"],"names":[],"mappings":""}
@@ -1,134 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { describe, it, expect, vi } from 'vitest';
3
- import { useState } from 'react';
4
- import { fireEvent, render, screen } from '@testing-library/react';
5
- import { JsonEditor } from '../jsonEditor';
6
- function Controlled({ schema, initial, onValueChange, }) {
7
- const [value, setValue] = useState(initial);
8
- return (_jsx(JsonEditor, { schema: schema, value: value, onChange: (v) => {
9
- setValue(v);
10
- onValueChange?.(v);
11
- } }));
12
- }
13
- describe('JsonEditor', () => {
14
- it('renders text input and propagates edits through onChange', () => {
15
- const schema = {
16
- type: 'object',
17
- properties: { title: { type: 'string', title: 'Title' } },
18
- };
19
- const onChange = vi.fn();
20
- render(_jsx(Controlled, { schema: schema, initial: { title: 'Hi' }, onValueChange: onChange }));
21
- const input = screen.getByDisplayValue('Hi');
22
- fireEvent.change(input, { target: { value: 'Hello' } });
23
- expect(onChange).toHaveBeenLastCalledWith({ title: 'Hello' });
24
- });
25
- it('toggles a boolean via the toggle control', () => {
26
- const schema = {
27
- type: 'object',
28
- properties: { active: { type: 'boolean', title: 'Active' } },
29
- };
30
- const onChange = vi.fn();
31
- render(_jsx(Controlled, { schema: schema, initial: { active: false }, onValueChange: onChange }));
32
- const button = screen.getByRole('button', { pressed: false });
33
- fireEvent.click(button);
34
- expect(onChange).toHaveBeenLastCalledWith({ active: true });
35
- });
36
- it('hides fields whose hidden rule matches', () => {
37
- const schema = {
38
- type: 'object',
39
- properties: {
40
- showAuthor: { type: 'boolean', title: 'Show author' },
41
- authorName: {
42
- type: 'string',
43
- title: 'Author name',
44
- squisq: { hidden: { field: 'showAuthor', truthy: false } },
45
- },
46
- },
47
- };
48
- const { container } = render(_jsx(Controlled, { schema: schema, initial: { showAuthor: false, authorName: 'Alex' } }));
49
- expect(container.textContent).not.toContain('Author name');
50
- });
51
- it('selecting a different segmented option commits the new enum value', () => {
52
- const schema = {
53
- type: 'object',
54
- properties: {
55
- size: { type: 'string', title: 'Size', enum: ['s', 'm', 'l'] },
56
- },
57
- };
58
- const onChange = vi.fn();
59
- render(_jsx(Controlled, { schema: schema, initial: { size: 's' }, onValueChange: onChange }));
60
- fireEvent.click(screen.getByRole('button', { name: 'l' }));
61
- expect(onChange).toHaveBeenLastCalledWith({ size: 'l' });
62
- });
63
- it('card-stack: + Add appends, × Remove removes, ↑↓ reorder', () => {
64
- const schema = {
65
- type: 'object',
66
- properties: {
67
- sections: {
68
- type: 'array',
69
- title: 'Sections',
70
- items: {
71
- type: 'object',
72
- properties: { heading: { type: 'string' } },
73
- squisq: { itemLabel: { fromField: 'heading' } },
74
- },
75
- squisq: { control: 'card-stack', addLabel: '+ Add section' },
76
- },
77
- },
78
- };
79
- const onChange = vi.fn();
80
- render(_jsx(Controlled, { schema: schema, initial: { sections: [{ heading: 'A' }, { heading: 'B' }] }, onValueChange: onChange }));
81
- // + Add appends a new empty item.
82
- fireEvent.click(screen.getByText('+ Add section'));
83
- expect(onChange).toHaveBeenLastCalledWith({
84
- sections: [{ heading: 'A' }, { heading: 'B' }, { heading: '' }],
85
- });
86
- // × on the first card removes it.
87
- const removeButtons = screen.getAllByLabelText('Remove');
88
- fireEvent.click(removeButtons[0]);
89
- expect(onChange).toHaveBeenLastCalledWith({
90
- sections: [{ heading: 'B' }, { heading: '' }],
91
- });
92
- // ↓ on the first card reorders.
93
- const downs = screen.getAllByLabelText('Move down');
94
- fireEvent.click(downs[0]);
95
- expect(onChange).toHaveBeenLastCalledWith({
96
- sections: [{ heading: '' }, { heading: 'B' }],
97
- });
98
- });
99
- it('chip-bin: typing + Enter appends, × removes', () => {
100
- const schema = {
101
- type: 'object',
102
- properties: {
103
- tags: {
104
- type: 'array',
105
- items: { type: 'string' },
106
- squisq: { control: 'chip-bin', addLabel: '+ Add tag' },
107
- },
108
- },
109
- };
110
- const onChange = vi.fn();
111
- render(_jsx(Controlled, { schema: schema, initial: { tags: ['one'] }, onValueChange: onChange }));
112
- const addInput = screen.getByPlaceholderText('+ Add tag');
113
- fireEvent.change(addInput, { target: { value: 'two' } });
114
- fireEvent.keyDown(addInput, { key: 'Enter' });
115
- expect(onChange).toHaveBeenLastCalledWith({ tags: ['one', 'two'] });
116
- fireEvent.click(screen.getByLabelText('Remove one'));
117
- expect(onChange).toHaveBeenLastCalledWith({ tags: ['two'] });
118
- });
119
- it('omitting onChange disables every editor', () => {
120
- const schema = {
121
- type: 'object',
122
- properties: { title: { type: 'string', title: 'Title' } },
123
- };
124
- const onChange = vi.fn();
125
- // Use a sniffer onChange we can verify is never called by simulating an
126
- // attempted change. We render WITHOUT passing onChange to JsonEditor.
127
- render(_jsx(JsonEditor, { schema: schema, value: { title: 'Hi' } }));
128
- const input = screen.getByDisplayValue('Hi');
129
- expect(input.disabled).toBe(true);
130
- fireEvent.change(input, { target: { value: 'changed' } });
131
- expect(onChange).not.toHaveBeenCalled();
132
- });
133
- });
134
- //# sourceMappingURL=jsonEditor.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsonEditor.test.js","sourceRoot":"","sources":["../../src/__tests__/jsonEditor.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=layersPanel.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layersPanel.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/layersPanel.test.tsx"],"names":[],"mappings":""}
@@ -1,84 +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 { LayersPanel } from '../imageEditor/LayersPanel.js';
8
- function buildDoc() {
9
- return {
10
- version: 1,
11
- canvas: { width: 100, height: 100 },
12
- layers: [
13
- {
14
- id: 'a',
15
- type: 'shape',
16
- name: 'Bottom',
17
- position: { x: 0, y: 0, width: 10, height: 10 },
18
- content: { shape: 'rect' },
19
- },
20
- {
21
- id: 'b',
22
- type: 'text',
23
- name: 'Middle',
24
- position: { x: 0, y: 0, width: 50, height: 20 },
25
- content: { text: 'Hi', style: { fontSize: 16, color: '#000' } },
26
- },
27
- {
28
- id: 'c',
29
- type: 'shape',
30
- name: 'Top',
31
- visible: false,
32
- position: { x: 0, y: 0, width: 10, height: 10 },
33
- content: { shape: 'rect' },
34
- },
35
- ],
36
- };
37
- }
38
- describe('LayersPanel', () => {
39
- it('renders layers with the top of the SVG stack first', () => {
40
- const dispatch = vi.fn();
41
- render(_jsx(LayersPanel, { doc: buildDoc(), selectedLayerId: null, dispatch: dispatch }));
42
- const items = screen.getAllByText(/Bottom|Middle|Top/);
43
- expect(items[0]?.textContent).toContain('Top');
44
- expect(items[items.length - 1]?.textContent).toContain('Bottom');
45
- });
46
- it('clicking the layer name dispatches a select action', () => {
47
- const dispatch = vi.fn();
48
- render(_jsx(LayersPanel, { doc: buildDoc(), selectedLayerId: null, dispatch: dispatch }));
49
- fireEvent.click(screen.getByText('Middle'));
50
- expect(dispatch).toHaveBeenCalledWith({ type: 'select', layerId: 'b' });
51
- });
52
- it('toggling visibility dispatches an update-layer action', () => {
53
- const dispatch = vi.fn();
54
- render(_jsx(LayersPanel, { doc: buildDoc(), selectedLayerId: null, dispatch: dispatch }));
55
- // The "Hide layer" buttons exist for visible layers.
56
- const hideButtons = screen.getAllByRole('button', { name: 'Hide layer' });
57
- fireEvent.click(hideButtons[0]); // top-most visible layer is 'b'
58
- expect(dispatch).toHaveBeenCalledWith({
59
- type: 'update-layer',
60
- layerId: 'b',
61
- patch: { visible: false },
62
- });
63
- });
64
- it('move-up button is disabled at the top of the stack', () => {
65
- const dispatch = vi.fn();
66
- render(_jsx(LayersPanel, { doc: buildDoc(), selectedLayerId: null, dispatch: dispatch }));
67
- const upButtons = screen.getAllByRole('button', { name: 'Move layer up' });
68
- // Visual order is c, b, a; layer 'c' is at the top of the stack and cannot move up.
69
- expect(upButtons[0].disabled).toBe(true);
70
- });
71
- it('delete button dispatches a remove-layer action', () => {
72
- const dispatch = vi.fn();
73
- render(_jsx(LayersPanel, { doc: buildDoc(), selectedLayerId: null, dispatch: dispatch }));
74
- const delButtons = screen.getAllByRole('button', { name: 'Delete layer' });
75
- fireEvent.click(delButtons[0]); // top of stack ('c')
76
- expect(dispatch).toHaveBeenCalledWith({ type: 'remove-layer', layerId: 'c' });
77
- });
78
- it('shows an empty-state message when there are no layers', () => {
79
- const dispatch = vi.fn();
80
- render(_jsx(LayersPanel, { doc: { version: 1, canvas: { width: 1, height: 1 }, layers: [] }, selectedLayerId: null, dispatch: dispatch }));
81
- expect(screen.getByText(/no layers yet/i)).toBeTruthy();
82
- });
83
- });
84
- //# sourceMappingURL=layersPanel.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layersPanel.test.js","sourceRoot":"","sources":["../../src/__tests__/layersPanel.test.tsx"],"names":[],"mappings":"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"}