drugflow-molstar 0.3.39 → 0.3.41

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,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,70 @@
1
+ import { Loci } from 'molstar/lib/mol-model/loci';
2
+ import { ParamDefinition as PD } from 'molstar/lib/mol-util/param-definition';
3
+ import { Representation, RepresentationParamsGetter, RepresentationContext } from 'molstar/lib/mol-repr/representation';
4
+ import { LabelOptions } from 'molstar/lib/mol-theme/label';
5
+ export interface ContactData {
6
+ pairs: Loci.Bundle<2>[];
7
+ }
8
+ export declare const ContactParams: {
9
+ visuals: PD.MultiSelect<"text" | "cylinder">;
10
+ unitLabel: PD.Text<string>;
11
+ borderWidth: PD.Numeric;
12
+ customText: PD.Text<string>;
13
+ textColor: PD.Color;
14
+ textSize: PD.Numeric;
15
+ sizeFactor: PD.Numeric;
16
+ borderColor: PD.Color;
17
+ offsetX: PD.Numeric;
18
+ offsetY: PD.Numeric;
19
+ offsetZ: PD.Numeric;
20
+ background: PD.BooleanParam;
21
+ backgroundMargin: PD.Numeric;
22
+ backgroundColor: PD.Color;
23
+ backgroundOpacity: PD.Numeric;
24
+ tether: PD.BooleanParam;
25
+ tetherLength: PD.Numeric;
26
+ tetherBaseWidth: PD.Numeric;
27
+ attachment: PD.Select<"bottom-left" | "bottom-center" | "bottom-right" | "middle-left" | "middle-center" | "middle-right" | "top-left" | "top-center" | "top-right">;
28
+ fontFamily: PD.Select<import("molstar/lib/mol-geo/geometry/text/font-atlas").FontFamily>;
29
+ fontQuality: PD.Select<number>;
30
+ fontStyle: PD.Select<import("molstar/lib/mol-geo/geometry/text/font-atlas").FontStyle>;
31
+ fontVariant: PD.Select<import("molstar/lib/mol-geo/geometry/text/font-atlas").FontVariant>;
32
+ fontWeight: PD.Select<import("molstar/lib/mol-geo/geometry/text/font-atlas").FontWeight>;
33
+ alpha: PD.Numeric;
34
+ quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
35
+ material: PD.Group<PD.Normalize<{
36
+ metalness: number;
37
+ roughness: number;
38
+ bumpiness: number;
39
+ }>>;
40
+ clip: PD.Group<PD.Normalize<{
41
+ variant: import("molstar/lib/mol-util/clip").Clip.Variant;
42
+ objects: PD.Normalize<{
43
+ type: any;
44
+ invert: any;
45
+ position: any;
46
+ rotation: any;
47
+ scale: any;
48
+ }>[];
49
+ }>>;
50
+ instanceGranularity: PD.BooleanParam;
51
+ lineSizeAttenuation: PD.BooleanParam;
52
+ linesSize: PD.Numeric;
53
+ dashLength: PD.Numeric;
54
+ interactionType: PD.Text<string>;
55
+ cylinderColor: PD.Color;
56
+ sizeAspectRatio: PD.Numeric;
57
+ doubleSided: PD.BooleanParam;
58
+ ignoreLight: PD.BooleanParam;
59
+ xrayShaded: PD.BooleanParam;
60
+ transparentBackfaces: PD.Select<string>;
61
+ bumpFrequency: PD.Numeric;
62
+ bumpAmplitude: PD.Numeric;
63
+ };
64
+ export declare type ContactParams = typeof ContactParams;
65
+ export declare type ContactProps = PD.Values<ContactParams>;
66
+ export declare function contactLabel(pair: Loci.Bundle<2>, options?: Partial<LabelOptions & {
67
+ interactionType: string;
68
+ }>): string;
69
+ export declare type ContactRepresentation = Representation<ContactData, ContactParams>;
70
+ export declare function ContactRepresentation(ctx: RepresentationContext, getParams: RepresentationParamsGetter<ContactData, ContactParams>): ContactRepresentation;
package/lib/contact.js ADDED
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContactRepresentation = exports.contactLabel = exports.ContactParams = void 0;
4
+ var tslib_1 = require("tslib");
5
+ // contact.ts
6
+ var loci_1 = require("molstar/lib/mol-model/loci");
7
+ var text_1 = require("molstar/lib/mol-geo/geometry/text/text");
8
+ var param_definition_1 = require("molstar/lib/mol-util/param-definition");
9
+ var names_1 = require("molstar/lib/mol-util/color/names");
10
+ var representation_1 = require("molstar/lib/mol-repr/shape/representation");
11
+ var representation_2 = require("molstar/lib/mol-repr/representation");
12
+ var shape_1 = require("molstar/lib/mol-model/shape");
13
+ var text_builder_1 = require("molstar/lib/mol-geo/geometry/text/text-builder");
14
+ var linear_algebra_1 = require("molstar/lib/mol-math/linear-algebra");
15
+ var marker_action_1 = require("molstar/lib/mol-util/marker-action");
16
+ var label_1 = require("molstar/lib/mol-theme/label");
17
+ var common_1 = require("molstar/lib/mol-repr/shape/loci/common");
18
+ var geometry_1 = require("molstar/lib/mol-math/geometry");
19
+ var cylinders_builder_1 = require("molstar/lib/mol-geo/geometry/cylinders/cylinders-builder");
20
+ var cylinders_1 = require("molstar/lib/mol-geo/geometry/cylinders/cylinders");
21
+ var label_2 = require("molstar/lib/mol-theme/label");
22
+ var SharedParams = {
23
+ unitLabel: param_definition_1.ParamDefinition.Text('\u212B', { isEssential: true }),
24
+ };
25
+ var CylinderParams = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, cylinders_1.Cylinders.Params), SharedParams), { lineSizeAttenuation: param_definition_1.ParamDefinition.Boolean(true), linesSize: param_definition_1.ParamDefinition.Numeric(0.075, { min: 0.01, max: 5, step: 0.01 }), dashLength: param_definition_1.ParamDefinition.Numeric(0.12, { min: 0.01, max: 0.2, step: 0.01 }), interactionType: param_definition_1.ParamDefinition.Text('', { isEssential: true }), cylinderColor: param_definition_1.ParamDefinition.Color(names_1.ColorNames.lightgreen, { isEssential: true }) });
26
+ var TextParams = tslib_1.__assign(tslib_1.__assign({}, common_1.LociLabelTextParams), SharedParams);
27
+ var ContactVisuals = {
28
+ cylinder: function (ctx, getParams) {
29
+ return (0, representation_1.ShapeRepresentation)(getCylindersShape, cylinders_1.Cylinders.Utils, {
30
+ modifyState: function (s) { return (tslib_1.__assign(tslib_1.__assign({}, s), { markerActions: marker_action_1.MarkerActions.Highlighting })); },
31
+ });
32
+ },
33
+ text: function (ctx, getParams) {
34
+ return (0, representation_1.ShapeRepresentation)(getTextShape, text_1.Text.Utils, {
35
+ modifyState: function (s) { return (tslib_1.__assign(tslib_1.__assign({}, s), { markerActions: marker_action_1.MarkerAction.None })); },
36
+ });
37
+ },
38
+ };
39
+ exports.ContactParams = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, CylinderParams), TextParams), { visuals: param_definition_1.ParamDefinition.MultiSelect(['cylinder', 'text'], param_definition_1.ParamDefinition.objectToOptions(ContactVisuals)) });
40
+ //
41
+ function contactLabel(pair, options) {
42
+ var _a;
43
+ if (options === void 0) { options = {}; }
44
+ var o = tslib_1.__assign(tslib_1.__assign({}, label_2.DefaultLabelOptions), options);
45
+ var label = (0, label_2.bundleLabel)(pair, o);
46
+ return "".concat((_a = o === null || o === void 0 ? void 0 : o.interactionType) !== null && _a !== void 0 ? _a : 'Distance', "</br>").concat(label);
47
+ }
48
+ exports.contactLabel = contactLabel;
49
+ function getContactState() {
50
+ return {
51
+ sphereA: (0, geometry_1.Sphere3D)(),
52
+ sphereB: (0, geometry_1.Sphere3D)(),
53
+ center: (0, linear_algebra_1.Vec3)(),
54
+ distance: 0,
55
+ };
56
+ }
57
+ function setContactState(pair, state) {
58
+ var sphereA = state.sphereA, sphereB = state.sphereB, center = state.center;
59
+ var _a = pair.loci, lociA = _a[0], lociB = _a[1];
60
+ loci_1.Loci.getBoundingSphere(lociA, sphereA);
61
+ loci_1.Loci.getBoundingSphere(lociB, sphereB);
62
+ linear_algebra_1.Vec3.add(center, sphereA.center, sphereB.center);
63
+ linear_algebra_1.Vec3.scale(center, center, 0.5);
64
+ state.distance = linear_algebra_1.Vec3.distance(sphereA.center, sphereB.center);
65
+ return state;
66
+ }
67
+ var tmpState = getContactState();
68
+ function getContactName(data, unitLabel) {
69
+ return data.pairs.length === 1
70
+ ? "Contact ".concat((0, label_1.distanceLabel)(data.pairs[0], {
71
+ unitLabel: unitLabel,
72
+ measureOnly: true,
73
+ }))
74
+ : "".concat(data.pairs.length, " Contacts");
75
+ }
76
+ //
77
+ function buildCylinders(data, props, cylinders) {
78
+ var builder = cylinders_builder_1.CylindersBuilder.create(128, 64, cylinders);
79
+ for (var i = 0, il = data.pairs.length; i < il; ++i) {
80
+ setContactState(data.pairs[i], tmpState);
81
+ // TODO: radiusScale: number, topCap: boolean, bottomCap: boolean
82
+ builder.addFixedLengthDashes(tmpState.sphereA.center, tmpState.sphereB.center, props.dashLength, 1, true, true, i);
83
+ }
84
+ return builder.getCylinders();
85
+ }
86
+ function getCylindersShape(ctx, data, props, shape) {
87
+ var cylinders = buildCylinders(data, props, shape && shape.geometry);
88
+ var name = getContactName(data, props.unitLabel);
89
+ var getLabel = function (groupId) {
90
+ return contactLabel(data.pairs[groupId], props);
91
+ };
92
+ return shape_1.Shape.create(name, data, cylinders, function () { return props.cylinderColor; }, function () { return props.linesSize; }, getLabel);
93
+ }
94
+ //
95
+ function buildText(data, props, text) {
96
+ var builder = text_builder_1.TextBuilder.create(props, 128, 64, text);
97
+ for (var i = 0, il = data.pairs.length; i < il; ++i) {
98
+ setContactState(data.pairs[i], tmpState);
99
+ var center = tmpState.center, distance = tmpState.distance, sphereA = tmpState.sphereA, sphereB = tmpState.sphereB;
100
+ var label = props.customText || "".concat(distance.toFixed(2), " ").concat(props.unitLabel);
101
+ var radius = Math.max(2, sphereA.radius, sphereB.radius);
102
+ var scale = radius / 2;
103
+ builder.add(label, center[0], center[1], center[2], 1, scale, i);
104
+ }
105
+ return builder.getText();
106
+ }
107
+ function getTextShape(ctx, data, props, shape) {
108
+ var text = buildText(data, props, shape && shape.geometry);
109
+ var name = getContactName(data, props.unitLabel);
110
+ var getLabel = function (groupId) {
111
+ return (0, label_1.distanceLabel)(data.pairs[groupId], props);
112
+ };
113
+ return shape_1.Shape.create(name, data, text, function () { return props.textColor; }, function () { return props.textSize; }, getLabel);
114
+ }
115
+ function ContactRepresentation(ctx, getParams) {
116
+ return representation_2.Representation.createMulti('Contact', ctx, getParams, representation_2.Representation.StateBuilder, ContactVisuals);
117
+ }
118
+ exports.ContactRepresentation = ContactRepresentation;
@@ -0,0 +1,2 @@
1
+ /*! For license information please see drugflow-molstar-component-build-0.3.40.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
+ */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see drugflow-molstar-component-build-0.3.41.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
@@ -29,6 +29,7 @@ var mesh_builder_1 = require("molstar/lib/mol-geo/geometry/mesh/mesh-builder");
29
29
  var linear_algebra_1 = require("molstar/lib/mol-math/linear-algebra");
30
30
  var int_1 = require("molstar/lib/mol-data/int");
31
31
  var names_1 = require("molstar/lib/mol-util/color/names");
32
+ var structure_contact3d_1 = require("./structure_contact3d");
32
33
  require('molstar/lib/mol-plugin-ui/skin/light.scss');
33
34
  var DrugflowMolstarPlugin = /** @class */ (function () {
34
35
  function DrugflowMolstarPlugin() {
@@ -960,7 +961,7 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
960
961
  return s;
961
962
  }
962
963
  else if (type === 'ligand_view') {
963
- this.create_ligand_view(s, ligand_id, true, ligand_name);
964
+ this.create_ligand_view(s, ligand_id, true, 'A', 0, ligand_name);
964
965
  return s;
965
966
  }
966
967
  return s;
@@ -1204,6 +1205,76 @@ var DrugflowMolstarPlugin = /** @class */ (function () {
1204
1205
  (_b = this.plugin.canvas3d) === null || _b === void 0 ? void 0 : _b.remove(selector.obj.data.repr);
1205
1206
  (_c = this.plugin.canvas3d) === null || _c === void 0 ? void 0 : _c.update();
1206
1207
  };
1208
+ DrugflowMolstarPlugin.prototype.add_contact = function (contactPair) {
1209
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
1210
+ var _b, structure_ref, start_query, end_query, interactionType, color, id, loci1, loci2;
1211
+ return tslib_1.__generator(this, function (_c) {
1212
+ switch (_c.label) {
1213
+ case 0:
1214
+ _b = contactPair !== null && contactPair !== void 0 ? contactPair : {}, structure_ref = _b.structure_ref, start_query = _b.start_query, end_query = _b.end_query, interactionType = _b.interactionType, color = _b.color, id = _b.id;
1215
+ loci1 = this.getLociForParams(start_query);
1216
+ loci2 = this.getLociForParams(end_query);
1217
+ if (!(loci1 && loci2)) return [3 /*break*/, 2];
1218
+ return [4 /*yield*/, this.addInteractionRepr(loci1, loci2, structure_ref, {
1219
+ interactionType: interactionType,
1220
+ cylinderParams: {
1221
+ cylinderColor: color,
1222
+ },
1223
+ visualParams: {
1224
+ visuals: ['cylinder'],
1225
+ },
1226
+ prolif_id: id
1227
+ })];
1228
+ case 1:
1229
+ _c.sent();
1230
+ _c.label = 2;
1231
+ case 2: return [2 /*return*/];
1232
+ }
1233
+ });
1234
+ });
1235
+ };
1236
+ DrugflowMolstarPlugin.prototype.addInteractionRepr = function (a, b, s_ref, options) {
1237
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
1238
+ var cellA, cellB, dependsOn, update;
1239
+ return tslib_1.__generator(this, function (_b) {
1240
+ switch (_b.label) {
1241
+ case 0:
1242
+ cellA = this.plugin.helpers.substructureParent.get(a.structure);
1243
+ cellB = this.plugin.helpers.substructureParent.get(b.structure);
1244
+ if (!cellA || !cellB)
1245
+ return [2 /*return*/];
1246
+ dependsOn = [cellA.transform.ref, cellB.transform.ref];
1247
+ update = this.plugin.state.data.build().to(s_ref);
1248
+ update.apply(transforms_1.StateTransforms.Model.MultiStructureSelectionFromExpression, {
1249
+ selections: [
1250
+ {
1251
+ key: 'a',
1252
+ groupId: 'a',
1253
+ ref: cellA.transform.ref,
1254
+ expression: structure_2.StructureElement.Loci.toExpression(a),
1255
+ },
1256
+ {
1257
+ key: 'b',
1258
+ groupId: 'b',
1259
+ ref: cellB.transform.ref,
1260
+ expression: structure_2.StructureElement.Loci.toExpression(b),
1261
+ },
1262
+ ],
1263
+ isTransitive: true,
1264
+ label: 'Contact',
1265
+ }, { dependsOn: dependsOn, tags: options === null || options === void 0 ? void 0 : options.selectionTags })
1266
+ .apply(structure_contact3d_1.StructureSelectionsContact3D, tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({ customText: (options === null || options === void 0 ? void 0 : options.customText) || '', unitLabel: options === null || options === void 0 ? void 0 : options.distanceUnitLabel, textColor: options === null || options === void 0 ? void 0 : options.textColor, interactionType: options === null || options === void 0 ? void 0 : options.interactionType }, options === null || options === void 0 ? void 0 : options.cylinderParams), options === null || options === void 0 ? void 0 : options.labelParams), options === null || options === void 0 ? void 0 : options.visualParams), { tags: options === null || options === void 0 ? void 0 : options.reprTags, ref: options.prolif_id });
1267
+ return [4 /*yield*/, commands_1.PluginCommands.State.Update(this.plugin, {
1268
+ state: this.plugin.state.data,
1269
+ tree: update
1270
+ })];
1271
+ case 1:
1272
+ _b.sent();
1273
+ return [2 /*return*/];
1274
+ }
1275
+ });
1276
+ });
1277
+ };
1207
1278
  return DrugflowMolstarPlugin;
1208
1279
  }());
1209
1280
  window.DrugflowMolstarPlugin = DrugflowMolstarPlugin;
@@ -0,0 +1,60 @@
1
+ import { StateTransformer } from 'molstar/lib/mol-state';
2
+ import { PluginStateObject as SO } from 'molstar/lib/mol-plugin-state/objects';
3
+ export { StructureSelectionsContact3D };
4
+ declare type StructureSelectionsContact3D = typeof StructureSelectionsContact3D;
5
+ declare const StructureSelectionsContact3D: StateTransformer<SO.Molecule.Structure.Selections, SO.Shape.Representation3D, import("molstar/lib/mol-util/param-definition").ParamDefinition.Normalize<{
6
+ visuals: ("text" | "cylinder")[];
7
+ unitLabel: string;
8
+ borderWidth: number;
9
+ customText: string;
10
+ textColor: import("molstar/lib/mol-util/color").Color;
11
+ textSize: number;
12
+ sizeFactor: number;
13
+ borderColor: import("molstar/lib/mol-util/color").Color;
14
+ offsetX: number;
15
+ offsetY: number;
16
+ offsetZ: number;
17
+ background: boolean;
18
+ backgroundMargin: number;
19
+ backgroundColor: import("molstar/lib/mol-util/color").Color;
20
+ backgroundOpacity: number;
21
+ tether: boolean;
22
+ tetherLength: number;
23
+ tetherBaseWidth: number;
24
+ attachment: "bottom-left" | "bottom-center" | "bottom-right" | "middle-left" | "middle-center" | "middle-right" | "top-left" | "top-center" | "top-right";
25
+ fontFamily: import("molstar/lib/mol-geo/geometry/text/font-atlas").FontFamily;
26
+ fontQuality: number;
27
+ fontStyle: import("molstar/lib/mol-geo/geometry/text/font-atlas").FontStyle;
28
+ fontVariant: import("molstar/lib/mol-geo/geometry/text/font-atlas").FontVariant;
29
+ fontWeight: import("molstar/lib/mol-geo/geometry/text/font-atlas").FontWeight;
30
+ alpha: number;
31
+ quality: "auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest";
32
+ material: import("molstar/lib/mol-util/param-definition").ParamDefinition.Normalize<{
33
+ metalness: number;
34
+ roughness: number;
35
+ bumpiness: number;
36
+ }>;
37
+ clip: import("molstar/lib/mol-util/param-definition").ParamDefinition.Normalize<{
38
+ variant: import("molstar/lib/mol-util/clip").Clip.Variant;
39
+ objects: import("molstar/lib/mol-util/param-definition").ParamDefinition.Normalize<{
40
+ type: any;
41
+ invert: any;
42
+ position: any;
43
+ rotation: any;
44
+ scale: any;
45
+ }>[];
46
+ }>;
47
+ instanceGranularity: boolean;
48
+ lineSizeAttenuation: boolean;
49
+ linesSize: number;
50
+ dashLength: number;
51
+ interactionType: string;
52
+ cylinderColor: import("molstar/lib/mol-util/color").Color;
53
+ sizeAspectRatio: number;
54
+ doubleSided: boolean;
55
+ ignoreLight: boolean;
56
+ xrayShaded: boolean;
57
+ transparentBackfaces: string;
58
+ bumpFrequency: number;
59
+ bumpAmplitude: number;
60
+ }>>;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StructureSelectionsContact3D = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var mol_state_1 = require("molstar/lib/mol-state");
6
+ var mol_task_1 = require("molstar/lib/mol-task");
7
+ var objects_1 = require("molstar/lib/mol-plugin-state/objects");
8
+ var helpers_1 = require("molstar/lib/mol-plugin-state/transforms/helpers");
9
+ var contact_1 = require("./contact");
10
+ var StructureSelectionsContact3D = objects_1.PluginStateTransform.BuiltIn({
11
+ name: 'structure-selections-contact-3d',
12
+ display: '3D Contact',
13
+ from: objects_1.PluginStateObject.Molecule.Structure.Selections,
14
+ to: objects_1.PluginStateObject.Shape.Representation3D,
15
+ params: function () { return (tslib_1.__assign({}, contact_1.ContactParams)); }
16
+ })({
17
+ canAutoUpdate: function (_a) {
18
+ var oldParams = _a.oldParams, newParams = _a.newParams;
19
+ return true;
20
+ },
21
+ apply: function (_a, plugin) {
22
+ var _this = this;
23
+ var a = _a.a, params = _a.params;
24
+ return mol_task_1.Task.create('Structure Contact', function (ctx) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
25
+ var data, repr;
26
+ var _a;
27
+ return tslib_1.__generator(this, function (_b) {
28
+ switch (_b.label) {
29
+ case 0:
30
+ data = (0, helpers_1.getDistanceDataFromStructureSelections)(a.data);
31
+ repr = (0, contact_1.ContactRepresentation)(tslib_1.__assign({ webgl: (_a = plugin.canvas3d) === null || _a === void 0 ? void 0 : _a.webgl }, plugin.representation.structure.themes), function () { return contact_1.ContactParams; });
32
+ return [4 /*yield*/, repr.createOrUpdate(params, data).runInContext(ctx)];
33
+ case 1:
34
+ _b.sent();
35
+ return [2 /*return*/, new objects_1.PluginStateObject.Shape.Representation3D({ repr: repr, sourceData: data }, { label: "Contact" })];
36
+ }
37
+ });
38
+ }); });
39
+ },
40
+ update: function (_a, plugin) {
41
+ var _this = this;
42
+ var a = _a.a, b = _a.b, oldParams = _a.oldParams, newParams = _a.newParams;
43
+ return mol_task_1.Task.create('Structure Contact', function (ctx) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
44
+ var props, data;
45
+ return tslib_1.__generator(this, function (_a) {
46
+ switch (_a.label) {
47
+ case 0:
48
+ props = tslib_1.__assign(tslib_1.__assign({}, b.data.repr.props), newParams);
49
+ data = (0, helpers_1.getDistanceDataFromStructureSelections)(a.data);
50
+ return [4 /*yield*/, b.data.repr.createOrUpdate(props, data).runInContext(ctx)];
51
+ case 1:
52
+ _a.sent();
53
+ b.data.sourceData = data;
54
+ return [2 /*return*/, mol_state_1.StateTransformer.UpdateResult.Updated];
55
+ }
56
+ });
57
+ }); });
58
+ },
59
+ });
60
+ exports.StructureSelectionsContact3D = StructureSelectionsContact3D;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drugflow-molstar",
3
- "version": "0.3.39",
3
+ "version": "0.3.41",
4
4
  "description": "Molstar implementation for DrugFlow",
5
5
  "main": "index.js",
6
6
  "scripts": {