drugflow-molstar 0.3.56 → 0.3.57

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.
@@ -0,0 +1,2 @@
1
+ /*! For license information please see drugflow-molstar-component-build-0.3.57.js.LICENSE.txt */
2
+ (()=>{"use strict";const t="undefined"!=typeof window&&null!=window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,e=(t,e,s=null)=>{for(;e!==s;){const s=e.nextSibling;t.removeChild(e),e=s}},s=`{{lit-${String(Math.random()).slice(2)}}}`,i=`\x3c!--${s}--\x3e`,n=new RegExp(`${s}|${i}`),r="$lit$";class o{constructor(t,e){this.parts=[],this.element=e;const i=[],o=[],l=document.createTreeWalker(e.content,133,null,!1);let c=0,p=-1,u=0;const{strings:_,values:{length:m}}=t;for(;u<m;){const t=l.nextNode();if(null!==t){if(p++,1===t.nodeType){if(t.hasAttributes()){const e=t.attributes,{length:s}=e;let i=0;for(let t=0;t<s;t++)a(e[t].name,r)&&i++;for(;i-- >0;){const e=_[u],s=d.exec(e)[2],i=s.toLowerCase()+r,o=t.getAttribute(i);t.removeAttribute(i);const a=o.split(n);this.parts.push({type:"attribute",index:p,name:s,strings:a}),u+=a.length-1}}"TEMPLATE"===t.tagName&&(o.push(t),l.currentNode=t.content)}else if(3===t.nodeType){const e=t.data;if(e.indexOf(s)>=0){const s=t.parentNode,o=e.split(n),l=o.length-1;for(let e=0;e<l;e++){let i,n=o[e];if(""===n)i=h();else{const t=d.exec(n);null!==t&&a(t[2],r)&&(n=n.slice(0,t.index)+t[1]+t[2].slice(0,-r.length)+t[3]),i=document.createTextNode(n)}s.insertBefore(i,t),this.parts.push({type:"node",index:++p})}""===o[l]?(s.insertBefore(h(),t),i.push(t)):t.data=o[l],u+=l}}else if(8===t.nodeType)if(t.data===s){const e=t.parentNode;null!==t.previousSibling&&p!==c||(p++,e.insertBefore(h(),t)),c=p,this.parts.push({type:"node",index:p}),null===t.nextSibling?t.data="":(i.push(t),p--),u++}else{let e=-1;for(;-1!==(e=t.data.indexOf(s,e+1));)this.parts.push({type:"node",index:-1}),u++}}else l.currentNode=o.pop()}for(const t of i)t.parentNode.removeChild(t)}}const a=(t,e)=>{const s=t.length-e.length;return s>=0&&t.slice(s)===e},l=t=>-1!==t.index,h=()=>document.createComment(""),d=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function c(t,e){const{element:{content:s},parts:i}=t,n=document.createTreeWalker(s,133,null,!1);let r=u(i),o=i[r],a=-1,l=0;const h=[];let d=null;for(;n.nextNode();){a++;const t=n.currentNode;for(t.previousSibling===d&&(d=null),e.has(t)&&(h.push(t),null===d&&(d=t)),null!==d&&l++;void 0!==o&&o.index===a;)o.index=null!==d?-1:o.index-l,r=u(i,r),o=i[r]}h.forEach((t=>t.parentNode.removeChild(t)))}const p=t=>{let e=11===t.nodeType?0:1;const s=document.createTreeWalker(t,133,null,!1);for(;s.nextNode();)e++;return e},u=(t,e=-1)=>{for(let s=e+1;s<t.length;s++){const e=t[s];if(l(e))return s}return-1},_=new WeakMap,m=t=>"function"==typeof t&&_.has(t),y={},f={};class g{constructor(t,e,s){this.__parts=[],this.template=t,this.processor=e,this.options=s}update(t){let e=0;for(const s of this.__parts)void 0!==s&&s.setValue(t[e]),e++;for(const t of this.__parts)void 0!==t&&t.commit()}_clone(){const e=t?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),s=[],i=this.template.parts,n=document.createTreeWalker(e,133,null,!1);let r,o=0,a=0,h=n.nextNode();for(;o<i.length;)if(r=i[o],l(r)){for(;a<r.index;)a++,"TEMPLATE"===h.nodeName&&(s.push(h),n.currentNode=h.content),null===(h=n.nextNode())&&(n.currentNode=s.pop(),h=n.nextNode());if("node"===r.type){const t=this.processor.handleTextExpression(this.options);t.insertAfterNode(h.previousSibling),this.__parts.push(t)}else this.__parts.push(...this.processor.handleAttributeExpressions(h,r.name,r.strings,this.options));o++}else this.__parts.push(void 0),o++;return t&&(document.adoptNode(e),customElements.upgrade(e)),e}}const S=window.trustedTypes&&trustedTypes.createPolicy("lit-html",{createHTML:t=>t}),v=` ${s} `;const w=t=>null===t||!("object"==typeof t||"function"==typeof t),b=t=>Array.isArray(t)||!(!t||!t[Symbol.iterator]);class x{constructor(t,e,s){this.dirty=!0,this.element=t,this.name=e,this.strings=s,this.parts=[];for(let t=0;t<s.length-1;t++)this.parts[t]=this._createPart()}_createPart(){return new P(this)}_getValue(){const t=this.strings,e=t.length-1,s=this.parts;if(1===e&&""===t[0]&&""===t[1]){const t=s[0].value;if("symbol"==typeof t)return String(t);if("string"==typeof t||!b(t))return t}let i="";for(let n=0;n<e;n++){i+=t[n];const e=s[n];if(void 0!==e){const t=e.value;if(w(t)||!b(t))i+="string"==typeof t?t:String(t);else for(const e of t)i+="string"==typeof e?e:String(e)}}return i+=t[e],i}commit(){this.dirty&&(this.dirty=!1,this.element.setAttribute(this.name,this._getValue()))}}class P{constructor(t){this.value=void 0,this.committer=t}setValue(t){t===y||w(t)&&t===this.value||(this.value=t,m(t)||(this.committer.dirty=!0))}commit(){for(;m(this.value);){const t=this.value;this.value=y,t(this)}this.value!==y&&this.committer.commit()}}class N{constructor(t){this.value=void 0,this.__pendingValue=void 0,this.options=t}appendInto(t){this.startNode=t.appendChild(h()),this.endNode=t.appendChild(h())}insertAfterNode(t){this.startNode=t,this.endNode=t.nextSibling}appendIntoPart(t){t.__insert(this.startNode=h()),t.__insert(this.endNode=h())}insertAfterPart(t){t.__insert(this.startNode=h()),this.endNode=t.endNode,t.endNode=this.startNode}setValue(t){this.__pendingValue=t}commit(){if(null===this.startNode.parentNode)return;for(;m(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=y,t(this)}const t=this.__pendingValue;t!==y&&(w(t)?t!==this.value&&this.__commitText(t):t instanceof class{constructor(t,e,s,i){this.strings=t,this.values=e,this.type=s,this.processor=i}getHTML(){const t=this.strings.length-1;let e="",n=!1;for(let o=0;o<t;o++){const t=this.strings[o],a=t.lastIndexOf("\x3c!--");n=(a>-1||n)&&-1===t.indexOf("--\x3e",a+1);const l=d.exec(t);e+=null===l?t+(n?v:i):t.substr(0,l.index)+l[1]+l[2]+r+l[3]+s}return e+=this.strings[t],e}getTemplateElement(){const t=document.createElement("template");let e=this.getHTML();return void 0!==S&&(e=S.createHTML(e)),t.innerHTML=e,t}}?this.__commitTemplateResult(t):t instanceof Node?this.__commitNode(t):b(t)?this.__commitIterable(t):t===f?(this.value=f,this.clear()):this.__commitText(t))}__insert(t){this.endNode.parentNode.insertBefore(t,this.endNode)}__commitNode(t){this.value!==t&&(this.clear(),this.__insert(t),this.value=t)}__commitText(t){const e=this.startNode.nextSibling,s="string"==typeof(t=null==t?"":t)?t:String(t);e===this.endNode.previousSibling&&3===e.nodeType?e.data=s:this.__commitNode(document.createTextNode(s)),this.value=t}__commitTemplateResult(t){const e=this.options.templateFactory(t);if(this.value instanceof g&&this.value.template===e)this.value.update(t.values);else{const s=new g(e,t.processor,this.options),i=s._clone();s.update(t.values),this.__commitNode(i),this.value=s}}__commitIterable(t){Array.isArray(this.value)||(this.value=[],this.clear());const e=this.value;let s,i=0;for(const n of t)s=e[i],void 0===s&&(s=new N(this.options),e.push(s),0===i?s.appendIntoPart(this):s.insertAfterPart(e[i-1])),s.setValue(n),s.commit(),i++;i<e.length&&(e.length=i,this.clear(s&&s.endNode))}clear(t=this.startNode){e(this.startNode.parentNode,t.nextSibling,this.endNode)}}class C{constructor(t,e,s){if(this.value=void 0,this.__pendingValue=void 0,2!==s.length||""!==s[0]||""!==s[1])throw new Error("Boolean attributes can only contain a single expression");this.element=t,this.name=e,this.strings=s}setValue(t){this.__pendingValue=t}commit(){for(;m(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=y,t(this)}if(this.__pendingValue===y)return;const t=!!this.__pendingValue;this.value!==t&&(t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name),this.value=t),this.__pendingValue=y}}class T extends x{constructor(t,e,s){super(t,e,s),this.single=2===s.length&&""===s[0]&&""===s[1]}_createPart(){return new A(this)}_getValue(){return this.single?this.parts[0].value:super._getValue()}commit(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}class A extends P{}let E=!1;(()=>{try{const t={get capture(){return E=!0,!1}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){}})();class V{constructor(t,e,s){this.value=void 0,this.__pendingValue=void 0,this.element=t,this.eventName=e,this.eventContext=s,this.__boundHandleEvent=t=>this.handleEvent(t)}setValue(t){this.__pendingValue=t}commit(){for(;m(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=y,t(this)}if(this.__pendingValue===y)return;const t=this.__pendingValue,e=this.value,s=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),i=null!=t&&(null==e||s);s&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),i&&(this.__options=U(t),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=t,this.__pendingValue=y}handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}const U=t=>t&&(E?{capture:t.capture,passive:t.passive,once:t.once}:t.capture);function O(t){let e=R.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},R.set(t.type,e));let i=e.stringsArray.get(t.strings);if(void 0!==i)return i;const n=t.strings.join(s);return i=e.keyString.get(n),void 0===i&&(i=new o(t,t.getTemplateElement()),e.keyString.set(n,i)),e.stringsArray.set(t.strings,i),i}const R=new Map,k=new WeakMap;new class{handleAttributeExpressions(t,e,s,i){const n=e[0];return"."===n?new T(t,e.slice(1),s).parts:"@"===n?[new V(t,e.slice(1),i.eventContext)]:"?"===n?[new C(t,e.slice(1),s)]:new x(t,e,s).parts}handleTextExpression(t){return new N(t)}},"undefined"!=typeof window&&(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.4.1");const M=(t,e)=>`${t}--${e}`;let q=!0;void 0===window.ShadyCSS?q=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),q=!1);const I=t=>e=>{const i=M(e.type,t);let n=R.get(i);void 0===n&&(n={stringsArray:new WeakMap,keyString:new Map},R.set(i,n));let r=n.stringsArray.get(e.strings);if(void 0!==r)return r;const a=e.strings.join(s);if(r=n.keyString.get(a),void 0===r){const s=e.getTemplateElement();q&&window.ShadyCSS.prepareTemplateDom(s,t),r=new o(e,s),n.keyString.set(a,r)}return n.stringsArray.set(e.strings,r),r},j=["html","svg"],L=new Set;window.JSCompiler_renameProperty=(t,e)=>t;const F={toAttribute(t,e){switch(e){case Boolean:return t?"":null;case Object:case Array:return null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){switch(e){case Boolean:return null!==t;case Number:return null===t?null:Number(t);case Object:case Array:return JSON.parse(t)}return t}},H=(t,e)=>e!==t&&(e==e||t==t),z={attribute:!0,type:String,converter:F,reflect:!1,hasChanged:H};class B extends HTMLElement{constructor(){super(),this.initialize()}static get observedAttributes(){this.finalize();const t=[];return this._classProperties.forEach(((e,s)=>{const i=this._attributeNameForProperty(s,e);void 0!==i&&(this._attributeToPropertyMap.set(i,s),t.push(i))})),t}static _ensureClassProperties(){if(!this.hasOwnProperty(JSCompiler_renameProperty("_classProperties",this))){this._classProperties=new Map;const t=Object.getPrototypeOf(this)._classProperties;void 0!==t&&t.forEach(((t,e)=>this._classProperties.set(e,t)))}}static createProperty(t,e=z){if(this._ensureClassProperties(),this._classProperties.set(t,e),e.noAccessor||this.prototype.hasOwnProperty(t))return;const s="symbol"==typeof t?Symbol():`__${t}`,i=this.getPropertyDescriptor(t,s,e);void 0!==i&&Object.defineProperty(this.prototype,t,i)}static getPropertyDescriptor(t,e,s){return{get(){return this[e]},set(i){const n=this[t];this[e]=i,this.requestUpdateInternal(t,n,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this._classProperties&&this._classProperties.get(t)||z}static finalize(){const t=Object.getPrototypeOf(this);if(t.hasOwnProperty("finalized")||t.finalize(),this.finalized=!0,this._ensureClassProperties(),this._attributeToPropertyMap=new Map,this.hasOwnProperty(JSCompiler_renameProperty("properties",this))){const t=this.properties,e=[...Object.getOwnPropertyNames(t),..."function"==typeof Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t):[]];for(const s of e)this.createProperty(s,t[s])}}static _attributeNameForProperty(t,e){const s=e.attribute;return!1===s?void 0:"string"==typeof s?s:"string"==typeof t?t.toLowerCase():void 0}static _valueHasChanged(t,e,s=H){return s(t,e)}static _propertyValueFromAttribute(t,e){const s=e.type,i=e.converter||F,n="function"==typeof i?i:i.fromAttribute;return n?n(t,s):t}static _propertyValueToAttribute(t,e){if(void 0===e.reflect)return;const s=e.type,i=e.converter;return(i&&i.toAttribute||F.toAttribute)(t,s)}initialize(){this._updateState=0,this._updatePromise=new Promise((t=>this._enableUpdatingResolver=t)),this._changedProperties=new Map,this._saveInstanceProperties(),this.requestUpdateInternal()}_saveInstanceProperties(){this.constructor._classProperties.forEach(((t,e)=>{if(this.hasOwnProperty(e)){const t=this[e];delete this[e],this._instanceProperties||(this._instanceProperties=new Map),this._instanceProperties.set(e,t)}}))}_applyInstanceProperties(){this._instanceProperties.forEach(((t,e)=>this[e]=t)),this._instanceProperties=void 0}connectedCallback(){this.enableUpdating()}enableUpdating(){void 0!==this._enableUpdatingResolver&&(this._enableUpdatingResolver(),this._enableUpdatingResolver=void 0)}disconnectedCallback(){}attributeChangedCallback(t,e,s){e!==s&&this._attributeToProperty(t,s)}_propertyToAttribute(t,e,s=z){const i=this.constructor,n=i._attributeNameForProperty(t,s);if(void 0!==n){const t=i._propertyValueToAttribute(e,s);if(void 0===t)return;this._updateState=8|this._updateState,null==t?this.removeAttribute(n):this.setAttribute(n,t),this._updateState=-9&this._updateState}}_attributeToProperty(t,e){if(8&this._updateState)return;const s=this.constructor,i=s._attributeToPropertyMap.get(t);if(void 0!==i){const t=s.getPropertyOptions(i);this._updateState=16|this._updateState,this[i]=s._propertyValueFromAttribute(e,t),this._updateState=-17&this._updateState}}requestUpdateInternal(t,e,s){let i=!0;if(void 0!==t){const n=this.constructor;s=s||n.getPropertyOptions(t),n._valueHasChanged(this[t],e,s.hasChanged)?(this._changedProperties.has(t)||this._changedProperties.set(t,e),!0!==s.reflect||16&this._updateState||(void 0===this._reflectingProperties&&(this._reflectingProperties=new Map),this._reflectingProperties.set(t,s))):i=!1}!this._hasRequestedUpdate&&i&&(this._updatePromise=this._enqueueUpdate())}requestUpdate(t,e){return this.requestUpdateInternal(t,e),this.updateComplete}async _enqueueUpdate(){this._updateState=4|this._updateState;try{await this._updatePromise}catch(t){}const t=this.performUpdate();return null!=t&&await t,!this._hasRequestedUpdate}get _hasRequestedUpdate(){return 4&this._updateState}get hasUpdated(){return 1&this._updateState}performUpdate(){if(!this._hasRequestedUpdate)return;this._instanceProperties&&this._applyInstanceProperties();let t=!1;const e=this._changedProperties;try{t=this.shouldUpdate(e),t?this.update(e):this._markUpdated()}catch(e){throw t=!1,this._markUpdated(),e}t&&(1&this._updateState||(this._updateState=1|this._updateState,this.firstUpdated(e)),this.updated(e))}_markUpdated(){this._changedProperties=new Map,this._updateState=-5&this._updateState}get updateComplete(){return this._getUpdateComplete()}_getUpdateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._updatePromise}shouldUpdate(t){return!0}update(t){void 0!==this._reflectingProperties&&this._reflectingProperties.size>0&&(this._reflectingProperties.forEach(((t,e)=>this._propertyToAttribute(e,this[e],t))),this._reflectingProperties=void 0),this._markUpdated()}updated(t){}firstUpdated(t){}}B.finalized=!0;const $=Element.prototype;$.msMatchesSelector||$.webkitMatchesSelector;const W=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,D=Symbol();class J{constructor(t,e){if(e!==D)throw new Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t}get styleSheet(){return void 0===this._styleSheet&&(W?(this._styleSheet=new CSSStyleSheet,this._styleSheet.replaceSync(this.cssText)):this._styleSheet=null),this._styleSheet}toString(){return this.cssText}}(window.litElementVersions||(window.litElementVersions=[])).push("2.5.1");const G={};class K extends B{static getStyles(){return this.styles}static _getUniqueStyles(){if(this.hasOwnProperty(JSCompiler_renameProperty("_styles",this)))return;const t=this.getStyles();if(Array.isArray(t)){const e=(t,s)=>t.reduceRight(((t,s)=>Array.isArray(s)?e(s,t):(t.add(s),t)),s),s=e(t,new Set),i=[];s.forEach((t=>i.unshift(t))),this._styles=i}else this._styles=void 0===t?[]:[t];this._styles=this._styles.map((t=>{if(t instanceof CSSStyleSheet&&!W){const e=Array.prototype.slice.call(t.cssRules).reduce(((t,e)=>t+e.cssText),"");return new J(String(e),D)}return t}))}initialize(){super.initialize(),this.constructor._getUniqueStyles(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow(this.constructor.shadowRootOptions)}adoptStyles(){const t=this.constructor._styles;0!==t.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?W?this.renderRoot.adoptedStyleSheets=t.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):this._needsShimAdoptedStyleSheets=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(t.map((t=>t.cssText)),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(t){const e=this.render();super.update(t),e!==G&&this.constructor.render(e,this.renderRoot,{scopeName:this.localName,eventContext:this}),this._needsShimAdoptedStyleSheets&&(this._needsShimAdoptedStyleSheets=!1,this.constructor._styles.forEach((t=>{const e=document.createElement("style");e.textContent=t.cssText,this.renderRoot.appendChild(e)})))}render(){return G}}K.finalized=!0,K.render=(t,s,i)=>{if(!i||"object"!=typeof i||!i.scopeName)throw new Error("The `scopeName` option is required.");const n=i.scopeName,r=k.has(s),o=q&&11===s.nodeType&&!!s.host,a=o&&!L.has(n),l=a?document.createDocumentFragment():s;if(((t,s,i)=>{let n=k.get(s);void 0===n&&(e(s,s.firstChild),k.set(s,n=new N(Object.assign({templateFactory:O},i))),n.appendInto(s)),n.setValue(t),n.commit()})(t,l,Object.assign({templateFactory:I(n)},i)),a){const t=k.get(l);k.delete(l);((t,e,s)=>{L.add(t);const i=s?s.element:document.createElement("template"),n=e.querySelectorAll("style"),{length:r}=n;if(0===r)return void window.ShadyCSS.prepareTemplateStyles(i,t);const o=document.createElement("style");for(let t=0;t<r;t++){const e=n[t];e.parentNode.removeChild(e),o.textContent+=e.textContent}(t=>{j.forEach((e=>{const s=R.get(M(e,t));void 0!==s&&s.keyString.forEach((t=>{const{element:{content:e}}=t,s=new Set;Array.from(e.querySelectorAll("style")).forEach((t=>{s.add(t)})),c(t,s)}))}))})(t);const a=i.content;s?function(t,e,s=null){const{element:{content:i},parts:n}=t;if(null==s)return void i.appendChild(e);const r=document.createTreeWalker(i,133,null,!1);let o=u(n),a=0,l=-1;for(;r.nextNode();)for(l++,r.currentNode===s&&(a=p(e),s.parentNode.insertBefore(e,s));-1!==o&&n[o].index===l;){if(a>0){for(;-1!==o;)n[o].index+=a,o=u(n,o);return}o=u(n,o)}}(s,o,a.firstChild):a.insertBefore(o,a.firstChild),window.ShadyCSS.prepareTemplateStyles(i,t);const l=a.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==l)e.insertBefore(l.cloneNode(!0),e.firstChild);else if(s){a.insertBefore(o,a.firstChild);const t=new Set;t.add(o),c(s,t)}})(n,l,t.value instanceof g?t.value.template:void 0),e(s,s.firstChild),s.appendChild(l),k.set(s,t)}!r&&o&&window.ShadyCSS.styleElement(s.host)},K.shadowRootOptions={mode:"open"}})();
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
4
+ * This code may only be used under the BSD style license found at
5
+ * http://polymer.github.io/LICENSE.txt
6
+ * The complete set of authors may be found at
7
+ * http://polymer.github.io/AUTHORS.txt
8
+ * The complete set of contributors may be found at
9
+ * http://polymer.github.io/CONTRIBUTORS.txt
10
+ * Code distributed by Google as part of the polymer project is also
11
+ * subject to an additional IP rights grant found at
12
+ * http://polymer.github.io/PATENTS.txt
13
+ */
14
+
15
+ /**
16
+ @license
17
+ Copyright (c) 2019 The Polymer Project Authors. All rights reserved.
18
+ This code may only be used under the BSD style license found at
19
+ http://polymer.github.io/LICENSE.txt The complete set of authors may be found at
20
+ http://polymer.github.io/AUTHORS.txt The complete set of contributors may be
21
+ found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as
22
+ part of the polymer project is also subject to an additional IP rights grant
23
+ found at http://polymer.github.io/PATENTS.txt
24
+ */
package/lib/index.js CHANGED
@@ -1103,6 +1103,96 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
1103
1103
  });
1104
1104
  });
1105
1105
  };
1106
+ /**
1107
+ * 异步构建配体口袋组件
1108
+ * 创建配体和周围环境两个组件
1109
+ */
1110
+ DrugflowMolstarPlugin.prototype.buildLigandPocketComponentsAsync = function (structureId, ligandId, ligandInfo, radius) {
1111
+ if (radius === void 0) { radius = 5; }
1112
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
1113
+ var componentRefs, timestamp, chainId, resId, parts, ligandQuery, surroundingsQuery, ligandRef, surroundingsRef;
1114
+ return tslib_1.__generator(this, function (_b) {
1115
+ switch (_b.label) {
1116
+ case 0:
1117
+ componentRefs = [];
1118
+ timestamp = Date.now();
1119
+ chainId = 'A';
1120
+ if (ligandInfo.site) {
1121
+ parts = ligandInfo.site.split(':');
1122
+ if (parts.length >= 1)
1123
+ chainId = parts[0];
1124
+ if (parts.length >= 2)
1125
+ resId = parseInt(parts[1]);
1126
+ }
1127
+ if (ligandInfo.name) {
1128
+ // 通过配体名称查询
1129
+ ligandQuery = (0, structure_selection_query_1.StructureSelectionQuery)("Ligand_".concat(ligandInfo.name), builder_1.MolScriptBuilder.struct.modifier.union([
1130
+ builder_1.MolScriptBuilder.struct.generator.atomGroups({
1131
+ 'chain-test': builder_1.MolScriptBuilder.core.rel.eq([builder_1.MolScriptBuilder.ammp('auth_asym_id'), chainId]),
1132
+ 'residue-test': builder_1.MolScriptBuilder.core.rel.eq([builder_1.MolScriptBuilder.ammp('auth_comp_id'), ligandInfo.name.toUpperCase()])
1133
+ })
1134
+ ]), {
1135
+ description: "Ligand ".concat(ligandInfo.name),
1136
+ category: structure_selection_query_1.StructureSelectionCategory.Manipulate,
1137
+ referencesCurrent: true
1138
+ });
1139
+ }
1140
+ else if (resId !== undefined) {
1141
+ // 通过残基ID查询
1142
+ ligandQuery = (0, structure_selection_query_1.StructureSelectionQuery)("Ligand_".concat(resId), builder_1.MolScriptBuilder.struct.modifier.union([
1143
+ builder_1.MolScriptBuilder.struct.generator.atomGroups({
1144
+ 'chain-test': builder_1.MolScriptBuilder.core.rel.eq([builder_1.MolScriptBuilder.ammp('auth_asym_id'), chainId]),
1145
+ 'residue-test': builder_1.MolScriptBuilder.core.rel.eq([builder_1.MolScriptBuilder.ammp('auth_seq_id'), resId])
1146
+ })
1147
+ ]), {
1148
+ description: "Ligand at ".concat(chainId, ":").concat(resId),
1149
+ category: structure_selection_query_1.StructureSelectionCategory.Manipulate,
1150
+ referencesCurrent: true
1151
+ });
1152
+ }
1153
+ else {
1154
+ // 使用默认配体查询(所有配体)
1155
+ ligandQuery = structure_selection_query_1.StructureSelectionQueries.ligand;
1156
+ }
1157
+ surroundingsQuery = (0, structure_selection_query_1.StructureSelectionQuery)('Surroundings', builder_1.MolScriptBuilder.struct.modifier.union([
1158
+ builder_1.MolScriptBuilder.struct.modifier.exceptBy({
1159
+ 0: builder_1.MolScriptBuilder.struct.modifier.includeSurroundings({
1160
+ 0: ligandQuery.expression,
1161
+ radius: radius,
1162
+ 'as-whole-residues': true
1163
+ }),
1164
+ by: ligandQuery.expression
1165
+ })
1166
+ ]), {
1167
+ description: "Surroundings within ".concat(radius, "\u00C5"),
1168
+ category: structure_selection_query_1.StructureSelectionCategory.Manipulate,
1169
+ referencesCurrent: true
1170
+ });
1171
+ return [4 /*yield*/, this.createComponent({
1172
+ type: 'custom',
1173
+ expression: ligandQuery.expression,
1174
+ structureId: structureId,
1175
+ componentRef: "Ligand_".concat(ligandId, "_").concat(timestamp)
1176
+ })];
1177
+ case 1:
1178
+ ligandRef = _b.sent();
1179
+ if (ligandRef)
1180
+ componentRefs.push(ligandRef);
1181
+ return [4 /*yield*/, this.createComponent({
1182
+ type: 'custom',
1183
+ expression: surroundingsQuery.expression,
1184
+ structureId: structureId,
1185
+ componentRef: "Surroundings_".concat(ligandId, "_").concat(timestamp)
1186
+ })];
1187
+ case 2:
1188
+ surroundingsRef = _b.sent();
1189
+ if (surroundingsRef)
1190
+ componentRefs.push(surroundingsRef);
1191
+ return [2 /*return*/, componentRefs];
1192
+ }
1193
+ });
1194
+ });
1195
+ };
1106
1196
  /**
1107
1197
  * 渲染配体口袋(ligand + surrounding)
1108
1198
  * @deprecated 旧的同步builder方式,建议使用 createComponent() 结合自定义查询
@@ -1634,75 +1724,130 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
1634
1724
  });
1635
1725
  });
1636
1726
  };
1637
- // async loadLigandPocket(
1638
- // url: string,
1639
- // ligandInfo: {
1640
- // name?: string;
1641
- // site?: string; // 格式: "A:123" (chainId:resId)
1642
- // },
1643
- // format: 'mmcif' | 'pdb' | 'sdf' | 'mol' | 'mol2' | 'xyz' | 'gro' | 'pdbqt' | 'cifCore' = 'mmcif',
1644
- // options?: {
1645
- // isBinary?: boolean;
1646
- // modelIndex?: number;
1647
- // pdbString?: string;
1648
- // }
1649
- // ) {
1650
- // const {
1651
- // isBinary = false,
1652
- // modelIndex = 0,
1653
- // pdbString = ''
1654
- // } = options || {};
1655
- // await this.load_tree({
1656
- // url,
1657
- // format,
1658
- // isBinary,
1659
- // pdb_string: pdbString,
1660
- // render_type: 'ligand_view',
1661
- // render_id: '0',
1662
- // ligand_name: ligandInfo.name || '',
1663
- // ligand_site: ligandInfo.site || '',
1664
- // modelIndex
1665
- // });
1666
- // }
1667
- // async loadPeptide(
1668
- // url: string,
1669
- // format: 'mmcif' | 'pdb' | 'sdf' | 'mol' | 'mol2' | 'xyz' | 'gro' | 'pdbqt' | 'cifCore' = 'mmcif',
1670
- // options?: {
1671
- // isBinary?: boolean;
1672
- // modelIndex?: number;
1673
- // showBackground?: boolean; // 是否显示背景(非多肽聚合物)
1674
- // showLigand?: boolean;
1675
- // showWater?: boolean;
1676
- // pdbString?: string;
1677
- // }
1678
- // ) {
1679
- // const {
1680
- // isBinary = false,
1681
- // modelIndex = 0,
1682
- // showBackground = false,
1683
- // showLigand = true,
1684
- // showWater = false,
1685
- // pdbString = ''
1686
- // } = options || {};
1687
- // const renderType = showBackground ? 'peptide_background' : 'peptide';
1688
- // await this.load_tree({
1689
- // url,
1690
- // format,
1691
- // isBinary,
1692
- // pdb_string: pdbString,
1693
- // render_type: renderType,
1694
- // render_id: '0',
1695
- // modelIndex
1696
- // });
1697
- // // 如果是peptide_background模式,根据选项调整显示
1698
- // if (showBackground && (!showLigand || !showWater)) {
1699
- // await this.recreate_s_c({
1700
- // polymer: true,
1701
- // ligand: showLigand,
1702
- // water: showWater
1703
- // });
1704
- // }
1705
- // }
1727
+ /**
1728
+ * 加载并渲染配体口袋
1729
+ * 流程:Load Data → Parse Model → Add Structure → Create Ligand Pocket Components
1730
+ *
1731
+ * 支持多次调用创建多个配体口袋叠加视图进行比较
1732
+ *
1733
+ * @param url - PDB文件URL
1734
+ * @param ligandInfo - 配体信息
1735
+ * @param format - 文件格式
1736
+ * @param options - 可选参数
1737
+ * @returns 创建的组件引用列表 [ligandRef, surroundingsRef]
1738
+ *
1739
+ */
1740
+ DrugflowMolstarPlugin.prototype.loadLigandPocket = function (url, ligandInfo, format, options) {
1741
+ if (format === void 0) { format = 'mmcif'; }
1742
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
1743
+ var _b, _c, isBinary, _d, modelIndex, _e, pdbString, _f, clearPrevious, _g, radius, ligandId, structureId, state, data, model, structureBuilder, componentRefs, error_2;
1744
+ return tslib_1.__generator(this, function (_h) {
1745
+ switch (_h.label) {
1746
+ case 0:
1747
+ _b = options || {}, _c = _b.isBinary, isBinary = _c === void 0 ? false : _c, _d = _b.modelIndex, modelIndex = _d === void 0 ? 0 : _d, _e = _b.pdbString, pdbString = _e === void 0 ? '' : _e, _f = _b.clearPrevious, clearPrevious = _f === void 0 ? true : _f, _g = _b.radius, radius = _g === void 0 ? 5 : _g;
1748
+ ligandId = ligandInfo.ligandId || ligandInfo.name || '0';
1749
+ structureId = clearPrevious ? '0' : ligandId || '0';
1750
+ _h.label = 1;
1751
+ case 1:
1752
+ _h.trys.push([1, 8, , 9]);
1753
+ if (!clearPrevious) return [3 /*break*/, 3];
1754
+ state = this.plugin.state.data;
1755
+ return [4 /*yield*/, commands_1.PluginCommands.State.RemoveObject(this.plugin, {
1756
+ state: state,
1757
+ ref: state.tree.root.ref
1758
+ })];
1759
+ case 2:
1760
+ _h.sent();
1761
+ _h.label = 3;
1762
+ case 3:
1763
+ // 🔹 Step 2: 加载数据
1764
+ console.log('📥 Loading data for ligand pocket...');
1765
+ return [4 /*yield*/, this.loadData({
1766
+ url: url,
1767
+ pdbString: pdbString,
1768
+ isBinary: isBinary
1769
+ })];
1770
+ case 4:
1771
+ data = _h.sent();
1772
+ // 🔹 Step 3: 解析并创建模型
1773
+ console.log('🧬 Parsing model...');
1774
+ return [4 /*yield*/, this.parseAndCreateModel(data, format, modelIndex)];
1775
+ case 5:
1776
+ model = _h.sent();
1777
+ // 🔹 Step 4: 创建结构
1778
+ console.log('🏗️ Creating structure...');
1779
+ structureBuilder = this.createBaseStructure(model, structureId);
1780
+ return [4 /*yield*/, this.applyState(structureBuilder)];
1781
+ case 6:
1782
+ _h.sent();
1783
+ // 🔹 Step 5: 创建配体口袋组件
1784
+ console.log('📦 Creating ligand pocket components...');
1785
+ return [4 /*yield*/, this.buildLigandPocketComponentsAsync(structureId, ligandId, ligandInfo, radius)];
1786
+ case 7:
1787
+ componentRefs = _h.sent();
1788
+ // 🔹 Step 6: 更新引用并触发事件
1789
+ if (clearPrevious) {
1790
+ this.updateAssemblyRef();
1791
+ }
1792
+ this.events.loadComplete.next(true);
1793
+ console.log("\u2705 Loaded ligand pocket with ".concat(componentRefs.length, " components:"), componentRefs);
1794
+ return [2 /*return*/, componentRefs];
1795
+ case 8:
1796
+ error_2 = _h.sent();
1797
+ console.error('❌ Error loading ligand pocket:', error_2);
1798
+ throw error_2;
1799
+ case 9: return [2 /*return*/];
1800
+ }
1801
+ });
1802
+ });
1803
+ };
1804
+ /**
1805
+ * 加载并渲染多肽链
1806
+ *
1807
+ * @deprecated 该方法仍使用旧的 load_tree 流程,将来会重构为新架构
1808
+ *
1809
+ * @param url - PDB文件URL
1810
+ * @param format - 文件格式
1811
+ * @param options - 可选参数
1812
+ */
1813
+ DrugflowMolstarPlugin.prototype.loadPeptide = function (url, format, options) {
1814
+ if (format === void 0) { format = 'mmcif'; }
1815
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
1816
+ var _b, _c, isBinary, _d, modelIndex, _e, showBackground, _f, showLigand, _g, showWater, _h, pdbString, renderType;
1817
+ return tslib_1.__generator(this, function (_k) {
1818
+ switch (_k.label) {
1819
+ case 0:
1820
+ _b = options || {}, _c = _b.isBinary, isBinary = _c === void 0 ? false : _c, _d = _b.modelIndex, modelIndex = _d === void 0 ? 0 : _d, _e = _b.showBackground, showBackground = _e === void 0 ? false : _e, _f = _b.showLigand, showLigand = _f === void 0 ? true : _f, _g = _b.showWater, showWater = _g === void 0 ? false : _g, _h = _b.pdbString, pdbString = _h === void 0 ? '' : _h;
1821
+ renderType = showBackground ? 'peptide_background' : 'peptide';
1822
+ // @ts-ignore - 使用旧的load_tree方法,将来会重构
1823
+ return [4 /*yield*/, this.load_tree({
1824
+ url: url,
1825
+ format: format,
1826
+ isBinary: isBinary,
1827
+ pdb_string: pdbString,
1828
+ render_type: renderType,
1829
+ render_id: '0',
1830
+ modelIndex: modelIndex
1831
+ })];
1832
+ case 1:
1833
+ // @ts-ignore - 使用旧的load_tree方法,将来会重构
1834
+ _k.sent();
1835
+ if (!(showBackground && (!showLigand || !showWater))) return [3 /*break*/, 3];
1836
+ // @ts-ignore - 使用旧的recreate_s_c方法
1837
+ return [4 /*yield*/, this.recreate_s_c({
1838
+ polymer: true,
1839
+ ligand: showLigand,
1840
+ water: showWater
1841
+ })];
1842
+ case 2:
1843
+ // @ts-ignore - 使用旧的recreate_s_c方法
1844
+ _k.sent();
1845
+ _k.label = 3;
1846
+ case 3: return [2 /*return*/];
1847
+ }
1848
+ });
1849
+ });
1850
+ };
1706
1851
  DrugflowMolstarPlugin.prototype.getObj = function (ref) {
1707
1852
  var state = this.plugin.state.data;
1708
1853
  var cell = state.select(ref)[0];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drugflow-molstar",
3
- "version": "0.3.56",
3
+ "version": "0.3.57",
4
4
  "description": "Molstar implementation for DrugFlow",
5
5
  "main": "index.js",
6
6
  "scripts": {