diff --git a/lib/qiita/markdown.rb b/lib/qiita/markdown.rb
index 8c78cf2..70be420 100644
--- a/lib/qiita/markdown.rb
+++ b/lib/qiita/markdown.rb
@@ -18,6 +18,7 @@
require "qiita/markdown/embed/speeker_deck"
require "qiita/markdown/embed/docswell"
require "qiita/markdown/embed/figma"
+require "qiita/markdown/embed/stack_blitz"
require "qiita/markdown/transformers/filter_attributes"
require "qiita/markdown/transformers/filter_script"
require "qiita/markdown/transformers/filter_iframe"
diff --git a/lib/qiita/markdown/embed/stack_blitz.rb b/lib/qiita/markdown/embed/stack_blitz.rb
new file mode 100644
index 0000000..ab1dd2f
--- /dev/null
+++ b/lib/qiita/markdown/embed/stack_blitz.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module Qiita
+ module Markdown
+ module Embed
+ module StackBlitz
+ SCRIPT_HOST = "stackblitz.com"
+ end
+ end
+ end
+end
diff --git a/lib/qiita/markdown/transformers/filter_iframe.rb b/lib/qiita/markdown/transformers/filter_iframe.rb
index 02920df..cc0aa30 100644
--- a/lib/qiita/markdown/transformers/filter_iframe.rb
+++ b/lib/qiita/markdown/transformers/filter_iframe.rb
@@ -11,6 +11,7 @@ class FilterIframe
Embed::Docswell::SCRIPT_HOSTS,
Embed::Figma::SCRIPT_HOST,
Embed::GoogleDrive::SCRIPT_HOST,
+ Embed::StackBlitz::SCRIPT_HOST,
].flatten.freeze
def self.call(**args)
diff --git a/spec/qiita/markdown/processor_spec.rb b/spec/qiita/markdown/processor_spec.rb
index 30df7b0..02b7d22 100644
--- a/spec/qiita/markdown/processor_spec.rb
+++ b/spec/qiita/markdown/processor_spec.rb
@@ -1747,6 +1747,43 @@
end
end
+ context "with HTML embed code for StackBlitz" do
+ shared_examples "embed code stackblitz example" do
+ let(:markdown) do
+ <<~MARKDOWN
+
+ MARKDOWN
+ end
+ let(:url) { "#{scheme}//stackblitz.com/embed/example" }
+
+ if allowed
+ it "does not sanitize embed code" do
+ should eq <<~HTML
+
+ HTML
+ end
+ else
+ it "forces width attribute on iframe" do
+ should eq <<~HTML
+
+ HTML
+ end
+ end
+ end
+
+ context "with scheme" do
+ let(:scheme) { "https:" }
+
+ include_examples "embed code stackblitz example"
+ end
+
+ context "without scheme" do
+ let(:scheme) { "" }
+
+ include_examples "embed code stackblitz example"
+ end
+ end
+
context "with embed code for Tweet" do
let(:markdown) do
<<-MARKDOWN.strip_heredoc