@jbrowse/plugin-linear-genome-view 1.6.7 → 1.6.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-linear-genome-view.esm.js","sources":["../../../node_modules/regenerator-runtime/runtime.js","../src/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.ts","../src/BaseLinearDisplay/components/Block.tsx","../src/BaseLinearDisplay/components/LinearBlocks.tsx","../src/BaseLinearDisplay/components/BaseLinearDisplay.tsx","../src/BaseLinearDisplay/components/ServerSideRenderedBlockContent.tsx","../src/BaseLinearDisplay/models/serverSideRenderedBlock.ts","../src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx","../src/LinearBareDisplay/configSchema.ts","../src/LinearBareDisplay/model.ts","../src/LinearGenomeView/util.ts","../src/LinearGenomeView/components/Ruler.tsx","../src/LinearGenomeView/components/OverviewRubberBand.tsx","../src/LinearGenomeView/components/OverviewScaleBar.tsx","../src/LinearGenomeView/components/LinearGenomeViewSvg.tsx","../src/LinearGenomeView/components/util.ts","../src/LinearGenomeView/components/RefNameAutocomplete.tsx","../src/LinearGenomeView/components/SearchBox.tsx","../src/LinearGenomeView/components/ExportSvgDialog.tsx","../src/LinearGenomeView/components/ZoomControls.tsx","../src/LinearGenomeView/components/Header.tsx","../src/LinearGenomeView/components/TrackLabel.tsx","../src/LinearGenomeView/components/TrackContainer.tsx","../src/LinearGenomeView/components/RubberBand.tsx","../src/LinearGenomeView/components/ScaleBar.tsx","../src/LinearGenomeView/components/VerticalGuides.tsx","../src/LinearGenomeView/components/CenterLine.tsx","../src/LinearGenomeView/components/TracksContainer.tsx","../src/LinearGenomeView/components/ImportForm.tsx","../src/LinearGenomeView/components/MiniControls.tsx","../src/LinearGenomeView/components/SequenceDialog.tsx","../src/LinearGenomeView/components/SearchResultsDialog.tsx","../src/LinearGenomeView/components/LinearGenomeView.tsx","../src/LinearGenomeView/index.tsx","../src/LinearBasicDisplay/model.ts","../src/LinearBasicDisplay/configSchema.ts","../src/index.ts","../src/LinearGenomeView/components/HelpDialog.tsx","../src/LinearBasicDisplay/components/SetMaxHeight.tsx"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\nexport const baseLinearDisplayConfigSchema = ConfigurationSchema(\n 'BaseLinearDisplay',\n {\n maxFeatureScreenDensity: {\n type: 'number',\n description:\n 'maximum features per pixel that is displayed in the view, used if byte size estimates not available',\n defaultValue: 0.3,\n },\n fetchSizeLimit: {\n type: 'number',\n defaultValue: 1_000_000,\n description:\n \"maximum data to attempt to download for a given track, used if adapter doesn't specify one\",\n },\n },\n { explicitIdentifier: 'displayId' },\n)\n","import React from 'react'\nimport { BaseBlock } from '@jbrowse/core/util/blockTypes'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { observer } from 'mobx-react'\n\nconst useStyles = makeStyles(theme => ({\n contentBlock: {\n position: 'relative',\n minHeight: '100%',\n boxSizing: 'border-box',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n elidedBlock: {\n minHeight: '100%',\n boxSizing: 'border-box',\n backgroundColor: '#999',\n backgroundImage:\n 'repeating-linear-gradient(90deg, transparent, transparent 1px, rgba(255,255,255,.5) 1px, rgba(255,255,255,.5) 3px)',\n },\n interRegionPaddingBlock: {\n minHeight: '100%',\n backgroundColor: theme.palette.text.primary,\n },\n boundaryPaddingBlock: {\n minHeight: '100%',\n backgroundColor: theme.palette.action.disabledBackground,\n },\n}))\n\nconst ContentBlock = observer(\n ({ block, children }: { block: BaseBlock; children: React.ReactNode }) => {\n const classes = useStyles()\n const { widthPx } = block\n return (\n <div style={{ width: widthPx }} className={classes.contentBlock}>\n {children}\n </div>\n )\n },\n)\n\nfunction ElidedBlock({ width }: { width: number }) {\n const classes = useStyles()\n return <div className={classes.elidedBlock} style={{ width }} />\n}\n\nfunction InterRegionPaddingBlock({\n boundary,\n width,\n style = {},\n}: {\n boundary: boolean\n width: number\n style?: React.CSSProperties\n}) {\n const classes = useStyles()\n return (\n <div\n style={{\n ...style,\n width,\n }}\n className={\n boundary\n ? classes.boundaryPaddingBlock\n : classes.interRegionPaddingBlock\n }\n />\n )\n}\n\nexport { ContentBlock, ElidedBlock, InterRegionPaddingBlock }\n","import React from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport {\n ContentBlock,\n ElidedBlock,\n InterRegionPaddingBlock,\n} from '@jbrowse/core/util/blockTypes'\nimport { BaseLinearDisplayModel } from '../models/BaseLinearDisplayModel'\n\nimport {\n ContentBlock as ContentBlockComponent,\n ElidedBlock as ElidedBlockComponent,\n InterRegionPaddingBlock as InterRegionPaddingBlockComponent,\n} from './Block'\nimport { LinearGenomeViewModel } from '../../LinearGenomeView'\n\nconst useStyles = makeStyles({\n linearBlocks: {\n whiteSpace: 'nowrap',\n textAlign: 'left',\n position: 'absolute',\n minHeight: '100%',\n display: 'flex',\n },\n heightOverflowed: {\n position: 'absolute',\n color: 'rgb(77,77,77)',\n borderBottom: '2px solid rgb(77,77,77)',\n textShadow: 'white 0px 0px 1px',\n whiteSpace: 'nowrap',\n width: '100%',\n fontWeight: 'bold',\n textAlign: 'center',\n zIndex: 2000,\n boxSizing: 'border-box',\n },\n})\nconst RenderedBlocks = observer(\n ({ model }: { model: BaseLinearDisplayModel }) => {\n const classes = useStyles()\n const { blockDefinitions, blockState } = model\n return (\n <>\n {blockDefinitions.map(block => {\n if (block instanceof ContentBlock) {\n const state = blockState.get(block.key)\n\n return (\n <ContentBlockComponent\n block={block}\n key={`${model.id}-${block.key}`}\n >\n {state && state.ReactComponent ? (\n <state.ReactComponent model={state} />\n ) : null}\n {state && state.maxHeightReached ? (\n <div\n className={classes.heightOverflowed}\n style={{\n top: state.layout.getTotalHeight() - 16,\n pointerEvents: 'none',\n height: 16,\n }}\n >\n Max height reached\n </div>\n ) : null}\n </ContentBlockComponent>\n )\n }\n if (block instanceof ElidedBlock) {\n return (\n <ElidedBlockComponent\n key={`${model.id}-${block.key}`}\n width={block.widthPx}\n />\n )\n }\n if (block instanceof InterRegionPaddingBlock) {\n return (\n <InterRegionPaddingBlockComponent\n key={block.key}\n width={block.widthPx}\n style={{ background: 'none' }}\n boundary={block.variant === 'boundary'}\n />\n )\n }\n throw new Error(`invalid block type ${typeof block}`)\n })}\n </>\n )\n },\n)\nfunction LinearBlocks({ model }: { model: BaseLinearDisplayModel }) {\n const classes = useStyles()\n const { blockDefinitions } = model\n const viewModel = getContainingView(model) as LinearGenomeViewModel\n return (\n <div\n data-testid=\"Blockset\"\n className={classes.linearBlocks}\n style={{\n left: blockDefinitions.offsetPx - viewModel.offsetPx,\n }}\n >\n <RenderedBlocks model={model} />\n </div>\n )\n}\n\nexport { RenderedBlocks, useStyles }\nexport default observer(LinearBlocks)\n","import React, { useState, useRef, useMemo } from 'react'\nimport { Portal, alpha, useTheme, makeStyles } from '@material-ui/core'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { Menu } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\nimport { usePopper } from 'react-popper'\n\n// locals\nimport LinearBlocks from './LinearBlocks'\nimport { BaseLinearDisplayModel } from '../models/BaseLinearDisplayModel'\n\nfunction round(value: number) {\n return Math.round(value * 1e5) / 1e5\n}\n\nconst useStyles = makeStyles(theme => ({\n display: {\n position: 'relative',\n whiteSpace: 'nowrap',\n textAlign: 'left',\n width: '100%',\n minHeight: '100%',\n },\n\n // these styles come from\n // https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Tooltip/Tooltip.js\n tooltip: {\n pointerEvents: 'none',\n backgroundColor: alpha(theme.palette.grey[700], 0.9),\n borderRadius: theme.shape.borderRadius,\n color: theme.palette.common.white,\n fontFamily: theme.typography.fontFamily,\n padding: '4px 8px',\n fontSize: theme.typography.pxToRem(12),\n lineHeight: `${round(14 / 10)}em`,\n maxWidth: 300,\n wordWrap: 'break-word',\n },\n}))\n\nconst TooltipContents = React.forwardRef<\n HTMLDivElement,\n { message: React.ReactNode | string }\n>(({ message }: { message: React.ReactNode | string }, ref) => {\n return <div ref={ref}>{message}</div>\n})\n\nconst Tooltip = observer(\n ({\n model,\n clientMouseCoord,\n }: {\n model: BaseLinearDisplayModel\n clientMouseCoord: Coord\n }) => {\n const classes = useStyles()\n const { featureUnderMouse } = model\n const [width, setWidth] = useState(0)\n\n const [popperElt, setPopperElt] = useState<HTMLDivElement | null>(null)\n\n // must be memoized a la https://github.com/popperjs/react-popper/issues/391\n const virtElement = useMemo(\n () => ({\n getBoundingClientRect: () => {\n const x = clientMouseCoord[0] + width / 2 + 20\n const y = clientMouseCoord[1]\n return {\n top: y,\n left: x,\n bottom: y,\n right: x,\n width: 0,\n height: 0,\n x,\n y,\n toJSON() {},\n }\n },\n }),\n [clientMouseCoord, width],\n )\n const { styles, attributes } = usePopper(virtElement, popperElt)\n\n const contents = featureUnderMouse\n ? getConf(model, 'mouseover', { feature: featureUnderMouse })\n : undefined\n\n return featureUnderMouse && contents ? (\n <Portal>\n <div\n ref={setPopperElt}\n className={classes.tooltip}\n // zIndex needed to go over widget drawer\n style={{ ...styles.popper, zIndex: 100000 }}\n {...attributes.popper}\n >\n <TooltipContents\n ref={elt => setWidth(elt?.getBoundingClientRect().width || 0)}\n message={contents}\n />\n </div>\n </Portal>\n ) : null\n },\n)\n\ntype Coord = [number, number]\nconst BaseLinearDisplay = observer(\n (props: { model: BaseLinearDisplayModel; children?: React.ReactNode }) => {\n const classes = useStyles()\n const theme = useTheme()\n const ref = useRef<HTMLDivElement>(null)\n const [clientRect, setClientRect] = useState<ClientRect>()\n const [offsetMouseCoord, setOffsetMouseCoord] = useState<Coord>([0, 0])\n const [clientMouseCoord, setClientMouseCoord] = useState<Coord>([0, 0])\n const [contextCoord, setContextCoord] = useState<Coord>()\n const { model, children } = props\n const {\n TooltipComponent,\n DisplayMessageComponent,\n contextMenuItems,\n height,\n setContextMenuFeature,\n } = model\n\n return (\n <div\n ref={ref}\n data-testid={`display-${getConf(model, 'displayId')}`}\n className={classes.display}\n onContextMenu={event => {\n event.preventDefault()\n if (contextCoord) {\n // There's already a context menu open, so close it\n setContextCoord(undefined)\n } else if (ref.current) {\n setContextCoord([event.clientX, event.clientY])\n }\n }}\n onMouseMove={event => {\n if (ref.current) {\n const rect = ref.current.getBoundingClientRect()\n setOffsetMouseCoord([\n event.clientX - rect.left,\n event.clientY - rect.top,\n ])\n setClientMouseCoord([event.clientX, event.clientY])\n setClientRect(rect)\n }\n }}\n role=\"presentation\"\n >\n {DisplayMessageComponent ? (\n <DisplayMessageComponent model={model} />\n ) : (\n <LinearBlocks {...props} />\n )}\n {children}\n\n <TooltipComponent\n model={model}\n height={height}\n offsetMouseCoord={offsetMouseCoord}\n clientMouseCoord={clientMouseCoord}\n clientRect={clientRect}\n mouseCoord={offsetMouseCoord}\n />\n\n <Menu\n open={Boolean(contextCoord) && Boolean(contextMenuItems().length)}\n onMenuItemClick={(_, callback) => {\n callback()\n setContextCoord(undefined)\n }}\n onClose={() => {\n setContextCoord(undefined)\n setContextMenuFeature(undefined)\n }}\n TransitionProps={{\n onExit: () => {\n setContextCoord(undefined)\n setContextMenuFeature(undefined)\n },\n }}\n anchorReference=\"anchorPosition\"\n anchorPosition={\n contextCoord\n ? { top: contextCoord[1], left: contextCoord[0] }\n : undefined\n }\n style={{ zIndex: theme.zIndex.tooltip }}\n menuItems={contextMenuItems()}\n data-testid=\"base_linear_display_context_menu\"\n />\n </div>\n )\n },\n)\n\nexport default BaseLinearDisplay\nexport { Tooltip }\n","import React, { useEffect, useState } from 'react'\nimport Typography from '@material-ui/core/Typography'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { observer } from 'mobx-react'\nimport { getParent } from 'mobx-state-tree'\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\nimport Button from '@material-ui/core/Button'\nimport RefreshIcon from '@material-ui/icons/Refresh'\n\nconst useStyles = makeStyles(theme => ({\n loading: {\n paddingLeft: '0.6em',\n backgroundColor: theme.palette.action.disabledBackground,\n backgroundImage:\n 'repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,.5) 5px, rgba(255,255,255,.5) 10px)',\n height: '100%',\n width: '100%',\n pointerEvents: 'none',\n textAlign: 'center',\n },\n blockMessage: {\n width: '100%',\n background: theme.palette.action.disabledBackground,\n padding: theme.spacing(2),\n pointerEvents: 'none',\n textAlign: 'center',\n },\n blockError: {\n padding: theme.spacing(2),\n width: '100%',\n whiteSpace: 'normal',\n color: theme.palette.error.main,\n overflowY: 'auto',\n },\n blockReactNodeMessage: {\n width: '100%',\n background: theme.palette.action.disabledBackground,\n padding: theme.spacing(2),\n textAlign: 'center',\n },\n dots: {\n '&::after': {\n display: 'inline-block',\n animation: '$ellipsis 1.5s infinite',\n content: '\".\"',\n width: '1em',\n textAlign: 'left',\n },\n },\n '@keyframes ellipsis': {\n '0%': {\n content: '\".\"',\n },\n '33%': {\n content: '\"..\"',\n },\n '66%': {\n content: '\"...\"',\n },\n },\n}))\n\nfunction Repeater({ children }: { children: React.ReactNode }) {\n return (\n <div style={{ display: 'flex' }}>\n {children}\n {children}\n </div>\n )\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst LoadingMessage = observer(({ model }: { model: any }) => {\n // only show the loading message after 300ms to prevent excessive flickering\n const [shown, setShown] = useState(false)\n const classes = useStyles()\n useEffect(() => {\n let killed = false\n const timeout = setTimeout(() => {\n if (!killed) {\n setShown(true)\n }\n }, 300)\n return () => {\n clearTimeout(timeout)\n killed = true\n }\n }, [])\n\n const { status: blockStatus } = model\n const { message: displayStatus } = getParent(model, 2)\n const status = displayStatus || blockStatus\n return (\n <>\n {shown ? (\n <div className={classes.loading}>\n <Typography className={classes.dots} variant=\"body2\">\n {status ? `${status}` : 'Loading'}\n </Typography>\n </div>\n ) : null}\n </>\n )\n})\n\nfunction BlockMessage({\n messageContent,\n}: {\n messageContent: string | React.ReactNode\n}) {\n const classes = useStyles()\n\n return React.isValidElement(messageContent) ? (\n <div className={classes.blockReactNodeMessage}>{messageContent}</div>\n ) : (\n <Typography variant=\"body2\" className={classes.blockMessage}>\n {messageContent}\n </Typography>\n )\n}\n\nfunction BlockError({\n error,\n reload,\n displayHeight,\n}: {\n error: Error\n reload: () => void\n displayHeight: number\n}) {\n const classes = useStyles()\n return (\n <div className={classes.blockError} style={{ height: displayHeight }}>\n {reload ? (\n <Button\n data-testid=\"reload_button\"\n onClick={reload}\n startIcon={<RefreshIcon />}\n >\n Reload\n </Button>\n ) : null}\n <Typography color=\"error\" variant=\"body2\" display=\"inline\">\n {`${error}`}\n </Typography>\n </div>\n )\n}\n\nconst ServerSideRenderedBlockContent = observer(\n ({\n model,\n }: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n model: any\n }) => {\n if (model.error) {\n return (\n <Repeater>\n <BlockError\n error={model.error}\n reload={model.reload}\n displayHeight={getParentRenderProps(model).displayModel.height}\n />\n </Repeater>\n )\n }\n if (model.message) {\n return (\n <Repeater>\n <BlockMessage messageContent={model.message} />\n </Repeater>\n )\n }\n if (!model.filled) {\n return (\n <Repeater>\n <LoadingMessage model={model} />\n </Repeater>\n )\n }\n return model.reactElement\n },\n)\n\nexport default ServerSideRenderedBlockContent\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { types, getParent, isAlive, cast, Instance } from 'mobx-state-tree'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { Region } from '@jbrowse/core/util/types/mst'\nimport {\n AbstractDisplayModel,\n isRetryException,\n} from '@jbrowse/core/util/types'\nimport React from 'react'\n\nimport {\n assembleLocString,\n makeAbortableReaction,\n getSession,\n getContainingDisplay,\n} from '@jbrowse/core/util'\nimport {\n getTrackAssemblyNames,\n getRpcSessionId,\n} from '@jbrowse/core/util/tracks'\n\nimport ServerSideRenderedBlockContent from '../components/ServerSideRenderedBlockContent'\n\n// the MST state of a single server-side-rendered block in a display\nconst blockState = types\n .model('BlockState', {\n key: types.string,\n region: Region,\n reloadFlag: 0,\n isLeftEndOfDisplayedRegion: false,\n isRightEndOfDisplayedRegion: false,\n })\n // NOTE: all this volatile stuff has to be filled in at once, so that it stays consistent\n .volatile(() => ({\n renderInProgress: undefined as AbortController | undefined,\n filled: false,\n reactElement: undefined as React.ReactElement | undefined,\n features: undefined as Map<string, Feature> | undefined,\n layout: undefined as any,\n status: '',\n error: undefined as unknown,\n message: undefined as string | undefined,\n maxHeightReached: false,\n ReactComponent: ServerSideRenderedBlockContent,\n renderProps: undefined as any,\n }))\n .actions(self => {\n let renderInProgress: undefined | AbortController\n return {\n doReload() {\n self.reloadFlag = self.reloadFlag + 1\n },\n afterAttach() {\n const display = getContainingDisplay(self)\n makeAbortableReaction(\n self as any,\n renderBlockData,\n renderBlockEffect as any, // reaction doesn't expect async here\n {\n name: `${display.id}/${assembleLocString(self.region)} rendering`,\n delay: display.renderDelay,\n fireImmediately: true,\n },\n this.setLoading,\n this.setRendered,\n this.setError,\n )\n },\n setStatus(message: string) {\n self.status = message\n },\n setLoading(abortController: AbortController) {\n if (renderInProgress !== undefined) {\n if (!renderInProgress.signal.aborted) {\n renderInProgress.abort()\n }\n }\n self.filled = false\n self.message = undefined\n self.reactElement = undefined\n self.features = undefined\n self.layout = undefined\n self.error = undefined\n self.maxHeightReached = false\n self.renderProps = undefined\n renderInProgress = abortController\n },\n setMessage(messageText: string) {\n if (renderInProgress && !renderInProgress.signal.aborted) {\n renderInProgress.abort()\n }\n self.filled = false\n self.message = messageText\n self.reactElement = undefined\n self.features = undefined\n self.layout = undefined\n self.error = undefined\n self.maxHeightReached = false\n self.renderProps = undefined\n renderInProgress = undefined\n },\n setRendered(\n props:\n | {\n reactElement: React.ReactElement\n features: Map<string, Feature>\n layout: any\n maxHeightReached: boolean\n renderProps: any\n }\n | undefined,\n ) {\n if (!props) {\n return\n }\n const {\n reactElement,\n features,\n layout,\n maxHeightReached,\n renderProps,\n } = props\n self.filled = true\n self.message = undefined\n self.reactElement = reactElement\n self.features = features\n self.layout = layout\n self.error = undefined\n self.maxHeightReached = maxHeightReached\n self.renderProps = renderProps\n renderInProgress = undefined\n },\n setError(error: Error | unknown) {\n console.error(error)\n if (renderInProgress && !renderInProgress.signal.aborted) {\n renderInProgress.abort()\n }\n // the rendering failed for some reason\n self.filled = false\n self.message = undefined\n self.reactElement = undefined\n self.features = undefined\n self.layout = undefined\n self.maxHeightReached = false\n self.error = error\n self.renderProps = undefined\n renderInProgress = undefined\n if (isRetryException(error as Error)) {\n this.reload()\n }\n },\n reload() {\n self.renderInProgress = undefined\n self.filled = false\n self.reactElement = undefined\n self.features = undefined\n self.layout = undefined\n self.error = undefined\n self.message = undefined\n self.maxHeightReached = false\n self.ReactComponent = ServerSideRenderedBlockContent\n self.renderProps = undefined\n getParent(self, 2).reload()\n },\n beforeDestroy() {\n if (renderInProgress && !renderInProgress.signal.aborted) {\n renderInProgress.abort()\n }\n const display = getContainingDisplay(self)\n const { rpcManager } = getSession(self)\n const { rendererType } = display\n const { renderArgs } = renderBlockData(cast(self))\n // renderArgs can be undefined if an error occured in this block\n if (renderArgs) {\n rendererType\n .freeResourcesInClient(\n rpcManager,\n JSON.parse(JSON.stringify(renderArgs)),\n )\n .catch((e: Error) => {\n // just console.error if it's something while it's being destroyed\n console.warn('Error while destroying block', e)\n })\n }\n },\n }\n })\n\nexport default blockState\nexport type BlockStateModel = typeof blockState\nexport type BlockModel = Instance<BlockStateModel>\n\n// calls the render worker to render the block content not using a flow for\n// this, because the flow doesn't work with autorun\nexport function renderBlockData(\n self: Instance<BlockStateModel>,\n optDisplay?: AbstractDisplayModel,\n) {\n try {\n const display = optDisplay || (getContainingDisplay(self) as any)\n const { assemblyManager, rpcManager } = getSession(display)\n const { adapterConfig, rendererType, error, parentTrack } = display\n const assemblyNames = getTrackAssemblyNames(parentTrack)\n const regionAsm = self.region.assemblyName\n if (\n !assemblyNames.includes(regionAsm) &&\n !assemblyNames.find(name => assemblyManager.get(name)?.hasName(regionAsm))\n ) {\n throw new Error(\n `region assembly (${regionAsm}) does not match track assemblies (${assemblyNames})`,\n )\n }\n\n const renderProps = display.renderProps()\n const { config } = renderProps\n\n // This line is to trigger the mobx reaction when the config changes\n // It won't trigger the reaction if it doesn't think we're accessing it\n readConfObject(config)\n\n const sessionId = getRpcSessionId(display)\n const cannotBeRenderedReason = display.regionCannotBeRendered(self.region)\n\n return {\n rendererType,\n rpcManager,\n renderProps,\n cannotBeRenderedReason,\n displayError: error,\n renderArgs: {\n statusCallback: (message: string) => {\n if (isAlive(self)) {\n self.setStatus(message)\n }\n },\n assemblyName: self.region.assemblyName,\n regions: [self.region],\n adapterConfig,\n rendererType: rendererType.name,\n sessionId,\n blockKey: self.key,\n reloadFlag: self.reloadFlag,\n timeout: 1000000, // 10000,\n },\n }\n } catch (e) {\n return { displayError: e }\n }\n}\n\ninterface RenderProps {\n displayError: Error\n rendererType: any\n renderProps: { [key: string]: any }\n rpcManager: { call: Function }\n cannotBeRenderedReason: string\n renderArgs: { [key: string]: any }\n}\n\ninterface ErrorProps {\n displayError: string\n}\n\nasync function renderBlockEffect(\n props: RenderProps | ErrorProps,\n signal: AbortSignal,\n self: Instance<BlockStateModel>,\n) {\n const {\n rendererType,\n renderProps,\n rpcManager,\n renderArgs,\n cannotBeRenderedReason,\n displayError,\n } = props as RenderProps\n if (!isAlive(self)) {\n return undefined\n }\n\n if (displayError) {\n self.setError(displayError)\n return undefined\n }\n if (cannotBeRenderedReason) {\n self.setMessage(cannotBeRenderedReason)\n return undefined\n }\n\n if (renderProps.notReady) {\n return undefined\n }\n\n const { reactElement, features, layout, maxHeightReached } =\n await rendererType.renderInClient(rpcManager, {\n ...renderArgs,\n ...renderProps,\n signal,\n })\n return {\n reactElement,\n features,\n layout,\n maxHeightReached,\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react'\nimport { Button, Typography } from '@material-ui/core'\nimport { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport {\n isAbortException,\n getContainingView,\n getSession,\n isSelectionContainer,\n isSessionModelWithWidgets,\n} from '@jbrowse/core/util'\nimport { Stats } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { BaseBlock } from '@jbrowse/core/util/blockTypes'\nimport { Region } from '@jbrowse/core/util/types'\nimport CompositeMap from '@jbrowse/core/util/compositeMap'\nimport { Feature, isFeature } from '@jbrowse/core/util/simpleFeature'\nimport {\n getParentRenderProps,\n getRpcSessionId,\n} from '@jbrowse/core/util/tracks'\nimport { autorun } from 'mobx'\nimport { addDisposer, isAlive, types, Instance } from 'mobx-state-tree'\n// icons\nimport MenuOpenIcon from '@material-ui/icons/MenuOpen'\n\nimport { LinearGenomeViewModel, ExportSvgOptions } from '../../LinearGenomeView'\nimport { Tooltip } from '../components/BaseLinearDisplay'\nimport BlockState, { renderBlockData } from './serverSideRenderedBlock'\n\ntype LGV = LinearGenomeViewModel\n\nexport interface Layout {\n minX: number\n minY: number\n maxX: number\n maxY: number\n name: string\n}\n\n// stabilize clipid under test for snapshot\nfunction getId(id: string, index: number) {\n const isJest = typeof jest === 'undefined'\n return `clip-${isJest ? id : 'jest'}-${index}`\n}\n\ntype LayoutRecord = [number, number, number, number]\n\nfunction getDisplayStr(totalBytes: number) {\n let displayBp\n if (Math.floor(totalBytes / 1000000) > 0) {\n displayBp = `${parseFloat((totalBytes / 1000000).toPrecision(3))} Mb`\n } else if (Math.floor(totalBytes / 1000) > 0) {\n displayBp = `${parseFloat((totalBytes / 1000).toPrecision(3))} Kb`\n } else {\n displayBp = `${Math.floor(totalBytes)} bytes`\n }\n return displayBp\n}\n\nconst minDisplayHeight = 20\nconst defaultDisplayHeight = 100\n\nexport const BaseLinearDisplay = types\n .compose(\n 'BaseLinearDisplay',\n BaseDisplay,\n types.model({\n height: types.optional(\n types.refinement(\n 'displayHeight',\n types.number,\n n => n >= minDisplayHeight,\n ),\n defaultDisplayHeight,\n ),\n blockState: types.map(BlockState),\n userBpPerPxLimit: types.maybe(types.number),\n userByteSizeLimit: types.maybe(types.number),\n }),\n )\n .volatile(() => ({\n currBpPerPx: 0,\n message: '',\n featureIdUnderMouse: undefined as undefined | string,\n contextMenuFeature: undefined as undefined | Feature,\n scrollTop: 0,\n estimatedRegionStatsP: undefined as undefined | Promise<Stats>,\n estimatedRegionStats: undefined as undefined | Stats,\n }))\n .views(self => ({\n get blockType(): 'staticBlocks' | 'dynamicBlocks' {\n return 'staticBlocks'\n },\n get blockDefinitions() {\n const { blockType } = this\n const view = getContainingView(self) as LGV\n if (!view.initialized) {\n throw new Error('view not initialized yet')\n }\n return view[blockType]\n },\n }))\n .views(self => ({\n /**\n * how many milliseconds to wait for the display to\n * \"settle\" before re-rendering a block\n */\n get renderDelay() {\n return 50\n },\n\n get TooltipComponent(): React.FC<any> {\n return Tooltip as unknown as React.FC\n },\n\n /**\n * returns a string feature ID if the globally-selected object\n * is probably a feature\n */\n get selectedFeatureId() {\n if (isAlive(self)) {\n const { selection } = getSession(self)\n // does it quack like a feature?\n if (isFeature(selection)) {\n return selection.id()\n }\n }\n return undefined\n },\n /**\n * if a display-level message should be displayed instead of the blocks,\n * make this return a react component\n */\n get DisplayMessageComponent() {\n return undefined as undefined | React.FC<any>\n },\n }))\n .views(self => ({\n /**\n * a CompositeMap of `featureId -> feature obj` that\n * just looks in all the block data for that feature\n */\n get features() {\n const featureMaps = []\n for (const block of self.blockState.values()) {\n if (block && block.features) {\n featureMaps.push(block.features)\n }\n }\n return new CompositeMap(featureMaps)\n },\n\n get featureUnderMouse() {\n const feat = self.featureIdUnderMouse\n return feat ? this.features.get(feat) : undefined\n },\n\n getFeatureOverlapping(blockKey: string, x: number, y: number) {\n return self.blockState.get(blockKey)?.layout?.getByCoord(x, y)\n },\n\n getFeatureByID(blockKey: string, id: string): LayoutRecord | undefined {\n return self.blockState.get(blockKey)?.layout?.getByID(id)\n },\n\n // if block key is not supplied, can look at all blocks\n searchFeatureByID(id: string): LayoutRecord | undefined {\n let ret\n self.blockState.forEach(block => {\n const val = block?.layout?.getByID(id)\n if (val) {\n ret = val\n }\n })\n return ret\n },\n\n get currentBytesRequested() {\n return self.estimatedRegionStats?.bytes || 0\n },\n\n get currentFeatureScreenDensity() {\n const view = getContainingView(self) as LGV\n return (self.estimatedRegionStats?.featureDensity || 0) * view.bpPerPx\n },\n\n get maxFeatureScreenDensity() {\n return getConf(self, 'maxFeatureScreenDensity')\n },\n get estimatedStatsReady() {\n return !!self.estimatedRegionStats\n },\n\n get maxAllowableBytes() {\n return (\n self.userByteSizeLimit ||\n self.estimatedRegionStats?.fetchSizeLimit ||\n (getConf(self, 'fetchSizeLimit') as number)\n )\n },\n }))\n .actions(self => ({\n // base display reload does nothing, see specialized displays for details\n setMessage(message: string) {\n self.message = message\n },\n\n afterAttach() {\n // watch the parent's blocks to update our block state when they change,\n // then we recreate the blocks on our own model (creating and deleting to\n // match the parent blocks)\n const blockWatchDisposer = autorun(() => {\n const blocksPresent: { [key: string]: boolean } = {}\n const view = getContainingView(self) as LGV\n if (view.initialized) {\n self.blockDefinitions.contentBlocks.forEach(block => {\n blocksPresent[block.key] = true\n if (!self.blockState.has(block.key)) {\n this.addBlock(block.key, block)\n }\n })\n self.blockState.forEach((_, key) => {\n if (!blocksPresent[key]) {\n this.deleteBlock(key)\n }\n })\n }\n })\n\n addDisposer(self, blockWatchDisposer)\n },\n\n estimateRegionsStats(\n regions: Region[],\n opts: {\n headers?: Record<string, string>\n signal?: AbortSignal\n filters?: string[]\n },\n ) {\n if (self.estimatedRegionStatsP) {\n return self.estimatedRegionStatsP\n }\n\n const { rpcManager } = getSession(self)\n const { adapterConfig } = self\n const sessionId = getRpcSessionId(self)\n\n const params = {\n sessionId,\n regions,\n adapterConfig,\n statusCallback: (message: string) => {\n if (isAlive(self)) {\n this.setMessage(message)\n }\n },\n ...opts,\n }\n\n self.estimatedRegionStatsP = rpcManager\n .call(sessionId, 'CoreEstimateRegionStats', params)\n .catch(e => {\n this.setRegionStatsP(undefined)\n throw e\n }) as Promise<Stats>\n\n return self.estimatedRegionStatsP\n },\n setRegionStatsP(p?: Promise<Stats>) {\n self.estimatedRegionStatsP = p\n },\n setRegionStats(estimatedRegionStats?: Stats) {\n self.estimatedRegionStats = estimatedRegionStats\n },\n clearRegionStats() {\n self.estimatedRegionStatsP = undefined\n self.estimatedRegionStats = undefined\n },\n setHeight(displayHeight: number) {\n if (displayHeight > minDisplayHeight) {\n self.height = displayHeight\n } else {\n self.height = minDisplayHeight\n }\n return self.height\n },\n resizeHeight(distance: number) {\n const oldHeight = self.height\n const newHeight = this.setHeight(self.height + distance)\n return newHeight - oldHeight\n },\n\n setScrollTop(scrollTop: number) {\n self.scrollTop = scrollTop\n },\n\n updateStatsLimit(stats: Stats) {\n const view = getContainingView(self) as LGV\n if (stats.bytes) {\n self.userByteSizeLimit = stats.bytes\n } else {\n self.userBpPerPxLimit = view.bpPerPx\n }\n },\n\n addBlock(key: string, block: BaseBlock) {\n self.blockState.set(\n key,\n BlockState.create({\n key,\n region: block.toRegion(),\n }),\n )\n },\n setCurrBpPerPx(n: number) {\n self.currBpPerPx = n\n },\n deleteBlock(key: string) {\n self.blockState.delete(key)\n },\n selectFeature(feature: Feature) {\n const session = getSession(self)\n if (isSessionModelWithWidgets(session)) {\n const featureWidget = session.addWidget(\n 'BaseFeatureWidget',\n 'baseFeature',\n { featureData: feature.toJSON(), view: getContainingView(self) },\n )\n session.showWidget(featureWidget)\n }\n if (isSelectionContainer(session)) {\n session.setSelection(feature)\n }\n },\n clearFeatureSelection() {\n const session = getSession(self)\n session.clearSelection()\n },\n setFeatureIdUnderMouse(feature: string | undefined) {\n self.featureIdUnderMouse = feature\n },\n reload() {\n ;[...self.blockState.values()].map(val => val.doReload())\n },\n setContextMenuFeature(feature?: Feature) {\n self.contextMenuFeature = feature\n },\n }))\n .views(self => ({\n // region is too large if:\n // - stats are ready\n // - region is greater than 20kb (don't warn when zoomed in less than that)\n // - and bytes > max allowed bytes || curr density>max density\n get regionTooLarge() {\n const view = getContainingView(self) as LGV\n if (!self.estimatedStatsReady || view.dynamicBlocks.totalBp < 20_000) {\n return false\n }\n const bpLimitOrDensity = self.userBpPerPxLimit\n ? view.bpPerPx > self.userBpPerPxLimit\n : self.currentFeatureScreenDensity > self.maxFeatureScreenDensity\n\n return (\n self.currentBytesRequested > self.maxAllowableBytes || bpLimitOrDensity\n )\n },\n\n // only shows a message of bytes requested is defined, the feature density\n // based stats don't produce any helpful message besides to zoom in\n get regionTooLargeReason() {\n const req = self.currentBytesRequested\n const max = self.maxAllowableBytes\n\n return req && req > max\n ? `Requested too much data (${getDisplayStr(req)})`\n : ''\n },\n }))\n .actions(self => {\n const { reload: superReload } = self\n\n return {\n async reload() {\n self.setError()\n const aborter = new AbortController()\n const view = getContainingView(self) as LGV\n\n // extra check for contentBlocks.length\n // https://github.com/GMOD/jbrowse-components/issues/2694\n if (!view.initialized || !view.staticBlocks.contentBlocks.length) {\n return\n }\n\n try {\n self.estimatedRegionStatsP = self.estimateRegionsStats(\n view.staticBlocks.contentBlocks,\n { signal: aborter.signal },\n )\n const estimatedRegionStats = await self.estimatedRegionStatsP\n\n if (isAlive(self)) {\n self.setRegionStats(estimatedRegionStats)\n superReload()\n } else {\n return\n }\n } catch (e) {\n self.setError(e)\n }\n },\n afterAttach() {\n // this autorun performs stats estimation\n //\n // the chain of events calls estimateRegionsStats against the data\n // adapter which by default uses featureDensity, but can also respond\n // with a byte size estimate and fetch size limit (data adapter can\n // define what is too much data)\n addDisposer(\n self,\n autorun(\n async () => {\n try {\n const aborter = new AbortController()\n const view = getContainingView(self) as LGV\n\n // extra check for contentBlocks.length\n // https://github.com/GMOD/jbrowse-components/issues/2694\n if (\n !view.initialized ||\n !view.staticBlocks.contentBlocks.length\n ) {\n return\n }\n\n // don't re-estimate featureDensity even if zoom level changes,\n // jbrowse1-style assume it's sort of representative\n if (self.estimatedRegionStats?.featureDensity !== undefined) {\n self.setCurrBpPerPx(view.bpPerPx)\n return\n }\n\n // we estimate stats once at a given zoom level\n if (view.bpPerPx === self.currBpPerPx) {\n return\n }\n\n self.clearRegionStats()\n self.setCurrBpPerPx(view.bpPerPx)\n const statsP = self.estimateRegionsStats(\n view.staticBlocks.contentBlocks,\n { signal: aborter.signal },\n )\n self.setRegionStatsP(statsP)\n const estimatedRegionStats = await statsP\n\n if (isAlive(self)) {\n self.setRegionStats(estimatedRegionStats)\n }\n } catch (e) {\n if (!isAbortException(e) && isAlive(self)) {\n console.error(e)\n self.setError(e)\n }\n }\n },\n { delay: 500 },\n ),\n )\n },\n }\n })\n .views(self => ({\n regionCannotBeRenderedText(_region: Region) {\n return self.regionTooLarge ? 'Force load to see features' : ''\n },\n\n /**\n * @param region -\n * @returns falsy if the region is fine to try rendering. Otherwise,\n * return a react node + string of text.\n * string of text describes why it cannot be rendered\n * react node allows user to force load at current setting\n */\n regionCannotBeRendered(_region: Region) {\n const { regionTooLarge, regionTooLargeReason } = self\n\n if (regionTooLarge) {\n return (\n <>\n <Typography component=\"span\" variant=\"body2\">\n {regionTooLargeReason ? regionTooLargeReason + '. ' : ''}\n Zoom in to see features or{' '}\n </Typography>\n <Button\n data-testid=\"force_reload_button\"\n onClick={() => {\n if (!self.estimatedRegionStats) {\n console.error('No global stats?')\n } else {\n self.updateStatsLimit(self.estimatedRegionStats)\n self.reload()\n }\n }}\n variant=\"outlined\"\n >\n Force Load\n </Button>\n <Typography component=\"span\" variant=\"body2\">\n (force load may be slow)\n </Typography>\n </>\n )\n }\n return undefined\n },\n\n trackMenuItems(): MenuItem[] {\n return []\n },\n\n contextMenuItems() {\n return self.contextMenuFeature\n ? [\n {\n label: 'Open feature details',\n icon: MenuOpenIcon,\n onClick: () => {\n if (self.contextMenuFeature) {\n self.selectFeature(self.contextMenuFeature)\n }\n },\n },\n ]\n : []\n },\n renderProps() {\n const view = getContainingView(self) as LGV\n return {\n ...getParentRenderProps(self),\n notReady:\n self.currBpPerPx !== view.bpPerPx || !self.estimatedRegionStats,\n rpcDriverName: self.rpcDriverName,\n displayModel: self,\n onFeatureClick(_: unknown, featureId: string | undefined) {\n const f = featureId || self.featureIdUnderMouse\n if (!f) {\n self.clearFeatureSelection()\n } else {\n const feature = self.features.get(f)\n if (feature) {\n self.selectFeature(feature)\n }\n }\n },\n onClick() {\n self.clearFeatureSelection()\n },\n // similar to click but opens a menu with further options\n onFeatureContextMenu(_: unknown, featureId: string | undefined) {\n const f = featureId || self.featureIdUnderMouse\n if (!f) {\n self.clearFeatureSelection()\n } else {\n // feature id under mouse passed to context menu\n self.setContextMenuFeature(self.features.get(f))\n }\n },\n\n onMouseMove(_: unknown, featureId: string | undefined) {\n self.setFeatureIdUnderMouse(featureId)\n },\n\n onMouseLeave(_: unknown) {\n self.setFeatureIdUnderMouse(undefined)\n },\n\n onContextMenu() {\n self.setContextMenuFeature(undefined)\n self.clearFeatureSelection()\n },\n }\n },\n }))\n .actions(self => ({\n async renderSvg(opts: ExportSvgOptions & { overrideHeight: number }) {\n const { height, id } = self\n const { overrideHeight } = opts\n const view = getContainingView(self) as LGV\n const { offsetPx: viewOffsetPx, roundedDynamicBlocks, width } = view\n\n const renderings = await Promise.all(\n roundedDynamicBlocks.map(block => {\n const blockState = BlockState.create({\n key: block.key,\n region: block,\n })\n\n // regionCannotBeRendered can return jsx so look for plaintext\n // version, or just get the default if none available\n const cannotBeRenderedReason =\n self.regionCannotBeRenderedText(block) ||\n self.regionCannotBeRendered(block)\n\n if (cannotBeRenderedReason) {\n return {\n reactElement: (\n <>\n <rect x={0} y={0} width={width} height={20} fill=\"#aaa\" />\n <text x={0} y={15}>\n {cannotBeRenderedReason}\n </text>\n </>\n ),\n }\n }\n\n const { rpcManager, renderArgs, renderProps, rendererType } =\n renderBlockData(blockState, self)\n\n return rendererType.renderInClient(rpcManager, {\n ...renderArgs,\n ...renderProps,\n exportSVG: opts,\n })\n }),\n )\n\n return (\n <>\n {renderings.map((rendering, index) => {\n const { offsetPx } = roundedDynamicBlocks[index]\n const offset = offsetPx - viewOffsetPx\n const clipid = getId(id, index)\n return (\n <React.Fragment key={`frag-${index}`}>\n <defs>\n <clipPath id={clipid}>\n <rect\n x={0}\n y={0}\n width={width}\n height={overrideHeight || height}\n />\n </clipPath>\n </defs>\n <g transform={`translate(${offset} 0)`}>\n <g clipPath={`url(#${clipid})`}>\n {React.isValidElement(rendering.reactElement) ? (\n rendering.reactElement\n ) : (\n // eslint-disable-next-line react/no-danger\n <g dangerouslySetInnerHTML={{ __html: rendering.html }} />\n )}\n </g>\n </g>\n </React.Fragment>\n )\n })}\n </>\n )\n },\n }))\n .postProcessSnapshot(self => {\n const { blockState, ...rest } = self\n return rest\n })\n\nexport type BaseLinearDisplayStateModel = typeof BaseLinearDisplay\nexport type BaseLinearDisplayModel = Instance<BaseLinearDisplayStateModel>\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '../BaseLinearDisplay'\n\nexport function configSchemaFactory(pluginManager: PluginManager) {\n return ConfigurationSchema(\n 'LinearBareDisplay',\n { renderer: pluginManager.pluggableConfigSchemaType('renderer') },\n {\n baseConfiguration: baseLinearDisplayConfigSchema,\n explicitlyTyped: true,\n },\n )\n}\n","import {\n AnyConfigurationSchemaType,\n ConfigurationReference,\n} from '@jbrowse/core/configuration/configurationSchema'\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\nimport { types } from 'mobx-state-tree'\nimport { BaseLinearDisplay } from '../BaseLinearDisplay'\n\nexport function stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n return types\n .compose(\n 'LinearBareDisplay',\n BaseLinearDisplay,\n types.model({\n type: types.literal('LinearBareDisplay'),\n configuration: ConfigurationReference(configSchema),\n }),\n )\n\n .views(self => {\n const { renderProps: superRenderProps } = self\n return {\n renderProps() {\n return {\n ...superRenderProps(),\n ...getParentRenderProps(self),\n rpcDriverName: self.rpcDriverName,\n config: self.configuration.renderer,\n }\n },\n\n get rendererTypeName() {\n return self.configuration.renderer.type\n },\n }\n })\n}\n","/**\n * Given a scale ( bp/px ) and minimum distances (px) between major and minor\n * gridlines, return an object like `{ majorPitch: bp, minorPitch: bp }` giving\n * the gridline pitches to use.\n */\nexport function chooseGridPitch(\n scale: number,\n minMajorPitchPx: number,\n minMinorPitchPx: number,\n) {\n scale = Math.abs(scale)\n const minMajorPitchBp = minMajorPitchPx * scale\n const majorMagnitude = parseInt(\n Number(minMajorPitchBp).toExponential().split(/e/i)[1],\n 10,\n )\n\n let majorPitch = 10 ** majorMagnitude\n while (majorPitch < minMajorPitchBp) {\n majorPitch *= 2\n if (majorPitch >= minMajorPitchBp) {\n break\n }\n majorPitch *= 2.5\n }\n\n majorPitch = Math.max(majorPitch, 5)\n\n const majorPitchPx = majorPitch / scale\n\n let minorPitch = 0\n if (!(majorPitch % 10) && majorPitchPx / 10 >= minMinorPitchPx) {\n minorPitch = majorPitch / 10\n } else if (!(majorPitch % 5) && majorPitchPx / 5 >= minMinorPitchPx) {\n minorPitch = majorPitch / 5\n } else if (!(majorPitch % 2) && majorPitchPx / 2 >= minMinorPitchPx) {\n minorPitch = majorPitch / 2\n }\n\n return { majorPitch, minorPitch }\n}\n\nexport function makeTicks(\n start: number,\n end: number,\n bpPerPx: number,\n emitMajor = true,\n emitMinor = true,\n) {\n const gridPitch = chooseGridPitch(bpPerPx, 60, 15)\n\n let minBase = start\n let maxBase = end\n if (minBase === null || maxBase === null) {\n return []\n }\n\n if (bpPerPx < 0) {\n ;[minBase, maxBase] = [maxBase, minBase]\n }\n\n // add 20px additional on the right and left to allow us to draw the ends\n // of labels that lie a little outside our region\n minBase -= Math.abs(20 * bpPerPx) - 1\n maxBase += Math.abs(20 * bpPerPx) + 1\n\n const iterPitch = gridPitch.minorPitch || gridPitch.majorPitch\n let index = 0\n const ticks = []\n for (\n let base = Math.ceil(minBase / iterPitch) * iterPitch;\n base < maxBase;\n base += iterPitch\n ) {\n if (emitMinor && base % (gridPitch.majorPitch * 2)) {\n ticks.push({ type: 'minor', base: base - 1, index })\n index += 1\n } else if (emitMajor && !(base % (gridPitch.majorPitch * 2))) {\n ticks.push({ type: 'major', base: base - 1, index })\n index += 1\n }\n }\n return ticks\n}\n","import { makeStyles } from '@material-ui/core/styles'\nimport { observer } from 'mobx-react'\nimport ReactPropTypes from 'prop-types'\nimport React from 'react'\nimport { makeTicks } from '../util'\n\nfunction mathPower(num: number): string {\n if (num < 999) {\n return String(num)\n }\n return `${mathPower(~~(num / 1000))},${`00${~~(num % 1000)}`.substr(-3, 3)}`\n}\n\nconst useStyles = makeStyles((/* theme */) => ({\n majorTickLabel: {\n fontSize: '11px',\n // fill: theme.palette.text.primary,\n },\n majorTick: {\n stroke: '#555',\n // stroke: theme.palette.text.secondary,\n },\n minorTick: {\n stroke: '#999',\n // stroke: theme.palette.text.hint,\n },\n}))\n\nfunction Ruler({\n start,\n end,\n bpPerPx,\n reversed,\n major,\n minor,\n}: {\n start: number\n end: number\n bpPerPx: number\n reversed?: boolean\n major: boolean\n minor: boolean\n}) {\n const classes = useStyles()\n const ticks = makeTicks(start, end, bpPerPx, major, minor)\n return (\n <>\n {ticks.map(tick => {\n const x = (reversed ? end - tick.base : tick.base - start) / bpPerPx\n return (\n <line\n key={tick.base}\n x1={x}\n x2={x}\n y1={0}\n y2={tick.type === 'major' ? 6 : 4}\n strokeWidth={1}\n stroke={tick.type === 'major' ? '#555' : '#999'}\n className={\n tick.type === 'major' ? classes.majorTick : classes.minorTick\n }\n data-bp={tick.base}\n />\n )\n })}\n {ticks\n .filter(tick => tick.type === 'major')\n .map(tick => {\n const x = (reversed ? end - tick.base : tick.base - start) / bpPerPx\n return (\n <text\n x={x - 3}\n y={7 + 11}\n key={`label-${tick.base}`}\n style={{ fontSize: '11px' }}\n className={classes.majorTickLabel}\n >\n {mathPower(tick.base + 1)}\n </text>\n )\n })}\n </>\n )\n}\n\nRuler.propTypes = {\n start: ReactPropTypes.number.isRequired,\n end: ReactPropTypes.number.isRequired,\n bpPerPx: ReactPropTypes.number.isRequired,\n reversed: ReactPropTypes.bool,\n major: ReactPropTypes.bool,\n minor: ReactPropTypes.bool,\n}\n\nRuler.defaultProps = {\n reversed: false,\n major: true,\n minor: true,\n}\n\nexport default observer(Ruler)\n","import React, { useRef, useEffect, useState } from 'react'\nimport {\n Popover,\n Tooltip,\n Typography,\n makeStyles,\n alpha,\n} from '@material-ui/core'\nimport { getSession, stringify } from '@jbrowse/core/util'\nimport { observer, PropTypes as MobxPropTypes } from 'mobx-react'\nimport ReactPropTypes from 'prop-types'\nimport { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\nimport { LinearGenomeViewModel, HEADER_OVERVIEW_HEIGHT } from '..'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles(theme => {\n const { tertiary, primary } = theme.palette\n const background = tertiary\n ? alpha(tertiary.main, 0.7)\n : alpha(primary.main, 0.7)\n return {\n rubberBand: {\n height: '100%',\n background,\n position: 'absolute',\n zIndex: 10,\n textAlign: 'center',\n overflow: 'hidden',\n },\n rubberBandControl: {\n cursor: 'crosshair',\n width: '100%',\n minHeight: 8,\n },\n rubberBandText: {\n color: tertiary ? tertiary.contrastText : primary.contrastText,\n },\n popover: {\n mouseEvents: 'none',\n cursor: 'crosshair',\n },\n paper: {\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n },\n guide: {\n pointerEvents: 'none',\n height: '100%',\n width: 1,\n position: 'absolute',\n zIndex: 10,\n },\n }\n})\n\nconst HoverTooltip = observer(\n ({\n model,\n open,\n guideX,\n overview,\n }: {\n model: LGV\n open: boolean\n guideX: number\n overview: Base1DViewModel\n }) => {\n const classes = useStyles()\n const { cytobandOffset } = model\n const { assemblyManager } = getSession(model)\n\n const px = overview.pxToBp(guideX - cytobandOffset)\n const assembly = assemblyManager.get(px.assemblyName)\n const cytoband = assembly?.cytobands?.find(\n f =>\n px.coord > f.get('start') &&\n px.coord < f.get('end') &&\n px.refName === assembly.getCanonicalRefName(f.get('refName')),\n )\n\n return (\n <Tooltip\n open={open}\n placement=\"top\"\n title={[stringify(px), cytoband?.get('name')].join(' ')}\n arrow\n >\n <div\n className={classes.guide}\n style={{\n left: guideX,\n }}\n />\n </Tooltip>\n )\n },\n)\n\nfunction OverviewRubberBand({\n model,\n overview,\n ControlComponent = <div />,\n}: {\n model: LGV\n overview: Base1DViewModel\n ControlComponent?: React.ReactElement\n}) {\n const { cytobandOffset } = model\n const [startX, setStartX] = useState<number>()\n const [currentX, setCurrentX] = useState<number>()\n const [guideX, setGuideX] = useState<number>()\n const controlsRef = useRef<HTMLDivElement>(null)\n const rubberBandRef = useRef(null)\n const classes = useStyles()\n const mouseDragging = startX !== undefined\n\n useEffect(() => {\n function globalMouseMove(event: MouseEvent) {\n const ref = controlsRef.current\n if (ref && mouseDragging) {\n const relativeX = event.clientX - ref.getBoundingClientRect().left\n setCurrentX(relativeX)\n }\n }\n\n function globalMouseUp() {\n if (\n controlsRef.current &&\n startX !== undefined &&\n currentX !== undefined\n ) {\n if (Math.abs(currentX - startX) > 3) {\n model.zoomToDisplayedRegions(\n overview.pxToBp(startX - cytobandOffset),\n overview.pxToBp(currentX - cytobandOffset),\n )\n }\n }\n /* handling clicking and centering at a specific Bp */\n if (\n controlsRef.current &&\n startX !== undefined &&\n currentX === undefined\n ) {\n const clickedAt = overview.pxToBp(startX - cytobandOffset)\n model.centerAt(\n Math.round(clickedAt.coord),\n clickedAt.refName,\n clickedAt.index,\n )\n }\n setStartX(undefined)\n setCurrentX(undefined)\n\n if (startX !== undefined) {\n setGuideX(undefined)\n }\n }\n\n function globalKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n setStartX(undefined)\n setCurrentX(undefined)\n }\n }\n\n if (mouseDragging) {\n window.addEventListener('mousemove', globalMouseMove, true)\n window.addEventListener('mouseup', globalMouseUp, true)\n window.addEventListener('keydown', globalKeyDown, true)\n return () => {\n window.removeEventListener('mousemove', globalMouseMove, true)\n window.removeEventListener('mouseup', globalMouseUp, true)\n window.removeEventListener('keydown', globalKeyDown, true)\n }\n }\n return () => {}\n }, [mouseDragging, currentX, startX, model, overview, cytobandOffset])\n\n function mouseDown(event: React.MouseEvent<HTMLDivElement>) {\n event.preventDefault()\n event.stopPropagation()\n if (controlsRef.current) {\n setStartX(\n event.clientX - controlsRef.current.getBoundingClientRect().left,\n )\n }\n }\n\n function mouseMove(event: React.MouseEvent<HTMLDivElement>) {\n if (controlsRef.current) {\n setGuideX(\n event.clientX - controlsRef.current.getBoundingClientRect().left,\n )\n }\n }\n\n function mouseOut() {\n setGuideX(undefined)\n }\n\n if (startX === undefined) {\n return (\n <div style={{ position: 'relative' }}>\n {guideX !== undefined ? (\n <HoverTooltip\n model={model}\n open={!mouseDragging}\n overview={overview}\n guideX={guideX}\n />\n ) : null}\n <div\n className={classes.rubberBandControl}\n role=\"presentation\"\n ref={controlsRef}\n onMouseDown={mouseDown}\n onMouseOut={mouseOut}\n onMouseMove={mouseMove}\n >\n {ControlComponent}\n </div>\n </div>\n )\n }\n\n let left = startX || 0\n let width = 0\n if (startX !== undefined && currentX !== undefined) {\n left = currentX < startX ? currentX : startX\n width = currentX - startX\n }\n // calculate the start and end bp of drag\n let leftBpOffset\n let rightBpOffset\n if (startX) {\n leftBpOffset = overview.pxToBp(startX - cytobandOffset)\n rightBpOffset = overview.pxToBp(startX + width - cytobandOffset)\n if (currentX && currentX < startX) {\n ;[leftBpOffset, rightBpOffset] = [rightBpOffset, leftBpOffset]\n }\n }\n\n return (\n <div style={{ position: 'relative' }}>\n {rubberBandRef.current ? (\n <>\n <Popover\n className={classes.popover}\n classes={{\n paper: classes.paper,\n }}\n open\n anchorEl={rubberBandRef.current}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n keepMounted\n disableRestoreFocus\n >\n <Typography>\n {leftBpOffset ? stringify(leftBpOffset) : ''}\n </Typography>\n </Popover>\n <Popover\n className={classes.popover}\n classes={{\n paper: classes.paper,\n }}\n open\n anchorEl={rubberBandRef.current}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n keepMounted\n disableRestoreFocus\n >\n <Typography>\n {rightBpOffset ? stringify(rightBpOffset) : ''}\n </Typography>\n </Popover>\n </>\n ) : null}\n <div\n ref={rubberBandRef}\n className={classes.rubberBand}\n style={{\n left,\n width: Math.abs(width),\n height: HEADER_OVERVIEW_HEIGHT,\n }}\n />\n <div\n data-testid=\"rubberBand_controls\"\n className={classes.rubberBandControl}\n role=\"presentation\"\n ref={controlsRef}\n onMouseDown={mouseDown}\n onMouseOut={mouseOut}\n onMouseMove={mouseMove}\n >\n {ControlComponent}\n </div>\n </div>\n )\n}\n\nOverviewRubberBand.propTypes = {\n model: MobxPropTypes.objectOrObservableObject.isRequired,\n overview: MobxPropTypes.objectOrObservableObject.isRequired,\n ControlComponent: ReactPropTypes.node,\n}\n\nOverviewRubberBand.defaultProps = {\n ControlComponent: <div />,\n}\n\nexport default observer(OverviewRubberBand)\n","import React from 'react'\nimport { Typography, makeStyles, useTheme, alpha } from '@material-ui/core'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport clsx from 'clsx'\n\nimport Base1DView, { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\nimport { getSession } from '@jbrowse/core/util'\nimport { ContentBlock } from '@jbrowse/core/util/blockTypes'\nimport { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\n// locals\nimport {\n LinearGenomeViewModel,\n HEADER_BAR_HEIGHT,\n HEADER_OVERVIEW_HEIGHT,\n} from '..'\nimport { chooseGridPitch } from '../util'\nimport OverviewRubberBand from './OverviewRubberBand'\n\nconst wholeSeqSpacer = 2\n\nconst useStyles = makeStyles(theme => {\n return {\n scaleBar: {\n height: HEADER_OVERVIEW_HEIGHT,\n },\n scaleBarBorder: {\n border: '1px solid',\n },\n scaleBarContig: {\n backgroundColor: theme.palette.background.default,\n position: 'absolute',\n top: 0,\n height: HEADER_OVERVIEW_HEIGHT,\n },\n scaleBarContigForward: {\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 9'%3E%3Cpath d='M-.1 0L6 4.5L-.1 9' fill='none' stroke='%23ddd'/%3E%3C/svg%3E\")`,\n backgroundRepeat: 'repeat',\n },\n scaleBarContigReverse: {\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 9'%3E%3Cpath d='M6 0L0 4.5L6 9' fill='none' stroke='%23ddd'/%3E%3C/svg%3E\")`,\n backgroundRepeat: 'repeat',\n },\n\n scaleBarRefName: {\n position: 'absolute',\n fontWeight: 'bold',\n pointerEvents: 'none',\n zIndex: 100,\n },\n scaleBarLabel: {\n height: HEADER_OVERVIEW_HEIGHT,\n width: 1,\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n pointerEvents: 'none',\n },\n scaleBarVisibleRegion: {\n position: 'absolute',\n height: HEADER_OVERVIEW_HEIGHT,\n pointerEvents: 'none',\n zIndex: 100,\n border: '1px solid',\n },\n overview: {\n height: HEADER_BAR_HEIGHT,\n position: 'relative',\n },\n overviewSvg: {\n width: '100%',\n position: 'absolute',\n },\n }\n})\n\nconst Polygon = observer(\n ({\n model,\n overview,\n useOffset = true,\n }: {\n model: LGV\n overview: Instance<Base1DViewModel>\n useOffset?: boolean\n }) => {\n const theme = useTheme()\n const multiplier = Number(useOffset)\n const { interRegionPaddingWidth, offsetPx, dynamicBlocks, cytobandOffset } =\n model\n const { contentBlocks, totalWidthPxWithoutBorders } = dynamicBlocks\n const { tertiary, primary } = theme.palette\n const polygonColor = tertiary ? tertiary.light : primary.light\n\n if (!contentBlocks.length) {\n return null\n }\n const first = contentBlocks[0]\n const last = contentBlocks[contentBlocks.length - 1]\n const topLeft =\n (overview.bpToPx({\n ...first,\n coord: first.reversed ? first.end : first.start,\n }) || 0) +\n cytobandOffset * multiplier\n const topRight =\n (overview.bpToPx({\n ...last,\n coord: last.reversed ? last.start : last.end,\n }) || 0) +\n cytobandOffset * multiplier\n\n const startPx = Math.max(0, -offsetPx)\n const endPx =\n startPx +\n totalWidthPxWithoutBorders +\n (contentBlocks.length * interRegionPaddingWidth) / 2\n\n const points = [\n [startPx, HEADER_BAR_HEIGHT],\n [endPx, HEADER_BAR_HEIGHT],\n [topRight, 0],\n [topLeft, 0],\n ]\n\n return (\n <polygon\n points={points.toString()}\n fill={alpha(polygonColor, 0.3)}\n stroke={alpha(polygonColor, 0.8)}\n />\n )\n },\n)\n\ntype LGV = LinearGenomeViewModel\n\n// rounded rect from https://stackoverflow.com/a/45889603/2129219\n// prettier-ignore\nfunction rightRoundedRect(x:number, y:number, width:number, height:number, radius:number) {\n return \"M\" + x + \",\" + y\n + \"h\" + (width - radius)\n + \"a\" + radius + \",\" + radius + \" 0 0 1 \" + radius + \",\" + radius\n + \"v\" + (height - 2 * radius)\n + \"a\" + radius + \",\" + radius + \" 0 0 1 \" + -radius + \",\" + radius\n + \"h\" + (radius - width)\n + \"z\";\n}\n\n// prettier-ignore\nfunction leftRoundedRect(x:number, y:number, width:number, height:number, radius:number ) {\n return \"M\" + (x + radius) + \",\" + y\n + \"h\" + (width - radius)\n + \"v\" + height\n + \"h\" + (radius - width)\n + \"a\" + radius + \",\" + radius + \" 0 0 1 \" + (-radius) + \",\" + (-radius)\n + \"v\" + (2 * radius - height)\n + \"a\" + radius + \",\" + radius + \" 0 0 1 \" + radius + \",\" + (-radius)\n + \"z\";\n}\n\nconst colorMap: { [key: string]: string | undefined } = {\n gneg: 'rgb(227,227,227)',\n gpos25: 'rgb(142,142,142)',\n gpos50: 'rgb(85,85,85)',\n gpos100: 'rgb(0,0,0)',\n gpos75: 'rgb(57,57,57)',\n gvar: 'rgb(0,0,0)',\n stalk: 'rgb(127,127,127)',\n acen: '#800',\n}\n\nconst Cytobands = observer(\n ({\n overview,\n block,\n assembly,\n }: {\n overview: Base1DViewModel\n assembly?: Assembly\n block: ContentBlock\n }) => {\n const { offsetPx, reversed } = block\n const cytobands = assembly?.cytobands\n ?.map(f => ({\n refName: assembly.getCanonicalRefName(f.get('refName')),\n start: f.get('start'),\n end: f.get('end'),\n type: f.get('type'),\n }))\n .filter(f => f.refName === block.refName)\n .map(f => {\n const { refName, start, end, type } = f\n return [\n overview.bpToPx({\n refName,\n coord: start,\n }),\n overview.bpToPx({\n refName,\n coord: end,\n }),\n type,\n ]\n })\n\n const arr = cytobands || []\n const lcap = reversed ? arr.length - 1 : 0\n const rcap = reversed ? 0 : arr.length - 1\n\n let firstCent = true\n return cytobands ? (\n <g transform={`translate(-${offsetPx})`}>\n {cytobands.map(([start, end, type], index) => {\n const key = `${start}-${end}-${type}`\n if (type === 'acen' && firstCent) {\n firstCent = false\n return (\n <polygon\n key={key}\n points={[\n [start, 0],\n [end, HEADER_OVERVIEW_HEIGHT / 2],\n [start, HEADER_OVERVIEW_HEIGHT],\n ].toString()}\n fill={colorMap[type]}\n />\n )\n }\n if (type === 'acen' && !firstCent) {\n return (\n <polygon\n key={key}\n points={[\n [start, HEADER_OVERVIEW_HEIGHT / 2],\n [end, 0],\n [end, HEADER_OVERVIEW_HEIGHT],\n ].toString()}\n fill={colorMap[type]}\n />\n )\n }\n\n if (lcap === index) {\n return (\n <path\n key={key}\n d={leftRoundedRect(\n Math.min(start, end),\n 0,\n Math.abs(end - start),\n HEADER_OVERVIEW_HEIGHT,\n 8,\n )}\n fill={colorMap[type]}\n />\n )\n } else if (rcap === index) {\n return (\n <path\n key={key}\n d={rightRoundedRect(\n Math.min(start, end),\n 0,\n Math.abs(end - start) - 2,\n HEADER_OVERVIEW_HEIGHT,\n 8,\n )}\n fill={colorMap[type]}\n />\n )\n } else {\n return (\n <rect\n key={key}\n x={Math.min(start, end)}\n y={0}\n width={Math.abs(end - start)}\n height={HEADER_OVERVIEW_HEIGHT}\n fill={colorMap[type]}\n />\n )\n }\n })}\n </g>\n ) : null\n },\n)\n\nconst OverviewBox = observer(\n ({\n scale,\n model,\n block,\n overview,\n }: {\n scale: number\n model: LGV\n block: ContentBlock\n overview: Base1DViewModel\n }) => {\n const classes = useStyles()\n const { cytobandOffset, showCytobands } = model\n const { start, end, reversed, refName, assemblyName } = block\n const { majorPitch } = chooseGridPitch(scale, 120, 15)\n const { assemblyManager } = getSession(model)\n const assembly = assemblyManager.get(assemblyName)\n const refNameColor = assembly?.getRefNameColor(refName)\n\n const tickLabels = []\n for (let i = 0; i < Math.floor((end - start) / majorPitch); i++) {\n const offsetLabel = (i + 1) * majorPitch\n tickLabels.push(reversed ? end - offsetLabel : start + offsetLabel)\n }\n\n return (\n <div>\n {/* name of sequence */}\n <Typography\n style={{\n left: block.offsetPx + 3,\n color: showCytobands ? 'black' : refNameColor,\n }}\n className={classes.scaleBarRefName}\n >\n {refName}\n </Typography>\n <div\n className={clsx(\n classes.scaleBarContig,\n showCytobands\n ? undefined\n : reversed\n ? classes.scaleBarContigReverse\n : classes.scaleBarContigForward,\n !showCytobands ? classes.scaleBarBorder : undefined,\n )}\n style={{\n left: block.offsetPx + cytobandOffset,\n width: block.widthPx,\n borderColor: refNameColor,\n }}\n >\n {!showCytobands\n ? tickLabels.map((tickLabel, labelIdx) => (\n <Typography\n key={`${JSON.stringify(block)}-${tickLabel}-${labelIdx}`}\n className={classes.scaleBarLabel}\n variant=\"body2\"\n style={{\n left: ((labelIdx + 1) * majorPitch) / scale,\n pointerEvents: 'none',\n color: refNameColor,\n }}\n >\n {tickLabel.toLocaleString('en-US')}\n </Typography>\n ))\n : null}\n\n {showCytobands ? (\n <svg style={{ width: '100%' }}>\n <Cytobands\n overview={overview}\n assembly={assembly}\n block={block}\n />\n </svg>\n ) : null}\n </div>\n </div>\n )\n },\n)\n\nconst ScaleBar = observer(\n ({\n model,\n scale,\n overview,\n }: {\n model: LGV\n overview: Base1DViewModel\n scale: number\n }) => {\n const classes = useStyles()\n const theme = useTheme()\n const { dynamicBlocks, showCytobands, cytobandOffset } = model\n const visibleRegions = dynamicBlocks.contentBlocks\n const overviewVisibleRegions = overview.dynamicBlocks\n const { tertiary, primary } = theme.palette\n const scaleBarColor = tertiary ? tertiary.light : primary.light\n\n if (!visibleRegions.length) {\n return null\n }\n const first = visibleRegions[0]\n const firstOverviewPx =\n overview.bpToPx({\n ...first,\n coord: first.reversed ? first.end : first.start,\n }) || 0\n\n const last = visibleRegions[visibleRegions.length - 1]\n const lastOverviewPx =\n overview.bpToPx({\n ...last,\n coord: last.reversed ? last.start : last.end,\n }) || 0\n\n const color = showCytobands ? '#f00' : scaleBarColor\n const transparency = showCytobands ? 0.1 : 0.3\n\n return (\n <div className={classes.scaleBar}>\n <div\n className={classes.scaleBarVisibleRegion}\n style={{\n width: lastOverviewPx - firstOverviewPx,\n left: firstOverviewPx + cytobandOffset,\n background: alpha(color, transparency),\n borderColor: color,\n }}\n />\n {/* this is the entire scale bar */}\n {overviewVisibleRegions.map((block, idx) => {\n return !(block instanceof ContentBlock) ? (\n <div\n key={`${JSON.stringify(block)}-${idx}`}\n className={classes.scaleBarContig}\n style={{\n width: block.widthPx,\n left: block.offsetPx,\n backgroundColor: '#999',\n backgroundImage:\n 'repeating-linear-gradient(90deg, transparent, transparent 1px, rgba(255,255,255,.5) 1px, rgba(255,255,255,.5) 3px)',\n }}\n />\n ) : (\n <OverviewBox\n scale={scale}\n block={block}\n model={model}\n overview={overview}\n key={`${JSON.stringify(block)}-${idx}`}\n />\n )\n })}\n </div>\n )\n },\n)\n\nfunction OverviewScaleBar({\n model,\n children,\n}: {\n model: LGV\n children: React.ReactNode\n}) {\n const classes = useStyles()\n const { totalBp, width, cytobandOffset, displayedRegions } = model\n\n const overview = Base1DView.create({\n displayedRegions: JSON.parse(JSON.stringify(displayedRegions)),\n interRegionPaddingWidth: 0,\n minimumBlockWidth: model.minimumBlockWidth,\n })\n\n const modWidth = width - cytobandOffset\n overview.setVolatileWidth(modWidth)\n overview.showAllRegions()\n\n const scale =\n totalBp / (modWidth - (displayedRegions.length - 1) * wholeSeqSpacer)\n\n return (\n <div>\n <OverviewRubberBand\n model={model}\n overview={overview}\n ControlComponent={\n <ScaleBar model={model} overview={overview} scale={scale} />\n }\n />\n <div className={classes.overview}>\n <svg height={HEADER_BAR_HEIGHT} className={classes.overviewSvg}>\n <Polygon model={model} overview={overview} />\n </svg>\n {children}\n </div>\n </div>\n )\n}\n\nexport default observer(OverviewScaleBar)\n\nexport { Cytobands, Polygon }\n","import React from 'react'\nimport { renderToStaticMarkup } from 'react-dom/server'\nimport { when } from 'mobx'\nimport { getParent } from 'mobx-state-tree'\nimport { getConf, readConfObject } from '@jbrowse/core/configuration'\nimport { getSession, getBpDisplayStr } from '@jbrowse/core/util'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema'\nimport Base1DView from '@jbrowse/core/util/Base1DViewModel'\n\n// locals\nimport Ruler from './Ruler'\nimport {\n LinearGenomeViewModel,\n ExportSvgOptions,\n HEADER_OVERVIEW_HEIGHT,\n} from '..'\nimport { Polygon, Cytobands } from './OverviewScaleBar'\n\ntype LGV = LinearGenomeViewModel\n\nfunction ScaleBar({ model, fontSize }: { model: LGV; fontSize: number }) {\n const {\n offsetPx,\n dynamicBlocks: { totalWidthPxWithoutBorders: totalWidthPx, totalBp },\n } = model\n const displayBp = getBpDisplayStr(totalBp)\n const x0 = Math.max(-offsetPx, 0)\n const x1 = x0 + totalWidthPx\n return (\n <>\n <line x1={x0} x2={x1} y1={10} y2={10} stroke=\"black\" />\n <line x1={x0} x2={x0} y1={5} y2={15} stroke=\"black\" />\n <line x1={x1} x2={x1} y1={5} y2={15} stroke=\"black\" />\n <text\n x={x0 + (x1 - x0) / 2}\n y={fontSize * 2}\n textAnchor=\"middle\"\n fontSize={fontSize}\n >\n {displayBp}\n </text>\n </>\n )\n}\n\nfunction SVGRuler({\n model,\n fontSize,\n width,\n}: {\n model: LGV\n fontSize: number\n width: number\n}) {\n const {\n dynamicBlocks: { contentBlocks },\n offsetPx: viewOffsetPx,\n bpPerPx,\n } = model\n const renderRuler = contentBlocks.length < 5\n return (\n <>\n <defs>\n <clipPath id=\"clip-ruler\">\n <rect x={0} y={0} width={width} height={20} />\n </clipPath>\n </defs>\n {contentBlocks.map(block => {\n const { key, start, end, reversed, offsetPx, refName } = block\n const offsetLeft = offsetPx - viewOffsetPx\n return (\n <g key={`${key}`} transform={`translate(${offsetLeft} 0)`}>\n <text x={offsetLeft / bpPerPx} y={fontSize} fontSize={fontSize}>\n {refName}\n </text>\n {renderRuler ? (\n <g transform=\"translate(0 20)\" clipPath=\"url(#clip-ruler)\">\n <Ruler\n start={start}\n end={end}\n bpPerPx={bpPerPx}\n reversed={reversed}\n />\n </g>\n ) : (\n <line\n strokeWidth={1}\n stroke=\"black\"\n x1={start / bpPerPx}\n x2={end / bpPerPx}\n y1={20}\n y2={20}\n />\n )}\n </g>\n )\n })}\n </>\n )\n}\n\nconst fontSize = 15\nconst rulerHeight = 50\nconst textHeight = fontSize + 5\nconst paddingHeight = 20\nconst headerHeight = textHeight + 20\nconst cytobandHeightIfExists = 100\n\ninterface Display {\n height: number\n}\ninterface Track {\n displays: Display[]\n}\n\nconst totalHeight = (tracks: Track[]) => {\n return tracks.reduce((accum, track) => {\n const display = track.displays[0]\n return accum + display.height + paddingHeight + textHeight\n }, 0)\n}\n\n// SVG component, ruler and assembly name\nconst SVGHeader = ({ model }: { model: LGV }) => {\n const { width, assemblyNames, showCytobands, displayedRegions } = model\n const { assemblyManager } = getSession(model)\n const assemblyName = assemblyNames.length > 1 ? '' : assemblyNames[0]\n const assembly = assemblyManager.get(assemblyName)\n\n const overview = Base1DView.create({\n displayedRegions: JSON.parse(JSON.stringify(displayedRegions)),\n interRegionPaddingWidth: 0,\n minimumBlockWidth: model.minimumBlockWidth,\n })\n const visibleRegions = model.dynamicBlocks.contentBlocks\n\n overview.setVolatileWidth(width)\n overview.showAllRegions()\n const block = overview.dynamicBlocks.contentBlocks[0]\n\n const first = visibleRegions[0]\n const firstOverviewPx =\n overview.bpToPx({\n ...first,\n coord: first.reversed ? first.end : first.start,\n }) || 0\n\n const last = visibleRegions[visibleRegions.length - 1]\n const lastOverviewPx =\n overview.bpToPx({\n ...last,\n coord: last.reversed ? last.start : last.end,\n }) || 0\n\n const cytobandHeight = showCytobands ? cytobandHeightIfExists : 0\n\n return (\n <g id=\"header\">\n <text x={0} y={fontSize} fontSize={fontSize}>\n {assemblyName}\n </text>\n\n {showCytobands ? (\n <g transform={`translate(0 ${rulerHeight})`}>\n <Cytobands overview={overview} assembly={assembly} block={block} />\n <rect\n stroke=\"red\"\n fill=\"rgb(255,0,0,0.1)\"\n width={Math.max(lastOverviewPx - firstOverviewPx, 0.5)}\n height={HEADER_OVERVIEW_HEIGHT - 1}\n x={firstOverviewPx}\n y={0.5}\n />\n <g transform={`translate(0,${HEADER_OVERVIEW_HEIGHT})`}>\n <Polygon overview={overview} model={model} useOffset={false} />\n </g>\n </g>\n ) : null}\n\n <g transform={`translate(0 ${fontSize + cytobandHeight})`}>\n <ScaleBar model={model} fontSize={fontSize} />\n </g>\n <g transform={`translate(0 ${rulerHeight + cytobandHeight})`}>\n <SVGRuler model={model} fontSize={fontSize} width={width} />\n </g>\n </g>\n )\n}\n\n// SVG component, region separator\nconst SVGRegionSeparators = ({\n model,\n height,\n}: {\n height: number\n model: LGV\n}) => {\n const { dynamicBlocks, offsetPx, interRegionPaddingWidth } = model\n return (\n <>\n {dynamicBlocks.contentBlocks.slice(1).map(block => (\n <rect\n key={block.key}\n x={block.offsetPx - offsetPx - interRegionPaddingWidth}\n width={interRegionPaddingWidth}\n y={0}\n height={height}\n stroke=\"none\"\n fill=\"grey\"\n />\n ))}\n </>\n )\n}\n\n// SVG component, tracks\nfunction SVGTracks({\n displayResults,\n model,\n offset,\n}: {\n displayResults: {\n track: {\n configuration: AnyConfigurationModel\n displays: { height: number }[]\n }\n result: string\n }[]\n model: LGV\n offset: number\n}) {\n return (\n <>\n {displayResults.map(({ track, result }) => {\n const current = offset\n const trackName =\n getConf(track, 'name') ||\n `Reference sequence (${readConfObject(\n getParent(track.configuration),\n 'name',\n )})`\n const display = track.displays[0]\n offset += display.height + paddingHeight + textHeight\n return (\n <g\n key={track.configuration.trackId}\n transform={`translate(0 ${current})`}\n >\n <text fontSize={fontSize} x={Math.max(-model.offsetPx, 0)}>\n {trackName}\n </text>\n <g transform={`translate(0 ${textHeight})`}>\n {result}\n <SVGRegionSeparators model={model} height={display.height} />\n </g>\n </g>\n )\n })}\n </>\n )\n}\n\n// render LGV to SVG\nexport async function renderToSvg(model: LGV, opts: ExportSvgOptions) {\n await when(() => model.initialized)\n const { width, tracks, showCytobands } = model\n const shift = 50\n const offset =\n headerHeight +\n rulerHeight +\n (showCytobands ? cytobandHeightIfExists : 0) +\n 20\n const height = totalHeight(tracks) + offset\n const displayResults = await Promise.all(\n tracks.map(async track => {\n const display = track.displays[0]\n await when(() => (display.ready !== undefined ? display.ready : true))\n const result = await display.renderSvg(opts)\n return { track, result }\n }),\n )\n\n // the xlink namespace is used for rendering <image> tag\n return renderToStaticMarkup(\n <svg\n width={width}\n height={height}\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n viewBox={[0, 0, width + shift * 2, height].toString()}\n >\n {/* background white */}\n <rect width={width + shift * 2} height={height} fill=\"white\" />\n\n <g stroke=\"none\" transform={`translate(${shift} ${fontSize})`}>\n <SVGHeader model={model} />\n <SVGTracks\n model={model}\n displayResults={displayResults}\n offset={offset}\n />\n </g>\n </svg>,\n )\n}\n","import BaseResult from '@jbrowse/core/TextSearch/BaseResults'\n\nexport function dedupe(\n results: BaseResult[] = [],\n cb: (result: BaseResult) => string,\n) {\n return results.filter(\n (elt, idx, self) => idx === self.findIndex(t => cb(t) === cb(elt)),\n )\n}\n","import React, { Suspense, lazy, useMemo, useEffect, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { getSession, useDebounce, measureText } from '@jbrowse/core/util'\nimport BaseResult, {\n RefSequenceResult,\n} from '@jbrowse/core/TextSearch/BaseResults'\nimport {\n CircularProgress,\n IconButton,\n InputAdornment,\n Popper,\n PopperProps,\n TextField,\n TextFieldProps as TFP,\n Typography,\n} from '@material-ui/core'\n\n// icons\nimport SearchIcon from '@material-ui/icons/Search'\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport HelpIcon from '@material-ui/icons/Help'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport { dedupe } from './util'\n\n// lazy\nconst HelpDialog = lazy(() => import('./HelpDialog'))\n\nexport interface Option {\n group?: string\n result: BaseResult\n}\n\n// the logic of this method is to only apply a filter to RefSequenceResults\n// because they do not have a matchedObject. the trix search results already\n// filter so don't need re-filtering\nfunction filterOptions(options: Option[], searchQuery: string) {\n return options.filter(option => {\n const { result } = option\n return (\n result.getLabel().toLowerCase().includes(searchQuery) ||\n result.matchedObject\n )\n })\n}\n\n// MyPopper used to expand search results box wider if needed\n// xref https://stackoverflow.com/a/63583835/2129219\nconst MyPopper = function (\n props: PopperProps & { style?: { width?: unknown } },\n) {\n const { style } = props\n return (\n <Popper\n {...props}\n style={{\n width: 'fit-content',\n minWidth: Math.min(+(style?.width || 0), 200),\n background: 'white',\n }}\n placement=\"bottom-start\"\n />\n )\n}\n\nfunction RefNameAutocomplete({\n model,\n showHelp = true,\n onSelect,\n assemblyName,\n style,\n fetchResults,\n value,\n minWidth = 200,\n TextFieldProps = {},\n}: {\n model: LinearGenomeViewModel\n onSelect: (region: BaseResult) => void\n assemblyName?: string\n value?: string\n fetchResults: (query: string) => Promise<BaseResult[]>\n style?: React.CSSProperties\n minWidth?: number\n showHelp?: boolean\n TextFieldProps?: TFP\n}) {\n const session = getSession(model)\n const { assemblyManager } = session\n const [open, setOpen] = useState(false)\n const [loaded, setLoaded] = useState(true)\n const [isHelpDialogDisplayed, setHelpDialogDisplayed] = useState(false)\n const [currentSearch, setCurrentSearch] = useState('')\n const [inputValue, setInputValue] = useState('')\n const [searchOptions, setSearchOptions] = useState<Option[]>()\n const debouncedSearch = useDebounce(currentSearch, 300)\n const { coarseVisibleLocStrings, hasDisplayedRegions } = model\n const assembly = assemblyName ? assemblyManager.get(assemblyName) : undefined\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const regions = assembly?.regions || []\n\n const options = useMemo(\n () =>\n regions.map(option => ({\n result: new RefSequenceResult({\n refName: option.refName,\n label: option.refName,\n matchedAttribute: 'refName',\n }),\n })),\n [regions],\n )\n\n useEffect(() => {\n let active = true\n\n ;(async () => {\n try {\n if (debouncedSearch === '' || !assemblyName) {\n return\n }\n\n setLoaded(false)\n const results = await fetchResults(debouncedSearch)\n if (active) {\n setSearchOptions(\n dedupe(results, r => r.getDisplayString()).map(result => ({\n result,\n })),\n )\n setLoaded(true)\n }\n } catch (e) {\n console.error(e)\n if (active) {\n session.notify(`${e}`, 'error')\n }\n }\n })()\n\n return () => {\n active = false\n }\n }, [assemblyName, fetchResults, debouncedSearch, session, model])\n\n const inputBoxVal = coarseVisibleLocStrings || value || ''\n\n // heuristic, text width + icon width\n // + 45 accomodates help icon and search icon\n const width = Math.min(\n Math.max(measureText(inputBoxVal, 16) + 45, minWidth),\n 550,\n )\n\n // notes on implementation:\n // The selectOnFocus setting helps highlight the field when clicked\n return (\n <>\n <Autocomplete\n id={`refNameAutocomplete-${model.id}`}\n data-testid=\"autocomplete\"\n disableListWrap\n disableClearable\n PopperComponent={MyPopper}\n disabled={!assemblyName}\n freeSolo\n includeInputInList\n selectOnFocus\n style={{ ...style, width }}\n value={inputBoxVal}\n loading={!loaded}\n inputValue={inputValue}\n onInputChange={(event, newInputValue) => setInputValue(newInputValue)}\n loadingText=\"loading results\"\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => {\n setOpen(false)\n setLoaded(true)\n if (hasDisplayedRegions) {\n setCurrentSearch('')\n setSearchOptions(undefined)\n }\n }}\n onChange={(_event, selectedOption) => {\n if (!selectedOption || !assemblyName) {\n return\n }\n\n if (typeof selectedOption === 'string') {\n // handles string inputs on keyPress enter\n onSelect(new BaseResult({ label: selectedOption }))\n } else {\n onSelect(selectedOption.result)\n }\n setInputValue(inputBoxVal)\n }}\n options={!searchOptions?.length ? options : searchOptions}\n getOptionDisabled={option => option?.group === 'limitOption'}\n filterOptions={(options, params) => {\n const filtered = filterOptions(\n options,\n params.inputValue.toLocaleLowerCase(),\n )\n return [\n ...filtered.slice(0, 100),\n ...(filtered.length > 100\n ? [\n {\n group: 'limitOption',\n result: new BaseResult({\n label: 'keep typing for more results',\n }),\n },\n ]\n : []),\n ]\n }}\n renderInput={params => {\n const { helperText, InputProps = {} } = TextFieldProps\n return (\n <TextField\n onBlur={() => {\n // this is used to restore a refName or the non-user-typed input\n // to the box on blurring\n setInputValue(inputBoxVal)\n }}\n {...params}\n {...TextFieldProps}\n helperText={helperText}\n InputProps={{\n ...params.InputProps,\n ...InputProps,\n\n endAdornment: (\n <>\n {regions.length === 0 ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : (\n <InputAdornment position=\"end\" style={{ marginRight: 7 }}>\n <SearchIcon />\n {showHelp ? (\n <IconButton\n onClick={() => setHelpDialogDisplayed(true)}\n >\n <HelpIcon />\n </IconButton>\n ) : null}\n </InputAdornment>\n )}\n {params.InputProps.endAdornment}\n </>\n ),\n }}\n placeholder=\"Search for location\"\n onChange={e => {\n setCurrentSearch(e.target.value)\n }}\n />\n )\n }}\n renderOption={option => {\n const { result } = option\n const component = result.getRenderingComponent()\n if (component && React.isValidElement(component)) {\n return component\n }\n\n return <Typography noWrap>{result.getDisplayString()}</Typography>\n }}\n getOptionLabel={option =>\n (typeof option === 'string' ? option : option.result.getLabel()) || ''\n }\n />\n {isHelpDialogDisplayed ? (\n <Suspense fallback={<div />}>\n <HelpDialog handleClose={() => setHelpDialogDisplayed(false)} />\n </Suspense>\n ) : null}\n </>\n )\n}\n\nexport default observer(RefNameAutocomplete)\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { makeStyles, useTheme, alpha } from '@material-ui/core'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport { getSession } from '@jbrowse/core/util'\nimport { SearchType } from '@jbrowse/core/data_adapters/BaseAdapter'\n\n// locals\nimport RefNameAutocomplete from './RefNameAutocomplete'\nimport { dedupe } from './util'\nimport { LinearGenomeViewModel, SPACING, WIDGET_HEIGHT } from '..'\n\nconst useStyles = makeStyles(() => ({\n headerRefName: {\n minWidth: 100,\n },\n}))\n\nfunction SearchBox({\n model,\n showHelp,\n}: {\n showHelp?: boolean\n model: LinearGenomeViewModel\n}) {\n const classes = useStyles()\n const theme = useTheme()\n const session = getSession(model)\n\n const { textSearchManager, assemblyManager } = session\n const { assemblyNames, rankSearchResults } = model\n const assemblyName = assemblyNames[0]\n const assembly = assemblyManager.get(assemblyName)\n const searchScope = model.searchScope(assemblyName)\n\n async function fetchResults(query: string, searchType?: SearchType) {\n if (!textSearchManager) {\n console.warn('No text search manager')\n }\n\n const textSearchResults = await textSearchManager?.search(\n {\n queryString: query,\n searchType,\n },\n searchScope,\n rankSearchResults,\n )\n\n const refNameResults = assembly?.allRefNames\n ?.filter(refName => refName.startsWith(query))\n .map(r => new BaseResult({ label: r }))\n .slice(0, 10)\n\n return dedupe(\n [...(refNameResults || []), ...(textSearchResults || [])],\n elt => elt.getId(),\n )\n }\n\n async function handleSelectedRegion(option: BaseResult) {\n let trackId = option.getTrackId()\n let location = option.getLocation()\n const label = option.getLabel()\n try {\n if (assembly?.allRefNames?.includes(location)) {\n model.navToLocString(location)\n } else {\n const results = await fetchResults(label, 'exact')\n if (results && results.length > 1) {\n model.setSearchResults(results, label.toLowerCase())\n return\n } else if (results?.length === 1) {\n location = results[0].getLocation()\n trackId = results[0].getTrackId()\n }\n\n model.navToLocString(location, assemblyName)\n if (trackId) {\n model.showTrack(trackId)\n }\n }\n } catch (e) {\n console.error(e)\n session.notify(`${e}`, 'warning')\n }\n }\n return (\n <RefNameAutocomplete\n showHelp={showHelp}\n onSelect={handleSelectedRegion}\n assemblyName={assemblyName}\n fetchResults={fetchResults}\n model={model}\n TextFieldProps={{\n variant: 'outlined',\n className: classes.headerRefName,\n style: { margin: SPACING, minWidth: '175px' },\n InputProps: {\n style: {\n padding: 0,\n height: WIDGET_HEIGHT,\n background: alpha(theme.palette.background.paper, 0.8),\n },\n },\n }}\n />\n )\n}\n\nexport default observer(SearchBox)\n","import React, { useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Checkbox,\n FormControlLabel,\n CircularProgress,\n Typography,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { LinearGenomeViewModel as LGV } from '..'\n\nconst useStyles = makeStyles(theme => ({\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}))\n\nexport default function ExportSvgDlg({\n model,\n handleClose,\n}: {\n model: LGV\n handleClose: () => void\n}) {\n // @ts-ignore\n const offscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n const [rasterizeLayers, setRasterizeLayers] = useState(offscreenCanvas)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<unknown>()\n const classes = useStyles()\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle>\n Export SVG\n <IconButton className={classes.closeButton} onClick={handleClose}>\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n {error ? (\n <div style={{ color: 'red' }}>{`${error}`}</div>\n ) : loading ? (\n <div>\n <CircularProgress size={20} style={{ marginRight: 20 }} />\n <Typography display=\"inline\">Creating SVG</Typography>\n </div>\n ) : null}\n {offscreenCanvas ? (\n <FormControlLabel\n control={\n <Checkbox\n checked={rasterizeLayers}\n onChange={() => setRasterizeLayers(val => !val)}\n />\n }\n label=\"Rasterize canvas based tracks? File may be much larger if this is turned off\"\n />\n ) : (\n <Typography>\n Note: rasterizing layers not yet supported in this browser, so SVG\n size may be large\n </Typography>\n )}\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => handleClose()}\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n onClick={async () => {\n setLoading(true)\n setError(undefined)\n try {\n await model.exportSvg({ rasterizeLayers })\n handleClose()\n } catch (e) {\n console.error(e)\n setError(e)\n } finally {\n setLoading(false)\n }\n }}\n >\n Submit\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import React, { useState, useEffect } from 'react'\nimport { observer } from 'mobx-react'\nimport IconButton from '@material-ui/core/IconButton'\nimport Slider from '@material-ui/core/Slider'\nimport { makeStyles } from '@material-ui/core/styles'\nimport ZoomIn from '@material-ui/icons/ZoomIn'\nimport ZoomOut from '@material-ui/icons/ZoomOut'\nimport { LinearGenomeViewModel } from '..'\n\nconst useStyles = makeStyles({\n container: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n slider: {\n width: 70,\n },\n})\n\nfunction ZoomControls({ model }: { model: LinearGenomeViewModel }) {\n const classes = useStyles()\n const { maxBpPerPx, minBpPerPx, bpPerPx, scaleFactor } = model\n const [value, setValue] = useState(-Math.log2(bpPerPx) * 100)\n useEffect(() => {\n setValue(-Math.log2(bpPerPx) * 100)\n }, [setValue, bpPerPx])\n return (\n <div className={classes.container}>\n <IconButton\n data-testid=\"zoom_out\"\n onClick={() => {\n model.zoom(bpPerPx * 2)\n }}\n disabled={bpPerPx >= maxBpPerPx - 0.0001 || scaleFactor !== 1}\n color=\"secondary\"\n >\n <ZoomOut />\n </IconButton>\n\n <Slider\n className={classes.slider}\n value={value}\n min={-Math.log2(maxBpPerPx) * 100}\n max={-Math.log2(minBpPerPx) * 100}\n onChange={(_, val) => setValue(val as number)}\n onChangeCommitted={() => model.zoomTo(2 ** (-value / 100))}\n disabled={scaleFactor !== 1}\n />\n <IconButton\n data-testid=\"zoom_in\"\n onClick={() => {\n model.zoom(model.bpPerPx / 2)\n }}\n disabled={bpPerPx <= minBpPerPx + 0.0001 || scaleFactor !== 1}\n color=\"secondary\"\n >\n <ZoomIn />\n </IconButton>\n </div>\n )\n}\n\nexport default observer(ZoomControls)\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n FormGroup,\n Typography,\n makeStyles,\n alpha,\n} from '@material-ui/core'\nimport SearchBox from './SearchBox'\n\n// icons\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward'\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack'\n\n// locals\nimport {\n LinearGenomeViewModel,\n SPACING,\n WIDGET_HEIGHT,\n HEADER_BAR_HEIGHT,\n} from '..'\nimport OverviewScaleBar from './OverviewScaleBar'\nimport ZoomControls from './ZoomControls'\n\ntype LGV = LinearGenomeViewModel\nconst useStyles = makeStyles(theme => ({\n headerBar: {\n height: HEADER_BAR_HEIGHT,\n display: 'flex',\n },\n headerForm: {\n flexWrap: 'nowrap',\n marginRight: 7,\n },\n spacer: {\n flexGrow: 1,\n },\n\n panButton: {\n background: alpha(theme.palette.background.paper, 0.8),\n height: WIDGET_HEIGHT,\n margin: SPACING,\n },\n bp: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 5,\n },\n toggleButton: {\n height: 44,\n border: 'none',\n margin: theme.spacing(0.5),\n },\n buttonSpacer: {\n marginRight: theme.spacing(2),\n },\n}))\n\nconst HeaderButtons = observer(({ model }: { model: LGV }) => {\n const classes = useStyles()\n return (\n <Button\n onClick={model.activateTrackSelector}\n className={classes.toggleButton}\n title=\"Open track selector\"\n value=\"track_select\"\n color=\"secondary\"\n >\n <TrackSelectorIcon className={classes.buttonSpacer} />\n </Button>\n )\n})\n\nfunction PanControls({ model }: { model: LGV }) {\n const classes = useStyles()\n return (\n <>\n <Button\n variant=\"outlined\"\n className={classes.panButton}\n onClick={() => model.slide(-0.9)}\n >\n <ArrowBackIcon />\n </Button>\n <Button\n variant=\"outlined\"\n className={classes.panButton}\n onClick={() => model.slide(0.9)}\n >\n <ArrowForwardIcon />\n </Button>\n </>\n )\n}\n\nconst RegionWidth = observer(({ model }: { model: LGV }) => {\n const classes = useStyles()\n const { coarseTotalBp } = model\n return (\n <Typography variant=\"body2\" color=\"textSecondary\" className={classes.bp}>\n {Math.round(coarseTotalBp).toLocaleString('en-US')} bp\n </Typography>\n )\n})\n\nconst Controls = ({ model }: { model: LGV }) => {\n const classes = useStyles()\n return (\n <div className={classes.headerBar}>\n <HeaderButtons model={model} />\n <div className={classes.spacer} />\n <FormGroup row className={classes.headerForm}>\n <PanControls model={model} />\n <SearchBox model={model} />\n </FormGroup>\n <RegionWidth model={model} />\n <ZoomControls model={model} />\n <div className={classes.spacer} />\n </div>\n )\n}\n\nconst LinearGenomeViewHeader = observer(({ model }: { model: LGV }) => {\n return model.hideHeaderOverview ? (\n <Controls model={model} />\n ) : (\n <OverviewScaleBar model={model}>\n <Controls model={model} />\n </OverviewScaleBar>\n )\n})\n\nexport default LinearGenomeViewHeader\n","import React from 'react'\nimport { getConf, readConfObject } from '@jbrowse/core/configuration'\nimport { Menu } from '@jbrowse/core/ui'\nimport { getSession, getContainingView } from '@jbrowse/core/util'\nimport { BaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport {\n IconButton,\n Paper,\n Typography,\n alpha,\n makeStyles,\n} from '@material-ui/core'\n\n// icons\nimport MoreVertIcon from '@material-ui/icons/MoreVert'\nimport DragIcon from '@material-ui/icons/DragIndicator'\nimport CloseIcon from '@material-ui/icons/Close'\n\nimport clsx from 'clsx'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport { LinearGenomeViewStateModel } from '..'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n background: alpha(theme.palette.background.paper, 0.8),\n '&:hover': {\n background: theme.palette.background.paper,\n },\n transition: theme.transitions.create(['background'], {\n duration: theme.transitions.duration.shortest,\n }),\n },\n trackName: {\n margin: '0 auto',\n width: '90%',\n fontSize: '0.8rem',\n pointerEvents: 'none',\n },\n dragHandle: {\n cursor: 'grab',\n color: '#135560',\n },\n dragHandleIcon: {\n display: 'inline-block',\n verticalAlign: 'middle',\n pointerEvents: 'none',\n },\n iconButton: {\n padding: theme.spacing(1),\n },\n}))\n\ntype LGV = Instance<LinearGenomeViewStateModel>\n\nconst TrackLabel = React.forwardRef(\n (props: { track: BaseTrackModel; className?: string }, ref) => {\n const classes = useStyles()\n const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null)\n const { track, className } = props\n const view = getContainingView(track) as LGV\n const session = getSession(track)\n const trackConf = track.configuration\n const trackId = getConf(track, 'trackId')\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget)\n }\n\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n const onDragStart = (event: React.DragEvent<HTMLSpanElement>) => {\n const target = event.target as HTMLElement\n if (target.parentNode) {\n event.dataTransfer.setDragImage(\n target.parentNode as HTMLElement,\n 20,\n 20,\n )\n view.setDraggingTrackId(track.id)\n }\n }\n\n const onDragEnd = () => {\n view.setDraggingTrackId(undefined)\n }\n\n let trackName = getConf(track, 'name')\n if (getConf(track, 'type') === 'ReferenceSequenceTrack') {\n trackName = 'Reference Sequence'\n session.assemblies.forEach(assembly => {\n if (assembly.sequence === trackConf) {\n trackName = `Reference Sequence (${readConfObject(assembly, 'name')})`\n }\n })\n }\n\n function handleMenuItemClick(_: unknown, callback: Function) {\n callback()\n handleClose()\n }\n\n const items = [\n ...session.getTrackActionMenuItems?.(trackConf),\n ...track.trackMenuItems(),\n ].sort((a, b) => (b.priority || 0) - (a.priority || 0))\n\n return (\n <>\n <Paper ref={ref} className={clsx(className, classes.root)}>\n <span\n draggable\n className={classes.dragHandle}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n data-testid={`dragHandle-${view.id}-${trackId}`}\n >\n <DragIcon className={classes.dragHandleIcon} />\n </span>\n <IconButton\n onClick={() => view.hideTrack(trackId)}\n className={classes.iconButton}\n title=\"close this track\"\n color=\"secondary\"\n >\n <CloseIcon />\n </IconButton>\n <Typography\n variant=\"body1\"\n component=\"span\"\n className={classes.trackName}\n >\n {trackName}\n </Typography>\n <IconButton\n aria-controls=\"simple-menu\"\n aria-haspopup=\"true\"\n onClick={handleClick}\n className={classes.iconButton}\n color=\"secondary\"\n data-testid=\"track_menu_icon\"\n disabled={!items.length}\n >\n <MoreVertIcon />\n </IconButton>\n </Paper>\n <Menu\n anchorEl={anchorEl}\n onMenuItemClick={handleMenuItemClick}\n open={Boolean(anchorEl)}\n onClose={handleClose}\n menuItems={items}\n />\n </>\n )\n },\n)\n\nexport default observer(TrackLabel)\n","import React, { useEffect, useRef } from 'react'\nimport { observer } from 'mobx-react'\nimport { isAlive } from 'mobx-state-tree'\nimport { BaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { ResizeHandle } from '@jbrowse/core/ui'\nimport { useDebouncedCallback } from '@jbrowse/core/util'\nimport clsx from 'clsx'\nimport Paper from '@material-ui/core/Paper'\nimport { makeStyles } from '@material-ui/core/styles'\n\nimport { LinearGenomeViewModel, RESIZE_HANDLE_HEIGHT } from '..'\nimport TrackLabel from './TrackLabel'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n margin: 2,\n },\n resizeHandle: {\n height: RESIZE_HANDLE_HEIGHT,\n boxSizing: 'border-box',\n position: 'relative',\n zIndex: 2,\n },\n overlay: {\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n zIndex: 3,\n borderRadius: theme.shape.borderRadius,\n },\n trackLabel: {\n zIndex: 3,\n },\n trackLabelInline: {\n position: 'relative',\n display: 'inline-block',\n },\n trackLabelOverlap: {\n position: 'absolute',\n },\n trackRenderingContainer: {\n overflowY: 'auto',\n overflowX: 'hidden',\n whiteSpace: 'nowrap',\n position: 'relative',\n background: 'none',\n zIndex: 2,\n boxSizing: 'content-box',\n },\n}))\n\ntype LGV = LinearGenomeViewModel\n\nfunction TrackContainerLabel({\n model,\n view,\n}: {\n model: BaseTrackModel\n view: LGV\n}) {\n const classes = useStyles()\n const labelStyle =\n view.trackLabels === 'overlapping'\n ? classes.trackLabelOverlap\n : classes.trackLabelInline\n return view.trackLabels !== 'hidden' ? (\n <TrackLabel\n track={model}\n className={clsx(classes.trackLabel, labelStyle)}\n />\n ) : null\n}\n\nfunction TrackContainer({\n model,\n track,\n}: {\n model: LinearGenomeViewModel\n track: BaseTrackModel\n}) {\n const classes = useStyles()\n const display = track.displays[0]\n const { horizontalScroll, draggingTrackId, moveTrack } = model\n const { height } = display\n const trackId = getConf(track, 'trackId')\n const ref = useRef(null)\n\n useEffect(() => {\n if (ref.current) {\n model.trackRefs[trackId] = ref.current\n }\n return () => {\n delete model.trackRefs[trackId]\n }\n }, [model.trackRefs, trackId])\n function onDragEnter() {\n if (\n draggingTrackId !== undefined &&\n isAlive(display) &&\n draggingTrackId !== display.id\n ) {\n moveTrack(draggingTrackId, track.id)\n }\n }\n const debouncedOnDragEnter = useDebouncedCallback(onDragEnter, 100)\n const { RenderingComponent, DisplayBlurb } = display\n const dimmed = draggingTrackId !== undefined && draggingTrackId !== display.id\n\n return (\n <Paper className={classes.root} variant=\"outlined\">\n <TrackContainerLabel model={track} view={model} />\n <div\n className={classes.trackRenderingContainer}\n style={{ height }}\n onScroll={event => {\n const target = event.target as HTMLDivElement\n display.setScrollTop(target.scrollTop)\n }}\n onDragEnter={debouncedOnDragEnter}\n data-testid={`trackRenderingContainer-${model.id}-${trackId}`}\n role=\"presentation\"\n >\n <div ref={ref} style={{ transform: `scaleX(${model.scaleFactor})` }}>\n <RenderingComponent\n model={display}\n onHorizontalScroll={horizontalScroll}\n />\n </div>\n\n {DisplayBlurb ? (\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: display.height - 20,\n }}\n >\n <DisplayBlurb model={display} />\n </div>\n ) : null}\n </div>\n <div\n className={classes.overlay}\n style={{\n height: display.height,\n background: dimmed ? 'rgba(0, 0, 0, 0.4)' : undefined,\n }}\n onDragEnter={debouncedOnDragEnter}\n />\n <ResizeHandle\n onDrag={display.resizeHeight}\n className={classes.resizeHandle}\n />\n </Paper>\n )\n}\n\nexport default observer(TrackContainer)\n","import React, { useRef, useEffect, useState } from 'react'\nimport ReactPropTypes from 'prop-types'\nimport { observer, PropTypes as MobxPropTypes } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\n// material ui\nimport { alpha } from '@material-ui/core/styles/colorManipulator'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Popover from '@material-ui/core/Popover'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport Typography from '@material-ui/core/Typography'\nimport { stringify } from '@jbrowse/core/util'\nimport { Menu } from '@jbrowse/core/ui'\nimport { LinearGenomeViewStateModel, BpOffset } from '..'\n\ntype LGV = Instance<LinearGenomeViewStateModel>\n\nconst useStyles = makeStyles(theme => {\n const background = theme.palette.tertiary\n ? alpha(theme.palette.tertiary.main, 0.7)\n : alpha(theme.palette.primary.main, 0.7)\n return {\n rubberBand: {\n height: '100%',\n background,\n position: 'absolute',\n zIndex: 10,\n textAlign: 'center',\n overflow: 'hidden',\n },\n rubberBandControl: {\n cursor: 'crosshair',\n width: '100%',\n minHeight: 8,\n },\n rubberBandText: {\n color: theme.palette.tertiary\n ? theme.palette.tertiary.contrastText\n : theme.palette.primary.contrastText,\n },\n popover: {\n mouseEvents: 'none',\n cursor: 'crosshair',\n },\n paper: {\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n },\n guide: {\n pointerEvents: 'none',\n height: '100%',\n width: 1,\n position: 'absolute',\n zIndex: 10,\n },\n }\n})\n\nconst VerticalGuide = observer(\n ({ model, coordX }: { model: LGV; coordX: number }) => {\n const classes = useStyles()\n return (\n <Tooltip\n open\n placement=\"top\"\n title={stringify(model.pxToBp(coordX))}\n arrow\n >\n <div\n className={classes.guide}\n style={{\n left: coordX,\n background: 'red',\n }}\n />\n </Tooltip>\n )\n },\n)\n\nfunction RubberBand({\n model,\n ControlComponent = <div />,\n}: {\n model: LGV\n ControlComponent?: React.ReactElement\n}) {\n const [startX, setStartX] = useState<number>()\n const [currentX, setCurrentX] = useState<number>()\n\n // clientX and clientY used for anchorPosition for menu\n // offsetX used for calculations about width of selection\n const [anchorPosition, setAnchorPosition] = useState<{\n offsetX: number\n clientX: number\n clientY: number\n }>()\n const [guideX, setGuideX] = useState<number | undefined>()\n const controlsRef = useRef<HTMLDivElement>(null)\n const rubberBandRef = useRef(null)\n const classes = useStyles()\n const mouseDragging = startX !== undefined && anchorPosition === undefined\n\n const { setOffsets, pxToBp } = model\n\n useEffect(() => {\n function computeOffsets(offsetX: number) {\n if (startX === undefined) {\n return\n }\n let leftPx = startX\n let rightPx = offsetX\n // handles clicking and draging to the left\n if (rightPx < leftPx) {\n ;[leftPx, rightPx] = [rightPx, leftPx]\n }\n const leftOffset = pxToBp(leftPx)\n const rightOffset = pxToBp(rightPx)\n\n return { leftOffset, rightOffset }\n }\n\n function globalMouseMove(event: MouseEvent) {\n if (controlsRef.current && mouseDragging) {\n const relativeX =\n event.clientX - controlsRef.current.getBoundingClientRect().left\n setCurrentX(relativeX)\n }\n }\n\n function globalMouseUp(event: MouseEvent) {\n if (startX !== undefined && controlsRef.current) {\n const { clientX, clientY } = event\n const ref = controlsRef.current\n const offsetX = clientX - ref.getBoundingClientRect().left\n // as stated above, store both clientX/Y and offsetX for different\n // purposes\n setAnchorPosition({\n offsetX,\n clientX,\n clientY,\n })\n const { leftOffset, rightOffset } = computeOffsets(offsetX) as {\n leftOffset: BpOffset\n rightOffset: BpOffset\n }\n setOffsets(leftOffset, rightOffset)\n setGuideX(undefined)\n }\n }\n if (mouseDragging) {\n window.addEventListener('mousemove', globalMouseMove)\n window.addEventListener('mouseup', globalMouseUp)\n return () => {\n window.removeEventListener('mousemove', globalMouseMove)\n window.removeEventListener('mouseup', globalMouseUp)\n }\n }\n return () => {}\n }, [startX, mouseDragging, anchorPosition, setOffsets, pxToBp])\n\n useEffect(() => {\n if (\n !mouseDragging &&\n currentX !== undefined &&\n startX !== undefined &&\n Math.abs(currentX - startX) <= 3\n ) {\n handleClose()\n }\n }, [mouseDragging, currentX, startX, model.bpPerPx])\n\n function mouseDown(event: React.MouseEvent<HTMLDivElement>) {\n event.preventDefault()\n event.stopPropagation()\n const relativeX =\n event.clientX -\n (event.target as HTMLDivElement).getBoundingClientRect().left\n setStartX(relativeX)\n setCurrentX(relativeX)\n }\n\n function mouseMove(event: React.MouseEvent<HTMLDivElement>) {\n const target = event.target as HTMLDivElement\n setGuideX(event.clientX - target.getBoundingClientRect().left)\n }\n\n function mouseOut() {\n setGuideX(undefined)\n model.setOffsets(undefined, undefined)\n }\n\n function handleClose() {\n setAnchorPosition(undefined)\n setStartX(undefined)\n setCurrentX(undefined)\n }\n\n const open = Boolean(anchorPosition)\n\n function handleMenuItemClick(_: unknown, callback: Function) {\n callback()\n handleClose()\n }\n\n if (startX === undefined) {\n return (\n <>\n {guideX !== undefined ? (\n <VerticalGuide model={model} coordX={guideX} />\n ) : null}\n <div\n data-testid=\"rubberBand_controls\"\n className={classes.rubberBandControl}\n role=\"presentation\"\n ref={controlsRef}\n onMouseDown={mouseDown}\n onMouseOut={mouseOut}\n onMouseMove={mouseMove}\n >\n {ControlComponent}\n </div>\n </>\n )\n }\n\n /* Calculating Pixels for Mouse Dragging */\n const right = anchorPosition ? anchorPosition.offsetX : currentX || 0\n const left = right < startX ? right : startX\n const width = Math.abs(right - startX)\n const leftBpOffset = model.pxToBp(left)\n const rightBpOffset = model.pxToBp(left + width)\n const numOfBpSelected = Math.ceil(width * model.bpPerPx)\n return (\n <>\n {rubberBandRef.current ? (\n <>\n <Popover\n className={classes.popover}\n classes={{\n paper: classes.paper,\n }}\n open\n anchorEl={rubberBandRef.current}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n keepMounted\n disableRestoreFocus\n >\n <Typography>{stringify(leftBpOffset)}</Typography>\n </Popover>\n <Popover\n className={classes.popover}\n classes={{\n paper: classes.paper,\n }}\n open\n anchorEl={rubberBandRef.current}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n keepMounted\n disableRestoreFocus\n >\n <Typography>{stringify(rightBpOffset)}</Typography>\n </Popover>\n </>\n ) : null}\n <div\n ref={rubberBandRef}\n className={classes.rubberBand}\n style={{ left, width }}\n >\n <Typography variant=\"h6\" className={classes.rubberBandText}>\n {numOfBpSelected.toLocaleString('en-US')} bp\n </Typography>\n </div>\n <div\n data-testid=\"rubberBand_controls\"\n className={classes.rubberBandControl}\n role=\"presentation\"\n ref={controlsRef}\n onMouseDown={mouseDown}\n onMouseOut={mouseOut}\n onMouseMove={mouseMove}\n >\n {ControlComponent}\n </div>\n {anchorPosition ? (\n <Menu\n anchorReference=\"anchorPosition\"\n anchorPosition={{\n left: anchorPosition.clientX,\n top: anchorPosition.clientY,\n }}\n onMenuItemClick={handleMenuItemClick}\n open={open}\n onClose={handleClose}\n menuItems={model.rubberBandMenuItems()}\n />\n ) : null}\n </>\n )\n}\n\nRubberBand.propTypes = {\n model: MobxPropTypes.objectOrObservableObject.isRequired,\n ControlComponent: ReactPropTypes.node,\n}\n\nRubberBand.defaultProps = {\n ControlComponent: <div />,\n}\n\nexport default observer(RubberBand)\n","import {\n ContentBlock,\n ElidedBlock,\n InterRegionPaddingBlock,\n} from '@jbrowse/core/util/blockTypes'\nimport Paper from '@material-ui/core/Paper'\nimport Typography from '@material-ui/core/Typography'\nimport { makeStyles } from '@material-ui/core/styles'\nimport clsx from 'clsx'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport React from 'react'\nimport { LinearGenomeViewStateModel } from '..'\nimport {\n ContentBlock as ContentBlockComponent,\n ElidedBlock as ElidedBlockComponent,\n InterRegionPaddingBlock as InterRegionPaddingBlockComponent,\n} from '../../BaseLinearDisplay/components/Block'\nimport { makeTicks } from '../util'\n\ntype LGV = Instance<LinearGenomeViewStateModel>\n\nconst useStyles = makeStyles(theme => ({\n scaleBarContainer: {\n overflow: 'hidden',\n position: 'relative',\n },\n scaleBarZoomContainer: {\n position: 'relative',\n zIndex: 1,\n },\n scaleBar: {\n position: 'absolute',\n display: 'flex',\n pointerEvents: 'none',\n },\n majorTickLabel: {\n fontSize: '11px',\n zIndex: 1,\n background: theme.palette.background.paper,\n lineHeight: 'normal',\n pointerEvents: 'none',\n },\n tick: {\n position: 'absolute',\n width: 0,\n display: 'flex',\n justifyContent: 'center',\n pointerEvents: 'none',\n },\n refLabel: {\n fontSize: '11px',\n position: 'absolute',\n left: '2px',\n top: '-1px',\n fontWeight: 'bold',\n lineHeight: 'normal',\n zIndex: 1,\n pointerEvents: 'none',\n background: theme.palette.background.paper,\n },\n}))\n\nconst RenderedRefNameLabels = observer(({ model }: { model: LGV }) => {\n const classes = useStyles()\n\n // find the block that needs pinning to the left side for context\n let lastLeftBlock = 0\n model.staticBlocks.forEach((block, i) => {\n if (block.offsetPx - model.offsetPx < 0) {\n lastLeftBlock = i\n }\n })\n return (\n <>\n {model.staticBlocks.map((block, index) => {\n return block instanceof ContentBlock &&\n (block.isLeftEndOfDisplayedRegion || index === lastLeftBlock) ? (\n <Typography\n key={`refLabel-${block.key}-${index}`}\n style={{\n left:\n index === lastLeftBlock\n ? Math.max(0, -model.offsetPx)\n : block.offsetPx - model.offsetPx - 1,\n paddingLeft: index === lastLeftBlock ? 0 : 1,\n }}\n className={classes.refLabel}\n data-testid={`refLabel-${block.refName}`}\n >\n {block.refName}\n </Typography>\n ) : null\n })}\n </>\n )\n})\n\nconst RenderedScaleBarLabels = observer(({ model }: { model: LGV }) => {\n const classes = useStyles()\n\n return (\n <>\n {model.staticBlocks.map((block, index) => {\n if (block instanceof ContentBlock) {\n const ticks = makeTicks(\n block.start,\n block.end,\n model.bpPerPx,\n true,\n false,\n )\n\n return (\n <ContentBlockComponent key={`${block.key}-${index}`} block={block}>\n {ticks.map(tick => {\n if (tick.type === 'major') {\n const x =\n (block.reversed\n ? block.end - tick.base\n : tick.base - block.start) / model.bpPerPx\n const baseNumber = (tick.base + 1).toLocaleString('en-US')\n return (\n <div\n key={tick.base}\n className={classes.tick}\n style={{ left: x }}\n >\n {baseNumber ? (\n <Typography className={classes.majorTickLabel}>\n {baseNumber}\n </Typography>\n ) : null}\n </div>\n )\n }\n return null\n })}\n </ContentBlockComponent>\n )\n }\n if (block instanceof ElidedBlock) {\n return <ElidedBlockComponent key={block.key} width={block.widthPx} />\n }\n if (block instanceof InterRegionPaddingBlock) {\n return (\n <InterRegionPaddingBlockComponent\n key={block.key}\n width={block.widthPx}\n style={{ background: 'none' }}\n boundary={block.variant === 'boundary'}\n />\n )\n }\n return null\n })}\n </>\n )\n})\n\nconst ScaleBar = React.forwardRef(\n (\n {\n model,\n style,\n className,\n ...other\n }: { model: LGV; style?: React.CSSProperties; className?: string },\n ref,\n ) => {\n const classes = useStyles()\n\n const offsetLeft = model.staticBlocks.offsetPx - model.offsetPx\n return (\n <Paper\n data-resizer=\"true\" // used to avoid click-and-drag scrolls on trackscontainer\n className={clsx(classes.scaleBarContainer, className)}\n variant=\"outlined\"\n ref={ref}\n style={style}\n {...other}\n >\n <div\n className={classes.scaleBarZoomContainer}\n style={{\n transform:\n model.scaleFactor !== 1\n ? `scaleX(${model.scaleFactor})`\n : undefined,\n }}\n >\n <div\n className={classes.scaleBar}\n style={{\n left: offsetLeft - 1,\n width: model.staticBlocks.totalWidthPx,\n ...style,\n }}\n >\n <RenderedScaleBarLabels model={model} />\n </div>\n </div>\n <RenderedRefNameLabels model={model} />\n </Paper>\n )\n },\n)\n\nexport default observer(ScaleBar)\n","import {\n ContentBlock,\n ElidedBlock,\n InterRegionPaddingBlock,\n} from '@jbrowse/core/util/blockTypes'\nimport { makeStyles } from '@material-ui/core/styles'\nimport clsx from 'clsx'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport React from 'react'\nimport { LinearGenomeViewStateModel } from '..'\nimport {\n ContentBlock as ContentBlockComponent,\n ElidedBlock as ElidedBlockComponent,\n InterRegionPaddingBlock as InterRegionPaddingBlockComponent,\n} from '../../BaseLinearDisplay/components/Block'\n\nimport { makeTicks } from '../util'\n\ntype LGV = Instance<LinearGenomeViewStateModel>\n\nconst useStyles = makeStyles(theme => ({\n verticalGuidesZoomContainer: {\n position: 'absolute',\n height: '100%',\n width: '100%',\n zIndex: 1,\n pointerEvents: 'none',\n },\n verticalGuidesContainer: {\n position: 'absolute',\n height: '100%',\n zIndex: 1,\n pointerEvents: 'none',\n display: 'flex',\n },\n tick: {\n position: 'absolute',\n height: '100%',\n width: 1,\n },\n majorTick: {\n background: theme.palette.text.hint,\n },\n minorTick: {\n background: theme.palette.divider,\n },\n}))\nconst RenderedVerticalGuides = observer(({ model }: { model: LGV }) => {\n const classes = useStyles()\n return (\n <>\n {model.staticBlocks.map((block, index) => {\n if (block instanceof ContentBlock) {\n const ticks = makeTicks(block.start, block.end, model.bpPerPx)\n return (\n <ContentBlockComponent key={`${block.key}-${index}`} block={block}>\n {ticks.map(tick => {\n const x =\n (block.reversed\n ? block.end - tick.base\n : tick.base - block.start) / model.bpPerPx\n return (\n <div\n key={tick.base}\n className={clsx(\n classes.tick,\n tick.type === 'major' || tick.type === 'labeledMajor'\n ? classes.majorTick\n : classes.minorTick,\n )}\n style={{ left: x }}\n />\n )\n })}\n </ContentBlockComponent>\n )\n }\n if (block instanceof ElidedBlock) {\n return <ElidedBlockComponent key={block.key} width={block.widthPx} />\n }\n if (block instanceof InterRegionPaddingBlock) {\n return (\n <InterRegionPaddingBlockComponent\n key={block.key}\n width={block.widthPx}\n boundary={block.variant === 'boundary'}\n />\n )\n }\n return null\n })}\n </>\n )\n})\nfunction VerticalGuides({ model }: { model: LGV }) {\n const classes = useStyles()\n // find the block that needs pinning to the left side for context\n const offsetLeft = model.staticBlocks.offsetPx - model.offsetPx\n return (\n <div\n className={classes.verticalGuidesZoomContainer}\n style={{\n transform:\n model.scaleFactor !== 1 ? `scaleX(${model.scaleFactor})` : undefined,\n }}\n >\n <div\n className={classes.verticalGuidesContainer}\n style={{\n left: offsetLeft,\n width: model.staticBlocks.totalWidthPx,\n }}\n >\n <RenderedVerticalGuides model={model} />\n </div>\n </div>\n )\n}\n\nexport default observer(VerticalGuides)\n","import { makeStyles } from '@material-ui/core/styles'\nimport { observer, PropTypes as MobxPropTypes } from 'mobx-react'\nimport React, { useRef } from 'react'\nimport { Instance } from 'mobx-state-tree'\nimport { LinearGenomeViewStateModel } from '..'\n\ntype LGV = Instance<LinearGenomeViewStateModel>\n\nconst useStyles = makeStyles(() => ({\n centerLineContainer: {\n background: 'transparent',\n height: '100%',\n zIndex: 5, // above the track but under menu\n position: 'absolute',\n border: '1px black dashed',\n borderTop: 'none',\n borderBottom: 'none',\n pointerEvents: 'none',\n },\n centerLineText: {\n position: 'absolute',\n pointerEvents: 'none',\n whiteSpace: 'nowrap',\n fontWeight: 'bold',\n },\n}))\n\nfunction CenterLine({ model }: { model: LGV }) {\n const { bpPerPx, centerLineInfo, trackHeights, tracks, width } = model\n const ref = useRef<HTMLDivElement>(null)\n const classes = useStyles()\n const startingPosition = width / 2\n\n return tracks.length ? (\n <div\n data-testid=\"centerline_container\"\n className={classes.centerLineContainer}\n role=\"presentation\"\n ref={ref}\n style={{\n left: `${startingPosition}px`,\n width: Math.max(1 / bpPerPx, 1),\n }}\n >\n {centerLineInfo && (\n <div\n // text that indicates what bp is center, positioned\n // at the bottom right of the center line\n data-testid=\"centerline_text\"\n className={classes.centerLineText}\n role=\"presentation\"\n style={{\n left: Math.max(1 / bpPerPx, 1) + 5,\n top: trackHeights,\n }}\n >\n {/* change bp to refName */}\n {centerLineInfo.refName}:{' '}\n {Math.max(Math.round(centerLineInfo.offset) + 1, 0)}\n </div>\n )}\n </div>\n ) : null\n}\n\nCenterLine.propTypes = {\n model: MobxPropTypes.objectOrObservableObject.isRequired,\n}\n\nexport default observer(CenterLine)\n","import { makeStyles } from '@material-ui/core/styles'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport React, { useEffect, useRef, useState } from 'react'\nimport normalizeWheel from 'normalize-wheel'\n\nimport {\n LinearGenomeViewStateModel,\n RESIZE_HANDLE_HEIGHT,\n SCALE_BAR_HEIGHT,\n} from '..'\nimport RubberBand from './RubberBand'\nimport ScaleBar from './ScaleBar'\nimport VerticalGuides from './VerticalGuides'\nimport CenterLine from './CenterLine'\n\nconst useStyles = makeStyles(theme => ({\n tracksContainer: {\n position: 'relative',\n borderRadius: theme.shape.borderRadius,\n overflow: 'hidden',\n },\n spacer: {\n position: 'relative',\n height: RESIZE_HANDLE_HEIGHT,\n },\n}))\n\ntype LGV = Instance<LinearGenomeViewStateModel>\ntype Timer = ReturnType<typeof setTimeout>\n\nfunction TracksContainer({\n children,\n model,\n}: {\n children: React.ReactNode\n model: LGV\n}) {\n const classes = useStyles()\n // refs are to store these variables to avoid repeated rerenders associated\n // with useState/setState\n const delta = useRef(0)\n const scheduled = useRef(false)\n const timeout = useRef<Timer>()\n const ref = useRef<HTMLDivElement>(null)\n const prevX = useRef<number>(0)\n\n const [mouseDragging, setMouseDragging] = useState(false)\n\n useEffect(() => {\n let cleanup = () => {}\n\n function globalMouseMove(event: MouseEvent) {\n event.preventDefault()\n const currX = event.clientX\n const distance = currX - prevX.current\n if (distance) {\n // use rAF to make it so multiple event handlers aren't fired per-frame\n // see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/\n if (!scheduled.current) {\n scheduled.current = true\n window.requestAnimationFrame(() => {\n model.horizontalScroll(-distance)\n scheduled.current = false\n prevX.current = event.clientX\n })\n }\n }\n }\n\n function globalMouseUp() {\n prevX.current = 0\n if (mouseDragging) {\n setMouseDragging(false)\n }\n }\n\n if (mouseDragging) {\n window.addEventListener('mousemove', globalMouseMove, true)\n window.addEventListener('mouseup', globalMouseUp, true)\n cleanup = () => {\n window.removeEventListener('mousemove', globalMouseMove, true)\n window.removeEventListener('mouseup', globalMouseUp, true)\n }\n }\n return cleanup\n }, [model, mouseDragging, prevX])\n\n function mouseDown(event: React.MouseEvent) {\n // check if clicking a draggable element or a resize handle\n const target = event.target as HTMLElement\n if (target.draggable || target.dataset.resizer) {\n return\n }\n\n // otherwise do click and drag scroll\n if (event.button === 0) {\n prevX.current = event.clientX\n setMouseDragging(true)\n }\n }\n\n // this local mouseup is used in addition to the global because sometimes\n // the global add/remove are not called in time, resulting in issue #533\n function mouseUp(event: React.MouseEvent) {\n event.preventDefault()\n setMouseDragging(false)\n }\n\n function mouseLeave(event: React.MouseEvent) {\n event.preventDefault()\n }\n\n useEffect(() => {\n const curr = ref.current\n // if ctrl is held down, zoom in with y-scroll\n // else scroll horizontally with x-scroll\n function onWheel(origEvent: WheelEvent) {\n const event = normalizeWheel(origEvent)\n if (origEvent.ctrlKey === true) {\n origEvent.preventDefault()\n delta.current += event.pixelY / 500\n model.setScaleFactor(\n delta.current < 0 ? 1 - delta.current : 1 / (1 + delta.current),\n )\n if (timeout.current) {\n clearTimeout(timeout.current)\n }\n timeout.current = setTimeout(() => {\n model.setScaleFactor(1)\n model.zoomTo(\n delta.current > 0\n ? model.bpPerPx * (1 + delta.current)\n : model.bpPerPx / (1 - delta.current),\n )\n delta.current = 0\n }, 300)\n } else {\n // this is needed to stop the event from triggering \"back button\n // action\" on MacOSX etc. but is a heuristic to avoid preventing the\n // inner-track scroll behavior\n if (Math.abs(event.pixelX) > Math.abs(2 * event.pixelY)) {\n origEvent.preventDefault()\n }\n delta.current += event.pixelX\n if (!scheduled.current) {\n // use rAF to make it so multiple event handlers aren't fired per-frame\n // see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/\n scheduled.current = true\n window.requestAnimationFrame(() => {\n model.horizontalScroll(delta.current)\n delta.current = 0\n scheduled.current = false\n })\n }\n }\n }\n if (curr) {\n curr.addEventListener('wheel', onWheel)\n return () => {\n curr.removeEventListener('wheel', onWheel)\n }\n }\n return () => {}\n }, [model])\n\n return (\n <div\n ref={ref}\n role=\"presentation\"\n className={classes.tracksContainer}\n onMouseDown={mouseDown}\n onMouseUp={mouseUp}\n onMouseLeave={mouseLeave}\n >\n <VerticalGuides model={model} />\n {model.showCenterLine ? <CenterLine model={model} /> : null}\n\n <RubberBand\n model={model}\n ControlComponent={\n <ScaleBar\n model={model}\n style={{ height: SCALE_BAR_HEIGHT, boxSizing: 'border-box' }}\n />\n }\n />\n {children}\n </div>\n )\n}\n\nexport default observer(TracksContainer)\n","import React, { useState, lazy } from 'react'\nimport { observer } from 'mobx-react'\nimport { getSession } from '@jbrowse/core/util'\nimport {\n Button,\n CircularProgress,\n Container,\n Grid,\n makeStyles,\n} from '@material-ui/core'\nimport { SearchType } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport ErrorMessage from '@jbrowse/core/ui/ErrorMessage'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport AssemblySelector from '@jbrowse/core/ui/AssemblySelector'\nimport CloseIcon from '@material-ui/icons/Close'\n\n// locals\nimport RefNameAutocomplete from './RefNameAutocomplete'\nimport { LinearGenomeViewModel } from '..'\nconst SearchResultsDialog = lazy(() => import('./SearchResultsDialog'))\n\nconst useStyles = makeStyles(theme => ({\n importFormContainer: {\n padding: theme.spacing(2),\n },\n button: {\n margin: theme.spacing(2),\n },\n}))\n\ntype LGV = LinearGenomeViewModel\n\nconst ImportForm = observer(({ model }: { model: LGV }) => {\n const classes = useStyles()\n const session = getSession(model)\n const { assemblyNames, assemblyManager, textSearchManager } = session\n const {\n rankSearchResults,\n isSearchDialogDisplayed,\n error: modelError,\n } = model\n const [selectedAsm, setSelectedAsm] = useState(assemblyNames[0])\n const [error, setError] = useState<typeof modelError | undefined>(modelError)\n const searchScope = model.searchScope(selectedAsm)\n\n const assembly = assemblyManager.get(selectedAsm)\n const assemblyError = assemblyNames.length\n ? assembly?.error\n : 'No configured assemblies'\n const regions = assembly?.regions || []\n const err = assemblyError || error\n\n const [myOption, setOption] = useState<BaseResult>()\n\n // use this instead of useState initializer because the useState initializer\n // won't update in response to an observable\n const option =\n myOption ||\n new BaseResult({\n label: regions[0]?.refName,\n })\n\n const selectedRegion = option?.getLocation()\n\n async function fetchResults(query: string, searchType?: SearchType) {\n if (!textSearchManager) {\n console.warn('No text search manager')\n }\n\n const textSearchResults = await textSearchManager?.search(\n {\n queryString: query,\n searchType,\n },\n searchScope,\n rankSearchResults,\n )\n\n const refNameResults = assembly?.allRefNames\n ?.filter(refName => refName.startsWith(query))\n .map(r => new BaseResult({ label: r }))\n .slice(0, 10)\n\n return [...(refNameResults || []), ...(textSearchResults || [])]\n }\n\n // gets a string as input, or use stored option results from previous query,\n // then re-query and\n // 1) if it has multiple results: pop a dialog\n // 2) if it's a single result navigate to it\n // 3) else assume it's a locstring and navigate to it\n async function handleSelectedRegion(input: string) {\n if (!option) {\n return\n }\n let trackId = option.getTrackId()\n let location = input || option.getLocation() || ''\n try {\n if (assembly?.allRefNames?.includes(location)) {\n model.navToLocString(location, selectedAsm)\n } else {\n const results = await fetchResults(input, 'exact')\n if (results && results.length > 1) {\n model.setSearchResults(results, input.toLowerCase())\n return\n } else if (results?.length === 1) {\n location = results[0].getLocation()\n trackId = results[0].getTrackId()\n }\n\n model.navToLocString(location, selectedAsm)\n if (trackId) {\n model.showTrack(trackId)\n }\n }\n } catch (e) {\n console.error(e)\n session.notify(`${e}`, 'warning')\n }\n }\n\n // implementation notes:\n // having this wrapped in a form allows intuitive use of enter key to submit\n return (\n <div>\n {err ? <ErrorMessage error={err} /> : null}\n <Container className={classes.importFormContainer}>\n <form onSubmit={event => event.preventDefault()}>\n <Grid\n container\n spacing={1}\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <Grid item>\n <AssemblySelector\n onChange={val => {\n setError(undefined)\n setSelectedAsm(val)\n }}\n session={session}\n selected={selectedAsm}\n />\n </Grid>\n <Grid item>\n {selectedAsm ? (\n err ? (\n <CloseIcon style={{ color: 'red' }} />\n ) : selectedRegion ? (\n <RefNameAutocomplete\n fetchResults={fetchResults}\n model={model}\n assemblyName={assemblyError ? undefined : selectedAsm}\n value={selectedRegion}\n // note: minWidth 270 accomodates full width of helperText\n minWidth={270}\n onSelect={option => setOption(option)}\n TextFieldProps={{\n margin: 'normal',\n variant: 'outlined',\n helperText:\n 'Enter sequence name, feature name, or location',\n }}\n />\n ) : (\n <CircularProgress\n role=\"progressbar\"\n size={20}\n disableShrink\n />\n )\n ) : null}\n </Grid>\n <Grid item></Grid>\n <Grid item>\n <Button\n type=\"submit\"\n disabled={!selectedRegion}\n className={classes.button}\n onClick={() => {\n model.setError(undefined)\n if (selectedRegion) {\n handleSelectedRegion(selectedRegion)\n }\n }}\n variant=\"contained\"\n color=\"primary\"\n >\n Open\n </Button>\n <Button\n disabled={!selectedRegion}\n className={classes.button}\n onClick={() => {\n model.setError(undefined)\n model.showAllRegionsInAssembly(selectedAsm)\n }}\n variant=\"contained\"\n color=\"secondary\"\n >\n Show all regions in assembly\n </Button>\n </Grid>\n </Grid>\n </form>\n </Container>\n {isSearchDialogDisplayed ? (\n <SearchResultsDialog\n model={model}\n optAssemblyName={selectedAsm}\n handleClose={() => model.setSearchResults(undefined, undefined)}\n />\n ) : null}\n </div>\n )\n})\n\nexport default ImportForm\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport IconButton from '@material-ui/core/IconButton'\nimport ZoomIn from '@material-ui/icons/ZoomIn'\nimport ZoomOut from '@material-ui/icons/ZoomOut'\nimport ArrowDown from '@material-ui/icons/KeyboardArrowDown'\nimport Paper from '@material-ui/core/Paper'\nimport Menu from '@jbrowse/core/ui/Menu'\nimport { LinearGenomeViewModel } from '..'\n\nconst MiniControls = observer((props: { model: LinearGenomeViewModel }) => {\n const { model } = props\n const { bpPerPx, maxBpPerPx, minBpPerPx, scaleFactor } = model\n const [anchorEl, setAnchorEl] = useState<HTMLElement>()\n\n return (\n <>\n <Paper style={{ background: '#aaa7' }}>\n <IconButton\n color=\"secondary\"\n onClick={event => {\n setAnchorEl(event.currentTarget)\n }}\n >\n <ArrowDown />\n </IconButton>\n\n <IconButton\n data-testid=\"zoom_out\"\n onClick={() => {\n model.zoom(bpPerPx * 2)\n }}\n disabled={bpPerPx >= maxBpPerPx - 0.0001 || scaleFactor !== 1}\n color=\"secondary\"\n >\n <ZoomOut />\n </IconButton>\n <IconButton\n data-testid=\"zoom_in\"\n onClick={() => {\n model.zoom(model.bpPerPx / 2)\n }}\n disabled={bpPerPx <= minBpPerPx + 0.0001 || scaleFactor !== 1}\n color=\"secondary\"\n >\n <ZoomIn />\n </IconButton>\n </Paper>\n <Menu\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onMenuItemClick={(_, callback) => {\n callback()\n setAnchorEl(undefined)\n }}\n onClose={() => {\n setAnchorEl(undefined)\n }}\n menuItems={model.menuItems()}\n />\n </>\n )\n})\n\nexport default MiniControls\n","import React, { useEffect, useMemo, useState } from 'react'\n\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Container,\n Typography,\n Divider,\n IconButton,\n TextField,\n makeStyles,\n} from '@material-ui/core'\nimport { observer } from 'mobx-react'\nimport { saveAs } from 'file-saver'\nimport { Region } from '@jbrowse/core/util/types'\nimport { getConf } from '@jbrowse/core/configuration'\nimport copy from 'copy-to-clipboard'\nimport { getSession } from '@jbrowse/core/util'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { formatSeqFasta } from '@jbrowse/core/util/formatFastaStrings'\n\n// icons\nimport { ContentCopy as ContentCopyIcon } from '@jbrowse/core/ui/Icons'\nimport CloseIcon from '@material-ui/icons/Close'\nimport GetAppIcon from '@material-ui/icons/GetApp'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\n\nconst useStyles = makeStyles(theme => ({\n loadingMessage: {\n padding: theme.spacing(5),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n dialogContent: {\n width: '80em',\n },\n textAreaFont: {\n fontFamily: 'Courier New',\n },\n}))\n\ntype LGV = LinearGenomeViewModel\n\n/**\n * Fetches and returns a list features for a given list of regions\n */\nasync function fetchSequence(\n model: LGV,\n regions: Region[],\n signal?: AbortSignal,\n) {\n const session = getSession(model)\n const { leftOffset, rightOffset } = model\n\n if (!leftOffset || !rightOffset) {\n throw new Error('no offsets on model to use for range')\n }\n\n if (leftOffset.assemblyName !== rightOffset.assemblyName) {\n throw new Error('not able to fetch sequences from multiple assemblies')\n }\n const { rpcManager, assemblyManager } = session\n const assemblyName = leftOffset.assemblyName || rightOffset.assemblyName || ''\n const assembly = assemblyManager.get(assemblyName)\n if (!assembly) {\n throw new Error(`assembly ${assemblyName} not found`)\n }\n const adapterConfig = getConf(assembly, ['sequence', 'adapter'])\n\n const sessionId = 'getSequence'\n const chunks = (await Promise.all(\n regions.map(region =>\n rpcManager.call(sessionId, 'CoreGetFeatures', {\n adapterConfig,\n region,\n sessionId,\n signal,\n }),\n ),\n )) as Feature[][]\n\n // assumes that we get whole sequence in a single getFeatures call\n return chunks.map(chunk => chunk[0])\n}\n\nfunction SequenceDialog({\n model,\n handleClose,\n}: {\n model: LinearGenomeViewModel\n handleClose: () => void\n}) {\n const classes = useStyles()\n const session = getSession(model)\n const [error, setError] = useState<unknown>()\n const [sequence, setSequence] = useState<string>()\n const loading = Boolean(sequence === undefined)\n const { leftOffset, rightOffset } = model\n\n // avoid infinite looping of useEffect\n // random note: the current selected region can't be a computed because it\n // uses action on base1dview even though it's on the ephemeral base1dview\n const regionsSelected = useMemo(\n () => model.getSelectedRegions(leftOffset, rightOffset),\n [model, leftOffset, rightOffset],\n )\n\n useEffect(() => {\n let active = true\n const controller = new AbortController()\n\n ;(async () => {\n try {\n if (regionsSelected.length > 0) {\n const chunks = await fetchSequence(\n model,\n regionsSelected,\n controller.signal,\n )\n if (active) {\n setSequence(\n formatSeqFasta(\n chunks\n .filter(f => !!f)\n .map(chunk => {\n const chunkSeq = chunk.get('seq')\n const chunkRefName = chunk.get('refName')\n const chunkStart = chunk.get('start') + 1\n const chunkEnd = chunk.get('end')\n const chunkLocstring = `${chunkRefName}:${chunkStart}-${chunkEnd}`\n if (chunkSeq?.length !== chunkEnd - chunkStart + 1) {\n throw new Error(\n `${chunkLocstring} returned ${chunkSeq.length.toLocaleString()} bases, but should have returned ${(\n chunkEnd - chunkStart\n ).toLocaleString()}`,\n )\n }\n return { header: chunkLocstring, seq: chunkSeq }\n }),\n ),\n )\n }\n } else {\n throw new Error('Selected region is out of bounds')\n }\n } catch (e) {\n console.error(e)\n if (active) {\n setError(e)\n }\n }\n })()\n\n return () => {\n controller.abort()\n active = false\n }\n }, [model, session, regionsSelected, setSequence])\n\n const sequenceTooLarge = sequence ? sequence.length > 1_000_000 : false\n\n return (\n <Dialog\n data-testid=\"sequence-dialog\"\n maxWidth=\"xl\"\n open\n onClose={handleClose}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n <DialogTitle id=\"alert-dialog-title\">\n Reference sequence\n {handleClose ? (\n <IconButton\n data-testid=\"close-seqDialog\"\n className={classes.closeButton}\n onClick={() => {\n handleClose()\n model.setOffsets(undefined, undefined)\n }}\n >\n <CloseIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n <Divider />\n\n <DialogContent>\n {error ? <Typography color=\"error\">{`${error}`}</Typography> : null}\n {loading && !error ? (\n <Container>\n Retrieving reference sequence...\n <CircularProgress\n style={{\n marginLeft: 10,\n }}\n size={20}\n disableShrink\n />\n </Container>\n ) : null}\n <TextField\n data-testid=\"rubberband-sequence\"\n variant=\"outlined\"\n multiline\n rows={5}\n disabled={sequenceTooLarge}\n className={classes.dialogContent}\n fullWidth\n value={\n sequenceTooLarge\n ? 'Reference sequence too large to display, use the download FASTA button'\n : sequence\n }\n InputProps={{\n readOnly: true,\n classes: {\n input: classes.textAreaFont,\n },\n }}\n />\n </DialogContent>\n <DialogActions>\n <Button\n onClick={() => {\n copy(sequence || '')\n session.notify('Copied to clipboard', 'success')\n }}\n disabled={loading || !!error || sequenceTooLarge}\n color=\"primary\"\n startIcon={<ContentCopyIcon />}\n >\n Copy to clipboard\n </Button>\n <Button\n onClick={() => {\n const seqFastaFile = new Blob([sequence || ''], {\n type: 'text/x-fasta;charset=utf-8',\n })\n saveAs(seqFastaFile, 'jbrowse_ref_seq.fa')\n }}\n disabled={loading || !!error}\n color=\"primary\"\n startIcon={<GetAppIcon />}\n >\n Download FASTA\n </Button>\n <Button onClick={handleClose} color=\"primary\" autoFocus>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n\nexport default observer(SequenceDialog)\n","import React from 'react'\nimport { getEnv, resolveIdentifier, getRoot } from 'mobx-state-tree'\nimport { getSession } from '@jbrowse/core/util'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Typography,\n Paper,\n makeStyles,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { LinearGenomeViewModel } from '../..'\n\nexport const useStyles = makeStyles(theme => ({\n dialogContent: {\n width: '80em',\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}))\n\nexport default function SearchResultsDialog({\n model,\n optAssemblyName,\n handleClose,\n}: {\n model: LinearGenomeViewModel\n optAssemblyName?: string\n handleClose: () => void\n}) {\n const classes = useStyles()\n const session = getSession(model)\n const { pluginManager } = getEnv(session)\n const { assemblyManager } = session\n let assemblyName = optAssemblyName\n if (model.displayedRegions.length > 0) {\n assemblyName = model.displayedRegions[0]?.assemblyName\n }\n if (!assemblyName) {\n throw new Error(`Assembly name not found`)\n }\n const assembly = assemblyManager.get(assemblyName)\n if (!assembly) {\n throw new Error(`assembly ${assemblyName} not found`)\n }\n if (!assembly.regions) {\n throw new Error(`assembly ${assemblyName} regions not loaded`)\n }\n const assemblyRegions = assembly.regions\n\n function handleClick(location: string) {\n try {\n const newRegion = assemblyRegions.find(\n region => location === region.refName,\n )\n if (newRegion) {\n model.setDisplayedRegions([newRegion])\n // we use showAllRegions after setDisplayedRegions to make the entire\n // region visible, xref #1703\n model.showAllRegions()\n } else {\n model.navToLocString(location, assemblyName)\n }\n } catch (e) {\n console.warn(e)\n session.notify(`${e}`, 'warning')\n }\n }\n\n function getTrackName(trackId: string | undefined) {\n if (trackId) {\n const trackConfigSchema = pluginManager.pluggableConfigSchemaType('track')\n const configuration = resolveIdentifier(\n trackConfigSchema,\n getRoot(model),\n trackId,\n )\n if (configuration) {\n return configuration.name?.value\n }\n }\n return ''\n }\n\n return (\n <Dialog open maxWidth=\"xl\" onClose={handleClose}>\n <DialogTitle>\n Search results\n {handleClose ? (\n <IconButton\n data-testid=\"close-resultsDialog\"\n className={classes.closeButton}\n onClick={() => {\n handleClose()\n }}\n >\n <CloseIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n <Divider />\n <DialogContent>\n {!model.searchResults?.length ? (\n <Typography>\n No results found for <b>{model.searchQuery}</b>\n </Typography>\n ) : (\n <>\n <Typography>\n Showing results for <b>{model.searchQuery}</b>\n </Typography>\n <TableContainer component={Paper}>\n <Table>\n <TableHead>\n <TableRow>\n <TableCell>Name</TableCell>\n <TableCell align=\"right\">Location</TableCell>\n <TableCell align=\"right\">Track</TableCell>\n <TableCell align=\"right\" />\n </TableRow>\n </TableHead>\n <TableBody>\n {model.searchResults.map(result => (\n <TableRow key={`${result.getId()}`}>\n <TableCell component=\"th\" scope=\"row\">\n {result.getLabel()}\n </TableCell>\n <TableCell align=\"right\">\n {result.getLocation()}\n </TableCell>\n <TableCell align=\"right\">\n {getTrackName(result.getTrackId()) || 'N/A'}\n </TableCell>\n <TableCell align=\"right\">\n <Button\n onClick={() => {\n handleClick(result.getLocation())\n const resultTrackId = result.getTrackId()\n if (resultTrackId) {\n model.showTrack(resultTrackId)\n }\n handleClose()\n }}\n disabled={!getTrackName(result.getTrackId())}\n color=\"primary\"\n variant=\"contained\"\n >\n Go\n </Button>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n </>\n )}\n </DialogContent>\n <Divider />\n <DialogActions>\n <Button onClick={() => handleClose()} color=\"primary\">\n Cancel\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import React from 'react'\nimport { Button, Paper, Typography, makeStyles } from '@material-ui/core'\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport Header from './Header'\nimport TrackContainer from './TrackContainer'\nimport TracksContainer from './TracksContainer'\nimport ImportForm from './ImportForm'\nimport MiniControls from './MiniControls'\nimport SequenceDialog from './SequenceDialog'\nimport SearchResultsDialog from './SearchResultsDialog'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles(theme => ({\n note: {\n textAlign: 'center',\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n },\n dots: {\n '&::after': {\n display: 'inline-block',\n animation: '$ellipsis 1.5s infinite',\n content: '\".\"',\n width: '1em',\n textAlign: 'left',\n },\n },\n '@keyframes ellipsis': {\n '0%': {\n content: '\".\"',\n },\n '33%': {\n content: '\"..\"',\n },\n '66%': {\n content: '\"...\"',\n },\n },\n}))\n\nconst LinearGenomeView = observer(({ model }: { model: LGV }) => {\n const { tracks, error, hideHeader, initialized, hasDisplayedRegions } = model\n const classes = useStyles()\n\n if (!initialized && !error) {\n return (\n <Typography className={classes.dots} variant=\"h5\">\n Loading\n </Typography>\n )\n }\n if (!hasDisplayedRegions || error) {\n return <ImportForm model={model} />\n }\n\n return (\n <div style={{ position: 'relative' }}>\n {model.seqDialogDisplayed ? (\n <SequenceDialog\n model={model}\n handleClose={() => {\n model.setSequenceDialogOpen(false)\n }}\n />\n ) : null}\n {model.isSearchDialogDisplayed ? (\n <SearchResultsDialog\n model={model}\n handleClose={() => {\n model.setSearchResults(undefined, undefined)\n }}\n />\n ) : null}\n {!hideHeader ? (\n <Header model={model} />\n ) : (\n <div\n style={{\n position: 'absolute',\n right: 0,\n zIndex: 1001,\n }}\n >\n <MiniControls model={model} />\n </div>\n )}\n <TracksContainer model={model}>\n {!tracks.length ? (\n <Paper variant=\"outlined\" className={classes.note}>\n <Typography>No tracks active.</Typography>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={model.activateTrackSelector}\n style={{ zIndex: 1000 }}\n startIcon={<TrackSelectorIcon />}\n >\n Open track selector\n </Button>\n </Paper>\n ) : (\n tracks.map(track => (\n <TrackContainer key={track.id} model={model} track={track} />\n ))\n )}\n </TracksContainer>\n </div>\n )\n})\n\nexport default LinearGenomeView\n","import { getConf, AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { BaseViewModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { Region } from '@jbrowse/core/util/types'\nimport { ElementId, Region as MUIRegion } from '@jbrowse/core/util/types/mst'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport {\n assembleLocString,\n clamp,\n findLastIndex,\n getContainingView,\n getSession,\n isViewContainer,\n isSessionModelWithWidgets,\n measureText,\n parseLocString,\n springAnimate,\n viewBpToPx,\n} from '@jbrowse/core/util'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport { BlockSet, BaseBlock } from '@jbrowse/core/util/blockTypes'\nimport calculateDynamicBlocks from '@jbrowse/core/util/calculateDynamicBlocks'\nimport calculateStaticBlocks from '@jbrowse/core/util/calculateStaticBlocks'\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\nimport { transaction, autorun } from 'mobx'\nimport {\n addDisposer,\n cast,\n getSnapshot,\n getRoot,\n resolveIdentifier,\n types,\n Instance,\n} from 'mobx-state-tree'\n\nimport Base1DView from '@jbrowse/core/util/Base1DViewModel'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport clone from 'clone'\nimport { saveAs } from 'file-saver'\n\n// icons\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport SyncAltIcon from '@material-ui/icons/SyncAlt'\nimport VisibilityIcon from '@material-ui/icons/Visibility'\nimport LabelIcon from '@material-ui/icons/Label'\nimport FolderOpenIcon from '@material-ui/icons/FolderOpen'\nimport PhotoCameraIcon from '@material-ui/icons/PhotoCamera'\nimport ZoomInIcon from '@material-ui/icons/ZoomIn'\nimport MenuOpenIcon from '@material-ui/icons/MenuOpen'\n\n// locals\nimport { renderToSvg } from './components/LinearGenomeViewSvg'\nimport RefNameAutocomplete from './components/RefNameAutocomplete'\nimport SearchBox from './components/SearchBox'\nimport ExportSvgDlg from './components/ExportSvgDialog'\nimport { ReturnToImportFormDialog } from '@jbrowse/core/ui'\n\nexport interface BpOffset {\n refName?: string\n index: number\n offset: number\n start?: number\n end?: number\n coord?: number\n reversed?: boolean\n assemblyName?: string\n oob?: boolean\n}\n\nexport interface ExportSvgOptions {\n rasterizeLayers?: boolean\n}\n\nfunction calculateVisibleLocStrings(contentBlocks: BaseBlock[]) {\n if (!contentBlocks.length) {\n return ''\n }\n const isSingleAssemblyName = contentBlocks.every(\n block => block.assemblyName === contentBlocks[0].assemblyName,\n )\n const locs = contentBlocks.map(block =>\n assembleLocString({\n ...block,\n start: Math.round(block.start),\n end: Math.round(block.end),\n assemblyName: isSingleAssemblyName ? undefined : block.assemblyName,\n }),\n )\n return locs.join(' ')\n}\n\nexport interface NavLocation {\n refName: string\n start?: number\n end?: number\n assemblyName?: string\n}\n\nexport const HEADER_BAR_HEIGHT = 48\nexport const HEADER_OVERVIEW_HEIGHT = 20\nexport const SCALE_BAR_HEIGHT = 17\nexport const RESIZE_HANDLE_HEIGHT = 3\nexport const INTER_REGION_PADDING_WIDTH = 2\nexport const WIDGET_HEIGHT = 32\nexport const SPACING = 7\n\nfunction localStorageGetItem(item: string) {\n return typeof localStorage !== 'undefined'\n ? localStorage.getItem(item)\n : undefined\n}\n\nexport function stateModelFactory(pluginManager: PluginManager) {\n return types\n .compose(\n BaseViewModel,\n types.model('LinearGenomeView', {\n id: ElementId,\n type: types.literal('LinearGenomeView'),\n offsetPx: 0,\n bpPerPx: 1,\n displayedRegions: types.array(MUIRegion),\n\n // we use an array for the tracks because the tracks are displayed in a\n // specific order that we need to keep.\n tracks: types.array(\n pluginManager.pluggableMstType('track', 'stateModel'),\n ),\n hideHeader: false,\n hideHeaderOverview: false,\n trackSelectorType: types.optional(\n types.enumeration(['hierarchical']),\n 'hierarchical',\n ),\n trackLabels: types.optional(\n types.string,\n () => localStorageGetItem('lgv-trackLabels') || 'overlapping',\n ),\n showCenterLine: types.optional(types.boolean, () => {\n const setting = localStorageGetItem('lgv-showCenterLine')\n return setting !== undefined && setting !== null ? !!+setting : false\n }),\n showCytobandsSetting: types.optional(types.boolean, () => {\n const setting = localStorageGetItem('lgv-showCytobands')\n return setting !== undefined && setting !== null ? !!+setting : true\n }),\n }),\n )\n .volatile(() => ({\n volatileWidth: undefined as number | undefined,\n minimumBlockWidth: 3,\n draggingTrackId: undefined as undefined | string,\n volatileError: undefined as undefined | Error,\n\n // array of callbacks to run after the next set of the displayedRegions,\n // which is basically like an onLoad\n afterDisplayedRegionsSetCallbacks: [] as Function[],\n scaleFactor: 1,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackRefs: {} as { [key: string]: any },\n coarseDynamicBlocks: [] as BaseBlock[],\n coarseTotalBp: 0,\n leftOffset: undefined as undefined | BpOffset,\n rightOffset: undefined as undefined | BpOffset,\n searchResults: undefined as undefined | BaseResult[],\n searchQuery: undefined as undefined | string,\n seqDialogDisplayed: false,\n }))\n .views(self => ({\n get width(): number {\n if (self.volatileWidth === undefined) {\n throw new Error(\n 'width undefined, make sure to check for model.initialized',\n )\n }\n return self.volatileWidth\n },\n get interRegionPaddingWidth() {\n return INTER_REGION_PADDING_WIDTH\n },\n }))\n .views(self => ({\n get assemblyErrors() {\n const { assemblyManager } = getSession(self)\n return this.assemblyNames\n .map(a => assemblyManager.get(a)?.error)\n .filter(f => !!f)\n .join(', ')\n },\n\n get assembliesInitialized() {\n const { assemblyManager } = getSession(self)\n return this.assemblyNames.every(\n a => assemblyManager.get(a)?.initialized,\n )\n },\n get initialized() {\n return self.volatileWidth !== undefined && this.assembliesInitialized\n },\n get hasDisplayedRegions() {\n return self.displayedRegions.length > 0\n },\n get isSearchDialogDisplayed() {\n return self.searchResults !== undefined\n },\n get scaleBarHeight() {\n return SCALE_BAR_HEIGHT + RESIZE_HANDLE_HEIGHT\n },\n get headerHeight() {\n if (self.hideHeader) {\n return 0\n }\n if (self.hideHeaderOverview) {\n return HEADER_BAR_HEIGHT\n }\n return HEADER_BAR_HEIGHT + HEADER_OVERVIEW_HEIGHT\n },\n get trackHeights() {\n return self.tracks\n .map(t => t.displays[0].height)\n .reduce((a, b) => a + b, 0)\n },\n\n get trackHeightsWithResizeHandles() {\n return this.trackHeights + self.tracks.length * RESIZE_HANDLE_HEIGHT\n },\n get height() {\n return (\n this.trackHeightsWithResizeHandles +\n this.headerHeight +\n this.scaleBarHeight\n )\n },\n get totalBp() {\n return self.displayedRegions.reduce((a, b) => a + b.end - b.start, 0)\n },\n\n get maxBpPerPx() {\n return this.totalBp / (self.width * 0.9)\n },\n\n get minBpPerPx() {\n return 1 / 50\n },\n\n get error() {\n return self.volatileError || this.assemblyErrors\n },\n\n get maxOffset() {\n // objectively determined to keep the linear genome on the main screen\n const leftPadding = 10\n return this.displayedRegionsTotalPx - leftPadding\n },\n\n get minOffset() {\n // objectively determined to keep the linear genome on the main screen\n const rightPadding = 30\n return -self.width + rightPadding\n },\n\n get displayedRegionsTotalPx() {\n return this.totalBp / self.bpPerPx\n },\n\n renderProps() {\n return {\n ...getParentRenderProps(self),\n bpPerPx: self.bpPerPx,\n highResolutionScaling: getConf(\n getSession(self),\n 'highResolutionScaling',\n ),\n }\n },\n\n get assemblyNames() {\n return [\n ...new Set(self.displayedRegions.map(region => region.assemblyName)),\n ]\n },\n searchScope(assemblyName: string) {\n return {\n assemblyName,\n includeAggregateIndexes: true,\n tracks: self.tracks,\n }\n },\n\n /**\n * @param refName - refName of the displayedRegion\n * @param coord - coordinate at the displayed Region\n * @param regionNumber - optional param used as identifier when\n * there are multiple displayedRegions with the same refName\n * @returns offsetPx of the displayed region that it lands in\n */\n bpToPx({\n refName,\n coord,\n regionNumber,\n }: {\n refName: string\n coord: number\n regionNumber?: number\n }) {\n return viewBpToPx({ refName, coord, regionNumber, self })\n },\n /**\n *\n * @param px - px in the view area, return value is the displayed regions\n * @returns BpOffset of the displayed region that it lands in\n */\n pxToBp(px: number) {\n let bpSoFar = 0\n const bp = (self.offsetPx + px) * self.bpPerPx\n const n = self.displayedRegions.length\n if (bp < 0) {\n const region = self.displayedRegions[0]\n const offset = bp\n return {\n ...getSnapshot(region),\n oob: true,\n coord: region.reversed\n ? Math.floor(region.end - offset) + 1\n : Math.floor(region.start + offset) + 1,\n offset,\n index: 0,\n }\n }\n\n const interRegionPaddingBp = self.interRegionPaddingWidth * self.bpPerPx\n const minimumBlockBp = self.minimumBlockWidth * self.bpPerPx\n\n for (let index = 0; index < self.displayedRegions.length; index += 1) {\n const region = self.displayedRegions[index]\n const len = region.end - region.start\n const offset = bp - bpSoFar\n if (len + bpSoFar > bp && bpSoFar <= bp) {\n return {\n ...getSnapshot(region),\n oob: false,\n offset,\n coord: region.reversed\n ? Math.floor(region.end - offset) + 1\n : Math.floor(region.start + offset) + 1,\n index,\n }\n }\n\n // add the interRegionPaddingWidth if the boundary is in the screen\n // e.g. offset>0 && offset<width\n if (\n region.end - region.start > minimumBlockBp &&\n offset / self.bpPerPx > 0 &&\n offset / self.bpPerPx < self.width\n ) {\n bpSoFar += len + interRegionPaddingBp\n } else {\n bpSoFar += len\n }\n }\n\n if (bp >= bpSoFar) {\n const region = self.displayedRegions[n - 1]\n const len = region.end - region.start\n const offset = bp - bpSoFar + len\n return {\n ...getSnapshot(region),\n oob: true,\n offset,\n coord: region.reversed\n ? Math.floor(region.end - offset) + 1\n : Math.floor(region.start + offset) + 1,\n index: n - 1,\n }\n }\n return {\n coord: 0,\n index: 0,\n refName: '',\n oob: true,\n assemblyName: '',\n offset: 0,\n start: 0,\n end: 0,\n reversed: false,\n }\n },\n\n getTrack(id: string) {\n return self.tracks.find(t => t.configuration.trackId === id)\n },\n\n rankSearchResults(results: BaseResult[]) {\n // order of rank\n const openTrackIds = self.tracks.map(\n track => track.configuration.trackId,\n )\n results.forEach(result => {\n if (openTrackIds !== []) {\n if (openTrackIds.includes(result.trackId)) {\n result.updateScore(result.getScore() + 1)\n }\n }\n })\n return results\n },\n\n // modifies view menu action onClick to apply to all tracks of same type\n rewriteOnClicks(trackType: string, viewMenuActions: MenuItem[]) {\n viewMenuActions.forEach((action: MenuItem) => {\n // go to lowest level menu\n if ('subMenu' in action) {\n this.rewriteOnClicks(trackType, action.subMenu)\n }\n if ('onClick' in action) {\n const holdOnClick = action.onClick\n action.onClick = (...args: unknown[]) => {\n self.tracks.forEach(track => {\n if (track.type === trackType) {\n holdOnClick.apply(track, [track, ...args])\n }\n })\n }\n }\n })\n },\n\n get trackTypeActions() {\n const allActions: Map<string, MenuItem[]> = new Map()\n self.tracks.forEach(track => {\n const trackInMap = allActions.get(track.type)\n if (!trackInMap) {\n const viewMenuActions = clone(track.viewMenuActions)\n this.rewriteOnClicks(track.type, viewMenuActions)\n allActions.set(track.type, viewMenuActions)\n }\n })\n\n return allActions\n },\n\n get centerLineInfo() {\n return self.displayedRegions.length\n ? this.pxToBp(self.width / 2)\n : undefined\n },\n }))\n .actions(self => ({\n setShowCytobands(flag: boolean) {\n self.showCytobandsSetting = flag\n localStorage.setItem('lgv-showCytobands', `${+flag}`)\n },\n setWidth(newWidth: number) {\n self.volatileWidth = newWidth\n },\n setError(error: Error | undefined) {\n self.volatileError = error\n },\n\n toggleHeader() {\n self.hideHeader = !self.hideHeader\n },\n\n toggleHeaderOverview() {\n self.hideHeaderOverview = !self.hideHeaderOverview\n },\n\n scrollTo(offsetPx: number) {\n const newOffsetPx = clamp(offsetPx, self.minOffset, self.maxOffset)\n self.offsetPx = newOffsetPx\n return newOffsetPx\n },\n\n zoomTo(bpPerPx: number) {\n const newBpPerPx = clamp(bpPerPx, self.minBpPerPx, self.maxBpPerPx)\n if (newBpPerPx === self.bpPerPx) {\n return newBpPerPx\n }\n const oldBpPerPx = self.bpPerPx\n self.bpPerPx = newBpPerPx\n\n if (Math.abs(oldBpPerPx - newBpPerPx) < 0.000001) {\n console.warn('zoomTo bpPerPx rounding error')\n return oldBpPerPx\n }\n\n // tweak the offset so that the center of the view remains at the same coordinate\n const viewWidth = self.width\n this.scrollTo(\n Math.round(\n ((self.offsetPx + viewWidth / 2) * oldBpPerPx) / newBpPerPx -\n viewWidth / 2,\n ),\n )\n return newBpPerPx\n },\n\n setOffsets(left: undefined | BpOffset, right: undefined | BpOffset) {\n // sets offsets used in the get sequence dialog\n self.leftOffset = left\n self.rightOffset = right\n },\n\n setSearchResults(\n results: BaseResult[] | undefined,\n query: string | undefined,\n ) {\n self.searchResults = results\n self.searchQuery = query\n },\n\n setSequenceDialogOpen(open: boolean) {\n self.seqDialogDisplayed = open\n },\n\n setNewView(bpPerPx: number, offsetPx: number) {\n this.zoomTo(bpPerPx)\n this.scrollTo(offsetPx)\n },\n\n horizontallyFlip() {\n self.displayedRegions = cast(\n self.displayedRegions\n .slice()\n .reverse()\n .map(region => ({ ...region, reversed: !region.reversed })),\n )\n this.scrollTo(self.totalBp / self.bpPerPx - self.offsetPx - self.width)\n },\n\n showTrack(\n trackId: string,\n initialSnapshot = {},\n displayInitialSnapshot = {},\n ) {\n const trackConfigSchema =\n pluginManager.pluggableConfigSchemaType('track')\n const configuration = resolveIdentifier(\n trackConfigSchema,\n getRoot(self),\n trackId,\n )\n if (!configuration) {\n throw new Error(`Could not resolve identifier \"${trackId}\"`)\n }\n const trackType = pluginManager.getTrackType(configuration?.type)\n if (!trackType) {\n throw new Error(`Unknown track type ${configuration.type}`)\n }\n const viewType = pluginManager.getViewType(self.type)\n const supportedDisplays = viewType.displayTypes.map(\n displayType => displayType.name,\n )\n const displayConf = configuration.displays.find(\n (d: AnyConfigurationModel) => supportedDisplays.includes(d.type),\n )\n if (!displayConf) {\n throw new Error(\n `Could not find a compatible display for view type ${self.type}`,\n )\n }\n\n const shownTracks = self.tracks.filter(\n t => t.configuration === configuration,\n )\n if (shownTracks.length === 0) {\n const track = trackType.stateModel.create({\n ...initialSnapshot,\n type: configuration.type,\n configuration,\n displays: [\n {\n type: displayConf.type,\n configuration: displayConf,\n ...displayInitialSnapshot,\n },\n ],\n })\n self.tracks.push(track)\n return track\n }\n return shownTracks[0]\n },\n\n hideTrack(trackId: string) {\n const trackConfigSchema =\n pluginManager.pluggableConfigSchemaType('track')\n const configuration = resolveIdentifier(\n trackConfigSchema,\n getRoot(self),\n trackId,\n )\n // if we have any tracks with that configuration, turn them off\n const shownTracks = self.tracks.filter(\n t => t.configuration === configuration,\n )\n transaction(() => shownTracks.forEach(t => self.tracks.remove(t)))\n return shownTracks.length\n },\n }))\n .actions(self => ({\n moveTrack(movingTrackId: string, targetTrackId: string) {\n const oldIndex = self.tracks.findIndex(\n track => track.id === movingTrackId,\n )\n if (oldIndex === -1) {\n throw new Error(`Track ID ${movingTrackId} not found`)\n }\n const newIndex = self.tracks.findIndex(\n track => track.id === targetTrackId,\n )\n if (newIndex === -1) {\n throw new Error(`Track ID ${targetTrackId} not found`)\n }\n const track = getSnapshot(self.tracks[oldIndex])\n self.tracks.splice(oldIndex, 1)\n self.tracks.splice(newIndex, 0, track)\n },\n\n closeView() {\n const parent = getContainingView(self)\n if (parent) {\n // I am embedded in a some other view\n if (isViewContainer(parent)) {\n parent.removeView(self)\n }\n } else {\n // I am part of a session\n getSession(self).removeView(self)\n }\n },\n\n toggleTrack(trackId: string) {\n // if we have any tracks with that configuration, turn them off\n const hiddenCount = self.hideTrack(trackId)\n // if none had that configuration, turn one on\n if (!hiddenCount) {\n self.showTrack(trackId)\n }\n },\n\n setTrackLabels(setting: 'overlapping' | 'offset' | 'hidden') {\n self.trackLabels = setting\n localStorage.setItem('lgv-trackLabels', setting)\n },\n\n toggleCenterLine() {\n self.showCenterLine = !self.showCenterLine\n localStorage.setItem('lgv-showCenterLine', `${+self.showCenterLine}`)\n },\n\n setDisplayedRegions(regions: Region[]) {\n self.displayedRegions = cast(regions)\n self.zoomTo(self.bpPerPx)\n },\n\n activateTrackSelector() {\n if (self.trackSelectorType === 'hierarchical') {\n const session = getSession(self)\n if (isSessionModelWithWidgets(session)) {\n const selector = session.addWidget(\n 'HierarchicalTrackSelectorWidget',\n 'hierarchicalTrackSelector',\n { view: self },\n )\n session.showWidget(selector)\n return selector\n }\n }\n throw new Error(`invalid track selector type ${self.trackSelectorType}`)\n },\n\n navToLocString(locString: string, optAssemblyName?: string) {\n const { assemblyNames } = self\n const { assemblyManager } = getSession(self)\n const { isValidRefName } = assemblyManager\n const assemblyName = optAssemblyName || assemblyNames[0]\n\n const parsedLocStrings = locString\n .split(' ')\n .filter(f => !!f.trim())\n .map(l => parseLocString(l, ref => isValidRefName(ref, assemblyName)))\n\n const locations = parsedLocStrings.map(region => {\n const asmName = region.assemblyName || assemblyName\n const asm = assemblyManager.get(asmName)\n const { refName } = region\n if (!asm) {\n throw new Error(`assembly ${asmName} not found`)\n }\n const { regions } = asm\n if (!regions) {\n throw new Error(`regions not loaded yet for ${asmName}`)\n }\n const canonicalRefName = asm.getCanonicalRefName(region.refName)\n if (!canonicalRefName) {\n throw new Error(`Could not find refName ${refName} in ${asm.name}`)\n }\n const parentRegion = regions.find(\n region => region.refName === canonicalRefName,\n )\n if (!parentRegion) {\n throw new Error(`Could not find refName ${refName} in ${asmName}`)\n }\n\n return {\n ...region,\n assemblyName: asmName,\n parentRegion,\n }\n })\n\n if (locations.length === 1) {\n const loc = locations[0]\n this.setDisplayedRegions([\n { reversed: loc.reversed, ...loc.parentRegion },\n ])\n const { start, end, parentRegion } = loc\n\n this.navTo({\n ...loc,\n start: clamp(start ?? 0, 0, parentRegion.end),\n end: clamp(end ?? parentRegion.end, 0, parentRegion.end),\n })\n } else {\n this.setDisplayedRegions(\n // @ts-ignore\n locations.map(r => (r.start === undefined ? r.parentRegion : r)),\n )\n this.showAllRegions()\n }\n },\n\n /**\n * Navigate to a location based on its refName and optionally start, end,\n * and assemblyName. Can handle if there are multiple displayedRegions\n * from same refName. Only navigates to a location if it is entirely\n * within a displayedRegion. Navigates to the first matching location\n * encountered.\n *\n * Throws an error if navigation was unsuccessful\n *\n * @param location - a proposed location to navigate to\n */\n navTo(query: NavLocation) {\n this.navToMultiple([query])\n },\n\n navToMultiple(locations: NavLocation[]) {\n const firstLocation = locations[0]\n let { refName } = firstLocation\n const {\n start,\n end,\n assemblyName = self.assemblyNames[0],\n } = firstLocation\n\n if (start !== undefined && end !== undefined && start > end) {\n throw new Error(`start \"${start + 1}\" is greater than end \"${end}\"`)\n }\n const session = getSession(self)\n const { assemblyManager } = session\n const assembly = assemblyManager.get(assemblyName)\n if (assembly) {\n const canonicalRefName = assembly.getCanonicalRefName(refName)\n if (canonicalRefName) {\n refName = canonicalRefName\n }\n }\n let s = start\n let e = end\n let refNameMatched = false\n const predicate = (r: Region) => {\n if (refName === r.refName) {\n refNameMatched = true\n if (s === undefined) {\n s = r.start\n }\n if (e === undefined) {\n e = r.end\n }\n if (s >= r.start && s <= r.end && e <= r.end && e >= r.start) {\n return true\n }\n s = start\n e = end\n }\n return false\n }\n\n const lastIndex = findLastIndex(self.displayedRegions, predicate)\n let index\n while (index !== lastIndex) {\n try {\n const previousIndex: number | undefined = index\n index = self.displayedRegions\n .slice(previousIndex === undefined ? 0 : previousIndex + 1)\n .findIndex(predicate)\n if (previousIndex !== undefined) {\n index += previousIndex + 1\n }\n if (!refNameMatched) {\n throw new Error(\n `could not find a region with refName \"${refName}\"`,\n )\n }\n if (s === undefined) {\n throw new Error(\n `could not find a region with refName \"${refName}\" that contained an end position ${e}`,\n )\n }\n if (e === undefined) {\n throw new Error(\n `could not find a region with refName \"${refName}\" that contained a start position ${\n s + 1\n }`,\n )\n }\n if (index === -1) {\n throw new Error(\n `could not find a region that completely contained \"${assembleLocString(\n firstLocation,\n )}\"`,\n )\n }\n if (locations.length === 1) {\n const f = self.displayedRegions[index]\n this.moveTo(\n { index, offset: f.reversed ? f.end - e : s - f.start },\n { index, offset: f.reversed ? f.end - s : e - f.start },\n )\n return\n }\n let locationIndex = 0\n let locationStart = 0\n let locationEnd = 0\n for (\n locationIndex;\n locationIndex < locations.length;\n locationIndex++\n ) {\n const location = locations[locationIndex]\n const region = self.displayedRegions[index + locationIndex]\n locationStart = location.start || region.start\n locationEnd = location.end || region.end\n if (location.refName !== region.refName) {\n throw new Error(\n `Entered location ${assembleLocString(\n location,\n )} does not match with displayed regions`,\n )\n }\n }\n locationIndex -= 1\n const startDisplayedRegion = self.displayedRegions[index]\n const endDisplayedRegion =\n self.displayedRegions[index + locationIndex]\n this.moveTo(\n {\n index,\n offset: startDisplayedRegion.reversed\n ? startDisplayedRegion.end - e\n : s - startDisplayedRegion.start,\n },\n {\n index: index + locationIndex,\n offset: endDisplayedRegion.reversed\n ? endDisplayedRegion.end - locationStart\n : locationEnd - endDisplayedRegion.start,\n },\n )\n return\n } catch (error) {\n if (index === lastIndex) {\n throw error\n }\n }\n }\n },\n\n /**\n * Navigate to a location based on user clicking and dragging on the\n * overview scale bar to select a region to zoom into.\n * Can handle if there are multiple displayedRegions from same refName.\n * Only navigates to a location if it is entirely within a displayedRegion.\n *\n * @param leftPx- `object as {start, end, index, offset}`, offset = start of user drag\n * @param rightPx- `object as {start, end, index, offset}`, offset = end of user drag\n */\n zoomToDisplayedRegions(leftPx: BpOffset, rightPx: BpOffset) {\n if (leftPx === undefined || rightPx === undefined) {\n return\n }\n\n const singleRefSeq =\n leftPx.refName === rightPx.refName && leftPx.index === rightPx.index\n // zooming into one displayed Region\n if (\n (singleRefSeq && rightPx.offset < leftPx.offset) ||\n leftPx.index > rightPx.index\n ) {\n ;[leftPx, rightPx] = [rightPx, leftPx]\n }\n const startOffset = {\n start: leftPx.start,\n end: leftPx.end,\n index: leftPx.index,\n offset: leftPx.offset,\n }\n const endOffset = {\n start: rightPx.start,\n end: rightPx.end,\n index: rightPx.index,\n offset: rightPx.offset,\n }\n if (startOffset && endOffset) {\n this.moveTo(startOffset, endOffset)\n } else {\n const session = getSession(self)\n session.notify('No regions found to navigate to', 'warning')\n }\n },\n /**\n * Helper method for the fetchSequence.\n * Retrieves the corresponding regions that were selected by the rubberband\n *\n * @param leftOffset - `object as {start, end, index, offset}`, offset = start of user drag\n * @param rightOffset - `object as {start, end, index, offset}`, offset = end of user drag\n * @returns array of Region[]\n */\n getSelectedRegions(\n leftOffset: BpOffset | undefined,\n rightOffset: BpOffset | undefined,\n ) {\n const simView = Base1DView.create({\n ...getSnapshot(self),\n interRegionPaddingWidth: self.interRegionPaddingWidth,\n })\n\n simView.setVolatileWidth(self.width)\n simView.zoomToDisplayedRegions(leftOffset, rightOffset)\n\n return simView.dynamicBlocks.contentBlocks.map(region => {\n return {\n ...region,\n start: Math.floor(region.start),\n end: Math.ceil(region.end),\n }\n })\n },\n\n // schedule something to be run after the next time displayedRegions is set\n afterDisplayedRegionsSet(cb: Function) {\n self.afterDisplayedRegionsSetCallbacks.push(cb)\n },\n /**\n * offset is the base-pair-offset in the displayed region, index is the index of the\n * displayed region in the linear genome view\n *\n * @param start - object as `{start, end, offset, index}`\n * @param end - object as `{start, end, offset, index}`\n */\n moveTo(start: BpOffset, end: BpOffset) {\n // find locations in the modellist\n let bpSoFar = 0\n\n if (start.index === end.index) {\n bpSoFar += end.offset - start.offset\n } else {\n const s = self.displayedRegions[start.index]\n bpSoFar += s.end - s.start - start.offset\n if (end.index - start.index >= 2) {\n for (let i = start.index + 1; i < end.index; i += 1) {\n bpSoFar +=\n self.displayedRegions[i].end - self.displayedRegions[i].start\n }\n }\n bpSoFar += end.offset\n }\n const targetBpPerPx =\n bpSoFar /\n (self.width -\n self.interRegionPaddingWidth * (end.index - start.index))\n const newBpPerPx = self.zoomTo(targetBpPerPx)\n // If our target bpPerPx was smaller than the allowed minBpPerPx, adjust\n // the scroll so the requested range is in the middle of the screen\n let extraBp = 0\n if (targetBpPerPx < newBpPerPx) {\n extraBp = ((newBpPerPx - targetBpPerPx) * self.width) / 2\n }\n\n let bpToStart = -extraBp\n for (let i = 0; i < self.displayedRegions.length; i += 1) {\n const region = self.displayedRegions[i]\n if (start.index === i) {\n bpToStart += start.offset\n break\n } else {\n bpToStart += region.end - region.start\n }\n }\n self.scrollTo(\n Math.round(bpToStart / self.bpPerPx) +\n self.interRegionPaddingWidth * start.index,\n )\n },\n\n horizontalScroll(distance: number) {\n const oldOffsetPx = self.offsetPx\n // newOffsetPx is the actual offset after the scroll is clamped\n const newOffsetPx = self.scrollTo(self.offsetPx + distance)\n return newOffsetPx - oldOffsetPx\n },\n\n /**\n * scrolls the view to center on the given bp. if that is not in any\n * of the displayed regions, does nothing\n * @param bp - basepair at which you want to center the view\n * @param refName - refName of the displayedRegion you are centering at\n * @param regionIndex - index of the displayedRegion\n */\n centerAt(bp: number, refName: string, regionIndex: number) {\n const centerPx = self.bpToPx({\n refName,\n coord: bp,\n regionNumber: regionIndex,\n })\n if (centerPx) {\n self.scrollTo(Math.round(centerPx.offsetPx - self.width / 2))\n }\n },\n\n center() {\n const centerBp = self.totalBp / 2\n self.scrollTo(Math.round(centerBp / self.bpPerPx - self.width / 2))\n },\n\n showAllRegions() {\n self.zoomTo(self.maxBpPerPx)\n this.center()\n },\n\n showAllRegionsInAssembly(assemblyName?: string) {\n const session = getSession(self)\n const { assemblyManager } = session\n if (!assemblyName) {\n const assemblyNames = [\n ...new Set(\n self.displayedRegions.map(region => region.assemblyName),\n ),\n ]\n if (assemblyNames.length > 1) {\n session.notify(\n `Can't perform this with multiple assemblies currently`,\n )\n return\n }\n\n ;[assemblyName] = assemblyNames\n }\n const assembly = assemblyManager.get(assemblyName)\n if (assembly) {\n const { regions } = assembly\n if (regions) {\n this.setDisplayedRegions(regions)\n self.zoomTo(self.maxBpPerPx)\n this.center()\n }\n }\n },\n\n setDraggingTrackId(idx?: string) {\n self.draggingTrackId = idx\n },\n\n setScaleFactor(factor: number) {\n self.scaleFactor = factor\n },\n }))\n .actions(self => {\n let cancelLastAnimation = () => {}\n\n function slide(viewWidths: number) {\n const [animate, cancelAnimation] = springAnimate(\n self.offsetPx,\n self.offsetPx + self.width * viewWidths,\n self.scrollTo,\n )\n cancelLastAnimation()\n cancelLastAnimation = cancelAnimation\n animate()\n }\n\n return { slide }\n })\n .actions(self => {\n let cancelLastAnimation = () => {}\n\n function zoom(targetBpPerPx: number) {\n self.zoomTo(self.bpPerPx)\n if (\n // already zoomed all the way in\n (targetBpPerPx < self.bpPerPx && self.bpPerPx === self.minBpPerPx) ||\n // already zoomed all the way out\n (targetBpPerPx > self.bpPerPx && self.bpPerPx === self.maxBpPerPx)\n ) {\n return\n }\n const factor = self.bpPerPx / targetBpPerPx\n const [animate, cancelAnimation] = springAnimate(\n 1,\n factor,\n self.setScaleFactor,\n () => {\n self.zoomTo(targetBpPerPx)\n self.setScaleFactor(1)\n },\n )\n cancelLastAnimation()\n cancelLastAnimation = cancelAnimation\n animate()\n }\n\n return { zoom }\n })\n .views(self => ({\n get canShowCytobands() {\n return self.displayedRegions.length === 1 && this.anyCytobandsExist\n },\n get showCytobands() {\n return this.canShowCytobands && self.showCytobandsSetting\n },\n get anyCytobandsExist() {\n const { assemblyManager } = getSession(self)\n const { assemblyNames } = self\n return assemblyNames.some(\n asm => assemblyManager.get(asm)?.cytobands?.length,\n )\n },\n\n get cytobandOffset() {\n return this.showCytobands\n ? measureText(self.displayedRegions[0].refName, 12) + 15\n : 0\n },\n }))\n .views(self => ({\n menuItems(): MenuItem[] {\n const { canShowCytobands, showCytobands } = self\n\n const menuItems: MenuItem[] = [\n {\n label: 'Return to import form',\n onClick: () => {\n getSession(self).queueDialog(handleClose => [\n ReturnToImportFormDialog,\n { model: self, handleClose },\n ])\n },\n icon: FolderOpenIcon,\n },\n {\n label: 'Export SVG',\n icon: PhotoCameraIcon,\n onClick: () => {\n getSession(self).queueDialog(handleClose => [\n ExportSvgDlg,\n { model: self, handleClose },\n ])\n },\n },\n {\n label: 'Open track selector',\n onClick: self.activateTrackSelector,\n icon: TrackSelectorIcon,\n },\n {\n label: 'Horizontally flip',\n icon: SyncAltIcon,\n onClick: self.horizontallyFlip,\n },\n { type: 'divider' },\n {\n label: 'Show all regions in assembly',\n icon: VisibilityIcon,\n onClick: self.showAllRegionsInAssembly,\n },\n {\n label: 'Show center line',\n icon: VisibilityIcon,\n type: 'checkbox',\n checked: self.showCenterLine,\n onClick: self.toggleCenterLine,\n },\n {\n label: 'Show header',\n icon: VisibilityIcon,\n type: 'checkbox',\n checked: !self.hideHeader,\n onClick: self.toggleHeader,\n },\n {\n label: 'Show header overview',\n icon: VisibilityIcon,\n type: 'checkbox',\n checked: !self.hideHeaderOverview,\n onClick: self.toggleHeaderOverview,\n disabled: self.hideHeader,\n },\n {\n label: 'Track labels',\n icon: LabelIcon,\n subMenu: [\n {\n label: 'Overlapping',\n icon: VisibilityIcon,\n type: 'radio',\n checked: self.trackLabels === 'overlapping',\n onClick: () => self.setTrackLabels('overlapping'),\n },\n {\n label: 'Offset',\n icon: VisibilityIcon,\n type: 'radio',\n checked: self.trackLabels === 'offset',\n onClick: () => self.setTrackLabels('offset'),\n },\n {\n label: 'Hidden',\n icon: VisibilityIcon,\n type: 'radio',\n checked: self.trackLabels === 'hidden',\n onClick: () => self.setTrackLabels('hidden'),\n },\n ],\n },\n ...(canShowCytobands\n ? [\n {\n label: showCytobands ? 'Hide ideogram' : 'Show ideograms',\n onClick: () => {\n self.setShowCytobands(!showCytobands)\n },\n },\n ]\n : []),\n ]\n\n // add track's view level menu options\n for (const [key, value] of self.trackTypeActions.entries()) {\n if (value.length) {\n menuItems.push(\n { type: 'divider' },\n { type: 'subHeader', label: key },\n )\n value.forEach(action => {\n menuItems.push(action)\n })\n }\n }\n\n return menuItems\n },\n }))\n .views(self => {\n let currentlyCalculatedStaticBlocks: BlockSet | undefined\n let stringifiedCurrentlyCalculatedStaticBlocks = ''\n return {\n get staticBlocks() {\n const ret = calculateStaticBlocks(self)\n const sret = JSON.stringify(ret)\n if (stringifiedCurrentlyCalculatedStaticBlocks !== sret) {\n currentlyCalculatedStaticBlocks = ret\n stringifiedCurrentlyCalculatedStaticBlocks = sret\n }\n return currentlyCalculatedStaticBlocks as BlockSet\n },\n\n get dynamicBlocks() {\n return calculateDynamicBlocks(self)\n },\n\n get roundedDynamicBlocks() {\n return this.dynamicBlocks.contentBlocks.map(block => {\n return {\n ...block,\n start: Math.floor(block.start),\n end: Math.ceil(block.end),\n }\n })\n },\n get visibleLocStrings() {\n return calculateVisibleLocStrings(this.dynamicBlocks.contentBlocks)\n },\n get coarseVisibleLocStrings() {\n return calculateVisibleLocStrings(self.coarseDynamicBlocks)\n },\n }\n })\n .actions(self => ({\n // this \"clears the view\" and makes the view return to the import form\n clearView() {\n self.setDisplayedRegions([])\n self.tracks.clear()\n // it is necessary to run these after setting displayed regions empty\n // or else model.offsetPx gets set to Infinity and breaks\n // mobx-state-tree snapshot\n self.scrollTo(0)\n self.zoomTo(10)\n },\n setCoarseDynamicBlocks(blocks: BlockSet) {\n self.coarseDynamicBlocks = blocks.contentBlocks\n self.coarseTotalBp = blocks.totalBp\n },\n afterAttach() {\n addDisposer(\n self,\n autorun(\n () => {\n if (self.initialized) {\n this.setCoarseDynamicBlocks(self.dynamicBlocks)\n }\n },\n { delay: 150 },\n ),\n )\n },\n }))\n .actions(self => ({\n async exportSvg(opts: ExportSvgOptions = {}) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const html = await renderToSvg(self as any, opts)\n const blob = new Blob([html], { type: 'image/svg+xml' })\n saveAs(blob, 'image.svg')\n },\n }))\n .views(self => ({\n rubberBandMenuItems(): MenuItem[] {\n return [\n {\n label: 'Zoom to region',\n icon: ZoomInIcon,\n onClick: () => {\n const { leftOffset, rightOffset } = self\n if (leftOffset && rightOffset) {\n self.moveTo(leftOffset, rightOffset)\n }\n },\n },\n {\n label: 'Get sequence',\n icon: MenuOpenIcon,\n onClick: () => {\n self.setSequenceDialogOpen(true)\n },\n },\n ]\n },\n }))\n}\n\nexport { renderToSvg, RefNameAutocomplete, SearchBox }\nexport type LinearGenomeViewStateModel = ReturnType<typeof stateModelFactory>\nexport type LinearGenomeViewModel = Instance<LinearGenomeViewStateModel>\nexport { default as ReactComponent } from './components/LinearGenomeView'\n","import { lazy } from 'react'\nimport { ConfigurationReference, getConf } from '@jbrowse/core/configuration'\nimport { getSession } from '@jbrowse/core/util'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport VisibilityIcon from '@material-ui/icons/Visibility'\nimport { types, getEnv, Instance } from 'mobx-state-tree'\nimport { AnyConfigurationSchemaType } from '@jbrowse/core/configuration/configurationSchema'\nimport { BaseLinearDisplay } from '../BaseLinearDisplay'\n\nconst SetMaxHeightDlg = lazy(() => import('./components/SetMaxHeight'))\n\nconst stateModelFactory = (configSchema: AnyConfigurationSchemaType) =>\n types\n .compose(\n 'LinearBasicDisplay',\n BaseLinearDisplay,\n types.model({\n type: types.literal('LinearBasicDisplay'),\n trackShowLabels: types.maybe(types.boolean),\n trackShowDescriptions: types.maybe(types.boolean),\n trackDisplayMode: types.maybe(types.string),\n trackMaxHeight: types.maybe(types.number),\n configuration: ConfigurationReference(configSchema),\n }),\n )\n .views(self => ({\n get rendererTypeName() {\n return getConf(self, ['renderer', 'type'])\n },\n\n get showLabels() {\n const showLabels = getConf(self, ['renderer', 'showLabels'])\n return self.trackShowLabels !== undefined\n ? self.trackShowLabels\n : showLabels\n },\n\n get showDescriptions() {\n const showDescriptions = getConf(self, ['renderer', 'showLabels'])\n return self.trackShowDescriptions !== undefined\n ? self.trackShowDescriptions\n : showDescriptions\n },\n\n get maxHeight() {\n const maxHeight = getConf(self, ['renderer', 'maxHeight'])\n return self.trackMaxHeight !== undefined\n ? self.trackMaxHeight\n : maxHeight\n },\n\n get displayMode() {\n const displayMode = getConf(self, ['renderer', 'displayMode'])\n return self.trackDisplayMode !== undefined\n ? self.trackDisplayMode\n : displayMode\n },\n get rendererConfig() {\n const configBlob = getConf(self, ['renderer']) || {}\n\n return self.rendererType.configSchema.create(\n {\n ...configBlob,\n showLabels: this.showLabels,\n showDescriptions: this.showDescriptions,\n displayMode: this.displayMode,\n maxHeight: this.maxHeight,\n },\n getEnv(self),\n )\n },\n }))\n\n .actions(self => ({\n toggleShowLabels() {\n self.trackShowLabels = !self.showLabels\n },\n toggleShowDescriptions() {\n self.trackShowDescriptions = !self.showDescriptions\n },\n setDisplayMode(val: string) {\n self.trackDisplayMode = val\n },\n setMaxHeight(val: number) {\n self.trackMaxHeight = val\n },\n }))\n .views(self => {\n const {\n trackMenuItems: superTrackMenuItems,\n renderProps: superRenderProps,\n } = self\n return {\n renderProps() {\n const config = self.rendererConfig\n\n return {\n ...superRenderProps(),\n config,\n }\n },\n\n trackMenuItems(): MenuItem[] {\n return [\n ...superTrackMenuItems(),\n {\n label: 'Show labels',\n icon: VisibilityIcon,\n type: 'checkbox',\n checked: self.showLabels,\n onClick: () => {\n self.toggleShowLabels()\n },\n },\n {\n label: 'Show descriptions',\n icon: VisibilityIcon,\n type: 'checkbox',\n checked: self.showDescriptions,\n onClick: () => {\n self.toggleShowDescriptions()\n },\n },\n {\n label: 'Display mode',\n icon: VisibilityIcon,\n subMenu: [\n 'compact',\n 'reducedRepresentation',\n 'normal',\n 'collapse',\n ].map(val => ({\n label: val,\n onClick: () => {\n self.setDisplayMode(val)\n },\n })),\n },\n {\n label: 'Set max height',\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n SetMaxHeightDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n ]\n },\n }\n })\n\nexport type FeatureTrackStateModel = ReturnType<typeof stateModelFactory>\nexport type FeatureTrackModel = Instance<FeatureTrackStateModel>\n\nexport default stateModelFactory\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { baseLinearDisplayConfigSchema } from '../BaseLinearDisplay'\n\nexport default function configSchemaFactory(pluginManager: PluginManager) {\n return ConfigurationSchema(\n 'LinearBasicDisplay',\n {\n mouseover: {\n type: 'string',\n description: 'what to display in a given mouseover',\n defaultValue: `jexl:get(feature,'name')`,\n\n contextVariable: ['feature'],\n },\n renderer: pluginManager.pluggableConfigSchemaType('renderer'),\n },\n { baseConfiguration: baseLinearDisplayConfigSchema, explicitlyTyped: true },\n )\n}\n","import { lazy } from 'react'\nimport { when } from 'mobx'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport {\n createBaseTrackConfig,\n createBaseTrackModel,\n} from '@jbrowse/core/pluggableElementTypes/models'\nimport TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport ViewType from '@jbrowse/core/pluggableElementTypes/ViewType'\nimport Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { AbstractSessionModel, isAbstractMenuManager } from '@jbrowse/core/util'\nimport LineStyleIcon from '@material-ui/icons/LineStyle'\nimport {\n BaseLinearDisplay,\n BaseLinearDisplayComponent,\n baseLinearDisplayConfigSchema,\n BlockModel,\n} from './BaseLinearDisplay'\nimport {\n configSchemaFactory as linearBareDisplayConfigSchemaFactory,\n stateModelFactory as LinearBareDisplayStateModelFactory,\n} from './LinearBareDisplay'\nimport {\n LinearGenomeViewModel,\n LinearGenomeViewStateModel,\n stateModelFactory as linearGenomeViewStateModelFactory,\n renderToSvg,\n RefNameAutocomplete,\n SearchBox,\n} from './LinearGenomeView'\n\nimport {\n configSchema as linearBasicDisplayConfigSchemaFactory,\n modelFactory as linearBasicDisplayModelFactory,\n} from './LinearBasicDisplay'\n\ntype LGV = LinearGenomeViewModel\n\nexport default class LinearGenomeViewPlugin extends Plugin {\n name = 'LinearGenomeViewPlugin'\n\n exports = {\n BaseLinearDisplayComponent,\n BaseLinearDisplay,\n baseLinearDisplayConfigSchema,\n }\n\n install(pluginManager: PluginManager) {\n pluginManager.addTrackType(() => {\n const configSchema = ConfigurationSchema(\n 'FeatureTrack',\n {},\n {\n baseConfiguration: createBaseTrackConfig(pluginManager),\n explicitIdentifier: 'trackId',\n },\n )\n return new TrackType({\n name: 'FeatureTrack',\n configSchema,\n stateModel: createBaseTrackModel(\n pluginManager,\n 'FeatureTrack',\n configSchema,\n ),\n })\n })\n\n pluginManager.addTrackType(() => {\n const configSchema = ConfigurationSchema(\n 'BasicTrack',\n {},\n {\n baseConfiguration: createBaseTrackConfig(pluginManager),\n explicitIdentifier: 'trackId',\n },\n )\n return new TrackType({\n name: 'BasicTrack',\n configSchema,\n stateModel: createBaseTrackModel(\n pluginManager,\n 'BasicTrack',\n configSchema,\n ),\n })\n })\n\n pluginManager.addDisplayType(() => {\n const configSchema = linearBareDisplayConfigSchemaFactory(pluginManager)\n return new DisplayType({\n name: 'LinearBareDisplay',\n configSchema,\n stateModel: LinearBareDisplayStateModelFactory(configSchema),\n trackType: 'BasicTrack',\n viewType: 'LinearGenomeView',\n ReactComponent: BaseLinearDisplayComponent,\n })\n })\n\n pluginManager.addDisplayType(() => {\n const configSchema = linearBasicDisplayConfigSchemaFactory(pluginManager)\n return new DisplayType({\n name: 'LinearBasicDisplay',\n configSchema,\n stateModel: linearBasicDisplayModelFactory(configSchema),\n trackType: 'FeatureTrack',\n viewType: 'LinearGenomeView',\n ReactComponent: BaseLinearDisplayComponent,\n })\n })\n\n pluginManager.addViewType(\n () =>\n new ViewType({\n name: 'LinearGenomeView',\n stateModel: linearGenomeViewStateModelFactory(pluginManager),\n ReactComponent: lazy(\n () => import('./LinearGenomeView/components/LinearGenomeView'),\n ),\n }),\n )\n\n pluginManager.addToExtensionPoint(\n 'LaunchView-LinearGenomeView',\n // @ts-ignore\n async ({\n session,\n assembly,\n loc,\n tracks = [],\n }: {\n session: AbstractSessionModel\n assembly?: string\n loc: string\n tracks?: string[]\n }) => {\n const { assemblyManager } = session\n const view = session.addView('LinearGenomeView', {}) as LGV\n\n await when(() => !!view.volatileWidth)\n\n if (!assembly) {\n throw new Error(\n 'No assembly provided when launching linear genome view',\n )\n }\n\n const asm = await assemblyManager.waitForAssembly(assembly)\n if (!asm) {\n throw new Error(\n `Assembly \"${assembly}\" not found when launching linear genome view`,\n )\n }\n\n view.navToLocString(loc, assembly)\n\n const idsNotFound = [] as string[]\n tracks.forEach(track => {\n try {\n view.showTrack(track)\n } catch (e) {\n if (`${e}`.match('Could not resolve identifier')) {\n idsNotFound.push(track)\n } else {\n throw e\n }\n }\n })\n if (idsNotFound.length) {\n throw new Error(\n `Could not resolve identifiers: ${idsNotFound.join(',')}`,\n )\n }\n },\n )\n }\n\n configure(pluginManager: PluginManager) {\n if (isAbstractMenuManager(pluginManager.rootModel)) {\n pluginManager.rootModel.appendToSubMenu(['Add'], {\n label: 'Linear genome view',\n icon: LineStyleIcon,\n onClick: (session: AbstractSessionModel) => {\n session.addView('LinearGenomeView', {})\n },\n })\n }\n }\n}\n\nexport {\n baseLinearDisplayConfigSchema,\n linearBareDisplayConfigSchemaFactory,\n linearBasicDisplayConfigSchemaFactory,\n linearBasicDisplayModelFactory,\n renderToSvg,\n BaseLinearDisplayComponent,\n BaseLinearDisplay,\n RefNameAutocomplete,\n SearchBox,\n}\n\nexport type { LinearGenomeViewModel, LinearGenomeViewStateModel, BlockModel }\n\nexport type { BaseLinearDisplayModel } from './BaseLinearDisplay'\n","import React from 'react'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n makeStyles,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\nexport const useStyles = makeStyles(theme => ({\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}))\n\nexport default function HelpDialog({\n handleClose,\n}: {\n handleClose: () => void\n}) {\n const classes = useStyles()\n return (\n <Dialog open maxWidth=\"xl\" onClose={handleClose}>\n <DialogTitle>\n Using the search box\n {handleClose ? (\n <IconButton\n data-testid=\"close-resultsDialog\"\n className={classes.closeButton}\n onClick={() => {\n handleClose()\n }}\n >\n <CloseIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n <Divider />\n <DialogContent>\n <h3>Searching</h3>\n <ul>\n <li>\n Jump to a feature or reference sequence by typing its name in the\n location box and pressing Enter.\n </li>\n <li>\n Jump to a specific region by typing the region into the location box\n as: <code>ref:start..end</code> or <code>ref:start-end</code>.\n Commas are allowed in the start and end coordinates. A\n space-separated list of locstrings can be used to open up multiple\n chromosomes at a time\n </li>\n </ul>\n <h3>Example Searches</h3>\n <ul>\n <li>\n <code>BRCA</code> - searches for the feature named BRCA\n </li>\n <li>\n <code>chr4</code> - jumps to chromosome 4\n </li>\n <li>\n <code>chr4:79,500,000..80,000,000</code> - jumps the region on\n chromosome 4 between 79.5Mb and 80Mb.\n </li>\n <li>\n <code>chr1:1-100 chr2:1-100</code> - create a split view of\n chr1:1-100 and chr2:1-100\n </li>\n <li>\n <code>chr1 chr2 chr3</code> - open up multiple chromosomes at once\n </li>\n <li>\n <code>chr1:1-100[rev] chr2:1-100</code> - open up the first region\n in the horizontally flipped orientation\n </li>\n </ul>\n </DialogContent>\n <Divider />\n <DialogActions>\n <Button onClick={() => handleClose()} color=\"primary\">\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n TextField,\n makeStyles,\n} from '@material-ui/core'\n\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: 500,\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n field: {\n margin: theme.spacing(2),\n },\n}))\n\nfunction SetMaxHeightDlg(props: {\n model: {\n maxHeight?: number\n setMaxHeight: Function\n }\n handleClose: () => void\n}) {\n const { model, handleClose } = props\n const classes = useStyles()\n const { maxHeight = '' } = model\n const [max, setMax] = useState(`${maxHeight}`)\n\n return (\n <Dialog\n open\n onClose={handleClose}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n <DialogTitle id=\"alert-dialog-title\">\n Filter options\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={handleClose}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <div className={classes.root}>\n <Typography>Set max height for the track</Typography>\n <TextField\n value={max}\n onChange={event => {\n setMax(event.target.value)\n }}\n placeholder=\"Enter max score\"\n />\n <Button\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n style={{ marginLeft: 20 }}\n onClick={() => {\n model.setMaxHeight(\n max !== '' && !Number.isNaN(+max) ? +max : undefined,\n )\n handleClose()\n }}\n >\n Submit\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(SetMaxHeightDlg)\n"],"names":["runtime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","key","value","defineProperty","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","type","call","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","Promise","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","globalThis","Function","baseLinearDisplayConfigSchema","ConfigurationSchema","maxFeatureScreenDensity","description","defaultValue","fetchSizeLimit","explicitIdentifier","useStyles","makeStyles","theme","contentBlock","position","minHeight","boxSizing","whiteSpace","overflow","elidedBlock","backgroundColor","backgroundImage","interRegionPaddingBlock","palette","text","primary","boundaryPaddingBlock","action","disabledBackground","ContentBlock","observer","block","children","classes","widthPx","React","style","width","className","ElidedBlock","InterRegionPaddingBlock","boundary","linearBlocks","textAlign","display","heightOverflowed","color","borderBottom","textShadow","fontWeight","zIndex","RenderedBlocks","model","blockDefinitions","blockState","map","get","ContentBlockComponent","id","ReactComponent","maxHeightReached","top","layout","getTotalHeight","pointerEvents","height","ElidedBlockComponent","InterRegionPaddingBlockComponent","background","variant","LinearBlocks","viewModel","getContainingView","left","offsetPx","round","Math","tooltip","alpha","grey","borderRadius","shape","common","white","fontFamily","typography","padding","fontSize","pxToRem","lineHeight","maxWidth","wordWrap","TooltipContents","forwardRef","ref","message","Tooltip","clientMouseCoord","featureUnderMouse","useState","setWidth","popperElt","setPopperElt","virtElement","useMemo","getBoundingClientRect","x","y","bottom","right","toJSON","usePopper","styles","attributes","contents","getConf","feature","Portal","popper","elt","BaseLinearDisplay","props","useTheme","useRef","clientRect","setClientRect","offsetMouseCoord","setOffsetMouseCoord","setClientMouseCoord","contextCoord","setContextCoord","TooltipComponent","DisplayMessageComponent","contextMenuItems","setContextMenuFeature","onContextMenu","event","preventDefault","current","clientX","clientY","onMouseMove","rect","role","mouseCoord","Menu","open","Boolean","onMenuItemClick","_","callback","onClose","TransitionProps","onExit","anchorReference","anchorPosition","menuItems","loading","paddingLeft","blockMessage","spacing","blockError","main","overflowY","blockReactNodeMessage","dots","animation","content","Repeater","LoadingMessage","shown","setShown","useEffect","killed","timeout","setTimeout","clearTimeout","blockStatus","status","getParent","displayStatus","Typography","BlockMessage","messageContent","isValidElement","BlockError","reload","displayHeight","Button","onClick","startIcon","RefreshIcon","ServerSideRenderedBlockContent","getParentRenderProps","displayModel","filled","reactElement","types","string","region","Region","reloadFlag","isLeftEndOfDisplayedRegion","isRightEndOfDisplayedRegion","renderInProgress","features","renderProps","actions","doReload","afterAttach","getContainingDisplay","makeAbortableReaction","renderBlockData","renderBlockEffect","assembleLocString","delay","renderDelay","fireImmediately","setLoading","setRendered","setError","setStatus","abortController","signal","aborted","abort","setMessage","messageText","console","isRetryException","beforeDestroy","getSession","rpcManager","rendererType","cast","renderArgs","freeResourcesInClient","JSON","parse","stringify","e","warn","optDisplay","assemblyManager","adapterConfig","parentTrack","assemblyNames","getTrackAssemblyNames","regionAsm","assemblyName","includes","find","hasName","config","readConfObject","sessionId","getRpcSessionId","cannotBeRenderedReason","regionCannotBeRendered","displayError","statusCallback","isAlive","regions","blockKey","notReady","renderInClient","getId","index","isJest","jest","getDisplayStr","totalBytes","displayBp","floor","parseFloat","toPrecision","minDisplayHeight","defaultDisplayHeight","compose","BaseDisplay","optional","refinement","number","n","BlockState","userBpPerPxLimit","maybe","userByteSizeLimit","currBpPerPx","featureIdUnderMouse","contextMenuFeature","scrollTop","estimatedRegionStatsP","estimatedRegionStats","views","blockType","view","initialized","selectedFeatureId","selection","isFeature","featureMaps","CompositeMap","feat","getFeatureOverlapping","getByCoord","getFeatureByID","getByID","searchFeatureByID","ret","val","currentBytesRequested","bytes","currentFeatureScreenDensity","featureDensity","bpPerPx","estimatedStatsReady","maxAllowableBytes","blockWatchDisposer","autorun","blocksPresent","contentBlocks","has","addBlock","deleteBlock","addDisposer","estimateRegionsStats","opts","params","setRegionStatsP","p","setRegionStats","clearRegionStats","setHeight","resizeHeight","distance","oldHeight","newHeight","setScrollTop","updateStatsLimit","stats","set","toRegion","setCurrBpPerPx","selectFeature","session","isSessionModelWithWidgets","featureWidget","addWidget","featureData","showWidget","isSelectionContainer","setSelection","clearFeatureSelection","clearSelection","setFeatureIdUnderMouse","regionTooLarge","dynamicBlocks","totalBp","bpLimitOrDensity","regionTooLargeReason","req","max","superReload","aborter","AbortController","staticBlocks","statsP","isAbortException","regionCannotBeRenderedText","_region","component","trackMenuItems","label","icon","MenuOpenIcon","rpcDriverName","onFeatureClick","featureId","f","onFeatureContextMenu","onMouseLeave","renderSvg","overrideHeight","viewOffsetPx","roundedDynamicBlocks","all","fill","exportSVG","renderings","rendering","offset","clipid","Fragment","transform","clipPath","dangerouslySetInnerHTML","__html","html","postProcessSnapshot","rest","configSchemaFactory","pluginManager","renderer","pluggableConfigSchemaType","baseConfiguration","explicitlyTyped","stateModelFactory","configSchema","literal","configuration","ConfigurationReference","superRenderProps","rendererTypeName","chooseGridPitch","scale","minMajorPitchPx","minMinorPitchPx","abs","minMajorPitchBp","majorMagnitude","parseInt","Number","toExponential","split","majorPitch","majorPitchPx","minorPitch","makeTicks","start","end","emitMajor","emitMinor","gridPitch","minBase","maxBase","iterPitch","ticks","base","ceil","mathPower","num","String","substr","majorTickLabel","majorTick","stroke","minorTick","Ruler","reversed","major","minor","tick","x1","x2","y1","y2","strokeWidth","filter","propTypes","ReactPropTypes","isRequired","bool","defaultProps","tertiary","rubberBand","rubberBandControl","cursor","rubberBandText","contrastText","popover","mouseEvents","paper","paddingRight","guide","HoverTooltip","guideX","overview","cytobandOffset","px","pxToBp","assembly","cytoband","cytobands","coord","refName","getCanonicalRefName","placement","title","join","arrow","OverviewRubberBand","ControlComponent","startX","setStartX","currentX","setCurrentX","setGuideX","controlsRef","rubberBandRef","mouseDragging","globalMouseMove","relativeX","globalMouseUp","zoomToDisplayedRegions","clickedAt","centerAt","globalKeyDown","window","addEventListener","removeEventListener","mouseDown","stopPropagation","mouseMove","mouseOut","onMouseDown","onMouseOut","leftBpOffset","rightBpOffset","Popover","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","keepMounted","disableRestoreFocus","HEADER_OVERVIEW_HEIGHT","MobxPropTypes","objectOrObservableObject","node","wholeSeqSpacer","scaleBar","scaleBarBorder","border","scaleBarContig","scaleBarContigForward","backgroundRepeat","scaleBarContigReverse","scaleBarRefName","scaleBarLabel","justifyContent","scaleBarVisibleRegion","HEADER_BAR_HEIGHT","overviewSvg","Polygon","useOffset","multiplier","interRegionPaddingWidth","totalWidthPxWithoutBorders","polygonColor","light","first","last","topLeft","bpToPx","topRight","startPx","endPx","points","toString","rightRoundedRect","radius","leftRoundedRect","colorMap","gneg","gpos25","gpos50","gpos100","gpos75","gvar","stalk","acen","Cytobands","arr","lcap","rcap","firstCent","d","min","OverviewBox","showCytobands","refNameColor","getRefNameColor","tickLabels","offsetLabel","clsx","borderColor","tickLabel","labelIdx","toLocaleString","ScaleBar","visibleRegions","overviewVisibleRegions","scaleBarColor","firstOverviewPx","lastOverviewPx","transparency","idx","OverviewScaleBar","displayedRegions","Base1DView","minimumBlockWidth","modWidth","setVolatileWidth","showAllRegions","totalWidthPx","getBpDisplayStr","x0","textAnchor","SVGRuler","renderRuler","offsetLeft","rulerHeight","textHeight","paddingHeight","headerHeight","cytobandHeightIfExists","totalHeight","tracks","reduce","accum","track","displays","SVGHeader","cytobandHeight","SVGRegionSeparators","SVGTracks","displayResults","trackName","trackId","renderToSvg","when","shift","ready","renderToStaticMarkup","xmlns","xmlnsXlink","viewBox","dedupe","results","cb","findIndex","t","HelpDialog","lazy","filterOptions","options","searchQuery","option","getLabel","toLowerCase","matchedObject","MyPopper","Popper","minWidth","RefNameAutocomplete","showHelp","onSelect","fetchResults","TextFieldProps","setOpen","loaded","setLoaded","isHelpDialogDisplayed","setHelpDialogDisplayed","currentSearch","setCurrentSearch","inputValue","setInputValue","searchOptions","setSearchOptions","debouncedSearch","useDebounce","coarseVisibleLocStrings","hasDisplayedRegions","RefSequenceResult","matchedAttribute","active","r","getDisplayString","notify","inputBoxVal","measureText","Autocomplete","disableListWrap","disableClearable","PopperComponent","disabled","freeSolo","includeInputInList","selectOnFocus","onInputChange","newInputValue","loadingText","onOpen","onChange","_event","selectedOption","BaseResult","getOptionDisabled","group","filtered","toLocaleLowerCase","renderInput","helperText","InputProps","TextField","onBlur","endAdornment","CircularProgress","size","InputAdornment","marginRight","SearchIcon","IconButton","HelpIcon","placeholder","target","renderOption","getRenderingComponent","noWrap","getOptionLabel","Suspense","fallback","handleClose","headerRefName","SearchBox","textSearchManager","rankSearchResults","searchScope","query","searchType","search","queryString","textSearchResults","refNameResults","allRefNames","startsWith","handleSelectedRegion","getTrackId","location","getLocation","navToLocString","setSearchResults","showTrack","margin","SPACING","WIDGET_HEIGHT","closeButton","ExportSvgDlg","offscreenCanvas","OffscreenCanvas","rasterizeLayers","setRasterizeLayers","Dialog","DialogTitle","CloseIcon","DialogContent","FormControlLabel","control","Checkbox","checked","DialogActions","exportSvg","container","flexDirection","alignItems","slider","ZoomControls","maxBpPerPx","minBpPerPx","scaleFactor","log2","setValue","zoom","ZoomOut","Slider","onChangeCommitted","zoomTo","ZoomIn","headerBar","headerForm","flexWrap","spacer","flexGrow","panButton","bp","marginLeft","toggleButton","buttonSpacer","HeaderButtons","activateTrackSelector","TrackSelectorIcon","PanControls","slide","ArrowBackIcon","ArrowForwardIcon","RegionWidth","coarseTotalBp","Controls","FormGroup","row","LinearGenomeViewHeader","hideHeaderOverview","root","transition","transitions","duration","shortest","dragHandle","dragHandleIcon","verticalAlign","iconButton","TrackLabel","setAnchorEl","trackConf","handleClick","currentTarget","onDragStart","parentNode","dataTransfer","setDragImage","setDraggingTrackId","onDragEnd","assemblies","sequence","handleMenuItemClick","items","getTrackActionMenuItems","sort","a","b","priority","Paper","draggable","DragIcon","hideTrack","MoreVertIcon","resizeHandle","RESIZE_HANDLE_HEIGHT","overlay","trackLabel","trackLabelInline","trackLabelOverlap","trackRenderingContainer","overflowX","TrackContainerLabel","labelStyle","trackLabels","TrackContainer","horizontalScroll","draggingTrackId","moveTrack","trackRefs","onDragEnter","debouncedOnDragEnter","useDebouncedCallback","RenderingComponent","DisplayBlurb","dimmed","onScroll","onHorizontalScroll","ResizeHandle","onDrag","VerticalGuide","coordX","RubberBand","setAnchorPosition","setOffsets","computeOffsets","offsetX","leftPx","rightPx","leftOffset","rightOffset","numOfBpSelected","rubberBandMenuItems","scaleBarContainer","scaleBarZoomContainer","refLabel","RenderedRefNameLabels","lastLeftBlock","RenderedScaleBarLabels","baseNumber","other","verticalGuidesZoomContainer","verticalGuidesContainer","hint","divider","RenderedVerticalGuides","VerticalGuides","centerLineContainer","borderTop","centerLineText","CenterLine","centerLineInfo","trackHeights","startingPosition","tracksContainer","TracksContainer","delta","scheduled","prevX","setMouseDragging","cleanup","currX","requestAnimationFrame","dataset","resizer","button","mouseUp","mouseLeave","curr","onWheel","origEvent","normalizeWheel","ctrlKey","pixelY","setScaleFactor","pixelX","onMouseUp","showCenterLine","SCALE_BAR_HEIGHT","SearchResultsDialog","importFormContainer","ImportForm","isSearchDialogDisplayed","modelError","selectedAsm","setSelectedAsm","assemblyError","myOption","setOption","selectedRegion","input","ErrorMessage","Container","onSubmit","Grid","item","AssemblySelector","selected","disableShrink","showAllRegionsInAssembly","optAssemblyName","MiniControls","ArrowDown","loadingMessage","dialogContent","textAreaFont","fetchSequence","chunks","chunk","SequenceDialog","setSequence","regionsSelected","getSelectedRegions","controller","formatSeqFasta","chunkSeq","chunkRefName","chunkStart","chunkEnd","chunkLocstring","header","seq","sequenceTooLarge","Divider","multiline","rows","fullWidth","readOnly","copy","ContentCopyIcon","seqFastaFile","Blob","saveAs","GetAppIcon","autoFocus","getEnv","assemblyRegions","newRegion","setDisplayedRegions","getTrackName","trackConfigSchema","resolveIdentifier","getRoot","searchResults","TableContainer","Table","TableHead","TableRow","TableCell","align","TableBody","scope","resultTrackId","note","paddingTop","paddingBottom","LinearGenomeView","hideHeader","seqDialogDisplayed","setSequenceDialogOpen","Header","calculateVisibleLocStrings","isSingleAssemblyName","every","INTER_REGION_PADDING_WIDTH","localStorageGetItem","localStorage","getItem","BaseViewModel","ElementId","array","MUIRegion","pluggableMstType","trackSelectorType","enumeration","setting","showCytobandsSetting","volatileWidth","volatileError","afterDisplayedRegionsSetCallbacks","coarseDynamicBlocks","assemblyErrors","assembliesInitialized","scaleBarHeight","trackHeightsWithResizeHandles","maxOffset","leftPadding","displayedRegionsTotalPx","minOffset","rightPadding","highResolutionScaling","Set","includeAggregateIndexes","regionNumber","viewBpToPx","bpSoFar","getSnapshot","oob","interRegionPaddingBp","minimumBlockBp","len","getTrack","openTrackIds","updateScore","getScore","rewriteOnClicks","trackType","viewMenuActions","subMenu","holdOnClick","args","apply","trackTypeActions","allActions","Map","trackInMap","clone","setShowCytobands","flag","setItem","newWidth","toggleHeader","toggleHeaderOverview","scrollTo","newOffsetPx","clamp","newBpPerPx","oldBpPerPx","viewWidth","setNewView","horizontallyFlip","initialSnapshot","displayInitialSnapshot","getTrackType","viewType","getViewType","supportedDisplays","displayTypes","displayType","displayConf","shownTracks","stateModel","transaction","remove","movingTrackId","targetTrackId","oldIndex","newIndex","splice","closeView","parent","isViewContainer","removeView","toggleTrack","hiddenCount","setTrackLabels","toggleCenterLine","selector","locString","isValidRefName","parsedLocStrings","trim","l","parseLocString","locations","asmName","asm","canonicalRefName","parentRegion","navTo","navToMultiple","firstLocation","s","refNameMatched","predicate","lastIndex","findLastIndex","previousIndex","moveTo","locationIndex","locationStart","locationEnd","startDisplayedRegion","endDisplayedRegion","singleRefSeq","startOffset","endOffset","simView","afterDisplayedRegionsSet","targetBpPerPx","extraBp","bpToStart","oldOffsetPx","regionIndex","centerPx","center","centerBp","factor","cancelLastAnimation","viewWidths","springAnimate","animate","cancelAnimation","canShowCytobands","anyCytobandsExist","some","queueDialog","ReturnToImportFormDialog","FolderOpenIcon","PhotoCameraIcon","SyncAltIcon","VisibilityIcon","LabelIcon","entries","currentlyCalculatedStaticBlocks","stringifiedCurrentlyCalculatedStaticBlocks","calculateStaticBlocks","sret","calculateDynamicBlocks","visibleLocStrings","clearView","clear","setCoarseDynamicBlocks","blocks","blob","ZoomInIcon","SetMaxHeightDlg","trackShowLabels","trackShowDescriptions","trackDisplayMode","trackMaxHeight","showLabels","showDescriptions","maxHeight","displayMode","rendererConfig","configBlob","toggleShowLabels","toggleShowDescriptions","setDisplayMode","setMaxHeight","superTrackMenuItems","doneCallback","mouseover","contextVariable","LinearGenomeViewPlugin","BaseLinearDisplayComponent","addTrackType","createBaseTrackConfig","TrackType","createBaseTrackModel","addDisplayType","linearBareDisplayConfigSchemaFactory","DisplayType","LinearBareDisplayStateModelFactory","linearBasicDisplayConfigSchemaFactory","linearBasicDisplayModelFactory","addViewType","ViewType","linearGenomeViewStateModelFactory","addToExtensionPoint","addView","waitForAssembly","idsNotFound","match","isAbstractMenuManager","rootModel","appendToSubMenu","LineStyleIcon","Plugin","field","setMax"],"mappings":"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"}
1
+ {"version":3,"file":"plugin-linear-genome-view.esm.js","sources":["../../../node_modules/regenerator-runtime/runtime.js","../src/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.ts","../src/BaseLinearDisplay/components/Block.tsx","../src/BaseLinearDisplay/components/LinearBlocks.tsx","../src/BaseLinearDisplay/components/BaseLinearDisplay.tsx","../src/BaseLinearDisplay/components/ServerSideRenderedBlockContent.tsx","../src/BaseLinearDisplay/models/serverSideRenderedBlock.ts","../src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx","../src/LinearBareDisplay/configSchema.ts","../src/LinearBareDisplay/model.ts","../src/LinearGenomeView/util.ts","../src/LinearGenomeView/components/Ruler.tsx","../src/LinearGenomeView/components/OverviewRubberBand.tsx","../src/LinearGenomeView/components/OverviewScaleBar.tsx","../src/LinearGenomeView/components/LinearGenomeViewSvg.tsx","../src/LinearGenomeView/components/util.ts","../src/LinearGenomeView/components/RefNameAutocomplete.tsx","../src/LinearGenomeView/components/SearchBox.tsx","../src/LinearGenomeView/components/ExportSvgDialog.tsx","../src/LinearGenomeView/components/ZoomControls.tsx","../src/LinearGenomeView/components/Header.tsx","../src/LinearGenomeView/components/TrackLabel.tsx","../src/LinearGenomeView/components/TrackContainer.tsx","../src/LinearGenomeView/components/RubberBand.tsx","../src/LinearGenomeView/components/ScaleBar.tsx","../src/LinearGenomeView/components/VerticalGuides.tsx","../src/LinearGenomeView/components/CenterLine.tsx","../src/LinearGenomeView/components/TracksContainer.tsx","../src/LinearGenomeView/components/ImportForm.tsx","../src/LinearGenomeView/components/MiniControls.tsx","../src/LinearGenomeView/components/SequenceDialog.tsx","../src/LinearGenomeView/components/SearchResultsDialog.tsx","../src/LinearGenomeView/components/LinearGenomeView.tsx","../src/LinearGenomeView/index.tsx","../src/LinearBasicDisplay/model.ts","../src/LinearBasicDisplay/configSchema.ts","../src/index.ts","../src/LinearGenomeView/components/HelpDialog.tsx","../src/LinearBasicDisplay/components/SetMaxHeight.tsx"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\nexport const baseLinearDisplayConfigSchema = ConfigurationSchema(\n 'BaseLinearDisplay',\n {\n maxFeatureScreenDensity: {\n type: 'number',\n description:\n 'maximum features per pixel that is displayed in the view, used if byte size estimates not available',\n defaultValue: 0.3,\n },\n fetchSizeLimit: {\n type: 'number',\n defaultValue: 1_000_000,\n description:\n \"maximum data to attempt to download for a given track, used if adapter doesn't specify one\",\n },\n },\n { explicitIdentifier: 'displayId' },\n)\n","import React from 'react'\nimport { BaseBlock } from '@jbrowse/core/util/blockTypes'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { observer } from 'mobx-react'\n\nconst useStyles = makeStyles(theme => ({\n contentBlock: {\n position: 'relative',\n minHeight: '100%',\n boxSizing: 'border-box',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n elidedBlock: {\n minHeight: '100%',\n boxSizing: 'border-box',\n backgroundColor: '#999',\n backgroundImage:\n 'repeating-linear-gradient(90deg, transparent, transparent 1px, rgba(255,255,255,.5) 1px, rgba(255,255,255,.5) 3px)',\n },\n interRegionPaddingBlock: {\n minHeight: '100%',\n backgroundColor: theme.palette.text.primary,\n },\n boundaryPaddingBlock: {\n minHeight: '100%',\n backgroundColor: theme.palette.action.disabledBackground,\n },\n}))\n\nconst ContentBlock = observer(\n ({ block, children }: { block: BaseBlock; children: React.ReactNode }) => {\n const classes = useStyles()\n const { widthPx } = block\n return (\n <div style={{ width: widthPx }} className={classes.contentBlock}>\n {children}\n </div>\n )\n },\n)\n\nfunction ElidedBlock({ width }: { width: number }) {\n const classes = useStyles()\n return <div className={classes.elidedBlock} style={{ width }} />\n}\n\nfunction InterRegionPaddingBlock({\n boundary,\n width,\n style = {},\n}: {\n boundary: boolean\n width: number\n style?: React.CSSProperties\n}) {\n const classes = useStyles()\n return (\n <div\n style={{\n ...style,\n width,\n }}\n className={\n boundary\n ? classes.boundaryPaddingBlock\n : classes.interRegionPaddingBlock\n }\n />\n )\n}\n\nexport { ContentBlock, ElidedBlock, InterRegionPaddingBlock }\n","import React from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport {\n ContentBlock,\n ElidedBlock,\n InterRegionPaddingBlock,\n} from '@jbrowse/core/util/blockTypes'\nimport { BaseLinearDisplayModel } from '../models/BaseLinearDisplayModel'\n\nimport {\n ContentBlock as ContentBlockComponent,\n ElidedBlock as ElidedBlockComponent,\n InterRegionPaddingBlock as InterRegionPaddingBlockComponent,\n} from './Block'\nimport { LinearGenomeViewModel } from '../../LinearGenomeView'\n\nconst useStyles = makeStyles({\n linearBlocks: {\n whiteSpace: 'nowrap',\n textAlign: 'left',\n position: 'absolute',\n minHeight: '100%',\n display: 'flex',\n },\n heightOverflowed: {\n position: 'absolute',\n color: 'rgb(77,77,77)',\n borderBottom: '2px solid rgb(77,77,77)',\n textShadow: 'white 0px 0px 1px',\n whiteSpace: 'nowrap',\n width: '100%',\n fontWeight: 'bold',\n textAlign: 'center',\n zIndex: 2000,\n boxSizing: 'border-box',\n },\n})\nconst RenderedBlocks = observer(\n ({ model }: { model: BaseLinearDisplayModel }) => {\n const classes = useStyles()\n const { blockDefinitions, blockState } = model\n return (\n <>\n {blockDefinitions.map(block => {\n if (block instanceof ContentBlock) {\n const state = blockState.get(block.key)\n\n return (\n <ContentBlockComponent\n block={block}\n key={`${model.id}-${block.key}`}\n >\n {state && state.ReactComponent ? (\n <state.ReactComponent model={state} />\n ) : null}\n {state && state.maxHeightReached ? (\n <div\n className={classes.heightOverflowed}\n style={{\n top: state.layout.getTotalHeight() - 16,\n pointerEvents: 'none',\n height: 16,\n }}\n >\n Max height reached\n </div>\n ) : null}\n </ContentBlockComponent>\n )\n }\n if (block instanceof ElidedBlock) {\n return (\n <ElidedBlockComponent\n key={`${model.id}-${block.key}`}\n width={block.widthPx}\n />\n )\n }\n if (block instanceof InterRegionPaddingBlock) {\n return (\n <InterRegionPaddingBlockComponent\n key={block.key}\n width={block.widthPx}\n style={{ background: 'none' }}\n boundary={block.variant === 'boundary'}\n />\n )\n }\n throw new Error(`invalid block type ${typeof block}`)\n })}\n </>\n )\n },\n)\nfunction LinearBlocks({ model }: { model: BaseLinearDisplayModel }) {\n const classes = useStyles()\n const { blockDefinitions } = model\n const viewModel = getContainingView(model) as LinearGenomeViewModel\n return (\n <div\n data-testid=\"Blockset\"\n className={classes.linearBlocks}\n style={{\n left: blockDefinitions.offsetPx - viewModel.offsetPx,\n }}\n >\n <RenderedBlocks model={model} />\n </div>\n )\n}\n\nexport { RenderedBlocks, useStyles }\nexport default observer(LinearBlocks)\n","import React, { useState, useRef, useMemo } from 'react'\nimport { observer } from 'mobx-react'\nimport { Portal, alpha, useTheme, makeStyles } from '@material-ui/core'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { Menu } from '@jbrowse/core/ui'\nimport { usePopper } from 'react-popper'\n\n// locals\nimport LinearBlocks from './LinearBlocks'\nimport { BaseLinearDisplayModel } from '../models/BaseLinearDisplayModel'\n\nfunction round(value: number) {\n return Math.round(value * 1e5) / 1e5\n}\n\nconst useStyles = makeStyles(theme => ({\n display: {\n position: 'relative',\n whiteSpace: 'nowrap',\n textAlign: 'left',\n width: '100%',\n minHeight: '100%',\n },\n\n // these styles come from\n // https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Tooltip/Tooltip.js\n tooltip: {\n pointerEvents: 'none',\n backgroundColor: alpha(theme.palette.grey[700], 0.9),\n borderRadius: theme.shape.borderRadius,\n color: theme.palette.common.white,\n fontFamily: theme.typography.fontFamily,\n padding: '4px 8px',\n fontSize: theme.typography.pxToRem(12),\n lineHeight: `${round(14 / 10)}em`,\n maxWidth: 300,\n wordWrap: 'break-word',\n },\n}))\n\nconst TooltipContents = React.forwardRef<\n HTMLDivElement,\n { message: React.ReactNode | string }\n>(({ message }: { message: React.ReactNode | string }, ref) => {\n return <div ref={ref}>{message}</div>\n})\n\nconst Tooltip = observer(\n ({\n model,\n clientMouseCoord,\n }: {\n model: BaseLinearDisplayModel\n clientMouseCoord: Coord\n }) => {\n const classes = useStyles()\n const { featureUnderMouse } = model\n const [width, setWidth] = useState(0)\n const [popperElt, setPopperElt] = useState<HTMLDivElement | null>(null)\n\n // must be memoized a la https://github.com/popperjs/react-popper/issues/391\n const virtElement = useMemo(\n () => ({\n getBoundingClientRect: () => {\n const x = clientMouseCoord[0] + width / 2 + 20\n const y = clientMouseCoord[1]\n return {\n top: y,\n left: x,\n bottom: y,\n right: x,\n width: 0,\n height: 0,\n x,\n y,\n toJSON() {},\n }\n },\n }),\n [clientMouseCoord, width],\n )\n const { styles, attributes } = usePopper(virtElement, popperElt)\n\n const contents = featureUnderMouse\n ? getConf(model, 'mouseover', { feature: featureUnderMouse })\n : undefined\n\n return featureUnderMouse && contents ? (\n <Portal>\n <div\n ref={setPopperElt}\n className={classes.tooltip}\n // zIndex needed to go over widget drawer\n style={{ ...styles.popper, zIndex: 100000 }}\n {...attributes.popper}\n >\n <TooltipContents\n ref={elt => setWidth(elt?.getBoundingClientRect().width || 0)}\n message={contents}\n />\n </div>\n </Portal>\n ) : null\n },\n)\n\ntype Coord = [number, number]\nconst BaseLinearDisplay = observer(\n (props: { model: BaseLinearDisplayModel; children?: React.ReactNode }) => {\n const classes = useStyles()\n const theme = useTheme()\n const ref = useRef<HTMLDivElement>(null)\n const [clientRect, setClientRect] = useState<DOMRect>()\n const [offsetMouseCoord, setOffsetMouseCoord] = useState<Coord>([0, 0])\n const [clientMouseCoord, setClientMouseCoord] = useState<Coord>([0, 0])\n const [contextCoord, setContextCoord] = useState<Coord>()\n const { model, children } = props\n const {\n TooltipComponent,\n DisplayMessageComponent,\n contextMenuItems,\n height,\n setContextMenuFeature,\n } = model\n\n return (\n <div\n ref={ref}\n data-testid={`display-${getConf(model, 'displayId')}`}\n className={classes.display}\n onContextMenu={event => {\n event.preventDefault()\n if (contextCoord) {\n // There's already a context menu open, so close it\n setContextCoord(undefined)\n } else if (ref.current) {\n setContextCoord([event.clientX, event.clientY])\n }\n }}\n onMouseMove={event => {\n if (!ref.current) {\n return\n }\n const rect = ref.current.getBoundingClientRect()\n const { left, top } = rect\n setOffsetMouseCoord([event.clientX - left, event.clientY - top])\n setClientMouseCoord([event.clientX, event.clientY])\n setClientRect(rect)\n }}\n >\n {DisplayMessageComponent ? (\n <DisplayMessageComponent model={model} />\n ) : (\n <LinearBlocks {...props} />\n )}\n {children}\n\n <TooltipComponent\n model={model}\n height={height}\n offsetMouseCoord={offsetMouseCoord}\n clientMouseCoord={clientMouseCoord}\n clientRect={clientRect}\n mouseCoord={offsetMouseCoord}\n />\n\n <Menu\n open={Boolean(contextCoord) && Boolean(contextMenuItems().length)}\n onMenuItemClick={(_, callback) => {\n callback()\n setContextCoord(undefined)\n }}\n onClose={() => {\n setContextCoord(undefined)\n setContextMenuFeature(undefined)\n }}\n TransitionProps={{\n onExit: () => {\n setContextCoord(undefined)\n setContextMenuFeature(undefined)\n },\n }}\n anchorReference=\"anchorPosition\"\n anchorPosition={\n contextCoord\n ? { top: contextCoord[1], left: contextCoord[0] }\n : undefined\n }\n style={{ zIndex: theme.zIndex.tooltip }}\n menuItems={contextMenuItems()}\n data-testid=\"base_linear_display_context_menu\"\n />\n </div>\n )\n },\n)\n\nexport default BaseLinearDisplay\nexport { Tooltip }\n","import React, { useEffect, useState } from 'react'\nimport Typography from '@material-ui/core/Typography'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { observer } from 'mobx-react'\nimport { getParent } from 'mobx-state-tree'\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\nimport Button from '@material-ui/core/Button'\nimport RefreshIcon from '@material-ui/icons/Refresh'\n\nconst useStyles = makeStyles(theme => ({\n loading: {\n paddingLeft: '0.6em',\n backgroundColor: theme.palette.action.disabledBackground,\n backgroundImage:\n 'repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,.5) 5px, rgba(255,255,255,.5) 10px)',\n height: '100%',\n width: '100%',\n pointerEvents: 'none',\n textAlign: 'center',\n },\n blockMessage: {\n width: '100%',\n background: theme.palette.action.disabledBackground,\n padding: theme.spacing(2),\n pointerEvents: 'none',\n textAlign: 'center',\n },\n blockError: {\n padding: theme.spacing(2),\n width: '100%',\n whiteSpace: 'normal',\n color: theme.palette.error.main,\n overflowY: 'auto',\n },\n blockReactNodeMessage: {\n width: '100%',\n background: theme.palette.action.disabledBackground,\n padding: theme.spacing(2),\n textAlign: 'center',\n },\n dots: {\n '&::after': {\n display: 'inline-block',\n animation: '$ellipsis 1.5s infinite',\n content: '\".\"',\n width: '1em',\n textAlign: 'left',\n },\n },\n '@keyframes ellipsis': {\n '0%': {\n content: '\".\"',\n },\n '33%': {\n content: '\"..\"',\n },\n '66%': {\n content: '\"...\"',\n },\n },\n}))\n\nfunction Repeater({ children }: { children: React.ReactNode }) {\n return (\n <div style={{ display: 'flex' }}>\n {children}\n {children}\n </div>\n )\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst LoadingMessage = observer(({ model }: { model: any }) => {\n // only show the loading message after 300ms to prevent excessive flickering\n const [shown, setShown] = useState(false)\n const classes = useStyles()\n useEffect(() => {\n let killed = false\n const timeout = setTimeout(() => {\n if (!killed) {\n setShown(true)\n }\n }, 300)\n return () => {\n clearTimeout(timeout)\n killed = true\n }\n }, [])\n\n const { status: blockStatus } = model\n const { message: displayStatus } = getParent(model, 2)\n const status = displayStatus || blockStatus\n return (\n <>\n {shown ? (\n <div className={classes.loading}>\n <Typography className={classes.dots} variant=\"body2\">\n {status ? `${status}` : 'Loading'}\n </Typography>\n </div>\n ) : null}\n </>\n )\n})\n\nfunction BlockMessage({\n messageContent,\n}: {\n messageContent: string | React.ReactNode\n}) {\n const classes = useStyles()\n\n return React.isValidElement(messageContent) ? (\n <div className={classes.blockReactNodeMessage}>{messageContent}</div>\n ) : (\n <Typography variant=\"body2\" className={classes.blockMessage}>\n {messageContent}\n </Typography>\n )\n}\n\nfunction BlockError({\n error,\n reload,\n displayHeight,\n}: {\n error: Error\n reload: () => void\n displayHeight: number\n}) {\n const classes = useStyles()\n return (\n <div className={classes.blockError} style={{ height: displayHeight }}>\n {reload ? (\n <Button\n data-testid=\"reload_button\"\n onClick={reload}\n startIcon={<RefreshIcon />}\n >\n Reload\n </Button>\n ) : null}\n <Typography color=\"error\" variant=\"body2\" display=\"inline\">\n {`${error}`}\n </Typography>\n </div>\n )\n}\n\nconst ServerSideRenderedBlockContent = observer(\n ({\n model,\n }: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n model: any\n }) => {\n if (model.error) {\n return (\n <Repeater>\n <BlockError\n error={model.error}\n reload={model.reload}\n displayHeight={getParentRenderProps(model).displayModel.height}\n />\n </Repeater>\n )\n }\n if (model.message) {\n return (\n <Repeater>\n <BlockMessage messageContent={model.message} />\n </Repeater>\n )\n }\n if (!model.filled) {\n return (\n <Repeater>\n <LoadingMessage model={model} />\n </Repeater>\n )\n }\n return model.reactElement\n },\n)\n\nexport default ServerSideRenderedBlockContent\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { types, getParent, isAlive, cast, Instance } from 'mobx-state-tree'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { Region } from '@jbrowse/core/util/types/mst'\nimport {\n AbstractDisplayModel,\n isRetryException,\n} from '@jbrowse/core/util/types'\nimport React from 'react'\n\nimport {\n assembleLocString,\n makeAbortableReaction,\n getSession,\n getContainingDisplay,\n} from '@jbrowse/core/util'\nimport {\n getTrackAssemblyNames,\n getRpcSessionId,\n} from '@jbrowse/core/util/tracks'\n\nimport ServerSideRenderedBlockContent from '../components/ServerSideRenderedBlockContent'\n\n// the MST state of a single server-side-rendered block in a display\nconst blockState = types\n .model('BlockState', {\n key: types.string,\n region: Region,\n reloadFlag: 0,\n isLeftEndOfDisplayedRegion: false,\n isRightEndOfDisplayedRegion: false,\n })\n // NOTE: all this volatile stuff has to be filled in at once, so that it stays consistent\n .volatile(() => ({\n renderInProgress: undefined as AbortController | undefined,\n filled: false,\n reactElement: undefined as React.ReactElement | undefined,\n features: undefined as Map<string, Feature> | undefined,\n layout: undefined as any,\n status: '',\n error: undefined as unknown,\n message: undefined as string | undefined,\n maxHeightReached: false,\n ReactComponent: ServerSideRenderedBlockContent,\n renderProps: undefined as any,\n }))\n .actions(self => {\n let renderInProgress: undefined | AbortController\n return {\n doReload() {\n self.reloadFlag = self.reloadFlag + 1\n },\n afterAttach() {\n const display = getContainingDisplay(self)\n makeAbortableReaction(\n self as any,\n renderBlockData,\n renderBlockEffect as any, // reaction doesn't expect async here\n {\n name: `${display.id}/${assembleLocString(self.region)} rendering`,\n delay: display.renderDelay,\n fireImmediately: true,\n },\n this.setLoading,\n this.setRendered,\n this.setError,\n )\n },\n setStatus(message: string) {\n self.status = message\n },\n setLoading(abortController: AbortController) {\n if (renderInProgress !== undefined) {\n if (!renderInProgress.signal.aborted) {\n renderInProgress.abort()\n }\n }\n self.filled = false\n self.message = undefined\n self.reactElement = undefined\n self.features = undefined\n self.layout = undefined\n self.error = undefined\n self.maxHeightReached = false\n self.renderProps = undefined\n renderInProgress = abortController\n },\n setMessage(messageText: string) {\n if (renderInProgress && !renderInProgress.signal.aborted) {\n renderInProgress.abort()\n }\n self.filled = false\n self.message = messageText\n self.reactElement = undefined\n self.features = undefined\n self.layout = undefined\n self.error = undefined\n self.maxHeightReached = false\n self.renderProps = undefined\n renderInProgress = undefined\n },\n setRendered(\n props:\n | {\n reactElement: React.ReactElement\n features: Map<string, Feature>\n layout: any\n maxHeightReached: boolean\n renderProps: any\n }\n | undefined,\n ) {\n if (!props) {\n return\n }\n const {\n reactElement,\n features,\n layout,\n maxHeightReached,\n renderProps,\n } = props\n self.filled = true\n self.message = undefined\n self.reactElement = reactElement\n self.features = features\n self.layout = layout\n self.error = undefined\n self.maxHeightReached = maxHeightReached\n self.renderProps = renderProps\n renderInProgress = undefined\n },\n setError(error: Error | unknown) {\n console.error(error)\n if (renderInProgress && !renderInProgress.signal.aborted) {\n renderInProgress.abort()\n }\n // the rendering failed for some reason\n self.filled = false\n self.message = undefined\n self.reactElement = undefined\n self.features = undefined\n self.layout = undefined\n self.maxHeightReached = false\n self.error = error\n self.renderProps = undefined\n renderInProgress = undefined\n if (isRetryException(error as Error)) {\n this.reload()\n }\n },\n reload() {\n self.renderInProgress = undefined\n self.filled = false\n self.reactElement = undefined\n self.features = undefined\n self.layout = undefined\n self.error = undefined\n self.message = undefined\n self.maxHeightReached = false\n self.ReactComponent = ServerSideRenderedBlockContent\n self.renderProps = undefined\n getParent(self, 2).reload()\n },\n beforeDestroy() {\n if (renderInProgress && !renderInProgress.signal.aborted) {\n renderInProgress.abort()\n }\n const display = getContainingDisplay(self)\n const { rpcManager } = getSession(self)\n const { rendererType } = display\n const { renderArgs } = renderBlockData(cast(self))\n // renderArgs can be undefined if an error occured in this block\n if (renderArgs) {\n rendererType\n .freeResourcesInClient(\n rpcManager,\n JSON.parse(JSON.stringify(renderArgs)),\n )\n .catch((e: Error) => {\n // just console.error if it's something while it's being destroyed\n console.warn('Error while destroying block', e)\n })\n }\n },\n }\n })\n\nexport default blockState\nexport type BlockStateModel = typeof blockState\nexport type BlockModel = Instance<BlockStateModel>\n\n// calls the render worker to render the block content not using a flow for\n// this, because the flow doesn't work with autorun\nexport function renderBlockData(\n self: Instance<BlockStateModel>,\n optDisplay?: AbstractDisplayModel,\n) {\n try {\n const display = optDisplay || (getContainingDisplay(self) as any)\n const { assemblyManager, rpcManager } = getSession(display)\n const { adapterConfig, rendererType, error, parentTrack } = display\n const assemblyNames = getTrackAssemblyNames(parentTrack)\n const regionAsm = self.region.assemblyName\n if (\n !assemblyNames.includes(regionAsm) &&\n !assemblyNames.find(name => assemblyManager.get(name)?.hasName(regionAsm))\n ) {\n throw new Error(\n `region assembly (${regionAsm}) does not match track assemblies (${assemblyNames})`,\n )\n }\n\n const renderProps = display.renderProps()\n const { config } = renderProps\n\n // This line is to trigger the mobx reaction when the config changes\n // It won't trigger the reaction if it doesn't think we're accessing it\n readConfObject(config)\n\n const sessionId = getRpcSessionId(display)\n const cannotBeRenderedReason = display.regionCannotBeRendered(self.region)\n\n return {\n rendererType,\n rpcManager,\n renderProps,\n cannotBeRenderedReason,\n displayError: error,\n renderArgs: {\n statusCallback: (message: string) => {\n if (isAlive(self)) {\n self.setStatus(message)\n }\n },\n assemblyName: self.region.assemblyName,\n regions: [self.region],\n adapterConfig,\n rendererType: rendererType.name,\n sessionId,\n blockKey: self.key,\n reloadFlag: self.reloadFlag,\n timeout: 1000000, // 10000,\n },\n }\n } catch (e) {\n return { displayError: e }\n }\n}\n\ninterface RenderProps {\n displayError: Error\n rendererType: any\n renderProps: { [key: string]: any }\n rpcManager: { call: Function }\n cannotBeRenderedReason: string\n renderArgs: { [key: string]: any }\n}\n\ninterface ErrorProps {\n displayError: string\n}\n\nasync function renderBlockEffect(\n props: RenderProps | ErrorProps,\n signal: AbortSignal,\n self: Instance<BlockStateModel>,\n) {\n const {\n rendererType,\n renderProps,\n rpcManager,\n renderArgs,\n cannotBeRenderedReason,\n displayError,\n } = props as RenderProps\n if (!isAlive(self)) {\n return undefined\n }\n\n if (displayError) {\n self.setError(displayError)\n return undefined\n }\n if (cannotBeRenderedReason) {\n self.setMessage(cannotBeRenderedReason)\n return undefined\n }\n\n if (renderProps.notReady) {\n return undefined\n }\n\n const { reactElement, features, layout, maxHeightReached } =\n await rendererType.renderInClient(rpcManager, {\n ...renderArgs,\n ...renderProps,\n signal,\n })\n return {\n reactElement,\n features,\n layout,\n maxHeightReached,\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react'\nimport { Button, Typography } from '@material-ui/core'\nimport { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport {\n isAbortException,\n getContainingView,\n getSession,\n isSelectionContainer,\n isSessionModelWithWidgets,\n} from '@jbrowse/core/util'\nimport { Stats } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { BaseBlock } from '@jbrowse/core/util/blockTypes'\nimport { Region } from '@jbrowse/core/util/types'\nimport CompositeMap from '@jbrowse/core/util/compositeMap'\nimport { Feature, isFeature } from '@jbrowse/core/util/simpleFeature'\nimport {\n getParentRenderProps,\n getRpcSessionId,\n} from '@jbrowse/core/util/tracks'\nimport { autorun } from 'mobx'\nimport { addDisposer, isAlive, types, Instance } from 'mobx-state-tree'\n// icons\nimport MenuOpenIcon from '@material-ui/icons/MenuOpen'\n\nimport { LinearGenomeViewModel, ExportSvgOptions } from '../../LinearGenomeView'\nimport { Tooltip } from '../components/BaseLinearDisplay'\nimport BlockState, { renderBlockData } from './serverSideRenderedBlock'\n\ntype LGV = LinearGenomeViewModel\n\nexport interface Layout {\n minX: number\n minY: number\n maxX: number\n maxY: number\n name: string\n}\n\n// stabilize clipid under test for snapshot\nfunction getId(id: string, index: number) {\n const isJest = typeof jest === 'undefined'\n return `clip-${isJest ? id : 'jest'}-${index}`\n}\n\ntype LayoutRecord = [number, number, number, number]\n\nfunction getDisplayStr(totalBytes: number) {\n let displayBp\n if (Math.floor(totalBytes / 1000000) > 0) {\n displayBp = `${parseFloat((totalBytes / 1000000).toPrecision(3))} Mb`\n } else if (Math.floor(totalBytes / 1000) > 0) {\n displayBp = `${parseFloat((totalBytes / 1000).toPrecision(3))} Kb`\n } else {\n displayBp = `${Math.floor(totalBytes)} bytes`\n }\n return displayBp\n}\n\nconst minDisplayHeight = 20\nconst defaultDisplayHeight = 100\n\nexport const BaseLinearDisplay = types\n .compose(\n 'BaseLinearDisplay',\n BaseDisplay,\n types.model({\n height: types.optional(\n types.refinement(\n 'displayHeight',\n types.number,\n n => n >= minDisplayHeight,\n ),\n defaultDisplayHeight,\n ),\n blockState: types.map(BlockState),\n userBpPerPxLimit: types.maybe(types.number),\n userByteSizeLimit: types.maybe(types.number),\n }),\n )\n .volatile(() => ({\n currBpPerPx: 0,\n message: '',\n featureIdUnderMouse: undefined as undefined | string,\n contextMenuFeature: undefined as undefined | Feature,\n scrollTop: 0,\n estimatedRegionStatsP: undefined as undefined | Promise<Stats>,\n estimatedRegionStats: undefined as undefined | Stats,\n }))\n .views(self => ({\n get blockType(): 'staticBlocks' | 'dynamicBlocks' {\n return 'staticBlocks'\n },\n get blockDefinitions() {\n const { blockType } = this\n const view = getContainingView(self) as LGV\n if (!view.initialized) {\n throw new Error('view not initialized yet')\n }\n return view[blockType]\n },\n }))\n .views(self => ({\n /**\n * how many milliseconds to wait for the display to\n * \"settle\" before re-rendering a block\n */\n get renderDelay() {\n return 50\n },\n\n get TooltipComponent(): React.FC<any> {\n return Tooltip as unknown as React.FC\n },\n\n /**\n * returns a string feature ID if the globally-selected object\n * is probably a feature\n */\n get selectedFeatureId() {\n if (isAlive(self)) {\n const { selection } = getSession(self)\n // does it quack like a feature?\n if (isFeature(selection)) {\n return selection.id()\n }\n }\n return undefined\n },\n /**\n * if a display-level message should be displayed instead of the blocks,\n * make this return a react component\n */\n get DisplayMessageComponent() {\n return undefined as undefined | React.FC<any>\n },\n }))\n .views(self => ({\n /**\n * a CompositeMap of `featureId -> feature obj` that\n * just looks in all the block data for that feature\n */\n get features() {\n const featureMaps = []\n for (const block of self.blockState.values()) {\n if (block && block.features) {\n featureMaps.push(block.features)\n }\n }\n return new CompositeMap(featureMaps)\n },\n\n get featureUnderMouse() {\n const feat = self.featureIdUnderMouse\n return feat ? this.features.get(feat) : undefined\n },\n\n getFeatureOverlapping(blockKey: string, x: number, y: number) {\n return self.blockState.get(blockKey)?.layout?.getByCoord(x, y)\n },\n\n getFeatureByID(blockKey: string, id: string): LayoutRecord | undefined {\n return self.blockState.get(blockKey)?.layout?.getByID(id)\n },\n\n // if block key is not supplied, can look at all blocks\n searchFeatureByID(id: string): LayoutRecord | undefined {\n let ret\n self.blockState.forEach(block => {\n const val = block?.layout?.getByID(id)\n if (val) {\n ret = val\n }\n })\n return ret\n },\n\n get currentBytesRequested() {\n return self.estimatedRegionStats?.bytes || 0\n },\n\n get currentFeatureScreenDensity() {\n const view = getContainingView(self) as LGV\n return (self.estimatedRegionStats?.featureDensity || 0) * view.bpPerPx\n },\n\n get maxFeatureScreenDensity() {\n return getConf(self, 'maxFeatureScreenDensity')\n },\n get estimatedStatsReady() {\n return !!self.estimatedRegionStats\n },\n\n get maxAllowableBytes() {\n return (\n self.userByteSizeLimit ||\n self.estimatedRegionStats?.fetchSizeLimit ||\n (getConf(self, 'fetchSizeLimit') as number)\n )\n },\n }))\n .actions(self => ({\n // base display reload does nothing, see specialized displays for details\n setMessage(message: string) {\n self.message = message\n },\n\n afterAttach() {\n // watch the parent's blocks to update our block state when they change,\n // then we recreate the blocks on our own model (creating and deleting to\n // match the parent blocks)\n const blockWatchDisposer = autorun(() => {\n const blocksPresent: { [key: string]: boolean } = {}\n const view = getContainingView(self) as LGV\n if (view.initialized) {\n self.blockDefinitions.contentBlocks.forEach(block => {\n blocksPresent[block.key] = true\n if (!self.blockState.has(block.key)) {\n this.addBlock(block.key, block)\n }\n })\n self.blockState.forEach((_, key) => {\n if (!blocksPresent[key]) {\n this.deleteBlock(key)\n }\n })\n }\n })\n\n addDisposer(self, blockWatchDisposer)\n },\n\n estimateRegionsStats(\n regions: Region[],\n opts: {\n headers?: Record<string, string>\n signal?: AbortSignal\n filters?: string[]\n },\n ) {\n if (self.estimatedRegionStatsP) {\n return self.estimatedRegionStatsP\n }\n\n const { rpcManager } = getSession(self)\n const { adapterConfig } = self\n const sessionId = getRpcSessionId(self)\n\n const params = {\n sessionId,\n regions,\n adapterConfig,\n statusCallback: (message: string) => {\n if (isAlive(self)) {\n this.setMessage(message)\n }\n },\n ...opts,\n }\n\n self.estimatedRegionStatsP = rpcManager\n .call(sessionId, 'CoreEstimateRegionStats', params)\n .catch(e => {\n this.setRegionStatsP(undefined)\n throw e\n }) as Promise<Stats>\n\n return self.estimatedRegionStatsP\n },\n setRegionStatsP(p?: Promise<Stats>) {\n self.estimatedRegionStatsP = p\n },\n setRegionStats(estimatedRegionStats?: Stats) {\n self.estimatedRegionStats = estimatedRegionStats\n },\n clearRegionStats() {\n self.estimatedRegionStatsP = undefined\n self.estimatedRegionStats = undefined\n },\n setHeight(displayHeight: number) {\n if (displayHeight > minDisplayHeight) {\n self.height = displayHeight\n } else {\n self.height = minDisplayHeight\n }\n return self.height\n },\n resizeHeight(distance: number) {\n const oldHeight = self.height\n const newHeight = this.setHeight(self.height + distance)\n return newHeight - oldHeight\n },\n\n setScrollTop(scrollTop: number) {\n self.scrollTop = scrollTop\n },\n\n updateStatsLimit(stats: Stats) {\n const view = getContainingView(self) as LGV\n if (stats.bytes) {\n self.userByteSizeLimit = stats.bytes\n } else {\n self.userBpPerPxLimit = view.bpPerPx\n }\n },\n\n addBlock(key: string, block: BaseBlock) {\n self.blockState.set(\n key,\n BlockState.create({\n key,\n region: block.toRegion(),\n }),\n )\n },\n setCurrBpPerPx(n: number) {\n self.currBpPerPx = n\n },\n deleteBlock(key: string) {\n self.blockState.delete(key)\n },\n selectFeature(feature: Feature) {\n const session = getSession(self)\n if (isSessionModelWithWidgets(session)) {\n const featureWidget = session.addWidget(\n 'BaseFeatureWidget',\n 'baseFeature',\n { featureData: feature.toJSON(), view: getContainingView(self) },\n )\n session.showWidget(featureWidget)\n }\n if (isSelectionContainer(session)) {\n session.setSelection(feature)\n }\n },\n clearFeatureSelection() {\n const session = getSession(self)\n session.clearSelection()\n },\n setFeatureIdUnderMouse(feature: string | undefined) {\n self.featureIdUnderMouse = feature\n },\n reload() {\n ;[...self.blockState.values()].map(val => val.doReload())\n },\n setContextMenuFeature(feature?: Feature) {\n self.contextMenuFeature = feature\n },\n }))\n .views(self => ({\n // region is too large if:\n // - stats are ready\n // - region is greater than 20kb (don't warn when zoomed in less than that)\n // - and bytes > max allowed bytes || curr density>max density\n get regionTooLarge() {\n const view = getContainingView(self) as LGV\n if (!self.estimatedStatsReady || view.dynamicBlocks.totalBp < 20_000) {\n return false\n }\n const bpLimitOrDensity = self.userBpPerPxLimit\n ? view.bpPerPx > self.userBpPerPxLimit\n : self.currentFeatureScreenDensity > self.maxFeatureScreenDensity\n\n return (\n self.currentBytesRequested > self.maxAllowableBytes || bpLimitOrDensity\n )\n },\n\n // only shows a message of bytes requested is defined, the feature density\n // based stats don't produce any helpful message besides to zoom in\n get regionTooLargeReason() {\n const req = self.currentBytesRequested\n const max = self.maxAllowableBytes\n\n return req && req > max\n ? `Requested too much data (${getDisplayStr(req)})`\n : ''\n },\n }))\n .actions(self => {\n const { reload: superReload } = self\n\n return {\n async reload() {\n self.setError()\n const aborter = new AbortController()\n const view = getContainingView(self) as LGV\n\n // extra check for contentBlocks.length\n // https://github.com/GMOD/jbrowse-components/issues/2694\n if (!view.initialized || !view.staticBlocks.contentBlocks.length) {\n return\n }\n\n try {\n self.estimatedRegionStatsP = self.estimateRegionsStats(\n view.staticBlocks.contentBlocks,\n { signal: aborter.signal },\n )\n const estimatedRegionStats = await self.estimatedRegionStatsP\n\n if (isAlive(self)) {\n self.setRegionStats(estimatedRegionStats)\n superReload()\n } else {\n return\n }\n } catch (e) {\n self.setError(e)\n }\n },\n afterAttach() {\n // this autorun performs stats estimation\n //\n // the chain of events calls estimateRegionsStats against the data\n // adapter which by default uses featureDensity, but can also respond\n // with a byte size estimate and fetch size limit (data adapter can\n // define what is too much data)\n addDisposer(\n self,\n autorun(\n async () => {\n try {\n const aborter = new AbortController()\n const view = getContainingView(self) as LGV\n\n // extra check for contentBlocks.length\n // https://github.com/GMOD/jbrowse-components/issues/2694\n if (\n !view.initialized ||\n !view.staticBlocks.contentBlocks.length\n ) {\n return\n }\n\n // don't re-estimate featureDensity even if zoom level changes,\n // jbrowse1-style assume it's sort of representative\n if (self.estimatedRegionStats?.featureDensity !== undefined) {\n self.setCurrBpPerPx(view.bpPerPx)\n return\n }\n\n // we estimate stats once at a given zoom level\n if (view.bpPerPx === self.currBpPerPx) {\n return\n }\n\n self.clearRegionStats()\n self.setCurrBpPerPx(view.bpPerPx)\n const statsP = self.estimateRegionsStats(\n view.staticBlocks.contentBlocks,\n { signal: aborter.signal },\n )\n self.setRegionStatsP(statsP)\n const estimatedRegionStats = await statsP\n\n if (isAlive(self)) {\n self.setRegionStats(estimatedRegionStats)\n }\n } catch (e) {\n if (!isAbortException(e) && isAlive(self)) {\n console.error(e)\n self.setError(e)\n }\n }\n },\n { delay: 500 },\n ),\n )\n },\n }\n })\n .views(self => ({\n regionCannotBeRenderedText(_region: Region) {\n return self.regionTooLarge ? 'Force load to see features' : ''\n },\n\n /**\n * @param region -\n * @returns falsy if the region is fine to try rendering. Otherwise,\n * return a react node + string of text.\n * string of text describes why it cannot be rendered\n * react node allows user to force load at current setting\n */\n regionCannotBeRendered(_region: Region) {\n const { regionTooLarge, regionTooLargeReason } = self\n\n if (regionTooLarge) {\n return (\n <>\n <Typography component=\"span\" variant=\"body2\">\n {regionTooLargeReason ? regionTooLargeReason + '. ' : ''}\n Zoom in to see features or{' '}\n </Typography>\n <Button\n data-testid=\"force_reload_button\"\n onClick={() => {\n if (!self.estimatedRegionStats) {\n console.error('No global stats?')\n } else {\n self.updateStatsLimit(self.estimatedRegionStats)\n self.reload()\n }\n }}\n variant=\"outlined\"\n >\n Force Load\n </Button>\n <Typography component=\"span\" variant=\"body2\">\n (force load may be slow)\n </Typography>\n </>\n )\n }\n return undefined\n },\n\n trackMenuItems(): MenuItem[] {\n return []\n },\n\n contextMenuItems() {\n return self.contextMenuFeature\n ? [\n {\n label: 'Open feature details',\n icon: MenuOpenIcon,\n onClick: () => {\n if (self.contextMenuFeature) {\n self.selectFeature(self.contextMenuFeature)\n }\n },\n },\n ]\n : []\n },\n renderProps() {\n const view = getContainingView(self) as LGV\n return {\n ...getParentRenderProps(self),\n notReady:\n self.currBpPerPx !== view.bpPerPx || !self.estimatedRegionStats,\n rpcDriverName: self.rpcDriverName,\n displayModel: self,\n onFeatureClick(_: unknown, featureId: string | undefined) {\n const f = featureId || self.featureIdUnderMouse\n if (!f) {\n self.clearFeatureSelection()\n } else {\n const feature = self.features.get(f)\n if (feature) {\n self.selectFeature(feature)\n }\n }\n },\n onClick() {\n self.clearFeatureSelection()\n },\n // similar to click but opens a menu with further options\n onFeatureContextMenu(_: unknown, featureId: string | undefined) {\n const f = featureId || self.featureIdUnderMouse\n if (!f) {\n self.clearFeatureSelection()\n } else {\n // feature id under mouse passed to context menu\n self.setContextMenuFeature(self.features.get(f))\n }\n },\n\n onMouseMove(_: unknown, featureId: string | undefined) {\n self.setFeatureIdUnderMouse(featureId)\n },\n\n onMouseLeave(_: unknown) {\n self.setFeatureIdUnderMouse(undefined)\n },\n\n onContextMenu() {\n self.setContextMenuFeature(undefined)\n self.clearFeatureSelection()\n },\n }\n },\n }))\n .actions(self => ({\n async renderSvg(opts: ExportSvgOptions & { overrideHeight: number }) {\n const { height, id } = self\n const { overrideHeight } = opts\n const view = getContainingView(self) as LGV\n const { offsetPx: viewOffsetPx, roundedDynamicBlocks, width } = view\n\n const renderings = await Promise.all(\n roundedDynamicBlocks.map(block => {\n const blockState = BlockState.create({\n key: block.key,\n region: block,\n })\n\n // regionCannotBeRendered can return jsx so look for plaintext\n // version, or just get the default if none available\n const cannotBeRenderedReason =\n self.regionCannotBeRenderedText(block) ||\n self.regionCannotBeRendered(block)\n\n if (cannotBeRenderedReason) {\n return {\n reactElement: (\n <>\n <rect x={0} y={0} width={width} height={20} fill=\"#aaa\" />\n <text x={0} y={15}>\n {cannotBeRenderedReason}\n </text>\n </>\n ),\n }\n }\n\n const { rpcManager, renderArgs, renderProps, rendererType } =\n renderBlockData(blockState, self)\n\n return rendererType.renderInClient(rpcManager, {\n ...renderArgs,\n ...renderProps,\n exportSVG: opts,\n })\n }),\n )\n\n return (\n <>\n {renderings.map((rendering, index) => {\n const { offsetPx } = roundedDynamicBlocks[index]\n const offset = offsetPx - viewOffsetPx\n const clipid = getId(id, index)\n return (\n <React.Fragment key={`frag-${index}`}>\n <defs>\n <clipPath id={clipid}>\n <rect\n x={0}\n y={0}\n width={width}\n height={overrideHeight || height}\n />\n </clipPath>\n </defs>\n <g transform={`translate(${offset} 0)`}>\n <g clipPath={`url(#${clipid})`}>\n {React.isValidElement(rendering.reactElement) ? (\n rendering.reactElement\n ) : (\n // eslint-disable-next-line react/no-danger\n <g dangerouslySetInnerHTML={{ __html: rendering.html }} />\n )}\n </g>\n </g>\n </React.Fragment>\n )\n })}\n </>\n )\n },\n }))\n .postProcessSnapshot(self => {\n const { blockState, ...rest } = self\n return rest\n })\n\nexport type BaseLinearDisplayStateModel = typeof BaseLinearDisplay\nexport type BaseLinearDisplayModel = Instance<BaseLinearDisplayStateModel>\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '../BaseLinearDisplay'\n\nexport function configSchemaFactory(pluginManager: PluginManager) {\n return ConfigurationSchema(\n 'LinearBareDisplay',\n { renderer: pluginManager.pluggableConfigSchemaType('renderer') },\n {\n baseConfiguration: baseLinearDisplayConfigSchema,\n explicitlyTyped: true,\n },\n )\n}\n","import {\n AnyConfigurationSchemaType,\n ConfigurationReference,\n} from '@jbrowse/core/configuration/configurationSchema'\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\nimport { types } from 'mobx-state-tree'\nimport { BaseLinearDisplay } from '../BaseLinearDisplay'\n\nexport function stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n return types\n .compose(\n 'LinearBareDisplay',\n BaseLinearDisplay,\n types.model({\n type: types.literal('LinearBareDisplay'),\n configuration: ConfigurationReference(configSchema),\n }),\n )\n\n .views(self => {\n const { renderProps: superRenderProps } = self\n return {\n renderProps() {\n return {\n ...superRenderProps(),\n ...getParentRenderProps(self),\n rpcDriverName: self.rpcDriverName,\n config: self.configuration.renderer,\n }\n },\n\n get rendererTypeName() {\n return self.configuration.renderer.type\n },\n }\n })\n}\n","/**\n * Given a scale ( bp/px ) and minimum distances (px) between major and minor\n * gridlines, return an object like `{ majorPitch: bp, minorPitch: bp }` giving\n * the gridline pitches to use.\n */\nexport function chooseGridPitch(\n scale: number,\n minMajorPitchPx: number,\n minMinorPitchPx: number,\n) {\n scale = Math.abs(scale)\n const minMajorPitchBp = minMajorPitchPx * scale\n const majorMagnitude = parseInt(\n Number(minMajorPitchBp).toExponential().split(/e/i)[1],\n 10,\n )\n\n let majorPitch = 10 ** majorMagnitude\n while (majorPitch < minMajorPitchBp) {\n majorPitch *= 2\n if (majorPitch >= minMajorPitchBp) {\n break\n }\n majorPitch *= 2.5\n }\n\n majorPitch = Math.max(majorPitch, 5)\n\n const majorPitchPx = majorPitch / scale\n\n let minorPitch = 0\n if (!(majorPitch % 10) && majorPitchPx / 10 >= minMinorPitchPx) {\n minorPitch = majorPitch / 10\n } else if (!(majorPitch % 5) && majorPitchPx / 5 >= minMinorPitchPx) {\n minorPitch = majorPitch / 5\n } else if (!(majorPitch % 2) && majorPitchPx / 2 >= minMinorPitchPx) {\n minorPitch = majorPitch / 2\n }\n\n return { majorPitch, minorPitch }\n}\n\nexport function makeTicks(\n start: number,\n end: number,\n bpPerPx: number,\n emitMajor = true,\n emitMinor = true,\n) {\n const gridPitch = chooseGridPitch(bpPerPx, 60, 15)\n\n let minBase = start\n let maxBase = end\n if (minBase === null || maxBase === null) {\n return []\n }\n\n if (bpPerPx < 0) {\n ;[minBase, maxBase] = [maxBase, minBase]\n }\n\n // add 20px additional on the right and left to allow us to draw the ends\n // of labels that lie a little outside our region\n minBase -= Math.abs(20 * bpPerPx) - 1\n maxBase += Math.abs(20 * bpPerPx) + 1\n\n const iterPitch = gridPitch.minorPitch || gridPitch.majorPitch\n let index = 0\n const ticks = []\n for (\n let base = Math.ceil(minBase / iterPitch) * iterPitch;\n base < maxBase;\n base += iterPitch\n ) {\n if (emitMinor && base % (gridPitch.majorPitch * 2)) {\n ticks.push({ type: 'minor', base: base - 1, index })\n index += 1\n } else if (emitMajor && !(base % (gridPitch.majorPitch * 2))) {\n ticks.push({ type: 'major', base: base - 1, index })\n index += 1\n }\n }\n return ticks\n}\n","import { makeStyles } from '@material-ui/core/styles'\nimport { observer } from 'mobx-react'\nimport ReactPropTypes from 'prop-types'\nimport React from 'react'\nimport { makeTicks } from '../util'\n\nfunction mathPower(num: number): string {\n if (num < 999) {\n return String(num)\n }\n return `${mathPower(~~(num / 1000))},${`00${~~(num % 1000)}`.substr(-3, 3)}`\n}\n\nconst useStyles = makeStyles((/* theme */) => ({\n majorTickLabel: {\n fontSize: '11px',\n // fill: theme.palette.text.primary,\n },\n majorTick: {\n stroke: '#555',\n // stroke: theme.palette.text.secondary,\n },\n minorTick: {\n stroke: '#999',\n // stroke: theme.palette.text.hint,\n },\n}))\n\nfunction Ruler({\n start,\n end,\n bpPerPx,\n reversed,\n major,\n minor,\n}: {\n start: number\n end: number\n bpPerPx: number\n reversed?: boolean\n major: boolean\n minor: boolean\n}) {\n const classes = useStyles()\n const ticks = makeTicks(start, end, bpPerPx, major, minor)\n return (\n <>\n {ticks.map(tick => {\n const x = (reversed ? end - tick.base : tick.base - start) / bpPerPx\n return (\n <line\n key={tick.base}\n x1={x}\n x2={x}\n y1={0}\n y2={tick.type === 'major' ? 6 : 4}\n strokeWidth={1}\n stroke={tick.type === 'major' ? '#555' : '#999'}\n className={\n tick.type === 'major' ? classes.majorTick : classes.minorTick\n }\n data-bp={tick.base}\n />\n )\n })}\n {ticks\n .filter(tick => tick.type === 'major')\n .map(tick => {\n const x = (reversed ? end - tick.base : tick.base - start) / bpPerPx\n return (\n <text\n x={x - 3}\n y={7 + 11}\n key={`label-${tick.base}`}\n style={{ fontSize: '11px' }}\n className={classes.majorTickLabel}\n >\n {mathPower(tick.base + 1)}\n </text>\n )\n })}\n </>\n )\n}\n\nRuler.propTypes = {\n start: ReactPropTypes.number.isRequired,\n end: ReactPropTypes.number.isRequired,\n bpPerPx: ReactPropTypes.number.isRequired,\n reversed: ReactPropTypes.bool,\n major: ReactPropTypes.bool,\n minor: ReactPropTypes.bool,\n}\n\nRuler.defaultProps = {\n reversed: false,\n major: true,\n minor: true,\n}\n\nexport default observer(Ruler)\n","import React, { useRef, useEffect, useState } from 'react'\nimport {\n Popover,\n Tooltip,\n Typography,\n makeStyles,\n alpha,\n} from '@material-ui/core'\nimport { getSession, stringify } from '@jbrowse/core/util'\nimport { observer, PropTypes as MobxPropTypes } from 'mobx-react'\nimport ReactPropTypes from 'prop-types'\nimport { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\nimport { LinearGenomeViewModel, HEADER_OVERVIEW_HEIGHT } from '..'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles(theme => {\n const { tertiary, primary } = theme.palette\n const background = tertiary\n ? alpha(tertiary.main, 0.7)\n : alpha(primary.main, 0.7)\n return {\n rubberBand: {\n height: '100%',\n background,\n position: 'absolute',\n zIndex: 10,\n textAlign: 'center',\n overflow: 'hidden',\n },\n rubberBandControl: {\n cursor: 'crosshair',\n width: '100%',\n minHeight: 8,\n },\n rubberBandText: {\n color: tertiary ? tertiary.contrastText : primary.contrastText,\n },\n popover: {\n mouseEvents: 'none',\n cursor: 'crosshair',\n },\n paper: {\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n },\n guide: {\n pointerEvents: 'none',\n height: '100%',\n width: 1,\n position: 'absolute',\n zIndex: 10,\n },\n }\n})\n\nconst HoverTooltip = observer(\n ({\n model,\n open,\n guideX,\n overview,\n }: {\n model: LGV\n open: boolean\n guideX: number\n overview: Base1DViewModel\n }) => {\n const classes = useStyles()\n const { cytobandOffset } = model\n const { assemblyManager } = getSession(model)\n\n const px = overview.pxToBp(guideX - cytobandOffset)\n const assembly = assemblyManager.get(px.assemblyName)\n const cytoband = assembly?.cytobands?.find(\n f =>\n px.coord > f.get('start') &&\n px.coord < f.get('end') &&\n px.refName === assembly.getCanonicalRefName(f.get('refName')),\n )\n\n return (\n <Tooltip\n open={open}\n placement=\"top\"\n title={[stringify(px), cytoband?.get('name')].join(' ')}\n arrow\n >\n <div\n className={classes.guide}\n style={{\n left: guideX,\n }}\n />\n </Tooltip>\n )\n },\n)\n\nfunction OverviewRubberBand({\n model,\n overview,\n ControlComponent = <div />,\n}: {\n model: LGV\n overview: Base1DViewModel\n ControlComponent?: React.ReactElement\n}) {\n const { cytobandOffset } = model\n const [startX, setStartX] = useState<number>()\n const [currentX, setCurrentX] = useState<number>()\n const [guideX, setGuideX] = useState<number>()\n const controlsRef = useRef<HTMLDivElement>(null)\n const rubberBandRef = useRef(null)\n const classes = useStyles()\n const mouseDragging = startX !== undefined\n\n useEffect(() => {\n function globalMouseMove(event: MouseEvent) {\n const ref = controlsRef.current\n if (ref && mouseDragging) {\n const relativeX = event.clientX - ref.getBoundingClientRect().left\n setCurrentX(relativeX)\n }\n }\n\n function globalMouseUp() {\n if (\n controlsRef.current &&\n startX !== undefined &&\n currentX !== undefined\n ) {\n if (Math.abs(currentX - startX) > 3) {\n model.zoomToDisplayedRegions(\n overview.pxToBp(startX - cytobandOffset),\n overview.pxToBp(currentX - cytobandOffset),\n )\n }\n }\n /* handling clicking and centering at a specific Bp */\n if (\n controlsRef.current &&\n startX !== undefined &&\n currentX === undefined\n ) {\n const clickedAt = overview.pxToBp(startX - cytobandOffset)\n model.centerAt(\n Math.round(clickedAt.coord),\n clickedAt.refName,\n clickedAt.index,\n )\n }\n setStartX(undefined)\n setCurrentX(undefined)\n\n if (startX !== undefined) {\n setGuideX(undefined)\n }\n }\n\n function globalKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n setStartX(undefined)\n setCurrentX(undefined)\n }\n }\n\n if (mouseDragging) {\n window.addEventListener('mousemove', globalMouseMove, true)\n window.addEventListener('mouseup', globalMouseUp, true)\n window.addEventListener('keydown', globalKeyDown, true)\n return () => {\n window.removeEventListener('mousemove', globalMouseMove, true)\n window.removeEventListener('mouseup', globalMouseUp, true)\n window.removeEventListener('keydown', globalKeyDown, true)\n }\n }\n return () => {}\n }, [mouseDragging, currentX, startX, model, overview, cytobandOffset])\n\n function mouseDown(event: React.MouseEvent<HTMLDivElement>) {\n event.preventDefault()\n event.stopPropagation()\n if (controlsRef.current) {\n setStartX(\n event.clientX - controlsRef.current.getBoundingClientRect().left,\n )\n }\n }\n\n function mouseMove(event: React.MouseEvent<HTMLDivElement>) {\n if (controlsRef.current) {\n setGuideX(\n event.clientX - controlsRef.current.getBoundingClientRect().left,\n )\n }\n }\n\n function mouseOut() {\n setGuideX(undefined)\n }\n\n if (startX === undefined) {\n return (\n <div style={{ position: 'relative' }}>\n {guideX !== undefined ? (\n <HoverTooltip\n model={model}\n open={!mouseDragging}\n overview={overview}\n guideX={guideX}\n />\n ) : null}\n <div\n className={classes.rubberBandControl}\n role=\"presentation\"\n ref={controlsRef}\n onMouseDown={mouseDown}\n onMouseOut={mouseOut}\n onMouseMove={mouseMove}\n >\n {ControlComponent}\n </div>\n </div>\n )\n }\n\n let left = startX || 0\n let width = 0\n if (startX !== undefined && currentX !== undefined) {\n left = currentX < startX ? currentX : startX\n width = currentX - startX\n }\n // calculate the start and end bp of drag\n let leftBpOffset\n let rightBpOffset\n if (startX) {\n leftBpOffset = overview.pxToBp(startX - cytobandOffset)\n rightBpOffset = overview.pxToBp(startX + width - cytobandOffset)\n if (currentX && currentX < startX) {\n ;[leftBpOffset, rightBpOffset] = [rightBpOffset, leftBpOffset]\n }\n }\n\n return (\n <div style={{ position: 'relative' }}>\n {rubberBandRef.current ? (\n <>\n <Popover\n className={classes.popover}\n classes={{\n paper: classes.paper,\n }}\n open\n anchorEl={rubberBandRef.current}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n keepMounted\n disableRestoreFocus\n >\n <Typography>\n {leftBpOffset ? stringify(leftBpOffset) : ''}\n </Typography>\n </Popover>\n <Popover\n className={classes.popover}\n classes={{\n paper: classes.paper,\n }}\n open\n anchorEl={rubberBandRef.current}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n keepMounted\n disableRestoreFocus\n >\n <Typography>\n {rightBpOffset ? stringify(rightBpOffset) : ''}\n </Typography>\n </Popover>\n </>\n ) : null}\n <div\n ref={rubberBandRef}\n className={classes.rubberBand}\n style={{\n left,\n width: Math.abs(width),\n height: HEADER_OVERVIEW_HEIGHT,\n }}\n />\n <div\n data-testid=\"rubberBand_controls\"\n className={classes.rubberBandControl}\n role=\"presentation\"\n ref={controlsRef}\n onMouseDown={mouseDown}\n onMouseOut={mouseOut}\n onMouseMove={mouseMove}\n >\n {ControlComponent}\n </div>\n </div>\n )\n}\n\nOverviewRubberBand.propTypes = {\n model: MobxPropTypes.objectOrObservableObject.isRequired,\n overview: MobxPropTypes.objectOrObservableObject.isRequired,\n ControlComponent: ReactPropTypes.node,\n}\n\nOverviewRubberBand.defaultProps = {\n ControlComponent: <div />,\n}\n\nexport default observer(OverviewRubberBand)\n","import React from 'react'\nimport { Typography, makeStyles, useTheme, alpha } from '@material-ui/core'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport clsx from 'clsx'\n\nimport Base1DView, { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\nimport { getSession } from '@jbrowse/core/util'\nimport { ContentBlock } from '@jbrowse/core/util/blockTypes'\nimport { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\n// locals\nimport {\n LinearGenomeViewModel,\n HEADER_BAR_HEIGHT,\n HEADER_OVERVIEW_HEIGHT,\n} from '..'\nimport { chooseGridPitch } from '../util'\nimport OverviewRubberBand from './OverviewRubberBand'\n\nconst wholeSeqSpacer = 2\n\nconst useStyles = makeStyles(theme => {\n return {\n scaleBar: {\n height: HEADER_OVERVIEW_HEIGHT,\n },\n scaleBarBorder: {\n border: '1px solid',\n },\n scaleBarContig: {\n backgroundColor: theme.palette.background.default,\n position: 'absolute',\n top: 0,\n height: HEADER_OVERVIEW_HEIGHT,\n },\n scaleBarContigForward: {\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 9'%3E%3Cpath d='M-.1 0L6 4.5L-.1 9' fill='none' stroke='%23ddd'/%3E%3C/svg%3E\")`,\n backgroundRepeat: 'repeat',\n },\n scaleBarContigReverse: {\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 9'%3E%3Cpath d='M6 0L0 4.5L6 9' fill='none' stroke='%23ddd'/%3E%3C/svg%3E\")`,\n backgroundRepeat: 'repeat',\n },\n\n scaleBarRefName: {\n position: 'absolute',\n fontWeight: 'bold',\n pointerEvents: 'none',\n zIndex: 100,\n },\n scaleBarLabel: {\n height: HEADER_OVERVIEW_HEIGHT,\n width: 1,\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n pointerEvents: 'none',\n },\n scaleBarVisibleRegion: {\n position: 'absolute',\n height: HEADER_OVERVIEW_HEIGHT,\n pointerEvents: 'none',\n zIndex: 100,\n border: '1px solid',\n },\n overview: {\n height: HEADER_BAR_HEIGHT,\n position: 'relative',\n },\n overviewSvg: {\n width: '100%',\n position: 'absolute',\n },\n }\n})\n\nconst Polygon = observer(\n ({\n model,\n overview,\n useOffset = true,\n }: {\n model: LGV\n overview: Instance<Base1DViewModel>\n useOffset?: boolean\n }) => {\n const theme = useTheme()\n const multiplier = Number(useOffset)\n const { interRegionPaddingWidth, offsetPx, dynamicBlocks, cytobandOffset } =\n model\n const { contentBlocks, totalWidthPxWithoutBorders } = dynamicBlocks\n const { tertiary, primary } = theme.palette\n const polygonColor = tertiary ? tertiary.light : primary.light\n\n if (!contentBlocks.length) {\n return null\n }\n const first = contentBlocks[0]\n const last = contentBlocks[contentBlocks.length - 1]\n const topLeft =\n (overview.bpToPx({\n ...first,\n coord: first.reversed ? first.end : first.start,\n }) || 0) +\n cytobandOffset * multiplier\n const topRight =\n (overview.bpToPx({\n ...last,\n coord: last.reversed ? last.start : last.end,\n }) || 0) +\n cytobandOffset * multiplier\n\n const startPx = Math.max(0, -offsetPx)\n const endPx =\n startPx +\n totalWidthPxWithoutBorders +\n (contentBlocks.length * interRegionPaddingWidth) / 2\n\n const points = [\n [startPx, HEADER_BAR_HEIGHT],\n [endPx, HEADER_BAR_HEIGHT],\n [topRight, 0],\n [topLeft, 0],\n ]\n\n return (\n <polygon\n points={points.toString()}\n fill={alpha(polygonColor, 0.3)}\n stroke={alpha(polygonColor, 0.8)}\n />\n )\n },\n)\n\ntype LGV = LinearGenomeViewModel\n\n// rounded rect from https://stackoverflow.com/a/45889603/2129219\n// prettier-ignore\nfunction rightRoundedRect(x:number, y:number, width:number, height:number, radius:number) {\n return \"M\" + x + \",\" + y\n + \"h\" + (width - radius)\n + \"a\" + radius + \",\" + radius + \" 0 0 1 \" + radius + \",\" + radius\n + \"v\" + (height - 2 * radius)\n + \"a\" + radius + \",\" + radius + \" 0 0 1 \" + -radius + \",\" + radius\n + \"h\" + (radius - width)\n + \"z\";\n}\n\n// prettier-ignore\nfunction leftRoundedRect(x:number, y:number, width:number, height:number, radius:number ) {\n return \"M\" + (x + radius) + \",\" + y\n + \"h\" + (width - radius)\n + \"v\" + height\n + \"h\" + (radius - width)\n + \"a\" + radius + \",\" + radius + \" 0 0 1 \" + (-radius) + \",\" + (-radius)\n + \"v\" + (2 * radius - height)\n + \"a\" + radius + \",\" + radius + \" 0 0 1 \" + radius + \",\" + (-radius)\n + \"z\";\n}\n\nconst colorMap: { [key: string]: string | undefined } = {\n gneg: 'rgb(227,227,227)',\n gpos25: 'rgb(142,142,142)',\n gpos50: 'rgb(85,85,85)',\n gpos100: 'rgb(0,0,0)',\n gpos75: 'rgb(57,57,57)',\n gvar: 'rgb(0,0,0)',\n stalk: 'rgb(127,127,127)',\n acen: '#800',\n}\n\nconst Cytobands = observer(\n ({\n overview,\n block,\n assembly,\n }: {\n overview: Base1DViewModel\n assembly?: Assembly\n block: ContentBlock\n }) => {\n const { offsetPx, reversed } = block\n const cytobands = assembly?.cytobands\n ?.map(f => ({\n refName: assembly.getCanonicalRefName(f.get('refName')),\n start: f.get('start'),\n end: f.get('end'),\n type: f.get('type'),\n }))\n .filter(f => f.refName === block.refName)\n .map(f => {\n const { refName, start, end, type } = f\n return [\n overview.bpToPx({\n refName,\n coord: start,\n }),\n overview.bpToPx({\n refName,\n coord: end,\n }),\n type,\n ]\n })\n\n const arr = cytobands || []\n const lcap = reversed ? arr.length - 1 : 0\n const rcap = reversed ? 0 : arr.length - 1\n\n let firstCent = true\n return cytobands ? (\n <g transform={`translate(-${offsetPx})`}>\n {cytobands.map(([start, end, type], index) => {\n const key = `${start}-${end}-${type}`\n if (type === 'acen' && firstCent) {\n firstCent = false\n return (\n <polygon\n key={key}\n points={[\n [start, 0],\n [end, HEADER_OVERVIEW_HEIGHT / 2],\n [start, HEADER_OVERVIEW_HEIGHT],\n ].toString()}\n fill={colorMap[type]}\n />\n )\n }\n if (type === 'acen' && !firstCent) {\n return (\n <polygon\n key={key}\n points={[\n [start, HEADER_OVERVIEW_HEIGHT / 2],\n [end, 0],\n [end, HEADER_OVERVIEW_HEIGHT],\n ].toString()}\n fill={colorMap[type]}\n />\n )\n }\n\n if (lcap === index) {\n return (\n <path\n key={key}\n d={leftRoundedRect(\n Math.min(start, end),\n 0,\n Math.abs(end - start),\n HEADER_OVERVIEW_HEIGHT,\n 8,\n )}\n fill={colorMap[type]}\n />\n )\n } else if (rcap === index) {\n return (\n <path\n key={key}\n d={rightRoundedRect(\n Math.min(start, end),\n 0,\n Math.abs(end - start) - 2,\n HEADER_OVERVIEW_HEIGHT,\n 8,\n )}\n fill={colorMap[type]}\n />\n )\n } else {\n return (\n <rect\n key={key}\n x={Math.min(start, end)}\n y={0}\n width={Math.abs(end - start)}\n height={HEADER_OVERVIEW_HEIGHT}\n fill={colorMap[type]}\n />\n )\n }\n })}\n </g>\n ) : null\n },\n)\n\nconst OverviewBox = observer(\n ({\n scale,\n model,\n block,\n overview,\n }: {\n scale: number\n model: LGV\n block: ContentBlock\n overview: Base1DViewModel\n }) => {\n const classes = useStyles()\n const { cytobandOffset, showCytobands } = model\n const { start, end, reversed, refName, assemblyName } = block\n const { majorPitch } = chooseGridPitch(scale, 120, 15)\n const { assemblyManager } = getSession(model)\n const assembly = assemblyManager.get(assemblyName)\n const refNameColor = assembly?.getRefNameColor(refName)\n\n const tickLabels = []\n for (let i = 0; i < Math.floor((end - start) / majorPitch); i++) {\n const offsetLabel = (i + 1) * majorPitch\n tickLabels.push(reversed ? end - offsetLabel : start + offsetLabel)\n }\n\n return (\n <div>\n {/* name of sequence */}\n <Typography\n style={{\n left: block.offsetPx + 3,\n color: showCytobands ? 'black' : refNameColor,\n }}\n className={classes.scaleBarRefName}\n >\n {refName}\n </Typography>\n <div\n className={clsx(\n classes.scaleBarContig,\n showCytobands\n ? undefined\n : reversed\n ? classes.scaleBarContigReverse\n : classes.scaleBarContigForward,\n !showCytobands ? classes.scaleBarBorder : undefined,\n )}\n style={{\n left: block.offsetPx + cytobandOffset,\n width: block.widthPx,\n borderColor: refNameColor,\n }}\n >\n {!showCytobands\n ? tickLabels.map((tickLabel, labelIdx) => (\n <Typography\n key={`${JSON.stringify(block)}-${tickLabel}-${labelIdx}`}\n className={classes.scaleBarLabel}\n variant=\"body2\"\n style={{\n left: ((labelIdx + 1) * majorPitch) / scale,\n pointerEvents: 'none',\n color: refNameColor,\n }}\n >\n {tickLabel.toLocaleString('en-US')}\n </Typography>\n ))\n : null}\n\n {showCytobands ? (\n <svg style={{ width: '100%' }}>\n <Cytobands\n overview={overview}\n assembly={assembly}\n block={block}\n />\n </svg>\n ) : null}\n </div>\n </div>\n )\n },\n)\n\nconst ScaleBar = observer(\n ({\n model,\n scale,\n overview,\n }: {\n model: LGV\n overview: Base1DViewModel\n scale: number\n }) => {\n const classes = useStyles()\n const theme = useTheme()\n const { dynamicBlocks, showCytobands, cytobandOffset } = model\n const visibleRegions = dynamicBlocks.contentBlocks\n const overviewVisibleRegions = overview.dynamicBlocks\n const { tertiary, primary } = theme.palette\n const scaleBarColor = tertiary ? tertiary.light : primary.light\n\n if (!visibleRegions.length) {\n return null\n }\n const first = visibleRegions[0]\n const firstOverviewPx =\n overview.bpToPx({\n ...first,\n coord: first.reversed ? first.end : first.start,\n }) || 0\n\n const last = visibleRegions[visibleRegions.length - 1]\n const lastOverviewPx =\n overview.bpToPx({\n ...last,\n coord: last.reversed ? last.start : last.end,\n }) || 0\n\n const color = showCytobands ? '#f00' : scaleBarColor\n const transparency = showCytobands ? 0.1 : 0.3\n\n return (\n <div className={classes.scaleBar}>\n <div\n className={classes.scaleBarVisibleRegion}\n style={{\n width: lastOverviewPx - firstOverviewPx,\n left: firstOverviewPx + cytobandOffset,\n background: alpha(color, transparency),\n borderColor: color,\n }}\n />\n {/* this is the entire scale bar */}\n {overviewVisibleRegions.map((block, idx) => {\n return !(block instanceof ContentBlock) ? (\n <div\n key={`${JSON.stringify(block)}-${idx}`}\n className={classes.scaleBarContig}\n style={{\n width: block.widthPx,\n left: block.offsetPx,\n backgroundColor: '#999',\n backgroundImage:\n 'repeating-linear-gradient(90deg, transparent, transparent 1px, rgba(255,255,255,.5) 1px, rgba(255,255,255,.5) 3px)',\n }}\n />\n ) : (\n <OverviewBox\n scale={scale}\n block={block}\n model={model}\n overview={overview}\n key={`${JSON.stringify(block)}-${idx}`}\n />\n )\n })}\n </div>\n )\n },\n)\n\nfunction OverviewScaleBar({\n model,\n children,\n}: {\n model: LGV\n children: React.ReactNode\n}) {\n const classes = useStyles()\n const { totalBp, width, cytobandOffset, displayedRegions } = model\n\n const overview = Base1DView.create({\n displayedRegions: JSON.parse(JSON.stringify(displayedRegions)),\n interRegionPaddingWidth: 0,\n minimumBlockWidth: model.minimumBlockWidth,\n })\n\n const modWidth = width - cytobandOffset\n overview.setVolatileWidth(modWidth)\n overview.showAllRegions()\n\n const scale =\n totalBp / (modWidth - (displayedRegions.length - 1) * wholeSeqSpacer)\n\n return (\n <div>\n <OverviewRubberBand\n model={model}\n overview={overview}\n ControlComponent={\n <ScaleBar model={model} overview={overview} scale={scale} />\n }\n />\n <div className={classes.overview}>\n <svg height={HEADER_BAR_HEIGHT} className={classes.overviewSvg}>\n <Polygon model={model} overview={overview} />\n </svg>\n {children}\n </div>\n </div>\n )\n}\n\nexport default observer(OverviewScaleBar)\n\nexport { Cytobands, Polygon }\n","import React from 'react'\nimport { renderToStaticMarkup } from 'react-dom/server'\nimport { when } from 'mobx'\nimport { getParent } from 'mobx-state-tree'\nimport { getConf, readConfObject } from '@jbrowse/core/configuration'\nimport { getSession, getBpDisplayStr } from '@jbrowse/core/util'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema'\nimport Base1DView from '@jbrowse/core/util/Base1DViewModel'\n\n// locals\nimport Ruler from './Ruler'\nimport {\n LinearGenomeViewModel,\n ExportSvgOptions,\n HEADER_OVERVIEW_HEIGHT,\n} from '..'\nimport { Polygon, Cytobands } from './OverviewScaleBar'\n\ntype LGV = LinearGenomeViewModel\n\nfunction ScaleBar({ model, fontSize }: { model: LGV; fontSize: number }) {\n const {\n offsetPx,\n dynamicBlocks: { totalWidthPxWithoutBorders: totalWidthPx, totalBp },\n } = model\n const displayBp = getBpDisplayStr(totalBp)\n const x0 = Math.max(-offsetPx, 0)\n const x1 = x0 + totalWidthPx\n return (\n <>\n <line x1={x0} x2={x1} y1={10} y2={10} stroke=\"black\" />\n <line x1={x0} x2={x0} y1={5} y2={15} stroke=\"black\" />\n <line x1={x1} x2={x1} y1={5} y2={15} stroke=\"black\" />\n <text\n x={x0 + (x1 - x0) / 2}\n y={fontSize * 2}\n textAnchor=\"middle\"\n fontSize={fontSize}\n >\n {displayBp}\n </text>\n </>\n )\n}\n\nfunction SVGRuler({\n model,\n fontSize,\n width,\n}: {\n model: LGV\n fontSize: number\n width: number\n}) {\n const {\n dynamicBlocks: { contentBlocks },\n offsetPx: viewOffsetPx,\n bpPerPx,\n } = model\n const renderRuler = contentBlocks.length < 5\n return (\n <>\n <defs>\n <clipPath id=\"clip-ruler\">\n <rect x={0} y={0} width={width} height={20} />\n </clipPath>\n </defs>\n {contentBlocks.map(block => {\n const { key, start, end, reversed, offsetPx, refName } = block\n const offsetLeft = offsetPx - viewOffsetPx\n return (\n <g key={`${key}`} transform={`translate(${offsetLeft} 0)`}>\n <text x={offsetLeft / bpPerPx} y={fontSize} fontSize={fontSize}>\n {refName}\n </text>\n {renderRuler ? (\n <g transform=\"translate(0 20)\" clipPath=\"url(#clip-ruler)\">\n <Ruler\n start={start}\n end={end}\n bpPerPx={bpPerPx}\n reversed={reversed}\n />\n </g>\n ) : (\n <line\n strokeWidth={1}\n stroke=\"black\"\n x1={start / bpPerPx}\n x2={end / bpPerPx}\n y1={20}\n y2={20}\n />\n )}\n </g>\n )\n })}\n </>\n )\n}\n\nconst fontSize = 15\nconst rulerHeight = 50\nconst textHeight = fontSize + 5\nconst paddingHeight = 20\nconst headerHeight = textHeight + 20\nconst cytobandHeightIfExists = 100\n\ninterface Display {\n height: number\n}\ninterface Track {\n displays: Display[]\n}\n\nconst totalHeight = (tracks: Track[]) => {\n return tracks.reduce((accum, track) => {\n const display = track.displays[0]\n return accum + display.height + paddingHeight + textHeight\n }, 0)\n}\n\n// SVG component, ruler and assembly name\nconst SVGHeader = ({ model }: { model: LGV }) => {\n const { width, assemblyNames, showCytobands, displayedRegions } = model\n const { assemblyManager } = getSession(model)\n const assemblyName = assemblyNames.length > 1 ? '' : assemblyNames[0]\n const assembly = assemblyManager.get(assemblyName)\n\n const overview = Base1DView.create({\n displayedRegions: JSON.parse(JSON.stringify(displayedRegions)),\n interRegionPaddingWidth: 0,\n minimumBlockWidth: model.minimumBlockWidth,\n })\n const visibleRegions = model.dynamicBlocks.contentBlocks\n\n overview.setVolatileWidth(width)\n overview.showAllRegions()\n const block = overview.dynamicBlocks.contentBlocks[0]\n\n const first = visibleRegions[0]\n const firstOverviewPx =\n overview.bpToPx({\n ...first,\n coord: first.reversed ? first.end : first.start,\n }) || 0\n\n const last = visibleRegions[visibleRegions.length - 1]\n const lastOverviewPx =\n overview.bpToPx({\n ...last,\n coord: last.reversed ? last.start : last.end,\n }) || 0\n\n const cytobandHeight = showCytobands ? cytobandHeightIfExists : 0\n\n return (\n <g id=\"header\">\n <text x={0} y={fontSize} fontSize={fontSize}>\n {assemblyName}\n </text>\n\n {showCytobands ? (\n <g transform={`translate(0 ${rulerHeight})`}>\n <Cytobands overview={overview} assembly={assembly} block={block} />\n <rect\n stroke=\"red\"\n fill=\"rgb(255,0,0,0.1)\"\n width={Math.max(lastOverviewPx - firstOverviewPx, 0.5)}\n height={HEADER_OVERVIEW_HEIGHT - 1}\n x={firstOverviewPx}\n y={0.5}\n />\n <g transform={`translate(0,${HEADER_OVERVIEW_HEIGHT})`}>\n <Polygon overview={overview} model={model} useOffset={false} />\n </g>\n </g>\n ) : null}\n\n <g transform={`translate(0 ${fontSize + cytobandHeight})`}>\n <ScaleBar model={model} fontSize={fontSize} />\n </g>\n <g transform={`translate(0 ${rulerHeight + cytobandHeight})`}>\n <SVGRuler model={model} fontSize={fontSize} width={width} />\n </g>\n </g>\n )\n}\n\n// SVG component, region separator\nconst SVGRegionSeparators = ({\n model,\n height,\n}: {\n height: number\n model: LGV\n}) => {\n const { dynamicBlocks, offsetPx, interRegionPaddingWidth } = model\n return (\n <>\n {dynamicBlocks.contentBlocks.slice(1).map(block => (\n <rect\n key={block.key}\n x={block.offsetPx - offsetPx - interRegionPaddingWidth}\n width={interRegionPaddingWidth}\n y={0}\n height={height}\n stroke=\"none\"\n fill=\"grey\"\n />\n ))}\n </>\n )\n}\n\n// SVG component, tracks\nfunction SVGTracks({\n displayResults,\n model,\n offset,\n}: {\n displayResults: {\n track: {\n configuration: AnyConfigurationModel\n displays: { height: number }[]\n }\n result: string\n }[]\n model: LGV\n offset: number\n}) {\n return (\n <>\n {displayResults.map(({ track, result }) => {\n const current = offset\n const trackName =\n getConf(track, 'name') ||\n `Reference sequence (${readConfObject(\n getParent(track.configuration),\n 'name',\n )})`\n const display = track.displays[0]\n offset += display.height + paddingHeight + textHeight\n return (\n <g\n key={track.configuration.trackId}\n transform={`translate(0 ${current})`}\n >\n <text fontSize={fontSize} x={Math.max(-model.offsetPx, 0)}>\n {trackName}\n </text>\n <g transform={`translate(0 ${textHeight})`}>\n {result}\n <SVGRegionSeparators model={model} height={display.height} />\n </g>\n </g>\n )\n })}\n </>\n )\n}\n\n// render LGV to SVG\nexport async function renderToSvg(model: LGV, opts: ExportSvgOptions) {\n await when(() => model.initialized)\n const { width, tracks, showCytobands } = model\n const shift = 50\n const offset =\n headerHeight +\n rulerHeight +\n (showCytobands ? cytobandHeightIfExists : 0) +\n 20\n const height = totalHeight(tracks) + offset\n const displayResults = await Promise.all(\n tracks.map(async track => {\n const display = track.displays[0]\n await when(() => (display.ready !== undefined ? display.ready : true))\n const result = await display.renderSvg(opts)\n return { track, result }\n }),\n )\n\n // the xlink namespace is used for rendering <image> tag\n return renderToStaticMarkup(\n <svg\n width={width}\n height={height}\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n viewBox={[0, 0, width + shift * 2, height].toString()}\n >\n {/* background white */}\n <rect width={width + shift * 2} height={height} fill=\"white\" />\n\n <g stroke=\"none\" transform={`translate(${shift} ${fontSize})`}>\n <SVGHeader model={model} />\n <SVGTracks\n model={model}\n displayResults={displayResults}\n offset={offset}\n />\n </g>\n </svg>,\n )\n}\n","import BaseResult from '@jbrowse/core/TextSearch/BaseResults'\n\nexport function dedupe(\n results: BaseResult[] = [],\n cb: (result: BaseResult) => string,\n) {\n return results.filter(\n (elt, idx, self) => idx === self.findIndex(t => cb(t) === cb(elt)),\n )\n}\n","import React, { Suspense, lazy, useMemo, useEffect, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { getSession, useDebounce, measureText } from '@jbrowse/core/util'\nimport BaseResult, {\n RefSequenceResult,\n} from '@jbrowse/core/TextSearch/BaseResults'\nimport {\n CircularProgress,\n IconButton,\n InputAdornment,\n Popper,\n PopperProps,\n TextField,\n TextFieldProps as TFP,\n Typography,\n} from '@material-ui/core'\n\n// icons\nimport SearchIcon from '@material-ui/icons/Search'\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport HelpIcon from '@material-ui/icons/Help'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport { dedupe } from './util'\n\n// lazy\nconst HelpDialog = lazy(() => import('./HelpDialog'))\n\nexport interface Option {\n group?: string\n result: BaseResult\n}\n\n// the logic of this method is to only apply a filter to RefSequenceResults\n// because they do not have a matchedObject. the trix search results already\n// filter so don't need re-filtering\nfunction filterOptions(options: Option[], searchQuery: string) {\n return options.filter(option => {\n const { result } = option\n return (\n result.getLabel().toLowerCase().includes(searchQuery) ||\n result.matchedObject\n )\n })\n}\n\n// MyPopper used to expand search results box wider if needed\n// xref https://stackoverflow.com/a/63583835/2129219\nconst MyPopper = function (\n props: PopperProps & { style?: { width?: unknown } },\n) {\n const { style } = props\n return (\n <Popper\n {...props}\n style={{\n width: 'fit-content',\n minWidth: Math.min(+(style?.width || 0), 200),\n background: 'white',\n }}\n placement=\"bottom-start\"\n />\n )\n}\n\nfunction RefNameAutocomplete({\n model,\n showHelp = true,\n onSelect,\n assemblyName,\n style,\n fetchResults,\n value,\n minWidth = 200,\n TextFieldProps = {},\n}: {\n model: LinearGenomeViewModel\n onSelect: (region: BaseResult) => void\n assemblyName?: string\n value?: string\n fetchResults: (query: string) => Promise<BaseResult[]>\n style?: React.CSSProperties\n minWidth?: number\n showHelp?: boolean\n TextFieldProps?: TFP\n}) {\n const session = getSession(model)\n const { assemblyManager } = session\n const [open, setOpen] = useState(false)\n const [loaded, setLoaded] = useState(true)\n const [isHelpDialogDisplayed, setHelpDialogDisplayed] = useState(false)\n const [currentSearch, setCurrentSearch] = useState('')\n const [inputValue, setInputValue] = useState('')\n const [searchOptions, setSearchOptions] = useState<Option[]>()\n const debouncedSearch = useDebounce(currentSearch, 300)\n const { coarseVisibleLocStrings, hasDisplayedRegions } = model\n const assembly = assemblyName ? assemblyManager.get(assemblyName) : undefined\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const regions = assembly?.regions || []\n\n const options = useMemo(\n () =>\n regions.map(option => ({\n result: new RefSequenceResult({\n refName: option.refName,\n label: option.refName,\n matchedAttribute: 'refName',\n }),\n })),\n [regions],\n )\n\n useEffect(() => {\n let active = true\n\n ;(async () => {\n try {\n if (debouncedSearch === '' || !assemblyName) {\n return\n }\n\n setLoaded(false)\n const results = await fetchResults(debouncedSearch)\n if (active) {\n setSearchOptions(\n dedupe(results, r => r.getDisplayString()).map(result => ({\n result,\n })),\n )\n setLoaded(true)\n }\n } catch (e) {\n console.error(e)\n if (active) {\n session.notify(`${e}`, 'error')\n }\n }\n })()\n\n return () => {\n active = false\n }\n }, [assemblyName, fetchResults, debouncedSearch, session, model])\n\n const inputBoxVal = coarseVisibleLocStrings || value || ''\n\n // heuristic, text width + icon width\n // + 45 accomodates help icon and search icon\n const width = Math.min(\n Math.max(measureText(inputBoxVal, 16) + 45, minWidth),\n 550,\n )\n\n // notes on implementation:\n // The selectOnFocus setting helps highlight the field when clicked\n return (\n <>\n <Autocomplete\n id={`refNameAutocomplete-${model.id}`}\n data-testid=\"autocomplete\"\n disableListWrap\n disableClearable\n PopperComponent={MyPopper}\n disabled={!assemblyName}\n freeSolo\n includeInputInList\n selectOnFocus\n style={{ ...style, width }}\n value={inputBoxVal}\n loading={!loaded}\n inputValue={inputValue}\n onInputChange={(event, newInputValue) => setInputValue(newInputValue)}\n loadingText=\"loading results\"\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => {\n setOpen(false)\n setLoaded(true)\n if (hasDisplayedRegions) {\n setCurrentSearch('')\n setSearchOptions(undefined)\n }\n }}\n onChange={(_event, selectedOption) => {\n if (!selectedOption || !assemblyName) {\n return\n }\n\n if (typeof selectedOption === 'string') {\n // handles string inputs on keyPress enter\n onSelect(new BaseResult({ label: selectedOption }))\n } else {\n onSelect(selectedOption.result)\n }\n setInputValue(inputBoxVal)\n }}\n options={!searchOptions?.length ? options : searchOptions}\n getOptionDisabled={option => option?.group === 'limitOption'}\n filterOptions={(options, params) => {\n const filtered = filterOptions(\n options,\n params.inputValue.toLocaleLowerCase(),\n )\n return [\n ...filtered.slice(0, 100),\n ...(filtered.length > 100\n ? [\n {\n group: 'limitOption',\n result: new BaseResult({\n label: 'keep typing for more results',\n }),\n },\n ]\n : []),\n ]\n }}\n renderInput={params => {\n const { helperText, InputProps = {} } = TextFieldProps\n return (\n <TextField\n onBlur={() => {\n // this is used to restore a refName or the non-user-typed input\n // to the box on blurring\n setInputValue(inputBoxVal)\n }}\n {...params}\n {...TextFieldProps}\n helperText={helperText}\n InputProps={{\n ...params.InputProps,\n ...InputProps,\n\n endAdornment: (\n <>\n {regions.length === 0 ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : (\n <InputAdornment position=\"end\" style={{ marginRight: 7 }}>\n <SearchIcon />\n {showHelp ? (\n <IconButton\n onClick={() => setHelpDialogDisplayed(true)}\n >\n <HelpIcon />\n </IconButton>\n ) : null}\n </InputAdornment>\n )}\n {params.InputProps.endAdornment}\n </>\n ),\n }}\n placeholder=\"Search for location\"\n onChange={e => {\n setCurrentSearch(e.target.value)\n }}\n />\n )\n }}\n renderOption={option => {\n const { result } = option\n const component = result.getRenderingComponent()\n if (component && React.isValidElement(component)) {\n return component\n }\n\n return <Typography noWrap>{result.getDisplayString()}</Typography>\n }}\n getOptionLabel={option =>\n (typeof option === 'string' ? option : option.result.getLabel()) || ''\n }\n />\n {isHelpDialogDisplayed ? (\n <Suspense fallback={<div />}>\n <HelpDialog handleClose={() => setHelpDialogDisplayed(false)} />\n </Suspense>\n ) : null}\n </>\n )\n}\n\nexport default observer(RefNameAutocomplete)\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { makeStyles, useTheme, alpha } from '@material-ui/core'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport { getSession } from '@jbrowse/core/util'\nimport { SearchType } from '@jbrowse/core/data_adapters/BaseAdapter'\n\n// locals\nimport RefNameAutocomplete from './RefNameAutocomplete'\nimport { dedupe } from './util'\nimport { LinearGenomeViewModel, SPACING, WIDGET_HEIGHT } from '..'\n\nconst useStyles = makeStyles(() => ({\n headerRefName: {\n minWidth: 100,\n },\n}))\n\nfunction SearchBox({\n model,\n showHelp,\n}: {\n showHelp?: boolean\n model: LinearGenomeViewModel\n}) {\n const classes = useStyles()\n const theme = useTheme()\n const session = getSession(model)\n\n const { textSearchManager, assemblyManager } = session\n const { assemblyNames, rankSearchResults } = model\n const assemblyName = assemblyNames[0]\n const assembly = assemblyManager.get(assemblyName)\n const searchScope = model.searchScope(assemblyName)\n\n async function fetchResults(query: string, searchType?: SearchType) {\n if (!textSearchManager) {\n console.warn('No text search manager')\n }\n\n const textSearchResults = await textSearchManager?.search(\n {\n queryString: query,\n searchType,\n },\n searchScope,\n rankSearchResults,\n )\n\n const refNameResults = assembly?.allRefNames\n ?.filter(refName => refName.startsWith(query))\n .map(r => new BaseResult({ label: r }))\n .slice(0, 10)\n\n return dedupe(\n [...(refNameResults || []), ...(textSearchResults || [])],\n elt => elt.getId(),\n )\n }\n\n async function handleSelectedRegion(option: BaseResult) {\n let trackId = option.getTrackId()\n let location = option.getLocation()\n const label = option.getLabel()\n try {\n if (assembly?.allRefNames?.includes(location)) {\n model.navToLocString(location)\n } else {\n const results = await fetchResults(label, 'exact')\n if (results && results.length > 1) {\n model.setSearchResults(results, label.toLowerCase())\n return\n } else if (results?.length === 1) {\n location = results[0].getLocation()\n trackId = results[0].getTrackId()\n }\n\n model.navToLocString(location, assemblyName)\n if (trackId) {\n model.showTrack(trackId)\n }\n }\n } catch (e) {\n console.error(e)\n session.notify(`${e}`, 'warning')\n }\n }\n return (\n <RefNameAutocomplete\n showHelp={showHelp}\n onSelect={handleSelectedRegion}\n assemblyName={assemblyName}\n fetchResults={fetchResults}\n model={model}\n TextFieldProps={{\n variant: 'outlined',\n className: classes.headerRefName,\n style: { margin: SPACING, minWidth: '175px' },\n InputProps: {\n style: {\n padding: 0,\n height: WIDGET_HEIGHT,\n background: alpha(theme.palette.background.paper, 0.8),\n },\n },\n }}\n />\n )\n}\n\nexport default observer(SearchBox)\n","import React, { useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Checkbox,\n FormControlLabel,\n CircularProgress,\n Typography,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { LinearGenomeViewModel as LGV } from '..'\n\nconst useStyles = makeStyles(theme => ({\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}))\n\nexport default function ExportSvgDlg({\n model,\n handleClose,\n}: {\n model: LGV\n handleClose: () => void\n}) {\n // @ts-ignore\n const offscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n const [rasterizeLayers, setRasterizeLayers] = useState(offscreenCanvas)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<unknown>()\n const classes = useStyles()\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle>\n Export SVG\n <IconButton className={classes.closeButton} onClick={handleClose}>\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n {error ? (\n <div style={{ color: 'red' }}>{`${error}`}</div>\n ) : loading ? (\n <div>\n <CircularProgress size={20} style={{ marginRight: 20 }} />\n <Typography display=\"inline\">Creating SVG</Typography>\n </div>\n ) : null}\n {offscreenCanvas ? (\n <FormControlLabel\n control={\n <Checkbox\n checked={rasterizeLayers}\n onChange={() => setRasterizeLayers(val => !val)}\n />\n }\n label=\"Rasterize canvas based tracks? File may be much larger if this is turned off\"\n />\n ) : (\n <Typography>\n Note: rasterizing layers not yet supported in this browser, so SVG\n size may be large\n </Typography>\n )}\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => handleClose()}\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n onClick={async () => {\n setLoading(true)\n setError(undefined)\n try {\n await model.exportSvg({ rasterizeLayers })\n handleClose()\n } catch (e) {\n console.error(e)\n setError(e)\n } finally {\n setLoading(false)\n }\n }}\n >\n Submit\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import React, { useState, useEffect } from 'react'\nimport { observer } from 'mobx-react'\nimport IconButton from '@material-ui/core/IconButton'\nimport Slider from '@material-ui/core/Slider'\nimport { makeStyles } from '@material-ui/core/styles'\nimport ZoomIn from '@material-ui/icons/ZoomIn'\nimport ZoomOut from '@material-ui/icons/ZoomOut'\nimport { LinearGenomeViewModel } from '..'\n\nconst useStyles = makeStyles({\n container: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n slider: {\n width: 70,\n },\n})\n\nfunction ZoomControls({ model }: { model: LinearGenomeViewModel }) {\n const classes = useStyles()\n const { maxBpPerPx, minBpPerPx, bpPerPx, scaleFactor } = model\n const [value, setValue] = useState(-Math.log2(bpPerPx) * 100)\n useEffect(() => {\n setValue(-Math.log2(bpPerPx) * 100)\n }, [setValue, bpPerPx])\n return (\n <div className={classes.container}>\n <IconButton\n data-testid=\"zoom_out\"\n onClick={() => {\n model.zoom(bpPerPx * 2)\n }}\n disabled={bpPerPx >= maxBpPerPx - 0.0001 || scaleFactor !== 1}\n color=\"secondary\"\n >\n <ZoomOut />\n </IconButton>\n\n <Slider\n className={classes.slider}\n value={value}\n min={-Math.log2(maxBpPerPx) * 100}\n max={-Math.log2(minBpPerPx) * 100}\n onChange={(_, val) => setValue(val as number)}\n onChangeCommitted={() => model.zoomTo(2 ** (-value / 100))}\n disabled={scaleFactor !== 1}\n />\n <IconButton\n data-testid=\"zoom_in\"\n onClick={() => {\n model.zoom(model.bpPerPx / 2)\n }}\n disabled={bpPerPx <= minBpPerPx + 0.0001 || scaleFactor !== 1}\n color=\"secondary\"\n >\n <ZoomIn />\n </IconButton>\n </div>\n )\n}\n\nexport default observer(ZoomControls)\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n FormGroup,\n Typography,\n makeStyles,\n alpha,\n} from '@material-ui/core'\nimport SearchBox from './SearchBox'\n\n// icons\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward'\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack'\n\n// locals\nimport {\n LinearGenomeViewModel,\n SPACING,\n WIDGET_HEIGHT,\n HEADER_BAR_HEIGHT,\n} from '..'\nimport OverviewScaleBar from './OverviewScaleBar'\nimport ZoomControls from './ZoomControls'\n\ntype LGV = LinearGenomeViewModel\nconst useStyles = makeStyles(theme => ({\n headerBar: {\n height: HEADER_BAR_HEIGHT,\n display: 'flex',\n },\n headerForm: {\n flexWrap: 'nowrap',\n marginRight: 7,\n },\n spacer: {\n flexGrow: 1,\n },\n\n panButton: {\n background: alpha(theme.palette.background.paper, 0.8),\n height: WIDGET_HEIGHT,\n margin: SPACING,\n },\n bp: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 5,\n },\n toggleButton: {\n height: 44,\n border: 'none',\n margin: theme.spacing(0.5),\n },\n buttonSpacer: {\n marginRight: theme.spacing(2),\n },\n}))\n\nconst HeaderButtons = observer(({ model }: { model: LGV }) => {\n const classes = useStyles()\n return (\n <Button\n onClick={model.activateTrackSelector}\n className={classes.toggleButton}\n title=\"Open track selector\"\n value=\"track_select\"\n color=\"secondary\"\n >\n <TrackSelectorIcon className={classes.buttonSpacer} />\n </Button>\n )\n})\n\nfunction PanControls({ model }: { model: LGV }) {\n const classes = useStyles()\n return (\n <>\n <Button\n variant=\"outlined\"\n className={classes.panButton}\n onClick={() => model.slide(-0.9)}\n >\n <ArrowBackIcon />\n </Button>\n <Button\n variant=\"outlined\"\n className={classes.panButton}\n onClick={() => model.slide(0.9)}\n >\n <ArrowForwardIcon />\n </Button>\n </>\n )\n}\n\nconst RegionWidth = observer(({ model }: { model: LGV }) => {\n const classes = useStyles()\n const { coarseTotalBp } = model\n return (\n <Typography variant=\"body2\" color=\"textSecondary\" className={classes.bp}>\n {Math.round(coarseTotalBp).toLocaleString('en-US')} bp\n </Typography>\n )\n})\n\nconst Controls = ({ model }: { model: LGV }) => {\n const classes = useStyles()\n return (\n <div className={classes.headerBar}>\n <HeaderButtons model={model} />\n <div className={classes.spacer} />\n <FormGroup row className={classes.headerForm}>\n <PanControls model={model} />\n <SearchBox model={model} />\n </FormGroup>\n <RegionWidth model={model} />\n <ZoomControls model={model} />\n <div className={classes.spacer} />\n </div>\n )\n}\n\nconst LinearGenomeViewHeader = observer(({ model }: { model: LGV }) => {\n return model.hideHeaderOverview ? (\n <Controls model={model} />\n ) : (\n <OverviewScaleBar model={model}>\n <Controls model={model} />\n </OverviewScaleBar>\n )\n})\n\nexport default LinearGenomeViewHeader\n","import React from 'react'\nimport { getConf, readConfObject } from '@jbrowse/core/configuration'\nimport { Menu } from '@jbrowse/core/ui'\nimport { getSession, getContainingView } from '@jbrowse/core/util'\nimport { BaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport {\n IconButton,\n Paper,\n Typography,\n alpha,\n makeStyles,\n} from '@material-ui/core'\n\n// icons\nimport MoreVertIcon from '@material-ui/icons/MoreVert'\nimport DragIcon from '@material-ui/icons/DragIndicator'\nimport CloseIcon from '@material-ui/icons/Close'\n\nimport clsx from 'clsx'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport { LinearGenomeViewStateModel } from '..'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n background: alpha(theme.palette.background.paper, 0.8),\n '&:hover': {\n background: theme.palette.background.paper,\n },\n transition: theme.transitions.create(['background'], {\n duration: theme.transitions.duration.shortest,\n }),\n },\n trackName: {\n margin: '0 auto',\n width: '90%',\n fontSize: '0.8rem',\n pointerEvents: 'none',\n },\n dragHandle: {\n cursor: 'grab',\n color: '#135560',\n },\n dragHandleIcon: {\n display: 'inline-block',\n verticalAlign: 'middle',\n pointerEvents: 'none',\n },\n iconButton: {\n padding: theme.spacing(1),\n },\n}))\n\ntype LGV = Instance<LinearGenomeViewStateModel>\n\nconst TrackLabel = React.forwardRef(\n (props: { track: BaseTrackModel; className?: string }, ref) => {\n const classes = useStyles()\n const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null)\n const { track, className } = props\n const view = getContainingView(track) as LGV\n const session = getSession(track)\n const trackConf = track.configuration\n const trackId = getConf(track, 'trackId')\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget)\n }\n\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n const onDragStart = (event: React.DragEvent<HTMLSpanElement>) => {\n const target = event.target as HTMLElement\n if (target.parentNode) {\n event.dataTransfer.setDragImage(\n target.parentNode as HTMLElement,\n 20,\n 20,\n )\n view.setDraggingTrackId(track.id)\n }\n }\n\n const onDragEnd = () => {\n view.setDraggingTrackId(undefined)\n }\n\n let trackName = getConf(track, 'name')\n if (getConf(track, 'type') === 'ReferenceSequenceTrack') {\n trackName = 'Reference Sequence'\n session.assemblies.forEach(assembly => {\n if (assembly.sequence === trackConf) {\n trackName = `Reference Sequence (${readConfObject(assembly, 'name')})`\n }\n })\n }\n\n function handleMenuItemClick(_: unknown, callback: Function) {\n callback()\n handleClose()\n }\n\n const items = [\n ...session.getTrackActionMenuItems?.(trackConf),\n ...track.trackMenuItems(),\n ].sort((a, b) => (b.priority || 0) - (a.priority || 0))\n\n return (\n <>\n <Paper ref={ref} className={clsx(className, classes.root)}>\n <span\n draggable\n className={classes.dragHandle}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n data-testid={`dragHandle-${view.id}-${trackId}`}\n >\n <DragIcon className={classes.dragHandleIcon} />\n </span>\n <IconButton\n onClick={() => view.hideTrack(trackId)}\n className={classes.iconButton}\n title=\"close this track\"\n color=\"secondary\"\n >\n <CloseIcon />\n </IconButton>\n <Typography\n variant=\"body1\"\n component=\"span\"\n className={classes.trackName}\n >\n {trackName}\n </Typography>\n <IconButton\n aria-controls=\"simple-menu\"\n aria-haspopup=\"true\"\n onClick={handleClick}\n className={classes.iconButton}\n color=\"secondary\"\n data-testid=\"track_menu_icon\"\n disabled={!items.length}\n >\n <MoreVertIcon />\n </IconButton>\n </Paper>\n <Menu\n anchorEl={anchorEl}\n onMenuItemClick={handleMenuItemClick}\n open={Boolean(anchorEl)}\n onClose={handleClose}\n menuItems={items}\n />\n </>\n )\n },\n)\n\nexport default observer(TrackLabel)\n","import React, { useEffect, useRef } from 'react'\nimport { observer } from 'mobx-react'\nimport { isAlive } from 'mobx-state-tree'\nimport { BaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { ResizeHandle } from '@jbrowse/core/ui'\nimport { useDebouncedCallback } from '@jbrowse/core/util'\nimport clsx from 'clsx'\nimport Paper from '@material-ui/core/Paper'\nimport { makeStyles } from '@material-ui/core/styles'\n\nimport { LinearGenomeViewModel, RESIZE_HANDLE_HEIGHT } from '..'\nimport TrackLabel from './TrackLabel'\n\nconst useStyles = makeStyles(theme => ({\n root: { marginTop: 2 },\n resizeHandle: {\n height: RESIZE_HANDLE_HEIGHT,\n boxSizing: 'border-box',\n position: 'relative',\n zIndex: 2,\n },\n overlay: {\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n zIndex: 3,\n borderRadius: theme.shape.borderRadius,\n },\n trackLabel: {\n zIndex: 3,\n },\n\n // aligns with block bounderies. check for example the breakpoint split view\n // demo to see if features align if wanting to change things\n renderingComponentContainer: {\n position: 'absolute',\n // -1 offset because of the 1px border of the Paper\n left: -1,\n height: '100%',\n width: '100%',\n },\n trackLabelInline: {\n position: 'relative',\n display: 'inline-block',\n },\n trackLabelOverlap: {\n position: 'absolute',\n },\n trackRenderingContainer: {\n overflowY: 'auto',\n overflowX: 'hidden',\n whiteSpace: 'nowrap',\n position: 'relative',\n background: 'none',\n zIndex: 2,\n },\n}))\n\ntype LGV = LinearGenomeViewModel\n\nconst TrackContainerLabel = observer(\n ({ model, view }: { model: BaseTrackModel; view: LGV }) => {\n const classes = useStyles()\n const labelStyle =\n view.trackLabels === 'overlapping'\n ? classes.trackLabelOverlap\n : classes.trackLabelInline\n return view.trackLabels !== 'hidden' ? (\n <TrackLabel\n track={model}\n className={clsx(classes.trackLabel, labelStyle)}\n />\n ) : null\n },\n)\n\nfunction TrackContainer({\n model,\n track,\n}: {\n model: LinearGenomeViewModel\n track: BaseTrackModel\n}) {\n const classes = useStyles()\n const display = track.displays[0]\n const { horizontalScroll, draggingTrackId, moveTrack } = model\n const { height } = display\n const trackId = getConf(track, 'trackId')\n const ref = useRef(null)\n\n useEffect(() => {\n if (ref.current) {\n model.trackRefs[trackId] = ref.current\n }\n return () => {\n delete model.trackRefs[trackId]\n }\n }, [model.trackRefs, trackId])\n function onDragEnter() {\n if (\n draggingTrackId !== undefined &&\n isAlive(display) &&\n draggingTrackId !== display.id\n ) {\n moveTrack(draggingTrackId, track.id)\n }\n }\n const debouncedOnDragEnter = useDebouncedCallback(onDragEnter, 100)\n const { RenderingComponent, DisplayBlurb } = display\n const dimmed = draggingTrackId !== undefined && draggingTrackId !== display.id\n\n return (\n <Paper className={classes.root} variant=\"outlined\">\n <TrackContainerLabel model={track} view={model} />\n <div\n className={classes.trackRenderingContainer}\n style={{ height }}\n onScroll={event => {\n const target = event.target as HTMLDivElement\n display.setScrollTop(target.scrollTop)\n }}\n onDragEnter={debouncedOnDragEnter}\n data-testid={`trackRenderingContainer-${model.id}-${trackId}`}\n role=\"presentation\"\n >\n <div\n ref={ref}\n className={classes.renderingComponentContainer}\n style={{ transform: `scaleX(${model.scaleFactor})` }}\n >\n <RenderingComponent\n model={display}\n onHorizontalScroll={horizontalScroll}\n />\n </div>\n\n {DisplayBlurb ? (\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: display.height - 20,\n }}\n >\n <DisplayBlurb model={display} />\n </div>\n ) : null}\n </div>\n <div\n className={classes.overlay}\n style={{\n height: display.height,\n background: dimmed ? 'rgba(0, 0, 0, 0.4)' : undefined,\n }}\n onDragEnter={debouncedOnDragEnter}\n />\n <ResizeHandle\n onDrag={display.resizeHeight}\n className={classes.resizeHandle}\n />\n </Paper>\n )\n}\n\nexport default observer(TrackContainer)\n","import React, { useRef, useEffect, useState } from 'react'\nimport ReactPropTypes from 'prop-types'\nimport { observer, PropTypes as MobxPropTypes } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\n// material ui\nimport { alpha } from '@material-ui/core/styles/colorManipulator'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Popover from '@material-ui/core/Popover'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport Typography from '@material-ui/core/Typography'\nimport { stringify } from '@jbrowse/core/util'\nimport { Menu } from '@jbrowse/core/ui'\nimport { LinearGenomeViewStateModel, BpOffset } from '..'\n\ntype LGV = Instance<LinearGenomeViewStateModel>\n\nconst useStyles = makeStyles(theme => {\n const background = theme.palette.tertiary\n ? alpha(theme.palette.tertiary.main, 0.7)\n : alpha(theme.palette.primary.main, 0.7)\n return {\n rubberBand: {\n height: '100%',\n background,\n position: 'absolute',\n zIndex: 10,\n textAlign: 'center',\n overflow: 'hidden',\n },\n rubberBandControl: {\n cursor: 'crosshair',\n width: '100%',\n minHeight: 8,\n },\n rubberBandText: {\n color: theme.palette.tertiary\n ? theme.palette.tertiary.contrastText\n : theme.palette.primary.contrastText,\n },\n popover: {\n mouseEvents: 'none',\n cursor: 'crosshair',\n },\n paper: {\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n },\n guide: {\n pointerEvents: 'none',\n height: '100%',\n width: 1,\n position: 'absolute',\n zIndex: 10,\n },\n }\n})\n\nconst VerticalGuide = observer(\n ({ model, coordX }: { model: LGV; coordX: number }) => {\n const classes = useStyles()\n return (\n <Tooltip\n open\n placement=\"top\"\n title={stringify(model.pxToBp(coordX))}\n arrow\n >\n <div\n className={classes.guide}\n style={{\n left: coordX,\n background: 'red',\n }}\n />\n </Tooltip>\n )\n },\n)\n\nfunction RubberBand({\n model,\n ControlComponent = <div />,\n}: {\n model: LGV\n ControlComponent?: React.ReactElement\n}) {\n const [startX, setStartX] = useState<number>()\n const [currentX, setCurrentX] = useState<number>()\n\n // clientX and clientY used for anchorPosition for menu\n // offsetX used for calculations about width of selection\n const [anchorPosition, setAnchorPosition] = useState<{\n offsetX: number\n clientX: number\n clientY: number\n }>()\n const [guideX, setGuideX] = useState<number | undefined>()\n const controlsRef = useRef<HTMLDivElement>(null)\n const rubberBandRef = useRef(null)\n const classes = useStyles()\n const mouseDragging = startX !== undefined && anchorPosition === undefined\n\n const { setOffsets, pxToBp } = model\n\n useEffect(() => {\n function computeOffsets(offsetX: number) {\n if (startX === undefined) {\n return\n }\n let leftPx = startX\n let rightPx = offsetX\n // handles clicking and draging to the left\n if (rightPx < leftPx) {\n ;[leftPx, rightPx] = [rightPx, leftPx]\n }\n const leftOffset = pxToBp(leftPx)\n const rightOffset = pxToBp(rightPx)\n\n return { leftOffset, rightOffset }\n }\n\n function globalMouseMove(event: MouseEvent) {\n if (controlsRef.current && mouseDragging) {\n const relativeX =\n event.clientX - controlsRef.current.getBoundingClientRect().left\n setCurrentX(relativeX)\n }\n }\n\n function globalMouseUp(event: MouseEvent) {\n if (startX !== undefined && controlsRef.current) {\n const { clientX, clientY } = event\n const ref = controlsRef.current\n const offsetX = clientX - ref.getBoundingClientRect().left\n // as stated above, store both clientX/Y and offsetX for different\n // purposes\n setAnchorPosition({\n offsetX,\n clientX,\n clientY,\n })\n const { leftOffset, rightOffset } = computeOffsets(offsetX) as {\n leftOffset: BpOffset\n rightOffset: BpOffset\n }\n setOffsets(leftOffset, rightOffset)\n setGuideX(undefined)\n }\n }\n if (mouseDragging) {\n window.addEventListener('mousemove', globalMouseMove)\n window.addEventListener('mouseup', globalMouseUp)\n return () => {\n window.removeEventListener('mousemove', globalMouseMove)\n window.removeEventListener('mouseup', globalMouseUp)\n }\n }\n return () => {}\n }, [startX, mouseDragging, anchorPosition, setOffsets, pxToBp])\n\n useEffect(() => {\n if (\n !mouseDragging &&\n currentX !== undefined &&\n startX !== undefined &&\n Math.abs(currentX - startX) <= 3\n ) {\n handleClose()\n }\n }, [mouseDragging, currentX, startX, model.bpPerPx])\n\n function mouseDown(event: React.MouseEvent<HTMLDivElement>) {\n event.preventDefault()\n event.stopPropagation()\n const relativeX =\n event.clientX -\n (event.target as HTMLDivElement).getBoundingClientRect().left\n setStartX(relativeX)\n setCurrentX(relativeX)\n }\n\n function mouseMove(event: React.MouseEvent<HTMLDivElement>) {\n const target = event.target as HTMLDivElement\n setGuideX(event.clientX - target.getBoundingClientRect().left)\n }\n\n function mouseOut() {\n setGuideX(undefined)\n model.setOffsets(undefined, undefined)\n }\n\n function handleClose() {\n setAnchorPosition(undefined)\n setStartX(undefined)\n setCurrentX(undefined)\n }\n\n const open = Boolean(anchorPosition)\n\n function handleMenuItemClick(_: unknown, callback: Function) {\n callback()\n handleClose()\n }\n\n if (startX === undefined) {\n return (\n <>\n {guideX !== undefined ? (\n <VerticalGuide model={model} coordX={guideX} />\n ) : null}\n <div\n data-testid=\"rubberBand_controls\"\n className={classes.rubberBandControl}\n role=\"presentation\"\n ref={controlsRef}\n onMouseDown={mouseDown}\n onMouseOut={mouseOut}\n onMouseMove={mouseMove}\n >\n {ControlComponent}\n </div>\n </>\n )\n }\n\n /* Calculating Pixels for Mouse Dragging */\n const right = anchorPosition ? anchorPosition.offsetX : currentX || 0\n const left = right < startX ? right : startX\n const width = Math.abs(right - startX)\n const leftBpOffset = model.pxToBp(left)\n const rightBpOffset = model.pxToBp(left + width)\n const numOfBpSelected = Math.ceil(width * model.bpPerPx)\n return (\n <>\n {rubberBandRef.current ? (\n <>\n <Popover\n className={classes.popover}\n classes={{\n paper: classes.paper,\n }}\n open\n anchorEl={rubberBandRef.current}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n keepMounted\n disableRestoreFocus\n >\n <Typography>{stringify(leftBpOffset)}</Typography>\n </Popover>\n <Popover\n className={classes.popover}\n classes={{\n paper: classes.paper,\n }}\n open\n anchorEl={rubberBandRef.current}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n keepMounted\n disableRestoreFocus\n >\n <Typography>{stringify(rightBpOffset)}</Typography>\n </Popover>\n </>\n ) : null}\n <div\n ref={rubberBandRef}\n className={classes.rubberBand}\n style={{ left, width }}\n >\n <Typography variant=\"h6\" className={classes.rubberBandText}>\n {numOfBpSelected.toLocaleString('en-US')} bp\n </Typography>\n </div>\n <div\n data-testid=\"rubberBand_controls\"\n className={classes.rubberBandControl}\n role=\"presentation\"\n ref={controlsRef}\n onMouseDown={mouseDown}\n onMouseOut={mouseOut}\n onMouseMove={mouseMove}\n >\n {ControlComponent}\n </div>\n {anchorPosition ? (\n <Menu\n anchorReference=\"anchorPosition\"\n anchorPosition={{\n left: anchorPosition.clientX,\n top: anchorPosition.clientY,\n }}\n onMenuItemClick={handleMenuItemClick}\n open={open}\n onClose={handleClose}\n menuItems={model.rubberBandMenuItems()}\n />\n ) : null}\n </>\n )\n}\n\nRubberBand.propTypes = {\n model: MobxPropTypes.objectOrObservableObject.isRequired,\n ControlComponent: ReactPropTypes.node,\n}\n\nRubberBand.defaultProps = {\n ControlComponent: <div />,\n}\n\nexport default observer(RubberBand)\n","import {\n ContentBlock,\n ElidedBlock,\n InterRegionPaddingBlock,\n} from '@jbrowse/core/util/blockTypes'\nimport Paper from '@material-ui/core/Paper'\nimport Typography from '@material-ui/core/Typography'\nimport { makeStyles } from '@material-ui/core/styles'\nimport clsx from 'clsx'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport React from 'react'\nimport { LinearGenomeViewStateModel } from '..'\nimport {\n ContentBlock as ContentBlockComponent,\n ElidedBlock as ElidedBlockComponent,\n InterRegionPaddingBlock as InterRegionPaddingBlockComponent,\n} from '../../BaseLinearDisplay/components/Block'\nimport { makeTicks } from '../util'\n\ntype LGV = Instance<LinearGenomeViewStateModel>\n\nconst useStyles = makeStyles(theme => ({\n scaleBarContainer: {\n overflow: 'hidden',\n position: 'relative',\n },\n scaleBarZoomContainer: {\n position: 'relative',\n zIndex: 1,\n },\n scaleBar: {\n position: 'absolute',\n display: 'flex',\n pointerEvents: 'none',\n },\n majorTickLabel: {\n fontSize: '11px',\n zIndex: 1,\n background: theme.palette.background.paper,\n lineHeight: 'normal',\n pointerEvents: 'none',\n },\n tick: {\n position: 'absolute',\n width: 0,\n display: 'flex',\n justifyContent: 'center',\n pointerEvents: 'none',\n },\n refLabel: {\n fontSize: '11px',\n position: 'absolute',\n left: '2px',\n top: '-1px',\n fontWeight: 'bold',\n lineHeight: 'normal',\n zIndex: 1,\n pointerEvents: 'none',\n background: theme.palette.background.paper,\n },\n}))\n\nconst RenderedRefNameLabels = observer(({ model }: { model: LGV }) => {\n const classes = useStyles()\n\n // find the block that needs pinning to the left side for context\n let lastLeftBlock = 0\n model.staticBlocks.forEach((block, i) => {\n if (block.offsetPx - model.offsetPx < 0) {\n lastLeftBlock = i\n }\n })\n return (\n <>\n {model.staticBlocks.map((block, index) => {\n return block instanceof ContentBlock &&\n (block.isLeftEndOfDisplayedRegion || index === lastLeftBlock) ? (\n <Typography\n key={`refLabel-${block.key}-${index}`}\n style={{\n left:\n index === lastLeftBlock\n ? Math.max(0, -model.offsetPx)\n : block.offsetPx - model.offsetPx - 1,\n paddingLeft: index === lastLeftBlock ? 0 : 1,\n }}\n className={classes.refLabel}\n data-testid={`refLabel-${block.refName}`}\n >\n {block.refName}\n </Typography>\n ) : null\n })}\n </>\n )\n})\n\nconst RenderedScaleBarLabels = observer(({ model }: { model: LGV }) => {\n const classes = useStyles()\n\n return (\n <>\n {model.staticBlocks.map((block, index) => {\n if (block instanceof ContentBlock) {\n const ticks = makeTicks(\n block.start,\n block.end,\n model.bpPerPx,\n true,\n false,\n )\n\n return (\n <ContentBlockComponent key={`${block.key}-${index}`} block={block}>\n {ticks.map(tick => {\n if (tick.type === 'major') {\n const x =\n (block.reversed\n ? block.end - tick.base\n : tick.base - block.start) / model.bpPerPx\n const baseNumber = (tick.base + 1).toLocaleString('en-US')\n return (\n <div\n key={tick.base}\n className={classes.tick}\n style={{ left: x }}\n >\n {baseNumber ? (\n <Typography className={classes.majorTickLabel}>\n {baseNumber}\n </Typography>\n ) : null}\n </div>\n )\n }\n return null\n })}\n </ContentBlockComponent>\n )\n }\n if (block instanceof ElidedBlock) {\n return <ElidedBlockComponent key={block.key} width={block.widthPx} />\n }\n if (block instanceof InterRegionPaddingBlock) {\n return (\n <InterRegionPaddingBlockComponent\n key={block.key}\n width={block.widthPx}\n style={{ background: 'none' }}\n boundary={block.variant === 'boundary'}\n />\n )\n }\n return null\n })}\n </>\n )\n})\n\nconst ScaleBar = React.forwardRef(\n (\n {\n model,\n style,\n className,\n ...other\n }: { model: LGV; style?: React.CSSProperties; className?: string },\n ref,\n ) => {\n const classes = useStyles()\n\n const offsetLeft = model.staticBlocks.offsetPx - model.offsetPx\n return (\n <Paper\n data-resizer=\"true\" // used to avoid click-and-drag scrolls on trackscontainer\n className={clsx(classes.scaleBarContainer, className)}\n variant=\"outlined\"\n ref={ref}\n style={style}\n {...other}\n >\n <div\n className={classes.scaleBarZoomContainer}\n style={{\n transform:\n model.scaleFactor !== 1\n ? `scaleX(${model.scaleFactor})`\n : undefined,\n }}\n >\n <div\n className={classes.scaleBar}\n style={{\n left: offsetLeft - 1,\n width: model.staticBlocks.totalWidthPx,\n ...style,\n }}\n >\n <RenderedScaleBarLabels model={model} />\n </div>\n </div>\n <RenderedRefNameLabels model={model} />\n </Paper>\n )\n },\n)\n\nexport default observer(ScaleBar)\n","import {\n ContentBlock,\n ElidedBlock,\n InterRegionPaddingBlock,\n} from '@jbrowse/core/util/blockTypes'\nimport { makeStyles } from '@material-ui/core/styles'\nimport clsx from 'clsx'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport React from 'react'\nimport { LinearGenomeViewStateModel } from '..'\nimport {\n ContentBlock as ContentBlockComponent,\n ElidedBlock as ElidedBlockComponent,\n InterRegionPaddingBlock as InterRegionPaddingBlockComponent,\n} from '../../BaseLinearDisplay/components/Block'\n\nimport { makeTicks } from '../util'\n\ntype LGV = Instance<LinearGenomeViewStateModel>\n\nconst useStyles = makeStyles(theme => ({\n verticalGuidesZoomContainer: {\n position: 'absolute',\n height: '100%',\n width: '100%',\n zIndex: 1,\n pointerEvents: 'none',\n },\n verticalGuidesContainer: {\n position: 'absolute',\n height: '100%',\n zIndex: 1,\n pointerEvents: 'none',\n display: 'flex',\n },\n tick: {\n position: 'absolute',\n height: '100%',\n width: 1,\n },\n majorTick: {\n background: theme.palette.text.hint,\n },\n minorTick: {\n background: theme.palette.divider,\n },\n}))\nconst RenderedVerticalGuides = observer(({ model }: { model: LGV }) => {\n const classes = useStyles()\n return (\n <>\n {model.staticBlocks.map((block, index) => {\n if (block instanceof ContentBlock) {\n const ticks = makeTicks(block.start, block.end, model.bpPerPx)\n return (\n <ContentBlockComponent key={`${block.key}-${index}`} block={block}>\n {ticks.map(tick => {\n const x =\n (block.reversed\n ? block.end - tick.base\n : tick.base - block.start) / model.bpPerPx\n return (\n <div\n key={tick.base}\n className={clsx(\n classes.tick,\n tick.type === 'major' || tick.type === 'labeledMajor'\n ? classes.majorTick\n : classes.minorTick,\n )}\n style={{ left: x }}\n />\n )\n })}\n </ContentBlockComponent>\n )\n }\n if (block instanceof ElidedBlock) {\n return <ElidedBlockComponent key={block.key} width={block.widthPx} />\n }\n if (block instanceof InterRegionPaddingBlock) {\n return (\n <InterRegionPaddingBlockComponent\n key={block.key}\n width={block.widthPx}\n boundary={block.variant === 'boundary'}\n />\n )\n }\n return null\n })}\n </>\n )\n})\nfunction VerticalGuides({ model }: { model: LGV }) {\n const classes = useStyles()\n // find the block that needs pinning to the left side for context\n const offsetLeft = model.staticBlocks.offsetPx - model.offsetPx\n return (\n <div\n className={classes.verticalGuidesZoomContainer}\n style={{\n transform:\n model.scaleFactor !== 1 ? `scaleX(${model.scaleFactor})` : undefined,\n }}\n >\n <div\n className={classes.verticalGuidesContainer}\n style={{\n left: offsetLeft,\n width: model.staticBlocks.totalWidthPx,\n }}\n >\n <RenderedVerticalGuides model={model} />\n </div>\n </div>\n )\n}\n\nexport default observer(VerticalGuides)\n","import { makeStyles } from '@material-ui/core/styles'\nimport { observer, PropTypes as MobxPropTypes } from 'mobx-react'\nimport React, { useRef } from 'react'\nimport { Instance } from 'mobx-state-tree'\nimport { LinearGenomeViewStateModel } from '..'\n\ntype LGV = Instance<LinearGenomeViewStateModel>\n\nconst useStyles = makeStyles(() => ({\n centerLineContainer: {\n background: 'transparent',\n height: '100%',\n zIndex: 5, // above the track but under menu\n position: 'absolute',\n border: '1px black dashed',\n borderTop: 'none',\n borderBottom: 'none',\n pointerEvents: 'none',\n },\n centerLineText: {\n position: 'absolute',\n pointerEvents: 'none',\n whiteSpace: 'nowrap',\n fontWeight: 'bold',\n },\n}))\n\nfunction CenterLine({ model }: { model: LGV }) {\n const { bpPerPx, centerLineInfo, trackHeights, tracks, width } = model\n const ref = useRef<HTMLDivElement>(null)\n const classes = useStyles()\n const startingPosition = width / 2\n\n return tracks.length ? (\n <div\n data-testid=\"centerline_container\"\n className={classes.centerLineContainer}\n role=\"presentation\"\n ref={ref}\n style={{\n left: `${startingPosition}px`,\n width: Math.max(1 / bpPerPx, 1),\n }}\n >\n {centerLineInfo && (\n <div\n // text that indicates what bp is center, positioned\n // at the bottom right of the center line\n data-testid=\"centerline_text\"\n className={classes.centerLineText}\n role=\"presentation\"\n style={{\n left: Math.max(1 / bpPerPx, 1) + 5,\n top: trackHeights,\n }}\n >\n {/* change bp to refName */}\n {centerLineInfo.refName}:{' '}\n {Math.max(Math.round(centerLineInfo.offset) + 1, 0)}\n </div>\n )}\n </div>\n ) : null\n}\n\nCenterLine.propTypes = {\n model: MobxPropTypes.objectOrObservableObject.isRequired,\n}\n\nexport default observer(CenterLine)\n","import { makeStyles } from '@material-ui/core/styles'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport React, { useEffect, useRef, useState } from 'react'\nimport normalizeWheel from 'normalize-wheel'\n\nimport {\n LinearGenomeViewStateModel,\n RESIZE_HANDLE_HEIGHT,\n SCALE_BAR_HEIGHT,\n} from '..'\nimport RubberBand from './RubberBand'\nimport ScaleBar from './ScaleBar'\nimport VerticalGuides from './VerticalGuides'\nimport CenterLine from './CenterLine'\n\nconst useStyles = makeStyles(theme => ({\n tracksContainer: {\n position: 'relative',\n borderRadius: theme.shape.borderRadius,\n overflow: 'hidden',\n },\n spacer: {\n position: 'relative',\n height: RESIZE_HANDLE_HEIGHT,\n },\n}))\n\ntype LGV = Instance<LinearGenomeViewStateModel>\ntype Timer = ReturnType<typeof setTimeout>\n\nfunction TracksContainer({\n children,\n model,\n}: {\n children: React.ReactNode\n model: LGV\n}) {\n const classes = useStyles()\n // refs are to store these variables to avoid repeated rerenders associated\n // with useState/setState\n const delta = useRef(0)\n const scheduled = useRef(false)\n const timeout = useRef<Timer>()\n const ref = useRef<HTMLDivElement>(null)\n const prevX = useRef<number>(0)\n\n const [mouseDragging, setMouseDragging] = useState(false)\n\n useEffect(() => {\n let cleanup = () => {}\n\n function globalMouseMove(event: MouseEvent) {\n event.preventDefault()\n const currX = event.clientX\n const distance = currX - prevX.current\n if (distance) {\n // use rAF to make it so multiple event handlers aren't fired per-frame\n // see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/\n if (!scheduled.current) {\n scheduled.current = true\n window.requestAnimationFrame(() => {\n model.horizontalScroll(-distance)\n scheduled.current = false\n prevX.current = event.clientX\n })\n }\n }\n }\n\n function globalMouseUp() {\n prevX.current = 0\n if (mouseDragging) {\n setMouseDragging(false)\n }\n }\n\n if (mouseDragging) {\n window.addEventListener('mousemove', globalMouseMove, true)\n window.addEventListener('mouseup', globalMouseUp, true)\n cleanup = () => {\n window.removeEventListener('mousemove', globalMouseMove, true)\n window.removeEventListener('mouseup', globalMouseUp, true)\n }\n }\n return cleanup\n }, [model, mouseDragging, prevX])\n\n function mouseDown(event: React.MouseEvent) {\n // check if clicking a draggable element or a resize handle\n const target = event.target as HTMLElement\n if (target.draggable || target.dataset.resizer) {\n return\n }\n\n // otherwise do click and drag scroll\n if (event.button === 0) {\n prevX.current = event.clientX\n setMouseDragging(true)\n }\n }\n\n // this local mouseup is used in addition to the global because sometimes\n // the global add/remove are not called in time, resulting in issue #533\n function mouseUp(event: React.MouseEvent) {\n event.preventDefault()\n setMouseDragging(false)\n }\n\n function mouseLeave(event: React.MouseEvent) {\n event.preventDefault()\n }\n\n useEffect(() => {\n const curr = ref.current\n // if ctrl is held down, zoom in with y-scroll\n // else scroll horizontally with x-scroll\n function onWheel(origEvent: WheelEvent) {\n const event = normalizeWheel(origEvent)\n if (origEvent.ctrlKey === true) {\n origEvent.preventDefault()\n delta.current += event.pixelY / 500\n model.setScaleFactor(\n delta.current < 0 ? 1 - delta.current : 1 / (1 + delta.current),\n )\n if (timeout.current) {\n clearTimeout(timeout.current)\n }\n timeout.current = setTimeout(() => {\n model.setScaleFactor(1)\n model.zoomTo(\n delta.current > 0\n ? model.bpPerPx * (1 + delta.current)\n : model.bpPerPx / (1 - delta.current),\n )\n delta.current = 0\n }, 300)\n } else {\n // this is needed to stop the event from triggering \"back button\n // action\" on MacOSX etc. but is a heuristic to avoid preventing the\n // inner-track scroll behavior\n if (Math.abs(event.pixelX) > Math.abs(2 * event.pixelY)) {\n origEvent.preventDefault()\n }\n delta.current += event.pixelX\n if (!scheduled.current) {\n // use rAF to make it so multiple event handlers aren't fired per-frame\n // see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/\n scheduled.current = true\n window.requestAnimationFrame(() => {\n model.horizontalScroll(delta.current)\n delta.current = 0\n scheduled.current = false\n })\n }\n }\n }\n if (curr) {\n curr.addEventListener('wheel', onWheel)\n return () => {\n curr.removeEventListener('wheel', onWheel)\n }\n }\n return () => {}\n }, [model])\n\n return (\n <div\n ref={ref}\n role=\"presentation\"\n className={classes.tracksContainer}\n onMouseDown={mouseDown}\n onMouseUp={mouseUp}\n onMouseLeave={mouseLeave}\n >\n <VerticalGuides model={model} />\n {model.showCenterLine ? <CenterLine model={model} /> : null}\n\n <RubberBand\n model={model}\n ControlComponent={\n <ScaleBar\n model={model}\n style={{ height: SCALE_BAR_HEIGHT, boxSizing: 'border-box' }}\n />\n }\n />\n {children}\n </div>\n )\n}\n\nexport default observer(TracksContainer)\n","import React, { useState, lazy } from 'react'\nimport { observer } from 'mobx-react'\nimport { getSession } from '@jbrowse/core/util'\nimport {\n Button,\n CircularProgress,\n Container,\n Grid,\n makeStyles,\n} from '@material-ui/core'\nimport { SearchType } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport ErrorMessage from '@jbrowse/core/ui/ErrorMessage'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport AssemblySelector from '@jbrowse/core/ui/AssemblySelector'\nimport CloseIcon from '@material-ui/icons/Close'\n\n// locals\nimport RefNameAutocomplete from './RefNameAutocomplete'\nimport { LinearGenomeViewModel } from '..'\nconst SearchResultsDialog = lazy(() => import('./SearchResultsDialog'))\n\nconst useStyles = makeStyles(theme => ({\n importFormContainer: {\n padding: theme.spacing(2),\n },\n button: {\n margin: theme.spacing(2),\n },\n}))\n\ntype LGV = LinearGenomeViewModel\n\nconst ImportForm = observer(({ model }: { model: LGV }) => {\n const classes = useStyles()\n const session = getSession(model)\n const { assemblyNames, assemblyManager, textSearchManager } = session\n const {\n rankSearchResults,\n isSearchDialogDisplayed,\n error: modelError,\n } = model\n const [selectedAsm, setSelectedAsm] = useState(assemblyNames[0])\n const [error, setError] = useState<typeof modelError | undefined>(modelError)\n const searchScope = model.searchScope(selectedAsm)\n\n const assembly = assemblyManager.get(selectedAsm)\n const assemblyError = assemblyNames.length\n ? assembly?.error\n : 'No configured assemblies'\n const regions = assembly?.regions || []\n const err = assemblyError || error\n\n const [myOption, setOption] = useState<BaseResult>()\n\n // use this instead of useState initializer because the useState initializer\n // won't update in response to an observable\n const option =\n myOption ||\n new BaseResult({\n label: regions[0]?.refName,\n })\n\n const selectedRegion = option?.getLocation()\n\n async function fetchResults(query: string, searchType?: SearchType) {\n if (!textSearchManager) {\n console.warn('No text search manager')\n }\n\n const textSearchResults = await textSearchManager?.search(\n {\n queryString: query,\n searchType,\n },\n searchScope,\n rankSearchResults,\n )\n\n const refNameResults = assembly?.allRefNames\n ?.filter(refName => refName.startsWith(query))\n .map(r => new BaseResult({ label: r }))\n .slice(0, 10)\n\n return [...(refNameResults || []), ...(textSearchResults || [])]\n }\n\n // gets a string as input, or use stored option results from previous query,\n // then re-query and\n // 1) if it has multiple results: pop a dialog\n // 2) if it's a single result navigate to it\n // 3) else assume it's a locstring and navigate to it\n async function handleSelectedRegion(input: string) {\n if (!option) {\n return\n }\n let trackId = option.getTrackId()\n let location = input || option.getLocation() || ''\n try {\n if (assembly?.allRefNames?.includes(location)) {\n model.navToLocString(location, selectedAsm)\n } else {\n const results = await fetchResults(input, 'exact')\n if (results && results.length > 1) {\n model.setSearchResults(results, input.toLowerCase())\n return\n } else if (results?.length === 1) {\n location = results[0].getLocation()\n trackId = results[0].getTrackId()\n }\n\n model.navToLocString(location, selectedAsm)\n if (trackId) {\n model.showTrack(trackId)\n }\n }\n } catch (e) {\n console.error(e)\n session.notify(`${e}`, 'warning')\n }\n }\n\n // implementation notes:\n // having this wrapped in a form allows intuitive use of enter key to submit\n return (\n <div>\n {err ? <ErrorMessage error={err} /> : null}\n <Container className={classes.importFormContainer}>\n <form onSubmit={event => event.preventDefault()}>\n <Grid\n container\n spacing={1}\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <Grid item>\n <AssemblySelector\n onChange={val => {\n setError(undefined)\n setSelectedAsm(val)\n }}\n session={session}\n selected={selectedAsm}\n />\n </Grid>\n <Grid item>\n {selectedAsm ? (\n err ? (\n <CloseIcon style={{ color: 'red' }} />\n ) : selectedRegion ? (\n <RefNameAutocomplete\n fetchResults={fetchResults}\n model={model}\n assemblyName={assemblyError ? undefined : selectedAsm}\n value={selectedRegion}\n // note: minWidth 270 accomodates full width of helperText\n minWidth={270}\n onSelect={option => setOption(option)}\n TextFieldProps={{\n margin: 'normal',\n variant: 'outlined',\n helperText:\n 'Enter sequence name, feature name, or location',\n }}\n />\n ) : (\n <CircularProgress\n role=\"progressbar\"\n size={20}\n disableShrink\n />\n )\n ) : null}\n </Grid>\n <Grid item></Grid>\n <Grid item>\n <Button\n type=\"submit\"\n disabled={!selectedRegion}\n className={classes.button}\n onClick={() => {\n model.setError(undefined)\n if (selectedRegion) {\n handleSelectedRegion(selectedRegion)\n }\n }}\n variant=\"contained\"\n color=\"primary\"\n >\n Open\n </Button>\n <Button\n disabled={!selectedRegion}\n className={classes.button}\n onClick={() => {\n model.setError(undefined)\n model.showAllRegionsInAssembly(selectedAsm)\n }}\n variant=\"contained\"\n color=\"secondary\"\n >\n Show all regions in assembly\n </Button>\n </Grid>\n </Grid>\n </form>\n </Container>\n {isSearchDialogDisplayed ? (\n <SearchResultsDialog\n model={model}\n optAssemblyName={selectedAsm}\n handleClose={() => model.setSearchResults(undefined, undefined)}\n />\n ) : null}\n </div>\n )\n})\n\nexport default ImportForm\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport IconButton from '@material-ui/core/IconButton'\nimport ZoomIn from '@material-ui/icons/ZoomIn'\nimport ZoomOut from '@material-ui/icons/ZoomOut'\nimport ArrowDown from '@material-ui/icons/KeyboardArrowDown'\nimport Paper from '@material-ui/core/Paper'\nimport Menu from '@jbrowse/core/ui/Menu'\nimport { LinearGenomeViewModel } from '..'\n\nconst MiniControls = observer((props: { model: LinearGenomeViewModel }) => {\n const { model } = props\n const { bpPerPx, maxBpPerPx, minBpPerPx, scaleFactor } = model\n const [anchorEl, setAnchorEl] = useState<HTMLElement>()\n\n return (\n <>\n <Paper style={{ background: '#aaa7' }}>\n <IconButton\n color=\"secondary\"\n onClick={event => {\n setAnchorEl(event.currentTarget)\n }}\n >\n <ArrowDown />\n </IconButton>\n\n <IconButton\n data-testid=\"zoom_out\"\n onClick={() => {\n model.zoom(bpPerPx * 2)\n }}\n disabled={bpPerPx >= maxBpPerPx - 0.0001 || scaleFactor !== 1}\n color=\"secondary\"\n >\n <ZoomOut />\n </IconButton>\n <IconButton\n data-testid=\"zoom_in\"\n onClick={() => {\n model.zoom(model.bpPerPx / 2)\n }}\n disabled={bpPerPx <= minBpPerPx + 0.0001 || scaleFactor !== 1}\n color=\"secondary\"\n >\n <ZoomIn />\n </IconButton>\n </Paper>\n <Menu\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onMenuItemClick={(_, callback) => {\n callback()\n setAnchorEl(undefined)\n }}\n onClose={() => {\n setAnchorEl(undefined)\n }}\n menuItems={model.menuItems()}\n />\n </>\n )\n})\n\nexport default MiniControls\n","import React, { useEffect, useMemo, useState } from 'react'\n\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Container,\n Typography,\n Divider,\n IconButton,\n TextField,\n makeStyles,\n} from '@material-ui/core'\nimport { observer } from 'mobx-react'\nimport { saveAs } from 'file-saver'\nimport { Region } from '@jbrowse/core/util/types'\nimport { getConf } from '@jbrowse/core/configuration'\nimport copy from 'copy-to-clipboard'\nimport { getSession } from '@jbrowse/core/util'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { formatSeqFasta } from '@jbrowse/core/util/formatFastaStrings'\n\n// icons\nimport { ContentCopy as ContentCopyIcon } from '@jbrowse/core/ui/Icons'\nimport CloseIcon from '@material-ui/icons/Close'\nimport GetAppIcon from '@material-ui/icons/GetApp'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\n\nconst useStyles = makeStyles(theme => ({\n loadingMessage: {\n padding: theme.spacing(5),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n dialogContent: {\n width: '80em',\n },\n textAreaFont: {\n fontFamily: 'Courier New',\n },\n}))\n\ntype LGV = LinearGenomeViewModel\n\n/**\n * Fetches and returns a list features for a given list of regions\n */\nasync function fetchSequence(\n model: LGV,\n regions: Region[],\n signal?: AbortSignal,\n) {\n const session = getSession(model)\n const { leftOffset, rightOffset } = model\n\n if (!leftOffset || !rightOffset) {\n throw new Error('no offsets on model to use for range')\n }\n\n if (leftOffset.assemblyName !== rightOffset.assemblyName) {\n throw new Error('not able to fetch sequences from multiple assemblies')\n }\n const { rpcManager, assemblyManager } = session\n const assemblyName = leftOffset.assemblyName || rightOffset.assemblyName || ''\n const assembly = assemblyManager.get(assemblyName)\n if (!assembly) {\n throw new Error(`assembly ${assemblyName} not found`)\n }\n const adapterConfig = getConf(assembly, ['sequence', 'adapter'])\n\n const sessionId = 'getSequence'\n const chunks = (await Promise.all(\n regions.map(region =>\n rpcManager.call(sessionId, 'CoreGetFeatures', {\n adapterConfig,\n region,\n sessionId,\n signal,\n }),\n ),\n )) as Feature[][]\n\n // assumes that we get whole sequence in a single getFeatures call\n return chunks.map(chunk => chunk[0])\n}\n\nfunction SequenceDialog({\n model,\n handleClose,\n}: {\n model: LinearGenomeViewModel\n handleClose: () => void\n}) {\n const classes = useStyles()\n const session = getSession(model)\n const [error, setError] = useState<unknown>()\n const [sequence, setSequence] = useState<string>()\n const loading = Boolean(sequence === undefined)\n const { leftOffset, rightOffset } = model\n\n // avoid infinite looping of useEffect\n // random note: the current selected region can't be a computed because it\n // uses action on base1dview even though it's on the ephemeral base1dview\n const regionsSelected = useMemo(\n () => model.getSelectedRegions(leftOffset, rightOffset),\n [model, leftOffset, rightOffset],\n )\n\n useEffect(() => {\n let active = true\n const controller = new AbortController()\n\n ;(async () => {\n try {\n if (regionsSelected.length > 0) {\n const chunks = await fetchSequence(\n model,\n regionsSelected,\n controller.signal,\n )\n if (active) {\n setSequence(\n formatSeqFasta(\n chunks\n .filter(f => !!f)\n .map(chunk => {\n const chunkSeq = chunk.get('seq')\n const chunkRefName = chunk.get('refName')\n const chunkStart = chunk.get('start') + 1\n const chunkEnd = chunk.get('end')\n const chunkLocstring = `${chunkRefName}:${chunkStart}-${chunkEnd}`\n if (chunkSeq?.length !== chunkEnd - chunkStart + 1) {\n throw new Error(\n `${chunkLocstring} returned ${chunkSeq.length.toLocaleString()} bases, but should have returned ${(\n chunkEnd - chunkStart\n ).toLocaleString()}`,\n )\n }\n return { header: chunkLocstring, seq: chunkSeq }\n }),\n ),\n )\n }\n } else {\n throw new Error('Selected region is out of bounds')\n }\n } catch (e) {\n console.error(e)\n if (active) {\n setError(e)\n }\n }\n })()\n\n return () => {\n controller.abort()\n active = false\n }\n }, [model, session, regionsSelected, setSequence])\n\n const sequenceTooLarge = sequence ? sequence.length > 1_000_000 : false\n\n return (\n <Dialog\n data-testid=\"sequence-dialog\"\n maxWidth=\"xl\"\n open\n onClose={handleClose}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n <DialogTitle id=\"alert-dialog-title\">\n Reference sequence\n {handleClose ? (\n <IconButton\n data-testid=\"close-seqDialog\"\n className={classes.closeButton}\n onClick={() => {\n handleClose()\n model.setOffsets(undefined, undefined)\n }}\n >\n <CloseIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n <Divider />\n\n <DialogContent>\n {error ? <Typography color=\"error\">{`${error}`}</Typography> : null}\n {loading && !error ? (\n <Container>\n Retrieving reference sequence...\n <CircularProgress\n style={{\n marginLeft: 10,\n }}\n size={20}\n disableShrink\n />\n </Container>\n ) : null}\n <TextField\n data-testid=\"rubberband-sequence\"\n variant=\"outlined\"\n multiline\n rows={5}\n disabled={sequenceTooLarge}\n className={classes.dialogContent}\n fullWidth\n value={\n sequenceTooLarge\n ? 'Reference sequence too large to display, use the download FASTA button'\n : sequence\n }\n InputProps={{\n readOnly: true,\n classes: {\n input: classes.textAreaFont,\n },\n }}\n />\n </DialogContent>\n <DialogActions>\n <Button\n onClick={() => {\n copy(sequence || '')\n session.notify('Copied to clipboard', 'success')\n }}\n disabled={loading || !!error || sequenceTooLarge}\n color=\"primary\"\n startIcon={<ContentCopyIcon />}\n >\n Copy to clipboard\n </Button>\n <Button\n onClick={() => {\n const seqFastaFile = new Blob([sequence || ''], {\n type: 'text/x-fasta;charset=utf-8',\n })\n saveAs(seqFastaFile, 'jbrowse_ref_seq.fa')\n }}\n disabled={loading || !!error}\n color=\"primary\"\n startIcon={<GetAppIcon />}\n >\n Download FASTA\n </Button>\n <Button onClick={handleClose} color=\"primary\" autoFocus>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n\nexport default observer(SequenceDialog)\n","import React from 'react'\nimport { getEnv, resolveIdentifier, getRoot } from 'mobx-state-tree'\nimport { getSession } from '@jbrowse/core/util'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Typography,\n Paper,\n makeStyles,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { LinearGenomeViewModel } from '../..'\n\nexport const useStyles = makeStyles(theme => ({\n dialogContent: {\n width: '80em',\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}))\n\nexport default function SearchResultsDialog({\n model,\n optAssemblyName,\n handleClose,\n}: {\n model: LinearGenomeViewModel\n optAssemblyName?: string\n handleClose: () => void\n}) {\n const classes = useStyles()\n const session = getSession(model)\n const { pluginManager } = getEnv(session)\n const { assemblyManager } = session\n let assemblyName = optAssemblyName\n if (model.displayedRegions.length > 0) {\n assemblyName = model.displayedRegions[0]?.assemblyName\n }\n if (!assemblyName) {\n throw new Error(`Assembly name not found`)\n }\n const assembly = assemblyManager.get(assemblyName)\n if (!assembly) {\n throw new Error(`assembly ${assemblyName} not found`)\n }\n if (!assembly.regions) {\n throw new Error(`assembly ${assemblyName} regions not loaded`)\n }\n const assemblyRegions = assembly.regions\n\n function handleClick(location: string) {\n try {\n const newRegion = assemblyRegions.find(\n region => location === region.refName,\n )\n if (newRegion) {\n model.setDisplayedRegions([newRegion])\n // we use showAllRegions after setDisplayedRegions to make the entire\n // region visible, xref #1703\n model.showAllRegions()\n } else {\n model.navToLocString(location, assemblyName)\n }\n } catch (e) {\n console.warn(e)\n session.notify(`${e}`, 'warning')\n }\n }\n\n function getTrackName(trackId: string | undefined) {\n if (trackId) {\n const trackConfigSchema = pluginManager.pluggableConfigSchemaType('track')\n const configuration = resolveIdentifier(\n trackConfigSchema,\n getRoot(model),\n trackId,\n )\n if (configuration) {\n return configuration.name?.value\n }\n }\n return ''\n }\n\n return (\n <Dialog open maxWidth=\"xl\" onClose={handleClose}>\n <DialogTitle>\n Search results\n {handleClose ? (\n <IconButton\n data-testid=\"close-resultsDialog\"\n className={classes.closeButton}\n onClick={() => {\n handleClose()\n }}\n >\n <CloseIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n <Divider />\n <DialogContent>\n {!model.searchResults?.length ? (\n <Typography>\n No results found for <b>{model.searchQuery}</b>\n </Typography>\n ) : (\n <>\n <Typography>\n Showing results for <b>{model.searchQuery}</b>\n </Typography>\n <TableContainer component={Paper}>\n <Table>\n <TableHead>\n <TableRow>\n <TableCell>Name</TableCell>\n <TableCell align=\"right\">Location</TableCell>\n <TableCell align=\"right\">Track</TableCell>\n <TableCell align=\"right\" />\n </TableRow>\n </TableHead>\n <TableBody>\n {model.searchResults.map(result => (\n <TableRow key={`${result.getId()}`}>\n <TableCell component=\"th\" scope=\"row\">\n {result.getLabel()}\n </TableCell>\n <TableCell align=\"right\">\n {result.getLocation()}\n </TableCell>\n <TableCell align=\"right\">\n {getTrackName(result.getTrackId()) || 'N/A'}\n </TableCell>\n <TableCell align=\"right\">\n <Button\n onClick={() => {\n handleClick(result.getLocation())\n const resultTrackId = result.getTrackId()\n if (resultTrackId) {\n model.showTrack(resultTrackId)\n }\n handleClose()\n }}\n disabled={!getTrackName(result.getTrackId())}\n color=\"primary\"\n variant=\"contained\"\n >\n Go\n </Button>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n </>\n )}\n </DialogContent>\n <Divider />\n <DialogActions>\n <Button onClick={() => handleClose()} color=\"primary\">\n Cancel\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import React from 'react'\nimport { Button, Paper, Typography, makeStyles } from '@material-ui/core'\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport Header from './Header'\nimport TrackContainer from './TrackContainer'\nimport TracksContainer from './TracksContainer'\nimport ImportForm from './ImportForm'\nimport MiniControls from './MiniControls'\nimport SequenceDialog from './SequenceDialog'\nimport SearchResultsDialog from './SearchResultsDialog'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles(theme => ({\n note: {\n textAlign: 'center',\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n },\n dots: {\n '&::after': {\n display: 'inline-block',\n animation: '$ellipsis 1.5s infinite',\n content: '\".\"',\n width: '1em',\n textAlign: 'left',\n },\n },\n '@keyframes ellipsis': {\n '0%': {\n content: '\".\"',\n },\n '33%': {\n content: '\"..\"',\n },\n '66%': {\n content: '\"...\"',\n },\n },\n}))\n\nconst LinearGenomeView = observer(({ model }: { model: LGV }) => {\n const { tracks, error, hideHeader, initialized, hasDisplayedRegions } = model\n const classes = useStyles()\n\n if (!initialized && !error) {\n return (\n <Typography className={classes.dots} variant=\"h5\">\n Loading\n </Typography>\n )\n }\n if (!hasDisplayedRegions || error) {\n return <ImportForm model={model} />\n }\n\n return (\n <div style={{ position: 'relative' }}>\n {model.seqDialogDisplayed ? (\n <SequenceDialog\n model={model}\n handleClose={() => {\n model.setSequenceDialogOpen(false)\n }}\n />\n ) : null}\n {model.isSearchDialogDisplayed ? (\n <SearchResultsDialog\n model={model}\n handleClose={() => {\n model.setSearchResults(undefined, undefined)\n }}\n />\n ) : null}\n {!hideHeader ? (\n <Header model={model} />\n ) : (\n <div\n style={{\n position: 'absolute',\n right: 0,\n zIndex: 1001,\n }}\n >\n <MiniControls model={model} />\n </div>\n )}\n <TracksContainer model={model}>\n {!tracks.length ? (\n <Paper variant=\"outlined\" className={classes.note}>\n <Typography>No tracks active.</Typography>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={model.activateTrackSelector}\n style={{ zIndex: 1000 }}\n startIcon={<TrackSelectorIcon />}\n >\n Open track selector\n </Button>\n </Paper>\n ) : (\n tracks.map(track => (\n <TrackContainer key={track.id} model={model} track={track} />\n ))\n )}\n </TracksContainer>\n </div>\n )\n})\n\nexport default LinearGenomeView\n","import { getConf, AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { BaseViewModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { Region } from '@jbrowse/core/util/types'\nimport { ElementId, Region as MUIRegion } from '@jbrowse/core/util/types/mst'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport {\n assembleLocString,\n clamp,\n findLastIndex,\n getContainingView,\n getSession,\n isViewContainer,\n isSessionModelWithWidgets,\n measureText,\n parseLocString,\n springAnimate,\n viewBpToPx,\n} from '@jbrowse/core/util'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport { BlockSet, BaseBlock } from '@jbrowse/core/util/blockTypes'\nimport calculateDynamicBlocks from '@jbrowse/core/util/calculateDynamicBlocks'\nimport calculateStaticBlocks from '@jbrowse/core/util/calculateStaticBlocks'\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\nimport { transaction, autorun } from 'mobx'\nimport {\n addDisposer,\n cast,\n getSnapshot,\n getRoot,\n resolveIdentifier,\n types,\n Instance,\n} from 'mobx-state-tree'\n\nimport Base1DView from '@jbrowse/core/util/Base1DViewModel'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport clone from 'clone'\nimport { saveAs } from 'file-saver'\n\n// icons\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport SyncAltIcon from '@material-ui/icons/SyncAlt'\nimport VisibilityIcon from '@material-ui/icons/Visibility'\nimport LabelIcon from '@material-ui/icons/Label'\nimport FolderOpenIcon from '@material-ui/icons/FolderOpen'\nimport PhotoCameraIcon from '@material-ui/icons/PhotoCamera'\nimport ZoomInIcon from '@material-ui/icons/ZoomIn'\nimport MenuOpenIcon from '@material-ui/icons/MenuOpen'\n\n// locals\nimport { renderToSvg } from './components/LinearGenomeViewSvg'\nimport RefNameAutocomplete from './components/RefNameAutocomplete'\nimport SearchBox from './components/SearchBox'\nimport ExportSvgDlg from './components/ExportSvgDialog'\nimport { ReturnToImportFormDialog } from '@jbrowse/core/ui'\n\nexport interface BpOffset {\n refName?: string\n index: number\n offset: number\n start?: number\n end?: number\n coord?: number\n reversed?: boolean\n assemblyName?: string\n oob?: boolean\n}\n\nexport interface ExportSvgOptions {\n rasterizeLayers?: boolean\n}\n\nfunction calculateVisibleLocStrings(contentBlocks: BaseBlock[]) {\n if (!contentBlocks.length) {\n return ''\n }\n const isSingleAssemblyName = contentBlocks.every(\n block => block.assemblyName === contentBlocks[0].assemblyName,\n )\n const locs = contentBlocks.map(block =>\n assembleLocString({\n ...block,\n start: Math.round(block.start),\n end: Math.round(block.end),\n assemblyName: isSingleAssemblyName ? undefined : block.assemblyName,\n }),\n )\n return locs.join(' ')\n}\n\nexport interface NavLocation {\n refName: string\n start?: number\n end?: number\n assemblyName?: string\n}\n\nexport const HEADER_BAR_HEIGHT = 48\nexport const HEADER_OVERVIEW_HEIGHT = 20\nexport const SCALE_BAR_HEIGHT = 17\nexport const RESIZE_HANDLE_HEIGHT = 3\nexport const INTER_REGION_PADDING_WIDTH = 2\nexport const WIDGET_HEIGHT = 32\nexport const SPACING = 7\n\nfunction localStorageGetItem(item: string) {\n return typeof localStorage !== 'undefined'\n ? localStorage.getItem(item)\n : undefined\n}\n\nexport function stateModelFactory(pluginManager: PluginManager) {\n return types\n .compose(\n BaseViewModel,\n types.model('LinearGenomeView', {\n id: ElementId,\n type: types.literal('LinearGenomeView'),\n offsetPx: 0,\n bpPerPx: 1,\n displayedRegions: types.array(MUIRegion),\n\n // we use an array for the tracks because the tracks are displayed in a\n // specific order that we need to keep.\n tracks: types.array(\n pluginManager.pluggableMstType('track', 'stateModel'),\n ),\n hideHeader: false,\n hideHeaderOverview: false,\n trackSelectorType: types.optional(\n types.enumeration(['hierarchical']),\n 'hierarchical',\n ),\n trackLabels: types.optional(\n types.string,\n () => localStorageGetItem('lgv-trackLabels') || 'overlapping',\n ),\n showCenterLine: types.optional(types.boolean, () => {\n const setting = localStorageGetItem('lgv-showCenterLine')\n return setting !== undefined && setting !== null ? !!+setting : false\n }),\n showCytobandsSetting: types.optional(types.boolean, () => {\n const setting = localStorageGetItem('lgv-showCytobands')\n return setting !== undefined && setting !== null ? !!+setting : true\n }),\n }),\n )\n .volatile(() => ({\n volatileWidth: undefined as number | undefined,\n minimumBlockWidth: 3,\n draggingTrackId: undefined as undefined | string,\n volatileError: undefined as undefined | Error,\n\n // array of callbacks to run after the next set of the displayedRegions,\n // which is basically like an onLoad\n afterDisplayedRegionsSetCallbacks: [] as Function[],\n scaleFactor: 1,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackRefs: {} as { [key: string]: any },\n coarseDynamicBlocks: [] as BaseBlock[],\n coarseTotalBp: 0,\n leftOffset: undefined as undefined | BpOffset,\n rightOffset: undefined as undefined | BpOffset,\n searchResults: undefined as undefined | BaseResult[],\n searchQuery: undefined as undefined | string,\n seqDialogDisplayed: false,\n }))\n .views(self => ({\n get width(): number {\n if (self.volatileWidth === undefined) {\n throw new Error(\n 'width undefined, make sure to check for model.initialized',\n )\n }\n return self.volatileWidth\n },\n get interRegionPaddingWidth() {\n return INTER_REGION_PADDING_WIDTH\n },\n }))\n .views(self => ({\n get assemblyErrors() {\n const { assemblyManager } = getSession(self)\n return this.assemblyNames\n .map(a => assemblyManager.get(a)?.error)\n .filter(f => !!f)\n .join(', ')\n },\n\n get assembliesInitialized() {\n const { assemblyManager } = getSession(self)\n return this.assemblyNames.every(\n a => assemblyManager.get(a)?.initialized,\n )\n },\n get initialized() {\n return self.volatileWidth !== undefined && this.assembliesInitialized\n },\n get hasDisplayedRegions() {\n return self.displayedRegions.length > 0\n },\n get isSearchDialogDisplayed() {\n return self.searchResults !== undefined\n },\n get scaleBarHeight() {\n return SCALE_BAR_HEIGHT + RESIZE_HANDLE_HEIGHT\n },\n get headerHeight() {\n if (self.hideHeader) {\n return 0\n }\n if (self.hideHeaderOverview) {\n return HEADER_BAR_HEIGHT\n }\n return HEADER_BAR_HEIGHT + HEADER_OVERVIEW_HEIGHT\n },\n get trackHeights() {\n return self.tracks\n .map(t => t.displays[0].height)\n .reduce((a, b) => a + b, 0)\n },\n\n get trackHeightsWithResizeHandles() {\n return this.trackHeights + self.tracks.length * RESIZE_HANDLE_HEIGHT\n },\n get height() {\n return (\n this.trackHeightsWithResizeHandles +\n this.headerHeight +\n this.scaleBarHeight\n )\n },\n get totalBp() {\n return self.displayedRegions.reduce((a, b) => a + b.end - b.start, 0)\n },\n\n get maxBpPerPx() {\n return this.totalBp / (self.width * 0.9)\n },\n\n get minBpPerPx() {\n return 1 / 50\n },\n\n get error() {\n return self.volatileError || this.assemblyErrors\n },\n\n get maxOffset() {\n // objectively determined to keep the linear genome on the main screen\n const leftPadding = 10\n return this.displayedRegionsTotalPx - leftPadding\n },\n\n get minOffset() {\n // objectively determined to keep the linear genome on the main screen\n const rightPadding = 30\n return -self.width + rightPadding\n },\n\n get displayedRegionsTotalPx() {\n return this.totalBp / self.bpPerPx\n },\n\n renderProps() {\n return {\n ...getParentRenderProps(self),\n bpPerPx: self.bpPerPx,\n highResolutionScaling: getConf(\n getSession(self),\n 'highResolutionScaling',\n ),\n }\n },\n\n get assemblyNames() {\n return [\n ...new Set(self.displayedRegions.map(region => region.assemblyName)),\n ]\n },\n searchScope(assemblyName: string) {\n return {\n assemblyName,\n includeAggregateIndexes: true,\n tracks: self.tracks,\n }\n },\n\n /**\n * @param refName - refName of the displayedRegion\n * @param coord - coordinate at the displayed Region\n * @param regionNumber - optional param used as identifier when\n * there are multiple displayedRegions with the same refName\n * @returns offsetPx of the displayed region that it lands in\n */\n bpToPx({\n refName,\n coord,\n regionNumber,\n }: {\n refName: string\n coord: number\n regionNumber?: number\n }) {\n return viewBpToPx({ refName, coord, regionNumber, self })\n },\n /**\n *\n * @param px - px in the view area, return value is the displayed regions\n * @returns BpOffset of the displayed region that it lands in\n */\n pxToBp(px: number) {\n let bpSoFar = 0\n const bp = (self.offsetPx + px) * self.bpPerPx\n const n = self.displayedRegions.length\n if (bp < 0) {\n const region = self.displayedRegions[0]\n const offset = bp\n return {\n ...getSnapshot(region),\n oob: true,\n coord: region.reversed\n ? Math.floor(region.end - offset) + 1\n : Math.floor(region.start + offset) + 1,\n offset,\n index: 0,\n }\n }\n\n const interRegionPaddingBp = self.interRegionPaddingWidth * self.bpPerPx\n const minimumBlockBp = self.minimumBlockWidth * self.bpPerPx\n\n for (let index = 0; index < self.displayedRegions.length; index += 1) {\n const region = self.displayedRegions[index]\n const len = region.end - region.start\n const offset = bp - bpSoFar\n if (len + bpSoFar > bp && bpSoFar <= bp) {\n return {\n ...getSnapshot(region),\n oob: false,\n offset,\n coord: region.reversed\n ? Math.floor(region.end - offset) + 1\n : Math.floor(region.start + offset) + 1,\n index,\n }\n }\n\n // add the interRegionPaddingWidth if the boundary is in the screen\n // e.g. offset>0 && offset<width\n if (\n region.end - region.start > minimumBlockBp &&\n offset / self.bpPerPx > 0 &&\n offset / self.bpPerPx < self.width\n ) {\n bpSoFar += len + interRegionPaddingBp\n } else {\n bpSoFar += len\n }\n }\n\n if (bp >= bpSoFar) {\n const region = self.displayedRegions[n - 1]\n const len = region.end - region.start\n const offset = bp - bpSoFar + len\n return {\n ...getSnapshot(region),\n oob: true,\n offset,\n coord: region.reversed\n ? Math.floor(region.end - offset) + 1\n : Math.floor(region.start + offset) + 1,\n index: n - 1,\n }\n }\n return {\n coord: 0,\n index: 0,\n refName: '',\n oob: true,\n assemblyName: '',\n offset: 0,\n start: 0,\n end: 0,\n reversed: false,\n }\n },\n\n getTrack(id: string) {\n return self.tracks.find(t => t.configuration.trackId === id)\n },\n\n rankSearchResults(results: BaseResult[]) {\n // order of rank\n const openTrackIds = self.tracks.map(\n track => track.configuration.trackId,\n )\n results.forEach(result => {\n if (openTrackIds !== []) {\n if (openTrackIds.includes(result.trackId)) {\n result.updateScore(result.getScore() + 1)\n }\n }\n })\n return results\n },\n\n // modifies view menu action onClick to apply to all tracks of same type\n rewriteOnClicks(trackType: string, viewMenuActions: MenuItem[]) {\n viewMenuActions.forEach((action: MenuItem) => {\n // go to lowest level menu\n if ('subMenu' in action) {\n this.rewriteOnClicks(trackType, action.subMenu)\n }\n if ('onClick' in action) {\n const holdOnClick = action.onClick\n action.onClick = (...args: unknown[]) => {\n self.tracks.forEach(track => {\n if (track.type === trackType) {\n holdOnClick.apply(track, [track, ...args])\n }\n })\n }\n }\n })\n },\n\n get trackTypeActions() {\n const allActions: Map<string, MenuItem[]> = new Map()\n self.tracks.forEach(track => {\n const trackInMap = allActions.get(track.type)\n if (!trackInMap) {\n const viewMenuActions = clone(track.viewMenuActions)\n this.rewriteOnClicks(track.type, viewMenuActions)\n allActions.set(track.type, viewMenuActions)\n }\n })\n\n return allActions\n },\n\n get centerLineInfo() {\n return self.displayedRegions.length\n ? this.pxToBp(self.width / 2)\n : undefined\n },\n }))\n .actions(self => ({\n setShowCytobands(flag: boolean) {\n self.showCytobandsSetting = flag\n localStorage.setItem('lgv-showCytobands', `${+flag}`)\n },\n setWidth(newWidth: number) {\n self.volatileWidth = newWidth\n },\n setError(error: Error | undefined) {\n self.volatileError = error\n },\n\n toggleHeader() {\n self.hideHeader = !self.hideHeader\n },\n\n toggleHeaderOverview() {\n self.hideHeaderOverview = !self.hideHeaderOverview\n },\n\n scrollTo(offsetPx: number) {\n const newOffsetPx = clamp(offsetPx, self.minOffset, self.maxOffset)\n self.offsetPx = newOffsetPx\n return newOffsetPx\n },\n\n zoomTo(bpPerPx: number) {\n const newBpPerPx = clamp(bpPerPx, self.minBpPerPx, self.maxBpPerPx)\n if (newBpPerPx === self.bpPerPx) {\n return newBpPerPx\n }\n const oldBpPerPx = self.bpPerPx\n self.bpPerPx = newBpPerPx\n\n if (Math.abs(oldBpPerPx - newBpPerPx) < 0.000001) {\n console.warn('zoomTo bpPerPx rounding error')\n return oldBpPerPx\n }\n\n // tweak the offset so that the center of the view remains at the same coordinate\n const viewWidth = self.width\n this.scrollTo(\n Math.round(\n ((self.offsetPx + viewWidth / 2) * oldBpPerPx) / newBpPerPx -\n viewWidth / 2,\n ),\n )\n return newBpPerPx\n },\n\n setOffsets(left: undefined | BpOffset, right: undefined | BpOffset) {\n // sets offsets used in the get sequence dialog\n self.leftOffset = left\n self.rightOffset = right\n },\n\n setSearchResults(\n results: BaseResult[] | undefined,\n query: string | undefined,\n ) {\n self.searchResults = results\n self.searchQuery = query\n },\n\n setSequenceDialogOpen(open: boolean) {\n self.seqDialogDisplayed = open\n },\n\n setNewView(bpPerPx: number, offsetPx: number) {\n this.zoomTo(bpPerPx)\n this.scrollTo(offsetPx)\n },\n\n horizontallyFlip() {\n self.displayedRegions = cast(\n self.displayedRegions\n .slice()\n .reverse()\n .map(region => ({ ...region, reversed: !region.reversed })),\n )\n this.scrollTo(self.totalBp / self.bpPerPx - self.offsetPx - self.width)\n },\n\n showTrack(\n trackId: string,\n initialSnapshot = {},\n displayInitialSnapshot = {},\n ) {\n const trackConfigSchema =\n pluginManager.pluggableConfigSchemaType('track')\n const configuration = resolveIdentifier(\n trackConfigSchema,\n getRoot(self),\n trackId,\n )\n if (!configuration) {\n throw new Error(`Could not resolve identifier \"${trackId}\"`)\n }\n const trackType = pluginManager.getTrackType(configuration?.type)\n if (!trackType) {\n throw new Error(`Unknown track type ${configuration.type}`)\n }\n const viewType = pluginManager.getViewType(self.type)\n const supportedDisplays = viewType.displayTypes.map(\n displayType => displayType.name,\n )\n const displayConf = configuration.displays.find(\n (d: AnyConfigurationModel) => supportedDisplays.includes(d.type),\n )\n if (!displayConf) {\n throw new Error(\n `Could not find a compatible display for view type ${self.type}`,\n )\n }\n\n const shownTracks = self.tracks.filter(\n t => t.configuration === configuration,\n )\n if (shownTracks.length === 0) {\n const track = trackType.stateModel.create({\n ...initialSnapshot,\n type: configuration.type,\n configuration,\n displays: [\n {\n type: displayConf.type,\n configuration: displayConf,\n ...displayInitialSnapshot,\n },\n ],\n })\n self.tracks.push(track)\n return track\n }\n return shownTracks[0]\n },\n\n hideTrack(trackId: string) {\n const trackConfigSchema =\n pluginManager.pluggableConfigSchemaType('track')\n const configuration = resolveIdentifier(\n trackConfigSchema,\n getRoot(self),\n trackId,\n )\n // if we have any tracks with that configuration, turn them off\n const shownTracks = self.tracks.filter(\n t => t.configuration === configuration,\n )\n transaction(() => shownTracks.forEach(t => self.tracks.remove(t)))\n return shownTracks.length\n },\n }))\n .actions(self => ({\n moveTrack(movingTrackId: string, targetTrackId: string) {\n const oldIndex = self.tracks.findIndex(\n track => track.id === movingTrackId,\n )\n if (oldIndex === -1) {\n throw new Error(`Track ID ${movingTrackId} not found`)\n }\n const newIndex = self.tracks.findIndex(\n track => track.id === targetTrackId,\n )\n if (newIndex === -1) {\n throw new Error(`Track ID ${targetTrackId} not found`)\n }\n const track = getSnapshot(self.tracks[oldIndex])\n self.tracks.splice(oldIndex, 1)\n self.tracks.splice(newIndex, 0, track)\n },\n\n closeView() {\n const parent = getContainingView(self)\n if (parent) {\n // I am embedded in a some other view\n if (isViewContainer(parent)) {\n parent.removeView(self)\n }\n } else {\n // I am part of a session\n getSession(self).removeView(self)\n }\n },\n\n toggleTrack(trackId: string) {\n // if we have any tracks with that configuration, turn them off\n const hiddenCount = self.hideTrack(trackId)\n // if none had that configuration, turn one on\n if (!hiddenCount) {\n self.showTrack(trackId)\n }\n },\n\n setTrackLabels(setting: 'overlapping' | 'offset' | 'hidden') {\n self.trackLabels = setting\n localStorage.setItem('lgv-trackLabels', setting)\n },\n\n toggleCenterLine() {\n self.showCenterLine = !self.showCenterLine\n localStorage.setItem('lgv-showCenterLine', `${+self.showCenterLine}`)\n },\n\n setDisplayedRegions(regions: Region[]) {\n self.displayedRegions = cast(regions)\n self.zoomTo(self.bpPerPx)\n },\n\n activateTrackSelector() {\n if (self.trackSelectorType === 'hierarchical') {\n const session = getSession(self)\n if (isSessionModelWithWidgets(session)) {\n const selector = session.addWidget(\n 'HierarchicalTrackSelectorWidget',\n 'hierarchicalTrackSelector',\n { view: self },\n )\n session.showWidget(selector)\n return selector\n }\n }\n throw new Error(`invalid track selector type ${self.trackSelectorType}`)\n },\n\n navToLocString(locString: string, optAssemblyName?: string) {\n const { assemblyNames } = self\n const { assemblyManager } = getSession(self)\n const { isValidRefName } = assemblyManager\n const assemblyName = optAssemblyName || assemblyNames[0]\n\n const parsedLocStrings = locString\n .split(' ')\n .filter(f => !!f.trim())\n .map(l => parseLocString(l, ref => isValidRefName(ref, assemblyName)))\n\n const locations = parsedLocStrings.map(region => {\n const asmName = region.assemblyName || assemblyName\n const asm = assemblyManager.get(asmName)\n const { refName } = region\n if (!asm) {\n throw new Error(`assembly ${asmName} not found`)\n }\n const { regions } = asm\n if (!regions) {\n throw new Error(`regions not loaded yet for ${asmName}`)\n }\n const canonicalRefName = asm.getCanonicalRefName(region.refName)\n if (!canonicalRefName) {\n throw new Error(`Could not find refName ${refName} in ${asm.name}`)\n }\n const parentRegion = regions.find(\n region => region.refName === canonicalRefName,\n )\n if (!parentRegion) {\n throw new Error(`Could not find refName ${refName} in ${asmName}`)\n }\n\n return {\n ...region,\n assemblyName: asmName,\n parentRegion,\n }\n })\n\n if (locations.length === 1) {\n const loc = locations[0]\n this.setDisplayedRegions([\n { reversed: loc.reversed, ...loc.parentRegion },\n ])\n const { start, end, parentRegion } = loc\n\n this.navTo({\n ...loc,\n start: clamp(start ?? 0, 0, parentRegion.end),\n end: clamp(end ?? parentRegion.end, 0, parentRegion.end),\n })\n } else {\n this.setDisplayedRegions(\n // @ts-ignore\n locations.map(r => (r.start === undefined ? r.parentRegion : r)),\n )\n this.showAllRegions()\n }\n },\n\n /**\n * Navigate to a location based on its refName and optionally start, end,\n * and assemblyName. Can handle if there are multiple displayedRegions\n * from same refName. Only navigates to a location if it is entirely\n * within a displayedRegion. Navigates to the first matching location\n * encountered.\n *\n * Throws an error if navigation was unsuccessful\n *\n * @param location - a proposed location to navigate to\n */\n navTo(query: NavLocation) {\n this.navToMultiple([query])\n },\n\n navToMultiple(locations: NavLocation[]) {\n const firstLocation = locations[0]\n let { refName } = firstLocation\n const {\n start,\n end,\n assemblyName = self.assemblyNames[0],\n } = firstLocation\n\n if (start !== undefined && end !== undefined && start > end) {\n throw new Error(`start \"${start + 1}\" is greater than end \"${end}\"`)\n }\n const session = getSession(self)\n const { assemblyManager } = session\n const assembly = assemblyManager.get(assemblyName)\n if (assembly) {\n const canonicalRefName = assembly.getCanonicalRefName(refName)\n if (canonicalRefName) {\n refName = canonicalRefName\n }\n }\n let s = start\n let e = end\n let refNameMatched = false\n const predicate = (r: Region) => {\n if (refName === r.refName) {\n refNameMatched = true\n if (s === undefined) {\n s = r.start\n }\n if (e === undefined) {\n e = r.end\n }\n if (s >= r.start && s <= r.end && e <= r.end && e >= r.start) {\n return true\n }\n s = start\n e = end\n }\n return false\n }\n\n const lastIndex = findLastIndex(self.displayedRegions, predicate)\n let index\n while (index !== lastIndex) {\n try {\n const previousIndex: number | undefined = index\n index = self.displayedRegions\n .slice(previousIndex === undefined ? 0 : previousIndex + 1)\n .findIndex(predicate)\n if (previousIndex !== undefined) {\n index += previousIndex + 1\n }\n if (!refNameMatched) {\n throw new Error(\n `could not find a region with refName \"${refName}\"`,\n )\n }\n if (s === undefined) {\n throw new Error(\n `could not find a region with refName \"${refName}\" that contained an end position ${e}`,\n )\n }\n if (e === undefined) {\n throw new Error(\n `could not find a region with refName \"${refName}\" that contained a start position ${\n s + 1\n }`,\n )\n }\n if (index === -1) {\n throw new Error(\n `could not find a region that completely contained \"${assembleLocString(\n firstLocation,\n )}\"`,\n )\n }\n if (locations.length === 1) {\n const f = self.displayedRegions[index]\n this.moveTo(\n { index, offset: f.reversed ? f.end - e : s - f.start },\n { index, offset: f.reversed ? f.end - s : e - f.start },\n )\n return\n }\n let locationIndex = 0\n let locationStart = 0\n let locationEnd = 0\n for (\n locationIndex;\n locationIndex < locations.length;\n locationIndex++\n ) {\n const location = locations[locationIndex]\n const region = self.displayedRegions[index + locationIndex]\n locationStart = location.start || region.start\n locationEnd = location.end || region.end\n if (location.refName !== region.refName) {\n throw new Error(\n `Entered location ${assembleLocString(\n location,\n )} does not match with displayed regions`,\n )\n }\n }\n locationIndex -= 1\n const startDisplayedRegion = self.displayedRegions[index]\n const endDisplayedRegion =\n self.displayedRegions[index + locationIndex]\n this.moveTo(\n {\n index,\n offset: startDisplayedRegion.reversed\n ? startDisplayedRegion.end - e\n : s - startDisplayedRegion.start,\n },\n {\n index: index + locationIndex,\n offset: endDisplayedRegion.reversed\n ? endDisplayedRegion.end - locationStart\n : locationEnd - endDisplayedRegion.start,\n },\n )\n return\n } catch (error) {\n if (index === lastIndex) {\n throw error\n }\n }\n }\n },\n\n /**\n * Navigate to a location based on user clicking and dragging on the\n * overview scale bar to select a region to zoom into.\n * Can handle if there are multiple displayedRegions from same refName.\n * Only navigates to a location if it is entirely within a displayedRegion.\n *\n * @param leftPx- `object as {start, end, index, offset}`, offset = start of user drag\n * @param rightPx- `object as {start, end, index, offset}`, offset = end of user drag\n */\n zoomToDisplayedRegions(leftPx: BpOffset, rightPx: BpOffset) {\n if (leftPx === undefined || rightPx === undefined) {\n return\n }\n\n const singleRefSeq =\n leftPx.refName === rightPx.refName && leftPx.index === rightPx.index\n // zooming into one displayed Region\n if (\n (singleRefSeq && rightPx.offset < leftPx.offset) ||\n leftPx.index > rightPx.index\n ) {\n ;[leftPx, rightPx] = [rightPx, leftPx]\n }\n const startOffset = {\n start: leftPx.start,\n end: leftPx.end,\n index: leftPx.index,\n offset: leftPx.offset,\n }\n const endOffset = {\n start: rightPx.start,\n end: rightPx.end,\n index: rightPx.index,\n offset: rightPx.offset,\n }\n if (startOffset && endOffset) {\n this.moveTo(startOffset, endOffset)\n } else {\n const session = getSession(self)\n session.notify('No regions found to navigate to', 'warning')\n }\n },\n /**\n * Helper method for the fetchSequence.\n * Retrieves the corresponding regions that were selected by the rubberband\n *\n * @param leftOffset - `object as {start, end, index, offset}`, offset = start of user drag\n * @param rightOffset - `object as {start, end, index, offset}`, offset = end of user drag\n * @returns array of Region[]\n */\n getSelectedRegions(\n leftOffset: BpOffset | undefined,\n rightOffset: BpOffset | undefined,\n ) {\n const simView = Base1DView.create({\n ...getSnapshot(self),\n interRegionPaddingWidth: self.interRegionPaddingWidth,\n })\n\n simView.setVolatileWidth(self.width)\n simView.zoomToDisplayedRegions(leftOffset, rightOffset)\n\n return simView.dynamicBlocks.contentBlocks.map(region => {\n return {\n ...region,\n start: Math.floor(region.start),\n end: Math.ceil(region.end),\n }\n })\n },\n\n // schedule something to be run after the next time displayedRegions is set\n afterDisplayedRegionsSet(cb: Function) {\n self.afterDisplayedRegionsSetCallbacks.push(cb)\n },\n /**\n * offset is the base-pair-offset in the displayed region, index is the index of the\n * displayed region in the linear genome view\n *\n * @param start - object as `{start, end, offset, index}`\n * @param end - object as `{start, end, offset, index}`\n */\n moveTo(start: BpOffset, end: BpOffset) {\n // find locations in the modellist\n let bpSoFar = 0\n\n if (start.index === end.index) {\n bpSoFar += end.offset - start.offset\n } else {\n const s = self.displayedRegions[start.index]\n bpSoFar += s.end - s.start - start.offset\n if (end.index - start.index >= 2) {\n for (let i = start.index + 1; i < end.index; i += 1) {\n bpSoFar +=\n self.displayedRegions[i].end - self.displayedRegions[i].start\n }\n }\n bpSoFar += end.offset\n }\n const targetBpPerPx =\n bpSoFar /\n (self.width -\n self.interRegionPaddingWidth * (end.index - start.index))\n const newBpPerPx = self.zoomTo(targetBpPerPx)\n // If our target bpPerPx was smaller than the allowed minBpPerPx, adjust\n // the scroll so the requested range is in the middle of the screen\n let extraBp = 0\n if (targetBpPerPx < newBpPerPx) {\n extraBp = ((newBpPerPx - targetBpPerPx) * self.width) / 2\n }\n\n let bpToStart = -extraBp\n for (let i = 0; i < self.displayedRegions.length; i += 1) {\n const region = self.displayedRegions[i]\n if (start.index === i) {\n bpToStart += start.offset\n break\n } else {\n bpToStart += region.end - region.start\n }\n }\n self.scrollTo(\n Math.round(bpToStart / self.bpPerPx) +\n self.interRegionPaddingWidth * start.index,\n )\n },\n\n horizontalScroll(distance: number) {\n const oldOffsetPx = self.offsetPx\n // newOffsetPx is the actual offset after the scroll is clamped\n const newOffsetPx = self.scrollTo(self.offsetPx + distance)\n return newOffsetPx - oldOffsetPx\n },\n\n /**\n * scrolls the view to center on the given bp. if that is not in any\n * of the displayed regions, does nothing\n * @param bp - basepair at which you want to center the view\n * @param refName - refName of the displayedRegion you are centering at\n * @param regionIndex - index of the displayedRegion\n */\n centerAt(bp: number, refName: string, regionIndex: number) {\n const centerPx = self.bpToPx({\n refName,\n coord: bp,\n regionNumber: regionIndex,\n })\n if (centerPx) {\n self.scrollTo(Math.round(centerPx.offsetPx - self.width / 2))\n }\n },\n\n center() {\n const centerBp = self.totalBp / 2\n self.scrollTo(Math.round(centerBp / self.bpPerPx - self.width / 2))\n },\n\n showAllRegions() {\n self.zoomTo(self.maxBpPerPx)\n this.center()\n },\n\n showAllRegionsInAssembly(assemblyName?: string) {\n const session = getSession(self)\n const { assemblyManager } = session\n if (!assemblyName) {\n const assemblyNames = [\n ...new Set(\n self.displayedRegions.map(region => region.assemblyName),\n ),\n ]\n if (assemblyNames.length > 1) {\n session.notify(\n `Can't perform this with multiple assemblies currently`,\n )\n return\n }\n\n ;[assemblyName] = assemblyNames\n }\n const assembly = assemblyManager.get(assemblyName)\n if (assembly) {\n const { regions } = assembly\n if (regions) {\n this.setDisplayedRegions(regions)\n self.zoomTo(self.maxBpPerPx)\n this.center()\n }\n }\n },\n\n setDraggingTrackId(idx?: string) {\n self.draggingTrackId = idx\n },\n\n setScaleFactor(factor: number) {\n self.scaleFactor = factor\n },\n }))\n .actions(self => {\n let cancelLastAnimation = () => {}\n\n function slide(viewWidths: number) {\n const [animate, cancelAnimation] = springAnimate(\n self.offsetPx,\n self.offsetPx + self.width * viewWidths,\n self.scrollTo,\n )\n cancelLastAnimation()\n cancelLastAnimation = cancelAnimation\n animate()\n }\n\n return { slide }\n })\n .actions(self => {\n let cancelLastAnimation = () => {}\n\n function zoom(targetBpPerPx: number) {\n self.zoomTo(self.bpPerPx)\n if (\n // already zoomed all the way in\n (targetBpPerPx < self.bpPerPx && self.bpPerPx === self.minBpPerPx) ||\n // already zoomed all the way out\n (targetBpPerPx > self.bpPerPx && self.bpPerPx === self.maxBpPerPx)\n ) {\n return\n }\n const factor = self.bpPerPx / targetBpPerPx\n const [animate, cancelAnimation] = springAnimate(\n 1,\n factor,\n self.setScaleFactor,\n () => {\n self.zoomTo(targetBpPerPx)\n self.setScaleFactor(1)\n },\n )\n cancelLastAnimation()\n cancelLastAnimation = cancelAnimation\n animate()\n }\n\n return { zoom }\n })\n .views(self => ({\n get canShowCytobands() {\n return self.displayedRegions.length === 1 && this.anyCytobandsExist\n },\n get showCytobands() {\n return this.canShowCytobands && self.showCytobandsSetting\n },\n get anyCytobandsExist() {\n const { assemblyManager } = getSession(self)\n const { assemblyNames } = self\n return assemblyNames.some(\n asm => assemblyManager.get(asm)?.cytobands?.length,\n )\n },\n\n get cytobandOffset() {\n return this.showCytobands\n ? measureText(self.displayedRegions[0].refName, 12) + 15\n : 0\n },\n }))\n .views(self => ({\n menuItems(): MenuItem[] {\n const { canShowCytobands, showCytobands } = self\n\n const menuItems: MenuItem[] = [\n {\n label: 'Return to import form',\n onClick: () => {\n getSession(self).queueDialog(handleClose => [\n ReturnToImportFormDialog,\n { model: self, handleClose },\n ])\n },\n icon: FolderOpenIcon,\n },\n {\n label: 'Export SVG',\n icon: PhotoCameraIcon,\n onClick: () => {\n getSession(self).queueDialog(handleClose => [\n ExportSvgDlg,\n { model: self, handleClose },\n ])\n },\n },\n {\n label: 'Open track selector',\n onClick: self.activateTrackSelector,\n icon: TrackSelectorIcon,\n },\n {\n label: 'Horizontally flip',\n icon: SyncAltIcon,\n onClick: self.horizontallyFlip,\n },\n { type: 'divider' },\n {\n label: 'Show all regions in assembly',\n icon: VisibilityIcon,\n onClick: self.showAllRegionsInAssembly,\n },\n {\n label: 'Show center line',\n icon: VisibilityIcon,\n type: 'checkbox',\n checked: self.showCenterLine,\n onClick: self.toggleCenterLine,\n },\n {\n label: 'Show header',\n icon: VisibilityIcon,\n type: 'checkbox',\n checked: !self.hideHeader,\n onClick: self.toggleHeader,\n },\n {\n label: 'Show header overview',\n icon: VisibilityIcon,\n type: 'checkbox',\n checked: !self.hideHeaderOverview,\n onClick: self.toggleHeaderOverview,\n disabled: self.hideHeader,\n },\n {\n label: 'Track labels',\n icon: LabelIcon,\n subMenu: [\n {\n label: 'Overlapping',\n icon: VisibilityIcon,\n type: 'radio',\n checked: self.trackLabels === 'overlapping',\n onClick: () => self.setTrackLabels('overlapping'),\n },\n {\n label: 'Offset',\n icon: VisibilityIcon,\n type: 'radio',\n checked: self.trackLabels === 'offset',\n onClick: () => self.setTrackLabels('offset'),\n },\n {\n label: 'Hidden',\n icon: VisibilityIcon,\n type: 'radio',\n checked: self.trackLabels === 'hidden',\n onClick: () => self.setTrackLabels('hidden'),\n },\n ],\n },\n ...(canShowCytobands\n ? [\n {\n label: showCytobands ? 'Hide ideogram' : 'Show ideograms',\n onClick: () => {\n self.setShowCytobands(!showCytobands)\n },\n },\n ]\n : []),\n ]\n\n // add track's view level menu options\n for (const [key, value] of self.trackTypeActions.entries()) {\n if (value.length) {\n menuItems.push(\n { type: 'divider' },\n { type: 'subHeader', label: key },\n )\n value.forEach(action => {\n menuItems.push(action)\n })\n }\n }\n\n return menuItems\n },\n }))\n .views(self => {\n let currentlyCalculatedStaticBlocks: BlockSet | undefined\n let stringifiedCurrentlyCalculatedStaticBlocks = ''\n return {\n get staticBlocks() {\n const ret = calculateStaticBlocks(self)\n const sret = JSON.stringify(ret)\n if (stringifiedCurrentlyCalculatedStaticBlocks !== sret) {\n currentlyCalculatedStaticBlocks = ret\n stringifiedCurrentlyCalculatedStaticBlocks = sret\n }\n return currentlyCalculatedStaticBlocks as BlockSet\n },\n\n get dynamicBlocks() {\n return calculateDynamicBlocks(self)\n },\n\n get roundedDynamicBlocks() {\n return this.dynamicBlocks.contentBlocks.map(block => {\n return {\n ...block,\n start: Math.floor(block.start),\n end: Math.ceil(block.end),\n }\n })\n },\n get visibleLocStrings() {\n return calculateVisibleLocStrings(this.dynamicBlocks.contentBlocks)\n },\n get coarseVisibleLocStrings() {\n return calculateVisibleLocStrings(self.coarseDynamicBlocks)\n },\n }\n })\n .actions(self => ({\n // this \"clears the view\" and makes the view return to the import form\n clearView() {\n self.setDisplayedRegions([])\n self.tracks.clear()\n // it is necessary to run these after setting displayed regions empty\n // or else model.offsetPx gets set to Infinity and breaks\n // mobx-state-tree snapshot\n self.scrollTo(0)\n self.zoomTo(10)\n },\n setCoarseDynamicBlocks(blocks: BlockSet) {\n self.coarseDynamicBlocks = blocks.contentBlocks\n self.coarseTotalBp = blocks.totalBp\n },\n afterAttach() {\n addDisposer(\n self,\n autorun(\n () => {\n if (self.initialized) {\n this.setCoarseDynamicBlocks(self.dynamicBlocks)\n }\n },\n { delay: 150 },\n ),\n )\n },\n }))\n .actions(self => ({\n async exportSvg(opts: ExportSvgOptions = {}) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const html = await renderToSvg(self as any, opts)\n const blob = new Blob([html], { type: 'image/svg+xml' })\n saveAs(blob, 'image.svg')\n },\n }))\n .views(self => ({\n rubberBandMenuItems(): MenuItem[] {\n return [\n {\n label: 'Zoom to region',\n icon: ZoomInIcon,\n onClick: () => {\n const { leftOffset, rightOffset } = self\n if (leftOffset && rightOffset) {\n self.moveTo(leftOffset, rightOffset)\n }\n },\n },\n {\n label: 'Get sequence',\n icon: MenuOpenIcon,\n onClick: () => {\n self.setSequenceDialogOpen(true)\n },\n },\n ]\n },\n }))\n}\n\nexport { renderToSvg, RefNameAutocomplete, SearchBox }\nexport type LinearGenomeViewStateModel = ReturnType<typeof stateModelFactory>\nexport type LinearGenomeViewModel = Instance<LinearGenomeViewStateModel>\nexport { default as ReactComponent } from './components/LinearGenomeView'\n","import { lazy } from 'react'\nimport { ConfigurationReference, getConf } from '@jbrowse/core/configuration'\nimport { getSession } from '@jbrowse/core/util'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport VisibilityIcon from '@material-ui/icons/Visibility'\nimport { types, getEnv, Instance } from 'mobx-state-tree'\nimport { AnyConfigurationSchemaType } from '@jbrowse/core/configuration/configurationSchema'\nimport { BaseLinearDisplay } from '../BaseLinearDisplay'\n\nconst SetMaxHeightDlg = lazy(() => import('./components/SetMaxHeight'))\n\nconst stateModelFactory = (configSchema: AnyConfigurationSchemaType) =>\n types\n .compose(\n 'LinearBasicDisplay',\n BaseLinearDisplay,\n types.model({\n type: types.literal('LinearBasicDisplay'),\n trackShowLabels: types.maybe(types.boolean),\n trackShowDescriptions: types.maybe(types.boolean),\n trackDisplayMode: types.maybe(types.string),\n trackMaxHeight: types.maybe(types.number),\n configuration: ConfigurationReference(configSchema),\n }),\n )\n .views(self => ({\n get rendererTypeName() {\n return getConf(self, ['renderer', 'type'])\n },\n\n get showLabels() {\n const showLabels = getConf(self, ['renderer', 'showLabels'])\n return self.trackShowLabels !== undefined\n ? self.trackShowLabels\n : showLabels\n },\n\n get showDescriptions() {\n const showDescriptions = getConf(self, ['renderer', 'showLabels'])\n return self.trackShowDescriptions !== undefined\n ? self.trackShowDescriptions\n : showDescriptions\n },\n\n get maxHeight() {\n const maxHeight = getConf(self, ['renderer', 'maxHeight'])\n return self.trackMaxHeight !== undefined\n ? self.trackMaxHeight\n : maxHeight\n },\n\n get displayMode() {\n const displayMode = getConf(self, ['renderer', 'displayMode'])\n return self.trackDisplayMode !== undefined\n ? self.trackDisplayMode\n : displayMode\n },\n get rendererConfig() {\n const configBlob = getConf(self, ['renderer']) || {}\n\n return self.rendererType.configSchema.create(\n {\n ...configBlob,\n showLabels: this.showLabels,\n showDescriptions: this.showDescriptions,\n displayMode: this.displayMode,\n maxHeight: this.maxHeight,\n },\n getEnv(self),\n )\n },\n }))\n\n .actions(self => ({\n toggleShowLabels() {\n self.trackShowLabels = !self.showLabels\n },\n toggleShowDescriptions() {\n self.trackShowDescriptions = !self.showDescriptions\n },\n setDisplayMode(val: string) {\n self.trackDisplayMode = val\n },\n setMaxHeight(val: number) {\n self.trackMaxHeight = val\n },\n }))\n .views(self => {\n const {\n trackMenuItems: superTrackMenuItems,\n renderProps: superRenderProps,\n } = self\n return {\n renderProps() {\n const config = self.rendererConfig\n\n return {\n ...superRenderProps(),\n config,\n }\n },\n\n trackMenuItems(): MenuItem[] {\n return [\n ...superTrackMenuItems(),\n {\n label: 'Show labels',\n icon: VisibilityIcon,\n type: 'checkbox',\n checked: self.showLabels,\n onClick: () => {\n self.toggleShowLabels()\n },\n },\n {\n label: 'Show descriptions',\n icon: VisibilityIcon,\n type: 'checkbox',\n checked: self.showDescriptions,\n onClick: () => {\n self.toggleShowDescriptions()\n },\n },\n {\n label: 'Display mode',\n icon: VisibilityIcon,\n subMenu: [\n 'compact',\n 'reducedRepresentation',\n 'normal',\n 'collapse',\n ].map(val => ({\n label: val,\n onClick: () => {\n self.setDisplayMode(val)\n },\n })),\n },\n {\n label: 'Set max height',\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n SetMaxHeightDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n ]\n },\n }\n })\n\nexport type FeatureTrackStateModel = ReturnType<typeof stateModelFactory>\nexport type FeatureTrackModel = Instance<FeatureTrackStateModel>\n\nexport default stateModelFactory\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { baseLinearDisplayConfigSchema } from '../BaseLinearDisplay'\n\nexport default function configSchemaFactory(pluginManager: PluginManager) {\n return ConfigurationSchema(\n 'LinearBasicDisplay',\n {\n mouseover: {\n type: 'string',\n description: 'what to display in a given mouseover',\n defaultValue: `jexl:get(feature,'name')`,\n\n contextVariable: ['feature'],\n },\n renderer: pluginManager.pluggableConfigSchemaType('renderer'),\n },\n { baseConfiguration: baseLinearDisplayConfigSchema, explicitlyTyped: true },\n )\n}\n","import { lazy } from 'react'\nimport { when } from 'mobx'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport {\n createBaseTrackConfig,\n createBaseTrackModel,\n} from '@jbrowse/core/pluggableElementTypes/models'\nimport TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport ViewType from '@jbrowse/core/pluggableElementTypes/ViewType'\nimport Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { AbstractSessionModel, isAbstractMenuManager } from '@jbrowse/core/util'\nimport LineStyleIcon from '@material-ui/icons/LineStyle'\nimport {\n BaseLinearDisplay,\n BaseLinearDisplayComponent,\n baseLinearDisplayConfigSchema,\n BlockModel,\n} from './BaseLinearDisplay'\nimport {\n configSchemaFactory as linearBareDisplayConfigSchemaFactory,\n stateModelFactory as LinearBareDisplayStateModelFactory,\n} from './LinearBareDisplay'\nimport {\n LinearGenomeViewModel,\n LinearGenomeViewStateModel,\n stateModelFactory as linearGenomeViewStateModelFactory,\n renderToSvg,\n RefNameAutocomplete,\n SearchBox,\n} from './LinearGenomeView'\n\nimport {\n configSchema as linearBasicDisplayConfigSchemaFactory,\n modelFactory as linearBasicDisplayModelFactory,\n} from './LinearBasicDisplay'\n\ntype LGV = LinearGenomeViewModel\n\nexport default class LinearGenomeViewPlugin extends Plugin {\n name = 'LinearGenomeViewPlugin'\n\n exports = {\n BaseLinearDisplayComponent,\n BaseLinearDisplay,\n baseLinearDisplayConfigSchema,\n }\n\n install(pluginManager: PluginManager) {\n pluginManager.addTrackType(() => {\n const configSchema = ConfigurationSchema(\n 'FeatureTrack',\n {},\n {\n baseConfiguration: createBaseTrackConfig(pluginManager),\n explicitIdentifier: 'trackId',\n },\n )\n return new TrackType({\n name: 'FeatureTrack',\n configSchema,\n stateModel: createBaseTrackModel(\n pluginManager,\n 'FeatureTrack',\n configSchema,\n ),\n })\n })\n\n pluginManager.addTrackType(() => {\n const configSchema = ConfigurationSchema(\n 'BasicTrack',\n {},\n {\n baseConfiguration: createBaseTrackConfig(pluginManager),\n explicitIdentifier: 'trackId',\n },\n )\n return new TrackType({\n name: 'BasicTrack',\n configSchema,\n stateModel: createBaseTrackModel(\n pluginManager,\n 'BasicTrack',\n configSchema,\n ),\n })\n })\n\n pluginManager.addDisplayType(() => {\n const configSchema = linearBareDisplayConfigSchemaFactory(pluginManager)\n return new DisplayType({\n name: 'LinearBareDisplay',\n configSchema,\n stateModel: LinearBareDisplayStateModelFactory(configSchema),\n trackType: 'BasicTrack',\n viewType: 'LinearGenomeView',\n ReactComponent: BaseLinearDisplayComponent,\n })\n })\n\n pluginManager.addDisplayType(() => {\n const configSchema = linearBasicDisplayConfigSchemaFactory(pluginManager)\n return new DisplayType({\n name: 'LinearBasicDisplay',\n configSchema,\n stateModel: linearBasicDisplayModelFactory(configSchema),\n trackType: 'FeatureTrack',\n viewType: 'LinearGenomeView',\n ReactComponent: BaseLinearDisplayComponent,\n })\n })\n\n pluginManager.addViewType(\n () =>\n new ViewType({\n name: 'LinearGenomeView',\n stateModel: linearGenomeViewStateModelFactory(pluginManager),\n ReactComponent: lazy(\n () => import('./LinearGenomeView/components/LinearGenomeView'),\n ),\n }),\n )\n\n pluginManager.addToExtensionPoint(\n 'LaunchView-LinearGenomeView',\n // @ts-ignore\n async ({\n session,\n assembly,\n loc,\n tracks = [],\n }: {\n session: AbstractSessionModel\n assembly?: string\n loc: string\n tracks?: string[]\n }) => {\n const { assemblyManager } = session\n const view = session.addView('LinearGenomeView', {}) as LGV\n\n await when(() => !!view.volatileWidth)\n\n if (!assembly) {\n throw new Error(\n 'No assembly provided when launching linear genome view',\n )\n }\n\n const asm = await assemblyManager.waitForAssembly(assembly)\n if (!asm) {\n throw new Error(\n `Assembly \"${assembly}\" not found when launching linear genome view`,\n )\n }\n\n view.navToLocString(loc, assembly)\n\n const idsNotFound = [] as string[]\n tracks.forEach(track => {\n try {\n view.showTrack(track)\n } catch (e) {\n if (`${e}`.match('Could not resolve identifier')) {\n idsNotFound.push(track)\n } else {\n throw e\n }\n }\n })\n if (idsNotFound.length) {\n throw new Error(\n `Could not resolve identifiers: ${idsNotFound.join(',')}`,\n )\n }\n },\n )\n }\n\n configure(pluginManager: PluginManager) {\n if (isAbstractMenuManager(pluginManager.rootModel)) {\n pluginManager.rootModel.appendToSubMenu(['Add'], {\n label: 'Linear genome view',\n icon: LineStyleIcon,\n onClick: (session: AbstractSessionModel) => {\n session.addView('LinearGenomeView', {})\n },\n })\n }\n }\n}\n\nexport {\n baseLinearDisplayConfigSchema,\n linearBareDisplayConfigSchemaFactory,\n linearBasicDisplayConfigSchemaFactory,\n linearBasicDisplayModelFactory,\n renderToSvg,\n BaseLinearDisplayComponent,\n BaseLinearDisplay,\n RefNameAutocomplete,\n SearchBox,\n}\n\nexport type { LinearGenomeViewModel, LinearGenomeViewStateModel, BlockModel }\n\nexport type { BaseLinearDisplayModel } from './BaseLinearDisplay'\n","import React from 'react'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n makeStyles,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\nexport const useStyles = makeStyles(theme => ({\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}))\n\nexport default function HelpDialog({\n handleClose,\n}: {\n handleClose: () => void\n}) {\n const classes = useStyles()\n return (\n <Dialog open maxWidth=\"xl\" onClose={handleClose}>\n <DialogTitle>\n Using the search box\n {handleClose ? (\n <IconButton\n data-testid=\"close-resultsDialog\"\n className={classes.closeButton}\n onClick={() => {\n handleClose()\n }}\n >\n <CloseIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n <Divider />\n <DialogContent>\n <h3>Searching</h3>\n <ul>\n <li>\n Jump to a feature or reference sequence by typing its name in the\n location box and pressing Enter.\n </li>\n <li>\n Jump to a specific region by typing the region into the location box\n as: <code>ref:start..end</code> or <code>ref:start-end</code>.\n Commas are allowed in the start and end coordinates. A\n space-separated list of locstrings can be used to open up multiple\n chromosomes at a time\n </li>\n </ul>\n <h3>Example Searches</h3>\n <ul>\n <li>\n <code>BRCA</code> - searches for the feature named BRCA\n </li>\n <li>\n <code>chr4</code> - jumps to chromosome 4\n </li>\n <li>\n <code>chr4:79,500,000..80,000,000</code> - jumps the region on\n chromosome 4 between 79.5Mb and 80Mb.\n </li>\n <li>\n <code>chr1:1-100 chr2:1-100</code> - create a split view of\n chr1:1-100 and chr2:1-100\n </li>\n <li>\n <code>chr1 chr2 chr3</code> - open up multiple chromosomes at once\n </li>\n <li>\n <code>chr1:1-100[rev] chr2:1-100</code> - open up the first region\n in the horizontally flipped orientation\n </li>\n </ul>\n </DialogContent>\n <Divider />\n <DialogActions>\n <Button onClick={() => handleClose()} color=\"primary\">\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n TextField,\n makeStyles,\n} from '@material-ui/core'\n\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: 500,\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n field: {\n margin: theme.spacing(2),\n },\n}))\n\nfunction SetMaxHeightDlg(props: {\n model: {\n maxHeight?: number\n setMaxHeight: Function\n }\n handleClose: () => void\n}) {\n const { model, handleClose } = props\n const classes = useStyles()\n const { maxHeight = '' } = model\n const [max, setMax] = useState(`${maxHeight}`)\n\n return (\n <Dialog\n open\n onClose={handleClose}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n <DialogTitle id=\"alert-dialog-title\">\n Filter options\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={handleClose}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent className={classes.root}>\n <Typography>\n Set max height for the track. For example, you can increase this if\n the layout says \"Max height reached\"\n </Typography>\n <TextField\n value={max}\n onChange={event => setMax(event.target.value)}\n placeholder=\"Enter max score\"\n />\n <DialogActions>\n <Button\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n autoFocus\n onClick={() => {\n model.setMaxHeight(\n max !== '' && !Number.isNaN(+max) ? +max : undefined,\n )\n handleClose()\n }}\n >\n Submit\n </Button>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => handleClose()}\n >\n Cancel\n </Button>\n </DialogActions>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(SetMaxHeightDlg)\n"],"names":["runtime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","key","value","defineProperty","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","type","call","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","Promise","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","globalThis","Function","baseLinearDisplayConfigSchema","ConfigurationSchema","maxFeatureScreenDensity","description","defaultValue","fetchSizeLimit","explicitIdentifier","useStyles","makeStyles","theme","contentBlock","position","minHeight","boxSizing","whiteSpace","overflow","elidedBlock","backgroundColor","backgroundImage","interRegionPaddingBlock","palette","text","primary","boundaryPaddingBlock","action","disabledBackground","ContentBlock","observer","block","children","classes","widthPx","React","style","width","className","ElidedBlock","InterRegionPaddingBlock","boundary","linearBlocks","textAlign","display","heightOverflowed","color","borderBottom","textShadow","fontWeight","zIndex","RenderedBlocks","model","blockDefinitions","blockState","map","get","ContentBlockComponent","id","ReactComponent","maxHeightReached","top","layout","getTotalHeight","pointerEvents","height","ElidedBlockComponent","InterRegionPaddingBlockComponent","background","variant","LinearBlocks","viewModel","getContainingView","left","offsetPx","round","Math","tooltip","alpha","grey","borderRadius","shape","common","white","fontFamily","typography","padding","fontSize","pxToRem","lineHeight","maxWidth","wordWrap","TooltipContents","forwardRef","ref","message","Tooltip","clientMouseCoord","featureUnderMouse","useState","setWidth","popperElt","setPopperElt","virtElement","useMemo","getBoundingClientRect","x","y","bottom","right","toJSON","usePopper","styles","attributes","contents","getConf","feature","Portal","popper","elt","BaseLinearDisplay","props","useTheme","useRef","clientRect","setClientRect","offsetMouseCoord","setOffsetMouseCoord","setClientMouseCoord","contextCoord","setContextCoord","TooltipComponent","DisplayMessageComponent","contextMenuItems","setContextMenuFeature","onContextMenu","event","preventDefault","current","clientX","clientY","onMouseMove","rect","mouseCoord","Menu","open","Boolean","onMenuItemClick","_","callback","onClose","TransitionProps","onExit","anchorReference","anchorPosition","menuItems","loading","paddingLeft","blockMessage","spacing","blockError","main","overflowY","blockReactNodeMessage","dots","animation","content","Repeater","LoadingMessage","shown","setShown","useEffect","killed","timeout","setTimeout","clearTimeout","blockStatus","status","getParent","displayStatus","Typography","BlockMessage","messageContent","isValidElement","BlockError","reload","displayHeight","Button","onClick","startIcon","RefreshIcon","ServerSideRenderedBlockContent","getParentRenderProps","displayModel","filled","reactElement","types","string","region","Region","reloadFlag","isLeftEndOfDisplayedRegion","isRightEndOfDisplayedRegion","renderInProgress","features","renderProps","actions","doReload","afterAttach","getContainingDisplay","makeAbortableReaction","renderBlockData","renderBlockEffect","assembleLocString","delay","renderDelay","fireImmediately","setLoading","setRendered","setError","setStatus","abortController","signal","aborted","abort","setMessage","messageText","console","isRetryException","beforeDestroy","getSession","rpcManager","rendererType","cast","renderArgs","freeResourcesInClient","JSON","parse","stringify","e","warn","optDisplay","assemblyManager","adapterConfig","parentTrack","assemblyNames","getTrackAssemblyNames","regionAsm","assemblyName","includes","find","hasName","config","readConfObject","sessionId","getRpcSessionId","cannotBeRenderedReason","regionCannotBeRendered","displayError","statusCallback","isAlive","regions","blockKey","notReady","renderInClient","getId","index","isJest","jest","getDisplayStr","totalBytes","displayBp","floor","parseFloat","toPrecision","minDisplayHeight","defaultDisplayHeight","compose","BaseDisplay","optional","refinement","number","n","BlockState","userBpPerPxLimit","maybe","userByteSizeLimit","currBpPerPx","featureIdUnderMouse","contextMenuFeature","scrollTop","estimatedRegionStatsP","estimatedRegionStats","views","blockType","view","initialized","selectedFeatureId","selection","isFeature","featureMaps","CompositeMap","feat","getFeatureOverlapping","getByCoord","getFeatureByID","getByID","searchFeatureByID","ret","val","currentBytesRequested","bytes","currentFeatureScreenDensity","featureDensity","bpPerPx","estimatedStatsReady","maxAllowableBytes","blockWatchDisposer","autorun","blocksPresent","contentBlocks","has","addBlock","deleteBlock","addDisposer","estimateRegionsStats","opts","params","setRegionStatsP","p","setRegionStats","clearRegionStats","setHeight","resizeHeight","distance","oldHeight","newHeight","setScrollTop","updateStatsLimit","stats","set","toRegion","setCurrBpPerPx","selectFeature","session","isSessionModelWithWidgets","featureWidget","addWidget","featureData","showWidget","isSelectionContainer","setSelection","clearFeatureSelection","clearSelection","setFeatureIdUnderMouse","regionTooLarge","dynamicBlocks","totalBp","bpLimitOrDensity","regionTooLargeReason","req","max","superReload","aborter","AbortController","staticBlocks","statsP","isAbortException","regionCannotBeRenderedText","_region","component","trackMenuItems","label","icon","MenuOpenIcon","rpcDriverName","onFeatureClick","featureId","f","onFeatureContextMenu","onMouseLeave","renderSvg","overrideHeight","viewOffsetPx","roundedDynamicBlocks","all","fill","exportSVG","renderings","rendering","offset","clipid","Fragment","transform","clipPath","dangerouslySetInnerHTML","__html","html","postProcessSnapshot","rest","configSchemaFactory","pluginManager","renderer","pluggableConfigSchemaType","baseConfiguration","explicitlyTyped","stateModelFactory","configSchema","literal","configuration","ConfigurationReference","superRenderProps","rendererTypeName","chooseGridPitch","scale","minMajorPitchPx","minMinorPitchPx","abs","minMajorPitchBp","majorMagnitude","parseInt","Number","toExponential","split","majorPitch","majorPitchPx","minorPitch","makeTicks","start","end","emitMajor","emitMinor","gridPitch","minBase","maxBase","iterPitch","ticks","base","ceil","mathPower","num","String","substr","majorTickLabel","majorTick","stroke","minorTick","Ruler","reversed","major","minor","tick","x1","x2","y1","y2","strokeWidth","filter","propTypes","ReactPropTypes","isRequired","bool","defaultProps","tertiary","rubberBand","rubberBandControl","cursor","rubberBandText","contrastText","popover","mouseEvents","paper","paddingRight","guide","HoverTooltip","guideX","overview","cytobandOffset","px","pxToBp","assembly","cytoband","cytobands","coord","refName","getCanonicalRefName","placement","title","join","arrow","OverviewRubberBand","ControlComponent","startX","setStartX","currentX","setCurrentX","setGuideX","controlsRef","rubberBandRef","mouseDragging","globalMouseMove","relativeX","globalMouseUp","zoomToDisplayedRegions","clickedAt","centerAt","globalKeyDown","window","addEventListener","removeEventListener","mouseDown","stopPropagation","mouseMove","mouseOut","role","onMouseDown","onMouseOut","leftBpOffset","rightBpOffset","Popover","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","keepMounted","disableRestoreFocus","HEADER_OVERVIEW_HEIGHT","MobxPropTypes","objectOrObservableObject","node","wholeSeqSpacer","scaleBar","scaleBarBorder","border","scaleBarContig","scaleBarContigForward","backgroundRepeat","scaleBarContigReverse","scaleBarRefName","scaleBarLabel","justifyContent","scaleBarVisibleRegion","HEADER_BAR_HEIGHT","overviewSvg","Polygon","useOffset","multiplier","interRegionPaddingWidth","totalWidthPxWithoutBorders","polygonColor","light","first","last","topLeft","bpToPx","topRight","startPx","endPx","points","toString","rightRoundedRect","radius","leftRoundedRect","colorMap","gneg","gpos25","gpos50","gpos100","gpos75","gvar","stalk","acen","Cytobands","arr","lcap","rcap","firstCent","d","min","OverviewBox","showCytobands","refNameColor","getRefNameColor","tickLabels","offsetLabel","clsx","borderColor","tickLabel","labelIdx","toLocaleString","ScaleBar","visibleRegions","overviewVisibleRegions","scaleBarColor","firstOverviewPx","lastOverviewPx","transparency","idx","OverviewScaleBar","displayedRegions","Base1DView","minimumBlockWidth","modWidth","setVolatileWidth","showAllRegions","totalWidthPx","getBpDisplayStr","x0","textAnchor","SVGRuler","renderRuler","offsetLeft","rulerHeight","textHeight","paddingHeight","headerHeight","cytobandHeightIfExists","totalHeight","tracks","reduce","accum","track","displays","SVGHeader","cytobandHeight","SVGRegionSeparators","SVGTracks","displayResults","trackName","trackId","renderToSvg","when","shift","ready","renderToStaticMarkup","xmlns","xmlnsXlink","viewBox","dedupe","results","cb","findIndex","t","HelpDialog","lazy","filterOptions","options","searchQuery","option","getLabel","toLowerCase","matchedObject","MyPopper","Popper","minWidth","RefNameAutocomplete","showHelp","onSelect","fetchResults","TextFieldProps","setOpen","loaded","setLoaded","isHelpDialogDisplayed","setHelpDialogDisplayed","currentSearch","setCurrentSearch","inputValue","setInputValue","searchOptions","setSearchOptions","debouncedSearch","useDebounce","coarseVisibleLocStrings","hasDisplayedRegions","RefSequenceResult","matchedAttribute","active","r","getDisplayString","notify","inputBoxVal","measureText","Autocomplete","disableListWrap","disableClearable","PopperComponent","disabled","freeSolo","includeInputInList","selectOnFocus","onInputChange","newInputValue","loadingText","onOpen","onChange","_event","selectedOption","BaseResult","getOptionDisabled","group","filtered","toLocaleLowerCase","renderInput","helperText","InputProps","TextField","onBlur","endAdornment","CircularProgress","size","InputAdornment","marginRight","SearchIcon","IconButton","HelpIcon","placeholder","target","renderOption","getRenderingComponent","noWrap","getOptionLabel","Suspense","fallback","handleClose","headerRefName","SearchBox","textSearchManager","rankSearchResults","searchScope","query","searchType","search","queryString","textSearchResults","refNameResults","allRefNames","startsWith","handleSelectedRegion","getTrackId","location","getLocation","navToLocString","setSearchResults","showTrack","margin","SPACING","WIDGET_HEIGHT","closeButton","ExportSvgDlg","offscreenCanvas","OffscreenCanvas","rasterizeLayers","setRasterizeLayers","Dialog","DialogTitle","CloseIcon","DialogContent","FormControlLabel","control","Checkbox","checked","DialogActions","exportSvg","container","flexDirection","alignItems","slider","ZoomControls","maxBpPerPx","minBpPerPx","scaleFactor","log2","setValue","zoom","ZoomOut","Slider","onChangeCommitted","zoomTo","ZoomIn","headerBar","headerForm","flexWrap","spacer","flexGrow","panButton","bp","marginLeft","toggleButton","buttonSpacer","HeaderButtons","activateTrackSelector","TrackSelectorIcon","PanControls","slide","ArrowBackIcon","ArrowForwardIcon","RegionWidth","coarseTotalBp","Controls","FormGroup","row","LinearGenomeViewHeader","hideHeaderOverview","root","transition","transitions","duration","shortest","dragHandle","dragHandleIcon","verticalAlign","iconButton","TrackLabel","setAnchorEl","trackConf","handleClick","currentTarget","onDragStart","parentNode","dataTransfer","setDragImage","setDraggingTrackId","onDragEnd","assemblies","sequence","handleMenuItemClick","items","getTrackActionMenuItems","sort","a","b","priority","Paper","draggable","DragIcon","hideTrack","MoreVertIcon","marginTop","resizeHandle","RESIZE_HANDLE_HEIGHT","overlay","trackLabel","renderingComponentContainer","trackLabelInline","trackLabelOverlap","trackRenderingContainer","overflowX","TrackContainerLabel","labelStyle","trackLabels","TrackContainer","horizontalScroll","draggingTrackId","moveTrack","trackRefs","onDragEnter","debouncedOnDragEnter","useDebouncedCallback","RenderingComponent","DisplayBlurb","dimmed","onScroll","onHorizontalScroll","ResizeHandle","onDrag","VerticalGuide","coordX","RubberBand","setAnchorPosition","setOffsets","computeOffsets","offsetX","leftPx","rightPx","leftOffset","rightOffset","numOfBpSelected","rubberBandMenuItems","scaleBarContainer","scaleBarZoomContainer","refLabel","RenderedRefNameLabels","lastLeftBlock","RenderedScaleBarLabels","baseNumber","other","verticalGuidesZoomContainer","verticalGuidesContainer","hint","divider","RenderedVerticalGuides","VerticalGuides","centerLineContainer","borderTop","centerLineText","CenterLine","centerLineInfo","trackHeights","startingPosition","tracksContainer","TracksContainer","delta","scheduled","prevX","setMouseDragging","cleanup","currX","requestAnimationFrame","dataset","resizer","button","mouseUp","mouseLeave","curr","onWheel","origEvent","normalizeWheel","ctrlKey","pixelY","setScaleFactor","pixelX","onMouseUp","showCenterLine","SCALE_BAR_HEIGHT","SearchResultsDialog","importFormContainer","ImportForm","isSearchDialogDisplayed","modelError","selectedAsm","setSelectedAsm","assemblyError","myOption","setOption","selectedRegion","input","ErrorMessage","Container","onSubmit","Grid","item","AssemblySelector","selected","disableShrink","showAllRegionsInAssembly","optAssemblyName","MiniControls","ArrowDown","loadingMessage","dialogContent","textAreaFont","fetchSequence","chunks","chunk","SequenceDialog","setSequence","regionsSelected","getSelectedRegions","controller","formatSeqFasta","chunkSeq","chunkRefName","chunkStart","chunkEnd","chunkLocstring","header","seq","sequenceTooLarge","Divider","multiline","rows","fullWidth","readOnly","copy","ContentCopyIcon","seqFastaFile","Blob","saveAs","GetAppIcon","autoFocus","getEnv","assemblyRegions","newRegion","setDisplayedRegions","getTrackName","trackConfigSchema","resolveIdentifier","getRoot","searchResults","TableContainer","Table","TableHead","TableRow","TableCell","align","TableBody","scope","resultTrackId","note","paddingTop","paddingBottom","LinearGenomeView","hideHeader","seqDialogDisplayed","setSequenceDialogOpen","Header","calculateVisibleLocStrings","isSingleAssemblyName","every","INTER_REGION_PADDING_WIDTH","localStorageGetItem","localStorage","getItem","BaseViewModel","ElementId","array","MUIRegion","pluggableMstType","trackSelectorType","enumeration","setting","showCytobandsSetting","volatileWidth","volatileError","afterDisplayedRegionsSetCallbacks","coarseDynamicBlocks","assemblyErrors","assembliesInitialized","scaleBarHeight","trackHeightsWithResizeHandles","maxOffset","leftPadding","displayedRegionsTotalPx","minOffset","rightPadding","highResolutionScaling","Set","includeAggregateIndexes","regionNumber","viewBpToPx","bpSoFar","getSnapshot","oob","interRegionPaddingBp","minimumBlockBp","len","getTrack","openTrackIds","updateScore","getScore","rewriteOnClicks","trackType","viewMenuActions","subMenu","holdOnClick","args","apply","trackTypeActions","allActions","Map","trackInMap","clone","setShowCytobands","flag","setItem","newWidth","toggleHeader","toggleHeaderOverview","scrollTo","newOffsetPx","clamp","newBpPerPx","oldBpPerPx","viewWidth","setNewView","horizontallyFlip","initialSnapshot","displayInitialSnapshot","getTrackType","viewType","getViewType","supportedDisplays","displayTypes","displayType","displayConf","shownTracks","stateModel","transaction","remove","movingTrackId","targetTrackId","oldIndex","newIndex","splice","closeView","parent","isViewContainer","removeView","toggleTrack","hiddenCount","setTrackLabels","toggleCenterLine","selector","locString","isValidRefName","parsedLocStrings","trim","l","parseLocString","locations","asmName","asm","canonicalRefName","parentRegion","navTo","navToMultiple","firstLocation","s","refNameMatched","predicate","lastIndex","findLastIndex","previousIndex","moveTo","locationIndex","locationStart","locationEnd","startDisplayedRegion","endDisplayedRegion","singleRefSeq","startOffset","endOffset","simView","afterDisplayedRegionsSet","targetBpPerPx","extraBp","bpToStart","oldOffsetPx","regionIndex","centerPx","center","centerBp","factor","cancelLastAnimation","viewWidths","springAnimate","animate","cancelAnimation","canShowCytobands","anyCytobandsExist","some","queueDialog","ReturnToImportFormDialog","FolderOpenIcon","PhotoCameraIcon","SyncAltIcon","VisibilityIcon","LabelIcon","entries","currentlyCalculatedStaticBlocks","stringifiedCurrentlyCalculatedStaticBlocks","calculateStaticBlocks","sret","calculateDynamicBlocks","visibleLocStrings","clearView","clear","setCoarseDynamicBlocks","blocks","blob","ZoomInIcon","SetMaxHeightDlg","trackShowLabels","trackShowDescriptions","trackDisplayMode","trackMaxHeight","showLabels","showDescriptions","maxHeight","displayMode","rendererConfig","configBlob","toggleShowLabels","toggleShowDescriptions","setDisplayMode","setMaxHeight","superTrackMenuItems","doneCallback","mouseover","contextVariable","LinearGenomeViewPlugin","BaseLinearDisplayComponent","addTrackType","createBaseTrackConfig","TrackType","createBaseTrackModel","addDisplayType","linearBareDisplayConfigSchemaFactory","DisplayType","LinearBareDisplayStateModelFactory","linearBasicDisplayConfigSchemaFactory","linearBasicDisplayModelFactory","addViewType","ViewType","linearGenomeViewStateModelFactory","addToExtensionPoint","addView","waitForAssembly","idsNotFound","match","isAbstractMenuManager","rootModel","appendToSubMenu","LineStyleIcon","Plugin","field","setMax"],"mappings":"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"}