drugflow-molstar 0.2.1 → 0.2.2

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.
Files changed (113) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +15 -15
  3. package/build/{drugflow-molstar-component-0.2.1.js → drugflow-molstar-component-0.2.2.js} +4 -4
  4. package/build/drugflow-molstar-light.css +1 -1
  5. package/build/{drugflow-molstar-plugin-0.2.1.js → drugflow-molstar-plugin-0.2.2.js} +2 -2
  6. package/lib/alphafold-transparency.d.ts +6 -6
  7. package/lib/alphafold-transparency.js +153 -153
  8. package/lib/app/molstar/lib/apps/docking-viewer/index.html +37 -0
  9. package/lib/app/molstar/lib/apps/viewer/embedded.html +44 -0
  10. package/lib/app/molstar/lib/apps/viewer/favicon.ico +0 -0
  11. package/lib/app/molstar/lib/apps/viewer/index.html +110 -0
  12. package/lib/app/molstar/lib/examples/alpha-orbitals/index.html +73 -0
  13. package/lib/app/molstar/lib/examples/basic-wrapper/index.html +138 -0
  14. package/lib/app/molstar/lib/examples/lighting/index.html +89 -0
  15. package/lib/app/molstar/lib/examples/proteopedia-wrapper/index.html +237 -0
  16. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/base.scss +33 -0
  17. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/controls-base.scss +334 -0
  18. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/controls.scss +419 -0
  19. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/help.scss +27 -0
  20. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/line-graph.scss +68 -0
  21. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/log.scss +100 -0
  22. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/misc.scss +644 -0
  23. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/sequence.scss +126 -0
  24. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/slider.scss +166 -0
  25. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -0
  26. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/toast.scss +84 -0
  27. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/transformer.scss +164 -0
  28. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/viewport.scss +128 -0
  29. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/layout/common.scss +72 -0
  30. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +90 -0
  31. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +99 -0
  32. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +109 -0
  33. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/layout.scss +41 -0
  34. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/logo.scss +13 -0
  35. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/normalize.scss +210 -0
  36. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/ui.scss +41 -0
  37. package/lib/app/molstar/lib/mol-plugin-ui/skin/base/variables.scss +86 -0
  38. package/lib/app/molstar/lib/mol-plugin-ui/skin/blue.scss +2 -0
  39. package/lib/app/molstar/lib/mol-plugin-ui/skin/colors/blue.scss +24 -0
  40. package/lib/app/molstar/lib/mol-plugin-ui/skin/colors/dark.scss +24 -0
  41. package/lib/app/molstar/lib/mol-plugin-ui/skin/colors/light.scss +30 -0
  42. package/lib/app/molstar/lib/mol-plugin-ui/skin/dark.scss +2 -0
  43. package/lib/app/molstar/lib/mol-plugin-ui/skin/light.scss +2 -0
  44. package/lib/custom-events.d.ts +4 -4
  45. package/lib/custom-events.js +56 -56
  46. package/lib/domain-annotations/behavior.d.ts +5 -5
  47. package/lib/domain-annotations/behavior.js +49 -49
  48. package/lib/domain-annotations/color.d.ts +10 -10
  49. package/lib/domain-annotations/color.js +78 -78
  50. package/lib/domain-annotations/prop.d.ts +35 -35
  51. package/lib/domain-annotations/prop.js +160 -160
  52. package/lib/drugflow-molstar-component-build-0.1.2.js +4268 -0
  53. package/lib/drugflow-molstar-component-build-0.1.2.js.LICENSE.txt +24 -0
  54. package/lib/drugflow-molstar-component-build-0.1.2.js.map +1 -0
  55. package/lib/drugflow-molstar-component-build-0.1.3.js +2 -0
  56. package/lib/drugflow-molstar-component-build-0.1.3.js.LICENSE.txt +24 -0
  57. package/lib/drugflow-molstar-component-build-0.1.4.js +2 -0
  58. package/lib/drugflow-molstar-component-build-0.1.4.js.LICENSE.txt +24 -0
  59. package/lib/drugflow-molstar-component-build-0.1.6.js +2 -0
  60. package/lib/drugflow-molstar-component-build-0.1.6.js.LICENSE.txt +24 -0
  61. package/lib/drugflow-molstar-component-build-0.2.2.js +2 -0
  62. package/lib/drugflow-molstar-component-build-0.2.2.js.LICENSE.txt +24 -0
  63. package/lib/helpers.d.ts +82 -81
  64. package/lib/helpers.js +278 -278
  65. package/lib/index.d.ts +1 -1
  66. package/lib/index.js +1274 -1239
  67. package/lib/labels.d.ts +2 -2
  68. package/lib/labels.js +42 -42
  69. package/lib/loci-details.d.ts +27 -27
  70. package/lib/loci-details.js +128 -128
  71. package/lib/pdbe-molstar-component-build-3.1.2.js +2 -0
  72. package/lib/pdbe-molstar-component-build-3.1.2.js.LICENSE.txt +24 -0
  73. package/lib/sifts-mapping.d.ts +16 -16
  74. package/lib/sifts-mapping.js +83 -83
  75. package/lib/sifts-mappings-behaviour.d.ts +5 -5
  76. package/lib/sifts-mappings-behaviour.js +64 -64
  77. package/lib/spec.d.ts +76 -76
  78. package/lib/spec.js +105 -105
  79. package/lib/subscribe-events.d.ts +1 -1
  80. package/lib/subscribe-events.js +194 -194
  81. package/lib/superposition-export.d.ts +4 -4
  82. package/lib/superposition-export.js +152 -152
  83. package/lib/superposition-focus-representation.d.ts +16 -16
  84. package/lib/superposition-focus-representation.js +153 -153
  85. package/lib/superposition-sifts-mapping.d.ts +22 -22
  86. package/lib/superposition-sifts-mapping.js +159 -159
  87. package/lib/superposition.d.ts +18 -18
  88. package/lib/superposition.js +794 -794
  89. package/lib/ui/alphafold-superposition.d.ts +56 -56
  90. package/lib/ui/alphafold-superposition.js +178 -178
  91. package/lib/ui/alphafold-tranparency.d.ts +22 -22
  92. package/lib/ui/alphafold-tranparency.js +65 -65
  93. package/lib/ui/annotation-controls.d.ts +24 -24
  94. package/lib/ui/annotation-controls.js +166 -166
  95. package/lib/ui/export-superposition.d.ts +6 -6
  96. package/lib/ui/export-superposition.js +71 -71
  97. package/lib/ui/pdbe-left-panel.d.ts +18 -18
  98. package/lib/ui/pdbe-left-panel.js +167 -167
  99. package/lib/ui/pdbe-screenshot-controls.d.ts +20 -20
  100. package/lib/ui/pdbe-screenshot-controls.js +101 -101
  101. package/lib/ui/pdbe-structure-controls.d.ts +17 -17
  102. package/lib/ui/pdbe-structure-controls.js +70 -70
  103. package/lib/ui/pdbe-viewport-controls.d.ts +6 -6
  104. package/lib/ui/pdbe-viewport-controls.js +56 -56
  105. package/lib/ui/segment-tree.d.ts +18 -18
  106. package/lib/ui/segment-tree.js +804 -804
  107. package/lib/ui/superposition-components.d.ts +10 -10
  108. package/lib/ui/superposition-components.js +435 -435
  109. package/lib/ui/superposition-viewport.d.ts +5 -5
  110. package/lib/ui/superposition-viewport.js +23 -23
  111. package/package.json +79 -79
  112. /package/build/{drugflow-molstar-0.2.1.css → drugflow-molstar-0.2.2.css} +0 -0
  113. /package/build/{drugflow-molstar-plugin-0.2.1.js.LICENSE.txt → drugflow-molstar-plugin-0.2.2.js.LICENSE.txt} +0 -0
@@ -0,0 +1,138 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
6
+ <title>Mol* Plugin Wrapper</title>
7
+ <style>
8
+ * {
9
+ margin: 0;
10
+ padding: 0;
11
+ box-sizing: border-box;
12
+ }
13
+ #app {
14
+ position: absolute;
15
+ left: 160px;
16
+ top: 100px;
17
+ width: 600px;
18
+ height: 600px;
19
+ border: 1px solid #ccc;
20
+ }
21
+
22
+ #controls {
23
+ position: absolute;
24
+ width: 130px;
25
+ top: 10px;
26
+ left: 10px;
27
+ }
28
+
29
+ #controls > button {
30
+ display: block;
31
+ width: 100%;
32
+ text-align: left;
33
+ }
34
+
35
+ #controls > hr {
36
+ margin: 5px 0;
37
+ }
38
+
39
+ #controls > input, #controls > select {
40
+ width: 100%;
41
+ display: block;
42
+ }
43
+ </style>
44
+ <link rel="stylesheet" type="text/css" href="molstar.css" />
45
+ <script type="text/javascript" src="./index.js"></script>
46
+ </head>
47
+ <body>
48
+ <div id='controls'>
49
+ <h3>Source</h3>
50
+ <input type='text' id='url' placeholder='url' />
51
+ <input type='text' id='assemblyId' placeholder='assembly id' />
52
+ <select id='format'>
53
+ <option value='mmcif' selected>mmCIF</option>
54
+ <option value='pdb'>PDB</option>
55
+ </select>
56
+ </div>
57
+ <div id="app"></div>
58
+ <script>
59
+ function $(id) { return document.getElementById(id); }
60
+
61
+ var pdbId = '1grm', assemblyId= '1';
62
+ var url = 'https://www.ebi.ac.uk/pdbe/static/entry/' + pdbId + '_updated.cif';
63
+ var format = 'mmcif';
64
+
65
+ $('url').value = url;
66
+ $('url').onchange = function (e) { url = e.target.value; }
67
+ $('assemblyId').value = assemblyId;
68
+ $('assemblyId').onchange = function (e) { assemblyId = e.target.value; }
69
+ $('format').value = format;
70
+ $('format').onchange = function (e) { format = e.target.value; }
71
+
72
+ BasicMolStarWrapper.init('app' /** or document.getElementById('app') */).then(() => {
73
+ BasicMolStarWrapper.setBackground(0xffffff);
74
+ });
75
+
76
+ addControl('Load Asym Unit', () => BasicMolStarWrapper.load({ url: url, format: format }));
77
+ addControl('Load Assembly', () => BasicMolStarWrapper.load({ url: url, format: format, assemblyId: assemblyId }));
78
+
79
+ addSeparator();
80
+
81
+ addHeader('Camera');
82
+ addControl('Toggle Spin', () => BasicMolStarWrapper.toggleSpin());
83
+
84
+ addSeparator();
85
+
86
+ addHeader('Animation');
87
+
88
+ // adjust this number to make the animation faster or slower
89
+ // requires to "restart" the animation if changed
90
+ BasicMolStarWrapper.animate.modelIndex.targetFps = 30;
91
+
92
+ addControl('Play To End', () => BasicMolStarWrapper.animate.modelIndex.onceForward());
93
+ addControl('Play To Start', () => BasicMolStarWrapper.animate.modelIndex.onceBackward());
94
+ addControl('Play Palindrome', () => BasicMolStarWrapper.animate.modelIndex.palindrome());
95
+ addControl('Play Loop', () => BasicMolStarWrapper.animate.modelIndex.loop());
96
+ addControl('Stop', () => BasicMolStarWrapper.animate.modelIndex.stop());
97
+
98
+ addHeader('Misc');
99
+
100
+ addControl('Apply Stripes', () => BasicMolStarWrapper.coloring.applyStripes());
101
+ addControl('Apply Custom Theme', () => BasicMolStarWrapper.coloring.applyCustomTheme());
102
+ addControl('Default Coloring', () => BasicMolStarWrapper.coloring.applyDefault());
103
+
104
+ addHeader('Interactivity');
105
+ addControl('Highlight seq_id=7', () => BasicMolStarWrapper.interactivity.highlightOn());
106
+ addControl('Clear Highlight', () => BasicMolStarWrapper.interactivity.clearHighlight());
107
+
108
+ addHeader('Tests');
109
+
110
+ addControl('Static Superposition', () => BasicMolStarWrapper.tests.staticSuperposition());
111
+ addControl('Dynamic Superposition', () => BasicMolStarWrapper.tests.dynamicSuperposition());
112
+ addControl('Validation Tooltip', () => BasicMolStarWrapper.tests.toggleValidationTooltip());
113
+
114
+ addControl('Show Toasts', () => BasicMolStarWrapper.tests.showToasts());
115
+ addControl('Hide Toasts', () => BasicMolStarWrapper.tests.hideToasts());
116
+
117
+ ////////////////////////////////////////////////////////
118
+
119
+ function addControl(label, action) {
120
+ var btn = document.createElement('button');
121
+ btn.onclick = action;
122
+ btn.innerText = label;
123
+ $('controls').appendChild(btn);
124
+ }
125
+
126
+ function addSeparator() {
127
+ var hr = document.createElement('hr');
128
+ $('controls').appendChild(hr);
129
+ }
130
+
131
+ function addHeader(header) {
132
+ var h = document.createElement('h3');
133
+ h.innerText = header;
134
+ $('controls').appendChild(h);
135
+ }
136
+ </script>
137
+ </body>
138
+ </html>
@@ -0,0 +1,89 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
6
+ <title>Mol* Lighting Demo</title>
7
+ <style>
8
+ * {
9
+ margin: 0;
10
+ padding: 0;
11
+ box-sizing: border-box;
12
+ }
13
+ #app {
14
+ position: absolute;
15
+ width: 100%;
16
+ height: 100%;
17
+ }
18
+
19
+ #controls {
20
+ position: absolute;
21
+ width: 150px;
22
+ bottom: 100px;
23
+ right: 50px;
24
+ z-index: 10;
25
+ font-family: sans-serif;
26
+ font-size: smaller;
27
+ }
28
+
29
+ #controls > button {
30
+ display: block;
31
+ width: 100%;
32
+ text-align: left;
33
+ margin: 5px 0px;
34
+ }
35
+
36
+ #controls > input, #controls > select {
37
+ width: 100%;
38
+ display: block;
39
+ }
40
+ </style>
41
+ <link rel="stylesheet" type="text/css" href="molstar.css" />
42
+ <script type="text/javascript" src="./index.js"></script>
43
+ </head>
44
+ <body>
45
+ <div id='controls'></div>
46
+ <div id="app"></div>
47
+ <script>
48
+ LightingDemo.init('app').then(() => {
49
+ LightingDemo.load({ url: 'https://models.rcsb.org/4KTC.bcif', assemblyId: '1' }, 5, 1.3);
50
+ });
51
+
52
+ addHeader('Example PDB IDs');
53
+ addControl('4KTC', () => LightingDemo.load({ url: 'https://models.rcsb.org/4KTC.bcif', assemblyId: '1' }, 5, 1.3));
54
+ addControl('5FJ5', () => LightingDemo.load({ url: 'https://models.rcsb.org/5FJ5.bcif', assemblyId: '1' }, 8, 1.8));
55
+ addControl('1UPN', () => LightingDemo.load({ url: 'https://models.rcsb.org/1UPN.bcif', assemblyId: '1' }, 7, 1.6));
56
+ addControl('1RB8', () => LightingDemo.load({ url: 'https://models.rcsb.org/1RB8.bcif', assemblyId: '1' }, 6, 1.3));
57
+
58
+ addSeparator()
59
+
60
+ addHeader('Lighting Presets');
61
+ addControl('Illustrative', () => LightingDemo.setPreset('illustrative'));
62
+ addControl('Standard', () => LightingDemo.setPreset('standard'));
63
+ addControl('Ambient Occlusion', () => LightingDemo.setPreset('occlusion'));
64
+
65
+ ////////////////////////////////////////////////////////
66
+
67
+ function $(id) { return document.getElementById(id); }
68
+
69
+ function addControl(label, action) {
70
+ var btn = document.createElement('button');
71
+ btn.onclick = action;
72
+ btn.innerText = label;
73
+ $('controls').appendChild(btn);
74
+ }
75
+
76
+ function addSeparator() {
77
+ var hr = document.createElement('br');
78
+ $('controls').appendChild(hr);
79
+ }
80
+
81
+ function addHeader(header) {
82
+ var h = document.createElement('h3');
83
+ h.innerText = header;
84
+ $('controls').appendChild(h);
85
+ }
86
+ </script>
87
+ <!-- __MOLSTAR_ANALYTICS__ -->
88
+ </body>
89
+ </html>
@@ -0,0 +1,237 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
6
+ <title>Mol* Proteopedia Wrapper</title>
7
+ <style>
8
+ * {
9
+ margin: 0;
10
+ padding: 0;
11
+ box-sizing: border-box;
12
+ }
13
+ #app {
14
+ position: absolute;
15
+ left: 160px;
16
+ top: 100px;
17
+ width: 600px;
18
+ height: 600px;
19
+ border: 1px solid #ccc;
20
+ }
21
+
22
+ #controls {
23
+ position: absolute;
24
+ width: 130px;
25
+ top: 10px;
26
+ left: 10px;
27
+ }
28
+
29
+ #controls > button {
30
+ display: block;
31
+ width: 100%;
32
+ text-align: left;
33
+ }
34
+
35
+ #controls > hr {
36
+ margin: 5px 0;
37
+ }
38
+
39
+ #controls > input, #controls > select {
40
+ width: 100%;
41
+ display: block;
42
+ }
43
+
44
+ #volume-streaming-wrapper {
45
+ position: absolute;
46
+ top: 100px;
47
+ left: 780px;
48
+ width: 300px;
49
+ }
50
+ </style>
51
+ <link rel="stylesheet" type="text/css" href="molstar.css" />
52
+ <script type="text/javascript" src="./index.js"></script>
53
+ </head>
54
+ <body>
55
+ <div id='controls'>
56
+ <h3>Source</h3>
57
+ <input type='text' id='url' placeholder='url' style='width: 400px' />
58
+ <input type='text' id='assemblyId' placeholder='assembly id' />
59
+ <select id='format'>
60
+ <option value='cif' selected>CIF</option>
61
+ <option value='pdb'>PDB</option>
62
+ </select>
63
+ <input type='checkbox' id='isBinary' style="display: inline-block; width: auto" /> <label for="isBinary"> Binary</label><br />
64
+ </div>
65
+ <div id="app"></div>
66
+ <div id="volume-streaming-wrapper"></div>
67
+ <script>
68
+ // it might be a good idea to define these colors in a separate script file
69
+ var CustomColors = [0x00ff00, 0x0000ff];
70
+
71
+ // create an instance of the plugin
72
+ var PluginWrapper = new MolStarProteopediaWrapper();
73
+
74
+ console.log('Wrapper version', MolStarProteopediaWrapper.VERSION_MAJOR, MolStarProteopediaWrapper.VERSION_MINOR);
75
+
76
+ function $(id) { return document.getElementById(id); }
77
+
78
+ var pdbId = '1cbs', assemblyId= 'preferred', isBinary = true;
79
+ var url = 'https://www.ebi.ac.uk/pdbe/entry-files/download/' + pdbId + '.bcif'
80
+ var format = 'cif';
81
+
82
+ $('url').value = url;
83
+ $('url').onchange = function (e) { url = e.target.value; }
84
+ $('assemblyId').value = assemblyId;
85
+ $('assemblyId').onchange = function (e) { assemblyId = e.target.value; }
86
+ $('format').value = format;
87
+ $('format').onchange = function (e) { format = e.target.value; }
88
+ $('isBinary').checked = isBinary;
89
+ $('isBinary').onchange = function (e) { isBinary = !!e.target.checked; };
90
+
91
+ function loadAndSnapshot(params) {
92
+ PluginWrapper.load(params).then(() => {
93
+ setTimeout(() => snapshot = PluginWrapper.plugin.state.getSnapshot({ canvas3d: false /* do not save spinning state */ }), 500);
94
+ });
95
+ }
96
+
97
+ var representationStyle = {
98
+ // sequence: { coloring: 'proteopedia-custom' }, // or just { }
99
+ hetGroups: { kind: 'ball-and-stick' }, // or 'spacefill
100
+ water: { hide: true },
101
+ snfg3d: { hide: false }
102
+ };
103
+
104
+ PluginWrapper.init('app' /** or document.getElementById('app') */, {
105
+ customColorList: CustomColors
106
+ }).then(() => {
107
+ PluginWrapper.setBackground(0xffffff);
108
+ loadAndSnapshot({ url: url, format: format, isBinary: isBinary, assemblyId: assemblyId, representationStyle: representationStyle });
109
+ PluginWrapper.toggleSpin();
110
+ });
111
+
112
+ PluginWrapper.events.modelInfo.subscribe(function (info) {
113
+ console.log('Model Info', info);
114
+ listHetGroups(info);
115
+ });
116
+
117
+ addControl('Load Asym Unit', () => loadAndSnapshot({ url: url, format: format, isBinary }));
118
+ addControl('Load Assembly', () => loadAndSnapshot({ url: url, format: format, isBinary, assemblyId: assemblyId }));
119
+
120
+ addSeparator();
121
+
122
+ addHeader('Representation');
123
+
124
+ addControl('Custom Chain Colors', () => PluginWrapper.updateStyle({ sequence: { coloring: 'proteopedia-custom' } }, true));
125
+ addControl('Default Chain Colors', () => PluginWrapper.updateStyle({ sequence: { } }, true));
126
+
127
+ addControl('HET Spacefill', () => PluginWrapper.updateStyle({ hetGroups: { kind: 'spacefill' } }, true));
128
+ addControl('HET Ball-and-stick', () => PluginWrapper.updateStyle({ hetGroups: { kind: 'ball-and-stick' } }, true));
129
+
130
+ addControl('Hide 3DSNFG', () => PluginWrapper.updateStyle({ snfg3d: { hide: true } }, true));
131
+ addControl('Show 3DSNFG', () => PluginWrapper.updateStyle({ snfg3d: { hide: false } }, true));
132
+
133
+ addControl('Hide Water', () => PluginWrapper.updateStyle({ water: { hide: true } }, true));
134
+ addControl('Show Water', () => PluginWrapper.updateStyle({ water: { hide: false } }, true));
135
+
136
+ addSeparator();
137
+
138
+ addHeader('Camera');
139
+ addControl('Reset Position', () => PluginWrapper.camera.resetPosition());
140
+ addControl('Toggle Spin', () => PluginWrapper.camera.toggleSpin());
141
+ // Same as "wheel icon" and Viewport options
142
+ // addControl('Clip', () => PluginWrapper.viewport.setSettings({ clip: [33, 66] }));
143
+ // addControl('Reset Clip', () => PluginWrapper.viewport.setSettings({ clip: [1, 100] }));
144
+
145
+ addSeparator();
146
+
147
+ addHeader('Animation');
148
+
149
+ // adjust this number to make the animation faster or slower
150
+ // requires to "restart" the animation if changed
151
+ PluginWrapper.animate.modelIndex.targetFps = 30;
152
+
153
+ addControl('Play To End', () => PluginWrapper.animate.modelIndex.onceForward());
154
+ addControl('Play To Start', () => PluginWrapper.animate.modelIndex.onceBackward());
155
+ addControl('Play Palindrome', () => PluginWrapper.animate.modelIndex.palindrome());
156
+ addControl('Play Loop', () => PluginWrapper.animate.modelIndex.loop());
157
+ addControl('Stop', () => PluginWrapper.animate.modelIndex.stop());
158
+
159
+ addSeparator();
160
+ addHeader('Misc');
161
+
162
+ addControl('Apply Evo Cons Style', () => PluginWrapper.coloring.evolutionaryConservation());
163
+ addControl('Apply Evo Cons Colors', () => PluginWrapper.coloring.evolutionaryConservation({ sequence: true, het: false, keepStyle: true }));
164
+ addControl('Default Visuals', () => PluginWrapper.updateStyle());
165
+
166
+ addSeparator();
167
+ addHeader('HET Groups');
168
+
169
+ addControl('Reset', () => PluginWrapper.hetGroups.reset());
170
+ addHetGroupsContainer();
171
+
172
+ addSeparator();
173
+ addHeader('Exp. Data');
174
+ addControl('Init', () => PluginWrapper.experimentalData.init($('volume-streaming-wrapper')));
175
+ addControl('Remove', () => PluginWrapper.experimentalData.remove());
176
+
177
+ addSeparator();
178
+ addHeader('State');
179
+
180
+ var snapshot;
181
+ addControl('Set Snapshot', () => {
182
+ // const options = { data: true, behavior: false, animation: false, interactivity: false, canvas3d: false, camera: false, cameraTransition: false };
183
+ snapshot = PluginWrapper.plugin.state.getSnapshot(/** options */);
184
+ // console.log(JSON.stringify(snapshot, null, 2));
185
+ });
186
+ addControl('Restore Snapshot', () => {
187
+ if (!snapshot) return;
188
+ PluginWrapper.snapshot.set(snapshot);
189
+ });
190
+ addControl('Download State', () => {
191
+ PluginWrapper.snapshot.download('molj');
192
+ });
193
+ addControl('Download Session', () => {
194
+ PluginWrapper.snapshot.download('molx');
195
+ });
196
+
197
+ ////////////////////////////////////////////////////////
198
+
199
+ function addHetGroupsContainer() {
200
+ var div = document.createElement('div');
201
+ div.id = 'het-groups';
202
+ $('controls').appendChild(div);
203
+ }
204
+
205
+ function addControl(label, action) {
206
+ var btn = document.createElement('button');
207
+ btn.onclick = action;
208
+ btn.innerText = label;
209
+ $('controls').appendChild(btn);
210
+ }
211
+
212
+ function addSeparator() {
213
+ var hr = document.createElement('hr');
214
+ $('controls').appendChild(hr);
215
+ }
216
+
217
+ function addHeader(header) {
218
+ var h = document.createElement('h3');
219
+ h.innerText = header;
220
+ $('controls').appendChild(h);
221
+ }
222
+
223
+ function listHetGroups(info) {
224
+ var div = $('het-groups');
225
+ div.innerHTML = '';
226
+ info.hetResidues.forEach(function (r) {
227
+ var l = document.createElement('button');
228
+ l.innerText = r.name;
229
+ l.onclick = function () {
230
+ PluginWrapper.hetGroups.focusFirst(r.name, { doNotLabelWaters: true });
231
+ };
232
+ div.appendChild(l);
233
+ });
234
+ }
235
+ </script>
236
+ </body>
237
+ </html>
@@ -0,0 +1,33 @@
1
+ 
2
+ @mixin user-select($select) {
3
+ -webkit-user-select: $select;
4
+ -moz-user-select: $select;
5
+ -ms-user-select: $select; // IE10+
6
+ user-select: $select;
7
+ }
8
+
9
+ .msp-plugin {
10
+ font-family: "Helvetica Neue", "Segoe UI", Helvetica, "Source Sans Pro", Arial, sans-serif;
11
+ font-size: 14px;
12
+ line-height: 1.42857143;
13
+
14
+ position: absolute;
15
+ left: 0;
16
+ top: 0;
17
+ right: 0;
18
+ bottom: 0;
19
+
20
+ @import 'variables';
21
+
22
+ @import "normalize";
23
+
24
+ @import 'layout';
25
+ @import 'ui';
26
+ @import 'logo';
27
+
28
+ .msp-plugin-content {
29
+ color: $font-color;
30
+ }
31
+
32
+ background: $default-background;
33
+ }