@up-group-ui/react-controls
Version:
Up shared react controls
198 lines • 7.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.shallowEqual = exports.rulesMatch = exports.ruleIsValid = exports.off = exports.on = exports.base64toBlob = exports.openFileAsBlob = exports.openFileAsBase64 = exports.getMimeTypeFromBase64 = exports.isBase64 = exports.callAll = exports.withDefaultProps = exports.getHocComponentName = exports.getComponentName = exports.isFunction = exports.isEmptyChildren = exports.isEmptyId = exports.isEmpty = exports.isString = exports.generateId = void 0;
var tslib_1 = require("tslib");
var react_1 = require("react");
var remStringFromPx_1 = (0, tslib_1.__importDefault)(require("./remStringFromPx"));
var shallowEqual_1 = (0, tslib_1.__importDefault)(require("./shallowEqual"));
exports.shallowEqual = shallowEqual_1.default;
exports.default = remStringFromPx_1.default;
function generateId() {
var id = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
for (var i = 0; i < 10; i++)
id += characters.charAt(Math.floor(Math.random() * characters.length));
return id;
}
exports.generateId = generateId;
var GUID_EMPTY = '00000000-0000-0000-0000-000000000000';
function isString(object) {
return typeof object === 'string' || object instanceof String;
}
exports.isString = isString;
function isEmpty(value) {
return (value === undefined ||
value === null ||
value === '' ||
value === GUID_EMPTY ||
(Array.isArray(value) && value.length === 0));
}
exports.isEmpty = isEmpty;
function isEmptyId(id) {
return id === undefined || id === null || id === '' || id === GUID_EMPTY;
}
exports.isEmptyId = isEmptyId;
var isEmptyChildren = function (children) { return react_1.Children.count(children) === 0; };
exports.isEmptyChildren = isEmptyChildren;
var isFunction = function (value) { return typeof value === 'function'; };
exports.isFunction = isFunction;
var getComponentName = function (component) { return component.displayName || component.name; };
exports.getComponentName = getComponentName;
var getHocComponentName = function (hocName, component) {
return hocName + "(" + (0, exports.getComponentName)(component) + ")";
};
exports.getHocComponentName = getHocComponentName;
var withDefaultProps = function (defaultProps, Cmp) {
Cmp.defaultProps = defaultProps;
return Cmp;
};
exports.withDefaultProps = withDefaultProps;
var callAll = function () {
var fns = [];
for (var _i = 0; _i < arguments.length; _i++) {
fns[_i] = arguments[_i];
}
return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return fns.forEach(function (fn) { return fn && fn(args); });
};
};
exports.callAll = callAll;
var open = function (url, title, onClose, name) {
var a = document.createElement('a');
a.setAttribute('href', url);
a.setAttribute('target', '_blank');
if (name) {
a.setAttribute('download', name);
}
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
};
var getFileNameOrDefault = function (name, mimeType) {
if (!isEmpty(name)) {
return name;
}
return "download." + mimeType.split('/').pop();
};
var isBase64 = function (fileAsBase64) {
if (isEmpty(fileAsBase64)) {
return false;
}
return fileAsBase64.split(';')[0] == 'base64';
};
exports.isBase64 = isBase64;
var getMimeTypeFromBase64 = function (fileAsBase64) {
if (isEmpty(fileAsBase64)) {
return null;
}
return fileAsBase64.split(';')[0].split(':')[1];
};
exports.getMimeTypeFromBase64 = getMimeTypeFromBase64;
var openFileAsBase64 = function (fileAsBase64, name) {
var parts = fileAsBase64.split(';');
var mimeType = parts[0].split(':')[1];
var file = parts[1].slice(7);
(0, exports.openFileAsBlob)((0, exports.base64toBlob)(file), mimeType, getFileNameOrDefault(name, mimeType));
};
exports.openFileAsBase64 = openFileAsBase64;
var openFileAsBlob = function (file, mimeType, name) {
var newBlob = new Blob([file], { type: mimeType });
var nav = window.navigator;
if (nav && nav.msSaveOrOpenBlob) {
nav.msSaveOrOpenBlob(newBlob);
return;
}
var data = window.URL.createObjectURL(newBlob);
open(data, name || 'download.png', null, name || 'download.png');
setTimeout(function () {
window.URL.revokeObjectURL(data);
}, 100);
};
exports.openFileAsBlob = openFileAsBlob;
var base64toBlob = function (base64Data, contentType) {
var sliceSize = 1024;
var byteCharacters = atob(base64Data);
var bytesLength = byteCharacters.length;
var slicesCount = Math.ceil(bytesLength / sliceSize);
var byteArrays = new Array(slicesCount);
for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
var begin = sliceIndex * sliceSize;
var end = Math.min(begin + sliceSize, bytesLength);
var bytes = new Array(end - begin);
for (var offset = begin, i = 0; offset < end; ++i, ++offset) {
bytes[i] = byteCharacters[offset].charCodeAt(0);
}
byteArrays[sliceIndex] = new Uint8Array(bytes);
}
var blob;
try {
blob = new Blob(byteArrays, { type: contentType || '' });
}
catch (e) {
window['BlobBuilder'] =
window['BlobBuilder'] || window['WebKitBlobBuilder'] || window['MozBlobBuilder'] || window['MSBlobBuilder'];
if (e.name === 'TypeError' && window['BlobBuilder']) {
var bb = window['BlobBuilder']();
bb.append(byteArrays);
blob = bb.getBlob(contentType);
}
else if (e.name === 'InvalidStateError') {
blob = new Blob(byteArrays, { type: contentType });
}
else {
}
}
return blob;
};
exports.base64toBlob = base64toBlob;
var on = function (el, evt, fn, bubble) {
if ('addEventListener' in el) {
try {
el.addEventListener(evt, fn, bubble);
}
catch (e) {
if (typeof fn === 'object' && fn.handleEvent) {
el.addEventListener(evt, function (e) {
fn.handleEvent.call(fn, e);
}, bubble);
}
else {
throw e;
}
}
}
else if ('attachEvent' in el) {
if (typeof fn === 'object' && fn.handleEvent) {
el.attachEvent('on' + evt, function () {
fn.handleEvent.call(fn);
});
}
else {
el.attachEvent('on' + evt, fn);
}
}
};
exports.on = on;
var off = function (el, evt, fn) {
if ('removeEventListener' in el) {
el.removeEventListener(evt, fn);
}
else if ('attachEvent' in el) {
el.detachEvent(evt, fn);
}
};
exports.off = off;
var ruleIsValid = function (value, givenRegex) { return new RegExp(givenRegex).test(value); };
exports.ruleIsValid = ruleIsValid;
var rulesMatch = function (value, rules) {
return isEmpty(rules) ? false : rules.every(function (_a) {
var regex = _a.regex;
return (0, exports.ruleIsValid)(value, regex);
});
};
exports.rulesMatch = rulesMatch;
//# sourceMappingURL=index.js.map