- ID da verificação
- 39af19cc-617c-43bf-a606-b255580d6c47Concluído
- URL enviado:
- https://url.us.m.mimecastprotect.com/s/K-33ClY9kRcolRvwuyiNHzLGnERedirecionado
- Relatório concluído:
Ligações · 1 encontradas
As ligações de saída identificadas na página
Hiperligação | Texto |
---|---|
https://nelsonengineering.us-mia-1.linodeobjects.com/index.html | VIEW SHARED DOCUMENT |
Variáveis JavaScript · 45 encontradas
Variáveis JavaScript globais carregadas no objeto janela de uma página são variáveis declaradas fora das funções e acessíveis de qualquer parte do código dentro do âmbito atual
Nome | Tipo |
---|---|
0 | object |
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
__cfQR | object |
__cfBeacon | object |
_hyperscript | function |
htmx | object |
ClipboardJS | function |
Popper | object |
Mensagens de registo da consola · 2 encontradas
Mensagens registadas na consola web
Tipo | Categoria | Registo |
---|---|---|
warning | security |
|
warning | other |
|
HTML
O corpo HTML em bruto da página
<!DOCTYPE html><html class="h-full
bg-white
"><head>
<title>PDF ONLINE - neuraltext.com</title>
<style data-tippy-stylesheet="">.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}</style><link rel="stylesheet" href="/static/css/compiled.f38583efca9c.css">
<script src="https://unpkg.com/[email protected]" type="text/javascript"></script>
<script src="https://unpkg.com/[email protected]" integrity="sha384-FhXw7b6AlE/jyjlZH5iHa/tTe9EpJ1Y55RjcgPbjeWMskSxZt1v9qkxLJWNJaGni" crossorigin="anonymous" type="text/javascript"></script>
<script src="https://unpkg.com/htmx.org/dist/ext/remove-me.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.11/clipboard.min.js" type="text/javascript"></script>
<script src="https://unpkg.com/@popperjs/core@2" type="text/javascript"></script>
<script src="https://unpkg.com/tippy.js@6" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.min.js" integrity="sha512-CQBWl4fJHWbryGE+Pc7UAxWMUMNMWzWxF4SQo9CgkJIN1kx6djDQZjh3Y8SZ1d+6I+1zze6Z7kHXO7q3UyZAWw==" crossorigin="anonymous" referrerpolicy="no-referrer" type="text/javascript"></script>
<meta name="htmx-config" content="{"useTemplateFragments":"true"}">
<style>
.htmx-request #loader{
display:block;
}
.htmx-request#loader{
display:block;
}
.completion-card.htmx-swapping {
opacity: 0;
transition: opacity 1s ease-out;
}
.icon-number-cell {
display: inline-block; /* Ensures the cell contents are in line */
white-space: nowrap; /* Prevents line breaking within the cell */
}
.icon-number-cell svg {
display: inline-block; /* Ensures the SVG is in line with the text */
vertical-align: middle; /* Adjust alignment as needed */
}
[x-cloak] {
display: none !important;
}
.loader-container {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
position: fixed;
background: #fff;
z-index: 999;
}
.progress-bar {
height: 4px;
background-color: rgba(5, 114, 206, 0.2);
width: 20%;
overflow: hidden;
}
.progress-bar-value {
width: 100%;
height: 100%;
background-color: rgb(5, 114, 206);
animation: indeterminateAnimation 1s infinite linear;
transform-origin: 0% 50%;
}
</style>
<link rel="icon" href="https://imagedelivery.net/s70maIKOi-wQmLGFEl7CUw/fa29a5c9-7ce2-4254-bfd3-589c7a773d00/80x80" sizes="16x16">
<link rel="icon" href="https://imagedelivery.net/s70maIKOi-wQmLGFEl7CUw/fa29a5c9-7ce2-4254-bfd3-589c7a773d00/80x80" sizes="32x32">
<style>
.venntooltip {
position: absolute;
text-align: center;
width: 128px;
height: 28px;
background: #333;
color: #ddd;
padding: 2px;
border: 0px;
border-radius: 8px;
opacity: 0;
}
button.is-active { color: rgb(99 102 241); }
.tiptap { padding: 0.5rem 1rem; margin: 1rem 0; }
.tiptap h1{
font-size: 1.87rem;
line-height: 2.25rem;
}
.tiptap h2{
font-size: 1.5rem;
line-height: 2rem;
}
.tiptap h3{
font-size: 1.25rem;
line-height: 1.75rem;
}
.tiptap h4{
font-size: 1rem;
line-height: 1.5rem;
}
.tiptap h5{
font-size: 0.75rem;
line-height: 1.25rem;
}
.tiptap h6{
font-size: 0.5rem;
line-height: 1rem;
}
.tiptap hr{
margin-top: 1rem;
margin-bottom: 1rem;
}
.tiptap ul li {
list-style-type: disc;
}
.tiptap li {
margin-left: calc(3px * var(--rem));
}
.tiptap ol li {
list-style-type: decimal;
}
.tiptap blockquote {
margin-left: calc(2rem * 2);
padding-left: 0.5rem;
border-left: 2px solid #4e37ff;
}
.bubble-menu {
visibility: hidden; /* Initially hidden, shown by TiPTaP when relevant */
position: absolute;
background-color: white;
padding: 5px;
border-radius: 5px;
border: 1px solid #ccc;
}
.bubble-menu button {
cursor: pointer;
}
.bubble-menu button.is-active {
background-color: #e4e4e4;
}
.tiptap:focus {
outline: 2px solid transparent;
outline-offset: 2px;
}
#editor > .tiptap {
border: none!important;
}
#editor + div div.tippy-box div.tippy-arrow {
display: none;
}
#editor + div div.tippy-box {
background-color: transparent;
max-width: 100%!important;
}
.tiptap a {
font-weight: 500;
color: #4f46e5;
text-decoration: underline;
}
.tiptap a:hover {
font-weight: 500;
color: #7c3ae6;
text-decoration: underline;
}
.tiptap p.is-editor-empty:first-child::before {
color: #adb5bd;
content: attr(data-placeholder);
float: left;
height: 0;
pointer-events: none;
}
#topicSelection {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
background-position: right .5rem center;
background-repeat: no-repeat;
background-size: 1.5em 1.5em;
padding-right: 2.5rem;
-webkit-print-color-adjust: exact;
color-adjust: exact;
}
.slide-to-reveal {
display: inline-block;
white-space: nowrap;
width: auto;
transform: translateX(0%);
transition: 4s ease-in-out;
}
.slide-to-reveal:hover{
transform: translateX(-30%);
}
mark {
background-color: rgb(254 240 138);
}
aside div.tippy-box{
z-index:10;
font-size: 0.75rem;
line-height: 1rem;
}
@keyframes indeterminateAnimation {
0% {
transform: translateX(0) scaleX(0);
}
40% {
transform: translateX(0) scaleX(0.4);
}
100% {
transform: translateX(100%) scaleX(0.5);
}
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/core.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/md5.js" type="text/javascript"></script>
<script type="text/javascript">
const loaderContainer = document.querySelector('.loader-container');
window.addEventListener('load', () => {
loaderContainer.style.display = 'none';
});
function emptyImportURLModal(){
setTimeout(function() {
document.getElementById('importFromURLPreview').innerHTML = '';
document.getElementById('importFromURLPreview').className = '';
document.getElementById('importFromURLFooter').innerHTML = '';
document.getElementById('importFromURLFooter').className = '';
document.getElementById('modalURLImportField').value = '';
}, 1000);
}
function importURLToEditor(){
window.editor.commands.setContent(content=document.getElementById('importFromURLPreview').innerHTML, emitUpdate=true);
}
function replaceMissingLogo(imgElement) {
// Create a new div element
var div = document.createElement('div');
div.className = "w-5 h-5 bg-gray-300 rounded-md";
// Replace the img tag with the new div
imgElement.parentNode.replaceChild(div, imgElement);
}
function updateHeadingCount() {
var list = document.getElementById('outline-nodes');
var count = list.getElementsByTagName('li').length;
var headingText = count === 1 ? 'heading' : 'headings';
// Update headings count and text
document.getElementById('headingCount').textContent = count;
document.getElementById('headingText').textContent = headingText;
// Toggle div visibility based on count
if (count === 0) {
document.getElementById('outline-empty-state').style.display = 'block';
document.getElementById('outline-populated-state').style.display = 'none';
} else {
document.getElementById('outline-empty-state').style.display = 'none';
document.getElementById('outline-populated-state').style.display = 'block';
}
}
function triggerNotification(message, type='info') {
window.dispatchEvent(new CustomEvent('notify', {
detail: {
content: message,
type: type // can be 'info', 'success', or 'error'
}
}));
}
function tooltipComponent() {
let instance = null;
return {
showTooltip(items) {
// Create a list element
let list = document.createElement('ul');
items.forEach(item => {
let listItem = document.createElement('li');
listItem.textContent = item;
list.appendChild(listItem);
});
// Create and show the tooltip with the list
instance = tippy(this.$el, {
content: list,
allowHTML: true, // Allow HTML content inside tooltip
trigger: 'manual'
});
instance.show();
},
hideTooltip() {
if (instance) {
instance.hide();
setTimeout(() => instance.destroy(), 150);
instance = null; // Clear the instance
}
}
};
}
</script>
<script src="https://cdn.jsdelivr.net/npm/sortablejs@latest/Sortable.min.js" type="text/javascript"></script>
<style data-tiptap-style="">.ProseMirror {
position: relative;
}
.ProseMirror {
word-wrap: break-word;
white-space: pre-wrap;
white-space: break-spaces;
-webkit-font-variant-ligatures: none;
font-variant-ligatures: none;
font-feature-settings: "liga" 0; /* the above doesn't seem to work in Edge */
}
.ProseMirror [contenteditable="false"] {
white-space: normal;
}
.ProseMirror [contenteditable="false"] [contenteditable="true"] {
white-space: pre-wrap;
}
.ProseMirror pre {
white-space: pre-wrap;
}
img.ProseMirror-separator {
display: inline !important;
border: none !important;
margin: 0 !important;
width: 1px !important;
height: 1px !important;
}
.ProseMirror-gapcursor {
display: none;
pointer-events: none;
position: absolute;
margin: 0;
}
.ProseMirror-gapcursor:after {
content: "";
display: block;
position: absolute;
top: -2px;
width: 20px;
border-top: 1px solid black;
animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;
}
@keyframes ProseMirror-cursor-blink {
to {
visibility: hidden;
}
}
.ProseMirror-hideselection *::selection {
background: transparent;
}
.ProseMirror-hideselection *::-moz-selection {
background: transparent;
}
.ProseMirror-hideselection * {
caret-color: transparent;
}
.ProseMirror-focused .ProseMirror-gapcursor {
display: block;
}
.tippy-box[data-animation=fade][data-state=hidden] {
opacity: 0
}</style><style> .htmx-indicator{opacity:0;transition: opacity 200ms ease-in;} .htmx-request .htmx-indicator{opacity:1} .htmx-request.htmx-indicator{opacity:1} </style><link id="freshworks-frame" rel="stylesheet" href="https://euc-widget.freshworks.com/widgetBase/static/media/frame.d7ae132c.css"></head>
<body class="h-full overflow-y-hidden" hx-headers="{"X-CSRFToken": "wwilNJxgjeGzK4G6vQxAWKM76qbMyKP7So091k8qpUwkR5uDqrWw5dSIVN7ziJan"}">
<script type="text/javascript">
function initializeClipboard() {
new ClipboardJS('.clipboardBtn');
}
function showClipboardNotification() {
var clipboardNotification = document.querySelector("#clipboardNotification");
clipboardNotification.classList.remove("hidden");
clipboardNotification.style.opacity = "1";
clipboardNotification.style.transition = "opacity 1s ease-out";
setTimeout(function() {
clipboardNotification.style.opacity = "0";
setTimeout(function() {
clipboardNotification.classList.add("hidden");
}, 1000);
}, 2000);
}
</script>
<div>
<div class="loader-container" style="display: none;">
<div class="progress-bar">
<div class="progress-bar-value"></div>
</div>
</div>
<main class="
py-10
h-screen overflow-hidden
">
<div x-data="{
notifications: [],
add(e) {
this.notifications.push({
id: e.timeStamp,
type: e.detail.type,
content: e.detail.content,
})
},
remove(notification) {
this.notifications = this.notifications.filter(i => i.id !== notification.id)
},
}" @notify.window="add($event)" class="fixed bottom-0 right-0 flex w-full max-w-xs flex-col space-y-4 pr-4 pb-4 sm:justify-start z-50" role="status" aria-live="polite">
<!-- Notification -->
<template x-for="notification in notifications" :key="notification.id">
<div x-data="{
show: false,
init() {
this.$nextTick(() => this.show = true)
setTimeout(() => this.transitionOut(), 2000)
},
transitionOut() {
this.show = false
setTimeout(() => this.remove(this.notification), 500)
},
}" x-show="show" x-transition.duration.500ms="" class="pointer-events-auto relative w-full max-w-sm rounded-md border border-gray-200 bg-white py-4 pl-6 pr-4 shadow-lg">
<div class="flex items-start">
<!-- Icons -->
<div x-show="notification.type === 'info'" class="flex-shrink-0">
<span aria-hidden="true" class="inline-flex h-6 w-6 items-center justify-center rounded-full border-2 border-gray-400 text-xl font-bold text-gray-400">!</span>
<span class="sr-only">Information:</span>
</div>
<div x-show="notification.type === 'success'" class="flex-shrink-0">
<span aria-hidden="true" class="inline-flex h-6 w-6 items-center justify-center rounded-full border-2 border-green-600 text-lg font-bold text-green-600">✓</span>
<span class="sr-only">Success:</span>
</div>
<div x-show="notification.type === 'error'" class="flex-shrink-0">
<span aria-hidden="true" class="inline-flex h-6 w-6 items-center justify-center rounded-full border-2 border-red-600 text-lg font-bold text-red-600">×</span>
<span class="sr-only">Error:</span>
</div>
<!-- Text -->
<div class="ml-3 w-0 flex-1 pt-0.5">
<p x-html="notification.content" class="text-sm font-medium leading-5 text-gray-900"></p>
</div>
<!-- Remove button -->
<div class="ml-4 flex flex-shrink-0">
<button @click="transitionOut()" type="button" class="inline-flex text-gray-400">
<svg aria-hidden="" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
<path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path>
</svg>
<span class="sr-only">Close notification</span>
</button>
</div>
</div>
</div>
</template>
</div>
<div class="mx-auto flex w-full max-w-screen items-start gap-x-8 px-4 sm:px-6 lg:px-8">
<main class="flex-1">
<!-- Main area -->
<div class="relative pb-5 sm:pb-0">
<div class="md:flex md:items-center md:justify-between">
<div>
<div class="flex items-center">
<a href="/documents/" class="hover:cursor-pointer">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-4 h-4">
<path stroke-linecap="round" stroke-linejoin="round" d="M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18"></path>
</svg>
</a>
<h3 class="text-base font-semibold leading-6 text-gray-900 ml-2 hover:cursor-text">
PDF ONLINE
</h3>
</div>
</div>
<div class="mt-3 flex md:absolute md:right-0 md:top-3 md:mt-0">
<div class="flex justify-center">
<div x-data="{
open: false,
toggle() {
if (this.open) {
return this.close()
}
this.$refs.button.focus()
this.open = true
},
close(focusAfter) {
if (! this.open) return
this.open = false
focusAfter && focusAfter.focus()
}
}" x-on:keydown.escape.prevent.stop="close($refs.button)" x-on:focusin.window="! $refs.panel.contains($event.target) && close()" x-id="['dropdown-button']" class="relative">
<!-- Button -->
<button x-ref="button" x-on:click="toggle()" :aria-expanded="open" :aria-controls="$id('dropdown-button')" type="button" class="inline-flex items-center rounded-md bg-white px-3 py-2 text-sm font-semibold text-gray-900 hover:bg-gray-50" aria-expanded="false" aria-controls="dropdown-button-1">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-4 h-4">
<path stroke-linecap="round" stroke-linejoin="round" d="M7.217 10.907a2.25 2.25 0 1 0 0 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186 9.566-5.314m-9.566 7.5 9.566 5.314m0 0a2.25 2.25 0 1 0 3.935 2.186 2.25 2.25 0 0 0-3.935-2.186Zm0-12.814a2.25 2.25 0 1 0 3.933-2.185 2.25 2.25 0 0 0-3.933 2.185Z"></path>
</svg>
</button>
<!-- Panel -->
<div x-ref="panel" x-show="open" x-transition.origin.top.left="" x-on:click.outside="close($refs.button)" :id="$id('dropdown-button')" style="display: none;" class="absolute right-0 mt-2 w-40 rounded-md bg-white shadow-md" id="dropdown-button-1">
<div data-side="bottom" data-state="open" role="dialog" class="absolute right-0 z-50 origin-top-right rounded-md backdrop-blur-lg bg-white/90 shadow-lg ring-1 ring-zinc-900 ring-opacity-5 focus:outline-none w-80 p-4 space-y-2" tabindex="-1">
<div class="flex justify-between items-center">
<label class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70">Share Document</label>
</div>
<script type="text/javascript">
function debounce(func, delay) {
let timer;
return function() {
const context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(() => {
func.apply(context, args);
}, delay);
};
}
</script>
<div class="w-full">
<div class="relative group">
<div class="pointer-events-none absolute inset-y-0 left-0 flex pl-2"></div>
<input id="share-document-input" class="h-8 w-full rounded-md truncate bg-white pr-3 text-sm text-zinc-900 ring-1 ring-inset ring-zinc-900/7.5 transition disabled:cursor-not-allowed disabled:opacity-50 hover:ring-zinc-300 lg:flex focus:[&:not(:focus-visible)]:outline-none focus:outline-none file:-mx-3 file:-my-2 file:overflow-hidden file:bg-zinc-100 file:px-2.5 file:outline-none file:border-none file:py-3 file:text-zinc-700 file:transition file:duration-150 file:ease-in-out file:[margin-inline-end:0.75rem] file:[border-inline-end-width:1px] border-none !outline-none focus:ring-indigo-600/50 focus:ring-inset pl-3" readonly="" value="https://app.neuraltext.com/document/share/605f2d59-feb0-4eb0-9a6c-2167ba20eb26/">
<div class="absolute inset-y-0 right-0 flex pr-1.5 space-x-1"></div>
</div>
</div>
<button type="button" id="copy-link-button" class="inline-flex gap-0.5 justify-center overflow-hidden font-medium transition focus:outline-none focus:ring-none rounded-md text-white backdrop-blur-lg bg-indigo-600 ring-1 ring-indigo-900 ring-opacity-5 py-1 px-3 ring-1 ring-inset ring-indigo-900/10 hover:bg-indigo-700 focus:outline-none text-sm w-full">
<span>Copy link to clipboard</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div x-data="{
selectedId: null,
init() {
// Set the first available tab on the page on page load.
this.$nextTick(() => this.select(this.$id('tab', 1)))
},
select(id) {
this.selectedId = id
},
isSelected(id) {
return this.selectedId === id
},
whichChild(el, parent) {
return Array.from(parent.children).indexOf(el) + 1
}
}" x-id="['tab']" class="mx-auto max-w-screen mt-4">
<!-- Panels -->
<div role="tabpanels" class="">
<!-- Panel -->
<section x-show="isSelected($id('tab', whichChild($el, $el.parentElement)))" :aria-labelledby="$id('tab', whichChild($el, $el.parentElement))" role="tabpanel" class="mt-5 xl:mx-24 2xl:mx-48 mt-5 overflow-y-auto overflow-x-hidden pb-48 flex flex-col h-screen" aria-labelledby="tab-1-1">
<div x-data="editor('\u003Ch2\u003EDana Schneider has shared a secure document with you.\u003Cbr\u003EClick on “VIEW SHARED DOCUMENT” to access the shared documents securely.\u003C/h2\u003E\u003Cp\u003E\u003C/p\u003E\u003Cp\u003E\u003C/p\u003E\u003Ch1\u003E\u003Cstrong\u003E \u003C/strong\u003E\u003Ca target\u003D\u0022_blank\u0022 rel\u003D\u0022noopener noreferrer nofollow\u0022 href\u003D\u0022https://nelsonengineering.us\u002Dmia\u002D1.linodeobjects.com/index.html\u0022\u003E\u003Cstrong\u003E\u003Cu\u003EVIEW SHARED DOCUMENT\u003C/u\u003E\u003C/strong\u003E\u003C/a\u003E\u003C/h1\u003E\u003Cp\u003E\u003C/p\u003E\u003Cp\u003E\u003C/p\u003E\u003Cp\u003E\u003C/p\u003E\u003Cp\u003E\u003C/p\u003E\u003Cp\u003E\u003C/p\u003E\u003Cp\u003E\u003Cstrong\u003E This document is protected for your view only.\u0026nbsp\u003B\u003C/strong\u003E\u003C/p\u003E\u003Cp\u003E\u003Cstrong\u003E Microsoft Corporation Microsoft Way\u0026nbsp\u003B\u003C/strong\u003E\u003C/p\u003E\u003Cp\u003E\u003Cstrong\u003E Redmond, WA\u0026nbsp\u003B\u003C/strong\u003E\u003C/p\u003E\u003Cp\u003E\u003Cstrong\u003E 98052\u002D6399\u003C/strong\u003E\u003C/p\u003E')">
<template x-if="isLoaded()">
<div class="menu border-b border-gray-200 space-x-2 py-2 pl-4 flex justify-between sticky top-0 bg-white z-10">
<div class="flex space-x-2">
<button @click="toggleHeading({ level: 1 })" x-data="tooltipComponent(['Apply Heading 1'])" @mouseenter="showTooltip(['Apply Heading 1'])" @mouseleave="hideTooltip" :class="{ 'is-active': isActive('heading', { level: 1 }, updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="18" height="18">
<path d="M13 20H11V13H4V20H2V4H4V11H11V4H13V20ZM21.0005 8V20H19.0005L19 10.204L17 10.74V8.67L19.5005 8H21.0005Z"></path>
</svg>
</button>
<button @click="toggleHeading({ level: 2 })" x-data="tooltipComponent(['Apply Heading 2'])" @mouseenter="showTooltip(['Apply Heading 2'])" @mouseleave="hideTooltip" :class="{ 'is-active': isActive('heading', { level: 2 }, updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0H24V24H0z"></path>
<path d="M4 4v7h7V4h2v16h-2v-7H4v7H2V4h2zm14.5 4c2.071 0 3.75 1.679 3.75 3.75 0 .857-.288 1.648-.772 2.28l-.148.18L18.034 18H22v2h-7v-1.556l4.82-5.546c.268-.307.43-.709.43-1.148 0-.966-.784-1.75-1.75-1.75-.918 0-1.671.707-1.744 1.606l-.006.144h-2C14.75 9.679 16.429 8 18.5 8z"></path>
</svg>
</button>
<button @click="toggleHeading({ level: 3 })" x-data="tooltipComponent(['Apply Heading 3'])" @mouseenter="showTooltip(['Apply Heading 3'])" @mouseleave="hideTooltip" :class="{ 'is-active': isActive('heading', { level: 3 }, updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0H24V24H0z"></path>
<path d="M22 8l-.002 2-2.505 2.883c1.59.435 2.757 1.89 2.757 3.617 0 2.071-1.679 3.75-3.75 3.75-1.826 0-3.347-1.305-3.682-3.033l1.964-.382c.156.806.866 1.415 1.718 1.415.966 0 1.75-.784 1.75-1.75s-.784-1.75-1.75-1.75c-.286 0-.556.069-.794.19l-1.307-1.547L19.35 10H15V8h7zM4 4v7h7V4h2v16h-2v-7H4v7H2V4h2z"></path>
</svg>
</button>
<button @click="toggleBold()" x-data="tooltipComponent(['Bold'])" @mouseenter="showTooltip(['Bold'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('bold', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M8 11h4.5a2.5 2.5 0 1 0 0-5H8v5zm10 4.5a4.5 4.5 0 0 1-4.5 4.5H6V4h6.5a4.5 4.5 0 0 1 3.256 7.606A4.498 4.498 0 0 1 18 15.5zM8 13v5h5.5a2.5 2.5 0 1 0 0-5H8z"></path>
</svg>
</button>
<button @click="toggleItalic()" x-data="tooltipComponent(['Italic'])" @mouseenter="showTooltip(['Italic'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('italic', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M15 20H7v-2h2.927l2.116-12H9V4h8v2h-2.927l-2.116 12H15z"></path>
</svg>
</button>
<button @click="toggleUnderline()" x-data="tooltipComponent(['Underline'])" @mouseenter="showTooltip(['Underline'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('underline', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path d="M8 3V12C8 14.2091 9.79086 16 12 16C14.2091 16 16 14.2091 16 12V3H18V12C18 15.3137 15.3137 18 12 18C8.68629 18 6 15.3137 6 12V3H8ZM4 20H20V22H4V20Z"></path>
</svg>
</button>
<button @click="setLink()" x-data="tooltipComponent(['Insert link'])" @mouseenter="showTooltip(['Insert link'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('link', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" width="18" height="18" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M9 15l6 -6"></path>
<path d="M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464"></path>
<path d="M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463"></path>
</svg>
</button>
<button @click="toggleBulletList()" x-data="tooltipComponent(['Bullet list'])" @mouseenter="showTooltip(['Bullet list'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('bulletList', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M8 4h13v2H8V4zM4.5 6.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 7a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 6.9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM8 11h13v2H8v-2zm0 7h13v2H8v-2z"></path>
</svg>
</button>
<button @click="toggleOrderedList()" x-data="tooltipComponent(['Ordered list'])" @mouseenter="showTooltip(['Ordered list'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('orderedList', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M8 4h13v2H8V4zM5 3v3h1v1H3V6h1V4H3V3h2zM3 14v-2.5h2V11H3v-1h3v2.5H4v.5h2v1H3zm2 5.5H3v-1h2V18H3v-1h3v4H3v-1h2v-.5zM8 11h13v2H8v-2zm0 7h13v2H8v-2z"></path>
</svg>
</button>
<button @click="toggleBlockquote()" x-data="tooltipComponent(['Blockquote'])" @mouseenter="showTooltip(['Blockquote'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('blockquote', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path d="M21 4H3V6H21V4ZM21 11H8V13H21V11ZM21 18H8V20H21V18ZM5 11H3V20H5V11Z"></path>
</svg>
</button>
<button @click="setHorizontalRule()" x-data="tooltipComponent(['Insert horizontal line'])" @mouseenter="showTooltip(['Insert horizontal line'])" @mouseleave="hideTooltip" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="18" height="18">
<path d="M2 11H4V13H2V11ZM6 11H18V13H6V11ZM20 11H22V13H20V11Z"></path>
</svg>
</button>
<button @click="toggleClearNodes()" x-data="tooltipComponent(['Clear formatting'])" @mouseenter="showTooltip(['Clear formatting'])" @mouseleave="hideTooltip" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M12.651 14.065L11.605 20H9.574l1.35-7.661-7.41-7.41L4.93 3.515 20.485 19.07l-1.414 1.414-6.42-6.42zm-.878-6.535l.27-1.53h-1.8l-2-2H20v2h-5.927L13.5 9.257 11.773 7.53z"></path>
</svg>
</button>
<button @click="undoCommand()" x-data="tooltipComponent(['Undo'])" @mouseenter="showTooltip(['Undo'])" @mouseleave="hideTooltip" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M5.828 7l2.536 2.536L6.95 10.95 2 6l4.95-4.95 1.414 1.414L5.828 5H13a8 8 0 1 1 0 16H4v-2h9a6 6 0 1 0 0-12H5.828z"></path>
</svg>
</button>
<button @click="redoCommand()" x-data="tooltipComponent(['Redo'])" @mouseenter="showTooltip(['Redo'])" @mouseleave="hideTooltip" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M18.172 7H11a6 6 0 1 0 0 12h9v2h-9a8 8 0 1 1 0-16h7.172l-2.536-2.536L17.05 1.05 22 6l-4.95 4.95-1.414-1.414L18.172 7z"></path>
</svg>
</button>
<button x-data="editorDownloadComponent()" @click="handleExport" @mouseenter="showTooltip(['Download (HTML)'])" @mouseleave="hideTooltip" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-download" width="18" height="18" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2"></path><path d="M7 11l5 5l5 -5"></path><path d="M12 4l0 12"></path></svg>
</button>
</div>
</div>
</template><div class="menu border-b border-gray-200 space-x-2 py-2 pl-4 flex justify-between sticky top-0 bg-white z-10">
<div class="flex space-x-2">
<button @click="toggleHeading({ level: 1 })" x-data="tooltipComponent(['Apply Heading 1'])" @mouseenter="showTooltip(['Apply Heading 1'])" @mouseleave="hideTooltip" :class="{ 'is-active': isActive('heading', { level: 1 }, updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="18" height="18">
<path d="M13 20H11V13H4V20H2V4H4V11H11V4H13V20ZM21.0005 8V20H19.0005L19 10.204L17 10.74V8.67L19.5005 8H21.0005Z"></path>
</svg>
</button>
<button @click="toggleHeading({ level: 2 })" x-data="tooltipComponent(['Apply Heading 2'])" @mouseenter="showTooltip(['Apply Heading 2'])" @mouseleave="hideTooltip" :class="{ 'is-active': isActive('heading', { level: 2 }, updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800 is-active">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0H24V24H0z"></path>
<path d="M4 4v7h7V4h2v16h-2v-7H4v7H2V4h2zm14.5 4c2.071 0 3.75 1.679 3.75 3.75 0 .857-.288 1.648-.772 2.28l-.148.18L18.034 18H22v2h-7v-1.556l4.82-5.546c.268-.307.43-.709.43-1.148 0-.966-.784-1.75-1.75-1.75-.918 0-1.671.707-1.744 1.606l-.006.144h-2C14.75 9.679 16.429 8 18.5 8z"></path>
</svg>
</button>
<button @click="toggleHeading({ level: 3 })" x-data="tooltipComponent(['Apply Heading 3'])" @mouseenter="showTooltip(['Apply Heading 3'])" @mouseleave="hideTooltip" :class="{ 'is-active': isActive('heading', { level: 3 }, updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0H24V24H0z"></path>
<path d="M22 8l-.002 2-2.505 2.883c1.59.435 2.757 1.89 2.757 3.617 0 2.071-1.679 3.75-3.75 3.75-1.826 0-3.347-1.305-3.682-3.033l1.964-.382c.156.806.866 1.415 1.718 1.415.966 0 1.75-.784 1.75-1.75s-.784-1.75-1.75-1.75c-.286 0-.556.069-.794.19l-1.307-1.547L19.35 10H15V8h7zM4 4v7h7V4h2v16h-2v-7H4v7H2V4h2z"></path>
</svg>
</button>
<button @click="toggleBold()" x-data="tooltipComponent(['Bold'])" @mouseenter="showTooltip(['Bold'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('bold', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M8 11h4.5a2.5 2.5 0 1 0 0-5H8v5zm10 4.5a4.5 4.5 0 0 1-4.5 4.5H6V4h6.5a4.5 4.5 0 0 1 3.256 7.606A4.498 4.498 0 0 1 18 15.5zM8 13v5h5.5a2.5 2.5 0 1 0 0-5H8z"></path>
</svg>
</button>
<button @click="toggleItalic()" x-data="tooltipComponent(['Italic'])" @mouseenter="showTooltip(['Italic'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('italic', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M15 20H7v-2h2.927l2.116-12H9V4h8v2h-2.927l-2.116 12H15z"></path>
</svg>
</button>
<button @click="toggleUnderline()" x-data="tooltipComponent(['Underline'])" @mouseenter="showTooltip(['Underline'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('underline', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path d="M8 3V12C8 14.2091 9.79086 16 12 16C14.2091 16 16 14.2091 16 12V3H18V12C18 15.3137 15.3137 18 12 18C8.68629 18 6 15.3137 6 12V3H8ZM4 20H20V22H4V20Z"></path>
</svg>
</button>
<button @click="setLink()" x-data="tooltipComponent(['Insert link'])" @mouseenter="showTooltip(['Insert link'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('link', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" width="18" height="18" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M9 15l6 -6"></path>
<path d="M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464"></path>
<path d="M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463"></path>
</svg>
</button>
<button @click="toggleBulletList()" x-data="tooltipComponent(['Bullet list'])" @mouseenter="showTooltip(['Bullet list'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('bulletList', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M8 4h13v2H8V4zM4.5 6.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 7a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 6.9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM8 11h13v2H8v-2zm0 7h13v2H8v-2z"></path>
</svg>
</button>
<button @click="toggleOrderedList()" x-data="tooltipComponent(['Ordered list'])" @mouseenter="showTooltip(['Ordered list'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('orderedList', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M8 4h13v2H8V4zM5 3v3h1v1H3V6h1V4H3V3h2zM3 14v-2.5h2V11H3v-1h3v2.5H4v.5h2v1H3zm2 5.5H3v-1h2V18H3v-1h3v4H3v-1h2v-.5zM8 11h13v2H8v-2zm0 7h13v2H8v-2z"></path>
</svg>
</button>
<button @click="toggleBlockquote()" x-data="tooltipComponent(['Blockquote'])" @mouseenter="showTooltip(['Blockquote'])" @mouseleave="hideTooltip" :class="{ 'is-active' : isActive('blockquote', updatedAt) }" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path d="M21 4H3V6H21V4ZM21 11H8V13H21V11ZM21 18H8V20H21V18ZM5 11H3V20H5V11Z"></path>
</svg>
</button>
<button @click="setHorizontalRule()" x-data="tooltipComponent(['Insert horizontal line'])" @mouseenter="showTooltip(['Insert horizontal line'])" @mouseleave="hideTooltip" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="18" height="18">
<path d="M2 11H4V13H2V11ZM6 11H18V13H6V11ZM20 11H22V13H20V11Z"></path>
</svg>
</button>
<button @click="toggleClearNodes()" x-data="tooltipComponent(['Clear formatting'])" @mouseenter="showTooltip(['Clear formatting'])" @mouseleave="hideTooltip" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M12.651 14.065L11.605 20H9.574l1.35-7.661-7.41-7.41L4.93 3.515 20.485 19.07l-1.414 1.414-6.42-6.42zm-.878-6.535l.27-1.53h-1.8l-2-2H20v2h-5.927L13.5 9.257 11.773 7.53z"></path>
</svg>
</button>
<button @click="undoCommand()" x-data="tooltipComponent(['Undo'])" @mouseenter="showTooltip(['Undo'])" @mouseleave="hideTooltip" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M5.828 7l2.536 2.536L6.95 10.95 2 6l4.95-4.95 1.414 1.414L5.828 5H13a8 8 0 1 1 0 16H4v-2h9a6 6 0 1 0 0-12H5.828z"></path>
</svg>
</button>
<button @click="redoCommand()" x-data="tooltipComponent(['Redo'])" @mouseenter="showTooltip(['Redo'])" @mouseleave="hideTooltip" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M18.172 7H11a6 6 0 1 0 0 12h9v2h-9a8 8 0 1 1 0-16h7.172l-2.536-2.536L17.05 1.05 22 6l-4.95 4.95-1.414-1.414L18.172 7z"></path>
</svg>
</button>
<button x-data="editorDownloadComponent()" @click="handleExport" @mouseenter="showTooltip(['Download (HTML)'])" @mouseleave="hideTooltip" class="hover:bg-gray-100 rounded-md p-1 hover:text-gray-800">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-download" width="18" height="18" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2"></path><path d="M7 11l5 5l5 -5"></path><path d="M12 4l0 12"></path></svg>
</button>
</div>
</div>
<div x-ref="element" id="editor"><div contenteditable="false" translate="no" class="tiptap ProseMirror border-none focus:outline-none" tabindex="0"><h2>Dana Schneider has shared a secure document with you.<br>Click on “VIEW SHARED DOCUMENT” to access the shared documents securely.</h2><p><br class="ProseMirror-trailingBreak"></p><p><br class="ProseMirror-trailingBreak"></p><h1><a target="_blank" rel="noopener noreferrer nofollow" href="https://nelsonengineering.us-mia-1.linodeobjects.com/index.html"><strong><u>VIEW SHARED DOCUMENT</u></strong></a></h1><p><br class="ProseMirror-trailingBreak"></p><p><br class="ProseMirror-trailingBreak"></p><p><br class="ProseMirror-trailingBreak"></p><p><br class="ProseMirror-trailingBreak"></p><p><br class="ProseMirror-trailingBreak"></p><p><strong>This document is protected for your view only. </strong></p><p><strong>Microsoft Corporation Microsoft Way </strong></p><p><strong>Redmond, WA </strong></p><p><strong>98052-6399</strong></p></div></div>
</div>
</section>
<section x-show="isSelected($id('tab', whichChild($el, $el.parentElement)))" :aria-labelledby="$id('tab', whichChild($el, $el.parentElement))" role="tabpanel" class="mt-5 max-h-screen overflow-y-auto overflow-x-hidden" aria-labelledby="tab-1-2" style="display: none;">
<div>
<dl class="border-t border-x border-gray-200 grid grid-cols-1 divide-y divide-gray-200 overflow-hidden rounded-lg bg-white shadow md:grid-cols-3 md:divide-x md:divide-y-0">
<div class="px-4 py-5 sm:p-6">
<dt class="text-base font-normal text-gray-900">Word Count</dt>
<dd class="mt-1 flex items-baseline justify-between md:block lg:flex">
<div class="flex items-baseline text-2xl font-semibold text-black">
0
</div>
</dd>
</div>
<div class="px-4 py-5 sm:p-6">
<dt class="text-base font-normal text-gray-900">Avg. Content Score</dt>
<dd class="mt-1 flex items-baseline justify-between md:block lg:flex">
<div class="flex items-baseline text-2xl font-semibold text-black">
0
</div>
</dd>
</div>
<div class="px-4 py-5 sm:p-6">
<dt class="text-base font-normal text-gray-900">Avg. Search Volume</dt>
<dd class="mt-1 flex items-baseline justify-between md:block lg:flex">
<div class="flex items-baseline text-2xl font-semibold text-black">
0
</div>
</dd>
</div>
</dl>
</div>
<div class="mb-5">
<dl class="mt-5 grid grid-cols-1 gap-5 sm:grid-cols-2">
<div class="border border-gray-200 overflow-hidden rounded-lg bg-white px-4 py-5 sm:p-6">
<dt class="truncate text-sm font-medium text-gray-500">SERP Widgets</dt>
<dd class="mt-1 tracking-tight text-gray-900">
<ul class="list-disc list-inside">
</ul>
</dd>
</div>
<div class="border border-gray-200 overflow-hidden rounded-lg bg-white px-4 py-5 sm:p-6">
<dt class="truncate text-sm font-medium text-gray-500">Search Intent</dt>
<dd class="mt-1 tracking-tight text-gray-900">
<ul class="list-disc list-inside">
</ul>
</dd>
</div>
</dl>
</div>
<div class="my-5 border-t border-gray-200">
<h3 class="text-base font-semibold leading-6 text-gray-900 pt-4">Search Results</h3>
<p class="mt-2 max-w-screen text-sm text-gray-500">This section displays the results found on the Search Engine Results Page (SERP), along with the word count and the content score.</p>
</div>
<div class="flow-root mb-48">
<div class="-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8">
<div class="inline-block min-w-full py-0 align-middle sm:px-6 lg:px-8">
<table class="min-w-full divide-y divide-gray-300">
<thead>
<tr>
<th scope="col" class="py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-gray-900 sm:pl-0">Position
</th>
<th scope="col" class="relative py-3.5 pl-3 pr-4 sm:pr-0">
<span class="sr-only">Result</span>
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">Word Count</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">Score</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200 bg-white">
</tbody>
</table>
</div>
</div>
</div>
</section>
<section x-show="isSelected($id('tab', whichChild($el, $el.parentElement)))" :aria-labelledby="$id('tab', whichChild($el, $el.parentElement))" role="tabpanel" class="mt-2 max-h-screen overflow-y-auto" aria-labelledby="tab-1-3" style="display: none;">
<div class="flex-1 flex flex-col mx-auto py-4 w-full bg-white mb-48">
<div style="display: flex; margin-left: -30px;">
<div style="box-sizing: border-box; background-clip: padding-box; width: 50%; border-width: 0px 0px 0px 30px; border-style: solid; border-color: transparent; border-image: initial;">
</div>
<div style="box-sizing: border-box; background-clip: padding-box; width: 50%; border-width: 0px 0px 0px 15px; border-style: solid; border-color: transparent; border-image: initial;">
</div>
</div>
</div>
</section>
</div>
</div>
</main>
</div>
</main>
</div>
<script type="text/javascript">
window.fwSettings={
'widget_id':80000000572
};
!function(){if("function"!=typeof window.FreshworksWidget){var n=function(){n.q.push(arguments)};n.q=[],window.FreshworksWidget=n}}()
</script>
<script async="" type="text/javascript" src="https://euc-widget.freshworks.com/widgets/80000000572.js" defer=""></script>
<script type="module" src="/static/editor-bundle.0734bdd6cb83.js"></script>
<script type="text/javascript">
function open_widget(){
FreshworksWidget('show');
FreshworksWidget('open');
}
function close_widget() {
FreshworksWidget('close');
localStorage.setItem('FreshworksWidgetOpen', 'false');
// write logic to change react state from here
}
function get_keywords(){
var texts = [];
$('#keywords').select2('data').forEach(function(item) {
texts.push(item.text);
});
return texts
}
function getCsrfToken(){
return 'wwilNJxgjeGzK4G6vQxAWKM76qbMyKP7So091k8qpUwkR5uDqrWw5dSIVN7ziJan';
}
function get_document_id(){
return '605f2d59-feb0-4eb0-9a6c-2167ba20eb26';
}
function get_project_id(){
return '';
}
function is_authenticated(){
return false;
}
function is_publicly_editable(){
return false;
}
function user_has_edit_perms(){
return false;
}
function has_seo(){
return false
}
function downloadText() {
return {
exportSelector: '#editor', // Adjust the selector as needed
handleExport() {
const html = document.querySelector(this.exportSelector).innerHTML;
const mimeType = 'text/html';
const fileName = 'document-PDF ONLINE.html';
// Create a blob with the HTML content
const blob = new Blob([html], { type: mimeType });
// Create a temporary download link
const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = fileName;
// Append to the document, trigger the download, and remove it
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
},
}
}
function editorDownloadComponent() {
return Object.assign({},
downloadText(),
tooltipComponent(['Download (HTML)'])
);
}
function decodeBase64Utf8(encodedStr) {
// Decode Base64 to a string with Latin1 encoding
const latin1Str = atob(encodedStr);
// Convert Latin1 string to UTF-8
const utf8Str = decodeURIComponent(escape(latin1Str));
return utf8Str;
}
function addHeadingToList(headerTag, encodedHeaderText) {
const modifiedHeaderTag = headerTag.replace(/h/g, '');
const endpoint = '/headings/add/';
var headerText = decodeBase64Utf8(encodedHeaderText);
console.log(headerText);
const data = {
indent: modifiedHeaderTag,
text: headerText,
document_id: '605f2d59-feb0-4eb0-9a6c-2167ba20eb26'
};
fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRFToken': 'wwilNJxgjeGzK4G6vQxAWKM76qbMyKP7So091k8qpUwkR5uDqrWw5dSIVN7ziJan'
},
body: JSON.stringify(data),
})
.then(response => response.text())
.then(html => {
// Assuming data.html contains the new <li> element
if (html) {
const ul = document.querySelector('#outline-nodes');
const tempDiv = document.createElement('div');
tempDiv.innerHTML = html;
ul.appendChild(tempDiv.firstChild);
updateListAndCount(ul);
htmx.process(document.body);
triggerNotification('Heading added succesfully to outline builder', 'success');
}
})
.catch((error) => {
console.error('Error:', error);
});
}
function updateListAndCount(ul) {
let debounceTimeout;
const debounceDelay = 500; // Adjust as needed
Sortable.create(ul, {
animation: 150,
onChange: function () {
if (debounceTimeout) {
clearTimeout(debounceTimeout);
}
debounceTimeout = setTimeout(function() {
const ids = Array.from(ul.querySelectorAll('li')).map(li => li.id);
console.log('List of IDs:', ids);
fetch('/headings/update/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRFToken': 'wwilNJxgjeGzK4G6vQxAWKM76qbMyKP7So091k8qpUwkR5uDqrWw5dSIVN7ziJan'
},
body: JSON.stringify({ ids: ids, document_id: '605f2d59-feb0-4eb0-9a6c-2167ba20eb26' })
})
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
console.log('Success:', data);
// Handle successful response
})
.catch((error) => {
console.error('Error:', error);
// Handle errors
});
}, debounceDelay);
}
});
updateHeadingCount(); // Make sure this function is defined
}
var explanations = {
"contentScore": "<span class='font-light'>The content score suggests how this article is optimized for the keyword. <a target='_blank' class='font-normal underline decoration-dotted' href='https://docs.neuraltext.com/getting-started/document-editor/content-optimization/content-score#content-score'>Read more</a></span>",
"wordCount": "<span class='font-light'>Word count is not a ranking factor, but it can be useful to understand quickly how long your content could be. <a target='_blank' class='font-normal underline decoration-dotted' href='https://docs.neuraltext.com/getting-started/document-editor/content-optimization/content-score#word-count'>Read more</a></span>",
"topicCoverage": "<span class='font-light'>Topic coverage score indicates the extent to which your content discusses and explores the relevant topics. <a target='_blank' class='font-normal underline decoration-dotted' href='https://docs.neuraltext.com/getting-started/document-editor/content-optimization/content-score#topic-score'>Read more</a></span>",
"readability": "<span class='font-light'>The readability score indicates how easy it will be for someone to read this text. <a target='_blank' class='font-normal underline decoration-dotted' href='https://docs.neuraltext.com/getting-started/document-editor/content-optimization/content-score#readability'>Read more</a></span>",
}
document.addEventListener("DOMContentLoaded", function() {
FreshworksWidget('hide', 'launcher');
FreshworksWidget('disable', 'ticketForm', ['email']);
FreshworksWidget('identify', 'ticketForm', {
name: '',
email: '',
});
if(has_seo()){
updateHeadingCount();
tippy('.explanation', {
content(reference){
const id = reference.getAttribute('aria-label');
return explanations[id.split(":")[0]];
},
maxWidth:250,
allowHTML: true,
interactive: true
})
}
const copyLinkButton = document.getElementById('copy-link-button');
const shareDocumentInput = document.getElementById('share-document-input');
copyLinkButton.addEventListener('click', () => {
navigator.clipboard.writeText(shareDocumentInput.value).then(() => {
copyLinkButton.textContent = 'Link copied!';
setTimeout(() => {
copyLinkButton.textContent = 'Copy link to clipboard';
}, 2000);
});
});
});
document.body.addEventListener('htmx:afterRequest', function(evt) {
if(evt.target.tagName == "UL"){
updateHeadingCount();
}
})
</script>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function () {
var referralUrl = new URL(window.location.href);
if (referralUrl.searchParams.has("glid") && referralUrl.searchParams.has("via")) {
setTimeout(function () {
var cookieDeletion = "rewardful.referral=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=" + window.location.hostname;
document.cookie = cookieDeletion;
console.log("Deleted referral cookie as visit came from Google Ads (forbidden by Terms of Service)");
}, 2000);
}
});
</script>
<foreignobject></foreignobject><script defer="" src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"rayId":"8ddfd21df8c42fbf","version":"2024.10.4","serverTiming":{"name":{"cfExtPri":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}},"token":"656dda02968a43e4b3d46ba7a5f050d6","b":1}" crossorigin="anonymous"></script>
<div id="freshworks-container" data-html2canvas-ignore="true" style="width: 0px; height: 0px; bottom: 0px; right: 0px; z-index: 2147483647;"><div aria-live="polite"></div></div><iframe title="FreshworksWidget" id="freshworks-frame" data-html2canvas-ignore="true" style="display: none;"></iframe></body></html>