Кастомный редактор с опцией, такой как SourceEditing для версии Vue3
У меня есть задача, связанная с редактором для vue3.
Мне нужно сделать пользовательский функционал, чтобы я мог скопировать html-код (шаблон) и вставить его в сам редактор. После этого контент рендерился в нем.
Еще мне нужно, чтобы код, который я вставляю, не обрезал некоторые теги. Потому что уже в готовых редакторах для vue3 почему-то обрезает заголовок html тегов (DOCTYPE, Head, html)
Подскажите, есть ли у кого готовый функционал для vue3, или как решить эту проблему. Благодарю вас!

Пример шаблона:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<!--[if gte mso 9]><xml><o:OfficeDocumentSettings><o:AllowPNG/><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml><![endif]-->
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<meta content="width=device-width" name="viewport"/>
<!--[if !mso]><!-->
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<!--<![endif]-->
<title></title>
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" type="text/css"/>
<!--<![endif]-->
<style type="text/css">
body {
margin: 0;
padding: 0;
}
table, td, tr {
vertical-align: top;
border-collapse: collapse;
}
* {
line-height: inherit;
}
a[x-apple-data-detectors=true] {
color: inherit !important;
text-decoration: none !important;
}
</style>
<style id="media-query" type="text/css">
@media (max-width: 500px) {
.block-grid, .col {
min-width: 320px !important;
max-width: 100% !important;
display: block !important;
}
.block-grid {
width: 100% !important;
}
.col {
width: 100% !important;
}
.col > div {
margin: 0 auto;
}
img.fullwidth, img.fullwidthOnMobile {
max-width: 100% !important;
}
.no-stack .col {
min-width: 0 !important;
display: table-cell !important;
}
.no-stack.two-up .col {
width: 50% !important;
}
.no-stack .col.num4 {
width: 33% !important;
}
.no-stack .col.num8 {
width: 66% !important;
}
.no-stack .col.num4 {
width: 33% !important;
}
.no-stack .col.num3 {
width: 25% !important;
}
.no-stack .col.num6 {
width: 50% !important;
}
.no-stack .col.num9 {
width: 75% !important;
}
.video-block {
max-width: none !important;
}
.mobile_hide {
min-height: 0px;
max-height: 0px;
max-width: 0px;
display: none;
overflow: hidden;
font-size: 0px;
}
.desktop_hide {
display: block !important;
max-height: none !important;
}
}
</style>
</head>
<body class="clean-body" style="margin: 0; padding: 0; -webkit-text-size-adjust: 100%; background-color: #ffffff;">
<!--[if IE]><div class="ie-browser"><![endif]-->
<table bgcolor="#ffffff" cellpadding="0" cellspacing="0" class="nl-container" role="presentation" style="table-layout: fixed; vertical-align: top; min-width: 320px; Margin: 0 auto; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #ffffff; width: 100%;" valign="top" width="100%">
<tbody>
<tr style="vertical-align: top;" valign="top">
<td style="word-break: break-word; vertical-align: top;" valign="top">
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color:#ffffff"><![endif]-->
<div style="background-color:transparent;">
<div class="block-grid" style="Margin: 0 auto; min-width: 320px; max-width: 480px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; background-color: #f5f5f5;">
<div style="border-collapse: collapse;display: table;width: 100%;background-color:#f5f5f5;">
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:transparent;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:480px"><tr class="layout-full-width" style="background-color:#f5f5f5"><![endif]-->
<!--[if (mso)|(IE)]><td align="center" width="480" style="background-color:#f5f5f5;width:480px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:30px; padding-bottom:55px;"><![endif]-->
<div class="col num12" style="min-width: 320px; max-width: 480px; display: table-cell; vertical-align: top; width: 480px;">
<div style="width:100% !important;">
<!--[if (!mso)&(!IE)]><!-->
<div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:30px; padding-bottom:55px; padding-right: 0px; padding-left: 0px;">
<!--<![endif]-->
<div align="center" class="img-container center autowidth" style="padding-right: 0px;padding-left: 0px;">
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr style="line-height:0px"><td style="padding-right: 0px;padding-left: 0px;" align="center"><![endif]-->
<a href="#host#?token=#token#" style="outline:none" tabindex="-1" target="_blank">
<img align="center" alt="" border="0" class="center autowidth" src="https://marketing-image-production.s3.amazonaws.com/uploads/20db5ce29e45f6b2db0092466a66c5005b2f411e1de50e61fb2b4502997b972f10cc70e8113772ed4383286715369e3e942d599bb4f0bd270dd8ab8eead745ad.png" style="text-decoration: none; -ms-interpolation-mode: bicubic; height: auto; border: none; width: 100%; max-width: 200px; display: block;" title="Slottica" width="200"/>
</a>
<div style="font-size:1px;line-height:35px"></div>
<!--[if mso]></td></tr></table><![endif]-->
</div>
<!--[if mso]></td></tr></table><![endif]-->
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 60px; padding-left: 60px; padding-top: 10px; padding-bottom: 25px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
<div style="color:#000000;font-family:Roboto, Tahoma, Verdana, Segoe, sans-serif;line-height:1.8;padding-top:10px;padding-right:60px;padding-bottom:25px;padding-left:60px;">
<div style="font-size: 14px; line-height: 1.8; color: #000000; font-family: Roboto, Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 25px;">
<p style="line-height: 1.8; word-break: break-word; text-align: center; mso-line-height-alt: NaNpx; margin: 0;">
<span style="color: #000000;">Salom, #login#!.</span>
</p>
<p style="line-height: 1.8; word-break: break-word; text-align: center; mso-line-height-alt: NaNpx; margin: 0;">
<span style="color: #000000;"> </span>
</p>
<p style="line-height: 1.8; word-break: break-word; text-align: center; mso-line-height-alt: NaNpx; margin: 0;">
<span style="color: #000000;">Klubdagi oʻyin hisobingiz #amount# ga toʻldirildi</span>
</p>
<p style="line-height: 1.8; word-break: break-word; text-align: center; mso-line-height-alt: NaNpx; margin: 0;">
<span style="color: #000000;"> </span>
</p>
<p style="line-height: 1.8; word-break: break-word; text-align: center; mso-line-height-alt: NaNpx; margin: 0;">
<span style="color: #000000;">Sizga chin dildan omad va yangi gʻalabalar tilaymiz. Barcha imtiyozlardan foydalaning va hoziroq menejerdan shaxsiy bonuslar haqida soʻrang.</span>
</p>
</div>
</div>
<!--[if mso]></td></tr></table><![endif]-->
<div align="center" class="button-container" style="padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;">
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-spacing: 0; border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;"><tr><td style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px" align="center"><v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="#host#/reset-password?token=#token#" style="height:46.5pt; width:277.5pt; v-text-anchor:middle;" arcsize="97%" stroke="false" fillcolor="#0055bf"><w:anchorlock/><v:textbox inset="0,0,0,0"><center style="color:#ffffff; font-family:Tahoma, Verdana, sans-serif; font-size:16px"><![endif]-->
<a href="#host#?token=#token#" style="-webkit-text-size-adjust: none; text-decoration: none; display: inline-block; color: #ffffff; background-color: #0055bf; border-radius: 60px; -webkit-border-radius: 60px; -moz-border-radius: 60px; width: auto; width: auto; border-top: 1px solid #0055bf; border-right: 1px solid #0055bf; border-bottom: 1px solid #0055bf; border-left: 1px solid #0055bf; padding-top: 15px; padding-bottom: 15px; font-family: 'Roboto', Tahoma, Verdana, Segoe, sans-serif; text-align: center; mso-border-alt: none; word-break: keep-all;" target="_blank">
<span style="padding-left:60px;padding-right:60px;font-size:16px;display:inline-block;">
<span style="font-size: 16px; line-height: 2; word-break: break-word; font-family: Roboto, Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 32px;">Saytga oʻtish</span>
</span>
</a>
<!--[if mso]></center></v:textbox></v:roundrect></td></tr></table><![endif]-->
</div>
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 60px; padding-left: 60px; padding-top: 25px; padding-bottom: 20px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
<div style="color:#555555;font-family:Roboto, Tahoma, Verdana, Segoe, sans-serif;line-height:1.2;padding-top:25px;padding-right:60px;padding-bottom:20px;padding-left:60px;">
<div style="line-height: 1.2; font-size: 12px; color: #555555; font-family: Roboto, Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 14px;">
<p style="font-size: 12px; line-height: 1.2; word-break: break-word; text-align: center; mso-line-height-alt: 14px; margin: 0;">
<span style="font-size: 12px;">Viks Casino veb-saytida roʻyxatdan oʻtganingiz uchun ushbu xabarnomani oldingiz</span>
</p>
</div>
</div>
<!--[if mso]></td></tr></table><![endif]-->
<!--[if (!mso)&(!IE)]><!-->
</div>
<!--<![endif]-->
</div>
</div>
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
</div>
</div>
</div>
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
<!--[if (IE)]></div><![endif]-->
</body>
</html>