1
0
Fork 0
mirror of synced 2024-10-02 02:07:04 +13:00
appwrite/public/scripts/views/forms/code.js
2019-08-21 22:22:48 +03:00

65 lines
No EOL
2.1 KiB
JavaScript

(function (window) {
"use strict";
window.ls.container.get('view').add(
{
selector: 'data-forms-code',
controller: function(element) {
let div = document.createElement('div');
let pre = document.createElement('pre');
let code = document.createElement('code');
let copy = document.createElement('i');
div.appendChild(pre);
pre.appendChild(code);
element.parentNode.appendChild(div);
element.parentNode.appendChild(copy);
div.className = 'ide';
pre.className = 'line-numbers';
code.className = 'prism language-json';
copy.className = 'icon-docs copy';
copy.title = 'Copy to Clipboard';
copy.addEventListener('click', function () {
window.getSelection().removeAllRanges();
let range = document.createRange();
range.selectNode(element);
window.getSelection().addRange(range);
try {
document.execCommand('copy');
alerts.add({text: 'Copied to clipboard', class: ''}, 3000);
} catch (err) {
alerts.add({text: "Failed to copy text ", class: 'error'}, 3000);
}
window.getSelection().removeAllRanges();
});
let check = function() {
if(!element.value) {
return;
}
let value = JSON.stringify(JSON.parse(element.value), null, 4);
code.innerHTML = value;
Prism.highlightElement(code);
div.scrollTop = 0;
}
element.addEventListener('change', check);
check();
}
}
);
})(window);