molstar 3.6.1 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/build/viewer/molstar.css +1 -1
  2. package/build/viewer/molstar.js +1 -1
  3. package/lib/commonjs/examples/alpha-orbitals/index.js +20 -15
  4. package/lib/commonjs/extensions/anvil/behavior.d.ts +1 -1
  5. package/lib/commonjs/extensions/anvil/representation.d.ts +4 -4
  6. package/lib/commonjs/extensions/cellpack/representation.d.ts +1 -1
  7. package/lib/commonjs/extensions/dnatco/confal-pyramids/representation.d.ts +3 -3
  8. package/lib/commonjs/extensions/rcsb/assembly-symmetry/behavior.d.ts +1 -1
  9. package/lib/commonjs/extensions/rcsb/assembly-symmetry/representation.d.ts +1 -1
  10. package/lib/commonjs/extensions/rcsb/validation-report/representation.d.ts +5 -5
  11. package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +2 -2
  12. package/lib/commonjs/mol-canvas3d/helper/camera-helper.d.ts +1 -1
  13. package/lib/commonjs/mol-canvas3d/helper/handle-helper.d.ts +1 -1
  14. package/lib/commonjs/mol-canvas3d/helper/helper.d.ts +2 -2
  15. package/lib/commonjs/mol-canvas3d/passes/image.d.ts +1 -1
  16. package/lib/commonjs/mol-geo/geometry/color-data.d.ts +2 -8
  17. package/lib/commonjs/mol-geo/geometry/color-data.js +16 -3
  18. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +1 -1
  19. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.js +3 -2
  20. package/lib/commonjs/mol-geo/geometry/mesh/mesh.d.ts +1 -1
  21. package/lib/commonjs/mol-geo/geometry/mesh/mesh.js +3 -2
  22. package/lib/commonjs/mol-geo/geometry/spheres/spheres.d.ts +1 -1
  23. package/lib/commonjs/mol-geo/geometry/spheres/spheres.js +3 -2
  24. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -1
  25. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.js +15 -4
  26. package/lib/commonjs/mol-gl/renderable/cylinders.d.ts +2 -1
  27. package/lib/commonjs/mol-gl/renderable/cylinders.js +2 -2
  28. package/lib/commonjs/mol-gl/renderable/mesh.d.ts +2 -1
  29. package/lib/commonjs/mol-gl/renderable/mesh.js +2 -2
  30. package/lib/commonjs/mol-gl/renderable/spheres.d.ts +2 -1
  31. package/lib/commonjs/mol-gl/renderable/spheres.js +2 -2
  32. package/lib/commonjs/mol-gl/renderable/texture-mesh.d.ts +2 -1
  33. package/lib/commonjs/mol-gl/renderable/texture-mesh.js +2 -2
  34. package/lib/commonjs/mol-gl/renderer.js +54 -23
  35. package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.d.ts +1 -1
  36. package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.js +1 -1
  37. package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.d.ts +1 -1
  38. package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.js +1 -1
  39. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  40. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  41. package/lib/commonjs/mol-io/writer/ligand-encoder.d.ts +4 -2
  42. package/lib/commonjs/mol-io/writer/ligand-encoder.js +9 -4
  43. package/lib/commonjs/mol-io/writer/mol/encoder.js +16 -4
  44. package/lib/commonjs/mol-io/writer/mol2/encoder.js +17 -4
  45. package/lib/commonjs/mol-model-formats/shape/ply.d.ts +2 -2
  46. package/lib/commonjs/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +1 -1
  47. package/lib/commonjs/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +1 -1
  48. package/lib/commonjs/mol-model-props/computed/representations/interactions.d.ts +3 -3
  49. package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -4
  50. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/util.js +0 -1
  51. package/lib/commonjs/mol-plugin/commands.d.ts +1 -1
  52. package/lib/commonjs/mol-plugin/util/viewport-screenshot.d.ts +3 -3
  53. package/lib/commonjs/mol-plugin-state/transforms/representation.d.ts +6 -6
  54. package/lib/commonjs/mol-plugin-ui/base.d.ts +3 -1
  55. package/lib/commonjs/mol-plugin-ui/controls/color.d.ts +1 -1
  56. package/lib/commonjs/mol-plugin-ui/controls/common.d.ts +2 -0
  57. package/lib/commonjs/mol-plugin-ui/hooks/use-behavior.d.ts +1 -1
  58. package/lib/commonjs/mol-plugin-ui/hooks/use-behavior.js +21 -7
  59. package/lib/commonjs/mol-plugin-ui/plugin.d.ts +2 -0
  60. package/lib/commonjs/mol-plugin-ui/plugin.js +2 -2
  61. package/lib/commonjs/mol-plugin-ui/spec.d.ts +1 -0
  62. package/lib/commonjs/mol-plugin-ui/viewport/help.d.ts +4 -1
  63. package/lib/commonjs/mol-repr/shape/loci/angle.d.ts +1 -1
  64. package/lib/commonjs/mol-repr/shape/loci/dihedral.d.ts +1 -1
  65. package/lib/commonjs/mol-repr/shape/loci/orientation.d.ts +1 -1
  66. package/lib/commonjs/mol-repr/shape/loci/plane.d.ts +1 -1
  67. package/lib/commonjs/mol-repr/shape/model/unitcell.d.ts +1 -1
  68. package/lib/commonjs/mol-repr/structure/complex-visual.d.ts +3 -3
  69. package/lib/commonjs/mol-repr/structure/params.d.ts +4 -4
  70. package/lib/commonjs/mol-repr/structure/registry.d.ts +10 -10
  71. package/lib/commonjs/mol-repr/structure/representation/backbone.d.ts +3 -3
  72. package/lib/commonjs/mol-repr/structure/representation/ball-and-stick.d.ts +3 -3
  73. package/lib/commonjs/mol-repr/structure/representation/carbohydrate.d.ts +3 -3
  74. package/lib/commonjs/mol-repr/structure/representation/cartoon.d.ts +3 -3
  75. package/lib/commonjs/mol-repr/structure/representation/ellipsoid.d.ts +3 -3
  76. package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.d.ts +3 -3
  77. package/lib/commonjs/mol-repr/structure/representation/molecular-surface.d.ts +3 -3
  78. package/lib/commonjs/mol-repr/structure/representation/orientation.d.ts +3 -3
  79. package/lib/commonjs/mol-repr/structure/representation/putty.d.ts +3 -3
  80. package/lib/commonjs/mol-repr/structure/representation/spacefill.d.ts +3 -3
  81. package/lib/commonjs/mol-repr/structure/units-visual.d.ts +4 -4
  82. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -2
  83. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -2
  84. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -1
  85. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -1
  86. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -1
  87. package/lib/commonjs/mol-repr/structure/visual/element-sphere.d.ts +2 -2
  88. package/lib/commonjs/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -1
  89. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -4
  90. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -1
  91. package/lib/commonjs/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -1
  92. package/lib/commonjs/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -1
  93. package/lib/commonjs/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -1
  94. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -2
  95. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -2
  96. package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -1
  97. package/lib/commonjs/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -1
  98. package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -1
  99. package/lib/commonjs/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -1
  100. package/lib/commonjs/mol-repr/util.d.ts +1 -1
  101. package/lib/commonjs/mol-repr/util.js +1 -1
  102. package/lib/commonjs/mol-repr/volume/isosurface.d.ts +5 -5
  103. package/lib/commonjs/mol-repr/volume/registry.d.ts +1 -1
  104. package/lib/commonjs/mol-theme/color.d.ts +9 -2
  105. package/lib/commonjs/mol-theme/color.js +1 -1
  106. package/lib/commonjs/servers/model/server/query.js +1 -3
  107. package/lib/commonjs/servers/model/version.d.ts +1 -1
  108. package/lib/commonjs/servers/model/version.js +1 -1
  109. package/lib/examples/alpha-orbitals/index.js +20 -15
  110. package/lib/extensions/anvil/behavior.d.ts +1 -1
  111. package/lib/extensions/anvil/representation.d.ts +4 -4
  112. package/lib/extensions/cellpack/representation.d.ts +1 -1
  113. package/lib/extensions/dnatco/confal-pyramids/representation.d.ts +3 -3
  114. package/lib/extensions/rcsb/assembly-symmetry/behavior.d.ts +1 -1
  115. package/lib/extensions/rcsb/assembly-symmetry/representation.d.ts +1 -1
  116. package/lib/extensions/rcsb/validation-report/representation.d.ts +5 -5
  117. package/lib/mol-canvas3d/canvas3d.d.ts +2 -2
  118. package/lib/mol-canvas3d/helper/camera-helper.d.ts +1 -1
  119. package/lib/mol-canvas3d/helper/handle-helper.d.ts +1 -1
  120. package/lib/mol-canvas3d/helper/helper.d.ts +2 -2
  121. package/lib/mol-canvas3d/passes/image.d.ts +1 -1
  122. package/lib/mol-geo/geometry/color-data.d.ts +2 -8
  123. package/lib/mol-geo/geometry/color-data.js +16 -3
  124. package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +1 -1
  125. package/lib/mol-geo/geometry/cylinders/cylinders.js +3 -2
  126. package/lib/mol-geo/geometry/mesh/mesh.d.ts +1 -1
  127. package/lib/mol-geo/geometry/mesh/mesh.js +3 -2
  128. package/lib/mol-geo/geometry/spheres/spheres.d.ts +1 -1
  129. package/lib/mol-geo/geometry/spheres/spheres.js +3 -2
  130. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -1
  131. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.js +15 -4
  132. package/lib/mol-gl/renderable/cylinders.d.ts +2 -1
  133. package/lib/mol-gl/renderable/cylinders.js +2 -2
  134. package/lib/mol-gl/renderable/mesh.d.ts +2 -1
  135. package/lib/mol-gl/renderable/mesh.js +2 -2
  136. package/lib/mol-gl/renderable/spheres.d.ts +2 -1
  137. package/lib/mol-gl/renderable/spheres.js +2 -2
  138. package/lib/mol-gl/renderable/texture-mesh.d.ts +2 -1
  139. package/lib/mol-gl/renderable/texture-mesh.js +2 -2
  140. package/lib/mol-gl/renderer.js +54 -23
  141. package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.d.ts +1 -1
  142. package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.js +1 -1
  143. package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.d.ts +1 -1
  144. package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.js +1 -1
  145. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  146. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  147. package/lib/mol-io/writer/ligand-encoder.d.ts +4 -2
  148. package/lib/mol-io/writer/ligand-encoder.js +9 -4
  149. package/lib/mol-io/writer/mol/encoder.js +16 -4
  150. package/lib/mol-io/writer/mol2/encoder.js +17 -4
  151. package/lib/mol-model-formats/shape/ply.d.ts +2 -2
  152. package/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +1 -1
  153. package/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +1 -1
  154. package/lib/mol-model-props/computed/representations/interactions.d.ts +3 -3
  155. package/lib/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -4
  156. package/lib/mol-plugin/behavior/dynamic/volume-streaming/util.js +0 -1
  157. package/lib/mol-plugin/commands.d.ts +1 -1
  158. package/lib/mol-plugin/util/viewport-screenshot.d.ts +3 -3
  159. package/lib/mol-plugin/version.js +2 -2
  160. package/lib/mol-plugin-state/transforms/representation.d.ts +6 -6
  161. package/lib/mol-plugin-ui/base.d.ts +3 -1
  162. package/lib/mol-plugin-ui/controls/color.d.ts +1 -1
  163. package/lib/mol-plugin-ui/controls/common.d.ts +2 -0
  164. package/lib/mol-plugin-ui/hooks/use-behavior.d.ts +1 -1
  165. package/lib/mol-plugin-ui/hooks/use-behavior.js +20 -7
  166. package/lib/mol-plugin-ui/plugin.d.ts +2 -0
  167. package/lib/mol-plugin-ui/plugin.js +2 -2
  168. package/lib/mol-plugin-ui/spec.d.ts +1 -0
  169. package/lib/mol-plugin-ui/viewport/help.d.ts +4 -1
  170. package/lib/mol-repr/shape/loci/angle.d.ts +1 -1
  171. package/lib/mol-repr/shape/loci/dihedral.d.ts +1 -1
  172. package/lib/mol-repr/shape/loci/orientation.d.ts +1 -1
  173. package/lib/mol-repr/shape/loci/plane.d.ts +1 -1
  174. package/lib/mol-repr/shape/model/unitcell.d.ts +1 -1
  175. package/lib/mol-repr/structure/complex-visual.d.ts +3 -3
  176. package/lib/mol-repr/structure/params.d.ts +4 -4
  177. package/lib/mol-repr/structure/registry.d.ts +10 -10
  178. package/lib/mol-repr/structure/representation/backbone.d.ts +3 -3
  179. package/lib/mol-repr/structure/representation/ball-and-stick.d.ts +3 -3
  180. package/lib/mol-repr/structure/representation/carbohydrate.d.ts +3 -3
  181. package/lib/mol-repr/structure/representation/cartoon.d.ts +3 -3
  182. package/lib/mol-repr/structure/representation/ellipsoid.d.ts +3 -3
  183. package/lib/mol-repr/structure/representation/gaussian-surface.d.ts +3 -3
  184. package/lib/mol-repr/structure/representation/molecular-surface.d.ts +3 -3
  185. package/lib/mol-repr/structure/representation/orientation.d.ts +3 -3
  186. package/lib/mol-repr/structure/representation/putty.d.ts +3 -3
  187. package/lib/mol-repr/structure/representation/spacefill.d.ts +3 -3
  188. package/lib/mol-repr/structure/units-visual.d.ts +4 -4
  189. package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -2
  190. package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -2
  191. package/lib/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -1
  192. package/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -1
  193. package/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -1
  194. package/lib/mol-repr/structure/visual/element-sphere.d.ts +2 -2
  195. package/lib/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -1
  196. package/lib/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -4
  197. package/lib/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -1
  198. package/lib/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -1
  199. package/lib/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -1
  200. package/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -1
  201. package/lib/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -2
  202. package/lib/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -2
  203. package/lib/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -1
  204. package/lib/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -1
  205. package/lib/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -1
  206. package/lib/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -1
  207. package/lib/mol-repr/util.d.ts +1 -1
  208. package/lib/mol-repr/util.js +1 -1
  209. package/lib/mol-repr/volume/isosurface.d.ts +5 -5
  210. package/lib/mol-repr/volume/registry.d.ts +1 -1
  211. package/lib/mol-theme/color.d.ts +9 -2
  212. package/lib/mol-theme/color.js +1 -1
  213. package/lib/servers/model/server/query.js +1 -3
  214. package/lib/servers/model/version.d.ts +1 -1
  215. package/lib/servers/model/version.js +1 -1
  216. package/package.json +16 -16
@@ -122,7 +122,8 @@ var Renderer;
122
122
  };
123
123
  var globalUniformList = Object.entries(globalUniforms);
124
124
  var globalUniformsNeedUpdate = true;
125
- var renderObject = function (r, variant) {
125
+ var renderObject = function (r, variant, flag) {
126
+ var _a, _b, _c;
126
127
  if (r.state.disposed || !r.state.visible || (!r.state.pickable && variant === 'pick')) {
127
128
  return;
128
129
  }
@@ -157,6 +158,28 @@ var Renderer;
157
158
  state.depthMask(false);
158
159
  }
159
160
  }
161
+ else if (flag === 1 /* BlendedFront */) {
162
+ state.enable(gl.CULL_FACE);
163
+ if ((_a = r.values.dFlipSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
164
+ state.frontFace(gl.CW);
165
+ state.cullFace(gl.FRONT);
166
+ }
167
+ else {
168
+ state.frontFace(gl.CCW);
169
+ state.cullFace(gl.BACK);
170
+ }
171
+ }
172
+ else if (flag === 2 /* BlendedBack */) {
173
+ state.enable(gl.CULL_FACE);
174
+ if ((_b = r.values.dFlipSided) === null || _b === void 0 ? void 0 : _b.ref.value) {
175
+ state.frontFace(gl.CW);
176
+ state.cullFace(gl.BACK);
177
+ }
178
+ else {
179
+ state.frontFace(gl.CCW);
180
+ state.cullFace(gl.FRONT);
181
+ }
182
+ }
160
183
  else {
161
184
  if (r.values.uDoubleSided) {
162
185
  if (r.values.uDoubleSided.ref.value || r.values.hasReflection.ref.value) {
@@ -170,15 +193,9 @@ var Renderer;
170
193
  // webgl default
171
194
  state.disable(gl.CULL_FACE);
172
195
  }
173
- if (r.values.dFlipSided) {
174
- if (r.values.dFlipSided.ref.value) {
175
- state.frontFace(gl.CW);
176
- state.cullFace(gl.FRONT);
177
- }
178
- else {
179
- state.frontFace(gl.CCW);
180
- state.cullFace(gl.BACK);
181
- }
196
+ if ((_c = r.values.dFlipSided) === null || _c === void 0 ? void 0 : _c.ref.value) {
197
+ state.frontFace(gl.CW);
198
+ state.cullFace(gl.FRONT);
182
199
  }
183
200
  else {
184
201
  // webgl default
@@ -229,7 +246,7 @@ var Renderer;
229
246
  var renderables = group.renderables;
230
247
  for (var i = 0, il = renderables.length; i < il; ++i) {
231
248
  if (!renderables[i].state.colorOnly) {
232
- renderObject(renderables[i], variant);
249
+ renderObject(renderables[i], variant, 0 /* None */);
233
250
  }
234
251
  }
235
252
  };
@@ -240,7 +257,7 @@ var Renderer;
240
257
  updateInternal(group, camera, depthTexture, false, false);
241
258
  var renderables = group.renderables;
242
259
  for (var i = 0, il = renderables.length; i < il; ++i) {
243
- renderObject(renderables[i], 'depth');
260
+ renderObject(renderables[i], 'depth', 0 /* None */);
244
261
  }
245
262
  };
246
263
  var renderMarkingDepth = function (group, camera, depthTexture) {
@@ -253,7 +270,7 @@ var Renderer;
253
270
  for (var i = 0, il = renderables.length; i < il; ++i) {
254
271
  var r = renderables[i];
255
272
  if (r.values.markerAverage.ref.value !== 1) {
256
- renderObject(renderables[i], 'marking');
273
+ renderObject(renderables[i], 'marking', 0 /* None */);
257
274
  }
258
275
  }
259
276
  };
@@ -267,7 +284,7 @@ var Renderer;
267
284
  for (var i = 0, il = renderables.length; i < il; ++i) {
268
285
  var r = renderables[i];
269
286
  if (r.values.markerAverage.ref.value > 0) {
270
- renderObject(renderables[i], 'marking');
287
+ renderObject(renderables[i], 'marking', 0 /* None */);
271
288
  }
272
289
  }
273
290
  };
@@ -276,6 +293,7 @@ var Renderer;
276
293
  renderBlendedTransparent(group, camera, depthTexture);
277
294
  };
278
295
  var renderBlendedOpaque = function (group, camera, depthTexture) {
296
+ var _a, _b;
279
297
  state.disable(gl.BLEND);
280
298
  state.enable(gl.DEPTH_TEST);
281
299
  state.depthMask(true);
@@ -284,11 +302,15 @@ var Renderer;
284
302
  for (var i = 0, il = renderables.length; i < il; ++i) {
285
303
  var r = renderables[i];
286
304
  if (r.state.opaque) {
287
- renderObject(r, 'colorBlended');
305
+ renderObject(r, 'colorBlended', 0 /* None */);
306
+ }
307
+ else if (((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) && ((_b = r.values.dOpaqueBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value)) {
308
+ renderObject(r, 'colorBlended', 2 /* BlendedBack */);
288
309
  }
289
310
  }
290
311
  };
291
312
  var renderBlendedTransparent = function (group, camera, depthTexture) {
313
+ var _a, _b;
292
314
  state.enable(gl.DEPTH_TEST);
293
315
  updateInternal(group, camera, depthTexture, false, false);
294
316
  var renderables = group.renderables;
@@ -303,14 +325,23 @@ var Renderer;
303
325
  for (var i = 0, il = renderables.length; i < il; ++i) {
304
326
  var r = renderables[i];
305
327
  if (!r.state.opaque && r.state.writeDepth) {
306
- renderObject(r, 'colorBlended');
328
+ renderObject(r, 'colorBlended', 0 /* None */);
307
329
  }
308
330
  }
309
331
  state.depthMask(false);
310
332
  for (var i = 0, il = renderables.length; i < il; ++i) {
311
333
  var r = renderables[i];
312
334
  if (!r.state.opaque && !r.state.writeDepth) {
313
- renderObject(r, 'colorBlended');
335
+ if ((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
336
+ // render frontfaces and backfaces separately to avoid artefacts
337
+ if (!((_b = r.values.dOpaqueBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value)) {
338
+ renderObject(r, 'colorBlended', 2 /* BlendedBack */);
339
+ }
340
+ renderObject(r, 'colorBlended', 1 /* BlendedFront */);
341
+ }
342
+ else {
343
+ renderObject(r, 'colorBlended', 0 /* None */);
344
+ }
314
345
  }
315
346
  }
316
347
  };
@@ -326,7 +357,7 @@ var Renderer;
326
357
  // uAlpha is updated in "render" so we need to recompute it here
327
358
  var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
328
359
  if (alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && !((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
329
- renderObject(r, 'colorBlended');
360
+ renderObject(r, 'colorBlended', 0 /* None */);
330
361
  }
331
362
  }
332
363
  };
@@ -342,12 +373,12 @@ var Renderer;
342
373
  // uAlpha is updated in "render" so we need to recompute it here
343
374
  var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
344
375
  if (alpha < 1 || r.values.transparencyAverage.ref.value > 0 || ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
345
- renderObject(r, 'colorBlended');
376
+ renderObject(r, 'colorBlended', 0 /* None */);
346
377
  }
347
378
  }
348
379
  };
349
380
  var renderWboitOpaque = function (group, camera, depthTexture) {
350
- var _a, _b;
381
+ var _a, _b, _c;
351
382
  state.disable(gl.BLEND);
352
383
  state.enable(gl.DEPTH_TEST);
353
384
  state.depthMask(true);
@@ -358,8 +389,8 @@ var Renderer;
358
389
  // TODO: simplify, handle in renderable.state???
359
390
  // uAlpha is updated in "render" so we need to recompute it here
360
391
  var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
361
- if (alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && r.values.dGeometryType.ref.value !== 'directVolume' && ((_a = r.values.dPointStyle) === null || _a === void 0 ? void 0 : _a.ref.value) !== 'fuzzy' && !((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value)) {
362
- renderObject(r, 'colorWboit');
392
+ if ((alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && r.values.dGeometryType.ref.value !== 'directVolume' && ((_a = r.values.dPointStyle) === null || _a === void 0 ? void 0 : _a.ref.value) !== 'fuzzy' && !((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value)) || ((_c = r.values.dOpaqueBackfaces) === null || _c === void 0 ? void 0 : _c.ref.value)) {
393
+ renderObject(r, 'colorWboit', 0 /* None */);
363
394
  }
364
395
  }
365
396
  };
@@ -373,7 +404,7 @@ var Renderer;
373
404
  // uAlpha is updated in "render" so we need to recompute it here
374
405
  var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
375
406
  if (alpha < 1 || r.values.transparencyAverage.ref.value > 0 || r.values.dGeometryType.ref.value === 'directVolume' || ((_a = r.values.dPointStyle) === null || _a === void 0 ? void 0 : _a.ref.value) === 'fuzzy' || !!r.values.uBackgroundColor || ((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value)) {
376
- renderObject(r, 'colorWboit');
407
+ renderObject(r, 'colorWboit', 0 /* None */);
377
408
  }
378
409
  }
379
410
  };
@@ -1 +1 @@
1
- export declare const apply_interior_color = "\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n}\n";
1
+ export declare const apply_interior_color = "\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n\n #ifdef dOpaqueBackfaces\n gl_FragColor.a = 1.0;\n #endif\n}\n";
@@ -1 +1 @@
1
- export var apply_interior_color = "\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n}\n";
1
+ export var apply_interior_color = "\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n\n #ifdef dOpaqueBackfaces\n gl_FragColor.a = 1.0;\n #endif\n}\n";
@@ -1 +1 @@
1
- export declare const check_picking_alpha = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1)\n discard; // ignore so the element below can be picked\n";
1
+ export declare const check_picking_alpha = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\n// if not opaque enough ignore so the element below can be picked\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1) {\n #ifdef dOpaqueBackfaces\n if (!interior) discard;\n #else\n discard;\n #endif\n}\n";
@@ -1 +1 @@
1
- export var check_picking_alpha = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1)\n discard; // ignore so the element below can be picked\n";
1
+ export var check_picking_alpha = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\n// if not opaque enough ignore so the element below can be picked\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1) {\n #ifdef dOpaqueBackfaces\n if (!interior) discard;\n #else\n discard;\n #endif\n}\n";
@@ -1 +1 @@
1
- export declare const color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
1
+ export declare const color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #elif defined(dColorType_direct)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
@@ -1 +1 @@
1
- export var color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
1
+ export var color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #elif defined(dColorType_direct)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
@@ -8,11 +8,12 @@ import { Writer } from './writer';
8
8
  import { Encoder, Category } from './cif/encoder';
9
9
  import { ComponentAtom } from '../../mol-model-formats/structure/property/atoms/chem_comp';
10
10
  import { ComponentBond } from '../../mol-model-formats/structure/property/bonds/chem_comp';
11
+ import { ElementSymbol } from '../../mol-model/structure/model/types';
11
12
  interface Atom {
12
13
  Cartn_x: number;
13
14
  Cartn_y: number;
14
15
  Cartn_z: number;
15
- type_symbol: string;
16
+ type_symbol: ElementSymbol;
16
17
  index: number;
17
18
  }
18
19
  declare function Atom(partial: any): Atom;
@@ -39,7 +40,8 @@ export declare abstract class LigandEncoder implements Encoder<string> {
39
40
  getData(): string;
40
41
  protected getAtoms<Ctx>(instance: Category.Instance<Ctx>, source: any): Map<string, Atom>;
41
42
  private _getAtoms;
42
- protected skipHydrogen(type_symbol: string): boolean;
43
+ protected skipHydrogen(type_symbol: ElementSymbol): boolean;
44
+ protected isHydrogen(type_symbol: ElementSymbol): boolean;
43
45
  private getSortedFields;
44
46
  private getField;
45
47
  protected getName<Ctx>(instance: Category.Instance<Ctx>, source: any): string;
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { __assign } from "tslib";
7
7
  import { StringBuilder } from '../../mol-util';
8
+ import { getElementIdx, isHydrogen } from '../../mol-model/structure/structure/unit/bonds/common';
8
9
  function Atom(partial) {
9
10
  return __assign({}, partial);
10
11
  }
@@ -77,11 +78,12 @@ var LigandEncoder = /** @class */ (function () {
77
78
  while (it_1.hasNext) {
78
79
  var key = it_1.move();
79
80
  var lai = label_atom_id.value(key, data, index);
81
+ // ignore all alternate locations after the first
82
+ if (atoms.has(lai))
83
+ continue;
80
84
  var ts = type_symbol.value(key, data, index);
81
- if (this.skipHydrogen(ts)) {
82
- index++;
85
+ if (this.skipHydrogen(ts))
83
86
  continue;
84
- }
85
87
  var a = {};
86
88
  for (var _f = 0, _fl = fields.length; _f < _fl; _f++) {
87
89
  var f = fields[_f];
@@ -99,7 +101,10 @@ var LigandEncoder = /** @class */ (function () {
99
101
  if (this.hydrogens) {
100
102
  return false;
101
103
  }
102
- return type_symbol === 'H';
104
+ return this.isHydrogen(type_symbol);
105
+ };
106
+ LigandEncoder.prototype.isHydrogen = function (type_symbol) {
107
+ return isHydrogen(getElementIdx(type_symbol));
103
108
  };
104
109
  LigandEncoder.prototype.getSortedFields = function (instance, names) {
105
110
  var _this = this;
@@ -33,13 +33,25 @@ var MolEncoder = /** @class */ (function (_super) {
33
33
  StringBuilder.writeSafe(this.builder, "".concat(name, "\n ").concat(this.encoder, "\n\n"));
34
34
  var atomMap = this.componentAtomData.entries.get(name);
35
35
  var bondMap = this.componentBondData.entries.get(name);
36
+ // happens for the unknown ligands (UNL)
37
+ if (!atomMap)
38
+ throw Error("The Chemical Component Dictionary doesn't hold any atom data for ".concat(name));
36
39
  var bondCount = 0;
37
40
  var chiral = false;
38
41
  // traverse once to determine all actually present atoms
39
42
  var atoms = this.getAtoms(instance, source);
40
43
  atoms.forEach(function (atom1, label_atom_id1) {
41
- var i1 = atom1.index;
42
- var _a = atomMap.map.get(label_atom_id1), charge = _a.charge, stereo_config = _a.stereo_config;
44
+ var i1 = atom1.index, type_symbol1 = atom1.type_symbol;
45
+ var atomMapData1 = atomMap.map.get(label_atom_id1);
46
+ if (!atomMapData1) {
47
+ if (_this.isHydrogen(type_symbol1)) {
48
+ return;
49
+ }
50
+ else {
51
+ throw Error("Unknown atom ".concat(label_atom_id1, " for component ").concat(name));
52
+ }
53
+ }
54
+ var charge = atomMapData1.charge, stereo_config = atomMapData1.stereo_config;
43
55
  StringBuilder.writePadLeft(ctab, atom1.Cartn_x.toFixed(4), 10);
44
56
  StringBuilder.writePadLeft(ctab, atom1.Cartn_y.toFixed(4), 10);
45
57
  StringBuilder.writePadLeft(ctab, atom1.Cartn_z.toFixed(4), 10);
@@ -57,8 +69,8 @@ var MolEncoder = /** @class */ (function (_super) {
57
69
  var atom2 = atoms.get(label_atom_id2);
58
70
  if (!atom2)
59
71
  return;
60
- var i2 = atom2.index, type_symbol2 = atom2.type_symbol;
61
- if (i1 < i2 && !_this.skipHydrogen(type_symbol2)) {
72
+ var i2 = atom2.index;
73
+ if (i1 < i2) {
62
74
  var order = bond.order;
63
75
  StringBuilder.writeIntegerPadLeft(bonds, i1 + 1, 3);
64
76
  StringBuilder.writeIntegerPadLeft(bonds, i2 + 1, 3);
@@ -27,20 +27,33 @@ var Mol2Encoder = /** @class */ (function (_super) {
27
27
  // write header
28
28
  var name = this.getName(instance, source);
29
29
  StringBuilder.writeSafe(this.builder, "# Name: ".concat(name, "\n# Created by ").concat(this.encoder, "\n\n"));
30
+ var atomMap = this.componentAtomData.entries.get(name);
30
31
  var bondMap = this.componentBondData.entries.get(name);
32
+ // happens for the unknown ligands (UNL)
33
+ if (!atomMap)
34
+ throw Error("The Chemical Component Dictionary doesn't hold any atom data for ".concat(name));
31
35
  var bondCount = 0;
32
36
  var atoms = this.getAtoms(instance, source);
33
37
  StringBuilder.writeSafe(a, '@<TRIPOS>ATOM\n');
34
38
  StringBuilder.writeSafe(b, '@<TRIPOS>BOND\n');
35
39
  atoms.forEach(function (atom1, label_atom_id1) {
36
- var i1 = atom1.index;
40
+ var i1 = atom1.index, type_symbol1 = atom1.type_symbol;
41
+ var atomMapData1 = atomMap.map.get(label_atom_id1);
42
+ if (!atomMapData1) {
43
+ if (_this.isHydrogen(type_symbol1)) {
44
+ return;
45
+ }
46
+ else {
47
+ throw Error("Unknown atom ".concat(label_atom_id1, " for component ").concat(name));
48
+ }
49
+ }
37
50
  if (bondMap === null || bondMap === void 0 ? void 0 : bondMap.map) {
38
51
  bondMap.map.get(label_atom_id1).forEach(function (bond, label_atom_id2) {
39
52
  var atom2 = atoms.get(label_atom_id2);
40
53
  if (!atom2)
41
54
  return;
42
- var i2 = atom2.index, type_symbol2 = atom2.type_symbol;
43
- if (i1 < i2 && !_this.skipHydrogen(type_symbol2)) {
55
+ var i2 = atom2.index;
56
+ if (i1 < i2) {
44
57
  var order = bond.order, flags = bond.flags;
45
58
  var ar = BondType.is(16 /* Aromatic */, flags);
46
59
  StringBuilder.writeSafe(b, "".concat(++bondCount, " ").concat(i1 + 1, " ").concat(i2 + 1, " ").concat(ar ? 'ar' : order));
@@ -48,7 +61,7 @@ var Mol2Encoder = /** @class */ (function (_super) {
48
61
  }
49
62
  });
50
63
  }
51
- var sybyl = (bondMap === null || bondMap === void 0 ? void 0 : bondMap.map) ? _this.mapToSybyl(label_atom_id1, atom1.type_symbol, bondMap) : atom1.type_symbol;
64
+ var sybyl = (bondMap === null || bondMap === void 0 ? void 0 : bondMap.map) ? _this.mapToSybyl(label_atom_id1, type_symbol1, bondMap) : type_symbol1;
52
65
  StringBuilder.writeSafe(a, "".concat(i1 + 1, " ").concat(label_atom_id1, " ").concat(atom1.Cartn_x.toFixed(3), " ").concat(atom1.Cartn_y.toFixed(3), " ").concat(atom1.Cartn_z.toFixed(3), " ").concat(sybyl, " 1 ").concat(name, " 0.000\n"));
53
66
  });
54
67
  // could write something like 'SMALL\nNO_CHARGES', for now let's write **** indicating non-optional, yet missing, string values
@@ -30,7 +30,7 @@ export declare const PlyShapeParams: {
30
30
  flatShaded: PD.BooleanParam;
31
31
  ignoreLight: PD.BooleanParam;
32
32
  xrayShaded: PD.BooleanParam;
33
- allowTransparentBackfaces: PD.BooleanParam;
33
+ transparentBackfaces: PD.Select<string>;
34
34
  bumpFrequency: PD.Numeric;
35
35
  bumpAmplitude: PD.Numeric;
36
36
  alpha: PD.Numeric;
@@ -72,7 +72,7 @@ export declare function shapeFromPly(source: PlyFile, params?: {}): Task<ShapePr
72
72
  flatShaded: PD.BooleanParam;
73
73
  ignoreLight: PD.BooleanParam;
74
74
  xrayShaded: PD.BooleanParam;
75
- allowTransparentBackfaces: PD.BooleanParam;
75
+ transparentBackfaces: PD.Select<string>;
76
76
  bumpFrequency: PD.Numeric;
77
77
  bumpAmplitude: PD.Numeric;
78
78
  alpha: PD.Numeric;
@@ -25,7 +25,7 @@ export declare const InteractionsInterUnitParams: {
25
25
  flatShaded: PD.BooleanParam;
26
26
  ignoreLight: PD.BooleanParam;
27
27
  xrayShaded: PD.BooleanParam;
28
- allowTransparentBackfaces: PD.BooleanParam;
28
+ transparentBackfaces: PD.Select<string>;
29
29
  bumpFrequency: PD.Numeric;
30
30
  bumpAmplitude: PD.Numeric;
31
31
  alpha: PD.Numeric;
@@ -25,7 +25,7 @@ export declare const InteractionsIntraUnitParams: {
25
25
  flatShaded: PD.BooleanParam;
26
26
  ignoreLight: PD.BooleanParam;
27
27
  xrayShaded: PD.BooleanParam;
28
- allowTransparentBackfaces: PD.BooleanParam;
28
+ transparentBackfaces: PD.Select<string>;
29
29
  bumpFrequency: PD.Numeric;
30
30
  bumpAmplitude: PD.Numeric;
31
31
  alpha: PD.Numeric;
@@ -29,7 +29,7 @@ export declare const InteractionsParams: {
29
29
  flatShaded: PD.BooleanParam;
30
30
  ignoreLight: PD.BooleanParam;
31
31
  xrayShaded: PD.BooleanParam;
32
- allowTransparentBackfaces: PD.BooleanParam;
32
+ transparentBackfaces: PD.Select<string>;
33
33
  bumpFrequency: PD.Numeric;
34
34
  bumpAmplitude: PD.Numeric;
35
35
  alpha: PD.Numeric;
@@ -72,7 +72,7 @@ export declare function getInteractionParams(ctx: ThemeRegistryContext, structur
72
72
  flatShaded: PD.BooleanParam;
73
73
  ignoreLight: PD.BooleanParam;
74
74
  xrayShaded: PD.BooleanParam;
75
- allowTransparentBackfaces: PD.BooleanParam;
75
+ transparentBackfaces: PD.Select<string>;
76
76
  bumpFrequency: PD.Numeric;
77
77
  bumpAmplitude: PD.Numeric;
78
78
  alpha: PD.Numeric;
@@ -116,7 +116,7 @@ export declare const InteractionsRepresentationProvider: StructureRepresentation
116
116
  flatShaded: PD.BooleanParam;
117
117
  ignoreLight: PD.BooleanParam;
118
118
  xrayShaded: PD.BooleanParam;
119
- allowTransparentBackfaces: PD.BooleanParam;
119
+ transparentBackfaces: PD.Select<string>;
120
120
  bumpFrequency: PD.Numeric;
121
121
  bumpAmplitude: PD.Numeric;
122
122
  alpha: PD.Numeric;
@@ -30,7 +30,7 @@ export declare const CrossLinkRestraintCylinderParams: {
30
30
  flatShaded: PD.BooleanParam;
31
31
  ignoreLight: PD.BooleanParam;
32
32
  xrayShaded: PD.BooleanParam;
33
- allowTransparentBackfaces: PD.BooleanParam;
33
+ transparentBackfaces: PD.Select<string>;
34
34
  bumpFrequency: PD.Numeric;
35
35
  bumpAmplitude: PD.Numeric;
36
36
  alpha: PD.Numeric;
@@ -73,7 +73,7 @@ export declare const CrossLinkRestraintParams: {
73
73
  flatShaded: PD.BooleanParam;
74
74
  ignoreLight: PD.BooleanParam;
75
75
  xrayShaded: PD.BooleanParam;
76
- allowTransparentBackfaces: PD.BooleanParam;
76
+ transparentBackfaces: PD.Select<string>;
77
77
  bumpFrequency: PD.Numeric;
78
78
  bumpAmplitude: PD.Numeric;
79
79
  alpha: PD.Numeric;
@@ -115,7 +115,7 @@ export declare function getCrossLinkRestraintParams(ctx: ThemeRegistryContext, s
115
115
  flatShaded: PD.BooleanParam;
116
116
  ignoreLight: PD.BooleanParam;
117
117
  xrayShaded: PD.BooleanParam;
118
- allowTransparentBackfaces: PD.BooleanParam;
118
+ transparentBackfaces: PD.Select<string>;
119
119
  bumpFrequency: PD.Numeric;
120
120
  bumpAmplitude: PD.Numeric;
121
121
  alpha: PD.Numeric;
@@ -158,7 +158,7 @@ export declare const CrossLinkRestraintRepresentationProvider: StructureRepresen
158
158
  flatShaded: PD.BooleanParam;
159
159
  ignoreLight: PD.BooleanParam;
160
160
  xrayShaded: PD.BooleanParam;
161
- allowTransparentBackfaces: PD.BooleanParam;
161
+ transparentBackfaces: PD.Select<string>;
162
162
  bumpFrequency: PD.Numeric;
163
163
  bumpAmplitude: PD.Numeric;
164
164
  alpha: PD.Numeric;
@@ -86,7 +86,6 @@ export function getContourLevelEmdb(plugin, taskCtx, emdbId) {
86
86
  }
87
87
  }
88
88
  contourLevel = parseFloat(primaryContour.getElementsByTagName('level')[0].textContent);
89
- console.log({ contourLevel: contourLevel });
90
89
  return [2 /*return*/, contourLevel];
91
90
  }
92
91
  });
@@ -331,7 +331,7 @@ export declare const PluginCommands: {
331
331
  flipSided: any;
332
332
  flatShaded: any;
333
333
  xrayShaded: any;
334
- allowTransparentBackfaces: any;
334
+ transparentBackfaces: any;
335
335
  bumpFrequency: any;
336
336
  bumpAmplitude: any;
337
337
  quality: any;
@@ -37,7 +37,7 @@ declare class ViewportScreenshotHelper extends PluginComponent {
37
37
  flipSided: boolean;
38
38
  flatShaded: boolean;
39
39
  xrayShaded: boolean;
40
- allowTransparentBackfaces: boolean;
40
+ transparentBackfaces: string;
41
41
  bumpFrequency: number;
42
42
  bumpAmplitude: number;
43
43
  quality: "auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest";
@@ -70,7 +70,7 @@ declare class ViewportScreenshotHelper extends PluginComponent {
70
70
  flipSided: boolean;
71
71
  flatShaded: boolean;
72
72
  xrayShaded: boolean;
73
- allowTransparentBackfaces: boolean;
73
+ transparentBackfaces: string;
74
74
  bumpFrequency: number;
75
75
  bumpAmplitude: number;
76
76
  quality: "auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest";
@@ -111,7 +111,7 @@ declare class ViewportScreenshotHelper extends PluginComponent {
111
111
  flipSided: boolean;
112
112
  flatShaded: boolean;
113
113
  xrayShaded: boolean;
114
- allowTransparentBackfaces: boolean;
114
+ transparentBackfaces: string;
115
115
  bumpFrequency: number;
116
116
  bumpAmplitude: number;
117
117
  quality: "auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest";
@@ -1,2 +1,2 @@
1
- export var PLUGIN_VERSION = '3.6.1';
2
- export var PLUGIN_VERSION_DATE = new Date(typeof __MOLSTAR_DEBUG_TIMESTAMP__ !== 'undefined' ? __MOLSTAR_DEBUG_TIMESTAMP__ : 1648986596976);
1
+ export var PLUGIN_VERSION = '3.7.0';
2
+ export var PLUGIN_VERSION_DATE = new Date(typeof __MOLSTAR_DEBUG_TIMESTAMP__ !== 'undefined' ? __MOLSTAR_DEBUG_TIMESTAMP__ : 1649872989149);
@@ -150,7 +150,7 @@ declare const ModelUnitcell3D: StateTransformer<SO.Molecule.Model, SO.Shape.Repr
150
150
  flatShaded: boolean;
151
151
  ignoreLight: boolean;
152
152
  xrayShaded: boolean;
153
- allowTransparentBackfaces: boolean;
153
+ transparentBackfaces: string;
154
154
  bumpFrequency: number;
155
155
  bumpAmplitude: number;
156
156
  alpha: number;
@@ -173,7 +173,7 @@ declare const StructureBoundingBox3D: StateTransformer<SO.Molecule.Structure, SO
173
173
  flatShaded: boolean;
174
174
  ignoreLight: boolean;
175
175
  xrayShaded: boolean;
176
- allowTransparentBackfaces: boolean;
176
+ transparentBackfaces: string;
177
177
  bumpFrequency: number;
178
178
  bumpAmplitude: number;
179
179
  alpha: number;
@@ -278,7 +278,7 @@ declare const StructureSelectionsAngle3D: StateTransformer<SO.Molecule.Structure
278
278
  flipSided: boolean;
279
279
  flatShaded: boolean;
280
280
  xrayShaded: boolean;
281
- allowTransparentBackfaces: boolean;
281
+ transparentBackfaces: string;
282
282
  bumpFrequency: number;
283
283
  bumpAmplitude: number;
284
284
  lineSizeAttenuation: boolean;
@@ -330,7 +330,7 @@ declare const StructureSelectionsDihedral3D: StateTransformer<SO.Molecule.Struct
330
330
  flipSided: boolean;
331
331
  flatShaded: boolean;
332
332
  xrayShaded: boolean;
333
- allowTransparentBackfaces: boolean;
333
+ transparentBackfaces: string;
334
334
  bumpFrequency: number;
335
335
  bumpAmplitude: number;
336
336
  lineSizeAttenuation: boolean;
@@ -388,7 +388,7 @@ declare const StructureSelectionsOrientation3D: StateTransformer<SO.Molecule.Str
388
388
  flatShaded: boolean;
389
389
  ignoreLight: boolean;
390
390
  xrayShaded: boolean;
391
- allowTransparentBackfaces: boolean;
391
+ transparentBackfaces: string;
392
392
  bumpFrequency: number;
393
393
  bumpAmplitude: number;
394
394
  alpha: number;
@@ -414,7 +414,7 @@ declare const StructureSelectionsPlane3D: StateTransformer<SO.Molecule.Structure
414
414
  flatShaded: boolean;
415
415
  ignoreLight: boolean;
416
416
  xrayShaded: boolean;
417
- allowTransparentBackfaces: boolean;
417
+ transparentBackfaces: string;
418
418
  bumpFrequency: number;
419
419
  bumpAmplitude: number;
420
420
  alpha: number;
@@ -9,7 +9,9 @@ import { Observable } from 'rxjs';
9
9
  import { PluginUIContext } from './context';
10
10
  import { ColorAccent } from './controls/common';
11
11
  export declare const PluginReactContext: React.Context<PluginUIContext>;
12
- export declare abstract class PluginUIComponent<P = {}, S = {}, SS = {}> extends React.Component<P, S, SS> {
12
+ export declare abstract class PluginUIComponent<P = {}, S = {}, SS = {}> extends React.Component<P & {
13
+ children?: any;
14
+ }, S, SS> {
13
15
  static contextType: React.Context<PluginUIContext>;
14
16
  readonly plugin: PluginUIContext;
15
17
  private subs;
@@ -27,5 +27,5 @@ export declare class CombinedColorControl extends React.PureComponent<ParamProps
27
27
  swatch(): JSX.Element;
28
28
  render(): JSX.Element;
29
29
  }
30
- export declare function ColorOptions(): React.ReactFragment;
30
+ export declare function ColorOptions(): any;
31
31
  export declare function ColorValueOption(color: Color): JSX.Element | null;
@@ -18,6 +18,7 @@ export declare class ControlGroup extends React.Component<{
18
18
  noTopMargin?: boolean;
19
19
  childrenClassName?: string;
20
20
  maxHeight?: string;
21
+ children?: any;
21
22
  }, {
22
23
  isExpanded: boolean;
23
24
  }> {
@@ -139,6 +140,7 @@ export declare class ToggleButton extends React.PureComponent<ToggleButtonProps>
139
140
  render(): JSX.Element;
140
141
  }
141
142
  export declare class ExpandGroup extends React.PureComponent<{
143
+ children?: any;
142
144
  header: string;
143
145
  headerStyle?: React.CSSProperties;
144
146
  initiallyExpanded?: boolean;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2020-21 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2020-22 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author David Sehnal <david.sehnal@gmail.com>
5
5
  */