@bendyline/squisq-editor-react 1.3.0 → 1.5.0

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 (461) hide show
  1. package/dist/DocumentSettingsDialog.d.ts +26 -0
  2. package/dist/DocumentSettingsDialog.d.ts.map +1 -0
  3. package/dist/DocumentSettingsDialog.js +115 -0
  4. package/dist/DocumentSettingsDialog.js.map +1 -0
  5. package/dist/EditorContext.d.ts +248 -4
  6. package/dist/EditorContext.d.ts.map +1 -1
  7. package/dist/EditorContext.js +248 -10
  8. package/dist/EditorContext.js.map +1 -1
  9. package/dist/EditorShell.d.ts +184 -4
  10. package/dist/EditorShell.d.ts.map +1 -1
  11. package/dist/EditorShell.js +184 -12
  12. package/dist/EditorShell.js.map +1 -1
  13. package/dist/EmojiPicker.d.ts +50 -0
  14. package/dist/EmojiPicker.d.ts.map +1 -0
  15. package/dist/EmojiPicker.js +182 -0
  16. package/dist/EmojiPicker.js.map +1 -0
  17. package/dist/ImageEditor.d.ts +68 -0
  18. package/dist/ImageEditor.d.ts.map +1 -0
  19. package/dist/ImageEditor.js +166 -0
  20. package/dist/ImageEditor.js.map +1 -0
  21. package/dist/ImageNodeView.d.ts +13 -1
  22. package/dist/ImageNodeView.d.ts.map +1 -1
  23. package/dist/ImageNodeView.js +172 -19
  24. package/dist/ImageNodeView.js.map +1 -1
  25. package/dist/ImageViewer.d.ts +26 -0
  26. package/dist/ImageViewer.d.ts.map +1 -0
  27. package/dist/ImageViewer.js +119 -0
  28. package/dist/ImageViewer.js.map +1 -0
  29. package/dist/InlineIcon.d.ts +17 -0
  30. package/dist/InlineIcon.d.ts.map +1 -0
  31. package/dist/InlineIcon.js +72 -0
  32. package/dist/InlineIcon.js.map +1 -0
  33. package/dist/InlinePreviewGutter.d.ts +52 -0
  34. package/dist/InlinePreviewGutter.d.ts.map +1 -0
  35. package/dist/InlinePreviewGutter.js +397 -0
  36. package/dist/InlinePreviewGutter.js.map +1 -0
  37. package/dist/LinkDialog.d.ts +43 -0
  38. package/dist/LinkDialog.d.ts.map +1 -0
  39. package/dist/LinkDialog.js +102 -0
  40. package/dist/LinkDialog.js.map +1 -0
  41. package/dist/MediaBin.d.ts +12 -1
  42. package/dist/MediaBin.d.ts.map +1 -1
  43. package/dist/MediaBin.js +13 -3
  44. package/dist/MediaBin.js.map +1 -1
  45. package/dist/MentionExtension.js +10 -7
  46. package/dist/MentionExtension.js.map +1 -1
  47. package/dist/OutlinePanel.d.ts +17 -0
  48. package/dist/OutlinePanel.d.ts.map +1 -0
  49. package/dist/OutlinePanel.js +167 -0
  50. package/dist/OutlinePanel.js.map +1 -0
  51. package/dist/PlainHtmlPreview.d.ts +50 -0
  52. package/dist/PlainHtmlPreview.d.ts.map +1 -0
  53. package/dist/PlainHtmlPreview.js +155 -0
  54. package/dist/PlainHtmlPreview.js.map +1 -0
  55. package/dist/PreviewControls.d.ts +15 -1
  56. package/dist/PreviewControls.d.ts.map +1 -1
  57. package/dist/PreviewControls.js +75 -18
  58. package/dist/PreviewControls.js.map +1 -1
  59. package/dist/PreviewPanel.d.ts +11 -10
  60. package/dist/PreviewPanel.d.ts.map +1 -1
  61. package/dist/PreviewPanel.js +20 -17
  62. package/dist/PreviewPanel.js.map +1 -1
  63. package/dist/RawEditor.d.ts.map +1 -1
  64. package/dist/RawEditor.js +198 -4
  65. package/dist/RawEditor.js.map +1 -1
  66. package/dist/RecorderEntry.d.ts +24 -0
  67. package/dist/RecorderEntry.d.ts.map +1 -0
  68. package/dist/RecorderEntry.js +139 -0
  69. package/dist/RecorderEntry.js.map +1 -0
  70. package/dist/TemplateAnnotation.d.ts.map +1 -1
  71. package/dist/TemplateAnnotation.js +32 -6
  72. package/dist/TemplateAnnotation.js.map +1 -1
  73. package/dist/TemplatePicker.d.ts +53 -0
  74. package/dist/TemplatePicker.d.ts.map +1 -0
  75. package/dist/TemplatePicker.js +388 -0
  76. package/dist/TemplatePicker.js.map +1 -0
  77. package/dist/ThemeCustomizerPanel.d.ts +32 -0
  78. package/dist/ThemeCustomizerPanel.d.ts.map +1 -0
  79. package/dist/ThemeCustomizerPanel.js +256 -0
  80. package/dist/ThemeCustomizerPanel.js.map +1 -0
  81. package/dist/ThemePicker.d.ts +33 -0
  82. package/dist/ThemePicker.d.ts.map +1 -0
  83. package/dist/ThemePicker.js +148 -0
  84. package/dist/ThemePicker.js.map +1 -0
  85. package/dist/Toolbar.d.ts.map +1 -1
  86. package/dist/Toolbar.js +508 -33
  87. package/dist/Toolbar.js.map +1 -1
  88. package/dist/VersionHistoryPanel.d.ts +14 -0
  89. package/dist/VersionHistoryPanel.d.ts.map +1 -0
  90. package/dist/VersionHistoryPanel.js +147 -0
  91. package/dist/VersionHistoryPanel.js.map +1 -0
  92. package/dist/ViewMenuPanel.d.ts +13 -0
  93. package/dist/ViewMenuPanel.d.ts.map +1 -0
  94. package/dist/ViewMenuPanel.js +58 -0
  95. package/dist/ViewMenuPanel.js.map +1 -0
  96. package/dist/WysiwygEditor.d.ts.map +1 -1
  97. package/dist/WysiwygEditor.js +198 -9
  98. package/dist/WysiwygEditor.js.map +1 -1
  99. package/dist/__tests__/detectMarkdown.test.js +0 -14
  100. package/dist/__tests__/detectMarkdown.test.js.map +1 -1
  101. package/dist/__tests__/documentSettingsDialog.test.d.ts +2 -0
  102. package/dist/__tests__/documentSettingsDialog.test.d.ts.map +1 -0
  103. package/dist/__tests__/documentSettingsDialog.test.js +132 -0
  104. package/dist/__tests__/documentSettingsDialog.test.js.map +1 -0
  105. package/dist/__tests__/emojiPicker.test.d.ts +2 -0
  106. package/dist/__tests__/emojiPicker.test.d.ts.map +1 -0
  107. package/dist/__tests__/emojiPicker.test.js +111 -0
  108. package/dist/__tests__/emojiPicker.test.js.map +1 -0
  109. package/dist/__tests__/fileKind.test.js +13 -0
  110. package/dist/__tests__/fileKind.test.js.map +1 -1
  111. package/dist/__tests__/imageEditAffordance.test.d.ts +2 -0
  112. package/dist/__tests__/imageEditAffordance.test.d.ts.map +1 -0
  113. package/dist/__tests__/imageEditAffordance.test.js +188 -0
  114. package/dist/__tests__/imageEditAffordance.test.js.map +1 -0
  115. package/dist/__tests__/imageEditorShell.test.d.ts +2 -0
  116. package/dist/__tests__/imageEditorShell.test.d.ts.map +1 -0
  117. package/dist/__tests__/imageEditorShell.test.js +52 -0
  118. package/dist/__tests__/imageEditorShell.test.js.map +1 -0
  119. package/dist/__tests__/imageEditorState.test.d.ts +3 -0
  120. package/dist/__tests__/imageEditorState.test.d.ts.map +1 -0
  121. package/dist/__tests__/imageEditorState.test.js +148 -0
  122. package/dist/__tests__/imageEditorState.test.js.map +1 -0
  123. package/dist/__tests__/inlinePreviewGutter.test.d.ts +2 -0
  124. package/dist/__tests__/inlinePreviewGutter.test.d.ts.map +1 -0
  125. package/dist/__tests__/inlinePreviewGutter.test.js +51 -0
  126. package/dist/__tests__/inlinePreviewGutter.test.js.map +1 -0
  127. package/dist/__tests__/inlinePreviewGutterAllBlocks.test.d.ts +2 -0
  128. package/dist/__tests__/inlinePreviewGutterAllBlocks.test.d.ts.map +1 -0
  129. package/dist/__tests__/inlinePreviewGutterAllBlocks.test.js +63 -0
  130. package/dist/__tests__/inlinePreviewGutterAllBlocks.test.js.map +1 -0
  131. package/dist/__tests__/jsonEditor.test.d.ts +2 -0
  132. package/dist/__tests__/jsonEditor.test.d.ts.map +1 -0
  133. package/dist/__tests__/jsonEditor.test.js +134 -0
  134. package/dist/__tests__/jsonEditor.test.js.map +1 -0
  135. package/dist/__tests__/layersPanel.test.d.ts +2 -0
  136. package/dist/__tests__/layersPanel.test.d.ts.map +1 -0
  137. package/dist/__tests__/layersPanel.test.js +84 -0
  138. package/dist/__tests__/layersPanel.test.js.map +1 -0
  139. package/dist/__tests__/linkDialogDocPicker.test.d.ts +7 -0
  140. package/dist/__tests__/linkDialogDocPicker.test.d.ts.map +1 -0
  141. package/dist/__tests__/linkDialogDocPicker.test.js +75 -0
  142. package/dist/__tests__/linkDialogDocPicker.test.js.map +1 -0
  143. package/dist/__tests__/mediaAttachmentFlow.test.d.ts +2 -0
  144. package/dist/__tests__/mediaAttachmentFlow.test.d.ts.map +1 -0
  145. package/dist/__tests__/mediaAttachmentFlow.test.js +99 -0
  146. package/dist/__tests__/mediaAttachmentFlow.test.js.map +1 -0
  147. package/dist/__tests__/outlinePanel.test.d.ts +2 -0
  148. package/dist/__tests__/outlinePanel.test.d.ts.map +1 -0
  149. package/dist/__tests__/outlinePanel.test.js +68 -0
  150. package/dist/__tests__/outlinePanel.test.js.map +1 -0
  151. package/dist/__tests__/plainHtmlPreview.test.d.ts +2 -0
  152. package/dist/__tests__/plainHtmlPreview.test.d.ts.map +1 -0
  153. package/dist/__tests__/plainHtmlPreview.test.js +87 -0
  154. package/dist/__tests__/plainHtmlPreview.test.js.map +1 -0
  155. package/dist/__tests__/propertiesPanel.test.d.ts +2 -0
  156. package/dist/__tests__/propertiesPanel.test.d.ts.map +1 -0
  157. package/dist/__tests__/propertiesPanel.test.js +64 -0
  158. package/dist/__tests__/propertiesPanel.test.js.map +1 -0
  159. package/dist/__tests__/recorderFormats.test.d.ts +2 -0
  160. package/dist/__tests__/recorderFormats.test.d.ts.map +1 -0
  161. package/dist/__tests__/recorderFormats.test.js +121 -0
  162. package/dist/__tests__/recorderFormats.test.js.map +1 -0
  163. package/dist/__tests__/recorderTimingJson.test.d.ts +2 -0
  164. package/dist/__tests__/recorderTimingJson.test.d.ts.map +1 -0
  165. package/dist/__tests__/recorderTimingJson.test.js +37 -0
  166. package/dist/__tests__/recorderTimingJson.test.js.map +1 -0
  167. package/dist/__tests__/templateAnnotationRoundTrip.test.d.ts +2 -0
  168. package/dist/__tests__/templateAnnotationRoundTrip.test.d.ts.map +1 -0
  169. package/dist/__tests__/templateAnnotationRoundTrip.test.js +31 -0
  170. package/dist/__tests__/templateAnnotationRoundTrip.test.js.map +1 -0
  171. package/dist/__tests__/tiptapBridge.test.js +26 -0
  172. package/dist/__tests__/tiptapBridge.test.js.map +1 -1
  173. package/dist/__tests__/tiptapImageRoundTrip.test.d.ts +2 -0
  174. package/dist/__tests__/tiptapImageRoundTrip.test.d.ts.map +1 -0
  175. package/dist/__tests__/tiptapImageRoundTrip.test.js +68 -0
  176. package/dist/__tests__/tiptapImageRoundTrip.test.js.map +1 -0
  177. package/dist/__tests__/useImageEditor.test.d.ts +2 -0
  178. package/dist/__tests__/useImageEditor.test.d.ts.map +1 -0
  179. package/dist/__tests__/useImageEditor.test.js +131 -0
  180. package/dist/__tests__/useImageEditor.test.js.map +1 -0
  181. package/dist/__tests__/useMediaRecorder.test.d.ts +2 -0
  182. package/dist/__tests__/useMediaRecorder.test.d.ts.map +1 -0
  183. package/dist/__tests__/useMediaRecorder.test.js +153 -0
  184. package/dist/__tests__/useMediaRecorder.test.js.map +1 -0
  185. package/dist/__tests__/versionHistory.test.d.ts +2 -0
  186. package/dist/__tests__/versionHistory.test.d.ts.map +1 -0
  187. package/dist/__tests__/versionHistory.test.js +124 -0
  188. package/dist/__tests__/versionHistory.test.js.map +1 -0
  189. package/dist/blockSlice.d.ts +24 -0
  190. package/dist/blockSlice.d.ts.map +1 -0
  191. package/dist/blockSlice.js +63 -0
  192. package/dist/blockSlice.js.map +1 -0
  193. package/dist/buildPreviewDoc.d.ts.map +1 -1
  194. package/dist/buildPreviewDoc.js +52 -2
  195. package/dist/buildPreviewDoc.js.map +1 -1
  196. package/dist/emojiData.d.ts +81 -0
  197. package/dist/emojiData.d.ts.map +1 -0
  198. package/dist/emojiData.js +1283 -0
  199. package/dist/emojiData.js.map +1 -0
  200. package/dist/fileKind.d.ts +6 -2
  201. package/dist/fileKind.d.ts.map +1 -1
  202. package/dist/fileKind.js +25 -4
  203. package/dist/fileKind.js.map +1 -1
  204. package/dist/hooks/useFileDrop.d.ts.map +1 -1
  205. package/dist/hooks/useFileDrop.js +40 -4
  206. package/dist/hooks/useFileDrop.js.map +1 -1
  207. package/dist/imageEditor/CanvasSurface.d.ts +31 -0
  208. package/dist/imageEditor/CanvasSurface.d.ts.map +1 -0
  209. package/dist/imageEditor/CanvasSurface.js +264 -0
  210. package/dist/imageEditor/CanvasSurface.js.map +1 -0
  211. package/dist/imageEditor/ImageVersionHistoryDropdown.d.ts +39 -0
  212. package/dist/imageEditor/ImageVersionHistoryDropdown.d.ts.map +1 -0
  213. package/dist/imageEditor/ImageVersionHistoryDropdown.js +283 -0
  214. package/dist/imageEditor/ImageVersionHistoryDropdown.js.map +1 -0
  215. package/dist/imageEditor/LayersPanel.d.ts +14 -0
  216. package/dist/imageEditor/LayersPanel.d.ts.map +1 -0
  217. package/dist/imageEditor/LayersPanel.js +43 -0
  218. package/dist/imageEditor/LayersPanel.js.map +1 -0
  219. package/dist/imageEditor/PropertiesPanel.d.ts +14 -0
  220. package/dist/imageEditor/PropertiesPanel.d.ts.map +1 -0
  221. package/dist/imageEditor/PropertiesPanel.js +97 -0
  222. package/dist/imageEditor/PropertiesPanel.js.map +1 -0
  223. package/dist/imageEditor/Toolbar.d.ts +30 -0
  224. package/dist/imageEditor/Toolbar.d.ts.map +1 -0
  225. package/dist/imageEditor/Toolbar.js +108 -0
  226. package/dist/imageEditor/Toolbar.js.map +1 -0
  227. package/dist/imageEditor/icons.d.ts +24 -0
  228. package/dist/imageEditor/icons.d.ts.map +1 -0
  229. package/dist/imageEditor/icons.js +45 -0
  230. package/dist/imageEditor/icons.js.map +1 -0
  231. package/dist/imageEditor/layers/EditorImageLayer.d.ts +16 -0
  232. package/dist/imageEditor/layers/EditorImageLayer.d.ts.map +1 -0
  233. package/dist/imageEditor/layers/EditorImageLayer.js +37 -0
  234. package/dist/imageEditor/layers/EditorImageLayer.js.map +1 -0
  235. package/dist/imageEditor/layers/EditorShapeLayer.d.ts +15 -0
  236. package/dist/imageEditor/layers/EditorShapeLayer.d.ts.map +1 -0
  237. package/dist/imageEditor/layers/EditorShapeLayer.js +20 -0
  238. package/dist/imageEditor/layers/EditorShapeLayer.js.map +1 -0
  239. package/dist/imageEditor/layers/EditorTextLayer.d.ts +18 -0
  240. package/dist/imageEditor/layers/EditorTextLayer.d.ts.map +1 -0
  241. package/dist/imageEditor/layers/EditorTextLayer.js +13 -0
  242. package/dist/imageEditor/layers/EditorTextLayer.js.map +1 -0
  243. package/dist/imageEditor/layers/SelectionHandles.d.ts +17 -0
  244. package/dist/imageEditor/layers/SelectionHandles.d.ts.map +1 -0
  245. package/dist/imageEditor/layers/SelectionHandles.js +19 -0
  246. package/dist/imageEditor/layers/SelectionHandles.js.map +1 -0
  247. package/dist/imageEditor/state.d.ts +76 -0
  248. package/dist/imageEditor/state.d.ts.map +1 -0
  249. package/dist/imageEditor/state.js +87 -0
  250. package/dist/imageEditor/state.js.map +1 -0
  251. package/dist/imageEditor/useImageEditor.d.ts +53 -0
  252. package/dist/imageEditor/useImageEditor.d.ts.map +1 -0
  253. package/dist/imageEditor/useImageEditor.js +244 -0
  254. package/dist/imageEditor/useImageEditor.js.map +1 -0
  255. package/dist/imageEditor/useImageEditorTokens.d.ts +16 -0
  256. package/dist/imageEditor/useImageEditorTokens.d.ts.map +1 -0
  257. package/dist/imageEditor/useImageEditorTokens.js +45 -0
  258. package/dist/imageEditor/useImageEditorTokens.js.map +1 -0
  259. package/dist/index.d.ts +48 -1
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +36 -0
  262. package/dist/index.js.map +1 -1
  263. package/dist/jsonEditor/EmbeddedRichTextField.d.ts +15 -0
  264. package/dist/jsonEditor/EmbeddedRichTextField.d.ts.map +1 -0
  265. package/dist/jsonEditor/EmbeddedRichTextField.js +74 -0
  266. package/dist/jsonEditor/EmbeddedRichTextField.js.map +1 -0
  267. package/dist/jsonEditor/JsonEditor.d.ts +36 -0
  268. package/dist/jsonEditor/JsonEditor.d.ts.map +1 -0
  269. package/dist/jsonEditor/JsonEditor.js +15 -0
  270. package/dist/jsonEditor/JsonEditor.js.map +1 -0
  271. package/dist/jsonEditor/JsonEditorContext.d.ts +28 -0
  272. package/dist/jsonEditor/JsonEditorContext.d.ts.map +1 -0
  273. package/dist/jsonEditor/JsonEditorContext.js +41 -0
  274. package/dist/jsonEditor/JsonEditorContext.js.map +1 -0
  275. package/dist/jsonEditor/RenderNode.d.ts +16 -0
  276. package/dist/jsonEditor/RenderNode.d.ts.map +1 -0
  277. package/dist/jsonEditor/RenderNode.js +32 -0
  278. package/dist/jsonEditor/RenderNode.js.map +1 -0
  279. package/dist/jsonEditor/editors.d.ts +36 -0
  280. package/dist/jsonEditor/editors.d.ts.map +1 -0
  281. package/dist/jsonEditor/editors.js +347 -0
  282. package/dist/jsonEditor/editors.js.map +1 -0
  283. package/dist/jsonEditor/index.d.ts +3 -0
  284. package/dist/jsonEditor/index.d.ts.map +1 -0
  285. package/dist/jsonEditor/index.js +2 -0
  286. package/dist/jsonEditor/index.js.map +1 -0
  287. package/dist/jsonEditor/useJsonEditorTokens.d.ts +13 -0
  288. package/dist/jsonEditor/useJsonEditorTokens.d.ts.map +1 -0
  289. package/dist/jsonEditor/useJsonEditorTokens.js +38 -0
  290. package/dist/jsonEditor/useJsonEditorTokens.js.map +1 -0
  291. package/dist/recorder/RecorderButton.d.ts +31 -0
  292. package/dist/recorder/RecorderButton.d.ts.map +1 -0
  293. package/dist/recorder/RecorderButton.js +24 -0
  294. package/dist/recorder/RecorderButton.js.map +1 -0
  295. package/dist/recorder/RecorderModal.d.ts +59 -0
  296. package/dist/recorder/RecorderModal.d.ts.map +1 -0
  297. package/dist/recorder/RecorderModal.js +333 -0
  298. package/dist/recorder/RecorderModal.js.map +1 -0
  299. package/dist/recorder/RecorderPanel.d.ts +25 -0
  300. package/dist/recorder/RecorderPanel.d.ts.map +1 -0
  301. package/dist/recorder/RecorderPanel.js +30 -0
  302. package/dist/recorder/RecorderPanel.js.map +1 -0
  303. package/dist/recorder/formats.d.ts +51 -0
  304. package/dist/recorder/formats.d.ts.map +1 -0
  305. package/dist/recorder/formats.js +144 -0
  306. package/dist/recorder/formats.js.map +1 -0
  307. package/dist/recorder/hooks/useMediaRecorder.d.ts +90 -0
  308. package/dist/recorder/hooks/useMediaRecorder.d.ts.map +1 -0
  309. package/dist/recorder/hooks/useMediaRecorder.js +277 -0
  310. package/dist/recorder/hooks/useMediaRecorder.js.map +1 -0
  311. package/dist/recorder/hooks/useStreamPreview.d.ts +22 -0
  312. package/dist/recorder/hooks/useStreamPreview.d.ts.map +1 -0
  313. package/dist/recorder/hooks/useStreamPreview.js +44 -0
  314. package/dist/recorder/hooks/useStreamPreview.js.map +1 -0
  315. package/dist/recorder/sources/cameraStream.d.ts +22 -0
  316. package/dist/recorder/sources/cameraStream.d.ts.map +1 -0
  317. package/dist/recorder/sources/cameraStream.js +24 -0
  318. package/dist/recorder/sources/cameraStream.js.map +1 -0
  319. package/dist/recorder/sources/micStream.d.ts +15 -0
  320. package/dist/recorder/sources/micStream.d.ts.map +1 -0
  321. package/dist/recorder/sources/micStream.js +24 -0
  322. package/dist/recorder/sources/micStream.js.map +1 -0
  323. package/dist/recorder/sources/screenStream.d.ts +53 -0
  324. package/dist/recorder/sources/screenStream.d.ts.map +1 -0
  325. package/dist/recorder/sources/screenStream.js +114 -0
  326. package/dist/recorder/sources/screenStream.js.map +1 -0
  327. package/dist/recorder/timingJson.d.ts +51 -0
  328. package/dist/recorder/timingJson.d.ts.map +1 -0
  329. package/dist/recorder/timingJson.js +42 -0
  330. package/dist/recorder/timingJson.js.map +1 -0
  331. package/dist/tiptap/TiptapAudio.d.ts +26 -0
  332. package/dist/tiptap/TiptapAudio.d.ts.map +1 -0
  333. package/dist/tiptap/TiptapAudio.js +58 -0
  334. package/dist/tiptap/TiptapAudio.js.map +1 -0
  335. package/dist/tiptap/TiptapVideo.d.ts +30 -0
  336. package/dist/tiptap/TiptapVideo.d.ts.map +1 -0
  337. package/dist/tiptap/TiptapVideo.js +66 -0
  338. package/dist/tiptap/TiptapVideo.js.map +1 -0
  339. package/dist/tiptap/useResolvedMediaSrc.d.ts +2 -0
  340. package/dist/tiptap/useResolvedMediaSrc.d.ts.map +1 -0
  341. package/dist/tiptap/useResolvedMediaSrc.js +42 -0
  342. package/dist/tiptap/useResolvedMediaSrc.js.map +1 -0
  343. package/dist/tiptapBridge.d.ts.map +1 -1
  344. package/dist/tiptapBridge.js +210 -16
  345. package/dist/tiptapBridge.js.map +1 -1
  346. package/dist/useHeadingLayout.d.ts +54 -0
  347. package/dist/useHeadingLayout.d.ts.map +1 -0
  348. package/dist/useHeadingLayout.js +260 -0
  349. package/dist/useHeadingLayout.js.map +1 -0
  350. package/dist/utils/collectInlineFontAwesomeCss.d.ts +21 -0
  351. package/dist/utils/collectInlineFontAwesomeCss.d.ts.map +1 -0
  352. package/dist/utils/collectInlineFontAwesomeCss.js +68 -0
  353. package/dist/utils/collectInlineFontAwesomeCss.js.map +1 -0
  354. package/dist/utils/dropUtils.d.ts +21 -2
  355. package/dist/utils/dropUtils.d.ts.map +1 -1
  356. package/dist/utils/dropUtils.js +43 -4
  357. package/dist/utils/dropUtils.js.map +1 -1
  358. package/dist/utils/normalizeMalformedAssetUrl.d.ts +15 -0
  359. package/dist/utils/normalizeMalformedAssetUrl.d.ts.map +1 -0
  360. package/dist/utils/normalizeMalformedAssetUrl.js +27 -0
  361. package/dist/utils/normalizeMalformedAssetUrl.js.map +1 -0
  362. package/package.json +8 -5
  363. package/src/DocumentSettingsDialog.tsx +266 -0
  364. package/src/EditorContext.tsx +534 -10
  365. package/src/EditorShell.tsx +691 -63
  366. package/src/EmojiPicker.tsx +332 -0
  367. package/src/ImageEditor.tsx +327 -0
  368. package/src/ImageNodeView.tsx +222 -21
  369. package/src/ImageViewer.tsx +221 -0
  370. package/src/InlineIcon.ts +84 -0
  371. package/src/InlinePreviewGutter.tsx +582 -0
  372. package/src/LinkDialog.tsx +276 -0
  373. package/src/MediaBin.tsx +22 -3
  374. package/src/MentionExtension.tsx +10 -7
  375. package/src/OutlinePanel.tsx +295 -0
  376. package/src/PlainHtmlPreview.tsx +211 -0
  377. package/src/PreviewControls.tsx +130 -24
  378. package/src/PreviewPanel.tsx +38 -21
  379. package/src/RawEditor.tsx +215 -4
  380. package/src/RecorderEntry.tsx +164 -0
  381. package/src/TemplateAnnotation.ts +32 -6
  382. package/src/TemplatePicker.tsx +818 -0
  383. package/src/ThemeCustomizerPanel.tsx +595 -0
  384. package/src/ThemePicker.tsx +319 -0
  385. package/src/Toolbar.tsx +708 -111
  386. package/src/VersionHistoryPanel.tsx +329 -0
  387. package/src/ViewMenuPanel.tsx +188 -0
  388. package/src/WysiwygEditor.tsx +229 -9
  389. package/src/__tests__/detectMarkdown.test.ts +0 -15
  390. package/src/__tests__/documentSettingsDialog.test.tsx +147 -0
  391. package/src/__tests__/emojiPicker.test.tsx +133 -0
  392. package/src/__tests__/fileKind.test.ts +16 -0
  393. package/src/__tests__/imageEditAffordance.test.tsx +268 -0
  394. package/src/__tests__/imageEditorShell.test.tsx +57 -0
  395. package/src/__tests__/imageEditorState.test.ts +171 -0
  396. package/src/__tests__/inlinePreviewGutter.test.tsx +62 -0
  397. package/src/__tests__/inlinePreviewGutterAllBlocks.test.tsx +103 -0
  398. package/src/__tests__/jsonEditor.test.tsx +168 -0
  399. package/src/__tests__/layersPanel.test.tsx +97 -0
  400. package/src/__tests__/linkDialogDocPicker.test.tsx +137 -0
  401. package/src/__tests__/mediaAttachmentFlow.test.ts +110 -0
  402. package/src/__tests__/outlinePanel.test.tsx +79 -0
  403. package/src/__tests__/plainHtmlPreview.test.tsx +107 -0
  404. package/src/__tests__/propertiesPanel.test.tsx +69 -0
  405. package/src/__tests__/recorderFormats.test.ts +146 -0
  406. package/src/__tests__/recorderTimingJson.test.ts +41 -0
  407. package/src/__tests__/templateAnnotationRoundTrip.test.ts +34 -0
  408. package/src/__tests__/tiptapBridge.test.ts +29 -0
  409. package/src/__tests__/tiptapImageRoundTrip.test.ts +73 -0
  410. package/src/__tests__/useImageEditor.test.tsx +159 -0
  411. package/src/__tests__/useMediaRecorder.test.ts +186 -0
  412. package/src/__tests__/versionHistory.test.tsx +197 -0
  413. package/src/blockSlice.ts +75 -0
  414. package/src/buildPreviewDoc.ts +61 -6
  415. package/src/emojiData.ts +1337 -0
  416. package/src/fileKind.ts +30 -6
  417. package/src/hooks/useFileDrop.ts +40 -4
  418. package/src/imageEditor/CanvasSurface.tsx +402 -0
  419. package/src/imageEditor/ImageVersionHistoryDropdown.tsx +396 -0
  420. package/src/imageEditor/LayersPanel.tsx +143 -0
  421. package/src/imageEditor/PropertiesPanel.tsx +428 -0
  422. package/src/imageEditor/Toolbar.tsx +242 -0
  423. package/src/imageEditor/icons.tsx +144 -0
  424. package/src/imageEditor/image-editor.css +450 -0
  425. package/src/imageEditor/layers/EditorImageLayer.tsx +45 -0
  426. package/src/imageEditor/layers/EditorShapeLayer.tsx +62 -0
  427. package/src/imageEditor/layers/EditorTextLayer.tsx +45 -0
  428. package/src/imageEditor/layers/SelectionHandles.tsx +86 -0
  429. package/src/imageEditor/state.ts +153 -0
  430. package/src/imageEditor/useImageEditor.ts +328 -0
  431. package/src/imageEditor/useImageEditorTokens.ts +70 -0
  432. package/src/index.ts +82 -0
  433. package/src/jsonEditor/EmbeddedRichTextField.tsx +81 -0
  434. package/src/jsonEditor/JsonEditor.tsx +81 -0
  435. package/src/jsonEditor/JsonEditorContext.tsx +75 -0
  436. package/src/jsonEditor/RenderNode.tsx +66 -0
  437. package/src/jsonEditor/editors.tsx +678 -0
  438. package/src/jsonEditor/index.ts +2 -0
  439. package/src/jsonEditor/json-editor.css +463 -0
  440. package/src/jsonEditor/useJsonEditorTokens.ts +63 -0
  441. package/src/recorder/RecorderButton.tsx +72 -0
  442. package/src/recorder/RecorderModal.tsx +596 -0
  443. package/src/recorder/RecorderPanel.tsx +93 -0
  444. package/src/recorder/formats.ts +159 -0
  445. package/src/recorder/hooks/useMediaRecorder.ts +378 -0
  446. package/src/recorder/hooks/useStreamPreview.ts +47 -0
  447. package/src/recorder/sources/cameraStream.ts +32 -0
  448. package/src/recorder/sources/micStream.ts +25 -0
  449. package/src/recorder/sources/screenStream.ts +162 -0
  450. package/src/recorder/timingJson.ts +66 -0
  451. package/src/styles/editor.css +2490 -51
  452. package/src/styles/image-edit-affordance.css +201 -0
  453. package/src/styles/index.css +10 -0
  454. package/src/tiptap/TiptapAudio.tsx +86 -0
  455. package/src/tiptap/TiptapVideo.tsx +119 -0
  456. package/src/tiptap/useResolvedMediaSrc.ts +47 -0
  457. package/src/tiptapBridge.ts +227 -22
  458. package/src/useHeadingLayout.ts +294 -0
  459. package/src/utils/collectInlineFontAwesomeCss.ts +69 -0
  460. package/src/utils/dropUtils.ts +54 -6
  461. package/src/utils/normalizeMalformedAssetUrl.ts +22 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplatePicker.d.ts","sourceRoot":"","sources":["../src/TemplatePicker.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2XH;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAAwC,CAAC;AAErF;;;;;;GAMG;AAEH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOlD;AAgBD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,yFAAyF;IACzF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,mBAAmB,2CA0J5F;AA8GD,MAAM,WAAW,yBAAyB;IACxC,4EAA4E;IAC5E,UAAU,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,UAAU,EACV,KAAK,EACL,QAAQ,EACR,OAAO,EACP,WAAW,GACZ,EAAE,yBAAyB,+BA6C3B"}
@@ -0,0 +1,388 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * TemplatePicker
4
+ *
5
+ * A custom popover that replaces the plain <select> for block templates.
6
+ * Each template entry shows a mini wireframe SVG, a human-readable label,
7
+ * and a one-sentence description so authors can quickly find the right layout.
8
+ */
9
+ import { useEffect, useRef, useState } from 'react';
10
+ import { createPortal } from 'react-dom';
11
+ const W = 56;
12
+ const H = 40;
13
+ /** Neutral fill for structural shapes */
14
+ const F1 = '#d1d5db';
15
+ /** Slightly darker fill for important / featured elements */
16
+ const F2 = '#9ca3af';
17
+ /** Accent fill (stat number, image, play button) */
18
+ const FA = '#818cf8';
19
+ function TemplateIcon({ children }) {
20
+ return (_jsx("svg", { width: W, height: H, viewBox: `0 0 ${W} ${H}`, "aria-hidden": "true", className: "squisq-template-picker-icon", children: children }));
21
+ }
22
+ const NONE_ENTRY = {
23
+ name: '',
24
+ label: '— none —',
25
+ description: 'Plain heading block with no visual template.',
26
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 4, y: 4, width: 48, height: 32, rx: 2, fill: "none", stroke: F1, strokeWidth: 1.5, strokeDasharray: "3 2" }), _jsx("rect", { x: 12, y: 15, width: 32, height: 4, rx: 1, fill: F1 }), _jsx("rect", { x: 16, y: 22, width: 24, height: 3, rx: 1, fill: F1, opacity: 0.6 })] })),
27
+ };
28
+ const TEMPLATE_ENTRIES = [
29
+ {
30
+ name: 'title',
31
+ label: 'Title',
32
+ description: 'A bold opening slide with large title text, perfect for covers and chapters.',
33
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 4, y: 4, width: 48, height: 32, rx: 2, fill: F1, opacity: 0.3 }), _jsx("rect", { x: 8, y: 11, width: 40, height: 8, rx: 1, fill: FA }), _jsx("rect", { x: 14, y: 23, width: 28, height: 3, rx: 1, fill: F2 }), _jsx("rect", { x: 20, y: 29, width: 16, height: 2, rx: 1, fill: F1 })] })),
34
+ },
35
+ {
36
+ name: 'sectionHeader',
37
+ label: 'Section Header',
38
+ description: 'A clean section break with a prominent title and optional subtitle.',
39
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 4, y: 4, width: 3, height: 32, rx: 1, fill: FA }), _jsx("rect", { x: 11, y: 8, width: 36, height: 6, rx: 1, fill: F2 }), _jsx("rect", { x: 11, y: 18, width: 28, height: 3, rx: 1, fill: F1 }), _jsx("rect", { x: 11, y: 24, width: 20, height: 2.5, rx: 1, fill: F1, opacity: 0.7 })] })),
40
+ },
41
+ {
42
+ name: 'statHighlight',
43
+ label: 'Stat Highlight',
44
+ description: 'Showcases a single key number or metric with supporting context.',
45
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 14, y: 4, width: 28, height: 16, rx: 2, fill: FA }), _jsx("rect", { x: 10, y: 24, width: 36, height: 3.5, rx: 1, fill: F2 }), _jsx("rect", { x: 16, y: 30, width: 24, height: 2.5, rx: 1, fill: F1 })] })),
46
+ },
47
+ {
48
+ name: 'quote',
49
+ label: 'Quote',
50
+ description: 'Displays a stylized pull quote with decorative marks and attribution.',
51
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("text", { x: 5, y: 18, fontSize: 18, fill: FA, fontFamily: "serif", fontWeight: "bold", opacity: 0.7, children: "\"" }), _jsx("rect", { x: 16, y: 8, width: 36, height: 4, rx: 1, fill: F2 }), _jsx("rect", { x: 16, y: 15, width: 32, height: 4, rx: 1, fill: F2 }), _jsx("rect", { x: 16, y: 22, width: 24, height: 4, rx: 1, fill: F2 }), _jsx("rect", { x: 16, y: 31, width: 18, height: 2.5, rx: 1, fill: F1 })] })),
52
+ },
53
+ {
54
+ name: 'factCard',
55
+ label: 'Fact Card',
56
+ description: 'Presents a focused fact or insight with a labeled header and body text.',
57
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 4, y: 4, width: 20, height: 6, rx: 3, fill: FA, opacity: 0.8 }), _jsx("rect", { x: 4, y: 14, width: 48, height: 5, rx: 1, fill: F2 }), _jsx("rect", { x: 4, y: 22, width: 44, height: 3.5, rx: 1, fill: F1 }), _jsx("rect", { x: 4, y: 28, width: 36, height: 3, rx: 1, fill: F1, opacity: 0.7 })] })),
58
+ },
59
+ {
60
+ name: 'twoColumn',
61
+ label: 'Two Column',
62
+ description: 'Divides the slide into two equal side-by-side content columns.',
63
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 3, y: 4, width: 23, height: 32, rx: 2, fill: F1, opacity: 0.4 }), _jsx("rect", { x: 3, y: 4, width: 23, height: 7, rx: 2, fill: F2, opacity: 0.6 }), _jsx("rect", { x: 6, y: 15, width: 17, height: 3, rx: 1, fill: F1 }), _jsx("rect", { x: 6, y: 21, width: 14, height: 2.5, rx: 1, fill: F1, opacity: 0.7 }), _jsx("rect", { x: 30, y: 4, width: 23, height: 32, rx: 2, fill: F1, opacity: 0.4 }), _jsx("rect", { x: 30, y: 4, width: 23, height: 7, rx: 2, fill: F2, opacity: 0.6 }), _jsx("rect", { x: 33, y: 15, width: 17, height: 3, rx: 1, fill: F1 }), _jsx("rect", { x: 33, y: 21, width: 14, height: 2.5, rx: 1, fill: F1, opacity: 0.7 })] })),
64
+ },
65
+ {
66
+ name: 'dateEvent',
67
+ label: 'Date Event',
68
+ description: 'Highlights a date-based event or milestone with a prominent date display.',
69
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 3, y: 4, width: 18, height: 18, rx: 3, fill: FA, opacity: 0.85 }), _jsx("rect", { x: 6, y: 8, width: 12, height: 2, rx: 1, fill: "white", opacity: 0.7 }), _jsx("rect", { x: 6, y: 13, width: 12, height: 6, rx: 1, fill: "white", opacity: 0.5 }), _jsx("rect", { x: 25, y: 6, width: 27, height: 5, rx: 1, fill: F2 }), _jsx("rect", { x: 25, y: 15, width: 22, height: 3, rx: 1, fill: F1 }), _jsx("rect", { x: 25, y: 21, width: 16, height: 2.5, rx: 1, fill: F1, opacity: 0.7 }), _jsx("rect", { x: 3, y: 27, width: 50, height: 2.5, rx: 1, fill: F1, opacity: 0.5 }), _jsx("rect", { x: 3, y: 32, width: 40, height: 2, rx: 1, fill: F1, opacity: 0.4 })] })),
70
+ },
71
+ {
72
+ name: 'imageWithCaption',
73
+ label: 'Image with Caption',
74
+ description: 'Displays a full-bleed image with an optional caption below.',
75
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 3, y: 3, width: 50, height: 28, rx: 2, fill: F2, opacity: 0.5 }), _jsx("line", { x1: 3, y1: 14, x2: 53, y2: 14, stroke: "white", strokeWidth: 0.5, opacity: 0.3 }), _jsx("polygon", { points: "22,10 22,20 32,15", fill: "white", opacity: 0.4 }), _jsx("rect", { x: 10, y: 35, width: 36, height: 2.5, rx: 1, fill: F1 })] })),
76
+ },
77
+ {
78
+ name: 'leftFeature',
79
+ label: 'Left Feature',
80
+ description: 'Image on the left, title and body text stacked on the right.',
81
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 3, y: 4, width: 24, height: 32, rx: 2, fill: F2, opacity: 0.55 }), _jsx("polygon", { points: "11,16 11,24 19,20", fill: "white", opacity: 0.5 }), _jsx("rect", { x: 31, y: 9, width: 20, height: 4, rx: 1, fill: FA }), _jsx("rect", { x: 31, y: 17, width: 22, height: 2.5, rx: 1, fill: F1 }), _jsx("rect", { x: 31, y: 22, width: 22, height: 2.5, rx: 1, fill: F1, opacity: 0.75 }), _jsx("rect", { x: 31, y: 27, width: 16, height: 2.5, rx: 1, fill: F1, opacity: 0.6 })] })),
82
+ },
83
+ {
84
+ name: 'rightFeature',
85
+ label: 'Right Feature',
86
+ description: 'Image on the right, title and body text stacked on the left.',
87
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 29, y: 4, width: 24, height: 32, rx: 2, fill: F2, opacity: 0.55 }), _jsx("polygon", { points: "37,16 37,24 45,20", fill: "white", opacity: 0.5 }), _jsx("rect", { x: 3, y: 9, width: 20, height: 4, rx: 1, fill: FA }), _jsx("rect", { x: 3, y: 17, width: 22, height: 2.5, rx: 1, fill: F1 }), _jsx("rect", { x: 3, y: 22, width: 22, height: 2.5, rx: 1, fill: F1, opacity: 0.75 }), _jsx("rect", { x: 3, y: 27, width: 16, height: 2.5, rx: 1, fill: F1, opacity: 0.6 })] })),
88
+ },
89
+ {
90
+ name: 'map',
91
+ label: 'Map',
92
+ description: 'Embeds an interactive map centered on a geographic location.',
93
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 3, y: 3, width: 50, height: 34, rx: 2, fill: F1, opacity: 0.3 }), _jsx("line", { x1: 3, y1: 13, x2: 53, y2: 13, stroke: F1, strokeWidth: 1 }), _jsx("line", { x1: 3, y1: 23, x2: 53, y2: 23, stroke: F1, strokeWidth: 1 }), _jsx("line", { x1: 18, y1: 3, x2: 18, y2: 37, stroke: F1, strokeWidth: 1 }), _jsx("line", { x1: 38, y1: 3, x2: 38, y2: 37, stroke: F1, strokeWidth: 1 }), _jsx("circle", { cx: 28, cy: 18, r: 4, fill: FA, opacity: 0.8 }), _jsx("line", { x1: 28, y1: 22, x2: 28, y2: 26, stroke: FA, strokeWidth: 1.5, opacity: 0.6 })] })),
94
+ },
95
+ {
96
+ name: 'fullBleedQuote',
97
+ label: 'Full Bleed Quote',
98
+ description: 'A full-width quote that spans the entire slide for maximum impact.',
99
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 4, y: 4, width: 48, height: 32, rx: 2, fill: F2, opacity: 0.2 }), _jsx("text", { x: 5, y: 15, fontSize: 16, fill: FA, fontFamily: "serif", fontWeight: "bold", opacity: 0.8, children: "\"" }), _jsx("rect", { x: 4, y: 14, width: 48, height: 5, rx: 1, fill: F2 }), _jsx("rect", { x: 4, y: 22, width: 44, height: 5, rx: 1, fill: F2 }), _jsx("rect", { x: 4, y: 30, width: 30, height: 4, rx: 1, fill: F2, opacity: 0.7 })] })),
100
+ },
101
+ {
102
+ name: 'list',
103
+ label: 'List',
104
+ description: 'Renders a bulleted or numbered list in a clean, card-style layout.',
105
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 4, y: 5, width: 6, height: 5, rx: 3, fill: FA, opacity: 0.8 }), _jsx("rect", { x: 14, y: 6, width: 38, height: 4, rx: 1, fill: F2 }), _jsx("rect", { x: 4, y: 17, width: 6, height: 5, rx: 3, fill: FA, opacity: 0.8 }), _jsx("rect", { x: 14, y: 18, width: 34, height: 4, rx: 1, fill: F2 }), _jsx("rect", { x: 4, y: 29, width: 6, height: 5, rx: 3, fill: FA, opacity: 0.8 }), _jsx("rect", { x: 14, y: 30, width: 36, height: 4, rx: 1, fill: F2 })] })),
106
+ },
107
+ {
108
+ name: 'photoGrid',
109
+ label: 'Photo Grid',
110
+ description: 'Arranges multiple photos in a 2×2 or 3×3 mosaic grid.',
111
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 3, y: 3, width: 23, height: 16, rx: 1.5, fill: F2, opacity: 0.55 }), _jsx("rect", { x: 30, y: 3, width: 23, height: 16, rx: 1.5, fill: F2, opacity: 0.7 }), _jsx("rect", { x: 3, y: 22, width: 23, height: 16, rx: 1.5, fill: F2, opacity: 0.8 }), _jsx("rect", { x: 30, y: 22, width: 23, height: 16, rx: 1.5, fill: F2, opacity: 0.5 })] })),
112
+ },
113
+ {
114
+ name: 'definitionCard',
115
+ label: 'Definition Card',
116
+ description: 'Shows a term and its definition in a structured, dictionary-style card.',
117
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 4, y: 6, width: 32, height: 6, rx: 1, fill: FA, opacity: 0.8 }), _jsx("rect", { x: 4, y: 17, width: 48, height: 3.5, rx: 1, fill: F1 }), _jsx("rect", { x: 4, y: 23, width: 44, height: 3, rx: 1, fill: F1, opacity: 0.8 }), _jsx("rect", { x: 4, y: 29, width: 36, height: 3, rx: 1, fill: F1, opacity: 0.6 })] })),
118
+ },
119
+ {
120
+ name: 'comparisonBar',
121
+ label: 'Comparison Bar',
122
+ description: 'Visualizes two or more values side-by-side with labeled horizontal bars.',
123
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 4, y: 5, width: 14, height: 3, rx: 1, fill: F1 }), _jsx("rect", { x: 20, y: 4, width: 32, height: 5, rx: 1, fill: FA, opacity: 0.85 }), _jsx("rect", { x: 4, y: 16, width: 14, height: 3, rx: 1, fill: F1 }), _jsx("rect", { x: 20, y: 15, width: 22, height: 5, rx: 1, fill: F2, opacity: 0.7 }), _jsx("rect", { x: 4, y: 27, width: 14, height: 3, rx: 1, fill: F1 }), _jsx("rect", { x: 20, y: 26, width: 28, height: 5, rx: 1, fill: F2, opacity: 0.5 })] })),
124
+ },
125
+ {
126
+ name: 'pullQuote',
127
+ label: 'Pull Quote',
128
+ description: 'A stylized pull quote with large decorative marks and centered text.',
129
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("text", { x: 3, y: 20, fontSize: 26, fill: FA, fontFamily: "serif", opacity: 0.5, children: "\"" }), _jsx("rect", { x: 16, y: 7, width: 36, height: 4.5, rx: 1, fill: F2 }), _jsx("rect", { x: 16, y: 15, width: 34, height: 4.5, rx: 1, fill: F2 }), _jsx("rect", { x: 16, y: 23, width: 28, height: 4.5, rx: 1, fill: F2 }), _jsx("rect", { x: 32, y: 31, width: 20, height: 3, rx: 1, fill: F1 }), _jsx("text", { x: 44, y: 42, fontSize: 26, fill: FA, fontFamily: "serif", opacity: 0.3, children: "\"" })] })),
130
+ },
131
+ {
132
+ name: 'videoWithCaption',
133
+ label: 'Video with Caption',
134
+ description: 'Embeds a video player with an optional caption below.',
135
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 3, y: 3, width: 50, height: 28, rx: 2, fill: F1, opacity: 0.4 }), _jsx("rect", { x: 3, y: 3, width: 50, height: 28, rx: 2, fill: F2, opacity: 0.25 }), _jsx("circle", { cx: 28, cy: 17, r: 8, fill: FA, opacity: 0.7 }), _jsx("polygon", { points: "25,13 25,21 33,17", fill: "white" }), _jsx("rect", { x: 10, y: 35, width: 36, height: 2.5, rx: 1, fill: F1 })] })),
136
+ },
137
+ {
138
+ name: 'videoPullQuote',
139
+ label: 'Video Pull Quote',
140
+ description: 'Combines a video panel with a highlighted pull quote side-by-side.',
141
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 3, y: 4, width: 23, height: 32, rx: 2, fill: F2, opacity: 0.35 }), _jsx("circle", { cx: 14.5, cy: 20, r: 6, fill: FA, opacity: 0.65 }), _jsx("polygon", { points: "12,17 12,23 18,20", fill: "white" }), _jsx("rect", { x: 30, y: 4, width: 23, height: 32, rx: 2, fill: F1, opacity: 0.3 }), _jsx("text", { x: 32, y: 16, fontSize: 12, fill: FA, fontFamily: "serif", opacity: 0.6, children: "\"" }), _jsx("rect", { x: 30, y: 17, width: 20, height: 3.5, rx: 1, fill: F2 }), _jsx("rect", { x: 30, y: 23, width: 18, height: 3, rx: 1, fill: F1 }), _jsx("rect", { x: 30, y: 29, width: 14, height: 2.5, rx: 1, fill: F1, opacity: 0.7 })] })),
142
+ },
143
+ {
144
+ name: 'dataTable',
145
+ label: 'Data Table',
146
+ description: 'Renders tabular data in a clean, styled table with a header row.',
147
+ icon: (_jsxs(TemplateIcon, { children: [_jsx("rect", { x: 3, y: 3, width: 50, height: 8, rx: 1.5, fill: FA, opacity: 0.7 }), _jsx("rect", { x: 3, y: 13, width: 50, height: 6, rx: 1, fill: F1, opacity: 0.5 }), _jsx("rect", { x: 3, y: 21, width: 50, height: 6, rx: 1, fill: F1, opacity: 0.35 }), _jsx("rect", { x: 3, y: 29, width: 50, height: 6, rx: 1, fill: F1, opacity: 0.5 }), _jsx("line", { x1: 20, y1: 3, x2: 20, y2: 35, stroke: "white", strokeWidth: 1, opacity: 0.4 }), _jsx("line", { x1: 37, y1: 3, x2: 37, y2: 35, stroke: "white", strokeWidth: 1, opacity: 0.4 })] })),
148
+ },
149
+ ];
150
+ /**
151
+ * Canonical template names known to the picker, in the order they
152
+ * appear in the gallery. Exported so callers can hand the same list to
153
+ * `recommendTemplatesForBlock()` and stay in sync with the visual
154
+ * order.
155
+ */
156
+ export const TEMPLATE_NAMES = TEMPLATE_ENTRIES.map((e) => e.name);
157
+ /**
158
+ * Convert a camelCase template id to a human-readable label. Accepts both
159
+ * the canonical short ids (`title`, `quote`, `map`, `list`) and the
160
+ * legacy long ones (`titleBlock`, `quoteBlock`, `mapBlock`, `listBlock`)
161
+ * so existing documents keep showing a friendly label without first
162
+ * normalizing their annotations.
163
+ */
164
+ // eslint-disable-next-line react-refresh/only-export-components
165
+ export function templateLabel(name) {
166
+ if (!name)
167
+ return '— none —';
168
+ const resolved = TEMPLATE_NAME_ALIASES[name] ?? name;
169
+ const entry = TEMPLATE_ENTRIES.find((e) => e.name === resolved);
170
+ if (entry)
171
+ return entry.label;
172
+ // Fallback: split camelCase
173
+ return resolved.replace(/([A-Z])/g, ' $1').replace(/^./, (s) => s.toUpperCase());
174
+ }
175
+ /**
176
+ * Legacy template id → canonical short id. Kept inline to avoid pulling
177
+ * the core package's runtime registry into the picker's bundle — the
178
+ * picker only needs this for label resolution.
179
+ */
180
+ const TEMPLATE_NAME_ALIASES = {
181
+ titleBlock: 'title',
182
+ quoteBlock: 'quote',
183
+ mapBlock: 'map',
184
+ listBlock: 'list',
185
+ };
186
+ export function TemplatePicker({ value, onChange, compact, recommended }) {
187
+ const [open, setOpen] = useState(false);
188
+ const [popoverStyle, setPopoverStyle] = useState({});
189
+ const containerRef = useRef(null);
190
+ const triggerRef = useRef(null);
191
+ // Position the portal popover below the trigger button. Clamp the
192
+ // left edge so the gallery (up to 780px wide) doesn't overflow the
193
+ // viewport when the toolbar trigger sits near the right edge of the
194
+ // window — previously the popover was left-aligned to the trigger,
195
+ // which pushed half the cards off-screen at narrow widths.
196
+ const updatePosition = () => {
197
+ if (!triggerRef.current)
198
+ return;
199
+ const rect = triggerRef.current.getBoundingClientRect();
200
+ const popoverEl = document.getElementById('squisq-template-gallery-portal');
201
+ // Use the actual rendered width if the popover is already mounted;
202
+ // otherwise fall back to the CSS-defined max so the first paint
203
+ // doesn't overflow either. Measure the portal element directly —
204
+ // its `firstElementChild` is the (small) "(none)" option, not the
205
+ // gallery itself.
206
+ const popoverWidth = popoverEl?.getBoundingClientRect().width ?? 780;
207
+ const margin = 8;
208
+ const maxLeft = Math.max(margin, window.innerWidth - popoverWidth - margin);
209
+ const left = Math.min(Math.max(margin, rect.left), maxLeft);
210
+ setPopoverStyle({
211
+ position: 'fixed',
212
+ top: rect.bottom + 6,
213
+ left,
214
+ zIndex: 9999,
215
+ });
216
+ };
217
+ const handleOpen = () => {
218
+ updatePosition();
219
+ setOpen((v) => !v);
220
+ };
221
+ // Close on outside click
222
+ useEffect(() => {
223
+ if (!open)
224
+ return;
225
+ const handler = (e) => {
226
+ const target = e.target;
227
+ const inTrigger = triggerRef.current?.contains(target);
228
+ const inPopover = document.getElementById('squisq-template-gallery-portal')?.contains(target);
229
+ if (!inTrigger && !inPopover) {
230
+ setOpen(false);
231
+ }
232
+ };
233
+ document.addEventListener('mousedown', handler);
234
+ return () => document.removeEventListener('mousedown', handler);
235
+ }, [open]);
236
+ // Close on Escape
237
+ useEffect(() => {
238
+ if (!open)
239
+ return;
240
+ const handler = (e) => {
241
+ if (e.key === 'Escape')
242
+ setOpen(false);
243
+ };
244
+ document.addEventListener('keydown', handler);
245
+ return () => document.removeEventListener('keydown', handler);
246
+ }, [open]);
247
+ // Reposition on scroll/resize while open
248
+ useEffect(() => {
249
+ if (!open)
250
+ return;
251
+ // Reposition once on the next frame so the clamp uses the actual
252
+ // rendered popover width (the initial open() runs before mount).
253
+ requestAnimationFrame(updatePosition);
254
+ const handler = () => updatePosition();
255
+ window.addEventListener('scroll', handler, true);
256
+ window.addEventListener('resize', handler);
257
+ return () => {
258
+ window.removeEventListener('scroll', handler, true);
259
+ window.removeEventListener('resize', handler);
260
+ };
261
+ }, [open]);
262
+ const handleSelect = (name) => {
263
+ onChange(name);
264
+ setOpen(false);
265
+ };
266
+ const currentLabel = templateLabel(value);
267
+ const currentEntry = (value && TEMPLATE_ENTRIES.find((e) => e.name === value)) || NONE_ENTRY;
268
+ if (compact) {
269
+ // In overflow menu, use a simple select for space efficiency
270
+ const all = [NONE_ENTRY, ...TEMPLATE_ENTRIES];
271
+ return (_jsx("select", { className: "squisq-template-picker-select", value: value, onChange: (e) => onChange(e.target.value), children: all.map((e) => (_jsx("option", { value: e.name, children: e.label }, e.name))) }));
272
+ }
273
+ const gallery = open
274
+ ? createPortal(_jsx(TemplateGalleryBody, { value: value, onSelect: handleSelect, style: popoverStyle, recommended: recommended }), document.body)
275
+ : null;
276
+ return (_jsxs("div", { className: "squisq-template-picker-popover-host", ref: containerRef, children: [_jsxs("button", { ref: triggerRef, type: "button", className: `squisq-template-picker-trigger${open ? ' squisq-template-picker-trigger--open' : ''}`, onClick: handleOpen, "aria-haspopup": "listbox", "aria-expanded": open, title: "Choose block template", children: [_jsx("span", { className: "squisq-template-picker-trigger-label", children: "Block:" }), _jsx("span", { className: "squisq-template-picker-trigger-thumb", "aria-hidden": "true", children: currentEntry.icon }), _jsx("span", { className: "squisq-template-picker-trigger-value", children: value ? currentLabel : '(No visual)' }), _jsx("svg", { className: "squisq-template-picker-trigger-caret", width: "10", height: "10", viewBox: "0 0 10 10", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M2 3.5l3 3 3-3", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", fill: "none" }) })] }), gallery] }));
277
+ }
278
+ // ── Reusable gallery body ──────────────────────────────────────────
279
+ /**
280
+ * The popover/grid markup shared by the toolbar `TemplatePicker` and the
281
+ * inline `TemplateBadgeMenu`. Renders all template cards plus the
282
+ * "(none)" option; no positioning logic — callers supply `style` (typically
283
+ * a `position: fixed` rect from `getBoundingClientRect()`).
284
+ */
285
+ function TemplateCard({ entry, value, onSelect, }) {
286
+ return (_jsxs("button", { type: "button", role: "option", "aria-selected": value === entry.name, className: `squisq-template-gallery-card${value === entry.name ? ' squisq-template-gallery-card--selected' : ''}`, onClick: () => onSelect(entry.name), title: entry.description, children: [_jsx("div", { className: "squisq-template-gallery-card-icon", children: entry.icon }), _jsxs("div", { className: "squisq-template-gallery-card-body", children: [_jsx("span", { className: "squisq-template-gallery-card-name", children: entry.label }), _jsx("span", { className: "squisq-template-gallery-card-desc", children: entry.description })] })] }));
287
+ }
288
+ function TemplateGalleryBody({ value, onSelect, style, recommended, }) {
289
+ const recommendedSet = recommended && recommended.length > 0 ? new Set(recommended) : null;
290
+ const recommendedEntries = recommendedSet
291
+ ? TEMPLATE_ENTRIES.filter((e) => recommendedSet.has(e.name))
292
+ : [];
293
+ const restEntries = recommendedSet
294
+ ? TEMPLATE_ENTRIES.filter((e) => !recommendedSet.has(e.name))
295
+ : TEMPLATE_ENTRIES;
296
+ const segmented = recommendedEntries.length > 0;
297
+ return (_jsxs("div", { id: "squisq-template-gallery-portal", className: `squisq-template-gallery${segmented ? ' squisq-template-gallery--segmented' : ''}`, role: "listbox", "aria-label": "Block templates", style: style, children: [_jsxs("button", { type: "button", role: "option", "aria-selected": value === '', className: `squisq-template-gallery-none${value === '' ? ' squisq-template-gallery-card--selected' : ''}`, onClick: () => onSelect(''), children: [NONE_ENTRY.icon, _jsx("span", { className: "squisq-template-gallery-none-label", children: NONE_ENTRY.label }), _jsx("span", { className: "squisq-template-gallery-none-desc", children: NONE_ENTRY.description })] }), segmented && (_jsxs("div", { className: "squisq-template-gallery-section", children: [_jsx("h3", { className: "squisq-template-gallery-section-title", children: "Recommended for this block" }), _jsx("div", { className: "squisq-template-gallery-grid", children: recommendedEntries.map((entry) => (_jsx(TemplateCard, { entry: entry, value: value, onSelect: onSelect }, entry.name))) })] })), segmented ? (_jsxs("div", { className: "squisq-template-gallery-section", children: [_jsx("h3", { className: "squisq-template-gallery-section-title", children: "All templates" }), _jsx("div", { className: "squisq-template-gallery-grid", children: restEntries.map((entry) => (_jsx(TemplateCard, { entry: entry, value: value, onSelect: onSelect }, entry.name))) })] })) : (_jsx("div", { className: "squisq-template-gallery-grid", children: restEntries.map((entry) => (_jsx(TemplateCard, { entry: entry, value: value, onSelect: onSelect }, entry.name))) }))] }));
298
+ }
299
+ /**
300
+ * Standalone popover that mirrors the toolbar `TemplatePicker`'s gallery,
301
+ * but is anchored to a caller-supplied DOM rect (typically a clicked
302
+ * `.squisq-template-badge` span). Handles its own positioning, outside
303
+ * clicks, Escape, and viewport-edge clamping.
304
+ */
305
+ export function TemplateBadgePopover({ anchorRect, value, onChange, onClose, recommended, }) {
306
+ const [style, setStyle] = useState(() => computePopoverStyle(anchorRect));
307
+ // Reposition once after mount using the actual rendered popover width.
308
+ useEffect(() => {
309
+ requestAnimationFrame(() => setStyle(computePopoverStyle(anchorRect)));
310
+ }, [anchorRect]);
311
+ // Outside click + Escape close
312
+ useEffect(() => {
313
+ const onKey = (e) => {
314
+ if (e.key === 'Escape')
315
+ onClose();
316
+ };
317
+ const onMouse = (e) => {
318
+ const target = e.target;
319
+ const inPopover = document.getElementById('squisq-template-gallery-portal')?.contains(target);
320
+ if (!inPopover)
321
+ onClose();
322
+ };
323
+ // Defer the mousedown listener by one frame so the click that opened
324
+ // us doesn't immediately close us.
325
+ const id = requestAnimationFrame(() => {
326
+ document.addEventListener('mousedown', onMouse);
327
+ });
328
+ document.addEventListener('keydown', onKey);
329
+ return () => {
330
+ cancelAnimationFrame(id);
331
+ document.removeEventListener('mousedown', onMouse);
332
+ document.removeEventListener('keydown', onKey);
333
+ };
334
+ }, [onClose]);
335
+ const handleSelect = (name) => {
336
+ onChange(name);
337
+ onClose();
338
+ };
339
+ return createPortal(_jsx(TemplateGalleryBody, { value: value, onSelect: handleSelect, style: style, recommended: recommended }), document.body);
340
+ }
341
+ function computePopoverStyle(rect) {
342
+ // The portal *is* the gallery (`#squisq-template-gallery-portal` is the
343
+ // outer `.squisq-template-gallery` div). Measure it directly — using
344
+ // `firstElementChild` returns the "(none)" option, which is ~50px tall
345
+ // and made the "fits below" check incorrectly pass on tall galleries.
346
+ const popoverEl = document.getElementById('squisq-template-gallery-portal');
347
+ const popoverRect = popoverEl?.getBoundingClientRect();
348
+ const popoverWidth = popoverRect?.width ?? 780;
349
+ const popoverHeight = popoverRect?.height ?? 520;
350
+ const margin = 8;
351
+ const gap = 6;
352
+ const vw = window.innerWidth;
353
+ const vh = window.innerHeight;
354
+ // Vertical placement: prefer below the badge, fall back to above.
355
+ // If neither fits, center the popover in the viewport (dialog-style)
356
+ // so the gallery is always fully visible no matter where the chip
357
+ // sits in the editor (top, middle, bottom).
358
+ const spaceBelow = vh - rect.bottom - margin;
359
+ const spaceAbove = rect.top - margin;
360
+ let top;
361
+ let left;
362
+ if (popoverHeight + gap <= spaceBelow) {
363
+ top = rect.bottom + gap;
364
+ const maxLeft = Math.max(margin, vw - popoverWidth - margin);
365
+ left = Math.min(Math.max(margin, rect.left), maxLeft);
366
+ }
367
+ else if (popoverHeight + gap <= spaceAbove) {
368
+ top = rect.top - popoverHeight - gap;
369
+ const maxLeft = Math.max(margin, vw - popoverWidth - margin);
370
+ left = Math.min(Math.max(margin, rect.left), maxLeft);
371
+ }
372
+ else {
373
+ // Center it.
374
+ top = Math.max(margin, Math.floor((vh - popoverHeight) / 2));
375
+ left = Math.max(margin, Math.floor((vw - popoverWidth) / 2));
376
+ }
377
+ return {
378
+ position: 'fixed',
379
+ top,
380
+ left,
381
+ // Cap height so an oversized gallery still fits and scrolls
382
+ // gracefully instead of pushing past the viewport.
383
+ maxHeight: `${vh - 2 * margin}px`,
384
+ overflowY: 'auto',
385
+ zIndex: 9999,
386
+ };
387
+ }
388
+ //# sourceMappingURL=TemplatePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplatePicker.js","sourceRoot":"","sources":["../src/TemplatePicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * ThemeCustomizerPanel
3
+ *
4
+ * Drop-in toolbar button + popover that lets the user author a custom
5
+ * Theme by picking seed colors, fonts, and a few thematic presets.
6
+ *
7
+ * Design:
8
+ * - **Controlled component** — host owns the `value` and forwards
9
+ * `onChange` whenever the user edits anything. This avoids coupling
10
+ * the panel to any specific preview wiring; the host decides whether
11
+ * to register the theme, set it as the preview theme, persist it, etc.
12
+ * - **Subset of the Theme schema** — the panel exposes seed colors,
13
+ * curated/free-text fonts, and a handful of preset groups. Everything
14
+ * else (templateHints, layoutOverrides, persistentLayers, individual
15
+ * colorSchemes, animation defaults) inherits from the compiler's
16
+ * STARTER_THEME and can only be edited by hand-modifying the JSON.
17
+ * - **Industry-standard mental model** — primary / secondary / accent +
18
+ * derived lighter/darker variants, like Material UI / Tailwind / Radix.
19
+ */
20
+ import type { Theme } from '@bendyline/squisq/schemas';
21
+ export interface ThemeCustomizerPanelProps {
22
+ /** Current custom theme (or null to start from defaults). */
23
+ value: Theme | null;
24
+ /** Fired on every edit. Host typically registers the theme + previews it. */
25
+ onChange: (theme: Theme) => void;
26
+ /** Fired when the user clicks Save. Host typically persists the theme JSON. */
27
+ onSave?: (theme: Theme, json: string) => void;
28
+ /** Fired when the user clicks Reset. Host typically clears its persistent storage. */
29
+ onReset?: () => void;
30
+ }
31
+ export declare function ThemeCustomizerPanel({ value, onChange, onSave, onReset, }: ThemeCustomizerPanelProps): import("react/jsx-runtime").JSX.Element;
32
+ //# sourceMappingURL=ThemeCustomizerPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeCustomizerPanel.d.ts","sourceRoot":"","sources":["../src/ThemeCustomizerPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,KAAK,EAA+B,MAAM,2BAA2B,CAAC;AA6LpF,MAAM,WAAW,yBAAyB;IACxC,6DAA6D;IAC7D,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,6EAA6E;IAC7E,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,yBAAyB,2CA6N3B"}