drugflow-molstar 0.3.53 → 0.3.54
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/build/drugflow-molstar-0.3.54.css +1 -0
- package/build/drugflow-molstar-component-0.3.53.js +1 -1
- package/build/drugflow-molstar-component-0.3.54.js +25 -0
- package/build/drugflow-molstar-plugin-0.3.53.js +1 -1
- package/build/drugflow-molstar-plugin-0.3.54.js +2 -0
- package/build/drugflow-molstar-plugin-0.3.54.js.LICENSE.txt +39 -0
- package/lib/drugflow-molstar-component-build-0.3.54.js +2 -0
- package/lib/drugflow-molstar-component-build-0.3.54.js.LICENSE.txt +24 -0
- package/lib/index.js +281 -18
- package/package.json +1 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license React
|
|
3
|
+
* react-dom.production.min.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @license React
|
|
13
|
+
* react-jsx-runtime.production.min.js
|
|
14
|
+
*
|
|
15
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
16
|
+
*
|
|
17
|
+
* This source code is licensed under the MIT license found in the
|
|
18
|
+
* LICENSE file in the root directory of this source tree.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @license React
|
|
23
|
+
* react.production.min.js
|
|
24
|
+
*
|
|
25
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
26
|
+
*
|
|
27
|
+
* This source code is licensed under the MIT license found in the
|
|
28
|
+
* LICENSE file in the root directory of this source tree.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @license React
|
|
33
|
+
* scheduler.production.min.js
|
|
34
|
+
*
|
|
35
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
36
|
+
*
|
|
37
|
+
* This source code is licensed under the MIT license found in the
|
|
38
|
+
* LICENSE file in the root directory of this source tree.
|
|
39
|
+
*/
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see drugflow-molstar-component-build-0.3.54.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
|
@@ -986,15 +986,17 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
|
|
|
986
986
|
// ============================================
|
|
987
987
|
// Structure Component Creators - 创建结构组件
|
|
988
988
|
// ============================================
|
|
989
|
+
// 注意:这些方法已弃用,请使用 createComponent() 方法
|
|
990
|
+
// 保留这些方法仅用于向后兼容
|
|
989
991
|
/**
|
|
990
|
-
*
|
|
992
|
+
* @deprecated 请使用 createComponent({ type: 'polymer' })
|
|
991
993
|
*/
|
|
992
994
|
DrugflowMolstarPlugin.prototype.addPolymerComponent = function (builder, ref) {
|
|
993
995
|
if (ref === void 0) { ref = 'Polymer'; }
|
|
994
996
|
builder.apply(transforms_1.StateTransforms.Model.StructureComponent, { type: { name: 'static', params: 'polymer' } }, { ref: ref });
|
|
995
997
|
};
|
|
996
998
|
/**
|
|
997
|
-
*
|
|
999
|
+
* @deprecated 请使用 createComponent({ type: 'ligand' })
|
|
998
1000
|
*/
|
|
999
1001
|
DrugflowMolstarPlugin.prototype.addLigandComponent = function (builder, ref) {
|
|
1000
1002
|
if (ref === void 0) { ref = 'Ligand'; }
|
|
@@ -1002,7 +1004,7 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
|
|
|
1002
1004
|
builder.apply(transforms_1.StateTransforms.Model.StructureComponent, { type: { name: 'expression', params: ligandQuery.expression } }, { ref: ref });
|
|
1003
1005
|
};
|
|
1004
1006
|
/**
|
|
1005
|
-
*
|
|
1007
|
+
* @deprecated 请使用 createComponent({ type: 'water' })
|
|
1006
1008
|
*/
|
|
1007
1009
|
DrugflowMolstarPlugin.prototype.addWaterComponent = function (builder, ref) {
|
|
1008
1010
|
if (ref === void 0) { ref = 'Water'; }
|
|
@@ -1049,6 +1051,7 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
|
|
|
1049
1051
|
};
|
|
1050
1052
|
/**
|
|
1051
1053
|
* 渲染完整蛋白(polymer + ligand + water)
|
|
1054
|
+
* @deprecated 建议使用 buildFullProteinStructureAsync
|
|
1052
1055
|
*/
|
|
1053
1056
|
DrugflowMolstarPlugin.prototype.buildFullProteinStructure = function (builder, options) {
|
|
1054
1057
|
if (options === void 0) { options = {}; }
|
|
@@ -1061,8 +1064,64 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
|
|
|
1061
1064
|
this.addWaterComponent(builder);
|
|
1062
1065
|
return builder;
|
|
1063
1066
|
};
|
|
1067
|
+
/**
|
|
1068
|
+
* 异步构建完整蛋白结构(推荐使用)
|
|
1069
|
+
* 使用 createComponent API,结构更清晰
|
|
1070
|
+
*/
|
|
1071
|
+
DrugflowMolstarPlugin.prototype.buildFullProteinStructureAsync = function (structureId, options) {
|
|
1072
|
+
if (structureId === void 0) { structureId = '0'; }
|
|
1073
|
+
if (options === void 0) { options = {}; }
|
|
1074
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
1075
|
+
var _b, polymer, _c, ligand, _d, water, componentRefs, ref, ref, ref;
|
|
1076
|
+
return tslib_1.__generator(this, function (_e) {
|
|
1077
|
+
switch (_e.label) {
|
|
1078
|
+
case 0:
|
|
1079
|
+
_b = options.polymer, polymer = _b === void 0 ? true : _b, _c = options.ligand, ligand = _c === void 0 ? true : _c, _d = options.water, water = _d === void 0 ? true : _d;
|
|
1080
|
+
componentRefs = [];
|
|
1081
|
+
if (!polymer) return [3 /*break*/, 2];
|
|
1082
|
+
return [4 /*yield*/, this.createComponent({
|
|
1083
|
+
type: 'polymer',
|
|
1084
|
+
structureId: structureId,
|
|
1085
|
+
componentRef: 'Polymer'
|
|
1086
|
+
})];
|
|
1087
|
+
case 1:
|
|
1088
|
+
ref = _e.sent();
|
|
1089
|
+
if (ref)
|
|
1090
|
+
componentRefs.push(ref);
|
|
1091
|
+
_e.label = 2;
|
|
1092
|
+
case 2:
|
|
1093
|
+
if (!ligand) return [3 /*break*/, 4];
|
|
1094
|
+
return [4 /*yield*/, this.createComponent({
|
|
1095
|
+
type: 'ligand',
|
|
1096
|
+
structureId: structureId,
|
|
1097
|
+
componentRef: 'Ligand'
|
|
1098
|
+
})];
|
|
1099
|
+
case 3:
|
|
1100
|
+
ref = _e.sent();
|
|
1101
|
+
if (ref)
|
|
1102
|
+
componentRefs.push(ref);
|
|
1103
|
+
_e.label = 4;
|
|
1104
|
+
case 4:
|
|
1105
|
+
if (!water) return [3 /*break*/, 6];
|
|
1106
|
+
return [4 /*yield*/, this.createComponent({
|
|
1107
|
+
type: 'water',
|
|
1108
|
+
structureId: structureId,
|
|
1109
|
+
componentRef: 'Water'
|
|
1110
|
+
})];
|
|
1111
|
+
case 5:
|
|
1112
|
+
ref = _e.sent();
|
|
1113
|
+
if (ref)
|
|
1114
|
+
componentRefs.push(ref);
|
|
1115
|
+
_e.label = 6;
|
|
1116
|
+
case 6: return [2 /*return*/, componentRefs];
|
|
1117
|
+
}
|
|
1118
|
+
});
|
|
1119
|
+
});
|
|
1120
|
+
};
|
|
1064
1121
|
/**
|
|
1065
1122
|
* 渲染配体口袋(ligand + surrounding)
|
|
1123
|
+
* @deprecated 旧的同步builder方式,建议使用 createComponent() 结合自定义查询
|
|
1124
|
+
* @private
|
|
1066
1125
|
*/
|
|
1067
1126
|
DrugflowMolstarPlugin.prototype.buildLigandPocketStructure = function (builder, ligandId, options) {
|
|
1068
1127
|
if (options === void 0) { options = {}; }
|
|
@@ -1072,6 +1131,8 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
|
|
|
1072
1131
|
};
|
|
1073
1132
|
/**
|
|
1074
1133
|
* 渲染多肽背景(non-peptide polymer + peptide + ligand + water)
|
|
1134
|
+
* @deprecated 旧的同步builder方式,建议使用 createComponent()
|
|
1135
|
+
* @private
|
|
1075
1136
|
*/
|
|
1076
1137
|
DrugflowMolstarPlugin.prototype.buildPeptideBackgroundStructure = function (builder, options) {
|
|
1077
1138
|
if (options === void 0) { options = {}; }
|
|
@@ -1087,6 +1148,8 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
|
|
|
1087
1148
|
};
|
|
1088
1149
|
/**
|
|
1089
1150
|
* 渲染多肽链
|
|
1151
|
+
* @deprecated 旧的同步builder方式,建议使用 createComponent()
|
|
1152
|
+
* @private
|
|
1090
1153
|
*/
|
|
1091
1154
|
DrugflowMolstarPlugin.prototype.buildPeptideStructure = function (builder, ligandId) {
|
|
1092
1155
|
this.addPeptideComponent(builder, 'Polymer_p' + ligandId);
|
|
@@ -1094,6 +1157,8 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
|
|
|
1094
1157
|
};
|
|
1095
1158
|
/**
|
|
1096
1159
|
* 渲染小分子(用于SDF格式)
|
|
1160
|
+
* @deprecated 旧的同步builder方式,建议使用 createComponent()
|
|
1161
|
+
* @private
|
|
1097
1162
|
*/
|
|
1098
1163
|
DrugflowMolstarPlugin.prototype.buildSmallMoleculeStructure = function (builder, ligandId) {
|
|
1099
1164
|
this.addSmallMoleculeComponent(builder, 'SmallMolecule_' + ligandId);
|
|
@@ -1101,6 +1166,13 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
|
|
|
1101
1166
|
};
|
|
1102
1167
|
/**
|
|
1103
1168
|
* 统一的结构创建接口
|
|
1169
|
+
*
|
|
1170
|
+
* @deprecated 该方法使用旧的同步builder方式。
|
|
1171
|
+
* 新代码应使用:
|
|
1172
|
+
* - `createComponent()` - 创建单个组件
|
|
1173
|
+
* - `buildFullProteinStructureAsync()` - 异步构建完整结构
|
|
1174
|
+
*
|
|
1175
|
+
* @private 仅供内部使用(load_tree 方法)
|
|
1104
1176
|
*/
|
|
1105
1177
|
DrugflowMolstarPlugin.prototype.create_structure_and_component = function (model, type, ligand_id, add_polymer, add_ligand, add_water, no_structure, ligand_name, ligand_site) {
|
|
1106
1178
|
if (add_polymer === void 0) { add_polymer = true; }
|
|
@@ -1217,6 +1289,30 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
|
|
|
1217
1289
|
};
|
|
1218
1290
|
/**
|
|
1219
1291
|
* 主加载方法 - 加载并渲染结构
|
|
1292
|
+
*
|
|
1293
|
+
* @deprecated 推荐使用以下新API替代:
|
|
1294
|
+
* - `loadFullProtein()` - 加载完整蛋白
|
|
1295
|
+
* - `loadLigandPocket()` - 加载配体口袋
|
|
1296
|
+
* - `loadPeptide()` - 加载多肽链
|
|
1297
|
+
*
|
|
1298
|
+
* 新API提供更清晰的流程和更好的控制:
|
|
1299
|
+
* @example
|
|
1300
|
+
* ```javascript
|
|
1301
|
+
* // 旧方式
|
|
1302
|
+
* await viewer.load_tree({
|
|
1303
|
+
* url,
|
|
1304
|
+
* format: 'pdb',
|
|
1305
|
+
* render_type: 'default'
|
|
1306
|
+
* });
|
|
1307
|
+
*
|
|
1308
|
+
* // 新方式(推荐)
|
|
1309
|
+
* const components = await viewer.loadFullProtein(url, 'pdb', {
|
|
1310
|
+
* showPolymer: true,
|
|
1311
|
+
* showLigand: true,
|
|
1312
|
+
* showWater: false
|
|
1313
|
+
* });
|
|
1314
|
+
* // 返回组件引用:['Polymer', 'Ligand']
|
|
1315
|
+
* ```
|
|
1220
1316
|
*/
|
|
1221
1317
|
DrugflowMolstarPlugin.prototype.load_tree = function (_b, fullLoad) {
|
|
1222
1318
|
var url = _b.url, _c = _b.format, format = _c === void 0 ? 'mmcif' : _c, _d = _b.isBinary, isBinary = _d === void 0 ? false : _d, _e = _b.assemblyId, assemblyId = _e === void 0 ? '' : _e, _f = _b.pdb_string, pdb_string = _f === void 0 ? '' : _f, _g = _b.if_render, if_render = _g === void 0 ? true : _g, _h = _b.render_type, render_type = _h === void 0 ? 'default' : _h, _k = _b.render_id, render_id = _k === void 0 ? '0' : _k, _l = _b.ligand_name, ligand_name = _l === void 0 ? '' : _l, _m = _b.modelIndex, modelIndex = _m === void 0 ? 0 : _m, _o = _b.ligand_site, ligand_site = _o === void 0 ? '' : _o;
|
|
@@ -1406,6 +1502,64 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
|
|
|
1406
1502
|
});
|
|
1407
1503
|
});
|
|
1408
1504
|
};
|
|
1505
|
+
/**
|
|
1506
|
+
* 创建新组件
|
|
1507
|
+
* @param options - 组件配置选项
|
|
1508
|
+
* @returns 组件引用
|
|
1509
|
+
*/
|
|
1510
|
+
DrugflowMolstarPlugin.prototype.createComponent = function (options) {
|
|
1511
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
1512
|
+
var type, componentRef, _b, structureId, expression, label, finalComponentRef, state, structureRef, structureCell, update, ligandQuery;
|
|
1513
|
+
return tslib_1.__generator(this, function (_c) {
|
|
1514
|
+
switch (_c.label) {
|
|
1515
|
+
case 0:
|
|
1516
|
+
type = options.type, componentRef = options.componentRef, _b = options.structureId, structureId = _b === void 0 ? '0' : _b, expression = options.expression, label = options.label;
|
|
1517
|
+
finalComponentRef = componentRef || "".concat(type, "_").concat(Date.now());
|
|
1518
|
+
state = this.plugin.state.data;
|
|
1519
|
+
structureRef = "Structure_".concat(structureId);
|
|
1520
|
+
structureCell = state.select(structureRef)[0];
|
|
1521
|
+
if (!structureCell) {
|
|
1522
|
+
console.warn("Structure ".concat(structureRef, " not found"));
|
|
1523
|
+
return [2 /*return*/, null];
|
|
1524
|
+
}
|
|
1525
|
+
update = state.build().to(structureRef);
|
|
1526
|
+
// 根据类型创建组件
|
|
1527
|
+
switch (type) {
|
|
1528
|
+
case 'polymer':
|
|
1529
|
+
update.apply(transforms_1.StateTransforms.Model.StructureComponent, { type: { name: 'static', params: 'polymer' } }, { ref: finalComponentRef });
|
|
1530
|
+
break;
|
|
1531
|
+
case 'ligand':
|
|
1532
|
+
ligandQuery = this.createLigandQuery(label || 'Ligand');
|
|
1533
|
+
update.apply(transforms_1.StateTransforms.Model.StructureComponent, { type: { name: 'expression', params: ligandQuery.expression } }, { ref: finalComponentRef });
|
|
1534
|
+
break;
|
|
1535
|
+
case 'water':
|
|
1536
|
+
update.apply(transforms_1.StateTransforms.Model.StructureComponent, { type: { name: 'static', params: 'water' } }, { ref: finalComponentRef });
|
|
1537
|
+
break;
|
|
1538
|
+
case 'ion':
|
|
1539
|
+
update.apply(transforms_1.StateTransforms.Model.StructureComponent, { type: { name: 'static', params: 'ion' } }, { ref: finalComponentRef });
|
|
1540
|
+
break;
|
|
1541
|
+
case 'all':
|
|
1542
|
+
update.apply(transforms_1.StateTransforms.Model.StructureComponent, { type: { name: 'static', params: 'all' } }, { ref: finalComponentRef });
|
|
1543
|
+
break;
|
|
1544
|
+
case 'custom':
|
|
1545
|
+
if (!expression) {
|
|
1546
|
+
console.error('Custom type requires expression parameter');
|
|
1547
|
+
return [2 /*return*/, null];
|
|
1548
|
+
}
|
|
1549
|
+
update.apply(transforms_1.StateTransforms.Model.StructureComponent, { type: { name: 'expression', params: expression } }, { ref: finalComponentRef });
|
|
1550
|
+
break;
|
|
1551
|
+
default:
|
|
1552
|
+
console.error("Unknown component type: ".concat(type));
|
|
1553
|
+
return [2 /*return*/, null];
|
|
1554
|
+
}
|
|
1555
|
+
return [4 /*yield*/, commands_1.PluginCommands.State.Update(this.plugin, { state: state, tree: update })];
|
|
1556
|
+
case 1:
|
|
1557
|
+
_c.sent();
|
|
1558
|
+
return [2 /*return*/, finalComponentRef];
|
|
1559
|
+
}
|
|
1560
|
+
});
|
|
1561
|
+
});
|
|
1562
|
+
};
|
|
1409
1563
|
/**
|
|
1410
1564
|
* 修改表示的显示类型
|
|
1411
1565
|
* @param reprRef - 表示引用
|
|
@@ -1474,35 +1628,73 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
|
|
|
1474
1628
|
* @param format - 文件格式 (mmcif, pdb, sdf等)
|
|
1475
1629
|
* @param options - 可选参数
|
|
1476
1630
|
*/
|
|
1631
|
+
/**
|
|
1632
|
+
* 加载完整蛋白结构
|
|
1633
|
+
* 流程:Load Data → Parse Model → Add Structure → Create Components
|
|
1634
|
+
*
|
|
1635
|
+
* @param url - 蛋白文件URL
|
|
1636
|
+
* @param format - 文件格式
|
|
1637
|
+
* @param options - 加载选项
|
|
1638
|
+
* @returns 创建的组件引用列表
|
|
1639
|
+
*/
|
|
1477
1640
|
DrugflowMolstarPlugin.prototype.loadFullProtein = function (url, format, options) {
|
|
1478
1641
|
if (format === void 0) { format = 'mmcif'; }
|
|
1479
1642
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
1480
|
-
var _b, _c, isBinary, _d, modelIndex, _e, showPolymer, _f, showLigand, _g, showWater, _h, pdbString;
|
|
1643
|
+
var _b, _c, isBinary, _d, modelIndex, _e, showPolymer, _f, showLigand, _g, showWater, _h, pdbString, structureId, state, data, model, structureBuilder, componentRefs, error_1;
|
|
1481
1644
|
return tslib_1.__generator(this, function (_k) {
|
|
1482
1645
|
switch (_k.label) {
|
|
1483
1646
|
case 0:
|
|
1484
1647
|
_b = options || {}, _c = _b.isBinary, isBinary = _c === void 0 ? false : _c, _d = _b.modelIndex, modelIndex = _d === void 0 ? 0 : _d, _e = _b.showPolymer, showPolymer = _e === void 0 ? true : _e, _f = _b.showLigand, showLigand = _f === void 0 ? true : _f, _g = _b.showWater, showWater = _g === void 0 ? true : _g, _h = _b.pdbString, pdbString = _h === void 0 ? '' : _h;
|
|
1485
|
-
|
|
1648
|
+
structureId = '0';
|
|
1649
|
+
_k.label = 1;
|
|
1650
|
+
case 1:
|
|
1651
|
+
_k.trys.push([1, 7, , 8]);
|
|
1652
|
+
state = this.plugin.state.data;
|
|
1653
|
+
return [4 /*yield*/, commands_1.PluginCommands.State.RemoveObject(this.plugin, {
|
|
1654
|
+
state: state,
|
|
1655
|
+
ref: state.tree.root.ref
|
|
1656
|
+
})];
|
|
1657
|
+
case 2:
|
|
1658
|
+
_k.sent();
|
|
1659
|
+
// 🔹 Step 2: 加载数据
|
|
1660
|
+
console.log('📥 Loading data...');
|
|
1661
|
+
return [4 /*yield*/, this.loadData({
|
|
1486
1662
|
url: url,
|
|
1487
|
-
|
|
1488
|
-
isBinary: isBinary
|
|
1489
|
-
pdb_string: pdbString,
|
|
1490
|
-
render_type: 'default',
|
|
1491
|
-
render_id: '0',
|
|
1492
|
-
modelIndex: modelIndex
|
|
1663
|
+
pdbString: pdbString,
|
|
1664
|
+
isBinary: isBinary
|
|
1493
1665
|
})];
|
|
1494
|
-
case
|
|
1666
|
+
case 3:
|
|
1667
|
+
data = _k.sent();
|
|
1668
|
+
// 🔹 Step 3: 解析并创建模型
|
|
1669
|
+
console.log('🧬 Parsing model...');
|
|
1670
|
+
return [4 /*yield*/, this.parseAndCreateModel(data, format, modelIndex)];
|
|
1671
|
+
case 4:
|
|
1672
|
+
model = _k.sent();
|
|
1673
|
+
// 🔹 Step 4: 创建结构
|
|
1674
|
+
console.log('🏗️ Creating structure...');
|
|
1675
|
+
structureBuilder = this.createBaseStructure(model, structureId);
|
|
1676
|
+
return [4 /*yield*/, this.applyState(structureBuilder)];
|
|
1677
|
+
case 5:
|
|
1495
1678
|
_k.sent();
|
|
1496
|
-
|
|
1497
|
-
|
|
1679
|
+
// 🔹 Step 5: 创建组件
|
|
1680
|
+
console.log('📦 Creating components...');
|
|
1681
|
+
return [4 /*yield*/, this.buildFullProteinStructureAsync(structureId, {
|
|
1498
1682
|
polymer: showPolymer,
|
|
1499
1683
|
ligand: showLigand,
|
|
1500
1684
|
water: showWater
|
|
1501
1685
|
})];
|
|
1502
|
-
case
|
|
1503
|
-
_k.sent();
|
|
1504
|
-
|
|
1505
|
-
|
|
1686
|
+
case 6:
|
|
1687
|
+
componentRefs = _k.sent();
|
|
1688
|
+
// 🔹 Step 6: 更新引用并触发事件
|
|
1689
|
+
this.updateAssemblyRef();
|
|
1690
|
+
this.events.loadComplete.next(true);
|
|
1691
|
+
console.log("\u2705 Loaded protein with ".concat(componentRefs.length, " components:"), componentRefs);
|
|
1692
|
+
return [2 /*return*/, componentRefs];
|
|
1693
|
+
case 7:
|
|
1694
|
+
error_1 = _k.sent();
|
|
1695
|
+
console.error('❌ Error loading protein:', error_1);
|
|
1696
|
+
throw error_1;
|
|
1697
|
+
case 8: return [2 /*return*/];
|
|
1506
1698
|
}
|
|
1507
1699
|
});
|
|
1508
1700
|
});
|
|
@@ -1587,6 +1779,77 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
|
|
|
1587
1779
|
return void 0;
|
|
1588
1780
|
return cell.obj.data;
|
|
1589
1781
|
};
|
|
1782
|
+
/**
|
|
1783
|
+
* 为组件添加3D表示
|
|
1784
|
+
*
|
|
1785
|
+
* @example
|
|
1786
|
+
* ```javascript
|
|
1787
|
+
* // 添加cartoon表示
|
|
1788
|
+
* await viewer.add_repr({
|
|
1789
|
+
* componentRef: 'Polymer',
|
|
1790
|
+
* type: 'cartoon',
|
|
1791
|
+
* colorTheme: 'secondary-structure'
|
|
1792
|
+
* });
|
|
1793
|
+
*
|
|
1794
|
+
* // 添加半透明surface
|
|
1795
|
+
* await viewer.add_repr({
|
|
1796
|
+
* componentRef: 'Polymer',
|
|
1797
|
+
* type: 'molecular-surface',
|
|
1798
|
+
* colorTheme: 'hydrophobicity',
|
|
1799
|
+
* alpha: 0.5
|
|
1800
|
+
* });
|
|
1801
|
+
* ```
|
|
1802
|
+
*
|
|
1803
|
+
* @param options - 表示配置选项
|
|
1804
|
+
* @returns 表示引用
|
|
1805
|
+
*/
|
|
1806
|
+
DrugflowMolstarPlugin.prototype.add_repr = function (options) {
|
|
1807
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
1808
|
+
var componentRef, reprRef, type, colorTheme, alpha, _b, visible, _c, structureId, _d, params, finalReprRef, structure, reprParams, tree;
|
|
1809
|
+
return tslib_1.__generator(this, function (_e) {
|
|
1810
|
+
switch (_e.label) {
|
|
1811
|
+
case 0:
|
|
1812
|
+
componentRef = options.componentRef, reprRef = options.reprRef, type = options.type, colorTheme = options.colorTheme, alpha = options.alpha, _b = options.visible, visible = _b === void 0 ? true : _b, _c = options.structureId, structureId = _c === void 0 ? '0' : _c, _d = options.params, params = _d === void 0 ? {} : _d;
|
|
1813
|
+
finalReprRef = reprRef || "".concat(componentRef, "_").concat(type, "_").concat(Date.now());
|
|
1814
|
+
structure = this.getObj('Structure_' + structureId);
|
|
1815
|
+
if (!structure) {
|
|
1816
|
+
console.warn("Structure_".concat(structureId, " not found"));
|
|
1817
|
+
return [2 /*return*/, null];
|
|
1818
|
+
}
|
|
1819
|
+
reprParams = tslib_1.__assign({ type: type }, params);
|
|
1820
|
+
// 设置颜色主题
|
|
1821
|
+
if (colorTheme) {
|
|
1822
|
+
reprParams.color = colorTheme; // 应该是 'color' 而不是 'colorTheme'
|
|
1823
|
+
}
|
|
1824
|
+
// 设置透明度(作为 type 的参数)
|
|
1825
|
+
if (alpha !== undefined) {
|
|
1826
|
+
reprParams.typeParams = reprParams.typeParams || {};
|
|
1827
|
+
reprParams.typeParams.alpha = alpha;
|
|
1828
|
+
}
|
|
1829
|
+
tree = this.visual_tree(structure, componentRef, finalReprRef, reprParams);
|
|
1830
|
+
if (!tree) {
|
|
1831
|
+
console.error('Failed to build visual tree');
|
|
1832
|
+
return [2 /*return*/, null];
|
|
1833
|
+
}
|
|
1834
|
+
return [4 /*yield*/, commands_1.PluginCommands.State.Update(this.plugin, {
|
|
1835
|
+
state: this.plugin.state.data,
|
|
1836
|
+
tree: tree
|
|
1837
|
+
})];
|
|
1838
|
+
case 1:
|
|
1839
|
+
_e.sent();
|
|
1840
|
+
// 控制可见性
|
|
1841
|
+
if (!visible) {
|
|
1842
|
+
this.set_visibility(finalReprRef);
|
|
1843
|
+
}
|
|
1844
|
+
return [2 /*return*/, finalReprRef];
|
|
1845
|
+
}
|
|
1846
|
+
});
|
|
1847
|
+
});
|
|
1848
|
+
};
|
|
1849
|
+
/**
|
|
1850
|
+
* @deprecated 使用 add_repr 替代
|
|
1851
|
+
* 旧的表示更新方法,保留用于向后兼容
|
|
1852
|
+
*/
|
|
1590
1853
|
DrugflowMolstarPlugin.prototype.update_comp_repr = function (comp_ref, repr_ref, if_show, params, ligand_id) {
|
|
1591
1854
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
1592
1855
|
var structure, tree;
|