From c40edd193540b4d7c1add8ae8b579e8d35d7f860 Mon Sep 17 00:00:00 2001 From: matthewlipski Date: Thu, 5 Dec 2024 17:02:44 +0100 Subject: [PATCH 01/18] Fixed issues with exporting file blocks to external HTML --- .../AudioBlockContent/AudioBlockContent.ts | 1 + .../blocks/FileBlockContent/fileBlockHelpers.ts | 2 -- .../ImageBlockContent/ImageBlockContent.ts | 4 +++- .../VideoBlockContent/VideoBlockContent.ts | 7 +++++-- .../AudioBlockContent/AudioBlockContent.tsx | 10 +++++----- .../ImageBlockContent/ImageBlockContent.tsx | 17 ++++++++++------- .../VideoBlockContent/VideoBlockContent.tsx | 17 ++++++++++------- 7 files changed, 34 insertions(+), 24 deletions(-) diff --git a/packages/core/src/blocks/AudioBlockContent/AudioBlockContent.ts b/packages/core/src/blocks/AudioBlockContent/AudioBlockContent.ts index 7cdf9d2aae..b7b0145fcc 100644 --- a/packages/core/src/blocks/AudioBlockContent/AudioBlockContent.ts +++ b/packages/core/src/blocks/AudioBlockContent/AudioBlockContent.ts @@ -57,6 +57,7 @@ export const audioRender = ( const audio = document.createElement("audio"); audio.className = "bn-audio"; + audio.src = block.props.url; editor.resolveFileUrl(block.props.url).then((downloadUrl) => { audio.src = downloadUrl; }); diff --git a/packages/core/src/blocks/FileBlockContent/fileBlockHelpers.ts b/packages/core/src/blocks/FileBlockContent/fileBlockHelpers.ts index 58600671ff..41080422c1 100644 --- a/packages/core/src/blocks/FileBlockContent/fileBlockHelpers.ts +++ b/packages/core/src/blocks/FileBlockContent/fileBlockHelpers.ts @@ -329,8 +329,6 @@ export const createResizeHandlesWrapper = ( // predetermined minimum width. if (newWidth < minWidth) { setWidth(minWidth); - } else if (newWidth > editor.domElement.firstElementChild!.clientWidth) { - setWidth(editor.domElement.firstElementChild!.clientWidth); } else { setWidth(newWidth); } diff --git a/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts b/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts index 32ad7df41f..2373d14020 100644 --- a/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts +++ b/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts @@ -62,6 +62,7 @@ export const imageRender = ( const image = document.createElement("img"); image.className = "bn-visual-media"; + image.src = block.props.url; editor.resolveFileUrl(block.props.url).then((downloadUrl) => { image.src = downloadUrl; }); @@ -70,7 +71,8 @@ export const imageRender = ( image.draggable = false; image.width = Math.min( block.props.previewWidth, - editor.domElement.firstElementChild!.clientWidth + // Width is 0 if the image is not rendered yet. + image.getBoundingClientRect().width || Number.MAX_VALUE ); const file = createResizeHandlesWrapper( diff --git a/packages/core/src/blocks/VideoBlockContent/VideoBlockContent.ts b/packages/core/src/blocks/VideoBlockContent/VideoBlockContent.ts index 5dacc6ae76..a2fe4ecc9a 100644 --- a/packages/core/src/blocks/VideoBlockContent/VideoBlockContent.ts +++ b/packages/core/src/blocks/VideoBlockContent/VideoBlockContent.ts @@ -64,12 +64,15 @@ export const videoRender = ( const video = document.createElement("video"); video.className = "bn-visual-media"; video.src = block.props.url; + editor.resolveFileUrl(block.props.url).then((downloadUrl) => { + video.src = downloadUrl; + }); video.controls = true; video.contentEditable = "false"; video.draggable = false; video.width = Math.min( - block.props.previewWidth, - editor.domElement.firstElementChild!.clientWidth + // Width is 0 if the video is not rendered yet. + video.getBoundingClientRect().width || Number.MAX_VALUE ); const file = createResizeHandlesWrapper( diff --git a/packages/react/src/blocks/AudioBlockContent/AudioBlockContent.tsx b/packages/react/src/blocks/AudioBlockContent/AudioBlockContent.tsx index 958db0c858..00827159a6 100644 --- a/packages/react/src/blocks/AudioBlockContent/AudioBlockContent.tsx +++ b/packages/react/src/blocks/AudioBlockContent/AudioBlockContent.tsx @@ -21,14 +21,14 @@ export const AudioPreview = ( ) => { const resolved = useResolveUrl(props.block.props.url!); - if (resolved.loadingState === "loading") { - return null; - } - return (