@bendyline/squisq-editor-react 2.1.0 → 2.3.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 (415) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE.md +40 -0
  3. package/dist/chunk-54UGTQBO.js +862 -0
  4. package/dist/chunk-5JMHFAVW.js +2408 -0
  5. package/dist/chunk-5Q4JN4I5.js +132 -0
  6. package/dist/chunk-6VDYKI3L.js +49 -0
  7. package/dist/chunk-GS7QWYFT.js +9 -0
  8. package/dist/chunk-MJJK7YQB.js +949 -0
  9. package/dist/chunk-NITZVAXL.js +986 -0
  10. package/dist/chunk-TRCKHRBS.js +35234 -0
  11. package/dist/chunk-V44VP242.js +3256 -0
  12. package/dist/image-editor/index.d.ts +223 -0
  13. package/dist/image-editor/index.js +15 -0
  14. package/dist/index.d.ts +2060 -4040
  15. package/dist/index.js +496 -40014
  16. package/dist/json-editor/index.d.ts +27 -0
  17. package/dist/json-editor/index.js +7 -0
  18. package/dist/monaco.d.ts +1 -1
  19. package/dist/monaco.js +1 -2
  20. package/dist/recorder/index.d.ts +407 -0
  21. package/dist/recorder/index.js +43 -0
  22. package/dist/shell/index.d.ts +9 -0
  23. package/dist/shell/index.js +22 -0
  24. package/dist/shell-BxSCBm4H.d.ts +1064 -0
  25. package/dist/styles/index.css +598 -161
  26. package/dist/teleprompter/index.d.ts +497 -0
  27. package/dist/teleprompter/index.js +57 -0
  28. package/package.json +34 -8
  29. package/dist/index.js.map +0 -1
  30. package/dist/monaco.js.map +0 -1
  31. package/src/BlockCardView.tsx +0 -121
  32. package/src/BlockPreviewPanel.tsx +0 -69
  33. package/src/BlockPropertiesPopover.tsx +0 -222
  34. package/src/DocumentSettingsDialog.tsx +0 -272
  35. package/src/DropZoneOverlay.tsx +0 -137
  36. package/src/EditorContext.tsx +0 -1274
  37. package/src/EditorShell.tsx +0 -1358
  38. package/src/EmojiPicker.tsx +0 -332
  39. package/src/FolderView.tsx +0 -131
  40. package/src/Icon.tsx +0 -26
  41. package/src/ImageEditor.tsx +0 -395
  42. package/src/ImageNodeView.tsx +0 -284
  43. package/src/ImageViewer.tsx +0 -221
  44. package/src/InlineIcon.ts +0 -84
  45. package/src/InlinePreviewGutter.tsx +0 -590
  46. package/src/LinkDialog.tsx +0 -276
  47. package/src/MediaBin.tsx +0 -500
  48. package/src/MentionExtension.tsx +0 -261
  49. package/src/OutlinePanel.tsx +0 -547
  50. package/src/PlainHtmlPreview.tsx +0 -277
  51. package/src/PreviewControls.tsx +0 -1265
  52. package/src/PreviewPanel.tsx +0 -426
  53. package/src/RawEditor.tsx +0 -743
  54. package/src/RecorderEntry.tsx +0 -162
  55. package/src/StatusBar.tsx +0 -51
  56. package/src/TemplateAnnotation.ts +0 -167
  57. package/src/TemplateContentPreview.tsx +0 -56
  58. package/src/TemplatePicker.tsx +0 -1314
  59. package/src/ThemeCustomizerPanel.tsx +0 -304
  60. package/src/ThemePicker.tsx +0 -433
  61. package/src/TimelineBlockPreview.tsx +0 -37
  62. package/src/TimelineTrack.tsx +0 -671
  63. package/src/Toolbar.tsx +0 -2885
  64. package/src/Tooltip.tsx +0 -142
  65. package/src/TransitionPicker.tsx +0 -390
  66. package/src/VersionHistoryPanel.tsx +0 -359
  67. package/src/ViewMenuPanel.tsx +0 -189
  68. package/src/ViewSwitcher.tsx +0 -56
  69. package/src/WysiwygEditor.tsx +0 -806
  70. package/src/__tests__/blockProperties.test.ts +0 -92
  71. package/src/__tests__/blockPropertiesPopoverTheme.test.tsx +0 -33
  72. package/src/__tests__/blockRange.test.ts +0 -105
  73. package/src/__tests__/blockTagActivity.test.ts +0 -183
  74. package/src/__tests__/buildDocumentPreviewMarkdown.test.ts +0 -75
  75. package/src/__tests__/buildPreviewDocContent.test.ts +0 -65
  76. package/src/__tests__/buildPreviewDocTransition.test.ts +0 -92
  77. package/src/__tests__/canvasSurfaceTextEditing.test.tsx +0 -60
  78. package/src/__tests__/codeContextSectionView.test.tsx +0 -97
  79. package/src/__tests__/codeContextZoneManager.test.ts +0 -127
  80. package/src/__tests__/createShapeLayer.test.ts +0 -46
  81. package/src/__tests__/customLayoutManagerTheme.test.tsx +0 -34
  82. package/src/__tests__/detectMarkdown.test.ts +0 -73
  83. package/src/__tests__/diffContextSections.test.ts +0 -39
  84. package/src/__tests__/documentSettingsDialog.test.tsx +0 -197
  85. package/src/__tests__/drawingShapeRoundTrip.test.ts +0 -49
  86. package/src/__tests__/editorScrollHandoff.test.tsx +0 -102
  87. package/src/__tests__/editorScrollSync.test.ts +0 -65
  88. package/src/__tests__/editorShellCodeContext.test.tsx +0 -86
  89. package/src/__tests__/editorShellProps.test.tsx +0 -550
  90. package/src/__tests__/embeddedMedia.test.ts +0 -48
  91. package/src/__tests__/emojiPicker.test.tsx +0 -93
  92. package/src/__tests__/fileKind.test.ts +0 -112
  93. package/src/__tests__/findMode.test.tsx +0 -104
  94. package/src/__tests__/findModel.test.ts +0 -55
  95. package/src/__tests__/headingTransition.test.ts +0 -176
  96. package/src/__tests__/imageEditAffordance.test.tsx +0 -272
  97. package/src/__tests__/imageEditModalContract.test.tsx +0 -119
  98. package/src/__tests__/imageEditorShell.test.tsx +0 -94
  99. package/src/__tests__/imageEditorState.test.ts +0 -171
  100. package/src/__tests__/inlinePreviewGutter.test.tsx +0 -62
  101. package/src/__tests__/inlinePreviewGutterAllBlocks.test.tsx +0 -103
  102. package/src/__tests__/jsonEditor.test.tsx +0 -223
  103. package/src/__tests__/layersPanel.test.tsx +0 -167
  104. package/src/__tests__/layoutChildRoundTrip.test.ts +0 -71
  105. package/src/__tests__/linkDialogDocPicker.test.tsx +0 -137
  106. package/src/__tests__/majorApiTypes.test.ts +0 -26
  107. package/src/__tests__/markdownCodeFence.test.ts +0 -45
  108. package/src/__tests__/mediaAttachmentFlow.test.ts +0 -110
  109. package/src/__tests__/mediaBinDrop.test.tsx +0 -90
  110. package/src/__tests__/mediaReferences.test.ts +0 -97
  111. package/src/__tests__/narrationSave.test.ts +0 -148
  112. package/src/__tests__/outlinePanel.test.tsx +0 -169
  113. package/src/__tests__/outlineSource.test.ts +0 -217
  114. package/src/__tests__/plainHtmlPreview.test.tsx +0 -125
  115. package/src/__tests__/presentationMode.test.tsx +0 -290
  116. package/src/__tests__/previewControls.test.tsx +0 -571
  117. package/src/__tests__/previewPanelAudioFailure.test.tsx +0 -46
  118. package/src/__tests__/previewPanelPresentation.test.tsx +0 -126
  119. package/src/__tests__/previewPanelTransforms.test.tsx +0 -117
  120. package/src/__tests__/propertiesPanel.test.tsx +0 -69
  121. package/src/__tests__/rawEditorModelIsolation.test.ts +0 -19
  122. package/src/__tests__/recorderFormats.test.ts +0 -146
  123. package/src/__tests__/recorderMediaInsert.test.ts +0 -86
  124. package/src/__tests__/recorderTheme.test.tsx +0 -42
  125. package/src/__tests__/recorderTimingJson.test.ts +0 -41
  126. package/src/__tests__/resolveBlockVisual.test.ts +0 -43
  127. package/src/__tests__/selectionConversions.test.ts +0 -80
  128. package/src/__tests__/statusBar.test.tsx +0 -27
  129. package/src/__tests__/teleprompter.test.tsx +0 -190
  130. package/src/__tests__/templateAnnotationRoundTrip.test.ts +0 -99
  131. package/src/__tests__/templateContentPreview.test.ts +0 -101
  132. package/src/__tests__/templatePickerMetadata.test.ts +0 -32
  133. package/src/__tests__/templatePickerPortal.test.tsx +0 -62
  134. package/src/__tests__/timelineSource.test.ts +0 -134
  135. package/src/__tests__/tiptapBridge.test.ts +0 -575
  136. package/src/__tests__/tiptapBridgeConformance.test.ts +0 -47
  137. package/src/__tests__/tiptapCodeBlockRoundTrip.test.ts +0 -109
  138. package/src/__tests__/tiptapImageRoundTrip.test.ts +0 -73
  139. package/src/__tests__/toolbarSelectionConversion.test.tsx +0 -190
  140. package/src/__tests__/tooltip.test.tsx +0 -72
  141. package/src/__tests__/transformStyleId.test.ts +0 -13
  142. package/src/__tests__/transitionCatalog.test.ts +0 -64
  143. package/src/__tests__/useBlockNavigator.test.tsx +0 -67
  144. package/src/__tests__/useImageEditor.test.tsx +0 -226
  145. package/src/__tests__/useJsonEditorTokens.test.ts +0 -59
  146. package/src/__tests__/useMediaRecorder.test.ts +0 -302
  147. package/src/__tests__/useTimelineClock.test.ts +0 -21
  148. package/src/__tests__/versionHistory.test.tsx +0 -197
  149. package/src/__tests__/viewMenuPanel.test.tsx +0 -130
  150. package/src/__tests__/writeCanvasSettings.test.ts +0 -15
  151. package/src/__tests__/wysiwygImageUpload.test.ts +0 -69
  152. package/src/__tests__/wysiwygTemplateBadgeFocus.test.tsx +0 -56
  153. package/src/asciiDiagram/AsciiDiagramExtension.ts +0 -343
  154. package/src/asciiDiagram/AsciiDiagramWidget.tsx +0 -254
  155. package/src/asciiDiagram/RepairableDiagramExtension.ts +0 -200
  156. package/src/asciiDiagram/__tests__/AsciiDiagramExtension.test.ts +0 -164
  157. package/src/asciiDiagram/__tests__/RepairableDiagramExtension.test.ts +0 -159
  158. package/src/asciiDiagram/__tests__/asciiDiagramCommands.test.ts +0 -284
  159. package/src/asciiDiagram/__tests__/asciiDiagramOps.test.ts +0 -114
  160. package/src/asciiDiagram/__tests__/asciiPaste.test.ts +0 -43
  161. package/src/asciiDiagram/asciiDiagramCommands.ts +0 -174
  162. package/src/asciiDiagram/asciiDiagramData.ts +0 -149
  163. package/src/asciiDiagram/asciiDiagramOps.ts +0 -238
  164. package/src/asciiDiagram/asciiPaste.ts +0 -19
  165. package/src/blockProperties.ts +0 -88
  166. package/src/blockRange.ts +0 -132
  167. package/src/blockSlice.ts +0 -75
  168. package/src/blockTagActivity.ts +0 -233
  169. package/src/buildDocumentPreviewMarkdown.ts +0 -168
  170. package/src/buildPreviewDoc.ts +0 -407
  171. package/src/codeContext/CodeContextSectionView.tsx +0 -124
  172. package/src/codeContext/CodeContextZoneManager.ts +0 -149
  173. package/src/codeContext/CodeContextZones.tsx +0 -121
  174. package/src/codeContext/diffContextSections.ts +0 -38
  175. package/src/codeContext/types.ts +0 -75
  176. package/src/codeSnippet/CodeSnippetExtension.ts +0 -205
  177. package/src/codeSnippet/CodeSnippetWidget.tsx +0 -109
  178. package/src/codeSnippet/__tests__/CodeSnippetExtension.test.ts +0 -95
  179. package/src/codeSnippet/__tests__/codeSnippetLanguages.test.ts +0 -50
  180. package/src/codeSnippet/codeSnippetCommands.ts +0 -21
  181. package/src/codeSnippet/codeSnippetData.ts +0 -43
  182. package/src/codeSnippet/codeSnippetLanguages.ts +0 -216
  183. package/src/customTemplates/AddBin.tsx +0 -126
  184. package/src/customTemplates/CustomLayoutManager.tsx +0 -234
  185. package/src/customTemplates/CustomTemplateContext.tsx +0 -188
  186. package/src/customTemplates/LayerToolbar.tsx +0 -580
  187. package/src/customTemplates/ShapeGlyph.tsx +0 -47
  188. package/src/customTemplates/TemplateDesigner.tsx +0 -433
  189. package/src/customTemplates/__tests__/library.test.ts +0 -96
  190. package/src/customTemplates/__tests__/normalizePositions.test.ts +0 -109
  191. package/src/customTemplates/__tests__/shapeDefs.test.ts +0 -49
  192. package/src/customTemplates/__tests__/useMemoryLayerAdapter.test.ts +0 -108
  193. package/src/customTemplates/designer.css +0 -732
  194. package/src/customTemplates/index.ts +0 -31
  195. package/src/customTemplates/library.ts +0 -110
  196. package/src/customTemplates/normalizePositions.ts +0 -75
  197. package/src/customTemplates/shapeDefs.ts +0 -131
  198. package/src/customTemplates/thumbnail.tsx +0 -63
  199. package/src/customTemplates/tokenDefs.ts +0 -60
  200. package/src/customTemplates/useDocCustomTemplates.ts +0 -52
  201. package/src/customTemplates/useMemoryLayerAdapter.ts +0 -129
  202. package/src/customThemes/CustomThemeContext.tsx +0 -185
  203. package/src/customThemes/CustomThemeDialog.tsx +0 -316
  204. package/src/customThemes/ImportThemeSection.tsx +0 -178
  205. package/src/customThemes/__tests__/CustomThemeContext.test.tsx +0 -64
  206. package/src/customThemes/__tests__/CustomThemeDialog.test.tsx +0 -47
  207. package/src/customThemes/__tests__/customThemeLibrary.test.ts +0 -60
  208. package/src/customThemes/__tests__/importThemeSection.test.tsx +0 -192
  209. package/src/customThemes/customThemeLibrary.ts +0 -100
  210. package/src/customThemes/index.ts +0 -37
  211. package/src/customThemes/themeControls.tsx +0 -229
  212. package/src/customThemes/themeDraft.ts +0 -288
  213. package/src/customThemes/useDocCustomThemes.ts +0 -49
  214. package/src/detectMarkdown.ts +0 -62
  215. package/src/diagram/DiagramCanvas.tsx +0 -260
  216. package/src/diagram/DiagramMaximizedOverlay.tsx +0 -46
  217. package/src/diagram/diagramCommands.ts +0 -604
  218. package/src/diagram/diagramConstants.ts +0 -17
  219. package/src/diagram/types.ts +0 -35
  220. package/src/editorScrollSync.ts +0 -73
  221. package/src/embeddedMedia.ts +0 -78
  222. package/src/emojiData.ts +0 -1317
  223. package/src/fileKind.ts +0 -158
  224. package/src/find/FindHighlightExtension.ts +0 -81
  225. package/src/find/FindToolbar.tsx +0 -314
  226. package/src/find/findModel.ts +0 -77
  227. package/src/frontmatter.ts +0 -29
  228. package/src/frontmatterSettings.ts +0 -23
  229. package/src/headingTransition.ts +0 -291
  230. package/src/hooks/useFileDrop.ts +0 -266
  231. package/src/imageEditor/CanvasSurface.tsx +0 -703
  232. package/src/imageEditor/ImageVersionHistoryDropdown.tsx +0 -396
  233. package/src/imageEditor/LayersPanel.tsx +0 -218
  234. package/src/imageEditor/PropertiesPanel.tsx +0 -474
  235. package/src/imageEditor/Toolbar.tsx +0 -459
  236. package/src/imageEditor/createShapeLayer.ts +0 -280
  237. package/src/imageEditor/icons.tsx +0 -68
  238. package/src/imageEditor/image-editor.css +0 -574
  239. package/src/imageEditor/layers/EditorImageLayer.tsx +0 -45
  240. package/src/imageEditor/layers/EditorShapeLayer.tsx +0 -62
  241. package/src/imageEditor/layers/EditorTextLayer.tsx +0 -45
  242. package/src/imageEditor/layers/SelectionHandles.tsx +0 -86
  243. package/src/imageEditor/state.ts +0 -173
  244. package/src/imageEditor/useImageEditor.ts +0 -385
  245. package/src/imageEditor/useImageEditorTokens.ts +0 -70
  246. package/src/index.ts +0 -559
  247. package/src/jsonEditor/EmbeddedRichTextField.tsx +0 -81
  248. package/src/jsonEditor/JsonEditor.tsx +0 -81
  249. package/src/jsonEditor/JsonEditorContext.tsx +0 -81
  250. package/src/jsonEditor/RenderNode.tsx +0 -87
  251. package/src/jsonEditor/editors.tsx +0 -745
  252. package/src/jsonEditor/index.ts +0 -2
  253. package/src/jsonEditor/json-editor.css +0 -463
  254. package/src/jsonEditor/useJsonEditorTokens.ts +0 -33
  255. package/src/markdownCodeFence.ts +0 -72
  256. package/src/mediaDragMime.ts +0 -32
  257. package/src/mediaEntries.ts +0 -12
  258. package/src/mediaReferences.ts +0 -301
  259. package/src/mermaid/MermaidDiagramCanvas.tsx +0 -693
  260. package/src/mermaid/MermaidDiagramExtension.ts +0 -243
  261. package/src/mermaid/MermaidDiagramTypeThumbnail.tsx +0 -184
  262. package/src/mermaid/MermaidDiagramWidget.tsx +0 -653
  263. package/src/mermaid/MermaidShapePalette.tsx +0 -245
  264. package/src/mermaid/__tests__/MermaidDiagramExtension.test.ts +0 -361
  265. package/src/mermaid/__tests__/mermaidDiagramTypes.test.ts +0 -35
  266. package/src/mermaid/__tests__/mermaidRenderer.test.ts +0 -49
  267. package/src/mermaid/__tests__/mermaidSourceOps.test.ts +0 -213
  268. package/src/mermaid/__tests__/mermaidSyntax.test.ts +0 -71
  269. package/src/mermaid/mermaidCommands.ts +0 -34
  270. package/src/mermaid/mermaidData.ts +0 -31
  271. package/src/mermaid/mermaidDiagramTypes.ts +0 -325
  272. package/src/mermaid/mermaidModel.ts +0 -31
  273. package/src/mermaid/mermaidRenderer.ts +0 -181
  274. package/src/mermaid/mermaidShapes.ts +0 -113
  275. package/src/mermaid/mermaidSourceOps.ts +0 -454
  276. package/src/monaco.ts +0 -35
  277. package/src/monacoWorkers.ts +0 -89
  278. package/src/outlineSource.ts +0 -171
  279. package/src/presentation/PresentationMode.tsx +0 -596
  280. package/src/rawEditorIsolation.ts +0 -18
  281. package/src/recorder/RecorderButton.tsx +0 -80
  282. package/src/recorder/RecorderModal.tsx +0 -706
  283. package/src/recorder/RecorderPanel.tsx +0 -77
  284. package/src/recorder/formats.ts +0 -159
  285. package/src/recorder/hooks/useMediaRecorder.ts +0 -436
  286. package/src/recorder/hooks/useStreamPreview.ts +0 -47
  287. package/src/recorder/insertMediaBlock.ts +0 -30
  288. package/src/recorder/sources/cameraStream.ts +0 -32
  289. package/src/recorder/sources/micStream.ts +0 -25
  290. package/src/recorder/sources/screenStream.ts +0 -162
  291. package/src/recorder/timingJson.ts +0 -66
  292. package/src/resolveBlockVisual.ts +0 -39
  293. package/src/scene/Scene.tsx +0 -647
  294. package/src/scene/SceneBlockExtension.ts +0 -205
  295. package/src/scene/SceneBlockToolbar.tsx +0 -216
  296. package/src/scene/SceneBlockWidget.tsx +0 -441
  297. package/src/scene/ScenePropsBar.tsx +0 -85
  298. package/src/scene/SceneSelection.tsx +0 -111
  299. package/src/scene/SceneSideToolbar.tsx +0 -89
  300. package/src/scene/SceneViewControls.tsx +0 -43
  301. package/src/scene/SceneViewport.tsx +0 -106
  302. package/src/scene/ShapePalette.tsx +0 -196
  303. package/src/scene/__tests__/DiagramAdapter.test.ts +0 -142
  304. package/src/scene/__tests__/SceneBlockExtension.test.ts +0 -33
  305. package/src/scene/__tests__/bezierEdit.test.ts +0 -85
  306. package/src/scene/__tests__/blockLayers.test.ts +0 -57
  307. package/src/scene/__tests__/fitScale.test.ts +0 -19
  308. package/src/scene/__tests__/sceneIsolation.test.tsx +0 -119
  309. package/src/scene/__tests__/shapeLayers.test.ts +0 -106
  310. package/src/scene/__tests__/useSceneHitTest.test.ts +0 -90
  311. package/src/scene/__tests__/useScenePanZoom.test.ts +0 -130
  312. package/src/scene/adapters/DiagramAdapter.ts +0 -79
  313. package/src/scene/adapters/DrawingAdapter.ts +0 -420
  314. package/src/scene/adapters/LayoutAdapter.ts +0 -313
  315. package/src/scene/adapters/blockLayers.ts +0 -159
  316. package/src/scene/commands/SceneCommand.ts +0 -84
  317. package/src/scene/commands/drawingCommands.ts +0 -318
  318. package/src/scene/commands/layoutCommands.ts +0 -301
  319. package/src/scene/fitScale.ts +0 -17
  320. package/src/scene/hooks/useSceneHitTest.ts +0 -105
  321. package/src/scene/hooks/useScenePanZoom.ts +0 -154
  322. package/src/scene/hooks/useSceneSelection.ts +0 -62
  323. package/src/scene/index.ts +0 -90
  324. package/src/scene/layers/DiagramEdges.tsx +0 -142
  325. package/src/scene/layers/edgeGeometry.ts +0 -104
  326. package/src/scene/layers/nodeCard.tsx +0 -164
  327. package/src/scene/layers/renderLayer.tsx +0 -70
  328. package/src/scene/layers/shapeLayers.ts +0 -201
  329. package/src/scene/paths/bezierEdit.ts +0 -208
  330. package/src/scene/scene.css +0 -874
  331. package/src/scene/text/SceneTextOverlay.tsx +0 -161
  332. package/src/scene/text/sceneTextChannel.ts +0 -46
  333. package/src/scene/text/sceneTextConfig.ts +0 -31
  334. package/src/scene/text/sceneTiptap.ts +0 -36
  335. package/src/scene/text/useSceneTextEditing.ts +0 -39
  336. package/src/scene/tools/ConnectTool.ts +0 -209
  337. package/src/scene/tools/DrawingConnectTool.ts +0 -231
  338. package/src/scene/tools/PathTool.ts +0 -158
  339. package/src/scene/tools/PlaceTool.ts +0 -47
  340. package/src/scene/tools/SceneTool.ts +0 -85
  341. package/src/scene/tools/SelectTool.ts +0 -300
  342. package/src/scene/tools/ShapeTool.ts +0 -143
  343. package/src/scene/tools/TextTool.ts +0 -72
  344. package/src/scene/tools/TokenTool.ts +0 -95
  345. package/src/scene/tools/createDrawShapeTool.ts +0 -82
  346. package/src/selectionConversions.ts +0 -155
  347. package/src/styles/ascii-diagram.css +0 -79
  348. package/src/styles/ascii-timeline.css +0 -596
  349. package/src/styles/code-context.css +0 -155
  350. package/src/styles/code-snippet.css +0 -76
  351. package/src/styles/diagram.css +0 -183
  352. package/src/styles/editor.css +0 -7131
  353. package/src/styles/folder-view.css +0 -210
  354. package/src/styles/image-edit-affordance.css +0 -201
  355. package/src/styles/index.css +0 -20
  356. package/src/styles/mermaid-diagram.css +0 -487
  357. package/src/styles/tree-view.css +0 -189
  358. package/src/teleprompter/TeleprompterControls.tsx +0 -218
  359. package/src/teleprompter/TeleprompterSelfView.tsx +0 -22
  360. package/src/teleprompter/TeleprompterSurface.tsx +0 -267
  361. package/src/teleprompter/TeleprompterView.tsx +0 -338
  362. package/src/teleprompter/canvasRenderer.ts +0 -161
  363. package/src/teleprompter/floatingWindow.ts +0 -352
  364. package/src/teleprompter/index.ts +0 -61
  365. package/src/teleprompter/pcmWorklet.ts +0 -62
  366. package/src/teleprompter/recording/insertPreamble.ts +0 -80
  367. package/src/teleprompter/recording/narrationSave.ts +0 -134
  368. package/src/teleprompter/recording/useNarrationRecorder.ts +0 -367
  369. package/src/teleprompter/scrollModel.ts +0 -85
  370. package/src/teleprompter/teleprompterTheme.ts +0 -303
  371. package/src/teleprompter/types.ts +0 -38
  372. package/src/teleprompter/useFloatingWindow.ts +0 -74
  373. package/src/teleprompter/useMicAnalysis.ts +0 -211
  374. package/src/teleprompter/useTeleprompter.ts +0 -421
  375. package/src/templateContentPreviewResolver.ts +0 -360
  376. package/src/timeline/TimelineEditorWidget.tsx +0 -861
  377. package/src/timeline/TimelineViewExtension.ts +0 -252
  378. package/src/timeline/__tests__/TimelineEditorWidget.test.tsx +0 -414
  379. package/src/timeline/__tests__/TimelineViewExtension.test.ts +0 -163
  380. package/src/timeline/__tests__/timelineCommands.test.ts +0 -359
  381. package/src/timeline/__tests__/timelineOps.test.ts +0 -277
  382. package/src/timeline/__tests__/timelinePaste.test.ts +0 -34
  383. package/src/timeline/timelineCommands.ts +0 -421
  384. package/src/timeline/timelineData.ts +0 -54
  385. package/src/timeline/timelineOps.ts +0 -381
  386. package/src/timeline/timelinePaste.ts +0 -8
  387. package/src/timelineSource.ts +0 -244
  388. package/src/tiptap/TiptapAudio.tsx +0 -86
  389. package/src/tiptap/TiptapVideo.tsx +0 -119
  390. package/src/tiptap/useResolvedMediaSrc.ts +0 -47
  391. package/src/tiptapBridge.ts +0 -986
  392. package/src/tooltipPlacement.ts +0 -13
  393. package/src/transformStyleId.ts +0 -17
  394. package/src/transitionCatalog.ts +0 -159
  395. package/src/treeview/TreeOutlineWidget.tsx +0 -390
  396. package/src/treeview/TreeViewExtension.ts +0 -250
  397. package/src/treeview/__tests__/TreeOutlineWidget.test.tsx +0 -156
  398. package/src/treeview/__tests__/TreeViewExtension.test.ts +0 -122
  399. package/src/treeview/__tests__/treeOps.test.ts +0 -177
  400. package/src/treeview/__tests__/treePaste.test.ts +0 -40
  401. package/src/treeview/__tests__/treeViewCommands.test.ts +0 -179
  402. package/src/treeview/treeOps.ts +0 -231
  403. package/src/treeview/treePaste.ts +0 -13
  404. package/src/treeview/treeViewCommands.ts +0 -99
  405. package/src/treeview/treeViewData.ts +0 -41
  406. package/src/types/monaco-shims.d.ts +0 -10
  407. package/src/useBlockNavigator.ts +0 -153
  408. package/src/useHeadingLayout.ts +0 -294
  409. package/src/useMonacoLoader.ts +0 -82
  410. package/src/useTimelineClock.ts +0 -76
  411. package/src/utils/collectInlineFontAwesomeCss.ts +0 -69
  412. package/src/utils/dropUtils.ts +0 -136
  413. package/src/utils/normalizeMalformedAssetUrl.ts +0 -22
  414. package/src/writeCanvasSettings.ts +0 -30
  415. package/src/wysiwygImageUpload.ts +0 -113
@@ -1,574 +0,0 @@
1
- /**
2
- * Image editor — layout and chrome for the `<ImageEditor>` component.
3
- *
4
- * Color tokens follow the same scoped-CSS-vars approach as the rest of
5
- * the editor; defaults are tuned for the dark host the editor typically
6
- * lives in but can be overridden by setting the listed `--squisq-image-editor-*`
7
- * custom properties on the `.squisq-image-editor` root.
8
- */
9
-
10
- .squisq-image-editor {
11
- --squisq-image-editor-bg: #14141a;
12
- --squisq-image-editor-panel-bg: #1d1d23;
13
- --squisq-image-editor-panel-border: #2a2a32;
14
- --squisq-image-editor-text: #e6e6ea;
15
- --squisq-image-editor-text-muted: #9999a3;
16
- --squisq-image-editor-accent: #3399ff;
17
- --squisq-image-editor-control-bg: #2a2a32;
18
- --squisq-image-editor-control-border: #3a3a42;
19
- --squisq-image-editor-workspace-bg: #1f1f24;
20
-
21
- display: flex;
22
- flex-direction: column;
23
- width: 100%;
24
- height: 100%;
25
- min-height: 400px;
26
- background: var(--squisq-image-editor-bg);
27
- color: var(--squisq-image-editor-text);
28
- font-family: var(--squisq-image-editor-body-font, system-ui, -apple-system, sans-serif);
29
- font-size: 13px;
30
- }
31
-
32
- .squisq-image-editor-loading,
33
- .squisq-image-editor-error {
34
- display: flex;
35
- align-items: center;
36
- justify-content: center;
37
- flex: 1 1 auto;
38
- padding: 2rem;
39
- color: var(--squisq-image-editor-text-muted);
40
- }
41
- .squisq-image-editor-error {
42
- color: #ff6b6b;
43
- }
44
-
45
- /* ── Toolbar ───────────────────────────────────────────────────────── */
46
- .squisq-image-editor-toolbar {
47
- display: flex;
48
- align-items: center;
49
- gap: 0.75rem;
50
- padding: 0.4rem 0.75rem;
51
- background: var(--squisq-image-editor-panel-bg);
52
- border-bottom: 1px solid var(--squisq-image-editor-panel-border);
53
- flex: 0 0 auto;
54
- }
55
- .squisq-image-editor-tool-group {
56
- display: flex;
57
- align-items: center;
58
- gap: 0.25rem;
59
- }
60
- .squisq-image-editor-tool-group--right {
61
- margin-left: auto;
62
- }
63
- /* Read-only property value (e.g. a path shape's kind). */
64
- .squisq-image-editor-readonly-value {
65
- text-transform: capitalize;
66
- opacity: 0.8;
67
- }
68
- /* Anchor for the shape palette popover that drops from the Shape tool. */
69
- .squisq-image-editor-shape-trigger {
70
- position: relative;
71
- display: inline-flex;
72
- }
73
- .squisq-image-editor-shape-trigger .squisq-shape-palette {
74
- z-index: 20;
75
- }
76
- .squisq-image-editor-tool-button {
77
- background: var(--squisq-image-editor-control-bg);
78
- color: inherit;
79
- border: 1px solid var(--squisq-image-editor-control-border);
80
- border-radius: 4px;
81
- padding: 0.3rem 0.55rem;
82
- font: inherit;
83
- /* Unified text size for every button on the toolbar. Icon-only
84
- buttons get a slightly larger glyph via the SVG rule below so the
85
- icons remain legible without disrupting the text rhythm of
86
- adjacent labeled buttons. */
87
- font-size: 13px;
88
- cursor: pointer;
89
- line-height: 1;
90
- min-width: 28px;
91
- display: inline-flex;
92
- align-items: center;
93
- justify-content: center;
94
- gap: 0.35rem;
95
- }
96
- .squisq-image-editor-tool-button svg {
97
- font-size: 15px;
98
- }
99
- .squisq-image-editor-tool-button--with-label {
100
- font-size: 13px;
101
- }
102
- .squisq-image-editor-tool-button--menu {
103
- width: 100%;
104
- justify-content: flex-start;
105
- border: none;
106
- background: transparent;
107
- padding: 0.35rem 0.5rem;
108
- }
109
- .squisq-image-editor-tool-button--menu:hover {
110
- background: color-mix(in srgb, var(--squisq-image-editor-control-bg) 70%, transparent);
111
- }
112
- .squisq-image-editor-tool-button:hover {
113
- background: var(--squisq-image-editor-control-border);
114
- }
115
- .squisq-image-editor-tool-button.is-active,
116
- .squisq-image-editor-tool-button[aria-checked='true'] {
117
- background: var(--squisq-image-editor-accent);
118
- border-color: var(--squisq-image-editor-accent);
119
- color: #fff;
120
- }
121
- .squisq-image-editor-tool-button:disabled {
122
- opacity: 0.4;
123
- cursor: not-allowed;
124
- }
125
-
126
- /* ── Body / layout ─────────────────────────────────────────────────── */
127
- .squisq-image-editor-body {
128
- display: flex;
129
- flex: 1 1 auto;
130
- min-height: 0;
131
- }
132
- .squisq-image-editor-center {
133
- flex: 1 1 auto;
134
- min-width: 0;
135
- display: flex;
136
- }
137
- .squisq-image-editor-side {
138
- flex: 0 0 280px;
139
- display: flex;
140
- flex-direction: column;
141
- border-left: 1px solid var(--squisq-image-editor-panel-border);
142
- background: var(--squisq-image-editor-panel-bg);
143
- overflow: auto;
144
- }
145
-
146
- /* ── Canvas surface ────────────────────────────────────────────────── */
147
- .squisq-image-editor-surface {
148
- flex: 1 1 auto;
149
- min-width: 0;
150
- min-height: 0;
151
- overflow: auto;
152
- background: var(--squisq-image-editor-workspace-bg);
153
- }
154
- .squisq-image-editor-canvas-wrap {
155
- display: flex;
156
- align-items: center;
157
- justify-content: center;
158
- min-width: 100%;
159
- min-height: 100%;
160
- padding: 16px;
161
- box-sizing: border-box;
162
- }
163
- .squisq-image-editor-canvas {
164
- display: block;
165
- flex: 0 0 auto;
166
- background: transparent;
167
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
168
- user-select: none;
169
- touch-action: none;
170
- image-rendering: pixelated;
171
- }
172
- .squisq-image-editor-canvas--tool-text,
173
- .squisq-image-editor-canvas--tool-shape {
174
- cursor: crosshair;
175
- }
176
- .squisq-image-editor-canvas--tool-crop {
177
- cursor: crosshair;
178
- }
179
- .squisq-image-editor-canvas--tool-zoom-rect {
180
- cursor: zoom-in;
181
- }
182
-
183
- /* ── Layers panel ──────────────────────────────────────────────────── */
184
- .squisq-image-editor-panel-header {
185
- padding: 0.5rem 0.75rem;
186
- font-size: 11px;
187
- font-weight: 600;
188
- text-transform: uppercase;
189
- letter-spacing: 0.05em;
190
- color: var(--squisq-image-editor-text-muted);
191
- border-bottom: 1px solid var(--squisq-image-editor-panel-border);
192
- }
193
- .squisq-image-editor-layers {
194
- border-bottom: 1px solid var(--squisq-image-editor-panel-border);
195
- }
196
- .squisq-image-editor-layers-header {
197
- display: flex;
198
- align-items: center;
199
- justify-content: space-between;
200
- min-height: 32px;
201
- }
202
- .squisq-image-editor-layer-add {
203
- position: relative;
204
- display: inline-flex;
205
- }
206
- .squisq-image-editor-layer-add-button {
207
- display: inline-flex;
208
- align-items: center;
209
- justify-content: center;
210
- width: 22px;
211
- height: 22px;
212
- padding: 0;
213
- color: inherit;
214
- background: transparent;
215
- border: 1px solid transparent;
216
- border-radius: 3px;
217
- cursor: pointer;
218
- font: inherit;
219
- }
220
- .squisq-image-editor-layer-add-button:hover,
221
- .squisq-image-editor-layer-add-button[aria-expanded='true'] {
222
- background: var(--squisq-image-editor-control-bg);
223
- border-color: var(--squisq-image-editor-control-border);
224
- }
225
- .squisq-image-editor-layer-add-menu {
226
- position: absolute;
227
- top: calc(100% + 4px);
228
- right: 0;
229
- z-index: 20;
230
- min-width: 150px;
231
- padding: 4px;
232
- background: var(--squisq-image-editor-panel-bg);
233
- border: 1px solid var(--squisq-image-editor-panel-border);
234
- border-radius: 5px;
235
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
236
- text-transform: none;
237
- letter-spacing: normal;
238
- }
239
- .squisq-image-editor-layer-add-menu-item {
240
- display: flex;
241
- align-items: center;
242
- gap: 8px;
243
- width: 100%;
244
- padding: 6px 8px;
245
- color: inherit;
246
- background: transparent;
247
- border: 0;
248
- border-radius: 3px;
249
- cursor: pointer;
250
- font: inherit;
251
- font-size: 12px;
252
- text-align: left;
253
- }
254
- .squisq-image-editor-layer-add-menu-item:hover,
255
- .squisq-image-editor-layer-add-menu-item:focus-visible {
256
- background: var(--squisq-image-editor-control-bg);
257
- outline: none;
258
- }
259
- .squisq-image-editor-layer-add-menu-item svg {
260
- flex: 0 0 auto;
261
- width: 14px;
262
- }
263
- .squisq-image-editor-layer-list {
264
- list-style: none;
265
- margin: 0;
266
- padding: 0.25rem 0;
267
- max-height: 240px;
268
- overflow: auto;
269
- }
270
- .squisq-image-editor-layer-empty {
271
- padding: 0.5rem 0.75rem;
272
- color: var(--squisq-image-editor-text-muted);
273
- font-style: italic;
274
- }
275
- .squisq-image-editor-layer-item {
276
- display: flex;
277
- align-items: center;
278
- gap: 0.25rem;
279
- padding: 0.2rem 0.5rem;
280
- }
281
- .squisq-image-editor-layer-item.is-selected {
282
- background: rgba(51, 153, 255, 0.18);
283
- }
284
- .squisq-image-editor-layer-item.is-hidden {
285
- opacity: 0.5;
286
- }
287
- .squisq-image-editor-layer-toggle {
288
- background: transparent;
289
- border: 1px solid transparent;
290
- color: inherit;
291
- padding: 2px 5px;
292
- border-radius: 3px;
293
- font: inherit;
294
- font-size: 15px;
295
- cursor: pointer;
296
- line-height: 1;
297
- display: inline-flex;
298
- align-items: center;
299
- justify-content: center;
300
- }
301
- .squisq-image-editor-layer-toggle:hover:not(:disabled) {
302
- background: var(--squisq-image-editor-control-bg);
303
- }
304
- .squisq-image-editor-layer-toggle:disabled {
305
- opacity: 0.3;
306
- cursor: not-allowed;
307
- }
308
- .squisq-image-editor-layer-name {
309
- min-width: 0;
310
- flex: 1 1 auto;
311
- text-align: left;
312
- background: transparent;
313
- border: none;
314
- color: inherit;
315
- cursor: pointer;
316
- font: inherit;
317
- padding: 2px 4px;
318
- display: flex;
319
- align-items: center;
320
- gap: 0.5rem;
321
- overflow: hidden;
322
- text-overflow: ellipsis;
323
- white-space: nowrap;
324
- }
325
- .squisq-image-editor-layer-name-text {
326
- min-width: 0;
327
- overflow: hidden;
328
- text-overflow: ellipsis;
329
- white-space: nowrap;
330
- }
331
- .squisq-image-editor-layer-kind {
332
- flex: 0 0 auto;
333
- margin-left: auto;
334
- font-size: 10px;
335
- color: var(--squisq-image-editor-text-muted);
336
- text-transform: uppercase;
337
- }
338
-
339
- /* ── Properties panel ──────────────────────────────────────────────── */
340
- .squisq-image-editor-properties {
341
- flex: 1 1 auto;
342
- }
343
- .squisq-image-editor-properties-empty {
344
- padding: 0.75rem;
345
- color: var(--squisq-image-editor-text-muted);
346
- font-style: italic;
347
- }
348
- .squisq-image-editor-fieldset {
349
- border: none;
350
- border-bottom: 1px solid var(--squisq-image-editor-panel-border);
351
- margin: 0;
352
- padding: 0.5rem 0.75rem 0.6rem;
353
- }
354
- .squisq-image-editor-fieldset legend {
355
- padding: 0;
356
- font-size: 11px;
357
- font-weight: 600;
358
- text-transform: uppercase;
359
- letter-spacing: 0.04em;
360
- color: var(--squisq-image-editor-text-muted);
361
- margin-bottom: 0.4rem;
362
- }
363
- .squisq-image-editor-field {
364
- display: grid;
365
- grid-template-columns: 80px 1fr;
366
- align-items: center;
367
- gap: 0.5rem;
368
- margin-bottom: 0.3rem;
369
- font-size: 12px;
370
- }
371
- .squisq-image-editor-field--multiline {
372
- grid-template-columns: 80px 1fr;
373
- align-items: start;
374
- }
375
- .squisq-image-editor-field > span {
376
- color: var(--squisq-image-editor-text-muted);
377
- }
378
- .squisq-image-editor-field input[type='number'],
379
- .squisq-image-editor-field input[type='text'],
380
- .squisq-image-editor-field select,
381
- .squisq-image-editor-field textarea {
382
- width: 100%;
383
- background: var(--squisq-image-editor-control-bg);
384
- border: 1px solid var(--squisq-image-editor-control-border);
385
- color: inherit;
386
- border-radius: 3px;
387
- padding: 3px 5px;
388
- font: inherit;
389
- box-sizing: border-box;
390
- }
391
- .squisq-image-editor-field textarea {
392
- resize: vertical;
393
- min-height: 56px;
394
- }
395
- .squisq-image-editor-color-row {
396
- display: flex;
397
- align-items: center;
398
- gap: 0.25rem;
399
- }
400
- .squisq-image-editor-color-row input[type='color'] {
401
- width: 28px;
402
- height: 24px;
403
- padding: 0;
404
- border: 1px solid var(--squisq-image-editor-control-border);
405
- border-radius: 3px;
406
- background: transparent;
407
- cursor: pointer;
408
- flex: 0 0 auto;
409
- }
410
- .squisq-image-editor-color-row input[type='text'] {
411
- flex: 1 1 auto;
412
- font-family: ui-monospace, monospace;
413
- font-size: 11px;
414
- }
415
- .squisq-image-editor-color-clear {
416
- background: var(--squisq-image-editor-control-bg);
417
- border: 1px solid var(--squisq-image-editor-control-border);
418
- color: inherit;
419
- border-radius: 3px;
420
- padding: 2px 5px;
421
- cursor: pointer;
422
- font: inherit;
423
- font-size: 14px;
424
- display: inline-flex;
425
- align-items: center;
426
- justify-content: center;
427
- }
428
-
429
- /* ── Zoom controls ──────────────────────────────────────────────────── */
430
- .squisq-image-editor-tool-group--zoom {
431
- gap: 0.15rem;
432
- }
433
- .squisq-image-editor-zoom-input {
434
- width: 44px;
435
- text-align: center;
436
- background: var(--squisq-image-editor-control-bg);
437
- border: 1px solid var(--squisq-image-editor-control-border);
438
- color: inherit;
439
- border-radius: 3px;
440
- padding: 3px 2px;
441
- font: inherit;
442
- font-size: 12px;
443
- -moz-appearance: textfield;
444
- }
445
- .squisq-image-editor-zoom-input::-webkit-inner-spin-button,
446
- .squisq-image-editor-zoom-input::-webkit-outer-spin-button {
447
- -webkit-appearance: none;
448
- }
449
- .squisq-image-editor-zoom-label {
450
- font-size: 12px;
451
- color: var(--squisq-image-editor-text-muted);
452
- padding: 0 1px;
453
- }
454
-
455
- /* -- Version history dropdown --------------------------------------- */
456
- .squisq-image-editor-version-dropdown {
457
- position: relative;
458
- display: inline-flex;
459
- }
460
- .squisq-image-editor-version-popover {
461
- position: absolute;
462
- top: calc(100% + 4px);
463
- right: 0;
464
- z-index: 10;
465
- min-width: 420px;
466
- max-width: 560px;
467
- background: var(--squisq-image-editor-panel-bg);
468
- border: 1px solid var(--squisq-image-editor-panel-border);
469
- border-radius: 6px;
470
- box-shadow: 0 8px 28px rgba(0, 0, 0, 0.35);
471
- padding: 6px;
472
- color: var(--squisq-image-editor-text);
473
- }
474
- .squisq-image-editor-version-popover__title {
475
- font-size: 11px;
476
- text-transform: uppercase;
477
- letter-spacing: 0.05em;
478
- color: var(--squisq-image-editor-text-muted);
479
- padding: 4px 6px 6px;
480
- }
481
- .squisq-image-editor-version-popover__empty {
482
- font-size: 12px;
483
- color: var(--squisq-image-editor-text-muted);
484
- padding: 8px 6px 10px;
485
- }
486
- .squisq-image-editor-version-popover__list {
487
- list-style: none;
488
- margin: 0;
489
- padding: 0;
490
- max-height: 280px;
491
- overflow-y: auto;
492
- }
493
- .squisq-image-editor-version-popover__row {
494
- display: flex;
495
- align-items: center;
496
- gap: 10px;
497
- padding: 6px 4px;
498
- border-radius: 4px;
499
- min-width: 0;
500
- }
501
- .squisq-image-editor-version-popover__row:hover {
502
- background: color-mix(in srgb, var(--squisq-image-editor-control-bg) 70%, transparent);
503
- }
504
- .squisq-image-editor-version-popover__thumb {
505
- flex: 0 0 auto;
506
- width: 56px;
507
- height: 40px;
508
- display: flex;
509
- align-items: center;
510
- justify-content: center;
511
- background: color-mix(in srgb, var(--squisq-image-editor-bg) 50%, transparent);
512
- border: 1px solid var(--squisq-image-editor-panel-border);
513
- border-radius: 3px;
514
- overflow: hidden;
515
- }
516
- .squisq-image-editor-version-popover__thumb-img {
517
- max-width: 100%;
518
- max-height: 100%;
519
- object-fit: contain;
520
- display: block;
521
- }
522
- .squisq-image-editor-version-popover__thumb-placeholder {
523
- width: 100%;
524
- height: 100%;
525
- background: repeating-linear-gradient(
526
- 45deg,
527
- transparent 0 4px,
528
- color-mix(in srgb, var(--squisq-image-editor-text-muted) 25%, transparent) 4px 8px
529
- );
530
- }
531
- .squisq-image-editor-version-popover__info {
532
- flex: 1 1 auto;
533
- min-width: 0;
534
- display: flex;
535
- flex-direction: column;
536
- gap: 2px;
537
- }
538
- .squisq-image-editor-version-popover__when {
539
- font-size: 12px;
540
- font-variant-numeric: tabular-nums;
541
- color: var(--squisq-image-editor-text);
542
- white-space: nowrap;
543
- overflow: hidden;
544
- text-overflow: ellipsis;
545
- display: flex;
546
- align-items: center;
547
- }
548
- .squisq-image-editor-version-popover__summary {
549
- font-size: 11px;
550
- color: var(--squisq-image-editor-text-muted);
551
- white-space: nowrap;
552
- overflow: hidden;
553
- text-overflow: ellipsis;
554
- }
555
- .squisq-image-editor-version-popover__row--current {
556
- background: color-mix(in srgb, var(--squisq-image-editor-accent) 12%, transparent);
557
- }
558
- .squisq-image-editor-version-popover__row--current:hover {
559
- background: color-mix(in srgb, var(--squisq-image-editor-accent) 18%, transparent);
560
- }
561
- .squisq-image-editor-version-popover__badge {
562
- display: inline-block;
563
- margin-right: 6px;
564
- padding: 1px 6px;
565
- font-size: 10px;
566
- font-weight: 600;
567
- text-transform: uppercase;
568
- letter-spacing: 0.04em;
569
- color: var(--squisq-image-editor-accent);
570
- background: color-mix(in srgb, var(--squisq-image-editor-accent) 18%, transparent);
571
- border: 1px solid color-mix(in srgb, var(--squisq-image-editor-accent) 40%, transparent);
572
- border-radius: 3px;
573
- vertical-align: 1px;
574
- }
@@ -1,45 +0,0 @@
1
- /**
2
- * SVG renderer for an `ImageEditLayer` of kind `image` inside the editor.
3
- * Resolves the asset path to a blob URL via the host-supplied
4
- * `resolveAssetUrl` (typically backed by the sidecar container).
5
- */
6
-
7
- import { useEffect, useState } from 'react';
8
- import type { ImageEditCanvas, ImageEditLayer } from '@bendyline/squisq/schemas';
9
-
10
- interface Props {
11
- layer: ImageEditLayer & { type: 'image' };
12
- canvas: ImageEditCanvas;
13
- resolveAssetUrl: (path: string) => Promise<string>;
14
- }
15
-
16
- export function EditorImageLayer({ layer, canvas, resolveAssetUrl }: Props) {
17
- const [href, setHref] = useState<string | null>(null);
18
- const src = layer.content.src;
19
-
20
- useEffect(() => {
21
- let cancelled = false;
22
- resolveAssetUrl(src)
23
- .then((url) => {
24
- if (!cancelled) setHref(url);
25
- })
26
- .catch(() => {
27
- if (!cancelled) setHref(null);
28
- });
29
- return () => {
30
- cancelled = true;
31
- };
32
- }, [src, resolveAssetUrl]);
33
-
34
- if (!href) return null;
35
-
36
- const p = layer.position;
37
- const x = typeof p.x === 'number' ? p.x : 0;
38
- const y = typeof p.y === 'number' ? p.y : 0;
39
- const width = typeof p.width === 'number' ? p.width : canvas.width;
40
- const height = typeof p.height === 'number' ? p.height : canvas.height;
41
- const fit = layer.content.fit ?? 'fill';
42
- const par = fit === 'cover' ? 'xMidYMid slice' : fit === 'contain' ? 'xMidYMid meet' : 'none';
43
-
44
- return <image href={href} x={x} y={y} width={width} height={height} preserveAspectRatio={par} />;
45
- }
@@ -1,62 +0,0 @@
1
- /**
2
- * SVG renderer for an `ImageEditLayer` of kind `shape` inside the editor.
3
- * Mirrors `react/src/layers/ShapeLayer.tsx` minus the animation/anchor
4
- * logic since the editor authors layers with numeric, top-left positions.
5
- */
6
-
7
- import type { ImageEditCanvas, ImageEditLayer } from '@bendyline/squisq/schemas';
8
-
9
- interface Props {
10
- layer: ImageEditLayer & { type: 'shape' };
11
- canvas: ImageEditCanvas;
12
- }
13
-
14
- export function EditorShapeLayer({ layer, canvas: _canvas }: Props) {
15
- const p = layer.position;
16
- const x = typeof p.x === 'number' ? p.x : 0;
17
- const y = typeof p.y === 'number' ? p.y : 0;
18
- const width = typeof p.width === 'number' ? p.width : 100;
19
- const height = typeof p.height === 'number' ? p.height : 100;
20
- const c = layer.content;
21
- const fill = c.fill ?? 'none';
22
- const stroke = c.stroke;
23
- const strokeWidth = c.strokeWidth;
24
-
25
- if (c.shape === 'rect') {
26
- return (
27
- <rect
28
- x={x}
29
- y={y}
30
- width={width}
31
- height={height}
32
- rx={c.borderRadius}
33
- ry={c.borderRadius}
34
- fill={fill}
35
- stroke={stroke}
36
- strokeWidth={strokeWidth}
37
- />
38
- );
39
- }
40
- if (c.shape === 'circle') {
41
- return (
42
- <circle
43
- cx={x + width / 2}
44
- cy={y + height / 2}
45
- r={Math.min(width, height) / 2}
46
- fill={fill}
47
- stroke={stroke}
48
- strokeWidth={strokeWidth}
49
- />
50
- );
51
- }
52
- return (
53
- <line
54
- x1={x}
55
- y1={y}
56
- x2={x + width}
57
- y2={y + height}
58
- stroke={stroke ?? '#000'}
59
- strokeWidth={strokeWidth ?? 1}
60
- />
61
- );
62
- }