82 lines
2.5 KiB
JavaScript
82 lines
2.5 KiB
JavaScript
/* Common Functions */
|
|
|
|
export function copyArray(asArray)
|
|
{
|
|
return asArray.slice(0); //trick to copy array
|
|
}
|
|
|
|
export function getElem(aoAnchor, asPath)
|
|
{
|
|
return (typeof asPath == 'object' && asPath.length > 1)?getElem(aoAnchor[asPath.shift()], asPath):aoAnchor[(typeof asPath == 'object')?asPath.shift():asPath];
|
|
}
|
|
|
|
export function setElem(aoAnchor, asPath, oValue)
|
|
{
|
|
var asTypes = {boolean:false, string:'', integer:0, int:0, array:[], object:{}};
|
|
if(typeof asPath == 'object' && asPath.length > 1)
|
|
{
|
|
var nextlevel = asPath.shift();
|
|
if(!(nextlevel in aoAnchor)) aoAnchor[nextlevel] = {}; //Creating a new level
|
|
if(typeof aoAnchor[nextlevel] !== 'object') debug('Error - setElem() : Already existing path at level "'+nextlevel+'". Cancelling setElem() action');
|
|
return setElem(aoAnchor[nextlevel], asPath, oValue);
|
|
}
|
|
else
|
|
{
|
|
var sKey = (typeof asPath == 'object')?asPath.shift():asPath;
|
|
return aoAnchor[sKey] = (!(sKey in aoAnchor) && (oValue in asTypes))?asTypes[oValue]:oValue;
|
|
}
|
|
}
|
|
|
|
export function getDragPosition(oEvent) {
|
|
let bMouse = oEvent.type.includes('mouse');
|
|
return {
|
|
x: bMouse?oEvent.pageX:oEvent.touches[0].clientX,
|
|
y: bMouse?oEvent.pageY:oEvent.touches[0].clientY
|
|
};
|
|
}
|
|
|
|
export function copyTextToClipboard(text) {
|
|
if(!navigator.clipboard) {
|
|
var textArea = document.createElement('textarea');
|
|
textArea.value = text;
|
|
|
|
// Avoid scrolling to bottom
|
|
textArea.style.top = '0';
|
|
textArea.style.left = '0';
|
|
textArea.style.position = 'fixed';
|
|
|
|
document.body.appendChild(textArea);
|
|
textArea.focus();
|
|
textArea.select();
|
|
|
|
try {
|
|
var successful = document.execCommand('copy');
|
|
if(!successful) console.error('Fallback: Oops, unable to copy', text);
|
|
} catch (err) {
|
|
console.error('Fallback: Oops, unable to copy', err);
|
|
}
|
|
|
|
document.body.removeChild(textArea);
|
|
return;
|
|
}
|
|
navigator.clipboard.writeText(text).then(
|
|
function() {},
|
|
function(err) {
|
|
console.error('Async: Could not copy text: ', err);
|
|
}
|
|
);
|
|
}
|
|
|
|
export function getOuterWidth(element) {
|
|
var style = getComputedStyle(element);
|
|
var width = element.offsetWidth; // Width without padding and border
|
|
width += parseInt(style.marginLeft) + parseInt(style.marginRight); // Add margins
|
|
|
|
// Check if the box-sizing is border-box (includes padding and border in the width)
|
|
if (style.boxSizing === 'border-box') {
|
|
width += parseInt(style.paddingLeft) + parseInt(style.paddingRight); // Add padding
|
|
width += parseInt(style.borderLeftWidth) + parseInt(style.borderRightWidth); // Add border
|
|
}
|
|
|
|
return width;
|
|
} |