Improve goView iframe/video import + selection parity
This commit is contained in:
parent
5e21e87696
commit
961f5d3bdc
@ -430,8 +430,10 @@ export function Canvas(props: CanvasProps) {
|
|||||||
// Important: don't collapse a multi-selection on pointerdown.
|
// Important: don't collapse a multi-selection on pointerdown.
|
||||||
if (e.button === 2) return;
|
if (e.button === 2) return;
|
||||||
|
|
||||||
// ctrl click: multi-select toggle
|
const additive = e.ctrlKey || e.metaKey || e.shiftKey;
|
||||||
if (props.keyboard.ctrl) {
|
|
||||||
|
// Ctrl/Cmd/Shift click: multi-select toggle
|
||||||
|
if (additive) {
|
||||||
props.onToggleSelect(node.id);
|
props.onToggleSelect(node.id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -106,7 +106,17 @@ function isIframe(c: GoViewComponentLike): boolean {
|
|||||||
if (k === 'iframe' || k.includes('iframe')) return true;
|
if (k === 'iframe' || k.includes('iframe')) return true;
|
||||||
|
|
||||||
// Other names seen in low-code editors for embedded web content.
|
// Other names seen in low-code editors for embedded web content.
|
||||||
return k.includes('embed') || k.includes('web') || k.includes('webview') || k.includes('html');
|
return (
|
||||||
|
k.includes('embed') ||
|
||||||
|
k.includes('webview') ||
|
||||||
|
k.includes('html') ||
|
||||||
|
k.includes('browser') ||
|
||||||
|
k.includes('webpage') ||
|
||||||
|
// keep the plain 'web' check last; it's broad and may overlap other widgets.
|
||||||
|
k === 'web' ||
|
||||||
|
k.endsWith('_web') ||
|
||||||
|
k.startsWith('web_')
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isVideo(c: GoViewComponentLike): boolean {
|
function isVideo(c: GoViewComponentLike): boolean {
|
||||||
@ -146,7 +156,7 @@ function looksLikeIframeOption(option: unknown): boolean {
|
|||||||
return (
|
return (
|
||||||
(/^https?:\/\//i.test(url) || /^data:text\/html/i.test(url)) &&
|
(/^https?:\/\//i.test(url) || /^data:text\/html/i.test(url)) &&
|
||||||
!/\.(png|jpe?g|gif|webp|bmp|svg)(\?|#|$)/i.test(url) &&
|
!/\.(png|jpe?g|gif|webp|bmp|svg)(\?|#|$)/i.test(url) &&
|
||||||
!/\.(mp4|m3u8|flv)(\?|#|$)/i.test(url)
|
!/\.(mp4|m3u8|flv|webm|mov|m4v|ogv)(\?|#|$)/i.test(url)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,7 +171,7 @@ function looksLikeVideoOption(option: unknown): boolean {
|
|||||||
if (!url) return false;
|
if (!url) return false;
|
||||||
|
|
||||||
// Common direct URL patterns.
|
// Common direct URL patterns.
|
||||||
if (/\.(mp4|m3u8|flv)(\?|#|$)/i.test(url)) return true;
|
if (/\.(mp4|m3u8|flv|webm|mov|m4v|ogv)(\?|#|$)/i.test(url)) return true;
|
||||||
if (/\bm3u8\b/i.test(url)) return true;
|
if (/\bm3u8\b/i.test(url)) return true;
|
||||||
|
|
||||||
// Streaming-ish protocols (seen in CCTV/camera widgets).
|
// Streaming-ish protocols (seen in CCTV/camera widgets).
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user