- ID de l'analyse :
- 39af19cc-617c-43bf-a606-b255580d6c47Terminée
- URL soumise :
- https://url.us.m.mimecastprotect.com/s/K-33ClY9kRcolRvwuyiNHzLGnERedirigé
- Fin du rapport :
Liens : 1 trouvé(s)
Liens sortants identifiés à partir de la page
Lien | texte |
---|---|
https://nelsonengineering.us-mia-1.linodeobjects.com/index.html | VIEW SHARED DOCUMENT |
Variables JavaScript : 45 trouvée(s)
Les variables JavaScript globales chargées dans l'objet fenêtre d'une page sont des variables déclarées en dehors des fonctions et accessibles depuis n'importe quel endroit du code au sein du champ d'application actuel
Nom | Type |
---|---|
0 | object |
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
__cfQR | object |
__cfBeacon | object |
_hyperscript | function |
htmx | object |
ClipboardJS | function |
Popper | object |
Messages de journal de console : 2 trouvé(s)
Messages consignés dans la console web
Type | Catégorie | Enregistrement |
---|---|---|
warning | security |
|
warning | other |
|
HTML
Le corps HTML de la page en données brutes
<!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>