diff --git a/app/assets/stylesheets/common/base/onebox.scss b/app/assets/stylesheets/common/base/onebox.scss index 60b974bef63..395d26babfd 100644 --- a/app/assets/stylesheets/common/base/onebox.scss +++ b/app/assets/stylesheets/common/base/onebox.scss @@ -980,14 +980,16 @@ aside.onebox.mixcloud-preview { } } -iframe.vimeo-onebox { +iframe.vimeo-onebox, +iframe.loom-onebox { width: 100%; height: auto; aspect-ratio: 16/9; } @supports not (aspect-ratio: auto) { - iframe.vimeo-onebox { + iframe.vimeo-onebox, + iframe.loom-onebox { width: 690px; height: 388px; } diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index b6dfb3bcee9..6485d16aea8 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -211,3 +211,4 @@ require_relative "engine/facebook_media_onebox" require_relative "engine/hackernews_onebox" require_relative "engine/motoko_onebox" require_relative "engine/tiktok_onebox" +require_relative "engine/loom_onebox" diff --git a/lib/onebox/engine/loom_onebox.rb b/lib/onebox/engine/loom_onebox.rb new file mode 100644 index 00000000000..0cddff19de6 --- /dev/null +++ b/lib/onebox/engine/loom_onebox.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module Onebox + module Engine + class LoomOnebox + include Engine + include StandardEmbed + + matches_regexp(%r{^https?://(www\.)?loom\.com/share/\w+(/\w+)?/?}) + requires_iframe_origins "https://www.loom.com" + always_https + + def placeholder_html + ::Onebox::Helpers.video_placeholder_html + end + + def to_html + video_id = url.split("/").last + video_src = "https://www.loom.com/embed/#{video_id}" + + <<~HTML + ', + ) + end +end