molstar 4.2.0 → 4.3.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 (339) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +197 -197
  3. package/build/viewer/embedded.html +52 -52
  4. package/build/viewer/index.html +129 -129
  5. package/build/viewer/molstar.js +1 -1
  6. package/build/viewer/molstar.js.LICENSE.txt +9 -0
  7. package/lib/apps/docking-viewer/index.html +36 -36
  8. package/lib/apps/mesoscale-explorer/index.html +100 -100
  9. package/lib/apps/mesoscale-explorer/style.scss +33 -33
  10. package/lib/apps/viewer/app.d.ts +2 -1
  11. package/lib/apps/viewer/app.js +2 -1
  12. package/lib/apps/viewer/embedded.html +52 -52
  13. package/lib/apps/viewer/index.html +129 -129
  14. package/lib/cli/chem-comp-dict/create-ions.js +9 -9
  15. package/lib/cli/chem-comp-dict/create-saccharides.js +9 -9
  16. package/lib/cli/cifschema/util/generate.js +12 -12
  17. package/lib/cli/lipid-params/index.js +9 -9
  18. package/lib/commonjs/apps/viewer/app.d.ts +2 -1
  19. package/lib/commonjs/apps/viewer/app.js +1 -0
  20. package/lib/commonjs/cli/chem-comp-dict/create-ions.js +9 -9
  21. package/lib/commonjs/cli/chem-comp-dict/create-saccharides.js +9 -9
  22. package/lib/commonjs/cli/cifschema/util/generate.js +12 -12
  23. package/lib/commonjs/cli/lipid-params/index.js +9 -9
  24. package/lib/commonjs/examples/alpha-orbitals/example-data.js +160 -160
  25. package/lib/commonjs/extensions/alpha-orbitals/gpu/shader.frag.js +136 -136
  26. package/lib/commonjs/extensions/assembly-symmetry/prop.js +24 -24
  27. package/lib/commonjs/extensions/dnatco/confal-pyramids/behavior.js +5 -5
  28. package/lib/commonjs/extensions/dnatco/ntc-tube/behavior.js +5 -5
  29. package/lib/commonjs/extensions/geo-export/usdz-exporter.js +41 -41
  30. package/lib/commonjs/extensions/meshes/mesh-extension.d.ts +1 -0
  31. package/lib/commonjs/extensions/mp4-export/encoder.js +1 -1
  32. package/lib/commonjs/extensions/mvs/components/annotation-label/representation.d.ts +0 -2
  33. package/lib/commonjs/extensions/mvs/components/custom-label/representation.d.ts +2 -2
  34. package/lib/commonjs/extensions/mvs/tree/mvs/mvs-builder.d.ts +8 -2
  35. package/lib/commonjs/extensions/sb-ncbr/index.d.ts +8 -0
  36. package/lib/commonjs/extensions/sb-ncbr/index.js +14 -1
  37. package/lib/commonjs/extensions/sb-ncbr/tunnels/actions.d.ts +20 -0
  38. package/lib/commonjs/extensions/sb-ncbr/tunnels/actions.js +89 -0
  39. package/lib/commonjs/extensions/sb-ncbr/tunnels/algorithm.d.ts +26 -0
  40. package/lib/commonjs/extensions/sb-ncbr/tunnels/algorithm.js +474 -0
  41. package/lib/commonjs/extensions/sb-ncbr/tunnels/behavior.d.ts +40 -0
  42. package/lib/commonjs/extensions/sb-ncbr/tunnels/behavior.js +96 -0
  43. package/lib/commonjs/extensions/sb-ncbr/tunnels/data-model.d.ts +146 -0
  44. package/lib/commonjs/extensions/sb-ncbr/tunnels/data-model.js +28 -0
  45. package/lib/commonjs/extensions/sb-ncbr/tunnels/examples.d.ts +12 -0
  46. package/lib/commonjs/extensions/sb-ncbr/tunnels/examples.js +54 -0
  47. package/lib/commonjs/extensions/sb-ncbr/tunnels/props.d.ts +19 -0
  48. package/lib/commonjs/extensions/sb-ncbr/tunnels/props.js +26 -0
  49. package/lib/commonjs/extensions/sb-ncbr/tunnels/representation.d.ts +29 -0
  50. package/lib/commonjs/extensions/sb-ncbr/tunnels/representation.js +99 -0
  51. package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +17 -0
  52. package/lib/commonjs/mol-canvas3d/canvas3d.js +4 -0
  53. package/lib/commonjs/mol-canvas3d/passes/dof.d.ts +34 -0
  54. package/lib/commonjs/mol-canvas3d/passes/dof.js +167 -0
  55. package/lib/commonjs/mol-canvas3d/passes/draw.d.ts +2 -0
  56. package/lib/commonjs/mol-canvas3d/passes/draw.js +31 -8
  57. package/lib/commonjs/mol-canvas3d/passes/image.d.ts +8 -0
  58. package/lib/commonjs/mol-canvas3d/passes/postprocessing.d.ts +8 -0
  59. package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +5 -0
  60. package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +0 -1
  61. package/lib/commonjs/mol-gl/shader/background.frag.js +95 -95
  62. package/lib/commonjs/mol-gl/shader/background.vert.js +11 -11
  63. package/lib/commonjs/mol-gl/shader/blend-back-dpoit.frag.js +13 -13
  64. package/lib/commonjs/mol-gl/shader/bloom/blur.frag.js +28 -28
  65. package/lib/commonjs/mol-gl/shader/bloom/composite.frag.js +33 -33
  66. package/lib/commonjs/mol-gl/shader/bloom/luminosity.frag.js +52 -52
  67. package/lib/commonjs/mol-gl/shader/cas.frag.js +144 -144
  68. package/lib/commonjs/mol-gl/shader/chunks/apply-fog.glsl.js +31 -31
  69. package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.js +12 -12
  70. package/lib/commonjs/mol-gl/shader/chunks/apply-light-color.glsl.js +77 -77
  71. package/lib/commonjs/mol-gl/shader/chunks/apply-marker-color.glsl.js +16 -16
  72. package/lib/commonjs/mol-gl/shader/chunks/assign-clipping-varying.glsl.js +8 -8
  73. package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.js +140 -140
  74. package/lib/commonjs/mol-gl/shader/chunks/assign-group.glsl.js +6 -6
  75. package/lib/commonjs/mol-gl/shader/chunks/assign-marker-varying.glsl.js +8 -8
  76. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.js +112 -112
  77. package/lib/commonjs/mol-gl/shader/chunks/assign-position.glsl.js +14 -14
  78. package/lib/commonjs/mol-gl/shader/chunks/assign-size.glsl.js +18 -18
  79. package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.js +12 -12
  80. package/lib/commonjs/mol-gl/shader/chunks/check-transparency.glsl.js +16 -16
  81. package/lib/commonjs/mol-gl/shader/chunks/clip-instance.glsl.js +7 -7
  82. package/lib/commonjs/mol-gl/shader/chunks/clip-pixel.glsl.js +5 -5
  83. package/lib/commonjs/mol-gl/shader/chunks/color-frag-params.glsl.js +60 -60
  84. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.js +122 -122
  85. package/lib/commonjs/mol-gl/shader/chunks/common-clip.glsl.js +104 -104
  86. package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.js +150 -150
  87. package/lib/commonjs/mol-gl/shader/chunks/common-vert-params.glsl.js +61 -61
  88. package/lib/commonjs/mol-gl/shader/chunks/common.glsl.js +234 -234
  89. package/lib/commonjs/mol-gl/shader/chunks/dpoit-write.glsl.js +62 -62
  90. package/lib/commonjs/mol-gl/shader/chunks/fade-lod.glsl.js +42 -42
  91. package/lib/commonjs/mol-gl/shader/chunks/float-to-rgba.glsl.js +39 -39
  92. package/lib/commonjs/mol-gl/shader/chunks/light-frag-params.glsl.js +127 -127
  93. package/lib/commonjs/mol-gl/shader/chunks/matrix-scale.glsl.js +5 -5
  94. package/lib/commonjs/mol-gl/shader/chunks/normal-frag-params.glsl.js +2 -2
  95. package/lib/commonjs/mol-gl/shader/chunks/read-from-texture.glsl.js +14 -14
  96. package/lib/commonjs/mol-gl/shader/chunks/rgba-to-float.glsl.js +84 -84
  97. package/lib/commonjs/mol-gl/shader/chunks/size-vert-params.glsl.js +11 -11
  98. package/lib/commonjs/mol-gl/shader/chunks/texture3d-from-1d-trilinear.glsl.js +23 -23
  99. package/lib/commonjs/mol-gl/shader/chunks/texture3d-from-2d-linear.glsl.js +17 -17
  100. package/lib/commonjs/mol-gl/shader/chunks/texture3d-from-2d-nearest.glsl.js +8 -8
  101. package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.js +25 -25
  102. package/lib/commonjs/mol-gl/shader/compose.frag.js +12 -12
  103. package/lib/commonjs/mol-gl/shader/compute/color-smoothing/accumulate.frag.js +23 -23
  104. package/lib/commonjs/mol-gl/shader/compute/color-smoothing/accumulate.vert.js +43 -43
  105. package/lib/commonjs/mol-gl/shader/compute/color-smoothing/normalize.frag.js +15 -15
  106. package/lib/commonjs/mol-gl/shader/copy.frag.js +11 -11
  107. package/lib/commonjs/mol-gl/shader/cylinders.frag.js +266 -266
  108. package/lib/commonjs/mol-gl/shader/cylinders.vert.js +89 -89
  109. package/lib/commonjs/mol-gl/shader/depth-merge.frag.js +23 -23
  110. package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +362 -362
  111. package/lib/commonjs/mol-gl/shader/direct-volume.vert.js +41 -41
  112. package/lib/commonjs/mol-gl/shader/dof.frag.d.ts +7 -0
  113. package/lib/commonjs/mol-gl/shader/dof.frag.js +122 -0
  114. package/lib/commonjs/mol-gl/shader/evaluate-dpoit.frag.js +10 -10
  115. package/lib/commonjs/mol-gl/shader/evaluate-wboit.frag.js +17 -17
  116. package/lib/commonjs/mol-gl/shader/fxaa.frag.js +228 -228
  117. package/lib/commonjs/mol-gl/shader/gaussian-density.frag.js +49 -49
  118. package/lib/commonjs/mol-gl/shader/gaussian-density.vert.js +27 -27
  119. package/lib/commonjs/mol-gl/shader/hi-z.frag.js +18 -18
  120. package/lib/commonjs/mol-gl/shader/histogram-pyramid/reduction.frag.js +58 -58
  121. package/lib/commonjs/mol-gl/shader/histogram-pyramid/sum.frag.js +19 -19
  122. package/lib/commonjs/mol-gl/shader/image.frag.js +169 -169
  123. package/lib/commonjs/mol-gl/shader/image.vert.js +21 -21
  124. package/lib/commonjs/mol-gl/shader/lines.frag.js +42 -42
  125. package/lib/commonjs/mol-gl/shader/lines.vert.js +117 -117
  126. package/lib/commonjs/mol-gl/shader/marching-cubes/active-voxels.frag.js +70 -70
  127. package/lib/commonjs/mol-gl/shader/marching-cubes/isosurface.frag.js +311 -311
  128. package/lib/commonjs/mol-gl/shader/marking/edge.frag.js +28 -28
  129. package/lib/commonjs/mol-gl/shader/marking/overlay.frag.js +26 -26
  130. package/lib/commonjs/mol-gl/shader/mesh.frag.js +65 -65
  131. package/lib/commonjs/mol-gl/shader/mesh.vert.js +49 -49
  132. package/lib/commonjs/mol-gl/shader/outlines.frag.js +95 -95
  133. package/lib/commonjs/mol-gl/shader/points.frag.js +59 -59
  134. package/lib/commonjs/mol-gl/shader/points.vert.js +38 -38
  135. package/lib/commonjs/mol-gl/shader/postprocessing.frag.js +150 -150
  136. package/lib/commonjs/mol-gl/shader/quad.vert.js +10 -10
  137. package/lib/commonjs/mol-gl/shader/shadows.frag.js +123 -123
  138. package/lib/commonjs/mol-gl/shader/smaa/blend.frag.js +56 -56
  139. package/lib/commonjs/mol-gl/shader/smaa/blend.vert.js +25 -25
  140. package/lib/commonjs/mol-gl/shader/smaa/edges.frag.js +66 -66
  141. package/lib/commonjs/mol-gl/shader/smaa/edges.vert.js +26 -26
  142. package/lib/commonjs/mol-gl/shader/smaa/weights.frag.js +206 -206
  143. package/lib/commonjs/mol-gl/shader/smaa/weights.vert.js +32 -32
  144. package/lib/commonjs/mol-gl/shader/spheres.frag.js +148 -148
  145. package/lib/commonjs/mol-gl/shader/spheres.vert.js +132 -132
  146. package/lib/commonjs/mol-gl/shader/ssao-blur.frag.js +97 -97
  147. package/lib/commonjs/mol-gl/shader/ssao.frag.js +211 -211
  148. package/lib/commonjs/mol-gl/shader/text.frag.js +85 -85
  149. package/lib/commonjs/mol-gl/shader/text.vert.js +85 -85
  150. package/lib/commonjs/mol-gl/shader/util/grid3d-template.frag.js +46 -46
  151. package/lib/commonjs/mol-gl/shader-code.js +15 -15
  152. package/lib/commonjs/mol-gl/webgl/compat.js +12 -12
  153. package/lib/commonjs/mol-gl/webgl/context.js +1 -0
  154. package/lib/commonjs/mol-gl/webgl/timer.d.ts +1 -1
  155. package/lib/commonjs/mol-gl/webgl/timer.js +8 -1
  156. package/lib/commonjs/mol-math/linear-algebra/3d/minimize-rmsd.js +2 -1
  157. package/lib/commonjs/mol-plugin/animation-loop.d.ts +1 -0
  158. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/behavior.d.ts +6 -6
  159. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +1 -1
  160. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/transformers.d.ts +3 -3
  161. package/lib/commonjs/mol-plugin-state/animation/built-in/state-snapshots.js +7 -3
  162. package/lib/commonjs/mol-plugin-ui/viewport/simple-settings.js +3 -0
  163. package/lib/commonjs/servers/common/swagger-ui/indexTemplate.js +66 -66
  164. package/lib/commonjs/servers/volume/config.js +5 -5
  165. package/lib/examples/alpha-orbitals/example-data.js +160 -160
  166. package/lib/examples/alpha-orbitals/index.html +72 -72
  167. package/lib/examples/basic-wrapper/index.html +137 -137
  168. package/lib/examples/lighting/index.html +88 -88
  169. package/lib/examples/proteopedia-wrapper/index.html +236 -236
  170. package/lib/extensions/alpha-orbitals/gpu/shader.frag.js +136 -136
  171. package/lib/extensions/assembly-symmetry/prop.js +24 -24
  172. package/lib/extensions/dnatco/confal-pyramids/behavior.js +5 -5
  173. package/lib/extensions/dnatco/ntc-tube/behavior.js +5 -5
  174. package/lib/extensions/geo-export/usdz-exporter.js +41 -41
  175. package/lib/extensions/meshes/mesh-extension.d.ts +1 -0
  176. package/lib/extensions/mp4-export/encoder.js +1 -1
  177. package/lib/extensions/mvs/components/annotation-label/representation.d.ts +0 -2
  178. package/lib/extensions/mvs/components/custom-label/representation.d.ts +2 -2
  179. package/lib/extensions/mvs/tree/mvs/mvs-builder.d.ts +8 -2
  180. package/lib/extensions/sb-ncbr/index.d.ts +8 -0
  181. package/lib/extensions/sb-ncbr/index.js +8 -0
  182. package/lib/extensions/sb-ncbr/tunnels/actions.d.ts +20 -0
  183. package/lib/extensions/sb-ncbr/tunnels/actions.js +86 -0
  184. package/lib/extensions/sb-ncbr/tunnels/algorithm.d.ts +26 -0
  185. package/lib/extensions/sb-ncbr/tunnels/algorithm.js +469 -0
  186. package/lib/extensions/sb-ncbr/tunnels/behavior.d.ts +40 -0
  187. package/lib/extensions/sb-ncbr/tunnels/behavior.js +92 -0
  188. package/lib/extensions/sb-ncbr/tunnels/data-model.d.ts +146 -0
  189. package/lib/extensions/sb-ncbr/tunnels/data-model.js +23 -0
  190. package/lib/extensions/sb-ncbr/tunnels/examples.d.ts +12 -0
  191. package/lib/extensions/sb-ncbr/tunnels/examples.js +49 -0
  192. package/lib/extensions/sb-ncbr/tunnels/props.d.ts +19 -0
  193. package/lib/extensions/sb-ncbr/tunnels/props.js +22 -0
  194. package/lib/extensions/sb-ncbr/tunnels/representation.d.ts +29 -0
  195. package/lib/extensions/sb-ncbr/tunnels/representation.js +96 -0
  196. package/lib/mol-canvas3d/canvas3d.d.ts +17 -0
  197. package/lib/mol-canvas3d/canvas3d.js +4 -0
  198. package/lib/mol-canvas3d/passes/dof.d.ts +34 -0
  199. package/lib/mol-canvas3d/passes/dof.js +163 -0
  200. package/lib/mol-canvas3d/passes/draw.d.ts +2 -0
  201. package/lib/mol-canvas3d/passes/draw.js +31 -8
  202. package/lib/mol-canvas3d/passes/image.d.ts +8 -0
  203. package/lib/mol-canvas3d/passes/postprocessing.d.ts +8 -0
  204. package/lib/mol-canvas3d/passes/postprocessing.js +5 -0
  205. package/lib/mol-geo/geometry/lines/lines.d.ts +0 -1
  206. package/lib/mol-gl/shader/background.frag.js +95 -95
  207. package/lib/mol-gl/shader/background.vert.js +11 -11
  208. package/lib/mol-gl/shader/blend-back-dpoit.frag.js +13 -13
  209. package/lib/mol-gl/shader/bloom/blur.frag.js +28 -28
  210. package/lib/mol-gl/shader/bloom/composite.frag.js +33 -33
  211. package/lib/mol-gl/shader/bloom/luminosity.frag.js +52 -52
  212. package/lib/mol-gl/shader/cas.frag.js +144 -144
  213. package/lib/mol-gl/shader/chunks/apply-fog.glsl.js +31 -31
  214. package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.js +12 -12
  215. package/lib/mol-gl/shader/chunks/apply-light-color.glsl.js +77 -77
  216. package/lib/mol-gl/shader/chunks/apply-marker-color.glsl.js +16 -16
  217. package/lib/mol-gl/shader/chunks/assign-clipping-varying.glsl.js +8 -8
  218. package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.js +140 -140
  219. package/lib/mol-gl/shader/chunks/assign-group.glsl.js +6 -6
  220. package/lib/mol-gl/shader/chunks/assign-marker-varying.glsl.js +8 -8
  221. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.js +112 -112
  222. package/lib/mol-gl/shader/chunks/assign-position.glsl.js +14 -14
  223. package/lib/mol-gl/shader/chunks/assign-size.glsl.js +18 -18
  224. package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.js +12 -12
  225. package/lib/mol-gl/shader/chunks/check-transparency.glsl.js +16 -16
  226. package/lib/mol-gl/shader/chunks/clip-instance.glsl.js +7 -7
  227. package/lib/mol-gl/shader/chunks/clip-pixel.glsl.js +5 -5
  228. package/lib/mol-gl/shader/chunks/color-frag-params.glsl.js +60 -60
  229. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.js +122 -122
  230. package/lib/mol-gl/shader/chunks/common-clip.glsl.js +104 -104
  231. package/lib/mol-gl/shader/chunks/common-frag-params.glsl.js +150 -150
  232. package/lib/mol-gl/shader/chunks/common-vert-params.glsl.js +61 -61
  233. package/lib/mol-gl/shader/chunks/common.glsl.js +234 -234
  234. package/lib/mol-gl/shader/chunks/dpoit-write.glsl.js +62 -62
  235. package/lib/mol-gl/shader/chunks/fade-lod.glsl.js +42 -42
  236. package/lib/mol-gl/shader/chunks/float-to-rgba.glsl.js +39 -39
  237. package/lib/mol-gl/shader/chunks/light-frag-params.glsl.js +127 -127
  238. package/lib/mol-gl/shader/chunks/matrix-scale.glsl.js +5 -5
  239. package/lib/mol-gl/shader/chunks/normal-frag-params.glsl.js +2 -2
  240. package/lib/mol-gl/shader/chunks/read-from-texture.glsl.js +14 -14
  241. package/lib/mol-gl/shader/chunks/rgba-to-float.glsl.js +84 -84
  242. package/lib/mol-gl/shader/chunks/size-vert-params.glsl.js +11 -11
  243. package/lib/mol-gl/shader/chunks/texture3d-from-1d-trilinear.glsl.js +23 -23
  244. package/lib/mol-gl/shader/chunks/texture3d-from-2d-linear.glsl.js +17 -17
  245. package/lib/mol-gl/shader/chunks/texture3d-from-2d-nearest.glsl.js +8 -8
  246. package/lib/mol-gl/shader/chunks/wboit-write.glsl.js +25 -25
  247. package/lib/mol-gl/shader/compose.frag.js +12 -12
  248. package/lib/mol-gl/shader/compute/color-smoothing/accumulate.frag.js +23 -23
  249. package/lib/mol-gl/shader/compute/color-smoothing/accumulate.vert.js +43 -43
  250. package/lib/mol-gl/shader/compute/color-smoothing/normalize.frag.js +15 -15
  251. package/lib/mol-gl/shader/copy.frag.js +11 -11
  252. package/lib/mol-gl/shader/cylinders.frag.js +266 -266
  253. package/lib/mol-gl/shader/cylinders.vert.js +89 -89
  254. package/lib/mol-gl/shader/depth-merge.frag.js +23 -23
  255. package/lib/mol-gl/shader/direct-volume.frag.js +362 -362
  256. package/lib/mol-gl/shader/direct-volume.vert.js +41 -41
  257. package/lib/mol-gl/shader/dof.frag.d.ts +7 -0
  258. package/lib/mol-gl/shader/dof.frag.js +119 -0
  259. package/lib/mol-gl/shader/evaluate-dpoit.frag.js +10 -10
  260. package/lib/mol-gl/shader/evaluate-wboit.frag.js +17 -17
  261. package/lib/mol-gl/shader/fxaa.frag.js +228 -228
  262. package/lib/mol-gl/shader/gaussian-density.frag.js +49 -49
  263. package/lib/mol-gl/shader/gaussian-density.vert.js +27 -27
  264. package/lib/mol-gl/shader/hi-z.frag.js +18 -18
  265. package/lib/mol-gl/shader/histogram-pyramid/reduction.frag.js +58 -58
  266. package/lib/mol-gl/shader/histogram-pyramid/sum.frag.js +19 -19
  267. package/lib/mol-gl/shader/image.frag.js +169 -169
  268. package/lib/mol-gl/shader/image.vert.js +21 -21
  269. package/lib/mol-gl/shader/lines.frag.js +42 -42
  270. package/lib/mol-gl/shader/lines.vert.js +117 -117
  271. package/lib/mol-gl/shader/marching-cubes/active-voxels.frag.js +70 -70
  272. package/lib/mol-gl/shader/marching-cubes/isosurface.frag.js +311 -311
  273. package/lib/mol-gl/shader/marking/edge.frag.js +28 -28
  274. package/lib/mol-gl/shader/marking/overlay.frag.js +26 -26
  275. package/lib/mol-gl/shader/mesh.frag.js +65 -65
  276. package/lib/mol-gl/shader/mesh.vert.js +49 -49
  277. package/lib/mol-gl/shader/outlines.frag.js +95 -95
  278. package/lib/mol-gl/shader/points.frag.js +59 -59
  279. package/lib/mol-gl/shader/points.vert.js +38 -38
  280. package/lib/mol-gl/shader/postprocessing.frag.js +150 -150
  281. package/lib/mol-gl/shader/quad.vert.js +10 -10
  282. package/lib/mol-gl/shader/shadows.frag.js +123 -123
  283. package/lib/mol-gl/shader/smaa/blend.frag.js +56 -56
  284. package/lib/mol-gl/shader/smaa/blend.vert.js +25 -25
  285. package/lib/mol-gl/shader/smaa/edges.frag.js +66 -66
  286. package/lib/mol-gl/shader/smaa/edges.vert.js +26 -26
  287. package/lib/mol-gl/shader/smaa/weights.frag.js +206 -206
  288. package/lib/mol-gl/shader/smaa/weights.vert.js +32 -32
  289. package/lib/mol-gl/shader/spheres.frag.js +148 -148
  290. package/lib/mol-gl/shader/spheres.vert.js +132 -132
  291. package/lib/mol-gl/shader/ssao-blur.frag.js +97 -97
  292. package/lib/mol-gl/shader/ssao.frag.js +211 -211
  293. package/lib/mol-gl/shader/text.frag.js +85 -85
  294. package/lib/mol-gl/shader/text.vert.js +85 -85
  295. package/lib/mol-gl/shader/util/grid3d-template.frag.js +46 -46
  296. package/lib/mol-gl/shader-code.js +15 -15
  297. package/lib/mol-gl/webgl/compat.js +12 -12
  298. package/lib/mol-gl/webgl/context.js +1 -0
  299. package/lib/mol-gl/webgl/timer.d.ts +1 -1
  300. package/lib/mol-gl/webgl/timer.js +8 -1
  301. package/lib/mol-math/linear-algebra/3d/minimize-rmsd.js +2 -1
  302. package/lib/mol-plugin/animation-loop.d.ts +1 -0
  303. package/lib/mol-plugin/behavior/dynamic/volume-streaming/behavior.d.ts +6 -6
  304. package/lib/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +1 -1
  305. package/lib/mol-plugin/behavior/dynamic/volume-streaming/transformers.d.ts +3 -3
  306. package/lib/mol-plugin/version.js +2 -2
  307. package/lib/mol-plugin-state/animation/built-in/state-snapshots.js +7 -3
  308. package/lib/mol-plugin-ui/skin/base/base.scss +37 -37
  309. package/lib/mol-plugin-ui/skin/base/components/controls-base.scss +333 -333
  310. package/lib/mol-plugin-ui/skin/base/components/controls.scss +445 -445
  311. package/lib/mol-plugin-ui/skin/base/components/help.scss +27 -27
  312. package/lib/mol-plugin-ui/skin/base/components/line-graph.scss +67 -67
  313. package/lib/mol-plugin-ui/skin/base/components/log.scss +100 -100
  314. package/lib/mol-plugin-ui/skin/base/components/misc.scss +663 -663
  315. package/lib/mol-plugin-ui/skin/base/components/sequence.scss +125 -125
  316. package/lib/mol-plugin-ui/skin/base/components/slider.scss +165 -165
  317. package/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -99
  318. package/lib/mol-plugin-ui/skin/base/components/toast.scss +83 -83
  319. package/lib/mol-plugin-ui/skin/base/components/transformer.scss +163 -163
  320. package/lib/mol-plugin-ui/skin/base/components/viewport.scss +194 -194
  321. package/lib/mol-plugin-ui/skin/base/layout/common.scss +71 -71
  322. package/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +89 -89
  323. package/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +98 -98
  324. package/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +108 -108
  325. package/lib/mol-plugin-ui/skin/base/layout.scss +40 -40
  326. package/lib/mol-plugin-ui/skin/base/logo.scss +12 -12
  327. package/lib/mol-plugin-ui/skin/base/normalize.scss +209 -209
  328. package/lib/mol-plugin-ui/skin/base/ui.scss +40 -40
  329. package/lib/mol-plugin-ui/skin/base/variables.scss +88 -88
  330. package/lib/mol-plugin-ui/skin/blue.scss +1 -1
  331. package/lib/mol-plugin-ui/skin/colors/blue.scss +23 -23
  332. package/lib/mol-plugin-ui/skin/colors/dark.scss +23 -23
  333. package/lib/mol-plugin-ui/skin/colors/light.scss +29 -29
  334. package/lib/mol-plugin-ui/skin/dark.scss +1 -1
  335. package/lib/mol-plugin-ui/skin/light.scss +1 -1
  336. package/lib/mol-plugin-ui/viewport/simple-settings.js +3 -0
  337. package/lib/servers/common/swagger-ui/indexTemplate.js +66 -66
  338. package/lib/servers/volume/config.js +5 -5
  339. package/package.json +196 -195
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Copyright (c) 2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
+ *
4
+ * @author Dušan Veľký <dvelky@mail.muni.cz>
5
+ */
6
+ import { WebGLContext } from '../../../mol-gl/webgl/context';
7
+ import { PluginStateObject } from '../../../mol-plugin-state/objects';
8
+ import { ParamDefinition as PD } from '../../../mol-util/param-definition';
9
+ export interface Profile {
10
+ Charge: number;
11
+ Radius: number;
12
+ FreeRadius: number;
13
+ T: number;
14
+ Distance: number;
15
+ X: number;
16
+ Y: number;
17
+ Z: number;
18
+ }
19
+ export interface Layerweightedproperties {
20
+ Hydrophobicity: number;
21
+ Hydropathy: number;
22
+ Polarity: number;
23
+ Mutability: number;
24
+ }
25
+ export interface LayerGeometry {
26
+ MinRadius: number;
27
+ MinFreeRadius: number;
28
+ StartDistance: number;
29
+ EndDistance: number;
30
+ LocalMinimum: boolean;
31
+ Bottleneck: boolean;
32
+ bottleneck: boolean;
33
+ }
34
+ export interface Properties {
35
+ Charge: number;
36
+ NumPositives: number;
37
+ NumNegatives: number;
38
+ Hydrophobicity: number;
39
+ Hydropathy: number;
40
+ Polarity: number;
41
+ Mutability: number;
42
+ }
43
+ export interface LayersInfo {
44
+ LayerGeometry: LayerGeometry;
45
+ Residues: string[];
46
+ FlowIndices: string[];
47
+ Properties: Properties;
48
+ }
49
+ export interface Layers {
50
+ ResidueFlow: string[];
51
+ HetResidues: any[];
52
+ LayerWeightedProperties: Layerweightedproperties;
53
+ LayersInfo: LayersInfo[];
54
+ }
55
+ export interface TunnelDB {
56
+ Type: string;
57
+ Id: string;
58
+ Cavity: string;
59
+ Auto: boolean;
60
+ Properties: Properties;
61
+ Profile: Profile[];
62
+ Layers: Layers;
63
+ }
64
+ export interface ChannelsDBdata {
65
+ 'CSATunnels_MOLE': TunnelDB[];
66
+ 'CSATunnels_Caver': TunnelDB[];
67
+ 'ReviewedChannels_MOLE': TunnelDB[];
68
+ 'ReviewedChannels_Caver': TunnelDB[];
69
+ 'CofactorTunnels_MOLE': TunnelDB[];
70
+ 'CofactorTunnels_Caver': TunnelDB[];
71
+ 'TransmembranePores_MOLE': TunnelDB[];
72
+ 'TransmembranePores_Caver': TunnelDB[];
73
+ 'ProcognateTunnels_MOLE': TunnelDB[];
74
+ 'ProcognateTunnels_Caver': TunnelDB[];
75
+ 'AlphaFillTunnels_MOLE': TunnelDB[];
76
+ 'AlphaFillTunnels_Caver': TunnelDB[];
77
+ }
78
+ export interface ChannelsCache {
79
+ Channels: ChannelsDBdata;
80
+ }
81
+ export interface Tunnel {
82
+ data: Profile[];
83
+ props: {
84
+ highlight_label?: string;
85
+ type?: string;
86
+ id?: string;
87
+ label?: string;
88
+ description?: string;
89
+ };
90
+ }
91
+ export declare const TunnelShapeParams: {
92
+ webgl: PD.Value<WebGLContext | null>;
93
+ colorTheme: PD.Color;
94
+ visual: PD.Mapped<PD.NamedParams<PD.Normalize<{
95
+ resolution: number;
96
+ }>, "spheres"> | PD.NamedParams<PD.Normalize<{
97
+ resolution: number;
98
+ }>, "mesh">>;
99
+ samplingRate: PD.Numeric;
100
+ showRadii: PD.BooleanParam;
101
+ };
102
+ declare const TunnelStateObject_base: {
103
+ new (data: {
104
+ tunnel: Tunnel;
105
+ }, props?: {
106
+ label: string;
107
+ description?: string | undefined;
108
+ } | undefined): {
109
+ id: import("../../../mol-util").UUID;
110
+ type: PluginStateObject.TypeInfo;
111
+ label: string;
112
+ description?: string | undefined;
113
+ data: {
114
+ tunnel: Tunnel;
115
+ };
116
+ };
117
+ type: PluginStateObject.TypeInfo;
118
+ is(obj?: import("../../../mol-state").StateObject<any, import("../../../mol-state").StateObject.Type<any>> | undefined): obj is import("../../../mol-state").StateObject<{
119
+ tunnel: Tunnel;
120
+ }, PluginStateObject.TypeInfo>;
121
+ };
122
+ export declare class TunnelStateObject extends TunnelStateObject_base {
123
+ }
124
+ declare const TunnelsStateObject_base: {
125
+ new (data: {
126
+ tunnels: Tunnel[];
127
+ }, props?: {
128
+ label: string;
129
+ description?: string | undefined;
130
+ } | undefined): {
131
+ id: import("../../../mol-util").UUID;
132
+ type: PluginStateObject.TypeInfo;
133
+ label: string;
134
+ description?: string | undefined;
135
+ data: {
136
+ tunnels: Tunnel[];
137
+ };
138
+ };
139
+ type: PluginStateObject.TypeInfo;
140
+ is(obj?: import("../../../mol-state").StateObject<any, import("../../../mol-state").StateObject.Type<any>> | undefined): obj is import("../../../mol-state").StateObject<{
141
+ tunnels: Tunnel[];
142
+ }, PluginStateObject.TypeInfo>;
143
+ };
144
+ export declare class TunnelsStateObject extends TunnelsStateObject_base {
145
+ }
146
+ export {};
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) 2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
4
+ *
5
+ * @author Dušan Veľký <dvelky@mail.muni.cz>
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.TunnelsStateObject = exports.TunnelStateObject = exports.TunnelShapeParams = void 0;
9
+ const objects_1 = require("../../../mol-plugin-state/objects");
10
+ const color_1 = require("../../../mol-util/color");
11
+ const param_definition_1 = require("../../../mol-util/param-definition");
12
+ ;
13
+ exports.TunnelShapeParams = {
14
+ webgl: param_definition_1.ParamDefinition.Value(null),
15
+ colorTheme: param_definition_1.ParamDefinition.Color((0, color_1.Color)(0xff0000)),
16
+ visual: param_definition_1.ParamDefinition.MappedStatic('mesh', {
17
+ mesh: param_definition_1.ParamDefinition.Group({ resolution: param_definition_1.ParamDefinition.Numeric(2) }),
18
+ spheres: param_definition_1.ParamDefinition.Group({ resolution: param_definition_1.ParamDefinition.Numeric(2) })
19
+ }),
20
+ samplingRate: param_definition_1.ParamDefinition.Numeric(1, { min: 0.05, max: 1, step: 0.05 }),
21
+ showRadii: param_definition_1.ParamDefinition.Boolean(false),
22
+ };
23
+ class TunnelStateObject extends objects_1.PluginStateObject.Create({ name: 'Tunnel Entry', typeClass: 'Data' }) {
24
+ }
25
+ exports.TunnelStateObject = TunnelStateObject;
26
+ class TunnelsStateObject extends objects_1.PluginStateObject.Create({ name: 'Tunnels', typeClass: 'Data' }) {
27
+ }
28
+ exports.TunnelsStateObject = TunnelsStateObject;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright (c) 2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
+ *
4
+ * @author Dušan Veľký <dvelky@mail.muni.cz>
5
+ */
6
+ import { PluginContext } from '../../../mol-plugin/context';
7
+ export declare const DB_URL = "https://channelsdb2.biodata.ceitec.cz/api/channels/";
8
+ export declare const SUB_DB = "pdb";
9
+ export declare const CHANNEL = "1ymg";
10
+ export declare const URL = "https://channelsdb2.biodata.ceitec.cz/api/channels/pdb/1ymg";
11
+ export declare function runVisualizeTunnels(plugin: PluginContext, url?: string): Promise<void>;
12
+ export declare function runVisualizeTunnel(plugin: PluginContext): Promise<void>;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) 2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
4
+ *
5
+ * @author Dušan Veľký <dvelky@mail.muni.cz>
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.runVisualizeTunnel = exports.runVisualizeTunnels = exports.URL = exports.CHANNEL = exports.SUB_DB = exports.DB_URL = void 0;
9
+ const transforms_1 = require("../../../mol-plugin-state/transforms");
10
+ const representation_1 = require("./representation");
11
+ exports.DB_URL = 'https://channelsdb2.biodata.ceitec.cz/api/channels/';
12
+ exports.SUB_DB = 'pdb';
13
+ exports.CHANNEL = '1ymg';
14
+ exports.URL = `${exports.DB_URL}${exports.SUB_DB}/${exports.CHANNEL}`;
15
+ async function runVisualizeTunnels(plugin, url = exports.URL) {
16
+ var _a;
17
+ const update = plugin.build();
18
+ const webgl = (_a = plugin.canvas3dContext) === null || _a === void 0 ? void 0 : _a.webgl;
19
+ const response = await (await fetch(url)).json();
20
+ const tunnels = [];
21
+ Object.entries(response.Channels).forEach(([key, values]) => {
22
+ if (values.length > 0) {
23
+ values.forEach((item) => {
24
+ tunnels.push({ data: item.Profile, props: { id: item.Id, type: item.Type } });
25
+ });
26
+ }
27
+ });
28
+ update
29
+ .toRoot()
30
+ .apply(representation_1.TunnelsFromRawData, { data: tunnels })
31
+ .apply(representation_1.SelectTunnel)
32
+ .apply(representation_1.TunnelShapeProvider, {
33
+ webgl,
34
+ })
35
+ .apply(transforms_1.StateTransforms.Representation.ShapeRepresentation3D);
36
+ await update.commit();
37
+ }
38
+ exports.runVisualizeTunnels = runVisualizeTunnels;
39
+ async function runVisualizeTunnel(plugin) {
40
+ var _a;
41
+ const update = plugin.build();
42
+ const webgl = (_a = plugin.canvas3dContext) === null || _a === void 0 ? void 0 : _a.webgl;
43
+ const response = await (await fetch(exports.URL)).json();
44
+ const tunnel = response.Channels.TransmembranePores_MOLE[0];
45
+ update
46
+ .toRoot()
47
+ .apply(representation_1.TunnelFromRawData, { data: { data: tunnel.Profile, props: { id: tunnel.Id, type: tunnel.Type } } })
48
+ .apply(representation_1.TunnelShapeProvider, {
49
+ webgl,
50
+ })
51
+ .apply(transforms_1.StateTransforms.Representation.ShapeRepresentation3D);
52
+ await update.commit();
53
+ }
54
+ exports.runVisualizeTunnel = runVisualizeTunnel;
@@ -0,0 +1,19 @@
1
+ import { PluginConfigItem } from '../../../mol-plugin/config';
2
+ import { PluginContext } from '../../../mol-plugin/context';
3
+ import { ParamDefinition as PD } from '../../../mol-util/param-definition';
4
+ export declare namespace TunnelsData {
5
+ const DefaultServerUrl = "https://channelsdb2.biodata.ceitec.cz/api";
6
+ const DefaultServerType = "pdb";
7
+ }
8
+ export declare const TunnelsDataParams: {
9
+ serverType: PD.Select<"pdb">;
10
+ serverUrl: PD.Text<string>;
11
+ };
12
+ export type TunnelsDataParams = typeof TunnelsDataParams;
13
+ export declare const TunnelsServerConfig: {
14
+ DefaultServerUrl: PluginConfigItem<string>;
15
+ DefaultServerType: PluginConfigItem<"pdb">;
16
+ };
17
+ export declare function getTunnelsConfig(plugin: PluginContext): {
18
+ [key in keyof typeof TunnelsServerConfig]: NonNullable<typeof TunnelsServerConfig[key]['defaultValue']>;
19
+ };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTunnelsConfig = exports.TunnelsServerConfig = exports.TunnelsDataParams = exports.TunnelsData = void 0;
4
+ const config_1 = require("../../../mol-plugin/config");
5
+ const param_definition_1 = require("../../../mol-util/param-definition");
6
+ var TunnelsData;
7
+ (function (TunnelsData) {
8
+ TunnelsData.DefaultServerUrl = 'https://channelsdb2.biodata.ceitec.cz/api';
9
+ TunnelsData.DefaultServerType = 'pdb';
10
+ })(TunnelsData || (exports.TunnelsData = TunnelsData = {}));
11
+ exports.TunnelsDataParams = {
12
+ serverType: param_definition_1.ParamDefinition.Select('pdb', [['pdb', 'pdb']]),
13
+ serverUrl: param_definition_1.ParamDefinition.Text(TunnelsData.DefaultServerUrl)
14
+ };
15
+ exports.TunnelsServerConfig = {
16
+ DefaultServerUrl: new config_1.PluginConfigItem('channelsdb-server', 'https://channelsdb2.biodata.ceitec.cz/api'),
17
+ DefaultServerType: new config_1.PluginConfigItem('serverType', 'pdb')
18
+ };
19
+ function getTunnelsConfig(plugin) {
20
+ var _a, _b, _c, _d;
21
+ return {
22
+ DefaultServerUrl: (_b = (_a = plugin.config.get(exports.TunnelsServerConfig.DefaultServerUrl)) !== null && _a !== void 0 ? _a : exports.TunnelsServerConfig.DefaultServerUrl.defaultValue) !== null && _b !== void 0 ? _b : TunnelsData.DefaultServerUrl,
23
+ DefaultServerType: (_d = (_c = plugin.config.get(exports.TunnelsServerConfig.DefaultServerType)) !== null && _c !== void 0 ? _c : exports.TunnelsServerConfig.DefaultServerType.defaultValue) !== null && _d !== void 0 ? _d : TunnelsData.DefaultServerType,
24
+ };
25
+ }
26
+ exports.getTunnelsConfig = getTunnelsConfig;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Copyright (c) 2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
+ *
4
+ * @author Dušan Veľký <dvelky@mail.muni.cz>
5
+ */
6
+ import { PluginStateObject } from '../../../mol-plugin-state/objects';
7
+ import { StateTransformer } from '../../../mol-state';
8
+ import { TunnelStateObject, Tunnel, TunnelsStateObject } from './data-model';
9
+ import { ParamDefinition as PD } from '../../../mol-util/param-definition';
10
+ export declare const TunnelsFromRawData: StateTransformer<PluginStateObject.Root, TunnelsStateObject, PD.Normalize<{
11
+ data: Tunnel[];
12
+ }>>;
13
+ export declare const SelectTunnel: StateTransformer<TunnelsStateObject, TunnelStateObject, PD.Normalize<{
14
+ index: number;
15
+ }>>;
16
+ export declare const TunnelFromRawData: StateTransformer<PluginStateObject.Root, TunnelStateObject, PD.Normalize<{
17
+ data: Tunnel;
18
+ }>>;
19
+ export declare const TunnelShapeProvider: StateTransformer<TunnelStateObject, PluginStateObject.Shape.Provider, PD.Normalize<{
20
+ webgl: import("../../../mol-gl/webgl/context").WebGLContext | null;
21
+ colorTheme: import("../../../mol-util/color").Color;
22
+ visual: PD.NamedParams<PD.Normalize<{
23
+ resolution: any;
24
+ }>, "spheres"> | PD.NamedParams<PD.Normalize<{
25
+ resolution: any;
26
+ }>, "mesh">;
27
+ samplingRate: number;
28
+ showRadii: boolean;
29
+ }>>;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) 2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
4
+ *
5
+ * @author Dušan Veľký <dvelky@mail.muni.cz>
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.TunnelShapeProvider = exports.TunnelFromRawData = exports.SelectTunnel = exports.TunnelsFromRawData = void 0;
9
+ const objects_1 = require("../../../mol-plugin-state/objects");
10
+ const mol_state_1 = require("../../../mol-state");
11
+ const data_model_1 = require("./data-model");
12
+ const param_definition_1 = require("../../../mol-util/param-definition");
13
+ const mesh_1 = require("../../../mol-geo/geometry/mesh/mesh");
14
+ const mol_task_1 = require("../../../mol-task");
15
+ const algorithm_1 = require("./algorithm");
16
+ const Transform = mol_state_1.StateTransformer.builderFactory('sb-ncbr-tunnels');
17
+ exports.TunnelsFromRawData = Transform({
18
+ name: 'sb-ncbr-tunnels-from-data',
19
+ display: { name: 'Tunnels' },
20
+ from: objects_1.PluginStateObject.Root,
21
+ to: data_model_1.TunnelsStateObject,
22
+ params: {
23
+ data: param_definition_1.ParamDefinition.Value([]),
24
+ },
25
+ })({
26
+ apply({ params }) {
27
+ return new data_model_1.TunnelsStateObject({ tunnels: params.data });
28
+ },
29
+ });
30
+ exports.SelectTunnel = Transform({
31
+ name: 'sb-ncbr-tunnel-from-tunnels',
32
+ display: { name: 'Tunnel Selection' },
33
+ from: data_model_1.TunnelsStateObject,
34
+ to: data_model_1.TunnelStateObject,
35
+ params: a => {
36
+ return {
37
+ index: param_definition_1.ParamDefinition.Numeric(0, { min: 0, max: a.data.tunnels.length - 1, step: 1 })
38
+ };
39
+ }
40
+ })({
41
+ apply({ a, params }) {
42
+ return new data_model_1.TunnelStateObject({ tunnel: a.data.tunnels[params.index] });
43
+ }
44
+ });
45
+ exports.TunnelFromRawData = Transform({
46
+ name: 'sb-ncbr-tunnel-from-data',
47
+ display: { name: 'Tunnel Entry' },
48
+ from: objects_1.PluginStateObject.Root,
49
+ to: data_model_1.TunnelStateObject,
50
+ params: {
51
+ data: param_definition_1.ParamDefinition.Value(undefined, { isHidden: true })
52
+ },
53
+ })({
54
+ apply({ params }) {
55
+ return new data_model_1.TunnelStateObject({ tunnel: params.data });
56
+ },
57
+ });
58
+ exports.TunnelShapeProvider = Transform({
59
+ name: 'sb-ncbr-tunnel-shape-provider',
60
+ display: { name: 'Tunnel' },
61
+ from: data_model_1.TunnelStateObject,
62
+ to: objects_1.PluginStateObject.Shape.Provider,
63
+ params: a => { return data_model_1.TunnelShapeParams; },
64
+ })({
65
+ apply({ a, params }) {
66
+ return mol_task_1.Task.create('Tunnel Shape Representation', async (ctx) => {
67
+ var _a, _b;
68
+ return new objects_1.PluginStateObject.Shape.Provider({
69
+ label: 'Surface',
70
+ data: { params, data: a.data },
71
+ params: mesh_1.Mesh.Params,
72
+ geometryUtils: mesh_1.Mesh.Utils,
73
+ getShape: (_, data, __, mesh) => {
74
+ if (data.params.visual.name === 'mesh' && !data.params.showRadii) {
75
+ return (0, algorithm_1.createTunnelShape)({
76
+ tunnel: data.data.tunnel,
77
+ color: data.params.colorTheme,
78
+ resolution: data.params.visual.params.resolution,
79
+ sampleRate: data.params.samplingRate,
80
+ webgl: data.params.webgl, prev: mesh
81
+ });
82
+ }
83
+ return (0, algorithm_1.createSpheresShape)({
84
+ tunnel: data.data.tunnel,
85
+ color: data.params.colorTheme,
86
+ resolution: data.params.visual.params.resolution,
87
+ sampleRate: data.params.samplingRate,
88
+ showRadii: data.params.showRadii, prev: mesh
89
+ });
90
+ }
91
+ }, {
92
+ label: (_a = a.data.tunnel.props.label) !== null && _a !== void 0 ? _a : 'Tunnel',
93
+ description: ((_b = a.data.tunnel.props.description) !== null && _b !== void 0 ? _b : (a.data.tunnel.props.type && a.data.tunnel.props.id))
94
+ ? `${a.data.tunnel.props.type} ${a.data.tunnel.props.id}`
95
+ : '',
96
+ });
97
+ });
98
+ },
99
+ });
@@ -87,6 +87,14 @@ export declare const Canvas3DParams: {
87
87
  color: any;
88
88
  includeTransparent: any;
89
89
  }>, "on">;
90
+ dof: PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
91
+ blurSize: any;
92
+ blurSpread: any;
93
+ inFocus: any;
94
+ PPM: any;
95
+ center: any;
96
+ mode: any;
97
+ }>, "on">;
90
98
  antialiasing: PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
91
99
  edgeThreshold: any;
92
100
  maxSearchSteps: any;
@@ -302,6 +310,14 @@ export declare const DefaultCanvas3DParams: PD.Values<{
302
310
  color: any;
303
311
  includeTransparent: any;
304
312
  }>, "on">;
313
+ dof: PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
314
+ blurSize: any;
315
+ blurSpread: any;
316
+ inFocus: any;
317
+ PPM: any;
318
+ center: any;
319
+ mode: any;
320
+ }>, "on">;
305
321
  antialiasing: PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
306
322
  edgeThreshold: any;
307
323
  maxSearchSteps: any;
@@ -519,6 +535,7 @@ interface Canvas3D {
519
535
  tick(t: now.Timestamp, options?: {
520
536
  isSynchronous?: boolean;
521
537
  manualDraw?: boolean;
538
+ updateControls?: boolean;
522
539
  }): void;
523
540
  update(repr?: Representation.Any, keepBoundingSphere?: boolean): void;
524
541
  clear(): void;
@@ -392,6 +392,10 @@ var Canvas3D;
392
392
  function tick(t, options) {
393
393
  currentTime = t;
394
394
  commit(options === null || options === void 0 ? void 0 : options.isSynchronous);
395
+ // update the controler before the camera transition
396
+ if (options === null || options === void 0 ? void 0 : options.updateControls) {
397
+ controls.update(currentTime);
398
+ }
395
399
  camera.transition.tick(currentTime);
396
400
  hiZ.tick();
397
401
  if (options === null || options === void 0 ? void 0 : options.manualDraw) {
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright (c) 2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
+ *
4
+ * @author Ludovic Autin <autin@scripps.edu>
5
+ * @author Alexander Rose <alexander.rose@weirdbyte.de>
6
+ */
7
+ import { WebGLContext } from '../../mol-gl/webgl/context';
8
+ import { Texture } from '../../mol-gl/webgl/texture';
9
+ import { ParamDefinition as PD } from '../../mol-util/param-definition';
10
+ import { Viewport } from '../camera/util';
11
+ import { RenderTarget } from '../../mol-gl/webgl/render-target';
12
+ import { ICamera } from '../../mol-canvas3d/camera';
13
+ import { Sphere3D } from '../../mol-math/geometry';
14
+ import { PostprocessingProps } from './postprocessing';
15
+ export declare const DofParams: {
16
+ blurSize: PD.Numeric;
17
+ blurSpread: PD.Numeric;
18
+ inFocus: PD.Numeric;
19
+ PPM: PD.Numeric;
20
+ center: PD.Select<string>;
21
+ mode: PD.Select<string>;
22
+ };
23
+ export type DofProps = PD.Values<typeof DofParams>;
24
+ export declare class DofPass {
25
+ private webgl;
26
+ static isEnabled(props: PostprocessingProps): boolean;
27
+ readonly target: RenderTarget;
28
+ private readonly renderable;
29
+ constructor(webgl: WebGLContext, width: number, height: number);
30
+ private updateState;
31
+ setSize(width: number, height: number): void;
32
+ update(camera: ICamera, input: Texture, depthOpaque: Texture, depthTransparent: Texture, props: DofProps, sphere: Sphere3D): void;
33
+ render(viewport: Viewport, target: undefined | RenderTarget): void;
34
+ }
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) 2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
4
+ *
5
+ * @author Ludovic Autin <autin@scripps.edu>
6
+ * @author Alexander Rose <alexander.rose@weirdbyte.de>
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DofPass = exports.DofParams = void 0;
10
+ const util_1 = require("../../mol-gl/compute/util");
11
+ const renderable_1 = require("../../mol-gl/renderable");
12
+ const schema_1 = require("../../mol-gl/renderable/schema");
13
+ const shader_code_1 = require("../../mol-gl/shader-code");
14
+ const render_item_1 = require("../../mol-gl/webgl/render-item");
15
+ const texture_1 = require("../../mol-gl/webgl/texture");
16
+ const linear_algebra_1 = require("../../mol-math/linear-algebra");
17
+ const mol_util_1 = require("../../mol-util");
18
+ const param_definition_1 = require("../../mol-util/param-definition");
19
+ const quad_vert_1 = require("../../mol-gl/shader/quad.vert");
20
+ const dof_frag_1 = require("../../mol-gl/shader/dof.frag");
21
+ const debug_1 = require("../../mol-util/debug");
22
+ exports.DofParams = {
23
+ blurSize: param_definition_1.ParamDefinition.Numeric(9, { min: 1, max: 32, step: 1 }),
24
+ blurSpread: param_definition_1.ParamDefinition.Numeric(1.0, { min: 0.0, max: 10.0, step: 0.1 }),
25
+ inFocus: param_definition_1.ParamDefinition.Numeric(0.0, { min: -5000.0, max: 5000.0, step: 1.0 }, { description: 'Distance from the scene center that will be in focus' }),
26
+ PPM: param_definition_1.ParamDefinition.Numeric(20.0, { min: 0.0, max: 5000.0, step: 0.1 }, { description: 'Size of the area that will be in focus' }),
27
+ center: param_definition_1.ParamDefinition.Select('camera-target', param_definition_1.ParamDefinition.arrayToOptions(['scene-center', 'camera-target'])),
28
+ mode: param_definition_1.ParamDefinition.Select('plane', param_definition_1.ParamDefinition.arrayToOptions(['plane', 'sphere'])),
29
+ };
30
+ class DofPass {
31
+ static isEnabled(props) {
32
+ return props.dof.name !== 'off';
33
+ }
34
+ constructor(webgl, width, height) {
35
+ this.webgl = webgl;
36
+ this.target = webgl.createRenderTarget(width, height, false);
37
+ const nullTexture = (0, texture_1.createNullTexture)();
38
+ this.renderable = getDofRenderable(webgl, nullTexture, nullTexture, nullTexture);
39
+ }
40
+ updateState(viewport) {
41
+ const { gl, state } = this.webgl;
42
+ state.enable(gl.SCISSOR_TEST);
43
+ state.disable(gl.BLEND);
44
+ state.disable(gl.DEPTH_TEST);
45
+ state.depthMask(false);
46
+ const { x, y, width, height } = viewport;
47
+ state.viewport(x, y, width, height);
48
+ state.scissor(x, y, width, height);
49
+ state.clearColor(0, 0, 0, 1);
50
+ gl.clear(gl.COLOR_BUFFER_BIT);
51
+ }
52
+ setSize(width, height) {
53
+ const w = this.target.texture.getWidth();
54
+ const h = this.target.texture.getHeight();
55
+ if (width !== w || height !== h) {
56
+ this.target.setSize(width, height);
57
+ mol_util_1.ValueCell.update(this.renderable.values.uTexSize, linear_algebra_1.Vec2.set(this.renderable.values.uTexSize.ref.value, width, height));
58
+ }
59
+ }
60
+ update(camera, input, depthOpaque, depthTransparent, props, sphere) {
61
+ let needsUpdate = false;
62
+ if (this.renderable.values.tColor.ref.value !== input) {
63
+ mol_util_1.ValueCell.update(this.renderable.values.tColor, input);
64
+ needsUpdate = true;
65
+ }
66
+ if (this.renderable.values.tDepthOpaque.ref.value !== depthOpaque) {
67
+ mol_util_1.ValueCell.update(this.renderable.values.tDepthOpaque, depthOpaque);
68
+ needsUpdate = true;
69
+ }
70
+ if (this.renderable.values.tDepthTransparent.ref.value !== depthTransparent) {
71
+ mol_util_1.ValueCell.update(this.renderable.values.tDepthTransparent, depthTransparent);
72
+ needsUpdate = true;
73
+ }
74
+ const orthographic = camera.state.mode === 'orthographic' ? 1 : 0;
75
+ const invProjection = this.renderable.values.uInvProjection.ref.value;
76
+ linear_algebra_1.Mat4.invert(invProjection, camera.projection);
77
+ const [w, h] = this.renderable.values.uTexSize.ref.value;
78
+ const v = camera.viewport;
79
+ mol_util_1.ValueCell.update(this.renderable.values.uProjection, camera.projection);
80
+ mol_util_1.ValueCell.update(this.renderable.values.uInvProjection, invProjection);
81
+ mol_util_1.ValueCell.update(this.renderable.values.uMode, props.mode === 'sphere' ? 1 : 0);
82
+ linear_algebra_1.Vec4.set(this.renderable.values.uBounds.ref.value, v.x / w, v.y / h, (v.x + v.width) / w, (v.y + v.height) / h);
83
+ mol_util_1.ValueCell.update(this.renderable.values.uBounds, this.renderable.values.uBounds.ref.value);
84
+ mol_util_1.ValueCell.updateIfChanged(this.renderable.values.uNear, camera.near);
85
+ mol_util_1.ValueCell.updateIfChanged(this.renderable.values.uFar, camera.far);
86
+ mol_util_1.ValueCell.updateIfChanged(this.renderable.values.dOrthographic, orthographic);
87
+ if (this.renderable.values.dBlurSize.ref.value !== props.blurSize) {
88
+ mol_util_1.ValueCell.update(this.renderable.values.dBlurSize, props.blurSize);
89
+ needsUpdate = true;
90
+ }
91
+ const wolrdCenter = (props.center === 'scene-center' ? sphere.center : camera.state.target);
92
+ const distance = linear_algebra_1.Vec3.distance(camera.state.position, wolrdCenter);
93
+ const inFocus = distance + props.inFocus;
94
+ mol_util_1.ValueCell.updateIfChanged(this.renderable.values.uInFocus, inFocus);
95
+ // transform center in view space
96
+ const center = this.renderable.values.uCenter.ref.value;
97
+ linear_algebra_1.Vec3.transformMat4(center, wolrdCenter, camera.view);
98
+ mol_util_1.ValueCell.update(this.renderable.values.uCenter, center);
99
+ mol_util_1.ValueCell.updateIfChanged(this.renderable.values.uBlurSpread, props.blurSpread);
100
+ mol_util_1.ValueCell.updateIfChanged(this.renderable.values.uPPM, props.PPM);
101
+ if (needsUpdate) {
102
+ this.renderable.update();
103
+ }
104
+ }
105
+ render(viewport, target) {
106
+ if (debug_1.isTimingMode)
107
+ this.webgl.timer.mark('DofPass.render');
108
+ if (target) {
109
+ target.bind();
110
+ }
111
+ else {
112
+ this.webgl.unbindFramebuffer();
113
+ }
114
+ this.updateState(viewport);
115
+ this.renderable.render();
116
+ if (debug_1.isTimingMode)
117
+ this.webgl.timer.markEnd('DofPass.render');
118
+ }
119
+ }
120
+ exports.DofPass = DofPass;
121
+ //
122
+ const DofSchema = {
123
+ ...util_1.QuadSchema,
124
+ tDepthOpaque: (0, schema_1.TextureSpec)('texture', 'rgba', 'ubyte', 'nearest'),
125
+ tDepthTransparent: (0, schema_1.TextureSpec)('texture', 'rgba', 'ubyte', 'nearest'),
126
+ tColor: (0, schema_1.TextureSpec)('texture', 'rgba', 'ubyte', 'nearest'),
127
+ uTexSize: (0, schema_1.UniformSpec)('v2'),
128
+ uProjection: (0, schema_1.UniformSpec)('m4'),
129
+ uInvProjection: (0, schema_1.UniformSpec)('m4'),
130
+ uBounds: (0, schema_1.UniformSpec)('v4'),
131
+ uCenter: (0, schema_1.UniformSpec)('v3'),
132
+ uMode: (0, schema_1.UniformSpec)('i'),
133
+ dOrthographic: (0, schema_1.DefineSpec)('number'),
134
+ uNear: (0, schema_1.UniformSpec)('f'),
135
+ uFar: (0, schema_1.UniformSpec)('f'),
136
+ dBlurSize: (0, schema_1.DefineSpec)('number'),
137
+ uBlurSpread: (0, schema_1.UniformSpec)('f'),
138
+ uInFocus: (0, schema_1.UniformSpec)('f'),
139
+ uPPM: (0, schema_1.UniformSpec)('f'),
140
+ };
141
+ const DofShaderCode = (0, shader_code_1.ShaderCode)('dof', quad_vert_1.quad_vert, dof_frag_1.dof_frag);
142
+ function getDofRenderable(ctx, colorTexture, depthTextureOpaque, depthTextureTransparent) {
143
+ const width = colorTexture.getWidth();
144
+ const height = colorTexture.getHeight();
145
+ const values = {
146
+ ...util_1.QuadValues,
147
+ tDepthOpaque: mol_util_1.ValueCell.create(depthTextureOpaque),
148
+ tDepthTransparent: mol_util_1.ValueCell.create(depthTextureTransparent),
149
+ tColor: mol_util_1.ValueCell.create(colorTexture),
150
+ uTexSize: mol_util_1.ValueCell.create(linear_algebra_1.Vec2.create(width, height)),
151
+ uProjection: mol_util_1.ValueCell.create(linear_algebra_1.Mat4.identity()),
152
+ uInvProjection: mol_util_1.ValueCell.create(linear_algebra_1.Mat4.identity()),
153
+ uBounds: mol_util_1.ValueCell.create((0, linear_algebra_1.Vec4)()),
154
+ uCenter: mol_util_1.ValueCell.create((0, linear_algebra_1.Vec3)()),
155
+ uMode: mol_util_1.ValueCell.create(0),
156
+ dOrthographic: mol_util_1.ValueCell.create(0),
157
+ uNear: mol_util_1.ValueCell.create(1),
158
+ uFar: mol_util_1.ValueCell.create(10000),
159
+ dBlurSize: mol_util_1.ValueCell.create(5),
160
+ uBlurSpread: mol_util_1.ValueCell.create(300.0),
161
+ uInFocus: mol_util_1.ValueCell.create(20.0),
162
+ uPPM: mol_util_1.ValueCell.create(20.0),
163
+ };
164
+ const schema = { ...DofSchema };
165
+ const renderItem = (0, render_item_1.createComputeRenderItem)(ctx, 'triangles', DofShaderCode, schema, values);
166
+ return (0, renderable_1.createComputeRenderable)(renderItem, values);
167
+ }