UNPKG

@beenotung/tslib

Version:
96 lines (95 loc) 2.71 kB
"use strict"; 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'); } } }