molstar
Version:
A comprehensive macromolecular library.
99 lines • 4.64 kB
JavaScript
/**
* Copyright (c) 2020-2021 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.PluginConfigManager = exports.PluginConfig = exports.PluginConfigItem = void 0;
var structure_1 = require("../mol-model/structure");
var PluginConfigItem = /** @class */ (function () {
function PluginConfigItem(key, defaultValue) {
this.key = key;
this.defaultValue = defaultValue;
}
PluginConfigItem.prototype.toString = function () { return this.key; };
PluginConfigItem.prototype.valueOf = function () { return this.key; };
return PluginConfigItem;
}());
exports.PluginConfigItem = PluginConfigItem;
function item(key, defaultValue) { return new PluginConfigItem(key, defaultValue); }
// adapted from https://stackoverflow.com/questions/9038625/detect-if-device-is-ios
function is_iOS() {
if (typeof navigator === 'undefined' || typeof window === 'undefined')
return false;
var isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
var isAppleDevice = navigator.userAgent.includes('Macintosh');
var isTouchScreen = navigator.maxTouchPoints >= 4; // true for iOS 13 (and hopefully beyond)
return !window.MSStream && (isIOS || (isAppleDevice && isTouchScreen));
}
exports.PluginConfig = {
item: item,
General: {
IsBusyTimeoutMs: item('plugin-config.is-busy-timeout', 750),
DisableAntialiasing: item('plugin-config.disable-antialiasing', false),
DisablePreserveDrawingBuffer: item('plugin-config.disable-preserve-drawing-buffer', false),
PixelScale: item('plugin-config.pixel-scale', 1),
PickScale: item('plugin-config.pick-scale', 0.25),
PickPadding: item('plugin-config.pick-padding', 3),
EnableWboit: item('plugin-config.enable-wboit', true),
// as of Oct 1 2021, WebGL 2 doesn't work on iOS 15.
// TODO: check back in a few weeks to see if it was fixed
PreferWebGl1: item('plugin-config.prefer-webgl1', is_iOS()),
},
State: {
DefaultServer: item('plugin-state.server', 'https://webchem.ncbr.muni.cz/molstar-state'),
CurrentServer: item('plugin-state.server', 'https://webchem.ncbr.muni.cz/molstar-state'),
HistoryCapacity: item('history-capacity.server', 5)
},
VolumeStreaming: {
Enabled: item('volume-streaming.enabled', true),
DefaultServer: item('volume-streaming.server', 'https://ds.litemol.org'),
CanStream: item('volume-streaming.can-stream', function (s, plugin) {
return s.models.length === 1 && structure_1.Model.probablyHasDensityMap(s.models[0]);
}),
EmdbHeaderServer: item('volume-streaming.emdb-header-server', 'https://ftp.wwpdb.org/pub/emdb/structures'),
},
Viewport: {
ShowExpand: item('viewer.show-expand-button', true),
ShowControls: item('viewer.show-controls-button', true),
ShowSettings: item('viewer.show-settings-button', true),
ShowSelectionMode: item('viewer.show-selection-model-button', true),
ShowAnimation: item('viewer.show-animation-button', true),
},
Download: {
DefaultPdbProvider: item('download.default-pdb-provider', 'pdbe'),
DefaultEmdbProvider: item('download.default-emdb-provider', 'pdbe'),
},
Structure: {
SizeThresholds: item('structure.size-thresholds', structure_1.Structure.DefaultSizeThresholds),
DefaultRepresentationPresetParams: item('structure.default-representation-preset-params', {})
}
};
var PluginConfigManager = /** @class */ (function () {
function PluginConfigManager(initial) {
var _this = this;
this._config = new Map();
if (!initial)
return;
initial.forEach(function (_a) {
var k = _a[0], v = _a[1];
return _this._config.set(k, v);
});
}
PluginConfigManager.prototype.get = function (key) {
if (!this._config.has(key))
return key.defaultValue;
return this._config.get(key);
};
PluginConfigManager.prototype.set = function (key, value) {
this._config.set(key, value);
};
PluginConfigManager.prototype.delete = function (key) {
this._config.delete(key);
};
return PluginConfigManager;
}());
exports.PluginConfigManager = PluginConfigManager;
//# sourceMappingURL=config.js.map
;