@beenotung/tslib
Version:
utils library in Typescript
96 lines (95 loc) • 2.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.removeNode = removeNode;
exports.appendNode = appendNode;
exports.setFullscreen = setFullscreen;
exports.exitFullscreen = exitFullscreen;
exports.csv_to_table_element = csv_to_table_element;
exports.copyToClipboard = copyToClipboard;
function removeNode(node) {
if (!node) {
return;
}
if (typeof node.remove === 'function') {
return node.remove();
}
if (node.parentNode) {
return node.parentNode.removeChild(node);
}
}
/**
* auto remove, then append to {parent}
* */
function appendNode(node, parent) {
if (node.parentNode) {
node.parentNode.removeChild(node);
}
parent.appendChild(node);
}
function setFullscreen(element = document.body) {
if (element.requestFullscreen) {
element.requestFullscreen();
}
else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
}
else {
console.warn('full screen is not supported');
}
}
function exitFullscreen() {
if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
else if (document.exitFullscreen) {
document.exitFullscreen();
}
else {
console.warn('full screen is not supported');
}
}
function csv_to_table_element(rows) {
/* initialize */
const table = document.createElement('table');
const thead = document.createElement('thead');
const tbody = document.createElement('tbody');
/* create table head */
const tr = document.createElement('tr');
rows[0].forEach(row => {
const td = document.createElement('th');
td.textContent = row;
tr.appendChild(td);
});
thead.appendChild(tr);
/* create table body */
for (let i = 1; i < rows.length; i++) {
const tr = document.createElement('tr');
rows[i].forEach(col => {
const td = document.createElement('td');
td.textContent = col;
tr.appendChild(td);
});
tbody.appendChild(tr);
}
/* finalize */
table.appendChild(thead);
table.appendChild(tbody);
return table;
}
/** @throws {Error} if copy to clipboard is not supported */
async function copyToClipboard(text) {
try {
await navigator.clipboard.writeText(text);
}
catch (error) {
const input = document.createElement('input');
document.body.append(input);
input.value = text;
input.select();
const supported = document.execCommand('copy');
input.remove();
if (!supported) {
throw new Error('copy to clipboard is not supported');
}
}
}