@bendyline/squisq-editor-react 1.4.0 → 1.5.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.
- package/dist/DocumentSettingsDialog.d.ts +26 -0
- package/dist/DocumentSettingsDialog.d.ts.map +1 -0
- package/dist/DocumentSettingsDialog.js +115 -0
- package/dist/DocumentSettingsDialog.js.map +1 -0
- package/dist/EditorContext.d.ts +248 -4
- package/dist/EditorContext.d.ts.map +1 -1
- package/dist/EditorContext.js +248 -10
- package/dist/EditorContext.js.map +1 -1
- package/dist/EditorShell.d.ts +173 -4
- package/dist/EditorShell.d.ts.map +1 -1
- package/dist/EditorShell.js +110 -10
- package/dist/EditorShell.js.map +1 -1
- package/dist/EmojiPicker.d.ts +50 -0
- package/dist/EmojiPicker.d.ts.map +1 -0
- package/dist/EmojiPicker.js +182 -0
- package/dist/EmojiPicker.js.map +1 -0
- package/dist/ImageEditor.d.ts +68 -0
- package/dist/ImageEditor.d.ts.map +1 -0
- package/dist/ImageEditor.js +166 -0
- package/dist/ImageEditor.js.map +1 -0
- package/dist/ImageNodeView.d.ts +13 -1
- package/dist/ImageNodeView.d.ts.map +1 -1
- package/dist/ImageNodeView.js +172 -19
- package/dist/ImageNodeView.js.map +1 -1
- package/dist/ImageViewer.d.ts +26 -0
- package/dist/ImageViewer.d.ts.map +1 -0
- package/dist/ImageViewer.js +119 -0
- package/dist/ImageViewer.js.map +1 -0
- package/dist/InlineIcon.d.ts +17 -0
- package/dist/InlineIcon.d.ts.map +1 -0
- package/dist/InlineIcon.js +72 -0
- package/dist/InlineIcon.js.map +1 -0
- package/dist/InlinePreviewGutter.d.ts +52 -0
- package/dist/InlinePreviewGutter.d.ts.map +1 -0
- package/dist/InlinePreviewGutter.js +397 -0
- package/dist/InlinePreviewGutter.js.map +1 -0
- package/dist/LinkDialog.d.ts +43 -0
- package/dist/LinkDialog.d.ts.map +1 -0
- package/dist/LinkDialog.js +102 -0
- package/dist/LinkDialog.js.map +1 -0
- package/dist/MentionExtension.js +10 -7
- package/dist/MentionExtension.js.map +1 -1
- package/dist/OutlinePanel.d.ts +17 -0
- package/dist/OutlinePanel.d.ts.map +1 -0
- package/dist/OutlinePanel.js +167 -0
- package/dist/OutlinePanel.js.map +1 -0
- package/dist/PlainHtmlPreview.d.ts +50 -0
- package/dist/PlainHtmlPreview.d.ts.map +1 -0
- package/dist/PlainHtmlPreview.js +155 -0
- package/dist/PlainHtmlPreview.js.map +1 -0
- package/dist/PreviewControls.d.ts +15 -1
- package/dist/PreviewControls.d.ts.map +1 -1
- package/dist/PreviewControls.js +75 -18
- package/dist/PreviewControls.js.map +1 -1
- package/dist/PreviewPanel.d.ts +11 -10
- package/dist/PreviewPanel.d.ts.map +1 -1
- package/dist/PreviewPanel.js +20 -17
- package/dist/PreviewPanel.js.map +1 -1
- package/dist/RawEditor.d.ts.map +1 -1
- package/dist/RawEditor.js +198 -4
- package/dist/RawEditor.js.map +1 -1
- package/dist/RecorderEntry.d.ts +24 -0
- package/dist/RecorderEntry.d.ts.map +1 -0
- package/dist/RecorderEntry.js +139 -0
- package/dist/RecorderEntry.js.map +1 -0
- package/dist/TemplateAnnotation.d.ts.map +1 -1
- package/dist/TemplateAnnotation.js +32 -6
- package/dist/TemplateAnnotation.js.map +1 -1
- package/dist/TemplatePicker.d.ts +53 -0
- package/dist/TemplatePicker.d.ts.map +1 -0
- package/dist/TemplatePicker.js +388 -0
- package/dist/TemplatePicker.js.map +1 -0
- package/dist/ThemeCustomizerPanel.d.ts +32 -0
- package/dist/ThemeCustomizerPanel.d.ts.map +1 -0
- package/dist/ThemeCustomizerPanel.js +256 -0
- package/dist/ThemeCustomizerPanel.js.map +1 -0
- package/dist/ThemePicker.d.ts +33 -0
- package/dist/ThemePicker.d.ts.map +1 -0
- package/dist/ThemePicker.js +148 -0
- package/dist/ThemePicker.js.map +1 -0
- package/dist/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar.js +508 -33
- package/dist/Toolbar.js.map +1 -1
- package/dist/VersionHistoryPanel.d.ts +14 -0
- package/dist/VersionHistoryPanel.d.ts.map +1 -0
- package/dist/VersionHistoryPanel.js +147 -0
- package/dist/VersionHistoryPanel.js.map +1 -0
- package/dist/ViewMenuPanel.d.ts +13 -0
- package/dist/ViewMenuPanel.d.ts.map +1 -0
- package/dist/ViewMenuPanel.js +58 -0
- package/dist/ViewMenuPanel.js.map +1 -0
- package/dist/WysiwygEditor.d.ts.map +1 -1
- package/dist/WysiwygEditor.js +198 -9
- package/dist/WysiwygEditor.js.map +1 -1
- package/dist/__tests__/detectMarkdown.test.js +0 -14
- package/dist/__tests__/detectMarkdown.test.js.map +1 -1
- package/dist/__tests__/documentSettingsDialog.test.d.ts +2 -0
- package/dist/__tests__/documentSettingsDialog.test.d.ts.map +1 -0
- package/dist/__tests__/documentSettingsDialog.test.js +132 -0
- package/dist/__tests__/documentSettingsDialog.test.js.map +1 -0
- package/dist/__tests__/emojiPicker.test.d.ts +2 -0
- package/dist/__tests__/emojiPicker.test.d.ts.map +1 -0
- package/dist/__tests__/emojiPicker.test.js +111 -0
- package/dist/__tests__/emojiPicker.test.js.map +1 -0
- package/dist/__tests__/fileKind.test.js +13 -0
- package/dist/__tests__/fileKind.test.js.map +1 -1
- package/dist/__tests__/imageEditAffordance.test.d.ts +2 -0
- package/dist/__tests__/imageEditAffordance.test.d.ts.map +1 -0
- package/dist/__tests__/imageEditAffordance.test.js +188 -0
- package/dist/__tests__/imageEditAffordance.test.js.map +1 -0
- package/dist/__tests__/imageEditorShell.test.d.ts +2 -0
- package/dist/__tests__/imageEditorShell.test.d.ts.map +1 -0
- package/dist/__tests__/imageEditorShell.test.js +52 -0
- package/dist/__tests__/imageEditorShell.test.js.map +1 -0
- package/dist/__tests__/imageEditorState.test.d.ts +3 -0
- package/dist/__tests__/imageEditorState.test.d.ts.map +1 -0
- package/dist/__tests__/imageEditorState.test.js +148 -0
- package/dist/__tests__/imageEditorState.test.js.map +1 -0
- package/dist/__tests__/inlinePreviewGutter.test.d.ts +2 -0
- package/dist/__tests__/inlinePreviewGutter.test.d.ts.map +1 -0
- package/dist/__tests__/inlinePreviewGutter.test.js +51 -0
- package/dist/__tests__/inlinePreviewGutter.test.js.map +1 -0
- package/dist/__tests__/inlinePreviewGutterAllBlocks.test.d.ts +2 -0
- package/dist/__tests__/inlinePreviewGutterAllBlocks.test.d.ts.map +1 -0
- package/dist/__tests__/inlinePreviewGutterAllBlocks.test.js +63 -0
- package/dist/__tests__/inlinePreviewGutterAllBlocks.test.js.map +1 -0
- package/dist/__tests__/jsonEditor.test.d.ts +2 -0
- package/dist/__tests__/jsonEditor.test.d.ts.map +1 -0
- package/dist/__tests__/jsonEditor.test.js +134 -0
- package/dist/__tests__/jsonEditor.test.js.map +1 -0
- package/dist/__tests__/layersPanel.test.d.ts +2 -0
- package/dist/__tests__/layersPanel.test.d.ts.map +1 -0
- package/dist/__tests__/layersPanel.test.js +84 -0
- package/dist/__tests__/layersPanel.test.js.map +1 -0
- package/dist/__tests__/linkDialogDocPicker.test.d.ts +7 -0
- package/dist/__tests__/linkDialogDocPicker.test.d.ts.map +1 -0
- package/dist/__tests__/linkDialogDocPicker.test.js +75 -0
- package/dist/__tests__/linkDialogDocPicker.test.js.map +1 -0
- package/dist/__tests__/outlinePanel.test.d.ts +2 -0
- package/dist/__tests__/outlinePanel.test.d.ts.map +1 -0
- package/dist/__tests__/outlinePanel.test.js +68 -0
- package/dist/__tests__/outlinePanel.test.js.map +1 -0
- package/dist/__tests__/plainHtmlPreview.test.d.ts +2 -0
- package/dist/__tests__/plainHtmlPreview.test.d.ts.map +1 -0
- package/dist/__tests__/plainHtmlPreview.test.js +87 -0
- package/dist/__tests__/plainHtmlPreview.test.js.map +1 -0
- package/dist/__tests__/propertiesPanel.test.d.ts +2 -0
- package/dist/__tests__/propertiesPanel.test.d.ts.map +1 -0
- package/dist/__tests__/propertiesPanel.test.js +64 -0
- package/dist/__tests__/propertiesPanel.test.js.map +1 -0
- package/dist/__tests__/recorderFormats.test.d.ts +2 -0
- package/dist/__tests__/recorderFormats.test.d.ts.map +1 -0
- package/dist/__tests__/recorderFormats.test.js +121 -0
- package/dist/__tests__/recorderFormats.test.js.map +1 -0
- package/dist/__tests__/recorderTimingJson.test.d.ts +2 -0
- package/dist/__tests__/recorderTimingJson.test.d.ts.map +1 -0
- package/dist/__tests__/recorderTimingJson.test.js +37 -0
- package/dist/__tests__/recorderTimingJson.test.js.map +1 -0
- package/dist/__tests__/templateAnnotationRoundTrip.test.d.ts +2 -0
- package/dist/__tests__/templateAnnotationRoundTrip.test.d.ts.map +1 -0
- package/dist/__tests__/templateAnnotationRoundTrip.test.js +31 -0
- package/dist/__tests__/templateAnnotationRoundTrip.test.js.map +1 -0
- package/dist/__tests__/tiptapBridge.test.js +13 -0
- package/dist/__tests__/tiptapBridge.test.js.map +1 -1
- package/dist/__tests__/useImageEditor.test.d.ts +2 -0
- package/dist/__tests__/useImageEditor.test.d.ts.map +1 -0
- package/dist/__tests__/useImageEditor.test.js +131 -0
- package/dist/__tests__/useImageEditor.test.js.map +1 -0
- package/dist/__tests__/useMediaRecorder.test.d.ts +2 -0
- package/dist/__tests__/useMediaRecorder.test.d.ts.map +1 -0
- package/dist/__tests__/useMediaRecorder.test.js +153 -0
- package/dist/__tests__/useMediaRecorder.test.js.map +1 -0
- package/dist/__tests__/versionHistory.test.d.ts +2 -0
- package/dist/__tests__/versionHistory.test.d.ts.map +1 -0
- package/dist/__tests__/versionHistory.test.js +124 -0
- package/dist/__tests__/versionHistory.test.js.map +1 -0
- package/dist/blockSlice.d.ts +24 -0
- package/dist/blockSlice.d.ts.map +1 -0
- package/dist/blockSlice.js +63 -0
- package/dist/blockSlice.js.map +1 -0
- package/dist/buildPreviewDoc.d.ts.map +1 -1
- package/dist/buildPreviewDoc.js +52 -2
- package/dist/buildPreviewDoc.js.map +1 -1
- package/dist/emojiData.d.ts +81 -0
- package/dist/emojiData.d.ts.map +1 -0
- package/dist/emojiData.js +1283 -0
- package/dist/emojiData.js.map +1 -0
- package/dist/fileKind.d.ts +6 -2
- package/dist/fileKind.d.ts.map +1 -1
- package/dist/fileKind.js +25 -4
- package/dist/fileKind.js.map +1 -1
- package/dist/hooks/useFileDrop.d.ts.map +1 -1
- package/dist/hooks/useFileDrop.js +40 -4
- package/dist/hooks/useFileDrop.js.map +1 -1
- package/dist/imageEditor/CanvasSurface.d.ts +31 -0
- package/dist/imageEditor/CanvasSurface.d.ts.map +1 -0
- package/dist/imageEditor/CanvasSurface.js +264 -0
- package/dist/imageEditor/CanvasSurface.js.map +1 -0
- package/dist/imageEditor/ImageVersionHistoryDropdown.d.ts +39 -0
- package/dist/imageEditor/ImageVersionHistoryDropdown.d.ts.map +1 -0
- package/dist/imageEditor/ImageVersionHistoryDropdown.js +283 -0
- package/dist/imageEditor/ImageVersionHistoryDropdown.js.map +1 -0
- package/dist/imageEditor/LayersPanel.d.ts +14 -0
- package/dist/imageEditor/LayersPanel.d.ts.map +1 -0
- package/dist/imageEditor/LayersPanel.js +43 -0
- package/dist/imageEditor/LayersPanel.js.map +1 -0
- package/dist/imageEditor/PropertiesPanel.d.ts +14 -0
- package/dist/imageEditor/PropertiesPanel.d.ts.map +1 -0
- package/dist/imageEditor/PropertiesPanel.js +97 -0
- package/dist/imageEditor/PropertiesPanel.js.map +1 -0
- package/dist/imageEditor/Toolbar.d.ts +30 -0
- package/dist/imageEditor/Toolbar.d.ts.map +1 -0
- package/dist/imageEditor/Toolbar.js +108 -0
- package/dist/imageEditor/Toolbar.js.map +1 -0
- package/dist/imageEditor/icons.d.ts +24 -0
- package/dist/imageEditor/icons.d.ts.map +1 -0
- package/dist/imageEditor/icons.js +45 -0
- package/dist/imageEditor/icons.js.map +1 -0
- package/dist/imageEditor/layers/EditorImageLayer.d.ts +16 -0
- package/dist/imageEditor/layers/EditorImageLayer.d.ts.map +1 -0
- package/dist/imageEditor/layers/EditorImageLayer.js +37 -0
- package/dist/imageEditor/layers/EditorImageLayer.js.map +1 -0
- package/dist/imageEditor/layers/EditorShapeLayer.d.ts +15 -0
- package/dist/imageEditor/layers/EditorShapeLayer.d.ts.map +1 -0
- package/dist/imageEditor/layers/EditorShapeLayer.js +20 -0
- package/dist/imageEditor/layers/EditorShapeLayer.js.map +1 -0
- package/dist/imageEditor/layers/EditorTextLayer.d.ts +18 -0
- package/dist/imageEditor/layers/EditorTextLayer.d.ts.map +1 -0
- package/dist/imageEditor/layers/EditorTextLayer.js +13 -0
- package/dist/imageEditor/layers/EditorTextLayer.js.map +1 -0
- package/dist/imageEditor/layers/SelectionHandles.d.ts +17 -0
- package/dist/imageEditor/layers/SelectionHandles.d.ts.map +1 -0
- package/dist/imageEditor/layers/SelectionHandles.js +19 -0
- package/dist/imageEditor/layers/SelectionHandles.js.map +1 -0
- package/dist/imageEditor/state.d.ts +76 -0
- package/dist/imageEditor/state.d.ts.map +1 -0
- package/dist/imageEditor/state.js +87 -0
- package/dist/imageEditor/state.js.map +1 -0
- package/dist/imageEditor/useImageEditor.d.ts +53 -0
- package/dist/imageEditor/useImageEditor.d.ts.map +1 -0
- package/dist/imageEditor/useImageEditor.js +244 -0
- package/dist/imageEditor/useImageEditor.js.map +1 -0
- package/dist/imageEditor/useImageEditorTokens.d.ts +16 -0
- package/dist/imageEditor/useImageEditorTokens.d.ts.map +1 -0
- package/dist/imageEditor/useImageEditorTokens.js +45 -0
- package/dist/imageEditor/useImageEditorTokens.js.map +1 -0
- package/dist/index.d.ts +48 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -1
- package/dist/jsonEditor/EmbeddedRichTextField.d.ts +15 -0
- package/dist/jsonEditor/EmbeddedRichTextField.d.ts.map +1 -0
- package/dist/jsonEditor/EmbeddedRichTextField.js +74 -0
- package/dist/jsonEditor/EmbeddedRichTextField.js.map +1 -0
- package/dist/jsonEditor/JsonEditor.d.ts +36 -0
- package/dist/jsonEditor/JsonEditor.d.ts.map +1 -0
- package/dist/jsonEditor/JsonEditor.js +15 -0
- package/dist/jsonEditor/JsonEditor.js.map +1 -0
- package/dist/jsonEditor/JsonEditorContext.d.ts +28 -0
- package/dist/jsonEditor/JsonEditorContext.d.ts.map +1 -0
- package/dist/jsonEditor/JsonEditorContext.js +41 -0
- package/dist/jsonEditor/JsonEditorContext.js.map +1 -0
- package/dist/jsonEditor/RenderNode.d.ts +16 -0
- package/dist/jsonEditor/RenderNode.d.ts.map +1 -0
- package/dist/jsonEditor/RenderNode.js +32 -0
- package/dist/jsonEditor/RenderNode.js.map +1 -0
- package/dist/jsonEditor/editors.d.ts +36 -0
- package/dist/jsonEditor/editors.d.ts.map +1 -0
- package/dist/jsonEditor/editors.js +347 -0
- package/dist/jsonEditor/editors.js.map +1 -0
- package/dist/jsonEditor/index.d.ts +3 -0
- package/dist/jsonEditor/index.d.ts.map +1 -0
- package/dist/jsonEditor/index.js +2 -0
- package/dist/jsonEditor/index.js.map +1 -0
- package/dist/jsonEditor/useJsonEditorTokens.d.ts +13 -0
- package/dist/jsonEditor/useJsonEditorTokens.d.ts.map +1 -0
- package/dist/jsonEditor/useJsonEditorTokens.js +38 -0
- package/dist/jsonEditor/useJsonEditorTokens.js.map +1 -0
- package/dist/recorder/RecorderButton.d.ts +31 -0
- package/dist/recorder/RecorderButton.d.ts.map +1 -0
- package/dist/recorder/RecorderButton.js +24 -0
- package/dist/recorder/RecorderButton.js.map +1 -0
- package/dist/recorder/RecorderModal.d.ts +59 -0
- package/dist/recorder/RecorderModal.d.ts.map +1 -0
- package/dist/recorder/RecorderModal.js +333 -0
- package/dist/recorder/RecorderModal.js.map +1 -0
- package/dist/recorder/RecorderPanel.d.ts +25 -0
- package/dist/recorder/RecorderPanel.d.ts.map +1 -0
- package/dist/recorder/RecorderPanel.js +30 -0
- package/dist/recorder/RecorderPanel.js.map +1 -0
- package/dist/recorder/formats.d.ts +51 -0
- package/dist/recorder/formats.d.ts.map +1 -0
- package/dist/recorder/formats.js +144 -0
- package/dist/recorder/formats.js.map +1 -0
- package/dist/recorder/hooks/useMediaRecorder.d.ts +90 -0
- package/dist/recorder/hooks/useMediaRecorder.d.ts.map +1 -0
- package/dist/recorder/hooks/useMediaRecorder.js +277 -0
- package/dist/recorder/hooks/useMediaRecorder.js.map +1 -0
- package/dist/recorder/hooks/useStreamPreview.d.ts +22 -0
- package/dist/recorder/hooks/useStreamPreview.d.ts.map +1 -0
- package/dist/recorder/hooks/useStreamPreview.js +44 -0
- package/dist/recorder/hooks/useStreamPreview.js.map +1 -0
- package/dist/recorder/sources/cameraStream.d.ts +22 -0
- package/dist/recorder/sources/cameraStream.d.ts.map +1 -0
- package/dist/recorder/sources/cameraStream.js +24 -0
- package/dist/recorder/sources/cameraStream.js.map +1 -0
- package/dist/recorder/sources/micStream.d.ts +15 -0
- package/dist/recorder/sources/micStream.d.ts.map +1 -0
- package/dist/recorder/sources/micStream.js +24 -0
- package/dist/recorder/sources/micStream.js.map +1 -0
- package/dist/recorder/sources/screenStream.d.ts +53 -0
- package/dist/recorder/sources/screenStream.d.ts.map +1 -0
- package/dist/recorder/sources/screenStream.js +114 -0
- package/dist/recorder/sources/screenStream.js.map +1 -0
- package/dist/recorder/timingJson.d.ts +51 -0
- package/dist/recorder/timingJson.d.ts.map +1 -0
- package/dist/recorder/timingJson.js +42 -0
- package/dist/recorder/timingJson.js.map +1 -0
- package/dist/tiptap/TiptapAudio.d.ts +26 -0
- package/dist/tiptap/TiptapAudio.d.ts.map +1 -0
- package/dist/tiptap/TiptapAudio.js +58 -0
- package/dist/tiptap/TiptapAudio.js.map +1 -0
- package/dist/tiptap/TiptapVideo.d.ts +30 -0
- package/dist/tiptap/TiptapVideo.d.ts.map +1 -0
- package/dist/tiptap/TiptapVideo.js +66 -0
- package/dist/tiptap/TiptapVideo.js.map +1 -0
- package/dist/tiptap/useResolvedMediaSrc.d.ts +2 -0
- package/dist/tiptap/useResolvedMediaSrc.d.ts.map +1 -0
- package/dist/tiptap/useResolvedMediaSrc.js +42 -0
- package/dist/tiptap/useResolvedMediaSrc.js.map +1 -0
- package/dist/tiptapBridge.d.ts.map +1 -1
- package/dist/tiptapBridge.js +171 -14
- package/dist/tiptapBridge.js.map +1 -1
- package/dist/useHeadingLayout.d.ts +54 -0
- package/dist/useHeadingLayout.d.ts.map +1 -0
- package/dist/useHeadingLayout.js +260 -0
- package/dist/useHeadingLayout.js.map +1 -0
- package/dist/utils/collectInlineFontAwesomeCss.d.ts +21 -0
- package/dist/utils/collectInlineFontAwesomeCss.d.ts.map +1 -0
- package/dist/utils/collectInlineFontAwesomeCss.js +68 -0
- package/dist/utils/collectInlineFontAwesomeCss.js.map +1 -0
- package/dist/utils/dropUtils.d.ts +21 -2
- package/dist/utils/dropUtils.d.ts.map +1 -1
- package/dist/utils/dropUtils.js +43 -4
- package/dist/utils/dropUtils.js.map +1 -1
- package/dist/utils/normalizeMalformedAssetUrl.d.ts +15 -0
- package/dist/utils/normalizeMalformedAssetUrl.d.ts.map +1 -0
- package/dist/utils/normalizeMalformedAssetUrl.js +27 -0
- package/dist/utils/normalizeMalformedAssetUrl.js.map +1 -0
- package/package.json +8 -5
- package/src/DocumentSettingsDialog.tsx +266 -0
- package/src/EditorContext.tsx +534 -10
- package/src/EditorShell.tsx +571 -55
- package/src/EmojiPicker.tsx +332 -0
- package/src/ImageEditor.tsx +327 -0
- package/src/ImageNodeView.tsx +222 -21
- package/src/ImageViewer.tsx +221 -0
- package/src/InlineIcon.ts +84 -0
- package/src/InlinePreviewGutter.tsx +582 -0
- package/src/LinkDialog.tsx +276 -0
- package/src/MentionExtension.tsx +10 -7
- package/src/OutlinePanel.tsx +295 -0
- package/src/PlainHtmlPreview.tsx +211 -0
- package/src/PreviewControls.tsx +130 -24
- package/src/PreviewPanel.tsx +38 -21
- package/src/RawEditor.tsx +215 -4
- package/src/RecorderEntry.tsx +164 -0
- package/src/TemplateAnnotation.ts +32 -6
- package/src/TemplatePicker.tsx +818 -0
- package/src/ThemeCustomizerPanel.tsx +595 -0
- package/src/ThemePicker.tsx +319 -0
- package/src/Toolbar.tsx +708 -111
- package/src/VersionHistoryPanel.tsx +329 -0
- package/src/ViewMenuPanel.tsx +188 -0
- package/src/WysiwygEditor.tsx +229 -9
- package/src/__tests__/detectMarkdown.test.ts +0 -15
- package/src/__tests__/documentSettingsDialog.test.tsx +147 -0
- package/src/__tests__/emojiPicker.test.tsx +133 -0
- package/src/__tests__/fileKind.test.ts +16 -0
- package/src/__tests__/imageEditAffordance.test.tsx +268 -0
- package/src/__tests__/imageEditorShell.test.tsx +57 -0
- package/src/__tests__/imageEditorState.test.ts +171 -0
- package/src/__tests__/inlinePreviewGutter.test.tsx +62 -0
- package/src/__tests__/inlinePreviewGutterAllBlocks.test.tsx +103 -0
- package/src/__tests__/jsonEditor.test.tsx +168 -0
- package/src/__tests__/layersPanel.test.tsx +97 -0
- package/src/__tests__/linkDialogDocPicker.test.tsx +137 -0
- package/src/__tests__/outlinePanel.test.tsx +79 -0
- package/src/__tests__/plainHtmlPreview.test.tsx +107 -0
- package/src/__tests__/propertiesPanel.test.tsx +69 -0
- package/src/__tests__/recorderFormats.test.ts +146 -0
- package/src/__tests__/recorderTimingJson.test.ts +41 -0
- package/src/__tests__/templateAnnotationRoundTrip.test.ts +34 -0
- package/src/__tests__/tiptapBridge.test.ts +15 -0
- package/src/__tests__/useImageEditor.test.tsx +159 -0
- package/src/__tests__/useMediaRecorder.test.ts +186 -0
- package/src/__tests__/versionHistory.test.tsx +197 -0
- package/src/blockSlice.ts +75 -0
- package/src/buildPreviewDoc.ts +61 -6
- package/src/emojiData.ts +1337 -0
- package/src/fileKind.ts +30 -6
- package/src/hooks/useFileDrop.ts +40 -4
- package/src/imageEditor/CanvasSurface.tsx +402 -0
- package/src/imageEditor/ImageVersionHistoryDropdown.tsx +396 -0
- package/src/imageEditor/LayersPanel.tsx +143 -0
- package/src/imageEditor/PropertiesPanel.tsx +428 -0
- package/src/imageEditor/Toolbar.tsx +242 -0
- package/src/imageEditor/icons.tsx +144 -0
- package/src/imageEditor/image-editor.css +450 -0
- package/src/imageEditor/layers/EditorImageLayer.tsx +45 -0
- package/src/imageEditor/layers/EditorShapeLayer.tsx +62 -0
- package/src/imageEditor/layers/EditorTextLayer.tsx +45 -0
- package/src/imageEditor/layers/SelectionHandles.tsx +86 -0
- package/src/imageEditor/state.ts +153 -0
- package/src/imageEditor/useImageEditor.ts +328 -0
- package/src/imageEditor/useImageEditorTokens.ts +70 -0
- package/src/index.ts +82 -0
- package/src/jsonEditor/EmbeddedRichTextField.tsx +81 -0
- package/src/jsonEditor/JsonEditor.tsx +81 -0
- package/src/jsonEditor/JsonEditorContext.tsx +75 -0
- package/src/jsonEditor/RenderNode.tsx +66 -0
- package/src/jsonEditor/editors.tsx +678 -0
- package/src/jsonEditor/index.ts +2 -0
- package/src/jsonEditor/json-editor.css +463 -0
- package/src/jsonEditor/useJsonEditorTokens.ts +63 -0
- package/src/recorder/RecorderButton.tsx +72 -0
- package/src/recorder/RecorderModal.tsx +596 -0
- package/src/recorder/RecorderPanel.tsx +93 -0
- package/src/recorder/formats.ts +159 -0
- package/src/recorder/hooks/useMediaRecorder.ts +378 -0
- package/src/recorder/hooks/useStreamPreview.ts +47 -0
- package/src/recorder/sources/cameraStream.ts +32 -0
- package/src/recorder/sources/micStream.ts +25 -0
- package/src/recorder/sources/screenStream.ts +162 -0
- package/src/recorder/timingJson.ts +66 -0
- package/src/styles/editor.css +2490 -51
- package/src/styles/image-edit-affordance.css +201 -0
- package/src/styles/index.css +10 -0
- package/src/tiptap/TiptapAudio.tsx +86 -0
- package/src/tiptap/TiptapVideo.tsx +119 -0
- package/src/tiptap/useResolvedMediaSrc.ts +47 -0
- package/src/tiptapBridge.ts +188 -20
- package/src/useHeadingLayout.ts +294 -0
- package/src/utils/collectInlineFontAwesomeCss.ts +69 -0
- package/src/utils/dropUtils.ts +54 -6
- 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"}
|