molstar
Version:
A comprehensive macromolecular library.
222 lines • 7.45 kB
JavaScript
/**
* Copyright (c) 2017-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatProgress = exports.formatTime = exports.merge = exports.assign = exports.shallowClone = exports.extend = exports.defaults = exports.shallowEqualArrays = exports.shallowEqualObjects = exports.shallowEqual = exports.deepEqual = exports.arrayEqual = exports.round = exports.noop = exports.Mask = exports.UUID = exports.StringBuilder = exports.BitFlags = void 0;
var tslib_1 = require("tslib");
var bit_flags_1 = require("./bit-flags");
Object.defineProperty(exports, "BitFlags", { enumerable: true, get: function () { return bit_flags_1.BitFlags; } });
var string_builder_1 = require("./string-builder");
Object.defineProperty(exports, "StringBuilder", { enumerable: true, get: function () { return string_builder_1.StringBuilder; } });
var uuid_1 = require("./uuid");
Object.defineProperty(exports, "UUID", { enumerable: true, get: function () { return uuid_1.UUID; } });
var mask_1 = require("./mask");
Object.defineProperty(exports, "Mask", { enumerable: true, get: function () { return mask_1.Mask; } });
(0, tslib_1.__exportStar)(require("./value-cell"), exports);
var noop = function () { };
exports.noop = noop;
function round(n, d) {
var f = Math.pow(10, d);
return Math.round(f * n) / f;
}
exports.round = round;
function arrayEqual(arr1, arr2) {
var length = arr1.length;
if (length !== arr2.length)
return false;
for (var i = 0; i < length; i++) {
if (arr1[i] !== arr2[i]) {
return false;
}
}
return true;
}
exports.arrayEqual = arrayEqual;
var hasOwnProperty = Object.prototype.hasOwnProperty;
function deepEqual(a, b) {
// from https://github.com/epoberezkin/fast-deep-equal MIT
if (a === b)
return true;
var arrA = Array.isArray(a);
var arrB = Array.isArray(b);
if (arrA && arrB) {
if (a.length !== b.length)
return false;
for (var i = 0; i < a.length; i++) {
if (!deepEqual(a[i], b[i]))
return false;
}
return true;
}
if (arrA !== arrB)
return false;
if (a && b && typeof a === 'object' && typeof b === 'object') {
var keys = Object.keys(a);
if (keys.length !== Object.keys(b).length)
return false;
var dateA = a instanceof Date;
var dateB = b instanceof Date;
if (dateA && dateB)
return a.getTime() === b.getTime();
if (dateA !== dateB)
return false;
var regexpA = a instanceof RegExp;
var regexpB = b instanceof RegExp;
if (regexpA && regexpB)
return a.toString() === b.toString();
if (regexpA !== regexpB)
return false;
for (var i = 0; i < keys.length; i++) {
if (!hasOwnProperty.call(b, keys[i]))
return false;
}
for (var i = 0; i < keys.length; i++) {
if (!deepEqual(a[keys[i]], b[keys[i]]))
return false;
}
return true;
}
return false;
}
exports.deepEqual = deepEqual;
function shallowEqual(a, b) {
if (a === b)
return true;
var arrA = Array.isArray(a);
var arrB = Array.isArray(b);
if (arrA && arrB)
return shallowEqualArrays(a, b);
if (arrA !== arrB)
return false;
if (a && b && typeof a === 'object' && typeof b === 'object') {
return shallowEqualObjects(a, b);
}
return false;
}
exports.shallowEqual = shallowEqual;
function shallowEqualObjects(a, b) {
if (a === b)
return true;
if (!a || !b)
return false;
var keys = Object.keys(a);
if (Object.keys(b).length !== keys.length)
return false;
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
var k = keys_1[_i];
if (!hasOwnProperty.call(a, k) || a[k] !== b[k])
return false;
}
return true;
}
exports.shallowEqualObjects = shallowEqualObjects;
function shallowEqualArrays(a, b) {
if (a === b)
return true;
if (!a || !b)
return false;
if (a.length !== b.length)
return false;
for (var i = 0, il = a.length; i < il; ++i) {
if (a[i] !== b[i])
return false;
}
return true;
}
exports.shallowEqualArrays = shallowEqualArrays;
/** Returns `value` if not `undefined`, otherwise returns `defaultValue` */
function defaults(value, defaultValue) {
return value !== undefined ? value : defaultValue;
}
exports.defaults = defaults;
function extend(object, source, guard) {
var v;
var s = source;
var o = object;
var g = guard;
for (var _i = 0, _a = Object.keys(source); _i < _a.length; _i++) {
var k = _a[_i];
v = s[k];
if (v !== void 0)
o[k] = v;
else if (guard)
o[k] = g[k];
}
if (guard) {
for (var _b = 0, _c = Object.keys(guard); _b < _c.length; _b++) {
var k = _c[_b];
v = o[k];
if (v === void 0)
o[k] = g[k];
}
}
return object;
}
exports.extend = extend;
function shallowClone(o) {
return extend({}, o);
}
exports.shallowClone = shallowClone;
function _assign(target) {
for (var s = 1; s < arguments.length; s++) {
var from = arguments[s];
for (var _i = 0, _a = Object.keys(from); _i < _a.length; _i++) {
var key = _a[_i];
if (hasOwnProperty.call(from, key)) {
target[key] = from[key];
}
}
}
return target;
}
exports.assign = Object.assign || _assign;
function _shallowMerge1(source, update) {
var changed = false;
for (var _i = 0, _a = Object.keys(update); _i < _a.length; _i++) {
var k = _a[_i];
if (!hasOwnProperty.call(update, k))
continue;
if (update[k] !== source[k]) {
changed = true;
break;
}
}
if (!changed)
return source;
return (0, exports.assign)(shallowClone(source), update);
}
function _shallowMerge(source) {
var ret = source;
for (var s = 1; s < arguments.length; s++) {
if (!arguments[s])
continue;
ret = _shallowMerge1(source, arguments[s]);
if (ret !== source) {
for (var i = s + 1; i < arguments.length; i++) {
ret = (0, exports.assign)(ret, arguments[i]);
}
break;
}
}
return ret;
}
exports.merge = _shallowMerge;
function padTime(n) { return (n < 10 ? '0' : '') + n; }
function formatTime(d) {
var h = d.getHours(), m = d.getMinutes(), s = d.getSeconds();
return h + ":" + padTime(m) + ":" + padTime(s);
}
exports.formatTime = formatTime;
function formatProgress(p) {
var tp = p.root.progress;
if (tp.isIndeterminate)
return tp.message;
var x = (100 * tp.current / tp.max).toFixed(2);
return tp.message + " " + x + "%";
}
exports.formatProgress = formatProgress;
//# sourceMappingURL=index.js.map
;