diff --git a/packages/editor/src/editor/Canvas.tsx b/packages/editor/src/editor/Canvas.tsx index 4dfef9a..aaf1b08 100644 --- a/packages/editor/src/editor/Canvas.tsx +++ b/packages/editor/src/editor/Canvas.tsx @@ -465,7 +465,7 @@ export function Canvas(props: CanvasProps) { if (props.selectionIds.includes(node.id)) { if (node.locked) { // Locked nodes are selectable, but should not start a move drag. - props.onSelectSingle(node.id); + // Keep the current selection intact for multi-select parity. return; } props.onBeginMove(e); diff --git a/packages/sdk/src/core/goview/convert.ts b/packages/sdk/src/core/goview/convert.ts index 8f19c4f..21a78f1 100644 --- a/packages/sdk/src/core/goview/convert.ts +++ b/packages/sdk/src/core/goview/convert.ts @@ -182,7 +182,12 @@ function looksLikeIframeOption(option: unknown): boolean { // If it isn't an obvious media URL, it's often an iframe/embed. // (We deliberately keep this conservative; image/video are handled earlier.) return ( - (/^https?:\/\//i.test(url) || /^data:text\/html/i.test(url)) && + ( + /^https?:\/\//i.test(url) || + // protocol-relative URLs (//example.com) + /^\/\//.test(url) || + /^data:text\/html/i.test(url) + ) && !/\.(png|jpe?g|gif|webp|bmp|svg)(\?|#|$)/i.test(url) && // Avoid misclassifying video streams as iframes. !/\.(mp4|m3u8|flv|webm|mov|m4v|ogv)(\?|#|$)/i.test(url) &&