@reactual/handsontable
Version:
Spreadsheet-like data grid editor
155 lines (131 loc) • 4.48 kB
JavaScript
import moment from 'moment';
import {toSingleLine} from './templateLiteralTag';
/**
* Converts any value to string.
*
* @param {*} value
* @returns {String}
*/
export function stringify(value) {
let result;
switch (typeof value) {
case 'string':
case 'number':
result = `${value}`;
break;
case 'object':
result = value === null ? '' : value.toString();
break;
case 'undefined':
result = '';
break;
default:
result = value.toString();
break;
}
return result;
}
/**
* Checks if given variable is defined.
*
* @param {*} variable Variable to check.
* @returns {Boolean}
*/
export function isDefined(variable) {
return typeof variable !== 'undefined';
}
/**
* Checks if given variable is undefined.
*
* @param {*} variable Variable to check.
* @returns {Boolean}
*/
export function isUndefined(variable) {
return typeof variable === 'undefined';
}
/**
* Check if given variable is null, empty string or undefined.
*
* @param {*} variable Variable to check.
* @returns {Boolean}
*/
export function isEmpty(variable) {
return variable === null || variable === '' || isUndefined(variable);
}
/**
* Check if given variable is a regular expression.
*
* @param {*} variable Variable to check.
* @returns {Boolean}
*/
export function isRegExp(variable) {
return Object.prototype.toString.call(variable) === '[object RegExp]';
}
/* eslint-disable */
const _m = '\x6C\x65\x6E\x67\x74\x68';
const _hd = (v) => parseInt(v, 16);
const _pi = (v) => parseInt(v, 10);
const _ss = (v, s, l) => v['\x73\x75\x62\x73\x74\x72'](s, l);
const _cp = (v) => v['\x63\x6F\x64\x65\x50\x6F\x69\x6E\x74\x41\x74'](0) - 65;
const _norm = (v) => `${v}`.replace(/\-/g, '');
const _extractTime = (v) => _hd(_ss(_norm(v), _hd('12'), _cp('\x46'))) / (_hd(_ss(_norm(v), _cp('\x42'), ~~![][_m])) || 9);
const _ignored = () => typeof location !== 'undefined' && /^([a-z0-9\-]+\.)?\x68\x61\x6E\x64\x73\x6F\x6E\x74\x61\x62\x6C\x65\x2E\x63\x6F\x6D$/i.test(location.host);
let _notified = false;
export function _injectProductInfo(key, element) {
key = _norm(key || '');
let warningMessage = '';
let showDomMessage = true;
const schemaValidity = _checkKeySchema(key);
const ignored = _ignored();
const trial = isEmpty(key) || key === 'trial';
if (trial || schemaValidity) {
if (schemaValidity) {
const releaseTime = Math.floor(moment(process.env.HOT_RELEASE_DATE, 'DD/MM/YYYY').toDate().getTime() / 8.64e7);
const keyGenTime = _extractTime(key);
if (keyGenTime > 45000 || keyGenTime !== parseInt(keyGenTime, 10)) {
warningMessage = 'The license key provided to Handsontable Pro is invalid. Make sure you pass it correctly.';
}
if (!warningMessage) {
if (releaseTime > keyGenTime + 1) {
warningMessage = toSingleLine`
Your license key of Handsontable Pro has expired.\x20
Renew your maintenance plan at https://handsontable.com or downgrade to the previous version of the software.
`;
}
showDomMessage = releaseTime > keyGenTime + 15;
}
} else {
warningMessage = 'Evaluation version of Handsontable Pro. Not licensed for use in a production environment.';
}
} else {
warningMessage = 'The license key provided to Handsontable Pro is invalid. Make sure you pass it correctly.';
}
if (ignored) {
warningMessage = false;
showDomMessage = false;
}
if (warningMessage && !_notified) {
console[trial ? 'info' : 'warn'](warningMessage);
_notified = true;
}
if (showDomMessage && element.parentNode) {
const message = document.createElement('div');
message.id = 'hot-display-license-info';
message.appendChild(document.createTextNode('Evaluation version of Handsontable Pro.'));
message.appendChild(document.createElement('br'));
message.appendChild(document.createTextNode('Not licensed for production use.'));
element.parentNode.insertBefore(message, element.nextSibling);
}
}
function _checkKeySchema(v) {
let z = [][_m];
let p = z;
if (v[_m] !== _cp('\x5A')) {
return false;
}
for (let c = '', i = '\x42\x3C\x48\x34\x50\x2B'.split(''), j = _cp(i.shift()); j; j = _cp(i.shift() || 'A')) {
--j<''[_m]?p=p|(_pi(`${_pi(_hd(c)+(_hd(_ss(v,Math.abs(j),2))+[]).padStart(2,'0'))}`)%_cp('\xA2')||2)>>1:c=_ss(v,j,!j?6:i[_m]===1?9:8);
}
return p === z;
}
/* eslint-enable */