Editor
by Jayson Buquia
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Editor</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<style>
body {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
}
input {
opacity: 0;
position: fixed;
top: -100%;
left: -100%;
}
textarea {
visibility: hidden;
}
#copy-raw {
text-transform: uppercase;
margin: 5px 0;
position: fixed;
z-index: 9999;
bottom: 10px;
right: 10px;
}
.cke_dialog_ui_input_text {
opacity: 1;
}
</style>
</head>
<body>
<div>
<div class="container-fluid">
<button class="btn btn-info btn-sm" id="copy-raw">Copy Data URI</button>
<input type="text" id="data-uri" style="width:100%">
<textarea id="editor"></textarea>
</div>
</div>
<script src="https://cdn.ckeditor.com/4.10.0/standard/ckeditor.js"></script>
<script>
const _dataURI = document.querySelector('#data-uri');
const _copyBtn = document.querySelector('#copy-raw');
_copyBtn.addEventListener('click', function(e) {
e.preventDefault();
_dataURI.select();
document.execCommand('copy');
_dataURI.blur();
});
CKEDITOR.replace('editor', {
skinName: 'minimalist',
})
.on('change', ({
editor
}) => {
let content = editor.getData();
let styles = `
* {
font-family: sans-serif;
}
a:link,a:visited,a:active {
color: teal;
}
`;
_dataURI.value = `data:text/html;,<div><style>${styles}</style>${content}</div>`;
});
</script>
</body>
</html>