@bendyline/squisq-editor-react 1.5.3 → 1.6.1

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 (186) hide show
  1. package/README.md +57 -10
  2. package/dist/index.d.ts +1114 -52
  3. package/dist/index.js +18446 -8050
  4. package/dist/index.js.map +1 -1
  5. package/dist/styles/fa-brands-400-AHOAZHCU.woff2 +0 -0
  6. package/dist/styles/fa-regular-400-VRZYIBIZ.woff2 +0 -0
  7. package/dist/styles/fa-solid-900-MDEYK55F.woff2 +0 -0
  8. package/dist/styles/fa-v4compatibility-ETEVP6IB.woff2 +0 -0
  9. package/dist/styles/index.css +13867 -0
  10. package/package.json +15 -7
  11. package/src/BlockCardView.tsx +121 -0
  12. package/src/BlockPreviewPanel.tsx +69 -0
  13. package/src/BlockPropertiesPopover.tsx +191 -0
  14. package/src/EditorContext.tsx +165 -16
  15. package/src/EditorShell.tsx +265 -144
  16. package/src/FolderView.tsx +131 -0
  17. package/src/Icon.tsx +26 -0
  18. package/src/ImageEditor.tsx +69 -22
  19. package/src/OutlinePanel.tsx +64 -7
  20. package/src/PlainHtmlPreview.tsx +30 -3
  21. package/src/PreviewControls.tsx +491 -122
  22. package/src/PreviewPanel.tsx +15 -9
  23. package/src/RawEditor.tsx +179 -17
  24. package/src/RecorderEntry.tsx +9 -16
  25. package/src/TemplateAnnotation.ts +44 -0
  26. package/src/TemplatePicker.tsx +329 -54
  27. package/src/ThemeCustomizerPanel.tsx +30 -336
  28. package/src/ThemePicker.tsx +112 -3
  29. package/src/TimelineBlockPreview.tsx +37 -0
  30. package/src/TimelineTrack.tsx +671 -0
  31. package/src/Toolbar.tsx +544 -180
  32. package/src/Tooltip.tsx +22 -4
  33. package/src/TransitionPicker.tsx +351 -0
  34. package/src/VersionHistoryPanel.tsx +4 -16
  35. package/src/ViewMenuPanel.tsx +17 -14
  36. package/src/WysiwygEditor.tsx +161 -65
  37. package/src/__tests__/blockProperties.test.ts +92 -0
  38. package/src/__tests__/blockRange.test.ts +105 -0
  39. package/src/__tests__/buildPreviewDocTransition.test.ts +73 -0
  40. package/src/__tests__/codeContextSectionView.test.tsx +95 -0
  41. package/src/__tests__/codeContextZoneManager.test.ts +127 -0
  42. package/src/__tests__/createShapeLayer.test.ts +46 -0
  43. package/src/__tests__/diffContextSections.test.ts +39 -0
  44. package/src/__tests__/drawingShapeRoundTrip.test.ts +49 -0
  45. package/src/__tests__/editorShellCodeContext.test.tsx +86 -0
  46. package/src/__tests__/editorShellProps.test.tsx +96 -0
  47. package/src/__tests__/embeddedMedia.test.ts +48 -0
  48. package/src/__tests__/headingTransition.test.ts +138 -0
  49. package/src/__tests__/layoutChildRoundTrip.test.ts +71 -0
  50. package/src/__tests__/plainHtmlPreview.test.tsx +10 -8
  51. package/src/__tests__/previewControls.test.tsx +70 -0
  52. package/src/__tests__/recorderMediaInsert.test.ts +86 -0
  53. package/src/__tests__/templateAnnotationRoundTrip.test.ts +18 -0
  54. package/src/__tests__/templatePickerMetadata.test.ts +32 -0
  55. package/src/__tests__/timelineSource.test.ts +134 -0
  56. package/src/__tests__/tiptapBridge.test.ts +92 -0
  57. package/src/__tests__/tiptapBridgeConformance.test.ts +47 -0
  58. package/src/__tests__/tooltip.test.tsx +72 -0
  59. package/src/__tests__/transitionCatalog.test.ts +64 -0
  60. package/src/__tests__/useBlockNavigator.test.tsx +67 -0
  61. package/src/__tests__/useJsonEditorTokens.test.ts +59 -0
  62. package/src/__tests__/useMediaRecorder.test.ts +41 -0
  63. package/src/__tests__/useTimelineClock.test.ts +21 -0
  64. package/src/blockProperties.ts +88 -0
  65. package/src/blockRange.ts +132 -0
  66. package/src/buildPreviewDoc.ts +98 -9
  67. package/src/codeContext/CodeContextSectionView.tsx +124 -0
  68. package/src/codeContext/CodeContextZoneManager.ts +149 -0
  69. package/src/codeContext/CodeContextZones.tsx +121 -0
  70. package/src/codeContext/diffContextSections.ts +38 -0
  71. package/src/codeContext/types.ts +75 -0
  72. package/src/customTemplates/AddBin.tsx +126 -0
  73. package/src/customTemplates/CustomLayoutManager.tsx +233 -0
  74. package/src/customTemplates/CustomTemplateContext.tsx +182 -0
  75. package/src/customTemplates/LayerToolbar.tsx +580 -0
  76. package/src/customTemplates/ShapeGlyph.tsx +47 -0
  77. package/src/customTemplates/TemplateDesigner.tsx +430 -0
  78. package/src/customTemplates/__tests__/library.test.ts +88 -0
  79. package/src/customTemplates/__tests__/normalizePositions.test.ts +109 -0
  80. package/src/customTemplates/__tests__/shapeDefs.test.ts +49 -0
  81. package/src/customTemplates/__tests__/useMemoryLayerAdapter.test.ts +95 -0
  82. package/src/customTemplates/designer.css +673 -0
  83. package/src/customTemplates/index.ts +31 -0
  84. package/src/customTemplates/library.ts +97 -0
  85. package/src/customTemplates/normalizePositions.ts +75 -0
  86. package/src/customTemplates/shapeDefs.ts +131 -0
  87. package/src/customTemplates/thumbnail.tsx +63 -0
  88. package/src/customTemplates/tokenDefs.ts +60 -0
  89. package/src/customTemplates/useDocCustomTemplates.ts +52 -0
  90. package/src/customTemplates/useMemoryLayerAdapter.ts +123 -0
  91. package/src/customThemes/CustomThemeContext.tsx +179 -0
  92. package/src/customThemes/CustomThemeDialog.tsx +286 -0
  93. package/src/customThemes/__tests__/CustomThemeContext.test.tsx +64 -0
  94. package/src/customThemes/__tests__/CustomThemeDialog.test.tsx +47 -0
  95. package/src/customThemes/__tests__/customThemeLibrary.test.ts +51 -0
  96. package/src/customThemes/customThemeLibrary.ts +97 -0
  97. package/src/customThemes/index.ts +31 -0
  98. package/src/customThemes/themeControls.tsx +229 -0
  99. package/src/customThemes/themeDraft.ts +272 -0
  100. package/src/customThemes/useDocCustomThemes.ts +49 -0
  101. package/src/diagram/DiagramCanvas.tsx +240 -0
  102. package/src/diagram/DiagramExtension.ts +209 -0
  103. package/src/diagram/DiagramMaximizedOverlay.tsx +46 -0
  104. package/src/diagram/DiagramWidget.tsx +270 -0
  105. package/src/diagram/diagramCommands.ts +604 -0
  106. package/src/diagram/diagramConstants.ts +17 -0
  107. package/src/diagram/useDiagramData.ts +126 -0
  108. package/src/embeddedMedia.ts +78 -0
  109. package/src/frontmatter.ts +29 -0
  110. package/src/headingTransition.ts +231 -0
  111. package/src/imageEditor/CanvasSurface.tsx +383 -88
  112. package/src/imageEditor/PropertiesPanel.tsx +47 -1
  113. package/src/imageEditor/Toolbar.tsx +229 -16
  114. package/src/imageEditor/createShapeLayer.ts +280 -0
  115. package/src/imageEditor/icons.tsx +34 -114
  116. package/src/imageEditor/image-editor.css +54 -5
  117. package/src/imageEditor/state.ts +23 -3
  118. package/src/index.ts +109 -1
  119. package/src/jsonEditor/useJsonEditorTokens.ts +13 -43
  120. package/src/recorder/RecorderModal.tsx +120 -53
  121. package/src/recorder/RecorderPanel.tsx +2 -26
  122. package/src/recorder/hooks/useMediaRecorder.ts +17 -11
  123. package/src/recorder/insertMediaBlock.ts +30 -0
  124. package/src/resolveBlockVisual.ts +33 -0
  125. package/src/scene/Scene.tsx +540 -0
  126. package/src/scene/SceneBlockExtension.ts +198 -0
  127. package/src/scene/SceneBlockToolbar.tsx +201 -0
  128. package/src/scene/SceneBlockWidget.tsx +434 -0
  129. package/src/scene/ScenePropsBar.tsx +85 -0
  130. package/src/scene/SceneSelection.tsx +107 -0
  131. package/src/scene/SceneViewport.tsx +102 -0
  132. package/src/scene/ShapePalette.tsx +181 -0
  133. package/src/scene/__tests__/DiagramAdapter.test.ts +56 -0
  134. package/src/scene/__tests__/bezierEdit.test.ts +85 -0
  135. package/src/scene/__tests__/blockLayers.test.ts +57 -0
  136. package/src/scene/__tests__/shapeLayers.test.ts +106 -0
  137. package/src/scene/__tests__/useSceneHitTest.test.ts +90 -0
  138. package/src/scene/__tests__/useScenePanZoom.test.ts +103 -0
  139. package/src/scene/adapters/DiagramAdapter.ts +168 -0
  140. package/src/scene/adapters/DrawingAdapter.ts +415 -0
  141. package/src/scene/adapters/LayoutAdapter.ts +310 -0
  142. package/src/scene/adapters/blockLayers.ts +159 -0
  143. package/src/scene/commands/SceneCommand.ts +70 -0
  144. package/src/scene/commands/drawingCommands.ts +318 -0
  145. package/src/scene/commands/layoutCommands.ts +301 -0
  146. package/src/scene/hooks/useSceneHitTest.ts +105 -0
  147. package/src/scene/hooks/useScenePanZoom.ts +147 -0
  148. package/src/scene/hooks/useSceneSelection.ts +62 -0
  149. package/src/scene/index.ts +95 -0
  150. package/src/scene/layers/DiagramEdges.tsx +127 -0
  151. package/src/scene/layers/edgeGeometry.ts +77 -0
  152. package/src/scene/layers/nodeCard.tsx +145 -0
  153. package/src/scene/layers/renderLayer.tsx +70 -0
  154. package/src/scene/layers/shapeLayers.ts +201 -0
  155. package/src/scene/paths/bezierEdit.ts +208 -0
  156. package/src/scene/scene.css +649 -0
  157. package/src/scene/text/SceneTextOverlay.tsx +161 -0
  158. package/src/scene/text/sceneTextChannel.ts +40 -0
  159. package/src/scene/text/sceneTextConfig.ts +27 -0
  160. package/src/scene/text/sceneTiptap.ts +36 -0
  161. package/src/scene/text/useSceneTextEditing.ts +39 -0
  162. package/src/scene/tools/ConnectTool.ts +111 -0
  163. package/src/scene/tools/DrawingConnectTool.ts +161 -0
  164. package/src/scene/tools/PathTool.ts +158 -0
  165. package/src/scene/tools/PlaceTool.ts +47 -0
  166. package/src/scene/tools/SceneTool.ts +75 -0
  167. package/src/scene/tools/SelectTool.ts +284 -0
  168. package/src/scene/tools/ShapeTool.ts +144 -0
  169. package/src/scene/tools/TextTool.ts +72 -0
  170. package/src/scene/tools/TokenTool.ts +95 -0
  171. package/src/scene/tools/createDrawShapeTool.ts +82 -0
  172. package/src/styles/code-context.css +155 -0
  173. package/src/styles/diagram.css +183 -0
  174. package/src/styles/editor.css +1708 -150
  175. package/src/styles/folder-view.css +210 -0
  176. package/src/styles/image-edit-affordance.css +2 -2
  177. package/src/styles/index.css +5 -0
  178. package/src/timelineSource.ts +244 -0
  179. package/src/tiptapBridge.ts +115 -34
  180. package/src/tooltipPlacement.ts +13 -0
  181. package/src/transitionCatalog.ts +159 -0
  182. package/src/types/monaco-shims.d.ts +10 -0
  183. package/src/useBlockNavigator.ts +153 -0
  184. package/src/useMonacoLoader.ts +23 -1
  185. package/src/useTimelineClock.ts +76 -0
  186. package/src/utils/dropUtils.ts +1 -1
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Diagram editor styles.
3
+ *
4
+ * `.squisq-diagram-widget-host`: the wrapper ProseMirror inserts after a
5
+ * `### Foo {[diagram]}` heading. Hosts a React-Flow canvas at a fixed
6
+ * inline height; flipping the `maximized` state portals the canvas out
7
+ * to an overlay (`.squisq-diagram-maximized-overlay`) instead.
8
+ *
9
+ * `[data-squisq-diagram-child]`: ProseMirror marks each direct sub-heading
10
+ * of a diagram parent. CSS hides those headings (and the body content
11
+ * between them) so the diagram canvas is the only visual representation
12
+ * of the section in the WYSIWYG view. Authors can still edit them
13
+ * through the canvas, or via the Raw / Linear views.
14
+ */
15
+
16
+ .squisq-diagram-widget-host {
17
+ margin: 0.75rem 0 1.25rem;
18
+ }
19
+
20
+ .squisq-diagram-inline {
21
+ position: relative;
22
+ width: 100%;
23
+ height: 420px;
24
+ border: 1px solid var(--squisq-border, #e2e8f0);
25
+ border-radius: 8px;
26
+ overflow: hidden;
27
+ background: var(--squisq-surface, #ffffff);
28
+ }
29
+
30
+ .squisq-diagram-canvas {
31
+ position: relative;
32
+ width: 100%;
33
+ height: 100%;
34
+ }
35
+
36
+ /* Drag bar along the bottom edge — pins the canvas to a fixed pixel
37
+ * height (persisted as `height=` on the `{[diagram …]}` heading). Sits
38
+ * above the Scene so the gesture is captured by the handle, not the
39
+ * canvas. Double-click reverts to the default height. */
40
+ .squisq-diagram-resize-handle {
41
+ position: absolute;
42
+ left: 0;
43
+ right: 0;
44
+ bottom: 0;
45
+ height: 12px;
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ cursor: ns-resize;
50
+ z-index: 11;
51
+ touch-action: none;
52
+ }
53
+ .squisq-diagram-resize-handle::before {
54
+ content: '';
55
+ width: 44px;
56
+ height: 4px;
57
+ border-radius: 2px;
58
+ background: var(--squisq-border, #cbd5e1);
59
+ transition: background 0.12s;
60
+ }
61
+ .squisq-diagram-resize-handle:hover::before {
62
+ background: var(--squisq-text-muted, #94a3b8);
63
+ }
64
+
65
+ .squisq-diagram-canvas .react-flow {
66
+ width: 100%;
67
+ height: 100%;
68
+ }
69
+
70
+ .squisq-diagram-empty {
71
+ position: absolute;
72
+ inset: 0;
73
+ display: flex;
74
+ flex-direction: column;
75
+ align-items: center;
76
+ justify-content: center;
77
+ gap: 8px;
78
+ pointer-events: none;
79
+ text-align: center;
80
+ padding: 24px;
81
+ }
82
+
83
+ .squisq-diagram-empty-title {
84
+ font-size: 14px;
85
+ font-weight: 600;
86
+ color: var(--squisq-text, #1e293b);
87
+ }
88
+
89
+ .squisq-diagram-empty-hint {
90
+ font-size: 12px;
91
+ color: var(--squisq-text-muted, #64748b);
92
+ max-width: 320px;
93
+ line-height: 1.45;
94
+ }
95
+
96
+ .squisq-diagram-empty-btn {
97
+ pointer-events: auto;
98
+ margin-top: 4px;
99
+ padding: 6px 12px;
100
+ font-size: 12px;
101
+ font-weight: 500;
102
+ color: #ffffff;
103
+ background: #6366f1;
104
+ border: none;
105
+ border-radius: 6px;
106
+ cursor: pointer;
107
+ transition: background 0.1s;
108
+ }
109
+
110
+ .squisq-diagram-empty-btn:hover {
111
+ background: #4f46e5;
112
+ }
113
+
114
+ .squisq-diagram-maximize-btn {
115
+ position: absolute;
116
+ top: 8px;
117
+ right: 8px;
118
+ z-index: 10;
119
+ width: 32px;
120
+ height: 32px;
121
+ display: inline-flex;
122
+ align-items: center;
123
+ justify-content: center;
124
+ background: var(--squisq-surface, #ffffff);
125
+ border: 1px solid var(--squisq-border, #e2e8f0);
126
+ border-radius: 6px;
127
+ cursor: pointer;
128
+ font-size: 16px;
129
+ line-height: 1;
130
+ color: var(--squisq-text, #1e293b);
131
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
132
+ }
133
+ .squisq-diagram-maximize-btn:hover {
134
+ background: var(--squisq-surface-hover, #f8fafc);
135
+ }
136
+
137
+ .squisq-diagram-maximized-overlay {
138
+ position: fixed;
139
+ inset: 0;
140
+ z-index: 9999;
141
+ background: rgba(15, 23, 42, 0.6);
142
+ display: flex;
143
+ align-items: stretch;
144
+ justify-content: stretch;
145
+ }
146
+
147
+ .squisq-diagram-maximized-content {
148
+ position: relative;
149
+ flex: 1;
150
+ margin: 24px;
151
+ background: var(--squisq-surface, #ffffff);
152
+ border-radius: 12px;
153
+ overflow: hidden;
154
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
155
+ }
156
+
157
+ .squisq-diagram-maximized-content .squisq-diagram-canvas {
158
+ width: 100%;
159
+ height: 100%;
160
+ }
161
+
162
+ /* Child headings owned by a diagram are hidden in the WYSIWYG.
163
+ * They still exist in the doc (and in markdown) — the diagram canvas
164
+ * is the editing surface for them. */
165
+ [data-squisq-diagram-child='true'] {
166
+ display: none;
167
+ }
168
+
169
+ .squisq-diagram-inline-placeholder {
170
+ /* Reserved space so the document layout doesn't jump when the canvas
171
+ * portals into the maximize overlay. */
172
+ height: 420px;
173
+ border: 1px dashed var(--squisq-border, #e2e8f0);
174
+ border-radius: 8px;
175
+ display: flex;
176
+ align-items: center;
177
+ justify-content: center;
178
+ color: var(--squisq-text-muted, #64748b);
179
+ font-size: 14px;
180
+ }
181
+ .squisq-diagram-inline-placeholder::before {
182
+ content: 'Diagram open in full screen — press Esc to return';
183
+ }