@rnacanvas/paste-interface 5.0.0 → 6.0.0

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.
package/dist/App.d.ts CHANGED
@@ -24,11 +24,15 @@ export interface App {
24
24
  setPadding(padding: number): void;
25
25
  reset(): void;
26
26
  };
27
- drawDotBracket(sequence: string, dotBracket: string): void | never;
28
27
  /**
29
- * Draws the structure in the provided CT string.
28
+ * Draws whatever is specified by the text
29
+ * (e.g., a structure in dot-bracket notation,
30
+ * a structure in CT format,
31
+ * a saved app state).
32
+ *
33
+ * May throw for invalid text inputs.
30
34
  */
31
- drawCT(ct: string): void | never;
35
+ draw(text: string): void | never;
32
36
  undo(): void;
33
37
  readonly undoStack: {
34
38
  /**
package/dist/App.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAEhC,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd;;WAEG;QACH,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG;YAC9B;;;eAGG;YACH,MAAM,CAAC,OAAO,EAAE;gBAAE,UAAU,EAAE,MAAM,CAAA;aAAE,GAAG,OAAO,CAAC;SAClD,CAAC;QAEF,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAElC,KAAK,IAAI,IAAI,CAAC;KACf,CAAA;IAED,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;IAEnE;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;IAEjC,IAAI,IAAI,IAAI,CAAC;IAEb,QAAQ,CAAC,SAAS,EAAE;QAClB;;WAEG;QACH,IAAI,IAAI,IAAI,CAAC;KACd,CAAC;IAEF;;;;OAIG;IACH,OAAO,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;IAE9C;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE;QACb,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;KAC3B,CAAA;CACF"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAEhC,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd;;WAEG;QACH,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG;YAC9B;;;eAGG;YACH,MAAM,CAAC,OAAO,EAAE;gBAAE,UAAU,EAAE,MAAM,CAAA;aAAE,GAAG,OAAO,CAAC;SAClD,CAAC;QAEF,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAElC,KAAK,IAAI,IAAI,CAAC;KACf,CAAA;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;IAEjC,IAAI,IAAI,IAAI,CAAC;IAEb,QAAQ,CAAC,SAAS,EAAE;QAClB;;WAEG;QACH,IAAI,IAAI,IAAI,CAAC;KACd,CAAC;IAEF;;;;OAIG;IACH,OAAO,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;IAE9C;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE;QACb,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;KAC3B,CAAA;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextPasteHandler.d.ts","sourceRoot":"","sources":["../src/TextPasteHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAcjC,qBAAa,gBAAgB;;gBAOf,SAAS,EAAE,GAAG;IAQ1B,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,KAAK;CAuB5C"}
1
+ {"version":3,"file":"TextPasteHandler.d.ts","sourceRoot":"","sources":["../src/TextPasteHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAQjC,qBAAa,gBAAgB;;gBAGf,SAAS,EAAE,GAAG;IAI1B,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,KAAK;CA0C5C"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.pasteInterface=t():e.pasteInterface=t()}(this,()=>(()=>{var e={645(e){var t;t=()=>(()=>{var e={986(e){e.exports=(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function r(e){var t=0;return e.forEach(function(e){return t+=e}),t}function n(e){return r(e)/e.length}function i(e){e.sort(function(e,t){return e-t})}e.r(t),e.d(t,{areWithin:()=>d,average:()=>n,clamp:()=>f,degrees:()=>m,flipAway:()=>b,isBetween:()=>h,isBetweenExclusive:()=>u,isBetweenInclusive:()=>h,max:()=>c,mean:()=>n,median:()=>s,min:()=>l,normalizeAngle:()=>g,radians:()=>y,round:()=>v,sortNumbers:()=>i,sortNumbersAscending:()=>i,sortNumbersDescending:()=>p,sortedNumbers:()=>a,sortedNumbersAscending:()=>a,sortedNumbersDescending:()=>w,sum:()=>r});var o=function(e,t,r){if(r||2===arguments.length)for(var n,i=0,o=t.length;i<o;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))};function a(e){var t=o([],e,!0);return i(t),t}function s(e){if(0==e.length)return NaN;var t=a(e);if(t.length%2!=0)return t[Math.floor(t.length/2)];var r=t.length/2,i=r-1;return n([t[r],t[i]])}function l(e){if(0==e.length)return 1/0;var t=e[0];return e.slice(1).forEach(function(e){t=Math.min(t,e)}),t}function c(e){if(0==e.length)return-1/0;var t=e[0];return e.slice(1).forEach(function(e){t=Math.max(t,e)}),t}function h(e,t,r){return e>=t&&e<=r}function u(e,t,r){return e>t&&e<r}function f(e,t,r){return e<t?t:e>r?r:e}function d(e,t,r){return Math.abs(e-t)<=r}function p(e){i(e),e.reverse()}function w(e){var t=a(e);return t.reverse(),t}function v(e,t){return Number.parseFloat(e.toFixed(null!=t?t:0))}function m(e){return e*(180/Math.PI)}function y(e){return e*(Math.PI/180)}function g(e,t){void 0===t&&(t=-Math.PI);var r=e-t;return t+((r%=2*Math.PI)>=0?r:r+2*Math.PI)}function b(e,t){var r=(t=g(t,e))-e;return(r<Math.PI/2||r>3*Math.PI/2)&&(e+=Math.PI),e}return t})()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{Box:()=>t});var e=r(986);class t{static matching(e){let{x:r,y:n,width:i,height:o}=e;return new t(r,n,i,o)}static bounding(r){let n=[...r];if(0==n.length)throw new Error("An empty collection of boxes doesn't have a bounding box.");let i=n.map(e=>t.matching(e)),o=(0,e.min)(i.map(e=>e.left)),a=(0,e.min)(i.map(e=>e.top)),s=(0,e.max)(i.map(e=>e.right))-o,l=(0,e.max)(i.map(e=>e.bottom))-a;return new t(o,a,s,l)}constructor(e,t,r,n){this.x=e,this.y=t,this.width=r,this.height=n}get centerX(){return this.minX+this.width/2}get centerY(){return this.minY+this.height/2}get minX(){return this.x}get minY(){return this.y}get maxX(){return this.minX+this.width}get maxY(){return this.minY+this.height}get top(){return this.minY}get right(){return this.maxX}get bottom(){return this.maxY}get left(){return this.minX}bounds(e){let r=t.matching(e);return this.minX<=r.minX&&this.minY<=r.minY&&this.maxX>=r.maxX&&this.maxY>=r.maxY}padded(...e){let r="number"==typeof e[0]?e[0]:"factor"in e[0]?e[0].factor*this.width:e[0].percentage/100*this.width,n="number"==typeof e[0]&&"number"==typeof e[1]?e[1]:"number"==typeof e[0]?e[0]:"factor"in e[0]?e[0].factor*this.height:e[0].percentage/100*this.height;return new t(this.x-r,this.y-n,this.width+2*r,this.height+2*n)}get periphery(){return{atAngle:e=>{let t=this.width/2,r=this.height/2,n=Math.pow(Math.pow(t,2)+Math.pow(r,2),.5),i=this.centerX+n*Math.cos(e),o=this.centerY+n*Math.sin(e),a=n;return Math.abs(this.centerX-i)>t&&(a=Math.abs(t/Math.cos(e)),a=Number.isFinite(a)?a:r),Math.abs(this.centerY-o)>r&&(a=Math.abs(r/Math.sin(e)),a=Number.isFinite(a)?a:t),{x:this.centerX+a*Math.cos(e),y:this.centerY+a*Math.sin(e)}}}}}})(),n})(),e.exports=t()},297(e){var t;t=()=>(()=>{var e={106(e){var t;t=()=>(()=>{var e={992:function(e){var t;t=()=>(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{KeyBinding:()=>p});var r,n,i,o,a,s,l,c,h,u,f=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},d=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class p{constructor(e,t,s){r.add(this),this.key=e,n.set(this,void 0),i.set(this,void 0),o.set(this,void 0),a.set(this,void 0),f(this,n,t,"f"),f(this,i,e=>d(this,r,"m",u).call(this,e),"f"),f(this,o,s,"f")}get owner(){return d(this,a,"f")}set owner(e){var t;null===(t=d(this,a,"f"))||void 0===t||t.removeEventListener("keydown",d(this,i,"f")),null==e||e.addEventListener("keydown",d(this,i,"f"),{passive:!1}),f(this,a,e,"f")}}return n=new WeakMap,i=new WeakMap,o=new WeakMap,a=new WeakMap,r=new WeakSet,s=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.altKey)&&void 0!==t&&t},l=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.ctrlKey)&&void 0!==t&&t},c=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.metaKey)&&void 0!==t&&t},h=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.shiftKey)&&void 0!==t&&t},u=function(e){this.owner&&this.owner===document.activeElement&&e.key.toUpperCase()===this.key.toUpperCase()&&e.altKey===d(this,r,"a",s)&&e.ctrlKey===d(this,r,"a",l)&&e.metaKey===d(this,r,"a",c)&&e.shiftKey===d(this,r,"a",h)&&(e.preventDefault(),d(this,n,"f").call(this))},t})(),e.exports=t()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";function e(e){if(e.length>0)return e[0];throw new Error("Array is empty.")}function t(e){if(e.length>0)return e[e.length-1];throw new Error("Array is empty.")}function i(e){if(e.length<3)throw new Error("Array has less than 3 items.");if(e.length%2==0)throw new Error("Array has an even number of items.");let t=Math.floor(e.length/2);return[e[t-1],e[t],e[t+1]]}function o(e){if(e.length<4)throw new Error("Array has less than 4 items.");if(e.length%2!=0)throw new Error("Array has an odd number of items.");let t=Math.floor(e.length/2);return[e[t-2],e[t-1],e[t],e[t+1]]}function a(e){return e.split(/\r\n|\r|\n/)}function s(e){try{return JSON.stringify(e),!0}catch(e){return!1}}function l(e){return e.map(e=>({v:e,priority:Math.random()})).sort((e,t)=>e.priority-t.priority).map(({v:e})=>e)}function c(e){return e===document.activeElement}function h(e){return!!document.activeElement&&e.contains(document.activeElement)}r.r(n),r.d(n,{DownloadableFile:()=>m,EventfulSet:()=>y,FiniteStack:()=>T,KeyBinding:()=>u.KeyBinding,containsFocus:()=>h,detectMacOS:()=>d,detectWindows:()=>f,first:()=>e,hasFocus:()=>c,isJSONSerializable:()=>s,isURL:()=>P,last:()=>t,middleFour:()=>o,middleThree:()=>i,shuffled:()=>l,splitLines:()=>a});var u=r(992);function f(){return-1!==navigator.userAgent.indexOf("Windows")}function d(){try{return window.navigator.platform.toLowerCase().includes("mac")}catch(e){return!1}}var p,w=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},v=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class m{constructor(e,t,r){p.set(this,void 0),this.name=null!=e?e:"Unnamed.txt",this.content=null!=t?t:"",w(this,p,null==r?void 0:r.type,"f")}get type(){return null!=v(this,p,"f")?v(this,p,"f"):this.content instanceof Blob?this.content.type:"text/plain"}set type(e){w(this,p,e,"f")}download(){let e=new File([this.content],this.name,{type:this.type}),t=URL.createObjectURL(e),r=document.createElement("a");r.href=t,r.download=e.name,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(t)}}p=new WeakMap;class y{constructor(){this.eventListeners={change:[]},this.underlyingSet=new Set}[Symbol.iterator](){return this.underlyingSet.values()}includes(e){return this.underlyingSet.has(e)}include(e){return this.includes(e)}addAll(e){let t=[...e];0!=t.length&&(t.every(e=>this.includes(e))||(t.forEach(e=>this.underlyingSet.add(e)),this.callEventListeners("change")))}removeAll(e){let t=[...e];0!=t.length&&(t.every(e=>!this.includes(e))||(t.forEach(e=>this.underlyingSet.delete(e)),this.callEventListeners("change")))}clear(){0!=this.underlyingSet.size&&(this.underlyingSet.clear(),this.callEventListeners("change"))}addEventListener(e,t){this.eventListeners[e].push(t)}callEventListeners(e){this.eventListeners[e].forEach(e=>e())}removeEventListener(e,t){this.eventListeners[e]=this.eventListeners[e].filter(e=>e!==t)}}var g,b,E,S,x=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class T{constructor(e){g.add(this),this.maxSize=e,b.set(this,[]),E.set(this,{change:[]})}get size(){return x(this,b,"f").length}isEmpty(){return 0==this.size}empty(){0!=this.size&&(function(e,t){if("function"==typeof t||!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");t.set(e,[])}(this,b),x(this,g,"m",S).call(this,"change"))}peek(){if(0==this.size)throw new Error("The stack is empty.");return x(this,b,"f")[x(this,b,"f").length-1]}push(e){x(this,b,"f").push(e),this.size>this.maxSize&&x(this,b,"f").shift(),x(this,g,"m",S).call(this,"change")}pop(){if(0==this.size)throw new Error("The stack is empty.");let e=x(this,b,"f").pop();return x(this,g,"m",S).call(this,"change"),e}addEventListener(e,t){x(this,E,"f")[e].push(t)}removeEventListener(e,t){x(this,E,"f")[e]=x(this,E,"f")[e].filter(e=>e!==t)}}function P(e){try{return new URL(e),!0}catch(e){return!1}}b=new WeakMap,E=new WeakMap,g=new WeakSet,S=function(e){x(this,E,"f")[e].forEach(e=>e())}})(),n})(),e.exports=t()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{isCT:()=>f,parseCT:()=>t});var e=r(106);function t(t){let r=function(e){let t=e.findIndex(e=>!i(e)&&!o(e));if(t<0)throw new Error("Unable to find the start of the structure.");let r=[...e].reverse().findIndex(e=>!i(e)&&!o(e));if(r<0)throw new Error("Unable to find the end of the structure.");return r=e.length-r-1,e.slice(t,r+1)}((0,e.splitLines)(t));return{description:a(r),sequence:s(r),positionPairs:l(r),numberingOffset:c(r)}}function i(e){return 0==e.trim().length}function o(e){return"#"==e.trim().charAt(0)}function a(e){if(0==e.length)return;let t=e[0],r=h(t);if(r.length<2)return;let n=r[0];return t.slice(t.indexOf(n)+n.length).trim()}function s(e){return e.slice(1).map(e=>{let t=h(e);if(t.length<2)throw new Error("Line is missing a character.");return t[1]}).join("")}function l(e){let t=e.slice(1),r=[];return t.forEach((e,t)=>{let n=t+1,i=h(e);if(i.length>=5){let e=Number.parseFloat(i[4]);if(Number.isNaN(e))throw new Error("Partner positions must be numbers.");if(!Number.isInteger(e))throw new Error("Partner positions must be integers.");0!=e&&n<=e&&r.push([n,e])}}),r}function c(e){if(e.length<2)return 0;let t=h(e[1]);if(t.length<6)return 0;let r=Number.parseFloat(t[5]);return Number.isNaN(r)?0:Number.isInteger(r)?r-1:0}function h(e){return function(e){return e.split(/\s/)}(e).filter(u)}function u(e){return e.length>0}function f(r){let n;try{n=t(r)}catch(e){return!1}if(0==n.sequence.length)return!1;let i=(0,e.splitLines)(r);if(i=i.filter(t=>!function(e){return 0==e.length}(t)&&!function(e){return 0==e.trim().length}(t)&&!function(t){return!((0,e.splitLines)(t).length>1)&&"#"==t.trim().charAt(0)}(t)),0==i.length)return!1;let o=(0,e.first)(i),a=Number.parseFloat(o.trim().split(/\s+/)[0]);if(!Number.isInteger(a))return!1;let s=i.slice(1);return 0!=s.length&&s.every(e=>{let t=e.trim().split(/\s+/);if(t.length<5)return!1;let r=Number.parseFloat(t[4]);return Number.isInteger(r)})}})(),n})(),e.exports=t()},852(e){var t;t=()=>(()=>{var e={106(e){var t;t=()=>(()=>{var e={992:function(e){var t;t=()=>(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{KeyBinding:()=>p});var r,n,i,o,a,s,l,c,h,u,f=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},d=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class p{constructor(e,t,s){r.add(this),this.key=e,n.set(this,void 0),i.set(this,void 0),o.set(this,void 0),a.set(this,void 0),f(this,n,t,"f"),f(this,i,e=>d(this,r,"m",u).call(this,e),"f"),f(this,o,s,"f")}get owner(){return d(this,a,"f")}set owner(e){var t;null===(t=d(this,a,"f"))||void 0===t||t.removeEventListener("keydown",d(this,i,"f")),null==e||e.addEventListener("keydown",d(this,i,"f"),{passive:!1}),f(this,a,e,"f")}}return n=new WeakMap,i=new WeakMap,o=new WeakMap,a=new WeakMap,r=new WeakSet,s=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.altKey)&&void 0!==t&&t},l=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.ctrlKey)&&void 0!==t&&t},c=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.metaKey)&&void 0!==t&&t},h=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.shiftKey)&&void 0!==t&&t},u=function(e){this.owner&&this.owner===document.activeElement&&e.key.toUpperCase()===this.key.toUpperCase()&&e.altKey===d(this,r,"a",s)&&e.ctrlKey===d(this,r,"a",l)&&e.metaKey===d(this,r,"a",c)&&e.shiftKey===d(this,r,"a",h)&&(e.preventDefault(),d(this,n,"f").call(this))},t})(),e.exports=t()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";function e(e){if(e.length>0)return e[0];throw new Error("Array is empty.")}function t(e){if(e.length>0)return e[e.length-1];throw new Error("Array is empty.")}function i(e){if(e.length<3)throw new Error("Array has less than 3 items.");if(e.length%2==0)throw new Error("Array has an even number of items.");let t=Math.floor(e.length/2);return[e[t-1],e[t],e[t+1]]}function o(e){if(e.length<4)throw new Error("Array has less than 4 items.");if(e.length%2!=0)throw new Error("Array has an odd number of items.");let t=Math.floor(e.length/2);return[e[t-2],e[t-1],e[t],e[t+1]]}function a(e){return e.split(/\r\n|\r|\n/)}function s(e){try{return JSON.stringify(e),!0}catch(e){return!1}}function l(e){return e.map(e=>({v:e,priority:Math.random()})).sort((e,t)=>e.priority-t.priority).map(({v:e})=>e)}function c(e){return e===document.activeElement}function h(e){return!!document.activeElement&&e.contains(document.activeElement)}r.r(n),r.d(n,{DownloadableFile:()=>m,EventfulSet:()=>y,FiniteStack:()=>T,KeyBinding:()=>u.KeyBinding,containsFocus:()=>h,detectMacOS:()=>d,detectWindows:()=>f,first:()=>e,hasFocus:()=>c,isJSONSerializable:()=>s,isURL:()=>P,last:()=>t,middleFour:()=>o,middleThree:()=>i,shuffled:()=>l,splitLines:()=>a});var u=r(992);function f(){return-1!==navigator.userAgent.indexOf("Windows")}function d(){try{return window.navigator.platform.toLowerCase().includes("mac")}catch(e){return!1}}var p,w=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},v=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class m{constructor(e,t,r){p.set(this,void 0),this.name=null!=e?e:"Unnamed.txt",this.content=null!=t?t:"",w(this,p,null==r?void 0:r.type,"f")}get type(){return null!=v(this,p,"f")?v(this,p,"f"):this.content instanceof Blob?this.content.type:"text/plain"}set type(e){w(this,p,e,"f")}download(){let e=new File([this.content],this.name,{type:this.type}),t=URL.createObjectURL(e),r=document.createElement("a");r.href=t,r.download=e.name,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(t)}}p=new WeakMap;class y{constructor(){this.eventListeners={change:[]},this.underlyingSet=new Set}[Symbol.iterator](){return this.underlyingSet.values()}includes(e){return this.underlyingSet.has(e)}include(e){return this.includes(e)}addAll(e){let t=[...e];0!=t.length&&(t.every(e=>this.includes(e))||(t.forEach(e=>this.underlyingSet.add(e)),this.callEventListeners("change")))}removeAll(e){let t=[...e];0!=t.length&&(t.every(e=>!this.includes(e))||(t.forEach(e=>this.underlyingSet.delete(e)),this.callEventListeners("change")))}clear(){0!=this.underlyingSet.size&&(this.underlyingSet.clear(),this.callEventListeners("change"))}addEventListener(e,t){this.eventListeners[e].push(t)}callEventListeners(e){this.eventListeners[e].forEach(e=>e())}removeEventListener(e,t){this.eventListeners[e]=this.eventListeners[e].filter(e=>e!==t)}}var g,b,E,S,x=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class T{constructor(e){g.add(this),this.maxSize=e,b.set(this,[]),E.set(this,{change:[]})}get size(){return x(this,b,"f").length}isEmpty(){return 0==this.size}empty(){0!=this.size&&(function(e,t){if("function"==typeof t||!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");t.set(e,[])}(this,b),x(this,g,"m",S).call(this,"change"))}peek(){if(0==this.size)throw new Error("The stack is empty.");return x(this,b,"f")[x(this,b,"f").length-1]}push(e){x(this,b,"f").push(e),this.size>this.maxSize&&x(this,b,"f").shift(),x(this,g,"m",S).call(this,"change")}pop(){if(0==this.size)throw new Error("The stack is empty.");let e=x(this,b,"f").pop();return x(this,g,"m",S).call(this,"change"),e}addEventListener(e,t){x(this,E,"f")[e].push(t)}removeEventListener(e,t){x(this,E,"f")[e]=x(this,E,"f")[e].filter(e=>e!==t)}}function P(e){try{return new URL(e),!0}catch(e){return!1}}b=new WeakMap,E=new WeakMap,g=new WeakSet,S=function(e){x(this,E,"f")[e].forEach(e=>e())}})(),n})(),e.exports=t()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{isDotBracketFASTA:()=>i,parseDotBracketFASTA:()=>t});var e=r(106);function t(t){let r=(0,e.splitLines)(t);if(r=r.filter(e=>e.trim().length>0),0==r.length)throw new Error("Dot-bracket FASTA string has no content.");let n=r[0],i=">"==n.charAt(0)?n.substring(1):void 0;i=null==i?void 0:i.trim();let o=">"!=n.charAt(0)?n:r.length<2?"":r[1],a=r.length<2?"":">"!=n.charAt(0)?r[1]:r.length<3?"":r[2];return a=a.split(/\s+/)[0],{name:i,sequence:o,dotBracket:a}}function i(e){let r;try{r=t(e)}catch(e){return!1}return null!=r.name||r.dotBracket.length>0&&[...r.dotBracket].every(e=>o.has(e))}const o=new Set([...".()[]{}<>"])})(),n})(),e.exports=t()},854(e){e.exports=(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function r(e){return"number"==typeof e}function n(e){return r(e)&&Number.isFinite(e)}function i(e){return r(e)&&!Number.isFinite(e)}function o(e){return n(e)&&e>0}function a(e){return n(e)&&e>=0}function s(e){return"string"==typeof e}function l(e){if(!s(e))return!1;try{return JSON.parse(e),!0}catch{return!1}}function c(e){try{return JSON.stringify(e),!0}catch{return!1}}function h(e){return null==e}function u(e){return"object"==typeof e&&null!==e}function f(e){return Array.isArray(e)}function d(e){return f(e)&&0==e.length}function p(e){return f(e)&&e.length>0}function w(e){return f(e)&&e.every(r)}function v(e){return w(e)&&e.length>0}function m(e){return f(e)&&e.every(n)}function y(e){return f(e)&&e.every(i)}function g(e){return f(e)&&e.every(s)}function b(e){return g(e)&&e.length>0}return e.r(t),e.d(t,{isArray:()=>f,isEmptyArray:()=>d,isFiniteNumber:()=>n,isFiniteNumbersArray:()=>m,isJSON:()=>l,isJSONSerializable:()=>c,isNonEmptyArray:()=>p,isNonEmptyNumbersArray:()=>v,isNonEmptyStringsArray:()=>b,isNonFiniteNumber:()=>i,isNonFiniteNumbersArray:()=>y,isNonNegativeFiniteNumber:()=>a,isNonNullObject:()=>u,isNullish:()=>h,isNumber:()=>r,isNumbersArray:()=>w,isPositiveFiniteNumber:()=>o,isString:()=>s,isStringsArray:()=>g}),t})()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{PasteHandler:()=>N});var e=r(854);function t(t){return(0,e.isNonNullObject)(t)&&(0,e.isNonNullObject)(t.drawing)&&"svg"in t.drawing}var i,o=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class a{constructor(e){i.set(this,void 0),function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===n?i.call(e,r):i?i.value=r:t.set(e,r)}(this,i,e,"f")}handle(r){var n;let a=null===(n=r.clipboardData)||void 0===n?void 0:n.getData("text");if(!a)throw new Error("Paste event text content is falsy.");if(!(0,e.isJSON)(a))throw new Error(`Paste event text content is not in JSON format: ${a}.`);o(this,i,"f").undoStack.push();try{let e=JSON.parse(a);o(this,i,"f").restore(e),!t(e)||(o(this,i,"f").drawing.domNode.style.backgroundColor="white"),o(this,i,"f").drawing.domNode.style.userSelect="none",o(this,i,"f").drawing.domNode.style.webkitUserSelect="none",o(this,i,"f").drawing.domNode.style.cursor="default",o(this,i,"f").deselect(),o(this,i,"f").view.fitTo(o(this,i,"f").drawing.contentBBox.padded({percentage:10}))}catch(e){throw console.error(e),o(this,i,"f").undo(),new Error(`Unable to restore saved app state: ${a}.`)}}}i=new WeakMap;var s=r(852);function l(e){return!!e}var c,h=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class u{constructor(e){c.set(this,void 0),function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===n?i.call(e,r):i?i.value=r:t.set(e,r)}(this,c,e,"f")}handle(e){var t;let r=null===(t=e.clipboardData)||void 0===t?void 0:t.getData("text");if(!r)throw new Error("Paste event text content is falsy.");if(!(0,s.isDotBracketFASTA)(r))throw new Error(`Paste event text content is not in dot-bracket FASTA format: ${r}.`);h(this,c,"f").undoStack.push();try{let e=(0,s.parseDotBracketFASTA)(r);h(this,c,"f").drawDotBracket(e.sequence,e.dotBracket),e.name&&(h(this,c,"f").drawing.name=[h(this,c,"f").drawing.name,e.name].filter(l).join(", ")),h(this,c,"f").drawing.setPadding(1e3),h(this,c,"f").view.fitTo(h(this,c,"f").drawing.contentBBox.padded({percentage:10}))}catch(e){throw console.error(e),h(this,c,"f").undo(),new Error(`Unable to draw dot-bracket FASTA: ${r}.`)}}}c=new WeakMap;var f,d=r(297),p=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class w{constructor(e){f.set(this,void 0),function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===n?i.call(e,r):i?i.value=r:t.set(e,r)}(this,f,e,"f")}handle(e){var t;let r=null===(t=e.clipboardData)||void 0===t?void 0:t.getData("text");if(!r)throw new Error("Paste event text content is falsy.");if(!(0,d.isCT)(r))throw new Error(`Paste event text content is not in CT format: ${r}.`);p(this,f,"f").undoStack.push();try{let e=(0,d.parseCT)(r);p(this,f,"f").drawCT(r),e.description&&(p(this,f,"f").drawing.name=[p(this,f,"f").drawing.name,e.description].filter(l).join(", ")),p(this,f,"f").drawing.setPadding(1e3),p(this,f,"f").view.fitTo(p(this,f,"f").drawing.contentBBox.padded({percentage:10}))}catch(e){throw console.error(e),p(this,f,"f").undo(),new Error(`Unable to draw CT: ${r}.`)}}}f=new WeakMap;var v,m,y,g=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},b=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class E{constructor(e){v.set(this,void 0),m.set(this,void 0),y.set(this,void 0),g(this,v,new a(e),"f"),g(this,m,new u(e),"f"),g(this,y,new w(e),"f")}handle(t){var r;let n=null===(r=t.clipboardData)||void 0===r?void 0:r.getData("text");if(!n)throw new Error("Paste event text content is falsy.");try{if((0,e.isJSON)(n))b(this,v,"f").handle(t);else if((0,s.isDotBracketFASTA)(n))b(this,m,"f").handle(t);else{if(!(0,d.isCT)(n))throw new Error(`Unrecognized text format: ${n}.`);b(this,y,"f").handle(t)}}catch(e){throw console.error(e),new Error(`Error processing pasted text: ${t}.`)}}}v=new WeakMap,m=new WeakMap,y=new WeakMap;var S,x=r(645),T=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class P{constructor(e){S.set(this,void 0),function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===n?i.call(e,r):i?i.value=r:t.set(e,r)}(this,S,e,"f")}handle(e){return r=this,n=void 0,o=function*(){var r;let n=null===(r=e.clipboardData)||void 0===r?void 0:r.items;if(!n)return;let i=[...n].filter(e=>"file"===e.kind).map(e=>e.getAsFile());if(0==i.length)return;let o=i[0];if(o&&o.name.toLowerCase().endsWith(".rnacanvas")){e.preventDefault(),e.stopPropagation(),T(this,S,"f").undoStack.push();try{let e=JSON.parse(yield o.text());T(this,S,"f").restore(e),!t(e)||(T(this,S,"f").drawing.domNode.style.backgroundColor="white"),T(this,S,"f").drawing.domNode.style.userSelect="none",T(this,S,"f").drawing.domNode.style.webkitUserSelect="none",T(this,S,"f").drawing.domNode.style.cursor="default",T(this,S,"f").deselect(),T(this,S,"f").view.fitTo(x.Box.matching(T(this,S,"f").drawing.contentBBox).padded({percentage:10}))}catch(e){console.error(e),console.error("Unable to open saved drawing."),T(this,S,"f").undo()}}},new((i=void 0)||(i=Promise))(function(e,t){function a(e){try{l(o.next(e))}catch(e){t(e)}}function s(e){try{l(o.throw(e))}catch(e){t(e)}}function l(t){var r;t.done?e(t.value):(r=t.value,r instanceof i?r:new i(function(e){e(r)})).then(a,s)}l((o=o.apply(r,n||[])).next())});var r,n,i,o}}S=new WeakMap;var j,M,O=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},k=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class N{constructor(e){j.set(this,void 0),M.set(this,void 0),O(this,j,new E(e),"f"),O(this,M,new P(e),"f")}handle(e){return t=this,r=void 0,i=function*(){var t,r,n;try{(null===(t=e.clipboardData)||void 0===t?void 0:t.getData("text"))?k(this,j,"f").handle(e):(null===(n=null===(r=e.clipboardData)||void 0===r?void 0:r.files)||void 0===n?void 0:n.length)&&(yield k(this,M,"f").handle(e))}catch(t){console.error(t),console.error(`Error handling paste event: ${e}.`)}},new((n=void 0)||(n=Promise))(function(e,o){function a(e){try{l(i.next(e))}catch(e){o(e)}}function s(e){try{l(i.throw(e))}catch(e){o(e)}}function l(t){var r;t.done?e(t.value):(r=t.value,r instanceof n?r:new n(function(e){e(r)})).then(a,s)}l((i=i.apply(t,r||[])).next())});var t,r,n,i}}j=new WeakMap,M=new WeakMap})(),n})());
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.pasteInterface=t():e.pasteInterface=t()}(this,()=>(()=>{var e={645(e){var t;t=()=>(()=>{var e={986(e){e.exports=(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function r(e){var t=0;return e.forEach(function(e){return t+=e}),t}function n(e){return r(e)/e.length}function i(e){e.sort(function(e,t){return e-t})}e.r(t),e.d(t,{areWithin:()=>d,average:()=>n,clamp:()=>f,degrees:()=>v,flipAway:()=>b,isBetween:()=>c,isBetweenExclusive:()=>h,isBetweenInclusive:()=>c,max:()=>l,mean:()=>n,median:()=>a,min:()=>u,normalizeAngle:()=>g,radians:()=>w,round:()=>m,sortNumbers:()=>i,sortNumbersAscending:()=>i,sortNumbersDescending:()=>p,sortedNumbers:()=>s,sortedNumbersAscending:()=>s,sortedNumbersDescending:()=>y,sum:()=>r});var o=function(e,t,r){if(r||2===arguments.length)for(var n,i=0,o=t.length;i<o;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))};function s(e){var t=o([],e,!0);return i(t),t}function a(e){if(0==e.length)return NaN;var t=s(e);if(t.length%2!=0)return t[Math.floor(t.length/2)];var r=t.length/2,i=r-1;return n([t[r],t[i]])}function u(e){if(0==e.length)return 1/0;var t=e[0];return e.slice(1).forEach(function(e){t=Math.min(t,e)}),t}function l(e){if(0==e.length)return-1/0;var t=e[0];return e.slice(1).forEach(function(e){t=Math.max(t,e)}),t}function c(e,t,r){return e>=t&&e<=r}function h(e,t,r){return e>t&&e<r}function f(e,t,r){return e<t?t:e>r?r:e}function d(e,t,r){return Math.abs(e-t)<=r}function p(e){i(e),e.reverse()}function y(e){var t=s(e);return t.reverse(),t}function m(e,t){return Number.parseFloat(e.toFixed(null!=t?t:0))}function v(e){return e*(180/Math.PI)}function w(e){return e*(Math.PI/180)}function g(e,t){void 0===t&&(t=-Math.PI);var r=e-t;return t+((r%=2*Math.PI)>=0?r:r+2*Math.PI)}function b(e,t){var r=(t=g(t,e))-e;return(r<Math.PI/2||r>3*Math.PI/2)&&(e+=Math.PI),e}return t})()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{Box:()=>t});var e=r(986);class t{static matching(e){let{x:r,y:n,width:i,height:o}=e;return new t(r,n,i,o)}static bounding(r){let n=[...r];if(0==n.length)throw new Error("An empty collection of boxes doesn't have a bounding box.");let i=n.map(e=>t.matching(e)),o=(0,e.min)(i.map(e=>e.left)),s=(0,e.min)(i.map(e=>e.top)),a=(0,e.max)(i.map(e=>e.right))-o,u=(0,e.max)(i.map(e=>e.bottom))-s;return new t(o,s,a,u)}constructor(e,t,r,n){this.x=e,this.y=t,this.width=r,this.height=n}get centerX(){return this.minX+this.width/2}get centerY(){return this.minY+this.height/2}get minX(){return this.x}get minY(){return this.y}get maxX(){return this.minX+this.width}get maxY(){return this.minY+this.height}get top(){return this.minY}get right(){return this.maxX}get bottom(){return this.maxY}get left(){return this.minX}bounds(e){let r=t.matching(e);return this.minX<=r.minX&&this.minY<=r.minY&&this.maxX>=r.maxX&&this.maxY>=r.maxY}padded(...e){let r="number"==typeof e[0]?e[0]:"factor"in e[0]?e[0].factor*this.width:e[0].percentage/100*this.width,n="number"==typeof e[0]&&"number"==typeof e[1]?e[1]:"number"==typeof e[0]?e[0]:"factor"in e[0]?e[0].factor*this.height:e[0].percentage/100*this.height;return new t(this.x-r,this.y-n,this.width+2*r,this.height+2*n)}get periphery(){return{atAngle:e=>{let t=this.width/2,r=this.height/2,n=Math.pow(Math.pow(t,2)+Math.pow(r,2),.5),i=this.centerX+n*Math.cos(e),o=this.centerY+n*Math.sin(e),s=n;return Math.abs(this.centerX-i)>t&&(s=Math.abs(t/Math.cos(e)),s=Number.isFinite(s)?s:r),Math.abs(this.centerY-o)>r&&(s=Math.abs(r/Math.sin(e)),s=Number.isFinite(s)?s:t),{x:this.centerX+s*Math.cos(e),y:this.centerY+s*Math.sin(e)}}}}}})(),n})(),e.exports=t()},297(e){var t;t=()=>(()=>{var e={106(e){var t;t=()=>(()=>{var e={992:function(e){var t;t=()=>(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{KeyBinding:()=>p});var r,n,i,o,s,a,u,l,c,h,f=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},d=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class p{constructor(e,t,a){r.add(this),this.key=e,n.set(this,void 0),i.set(this,void 0),o.set(this,void 0),s.set(this,void 0),f(this,n,t,"f"),f(this,i,e=>d(this,r,"m",h).call(this,e),"f"),f(this,o,a,"f")}get owner(){return d(this,s,"f")}set owner(e){var t;null===(t=d(this,s,"f"))||void 0===t||t.removeEventListener("keydown",d(this,i,"f")),null==e||e.addEventListener("keydown",d(this,i,"f"),{passive:!1}),f(this,s,e,"f")}}return n=new WeakMap,i=new WeakMap,o=new WeakMap,s=new WeakMap,r=new WeakSet,a=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.altKey)&&void 0!==t&&t},u=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.ctrlKey)&&void 0!==t&&t},l=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.metaKey)&&void 0!==t&&t},c=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.shiftKey)&&void 0!==t&&t},h=function(e){this.owner&&this.owner===document.activeElement&&e.key.toUpperCase()===this.key.toUpperCase()&&e.altKey===d(this,r,"a",a)&&e.ctrlKey===d(this,r,"a",u)&&e.metaKey===d(this,r,"a",l)&&e.shiftKey===d(this,r,"a",c)&&(e.preventDefault(),d(this,n,"f").call(this))},t})(),e.exports=t()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";function e(e){if(e.length>0)return e[0];throw new Error("Array is empty.")}function t(e){if(e.length>0)return e[e.length-1];throw new Error("Array is empty.")}function i(e){if(e.length<3)throw new Error("Array has less than 3 items.");if(e.length%2==0)throw new Error("Array has an even number of items.");let t=Math.floor(e.length/2);return[e[t-1],e[t],e[t+1]]}function o(e){if(e.length<4)throw new Error("Array has less than 4 items.");if(e.length%2!=0)throw new Error("Array has an odd number of items.");let t=Math.floor(e.length/2);return[e[t-2],e[t-1],e[t],e[t+1]]}function s(e){return e.split(/\r\n|\r|\n/)}function a(e){try{return JSON.stringify(e),!0}catch(e){return!1}}function u(e){return e.map(e=>({v:e,priority:Math.random()})).sort((e,t)=>e.priority-t.priority).map(({v:e})=>e)}function l(e){return e===document.activeElement}function c(e){return!!document.activeElement&&e.contains(document.activeElement)}r.r(n),r.d(n,{DownloadableFile:()=>v,EventfulSet:()=>w,FiniteStack:()=>O,KeyBinding:()=>h.KeyBinding,containsFocus:()=>c,detectMacOS:()=>d,detectWindows:()=>f,first:()=>e,hasFocus:()=>l,isJSONSerializable:()=>a,isURL:()=>x,last:()=>t,middleFour:()=>o,middleThree:()=>i,shuffled:()=>u,splitLines:()=>s});var h=r(992);function f(){return-1!==navigator.userAgent.indexOf("Windows")}function d(){try{return window.navigator.platform.toLowerCase().includes("mac")}catch(e){return!1}}var p,y=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},m=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class v{constructor(e,t,r){p.set(this,void 0),this.name=null!=e?e:"Unnamed.txt",this.content=null!=t?t:"",y(this,p,null==r?void 0:r.type,"f")}get type(){return null!=m(this,p,"f")?m(this,p,"f"):this.content instanceof Blob?this.content.type:"text/plain"}set type(e){y(this,p,e,"f")}download(){let e=new File([this.content],this.name,{type:this.type}),t=URL.createObjectURL(e),r=document.createElement("a");r.href=t,r.download=e.name,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(t)}}p=new WeakMap;class w{constructor(){this.eventListeners={change:[]},this.underlyingSet=new Set}[Symbol.iterator](){return this.underlyingSet.values()}includes(e){return this.underlyingSet.has(e)}include(e){return this.includes(e)}addAll(e){let t=[...e];0!=t.length&&(t.every(e=>this.includes(e))||(t.forEach(e=>this.underlyingSet.add(e)),this.callEventListeners("change")))}removeAll(e){let t=[...e];0!=t.length&&(t.every(e=>!this.includes(e))||(t.forEach(e=>this.underlyingSet.delete(e)),this.callEventListeners("change")))}clear(){0!=this.underlyingSet.size&&(this.underlyingSet.clear(),this.callEventListeners("change"))}addEventListener(e,t){this.eventListeners[e].push(t)}callEventListeners(e){this.eventListeners[e].forEach(e=>e())}removeEventListener(e,t){this.eventListeners[e]=this.eventListeners[e].filter(e=>e!==t)}}var g,b,S,E,N=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class O{constructor(e){g.add(this),this.maxSize=e,b.set(this,[]),S.set(this,{change:[]})}get size(){return N(this,b,"f").length}isEmpty(){return 0==this.size}empty(){0!=this.size&&(function(e,t){if("function"==typeof t||!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");t.set(e,[])}(this,b),N(this,g,"m",E).call(this,"change"))}peek(){if(0==this.size)throw new Error("The stack is empty.");return N(this,b,"f")[N(this,b,"f").length-1]}push(e){N(this,b,"f").push(e),this.size>this.maxSize&&N(this,b,"f").shift(),N(this,g,"m",E).call(this,"change")}pop(){if(0==this.size)throw new Error("The stack is empty.");let e=N(this,b,"f").pop();return N(this,g,"m",E).call(this,"change"),e}addEventListener(e,t){N(this,S,"f")[e].push(t)}removeEventListener(e,t){N(this,S,"f")[e]=N(this,S,"f")[e].filter(e=>e!==t)}}function x(e){try{return new URL(e),!0}catch(e){return!1}}b=new WeakMap,S=new WeakMap,g=new WeakSet,E=function(e){N(this,S,"f")[e].forEach(e=>e())}})(),n})(),e.exports=t()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{isCT:()=>f,parseCT:()=>t});var e=r(106);function t(t){let r=function(e){let t=e.findIndex(e=>!i(e)&&!o(e));if(t<0)throw new Error("Unable to find the start of the structure.");let r=[...e].reverse().findIndex(e=>!i(e)&&!o(e));if(r<0)throw new Error("Unable to find the end of the structure.");return r=e.length-r-1,e.slice(t,r+1)}((0,e.splitLines)(t));return{description:s(r),sequence:a(r),positionPairs:u(r),numberingOffset:l(r)}}function i(e){return 0==e.trim().length}function o(e){return"#"==e.trim().charAt(0)}function s(e){if(0==e.length)return;let t=e[0],r=c(t);if(r.length<2)return;let n=r[0];return t.slice(t.indexOf(n)+n.length).trim()}function a(e){return e.slice(1).map(e=>{let t=c(e);if(t.length<2)throw new Error("Line is missing a character.");return t[1]}).join("")}function u(e){let t=e.slice(1),r=[];return t.forEach((e,t)=>{let n=t+1,i=c(e);if(i.length>=5){let e=Number.parseFloat(i[4]);if(Number.isNaN(e))throw new Error("Partner positions must be numbers.");if(!Number.isInteger(e))throw new Error("Partner positions must be integers.");0!=e&&n<=e&&r.push([n,e])}}),r}function l(e){if(e.length<2)return 0;let t=c(e[1]);if(t.length<6)return 0;let r=Number.parseFloat(t[5]);return Number.isNaN(r)?0:Number.isInteger(r)?r-1:0}function c(e){return function(e){return e.split(/\s/)}(e).filter(h)}function h(e){return e.length>0}function f(r){let n;try{n=t(r)}catch(e){return!1}if(0==n.sequence.length)return!1;let i=(0,e.splitLines)(r);if(i=i.filter(t=>!function(e){return 0==e.length}(t)&&!function(e){return 0==e.trim().length}(t)&&!function(t){return!((0,e.splitLines)(t).length>1)&&"#"==t.trim().charAt(0)}(t)),0==i.length)return!1;let o=(0,e.first)(i),s=Number.parseFloat(o.trim().split(/\s+/)[0]);if(!Number.isInteger(s))return!1;let a=i.slice(1);return 0!=a.length&&a.every(e=>{let t=e.trim().split(/\s+/);if(t.length<5)return!1;let r=Number.parseFloat(t[4]);return Number.isInteger(r)})}})(),n})(),e.exports=t()},291(e){var t;t=()=>(()=>{var e={106(e){var t;t=()=>(()=>{var e={992(e){var t;t=()=>(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{KeyBinding:()=>p});var r,n,i,o,s,a,u,l,c,h,f=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},d=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class p{constructor(e,t,a){r.add(this),this.key=e,n.set(this,void 0),i.set(this,void 0),o.set(this,void 0),s.set(this,void 0),f(this,n,t,"f"),f(this,i,e=>d(this,r,"m",h).call(this,e),"f"),f(this,o,a,"f")}get owner(){return d(this,s,"f")}set owner(e){var t;null===(t=d(this,s,"f"))||void 0===t||t.removeEventListener("keydown",d(this,i,"f")),null==e||e.addEventListener("keydown",d(this,i,"f"),{passive:!1}),f(this,s,e,"f")}}return n=new WeakMap,i=new WeakMap,o=new WeakMap,s=new WeakMap,r=new WeakSet,a=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.altKey)&&void 0!==t&&t},u=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.ctrlKey)&&void 0!==t&&t},l=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.metaKey)&&void 0!==t&&t},c=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.shiftKey)&&void 0!==t&&t},h=function(e){this.owner&&this.owner===document.activeElement&&e.key.toUpperCase()===this.key.toUpperCase()&&e.altKey===d(this,r,"a",a)&&e.ctrlKey===d(this,r,"a",u)&&e.metaKey===d(this,r,"a",l)&&e.shiftKey===d(this,r,"a",c)&&(e.preventDefault(),d(this,n,"f").call(this))},t})(),e.exports=t()},854(e){e.exports=(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function r(e){return"number"==typeof e}function n(e){return r(e)&&Number.isFinite(e)}function i(e){return r(e)&&!Number.isFinite(e)}function o(e){return n(e)&&e>0}function s(e){return n(e)&&e>=0}function a(e){return"string"==typeof e}function u(e){return!!a(e)&&0==e.trim().length}function l(e){if(!a(e))return!1;try{return JSON.parse(e),!0}catch{return!1}}function c(e){try{return JSON.stringify(e),!0}catch{return!1}}function h(e){return null==e}function f(e){return"object"==typeof e&&null!==e}function d(e){return Array.isArray(e)}function p(e){return d(e)&&0==e.length}function y(e){return d(e)&&e.length>0}function m(e){return d(e)&&e.every(r)}function v(e){return m(e)&&e.length>0}function w(e){return d(e)&&e.every(n)}function g(e){return d(e)&&e.every(i)}function b(e){return d(e)&&e.every(a)}function S(e){return b(e)&&e.length>0}return e.r(t),e.d(t,{isArray:()=>d,isEmptyArray:()=>p,isFiniteNumber:()=>n,isFiniteNumbersArray:()=>w,isJSON:()=>l,isJSONSerializable:()=>c,isNonEmptyArray:()=>y,isNonEmptyNumbersArray:()=>v,isNonEmptyStringsArray:()=>S,isNonFiniteNumber:()=>i,isNonFiniteNumbersArray:()=>g,isNonNegativeFiniteNumber:()=>s,isNonNullObject:()=>f,isNullish:()=>h,isNumber:()=>r,isNumbersArray:()=>m,isPositiveFiniteNumber:()=>o,isString:()=>a,isStringsArray:()=>b,isWhitespace:()=>u}),t})()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";function e(e){if(e.length>0)return e[0];throw new Error("Array is empty.")}function t(e){if(e.length>0)return e[e.length-1];throw new Error("Array is empty.")}function i(e){if(e.length<3)throw new Error("Array has less than 3 items.");if(e.length%2==0)throw new Error("Array has an even number of items.");let t=Math.floor(e.length/2);return[e[t-1],e[t],e[t+1]]}function o(e){if(e.length<4)throw new Error("Array has less than 4 items.");if(e.length%2!=0)throw new Error("Array has an odd number of items.");let t=Math.floor(e.length/2);return[e[t-2],e[t-1],e[t],e[t+1]]}r.r(n),r.d(n,{DownloadableFile:()=>w,EventfulSet:()=>g,FiniteStack:()=>x,KeyBinding:()=>f.KeyBinding,containsFocus:()=>h,detectMacOS:()=>p,detectWindows:()=>d,first:()=>e,hasFocus:()=>c,isJSON:()=>s.isJSON,isJSONSerializable:()=>s.isJSONSerializable,isURL:()=>T,last:()=>t,middleFour:()=>o,middleThree:()=>i,removeWhitespace:()=>a,shuffled:()=>l,splitLines:()=>u});var s=r(854);function a(e){return[...e].filter(e=>!(0,s.isWhitespace)(e)).join("")}function u(e){return e.split(/\r\n|\r|\n/)}function l(e){return e.map(e=>({v:e,priority:Math.random()})).sort((e,t)=>e.priority-t.priority).map(({v:e})=>e)}function c(e){return e===document.activeElement}function h(e){return!!document.activeElement&&e.contains(document.activeElement)}var f=r(992);function d(){return-1!==navigator.userAgent.indexOf("Windows")}function p(){try{return window.navigator.platform.toLowerCase().includes("mac")}catch(e){return!1}}var y,m=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},v=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class w{constructor(e,t,r){y.set(this,void 0),this.name=null!=e?e:"Unnamed.txt",this.content=null!=t?t:"",m(this,y,null==r?void 0:r.type,"f")}get type(){return null!=v(this,y,"f")?v(this,y,"f"):this.content instanceof Blob?this.content.type:"text/plain"}set type(e){m(this,y,e,"f")}download(){let e=new File([this.content],this.name,{type:this.type}),t=URL.createObjectURL(e),r=document.createElement("a");r.href=t,r.download=e.name,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(t)}}y=new WeakMap;class g{constructor(){this.eventListeners={change:[]},this.underlyingSet=new Set}[Symbol.iterator](){return this.underlyingSet.values()}includes(e){return this.underlyingSet.has(e)}include(e){return this.includes(e)}addAll(e){let t=[...e];0!=t.length&&(t.every(e=>this.includes(e))||(t.forEach(e=>this.underlyingSet.add(e)),this.callEventListeners("change")))}removeAll(e){let t=[...e];0!=t.length&&(t.every(e=>!this.includes(e))||(t.forEach(e=>this.underlyingSet.delete(e)),this.callEventListeners("change")))}clear(){0!=this.underlyingSet.size&&(this.underlyingSet.clear(),this.callEventListeners("change"))}addEventListener(e,t){this.eventListeners[e].push(t)}callEventListeners(e){this.eventListeners[e].forEach(e=>e())}removeEventListener(e,t){this.eventListeners[e]=this.eventListeners[e].filter(e=>e!==t)}}var b,S,E,N,O=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class x{constructor(e){b.add(this),this.maxSize=e,S.set(this,[]),E.set(this,{change:[]})}get size(){return O(this,S,"f").length}isEmpty(){return 0==this.size}empty(){0!=this.size&&(function(e,t){if("function"==typeof t||!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");t.set(e,[])}(this,S),O(this,b,"m",N).call(this,"change"))}peek(){if(0==this.size)throw new Error("The stack is empty.");return O(this,S,"f")[O(this,S,"f").length-1]}push(e){O(this,S,"f").push(e),this.size>this.maxSize&&O(this,S,"f").shift(),O(this,b,"m",N).call(this,"change")}pop(){if(0==this.size)throw new Error("The stack is empty.");let e=O(this,S,"f").pop();return O(this,b,"m",N).call(this,"change"),e}addEventListener(e,t){O(this,E,"f")[e].push(t)}removeEventListener(e,t){O(this,E,"f")[e]=O(this,E,"f")[e].filter(e=>e!==t)}}function T(e){try{return new URL(e),!0}catch(e){return!1}}S=new WeakMap,E=new WeakMap,b=new WeakSet,N=function(e){O(this,E,"f")[e].forEach(e=>e())}})(),n})(),e.exports=t()},854(e){e.exports=(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function r(e){return"number"==typeof e}function n(e){return r(e)&&Number.isFinite(e)}function i(e){return r(e)&&!Number.isFinite(e)}function o(e){return n(e)&&e>0}function s(e){return n(e)&&e>=0}function a(e){return"string"==typeof e}function u(e){return""===e}function l(e){return a(e)&&!u(e)}function c(e){return!!a(e)&&0==e.trim().length}function h(e){if(!a(e))return!1;try{return JSON.parse(e),!0}catch{return!1}}function f(e){try{return JSON.stringify(e),!0}catch{return!1}}function d(e){return!!e}function p(e){return!e}function y(e){return null==e}function m(e){return"object"==typeof e&&null!==e}function v(e){return Array.isArray(e)}function w(e){return v(e)&&0==e.length}function g(e){return v(e)&&e.length>0}function b(e){return v(e)&&e.every(r)}function S(e){return b(e)&&e.length>0}function E(e){return v(e)&&e.every(n)}function N(e){return v(e)&&e.every(i)}function O(e){return v(e)&&e.every(a)}function x(e){return O(e)&&e.length>0}return e.r(t),e.d(t,{isArray:()=>v,isEmptyArray:()=>w,isEmptyString:()=>u,isFalsy:()=>p,isFiniteNumber:()=>n,isFiniteNumbersArray:()=>E,isJSON:()=>h,isJSONSerializable:()=>f,isNonEmptyArray:()=>g,isNonEmptyNumbersArray:()=>S,isNonEmptyString:()=>l,isNonEmptyStringsArray:()=>x,isNonFiniteNumber:()=>i,isNonFiniteNumbersArray:()=>N,isNonNegativeFiniteNumber:()=>s,isNonNullObject:()=>m,isNullish:()=>y,isNumber:()=>r,isNumbersArray:()=>b,isPositiveFiniteNumber:()=>o,isString:()=>a,isStringsArray:()=>O,isTruthy:()=>d,isWhitespace:()=>c}),t})()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{isFASTA:()=>y,parseFASTA:()=>p,parseStructure:()=>d});var e,t=r(854),i=r(106),o=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class s{constructor(r){if(e.set(this,void 0),""==r)throw new Error("Text item text is empty.");if((0,t.isWhitespace)(r))throw new Error("Text item text is whitespace.");if((0,i.splitLines)(r).length>1)throw new Error(`Text item text contains multiple lines:\n\n${r}`);if((0,i.removeWhitespace)(r).length!=r.length)throw new Error(`Text item text contains whitespace:\n\n${r}`);!function(e,t,r){if("function"==typeof t||!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");t.set(e,r)}(this,e,r)}toString(){return o(this,e,"f")}get length(){return o(this,e,"f").length}isInteger(){let t=Number.parseFloat(o(this,e,"f"));return Number.isInteger(t)&&t.toString()===o(this,e,"f")}isDotBracket(){return[...o(this,e,"f")].every(e=>a.has(e))}}e=new WeakMap;const a=new Set([...".()[]{}<>"]);var u,l,c,h=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class f{constructor(e){if(u.add(this),l.set(this,void 0),(0,i.splitLines)(e).length>1)throw new Error(`Line text is not a single line:\n\n${e}`);!function(e,t,r){if("function"==typeof t||!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");t.set(e,r)}(this,l,e)}toString(){return h(this,l,"f")}isEmpty(){return(0,t.isEmptyString)(h(this,l,"f"))}isWhitespace(){return(0,t.isWhitespace)(h(this,l,"f"))}get firstCharacter(){let e=h(this,l,"f").charAt(0);return""==e?void 0:e}trimmed(){return new f(h(this,l,"f").trim())}get items(){return h(this,u,"a",c)}get numItems(){return h(this,u,"a",c).length}get firstItem(){let e=h(this,u,"a",c);return 0==e.length?void 0:(0,i.first)(e)}get secondItem(){let e=h(this,u,"a",c);return e.length<2?void 0:e[1]}get lastItem(){let e=h(this,u,"a",c);return 0==e.length?void 0:(0,i.last)(e)}isNumbered(){var e,t;return null!==(t=null===(e=this.firstItem)||void 0===e?void 0:e.isInteger())&&void 0!==t&&t}unnumbered(){var e,t;if(!this.isNumbered())return new f(h(this,l,"f"));let r=h(this,l,"f");r=r.trimStart();let n=null!==(t=null===(e=this.firstItem)||void 0===e?void 0:e.length)&&void 0!==t?t:0;return r=r.substring(n),r=r.trimStart(),new f(r)}}function d(e){let t=(0,i.splitLines)(e).map(e=>new f(e));t=t.filter(e=>!e.isEmpty()&&!e.isWhitespace()),1==t.length&&(0,i.first)(t).isNumbered()&&(t=[(0,i.first)(t).unnumbered()]),t.length>1&&t.slice(1).every(e=>e.isNumbered())&&(t=t.map(e=>e.unnumbered())),t=t.filter(e=>e.numItems>0);let r=t.findIndex(e=>{var t;return null===(t=e.firstItem)||void 0===t?void 0:t.isDotBracket()}),n=(r<0?t:t.slice(0,r)).flatMap(e=>[...e.items]).map(e=>e.toString()).join(""),o=(r<0?[]:t.slice(r)).flatMap(e=>[...e.items]),s="",a="";return o.forEach(e=>{e.isDotBracket()&&!a?s+=e.toString():(a+=a?" ":"",a+=e.toString())}),s.length>n.length&&(a=s.substring(n.length)+" "+a,s=s.substring(0,n.length)),a&&console.log(`Trailing text that isn't drawn:\n\n${a}`),{sequence:n,dotBracket:s}}function p(e){let t=(0,i.splitLines)(e).map(e=>new f(e));if(t=t.filter(e=>!e.isEmpty()&&!e.isWhitespace()),0==t.length)throw new Error("FASTA text is empty.");if(">"!=(0,i.first)(t).trimmed().firstCharacter)throw new Error(`FASTA text doesn't begin with a header line (i.e., a line starting with ">"):\n\n${e}`);let r=(0,i.first)(t).trimmed().toString().substring(1),n=t.slice(1).findIndex(e=>">"==e.trimmed().firstCharacter);n>=0&&console.warn("Multiple sequences and/or structures found in FASTA text. (Only the first sequence and/or structure is drawn.)");let o=n<0?t.slice(1):t.slice(1,1+n),{sequence:s,dotBracket:a}=d(o.map(e=>e.toString()).join("\n"));return{header:r,sequence:s,dotBracket:a}}function y(e){try{return p(e),!0}catch{return!1}}l=new WeakMap,u=new WeakSet,c=function(){return h(this,l,"f").split(/\s+/).filter(t.isTruthy).map(e=>new s(e))}})(),n})(),e.exports=t()},106(e){var t;t=()=>(()=>{var e={992(e){var t;t=()=>(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{KeyBinding:()=>p});var r,n,i,o,s,a,u,l,c,h,f=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},d=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class p{constructor(e,t,a){r.add(this),this.key=e,n.set(this,void 0),i.set(this,void 0),o.set(this,void 0),s.set(this,void 0),f(this,n,t,"f"),f(this,i,e=>d(this,r,"m",h).call(this,e),"f"),f(this,o,a,"f")}get owner(){return d(this,s,"f")}set owner(e){var t;null===(t=d(this,s,"f"))||void 0===t||t.removeEventListener("keydown",d(this,i,"f")),null==e||e.addEventListener("keydown",d(this,i,"f"),{passive:!1}),f(this,s,e,"f")}}return n=new WeakMap,i=new WeakMap,o=new WeakMap,s=new WeakMap,r=new WeakSet,a=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.altKey)&&void 0!==t&&t},u=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.ctrlKey)&&void 0!==t&&t},l=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.metaKey)&&void 0!==t&&t},c=function(){var e,t;return null!==(t=null===(e=d(this,o,"f"))||void 0===e?void 0:e.shiftKey)&&void 0!==t&&t},h=function(e){this.owner&&this.owner===document.activeElement&&e.key.toUpperCase()===this.key.toUpperCase()&&e.altKey===d(this,r,"a",a)&&e.ctrlKey===d(this,r,"a",u)&&e.metaKey===d(this,r,"a",l)&&e.shiftKey===d(this,r,"a",c)&&(e.preventDefault(),d(this,n,"f").call(this))},t})(),e.exports=t()},854(e){e.exports=(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function r(e){return"number"==typeof e}function n(e){return r(e)&&Number.isFinite(e)}function i(e){return r(e)&&!Number.isFinite(e)}function o(e){return n(e)&&e>0}function s(e){return n(e)&&e>=0}function a(e){return"string"==typeof e}function u(e){return!!a(e)&&0==e.trim().length}function l(e){if(!a(e))return!1;try{return JSON.parse(e),!0}catch{return!1}}function c(e){try{return JSON.stringify(e),!0}catch{return!1}}function h(e){return null==e}function f(e){return"object"==typeof e&&null!==e}function d(e){return Array.isArray(e)}function p(e){return d(e)&&0==e.length}function y(e){return d(e)&&e.length>0}function m(e){return d(e)&&e.every(r)}function v(e){return m(e)&&e.length>0}function w(e){return d(e)&&e.every(n)}function g(e){return d(e)&&e.every(i)}function b(e){return d(e)&&e.every(a)}function S(e){return b(e)&&e.length>0}return e.r(t),e.d(t,{isArray:()=>d,isEmptyArray:()=>p,isFiniteNumber:()=>n,isFiniteNumbersArray:()=>w,isJSON:()=>l,isJSONSerializable:()=>c,isNonEmptyArray:()=>y,isNonEmptyNumbersArray:()=>v,isNonEmptyStringsArray:()=>S,isNonFiniteNumber:()=>i,isNonFiniteNumbersArray:()=>g,isNonNegativeFiniteNumber:()=>s,isNonNullObject:()=>f,isNullish:()=>h,isNumber:()=>r,isNumbersArray:()=>m,isPositiveFiniteNumber:()=>o,isString:()=>a,isStringsArray:()=>b,isWhitespace:()=>u}),t})()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";function e(e){if(e.length>0)return e[0];throw new Error("Array is empty.")}function t(e){if(e.length>0)return e[e.length-1];throw new Error("Array is empty.")}function i(e){if(e.length<3)throw new Error("Array has less than 3 items.");if(e.length%2==0)throw new Error("Array has an even number of items.");let t=Math.floor(e.length/2);return[e[t-1],e[t],e[t+1]]}function o(e){if(e.length<4)throw new Error("Array has less than 4 items.");if(e.length%2!=0)throw new Error("Array has an odd number of items.");let t=Math.floor(e.length/2);return[e[t-2],e[t-1],e[t],e[t+1]]}r.r(n),r.d(n,{DownloadableFile:()=>w,EventfulSet:()=>g,FiniteStack:()=>x,KeyBinding:()=>f.KeyBinding,containsFocus:()=>h,detectMacOS:()=>p,detectWindows:()=>d,first:()=>e,hasFocus:()=>c,isJSON:()=>s.isJSON,isJSONSerializable:()=>s.isJSONSerializable,isURL:()=>T,last:()=>t,middleFour:()=>o,middleThree:()=>i,removeWhitespace:()=>a,shuffled:()=>l,splitLines:()=>u});var s=r(854);function a(e){return[...e].filter(e=>!(0,s.isWhitespace)(e)).join("")}function u(e){return e.split(/\r\n|\r|\n/)}function l(e){return e.map(e=>({v:e,priority:Math.random()})).sort((e,t)=>e.priority-t.priority).map(({v:e})=>e)}function c(e){return e===document.activeElement}function h(e){return!!document.activeElement&&e.contains(document.activeElement)}var f=r(992);function d(){return-1!==navigator.userAgent.indexOf("Windows")}function p(){try{return window.navigator.platform.toLowerCase().includes("mac")}catch(e){return!1}}var y,m=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},v=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class w{constructor(e,t,r){y.set(this,void 0),this.name=null!=e?e:"Unnamed.txt",this.content=null!=t?t:"",m(this,y,null==r?void 0:r.type,"f")}get type(){return null!=v(this,y,"f")?v(this,y,"f"):this.content instanceof Blob?this.content.type:"text/plain"}set type(e){m(this,y,e,"f")}download(){let e=new File([this.content],this.name,{type:this.type}),t=URL.createObjectURL(e),r=document.createElement("a");r.href=t,r.download=e.name,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(t)}}y=new WeakMap;class g{constructor(){this.eventListeners={change:[]},this.underlyingSet=new Set}[Symbol.iterator](){return this.underlyingSet.values()}includes(e){return this.underlyingSet.has(e)}include(e){return this.includes(e)}addAll(e){let t=[...e];0!=t.length&&(t.every(e=>this.includes(e))||(t.forEach(e=>this.underlyingSet.add(e)),this.callEventListeners("change")))}removeAll(e){let t=[...e];0!=t.length&&(t.every(e=>!this.includes(e))||(t.forEach(e=>this.underlyingSet.delete(e)),this.callEventListeners("change")))}clear(){0!=this.underlyingSet.size&&(this.underlyingSet.clear(),this.callEventListeners("change"))}addEventListener(e,t){this.eventListeners[e].push(t)}callEventListeners(e){this.eventListeners[e].forEach(e=>e())}removeEventListener(e,t){this.eventListeners[e]=this.eventListeners[e].filter(e=>e!==t)}}var b,S,E,N,O=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class x{constructor(e){b.add(this),this.maxSize=e,S.set(this,[]),E.set(this,{change:[]})}get size(){return O(this,S,"f").length}isEmpty(){return 0==this.size}empty(){0!=this.size&&(function(e,t){if("function"==typeof t||!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");t.set(e,[])}(this,S),O(this,b,"m",N).call(this,"change"))}peek(){if(0==this.size)throw new Error("The stack is empty.");return O(this,S,"f")[O(this,S,"f").length-1]}push(e){O(this,S,"f").push(e),this.size>this.maxSize&&O(this,S,"f").shift(),O(this,b,"m",N).call(this,"change")}pop(){if(0==this.size)throw new Error("The stack is empty.");let e=O(this,S,"f").pop();return O(this,b,"m",N).call(this,"change"),e}addEventListener(e,t){O(this,E,"f")[e].push(t)}removeEventListener(e,t){O(this,E,"f")[e]=O(this,E,"f")[e].filter(e=>e!==t)}}function T(e){try{return new URL(e),!0}catch(e){return!1}}S=new WeakMap,E=new WeakMap,b=new WeakSet,N=function(e){O(this,E,"f")[e].forEach(e=>e())}})(),n})(),e.exports=t()},854(e){e.exports=(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function r(e){return"number"==typeof e}function n(e){return r(e)&&Number.isFinite(e)}function i(e){return r(e)&&!Number.isFinite(e)}function o(e){return n(e)&&e>0}function s(e){return n(e)&&e>=0}function a(e){return"string"==typeof e}function u(e){return""===e}function l(e){return a(e)&&!u(e)}function c(e){return!!a(e)&&0==e.trim().length}function h(e){if(!a(e))return!1;try{return JSON.parse(e),!0}catch{return!1}}function f(e){try{return JSON.stringify(e),!0}catch{return!1}}function d(e){return!!e}function p(e){return!e}function y(e){return null==e}function m(e){return"object"==typeof e&&null!==e}function v(e){return Array.isArray(e)}function w(e){return v(e)&&0==e.length}function g(e){return v(e)&&e.length>0}function b(e){return v(e)&&e.every(r)}function S(e){return b(e)&&e.length>0}function E(e){return v(e)&&e.every(n)}function N(e){return v(e)&&e.every(i)}function O(e){return v(e)&&e.every(a)}function x(e){return O(e)&&e.length>0}return e.r(t),e.d(t,{isArray:()=>v,isEmptyArray:()=>w,isEmptyString:()=>u,isFalsy:()=>p,isFiniteNumber:()=>n,isFiniteNumbersArray:()=>E,isJSON:()=>h,isJSONSerializable:()=>f,isNonEmptyArray:()=>g,isNonEmptyNumbersArray:()=>S,isNonEmptyString:()=>l,isNonEmptyStringsArray:()=>x,isNonFiniteNumber:()=>i,isNonFiniteNumbersArray:()=>N,isNonNegativeFiniteNumber:()=>s,isNonNullObject:()=>m,isNullish:()=>y,isNumber:()=>r,isNumbersArray:()=>b,isPositiveFiniteNumber:()=>o,isString:()=>a,isStringsArray:()=>O,isTruthy:()=>d,isWhitespace:()=>c}),t})()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{PasteHandler:()=>v});var e,t=r(106),i=r(291),o=r(297),s=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class a{constructor(t){e.set(this,void 0),function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===n?i.call(e,r):i?i.value=r:t.set(e,r)}(this,e,t,"f")}handle(r){var n;let a=null===(n=r.clipboardData)||void 0===n?void 0:n.getData("text");if(!a)throw new Error("Paste event text content is falsy.");s(this,e,"f").undoStack.push();try{s(this,e,"f").draw(a),(0,t.isJSON)(a)||s(this,e,"f").drawing.setPadding(1e3),s(this,e,"f").view.fitTo(s(this,e,"f").drawing.contentBBox.padded({percentage:10}));let r=(0,i.isFASTA)(a)?(0,i.parseFASTA)(a).header:(0,o.isCT)(a)?(0,o.parseCT)(a).description:void 0;r&&!s(this,e,"f").drawing.name&&(s(this,e,"f").drawing.name=r)}catch(t){throw console.error(t),s(this,e,"f").undo(),new Error(`Error processing pasted text: ${r}.`)}}}e=new WeakMap;var u,l=r(854),c=r(645),h=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class f{constructor(e){u.set(this,void 0),function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===n?i.call(e,r):i?i.value=r:t.set(e,r)}(this,u,e,"f")}handle(e){return t=this,r=void 0,i=function*(){var t;let r=null===(t=e.clipboardData)||void 0===t?void 0:t.items;if(!r)return;let n=[...r].filter(e=>"file"===e.kind).map(e=>e.getAsFile());if(0==n.length)return;let i=n[0];if(i&&i.name.toLowerCase().endsWith(".rnacanvas")){e.preventDefault(),e.stopPropagation(),h(this,u,"f").undoStack.push();try{let e=JSON.parse(yield i.text());h(this,u,"f").restore(e),!function(e){return(0,l.isNonNullObject)(e)&&(0,l.isNonNullObject)(e.drawing)&&"svg"in e.drawing}(e)||(h(this,u,"f").drawing.domNode.style.backgroundColor="white"),h(this,u,"f").drawing.domNode.style.userSelect="none",h(this,u,"f").drawing.domNode.style.webkitUserSelect="none",h(this,u,"f").drawing.domNode.style.cursor="default",h(this,u,"f").deselect(),h(this,u,"f").view.fitTo(c.Box.matching(h(this,u,"f").drawing.contentBBox).padded({percentage:10}))}catch(e){console.error(e),console.error("Unable to open saved drawing."),h(this,u,"f").undo()}}},new((n=void 0)||(n=Promise))(function(e,o){function s(e){try{u(i.next(e))}catch(e){o(e)}}function a(e){try{u(i.throw(e))}catch(e){o(e)}}function u(t){var r;t.done?e(t.value):(r=t.value,r instanceof n?r:new n(function(e){e(r)})).then(s,a)}u((i=i.apply(t,r||[])).next())});var t,r,n,i}}u=new WeakMap;var d,p,y=function(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r},m=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)};class v{constructor(e){d.set(this,void 0),p.set(this,void 0),y(this,d,new a(e),"f"),y(this,p,new f(e),"f")}handle(e){return t=this,r=void 0,i=function*(){var t,r,n;try{(null===(t=e.clipboardData)||void 0===t?void 0:t.getData("text"))?m(this,d,"f").handle(e):(null===(n=null===(r=e.clipboardData)||void 0===r?void 0:r.files)||void 0===n?void 0:n.length)&&(yield m(this,p,"f").handle(e))}catch(t){console.error(t),console.error(`Error handling paste event: ${e}.`)}},new((n=void 0)||(n=Promise))(function(e,o){function s(e){try{u(i.next(e))}catch(e){o(e)}}function a(e){try{u(i.throw(e))}catch(e){o(e)}}function u(t){var r;t.done?e(t.value):(r=t.value,r instanceof n?r:new n(function(e){e(r)})).then(s,a)}u((i=i.apply(t,r||[])).next())});var t,r,n,i}}d=new WeakMap,p=new WeakMap})(),n})());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rnacanvas/paste-interface",
3
- "version": "5.0.0",
3
+ "version": "6.0.0",
4
4
  "description": "Paste things",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,7 +30,7 @@
30
30
  "dependencies": {
31
31
  "@rnacanvas/boxes": "^5.0.1",
32
32
  "@rnacanvas/ct": "^2.1.1",
33
- "@rnacanvas/dot-bracket": "^1.2.0",
33
+ "@rnacanvas/parse": "^2.1.0",
34
34
  "@rnacanvas/utilities": "^7.1.0",
35
35
  "@rnacanvas/value-check": "^2.2.0"
36
36
  }
@@ -1,7 +0,0 @@
1
- import type { App } from './App';
2
- export declare class CTTextPasteHandler {
3
- #private;
4
- constructor(targetApp: App);
5
- handle(event: ClipboardEvent): void | never;
6
- }
7
- //# sourceMappingURL=CTTextPasteHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CTTextPasteHandler.d.ts","sourceRoot":"","sources":["../src/CTTextPasteHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAMjC,qBAAa,kBAAkB;;gBAGjB,SAAS,EAAE,GAAG;IAI1B,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,KAAK;CAgC5C"}
@@ -1,7 +0,0 @@
1
- import type { App } from './App';
2
- export declare class DotBracketTextPasteHandler {
3
- #private;
4
- constructor(targetApp: App);
5
- handle(event: ClipboardEvent): void | never;
6
- }
7
- //# sourceMappingURL=DotBracketTextPasteHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DotBracketTextPasteHandler.d.ts","sourceRoot":"","sources":["../src/DotBracketTextPasteHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAMjC,qBAAa,0BAA0B;;gBAGzB,SAAS,EAAE,GAAG;IAI1B,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,KAAK;CAgC5C"}
@@ -1,7 +0,0 @@
1
- import type { App } from './App';
2
- export declare class RNAcanvasTextPasteHandler {
3
- #private;
4
- constructor(targetApp: App);
5
- handle(event: ClipboardEvent): void | never;
6
- }
7
- //# sourceMappingURL=RNAcanvasTextPasteHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RNAcanvasTextPasteHandler.d.ts","sourceRoot":"","sources":["../src/RNAcanvasTextPasteHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAMjC,qBAAa,yBAAyB;;gBAGxB,SAAS,EAAE,GAAG;IAI1B,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,KAAK;CAuC5C"}
@@ -1,2 +0,0 @@
1
- export declare function isTruthy(value: unknown): boolean;
2
- //# sourceMappingURL=isTruthy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isTruthy.d.ts","sourceRoot":"","sources":["../src/isTruthy.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEhD"}