@datagrok/helm 2.13.7 → 3.0.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 (349) hide show
  1. package/CREDITS.md +164 -0
  2. package/dist/489.js +2 -0
  3. package/dist/489.js.map +1 -0
  4. package/dist/package-test.js +1 -1
  5. package/dist/package-test.js.map +1 -1
  6. package/dist/package.js +1 -1
  7. package/dist/package.js.map +1 -1
  8. package/files/samples/helm-showcase.csv +56 -0
  9. package/package.json +6 -10
  10. package/src/helm-helper.ts +61 -413
  11. package/src/package-api.ts +14 -11
  12. package/src/package-test.ts +0 -2
  13. package/src/package-utils.ts +8 -298
  14. package/src/package.g.ts +2 -8
  15. package/src/package.ts +11 -31
  16. package/src/tests/helm-activity-cliffs.ts +2 -2
  17. package/src/tests/helm-input-tests.ts +83 -0
  18. package/src/tests/parse-helm-tests.ts +7 -57
  19. package/src/tests/properties-widget-tests.ts +21 -11
  20. package/src/utils/helm-grid-cell-renderer.ts +141 -151
  21. package/src/utils/index.ts +3 -7
  22. package/src/widgets/helm-input.ts +42 -12
  23. package/src/widgets/properties-widget.ts +18 -11
  24. package/test-console-output-1.log +103 -706
  25. package/test-record-1.mp4 +0 -0
  26. package/webpack.config.js +1 -12
  27. package/dist/455.js +0 -2
  28. package/dist/455.js.map +0 -1
  29. package/dist/package-dojo.js +0 -2
  30. package/dist/package-dojo.js.map +0 -1
  31. package/helm/JSDraw/Pistoia.HELM-uncompressed.js +0 -9694
  32. package/helm/JSDraw/ReadMe.txt +0 -8
  33. package/helm/JSDraw/Scilligence.JSDraw2.Lite-uncompressed.js +0 -31126
  34. package/helm/dojo/package.ts +0 -41
  35. package/helm/dojo/types.ts +0 -12
  36. package/src/helm-web-editor.ts +0 -68
  37. package/src/tests/get-monomer-tests.ts +0 -214
  38. package/src/tests/helm-service-tests.ts +0 -98
  39. package/src/types/dojo.ts +0 -3
  40. package/src/types/index.ts +0 -5
  41. package/src/utils/get-monomer.ts +0 -90
  42. package/src/utils/helm-service.ts +0 -166
  43. package/vendor/dojo-1.10.10/dijit/BackgroundIframe.js +0 -63
  44. package/vendor/dojo-1.10.10/dijit/BackgroundIframe.js.uncompressed.js +0 -116
  45. package/vendor/dojo-1.10.10/dijit/Destroyable.js +0 -35
  46. package/vendor/dojo-1.10.10/dijit/Destroyable.js.uncompressed.js +0 -83
  47. package/vendor/dojo-1.10.10/dijit/Tooltip.js +0 -240
  48. package/vendor/dojo-1.10.10/dijit/Tooltip.js.uncompressed.js +0 -612
  49. package/vendor/dojo-1.10.10/dijit/Viewport.js +0 -44
  50. package/vendor/dojo-1.10.10/dijit/Viewport.js.uncompressed.js +0 -87
  51. package/vendor/dojo-1.10.10/dijit/WidgetSet.js +0 -76
  52. package/vendor/dojo-1.10.10/dijit/WidgetSet.js.uncompressed.js +0 -247
  53. package/vendor/dojo-1.10.10/dijit/_AttachMixin.js +0 -94
  54. package/vendor/dojo-1.10.10/dijit/_AttachMixin.js.uncompressed.js +0 -238
  55. package/vendor/dojo-1.10.10/dijit/_Contained.js +0 -17
  56. package/vendor/dojo-1.10.10/dijit/_Contained.js.uncompressed.js +0 -56
  57. package/vendor/dojo-1.10.10/dijit/_Container.js +0 -47
  58. package/vendor/dojo-1.10.10/dijit/_Container.js.uncompressed.js +0 -108
  59. package/vendor/dojo-1.10.10/dijit/_CssStateMixin.js +0 -198
  60. package/vendor/dojo-1.10.10/dijit/_CssStateMixin.js.uncompressed.js +0 -372
  61. package/vendor/dojo-1.10.10/dijit/_FocusMixin.js +0 -11
  62. package/vendor/dojo-1.10.10/dijit/_FocusMixin.js.uncompressed.js +0 -66
  63. package/vendor/dojo-1.10.10/dijit/_HasDropDown.js +0 -188
  64. package/vendor/dojo-1.10.10/dijit/_HasDropDown.js.uncompressed.js +0 -472
  65. package/vendor/dojo-1.10.10/dijit/_OnDijitClickMixin.js +0 -8
  66. package/vendor/dojo-1.10.10/dijit/_OnDijitClickMixin.js.uncompressed.js +0 -31
  67. package/vendor/dojo-1.10.10/dijit/_TemplatedMixin.js +0 -90
  68. package/vendor/dojo-1.10.10/dijit/_TemplatedMixin.js.uncompressed.js +0 -205
  69. package/vendor/dojo-1.10.10/dijit/_Widget.js +0 -66
  70. package/vendor/dojo-1.10.10/dijit/_Widget.js.uncompressed.js +0 -352
  71. package/vendor/dojo-1.10.10/dijit/_WidgetBase.js +0 -353
  72. package/vendor/dojo-1.10.10/dijit/_WidgetBase.js.uncompressed.js +0 -1200
  73. package/vendor/dojo-1.10.10/dijit/_base/focus.js +0 -68
  74. package/vendor/dojo-1.10.10/dijit/_base/focus.js.uncompressed.js +0 -207
  75. package/vendor/dojo-1.10.10/dijit/_base/manager.js +0 -10
  76. package/vendor/dojo-1.10.10/dijit/_base/manager.js.uncompressed.js +0 -35
  77. package/vendor/dojo-1.10.10/dijit/_base/place.js +0 -52
  78. package/vendor/dojo-1.10.10/dijit/_base/place.js.uncompressed.js +0 -131
  79. package/vendor/dojo-1.10.10/dijit/_base/popup.js +0 -23
  80. package/vendor/dojo-1.10.10/dijit/_base/popup.js.uncompressed.js +0 -58
  81. package/vendor/dojo-1.10.10/dijit/_base/scroll.js +0 -6
  82. package/vendor/dojo-1.10.10/dijit/_base/scroll.js.uncompressed.js +0 -22
  83. package/vendor/dojo-1.10.10/dijit/_base/sniff.js +0 -3
  84. package/vendor/dojo-1.10.10/dijit/_base/sniff.js.uncompressed.js +0 -12
  85. package/vendor/dojo-1.10.10/dijit/_base/typematic.js +0 -3
  86. package/vendor/dojo-1.10.10/dijit/_base/typematic.js.uncompressed.js +0 -10
  87. package/vendor/dojo-1.10.10/dijit/_base/wai.js +0 -32
  88. package/vendor/dojo-1.10.10/dijit/_base/wai.js.uncompressed.js +0 -109
  89. package/vendor/dojo-1.10.10/dijit/_base/window.js +0 -6
  90. package/vendor/dojo-1.10.10/dijit/_base/window.js.uncompressed.js +0 -18
  91. package/vendor/dojo-1.10.10/dijit/_base.js +0 -4
  92. package/vendor/dojo-1.10.10/dijit/_base.js.uncompressed.js +0 -27
  93. package/vendor/dojo-1.10.10/dijit/a11y.js +0 -109
  94. package/vendor/dojo-1.10.10/dijit/a11y.js.uncompressed.js +0 -191
  95. package/vendor/dojo-1.10.10/dijit/a11yclick.js +0 -66
  96. package/vendor/dojo-1.10.10/dijit/a11yclick.js.uncompressed.js +0 -139
  97. package/vendor/dojo-1.10.10/dijit/focus.js +0 -188
  98. package/vendor/dojo-1.10.10/dijit/focus.js.uncompressed.js +0 -371
  99. package/vendor/dojo-1.10.10/dijit/form/Button.js +0 -49
  100. package/vendor/dojo-1.10.10/dijit/form/Button.js.uncompressed.js +0 -130
  101. package/vendor/dojo-1.10.10/dijit/form/ComboBox.js +0 -4
  102. package/vendor/dojo-1.10.10/dijit/form/ComboBox.js.uncompressed.js +0 -27
  103. package/vendor/dojo-1.10.10/dijit/form/ComboButton.js +0 -21
  104. package/vendor/dojo-1.10.10/dijit/form/ComboButton.js.uncompressed.js +0 -86
  105. package/vendor/dojo-1.10.10/dijit/form/DropDownButton.js +0 -38
  106. package/vendor/dojo-1.10.10/dijit/form/DropDownButton.js.uncompressed.js +0 -102
  107. package/vendor/dojo-1.10.10/dijit/form/ToggleButton.js +0 -7
  108. package/vendor/dojo-1.10.10/dijit/form/ToggleButton.js.uncompressed.js +0 -26
  109. package/vendor/dojo-1.10.10/dijit/form/_ButtonMixin.js +0 -50
  110. package/vendor/dojo-1.10.10/dijit/form/_ButtonMixin.js.uncompressed.js +0 -116
  111. package/vendor/dojo-1.10.10/dijit/form/_FormValueMixin.js +0 -26
  112. package/vendor/dojo-1.10.10/dijit/form/_FormValueMixin.js.uncompressed.js +0 -81
  113. package/vendor/dojo-1.10.10/dijit/form/_FormValueWidget.js +0 -24
  114. package/vendor/dojo-1.10.10/dijit/form/_FormValueWidget.js.uncompressed.js +0 -51
  115. package/vendor/dojo-1.10.10/dijit/form/_FormWidget.js +0 -22
  116. package/vendor/dojo-1.10.10/dijit/form/_FormWidget.js.uncompressed.js +0 -67
  117. package/vendor/dojo-1.10.10/dijit/form/_FormWidgetMixin.js +0 -111
  118. package/vendor/dojo-1.10.10/dijit/form/_FormWidgetMixin.js.uncompressed.js +0 -254
  119. package/vendor/dojo-1.10.10/dijit/form/_ToggleButtonMixin.js +0 -32
  120. package/vendor/dojo-1.10.10/dijit/form/_ToggleButtonMixin.js.uncompressed.js +0 -69
  121. package/vendor/dojo-1.10.10/dijit/hccss.js +0 -9
  122. package/vendor/dojo-1.10.10/dijit/hccss.js.uncompressed.js +0 -21
  123. package/vendor/dojo-1.10.10/dijit/layout/AccordionContainer.js +0 -215
  124. package/vendor/dojo-1.10.10/dijit/layout/AccordionContainer.js.uncompressed.js +0 -550
  125. package/vendor/dojo-1.10.10/dijit/layout/AccordionPane.js +0 -7
  126. package/vendor/dojo-1.10.10/dijit/layout/AccordionPane.js.uncompressed.js +0 -25
  127. package/vendor/dojo-1.10.10/dijit/layout/ContentPane.js +0 -235
  128. package/vendor/dojo-1.10.10/dijit/layout/ContentPane.js.uncompressed.js +0 -653
  129. package/vendor/dojo-1.10.10/dijit/layout/StackContainer.js +0 -171
  130. package/vendor/dojo-1.10.10/dijit/layout/StackContainer.js.uncompressed.js +0 -411
  131. package/vendor/dojo-1.10.10/dijit/layout/StackController.js +0 -194
  132. package/vendor/dojo-1.10.10/dijit/layout/StackController.js.uncompressed.js +0 -410
  133. package/vendor/dojo-1.10.10/dijit/layout/_ContentPaneResizeMixin.js +0 -99
  134. package/vendor/dojo-1.10.10/dijit/layout/_ContentPaneResizeMixin.js.uncompressed.js +0 -236
  135. package/vendor/dojo-1.10.10/dijit/layout/_LayoutWidget.js +0 -47
  136. package/vendor/dojo-1.10.10/dijit/layout/_LayoutWidget.js.uncompressed.js +0 -190
  137. package/vendor/dojo-1.10.10/dijit/layout/utils.js +0 -77
  138. package/vendor/dojo-1.10.10/dijit/layout/utils.js.uncompressed.js +0 -151
  139. package/vendor/dojo-1.10.10/dijit/main.js +0 -4
  140. package/vendor/dojo-1.10.10/dijit/main.js.uncompressed.js +0 -16
  141. package/vendor/dojo-1.10.10/dijit/nls/dijit-all_en-us.js +0 -2
  142. package/vendor/dojo-1.10.10/dijit/nls/dijit-all_en-us.js.uncompressed.js +0 -21
  143. package/vendor/dojo-1.10.10/dijit/nls/loading.js +0 -2
  144. package/vendor/dojo-1.10.10/dijit/nls/loading.js.uncompressed.js +0 -47
  145. package/vendor/dojo-1.10.10/dijit/place.js +0 -142
  146. package/vendor/dojo-1.10.10/dijit/place.js.uncompressed.js +0 -407
  147. package/vendor/dojo-1.10.10/dijit/popup.js +0 -162
  148. package/vendor/dojo-1.10.10/dijit/popup.js.uncompressed.js +0 -441
  149. package/vendor/dojo-1.10.10/dijit/registry.js +0 -79
  150. package/vendor/dojo-1.10.10/dijit/registry.js.uncompressed.js +0 -159
  151. package/vendor/dojo-1.10.10/dijit/selection.js +0 -364
  152. package/vendor/dojo-1.10.10/dijit/selection.js.uncompressed.js +0 -525
  153. package/vendor/dojo-1.10.10/dijit/typematic.js +0 -96
  154. package/vendor/dojo-1.10.10/dijit/typematic.js.uncompressed.js +0 -211
  155. package/vendor/dojo-1.10.10/dojo/NodeList-manipulate.js +0 -195
  156. package/vendor/dojo-1.10.10/dojo/NodeList-manipulate.js.uncompressed.js +0 -761
  157. package/vendor/dojo-1.10.10/dojo/Stateful.js +0 -90
  158. package/vendor/dojo-1.10.10/dojo/Stateful.js.uncompressed.js +0 -218
  159. package/vendor/dojo-1.10.10/dojo/_base/url.js +0 -87
  160. package/vendor/dojo-1.10.10/dojo/_base/url.js.uncompressed.js +0 -109
  161. package/vendor/dojo-1.10.10/dojo/cache.js +0 -9
  162. package/vendor/dojo-1.10.10/dojo/cache.js.uncompressed.js +0 -7
  163. package/vendor/dojo-1.10.10/dojo/colors.js +0 -74
  164. package/vendor/dojo-1.10.10/dojo/colors.js.uncompressed.js +0 -232
  165. package/vendor/dojo-1.10.10/dojo/cookie.js +0 -48
  166. package/vendor/dojo-1.10.10/dojo/cookie.js.uncompressed.js +0 -98
  167. package/vendor/dojo-1.10.10/dojo/date/stamp.js +0 -82
  168. package/vendor/dojo-1.10.10/dojo/date/stamp.js.uncompressed.js +0 -144
  169. package/vendor/dojo-1.10.10/dojo/dojo.js +0 -7
  170. package/vendor/dojo-1.10.10/dojo/dojo.js.uncompressed.js +0 -18680
  171. package/vendor/dojo-1.10.10/dojo/fx/Toggler.js +0 -27
  172. package/vendor/dojo-1.10.10/dojo/fx/Toggler.js.uncompressed.js +0 -101
  173. package/vendor/dojo-1.10.10/dojo/fx/easing.js +0 -165
  174. package/vendor/dojo-1.10.10/dojo/fx/easing.js.uncompressed.js +0 -276
  175. package/vendor/dojo-1.10.10/dojo/fx.js +0 -271
  176. package/vendor/dojo-1.10.10/dojo/fx.js.uncompressed.js +0 -443
  177. package/vendor/dojo-1.10.10/dojo/hccss.js +0 -26
  178. package/vendor/dojo-1.10.10/dojo/hccss.js.uncompressed.js +0 -52
  179. package/vendor/dojo-1.10.10/dojo/html.js +0 -161
  180. package/vendor/dojo-1.10.10/dojo/html.js.uncompressed.js +0 -370
  181. package/vendor/dojo-1.10.10/dojo/io/iframe.js +0 -71
  182. package/vendor/dojo-1.10.10/dojo/io/iframe.js.uncompressed.js +0 -190
  183. package/vendor/dojo-1.10.10/dojo/io/script.js +0 -112
  184. package/vendor/dojo-1.10.10/dojo/io/script.js.uncompressed.js +0 -280
  185. package/vendor/dojo-1.10.10/dojo/parser.js +0 -437
  186. package/vendor/dojo-1.10.10/dojo/parser.js.uncompressed.js +0 -915
  187. package/vendor/dojo-1.10.10/dojo/promise/all.js +0 -59
  188. package/vendor/dojo-1.10.10/dojo/promise/all.js.uncompressed.js +0 -77
  189. package/vendor/dojo-1.10.10/dojo/regexp.js +0 -32
  190. package/vendor/dojo-1.10.10/dojo/regexp.js.uncompressed.js +0 -70
  191. package/vendor/dojo-1.10.10/dojo/request/iframe.js +0 -291
  192. package/vendor/dojo-1.10.10/dojo/request/iframe.js.uncompressed.js +0 -438
  193. package/vendor/dojo-1.10.10/dojo/request/script.js +0 -129
  194. package/vendor/dojo-1.10.10/dojo/request/script.js.uncompressed.js +0 -237
  195. package/vendor/dojo-1.10.10/dojo/require.js +0 -11
  196. package/vendor/dojo-1.10.10/dojo/require.js.uncompressed.js +0 -7
  197. package/vendor/dojo-1.10.10/dojo/resources/blank.gif +0 -0
  198. package/vendor/dojo-1.10.10/dojo/string.js +0 -67
  199. package/vendor/dojo-1.10.10/dojo/string.js.uncompressed.js +0 -181
  200. package/vendor/dojo-1.10.10/dojo/touch.js +0 -191
  201. package/vendor/dojo-1.10.10/dojo/touch.js.uncompressed.js +0 -468
  202. package/vendor/dojo-1.10.10/dojo/uacss.js +0 -36
  203. package/vendor/dojo-1.10.10/dojo/uacss.js.uncompressed.js +0 -85
  204. package/vendor/dojo-1.10.10/dojo/window.js +0 -141
  205. package/vendor/dojo-1.10.10/dojo/window.js.uncompressed.js +0 -241
  206. package/vendor/dojo-1.10.10/dojox/charting/Chart.js +0 -626
  207. package/vendor/dojo-1.10.10/dojox/charting/Chart.js.uncompressed.js +0 -1220
  208. package/vendor/dojo-1.10.10/dojox/charting/Chart2D.js +0 -5
  209. package/vendor/dojo-1.10.10/dojox/charting/Chart2D.js.uncompressed.js +0 -16
  210. package/vendor/dojo-1.10.10/dojox/charting/Element.js +0 -247
  211. package/vendor/dojo-1.10.10/dojox/charting/Element.js.uncompressed.js +0 -402
  212. package/vendor/dojo-1.10.10/dojox/charting/Series.js +0 -24
  213. package/vendor/dojo-1.10.10/dojox/charting/Series.js.uncompressed.js +0 -58
  214. package/vendor/dojo-1.10.10/dojox/charting/SimpleTheme.js +0 -191
  215. package/vendor/dojo-1.10.10/dojox/charting/SimpleTheme.js.uncompressed.js +0 -577
  216. package/vendor/dojo-1.10.10/dojox/charting/Theme.js +0 -42
  217. package/vendor/dojo-1.10.10/dojox/charting/Theme.js.uncompressed.js +0 -120
  218. package/vendor/dojo-1.10.10/dojox/charting/action2d/Base.js +0 -11
  219. package/vendor/dojo-1.10.10/dojox/charting/action2d/Base.js.uncompressed.js +0 -36
  220. package/vendor/dojo-1.10.10/dojox/charting/action2d/Highlight.js +0 -77
  221. package/vendor/dojo-1.10.10/dojox/charting/action2d/Highlight.js.uncompressed.js +0 -144
  222. package/vendor/dojo-1.10.10/dojox/charting/action2d/Magnify.js +0 -58
  223. package/vendor/dojo-1.10.10/dojox/charting/action2d/Magnify.js.uncompressed.js +0 -123
  224. package/vendor/dojo-1.10.10/dojox/charting/action2d/MoveSlice.js +0 -54
  225. package/vendor/dojo-1.10.10/dojox/charting/action2d/MoveSlice.js.uncompressed.js +0 -124
  226. package/vendor/dojo-1.10.10/dojox/charting/action2d/PlotAction.js +0 -28
  227. package/vendor/dojo-1.10.10/dojox/charting/action2d/PlotAction.js.uncompressed.js +0 -74
  228. package/vendor/dojo-1.10.10/dojox/charting/action2d/Tooltip.js +0 -116
  229. package/vendor/dojo-1.10.10/dojox/charting/action2d/Tooltip.js.uncompressed.js +0 -178
  230. package/vendor/dojo-1.10.10/dojox/charting/axis2d/Base.js +0 -24
  231. package/vendor/dojo-1.10.10/dojox/charting/axis2d/Base.js.uncompressed.js +0 -83
  232. package/vendor/dojo-1.10.10/dojox/charting/axis2d/Default.js +0 -557
  233. package/vendor/dojo-1.10.10/dojox/charting/axis2d/Default.js.uncompressed.js +0 -980
  234. package/vendor/dojo-1.10.10/dojox/charting/axis2d/Invisible.js +0 -65
  235. package/vendor/dojo-1.10.10/dojox/charting/axis2d/Invisible.js.uncompressed.js +0 -224
  236. package/vendor/dojo-1.10.10/dojox/charting/axis2d/common.js +0 -91
  237. package/vendor/dojo-1.10.10/dojox/charting/axis2d/common.js.uncompressed.js +0 -164
  238. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Areas.js +0 -7
  239. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Areas.js.uncompressed.js +0 -14
  240. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Bars.js +0 -168
  241. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Bars.js.uncompressed.js +0 -311
  242. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Base.js +0 -61
  243. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Base.js.uncompressed.js +0 -161
  244. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Bubble.js +0 -141
  245. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Bubble.js.uncompressed.js +0 -242
  246. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Candlesticks.js +0 -126
  247. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Candlesticks.js.uncompressed.js +0 -243
  248. package/vendor/dojo-1.10.10/dojox/charting/plot2d/CartesianBase.js +0 -108
  249. package/vendor/dojo-1.10.10/dojox/charting/plot2d/CartesianBase.js.uncompressed.js +0 -290
  250. package/vendor/dojo-1.10.10/dojox/charting/plot2d/ClusteredBars.js +0 -13
  251. package/vendor/dojo-1.10.10/dojox/charting/plot2d/ClusteredBars.js.uncompressed.js +0 -14
  252. package/vendor/dojo-1.10.10/dojox/charting/plot2d/ClusteredColumns.js +0 -13
  253. package/vendor/dojo-1.10.10/dojox/charting/plot2d/ClusteredColumns.js.uncompressed.js +0 -14
  254. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Columns.js +0 -153
  255. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Columns.js.uncompressed.js +0 -249
  256. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Default.js +0 -253
  257. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Default.js.uncompressed.js +0 -472
  258. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Grid.js +0 -182
  259. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Grid.js.uncompressed.js +0 -356
  260. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Lines.js +0 -6
  261. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Lines.js.uncompressed.js +0 -12
  262. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Markers.js +0 -6
  263. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Markers.js.uncompressed.js +0 -12
  264. package/vendor/dojo-1.10.10/dojox/charting/plot2d/MarkersOnly.js +0 -7
  265. package/vendor/dojo-1.10.10/dojox/charting/plot2d/MarkersOnly.js.uncompressed.js +0 -13
  266. package/vendor/dojo-1.10.10/dojox/charting/plot2d/OHLC.js +0 -110
  267. package/vendor/dojo-1.10.10/dojox/charting/plot2d/OHLC.js.uncompressed.js +0 -208
  268. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Pie.js +0 -303
  269. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Pie.js.uncompressed.js +0 -547
  270. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Scatter.js +0 -134
  271. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Scatter.js.uncompressed.js +0 -207
  272. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Spider.js +0 -299
  273. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Spider.js.uncompressed.js +0 -537
  274. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Stacked.js +0 -24
  275. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Stacked.js.uncompressed.js +0 -44
  276. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedAreas.js +0 -7
  277. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedAreas.js.uncompressed.js +0 -14
  278. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedBars.js +0 -22
  279. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedBars.js.uncompressed.js +0 -33
  280. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedColumns.js +0 -20
  281. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedColumns.js.uncompressed.js +0 -31
  282. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedLines.js +0 -6
  283. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedLines.js.uncompressed.js +0 -12
  284. package/vendor/dojo-1.10.10/dojox/charting/plot2d/_PlotEvents.js +0 -68
  285. package/vendor/dojo-1.10.10/dojox/charting/plot2d/_PlotEvents.js.uncompressed.js +0 -120
  286. package/vendor/dojo-1.10.10/dojox/charting/plot2d/common.js +0 -209
  287. package/vendor/dojo-1.10.10/dojox/charting/plot2d/common.js.uncompressed.js +0 -214
  288. package/vendor/dojo-1.10.10/dojox/charting/plot2d/commonStacked.js +0 -76
  289. package/vendor/dojo-1.10.10/dojox/charting/plot2d/commonStacked.js.uncompressed.js +0 -77
  290. package/vendor/dojo-1.10.10/dojox/charting/scaler/common.js +0 -59
  291. package/vendor/dojo-1.10.10/dojox/charting/scaler/common.js.uncompressed.js +0 -70
  292. package/vendor/dojo-1.10.10/dojox/charting/scaler/linear.js +0 -220
  293. package/vendor/dojo-1.10.10/dojox/charting/scaler/linear.js.uncompressed.js +0 -262
  294. package/vendor/dojo-1.10.10/dojox/charting/scaler/primitive.js +0 -23
  295. package/vendor/dojo-1.10.10/dojox/charting/scaler/primitive.js.uncompressed.js +0 -36
  296. package/vendor/dojo-1.10.10/dojox/charting/themes/Claro.js +0 -39
  297. package/vendor/dojo-1.10.10/dojox/charting/themes/Claro.js.uncompressed.js +0 -106
  298. package/vendor/dojo-1.10.10/dojox/charting/themes/Wetland.js +0 -5
  299. package/vendor/dojo-1.10.10/dojox/charting/themes/Wetland.js.uncompressed.js +0 -12
  300. package/vendor/dojo-1.10.10/dojox/charting/themes/common.js +0 -4
  301. package/vendor/dojo-1.10.10/dojox/charting/themes/common.js.uncompressed.js +0 -3
  302. package/vendor/dojo-1.10.10/dojox/charting/widget/Legend.js +0 -102
  303. package/vendor/dojo-1.10.10/dojox/charting/widget/Legend.js.uncompressed.js +0 -165
  304. package/vendor/dojo-1.10.10/dojox/color/Palette.js +0 -163
  305. package/vendor/dojo-1.10.10/dojox/color/Palette.js.uncompressed.js +0 -460
  306. package/vendor/dojo-1.10.10/dojox/color/_base.js +0 -174
  307. package/vendor/dojo-1.10.10/dojox/color/_base.js.uncompressed.js +0 -196
  308. package/vendor/dojo-1.10.10/dojox/gfx/_base.js +0 -253
  309. package/vendor/dojo-1.10.10/dojox/gfx/_base.js.uncompressed.js +0 -1024
  310. package/vendor/dojo-1.10.10/dojox/gfx/fx.js +0 -297
  311. package/vendor/dojo-1.10.10/dojox/gfx/fx.js.uncompressed.js +0 -350
  312. package/vendor/dojo-1.10.10/dojox/gfx/gradutils.js +0 -63
  313. package/vendor/dojo-1.10.10/dojox/gfx/gradutils.js.uncompressed.js +0 -91
  314. package/vendor/dojo-1.10.10/dojox/gfx/matrix.js +0 -170
  315. package/vendor/dojo-1.10.10/dojox/gfx/matrix.js.uncompressed.js +0 -501
  316. package/vendor/dojo-1.10.10/dojox/gfx/path.js +0 -319
  317. package/vendor/dojo-1.10.10/dojox/gfx/path.js.uncompressed.js +0 -478
  318. package/vendor/dojo-1.10.10/dojox/gfx/shape.js +0 -459
  319. package/vendor/dojo-1.10.10/dojox/gfx/shape.js.uncompressed.js +0 -1091
  320. package/vendor/dojo-1.10.10/dojox/gfx/svg.js +0 -662
  321. package/vendor/dojo-1.10.10/dojox/gfx/svg.js.uncompressed.js +0 -1023
  322. package/vendor/dojo-1.10.10/dojox/gfx/utils.js +0 -199
  323. package/vendor/dojo-1.10.10/dojox/gfx/utils.js.uncompressed.js +0 -322
  324. package/vendor/dojo-1.10.10/dojox/gfx.js +0 -2
  325. package/vendor/dojo-1.10.10/dojox/gfx.js.uncompressed.js +0 -1136
  326. package/vendor/dojo-1.10.10/dojox/lang/functional/array.js +0 -151
  327. package/vendor/dojo-1.10.10/dojox/lang/functional/array.js.uncompressed.js +0 -169
  328. package/vendor/dojo-1.10.10/dojox/lang/functional/fold.js +0 -93
  329. package/vendor/dojo-1.10.10/dojox/lang/functional/fold.js.uncompressed.js +0 -125
  330. package/vendor/dojo-1.10.10/dojox/lang/functional/lambda.js +0 -81
  331. package/vendor/dojo-1.10.10/dojox/lang/functional/lambda.js.uncompressed.js +0 -132
  332. package/vendor/dojo-1.10.10/dojox/lang/functional/object.js +0 -54
  333. package/vendor/dojo-1.10.10/dojox/lang/functional/object.js.uncompressed.js +0 -78
  334. package/vendor/dojo-1.10.10/dojox/lang/functional/reversed.js +0 -61
  335. package/vendor/dojo-1.10.10/dojox/lang/functional/reversed.js.uncompressed.js +0 -77
  336. package/vendor/dojo-1.10.10/dojox/lang/functional/scan.js +0 -87
  337. package/vendor/dojo-1.10.10/dojox/lang/functional/scan.js.uncompressed.js +0 -107
  338. package/vendor/dojo-1.10.10/dojox/lang/functional.js +0 -4
  339. package/vendor/dojo-1.10.10/dojox/lang/functional.js.uncompressed.js +0 -3
  340. package/vendor/dojo-1.10.10/dojox/lang/utils.js +0 -86
  341. package/vendor/dojo-1.10.10/dojox/lang/utils.js.uncompressed.js +0 -121
  342. package/vendor/dojo-1.10.10/dojox/main.js +0 -4
  343. package/vendor/dojo-1.10.10/dojox/main.js.uncompressed.js +0 -14
  344. package/vendor/dojo-1.10.10/dojox/storage/LocalStorageProvider.js +0 -112
  345. package/vendor/dojo-1.10.10/dojox/storage/LocalStorageProvider.js.uncompressed.js +0 -208
  346. package/vendor/dojo-1.10.10/dojox/storage/Provider.js +0 -62
  347. package/vendor/dojo-1.10.10/dojox/storage/Provider.js.uncompressed.js +0 -344
  348. package/vendor/dojo-1.10.10/dojox/storage/manager.js +0 -110
  349. package/vendor/dojo-1.10.10/dojox/storage/manager.js.uncompressed.js +0 -263
package/test-record-1.mp4 CHANGED
Binary file
package/webpack.config.js CHANGED
@@ -18,31 +18,20 @@ module.exports = {
18
18
  library: {type: 'var', name: `${packageName}_test`},
19
19
  import: './src/package-test.ts',
20
20
  },
21
- dojo: {
22
- filename: 'package-dojo.js',
23
- library: {type: 'var', name: `${packageName}_dojo`},
24
- import: './helm/dojo/package.ts',
25
- },
26
21
  },
27
22
  resolve: {
28
23
  fallback: {'url': false},
29
24
  extensions: ['.ts', '.tsx', '.js', '.wasm', '.mjs', '.json'],
30
- alias: {
31
- 'vendor/helm-web-editor': mode === 'production' ?
32
- path.resolve(__dirname, 'vendor', 'helm-web-editor.production.js') :
33
- path.resolve(__dirname, 'vendor', 'helm-web-editor.development.js'),
34
- },
35
25
  },
36
26
  devServer: {
37
27
  contentBase: './dist',
38
28
  },
39
29
  // amd: {toUrlUndefined: true},
40
30
  module: {
41
- noParse: /vendor/,
42
31
  rules: [
43
32
  {test: /\.js$/, enforce: 'pre', use: ['source-map-loader'], exclude: [/node_modules/]},
44
33
  {test: /\.ts(x?)$/, use: 'ts-loader', exclude: [/node_modules/]},
45
- {test: /\.css$/, use: ['style-loader', 'css-loader'], exclude: [/node_modules/]},
34
+ {test: /\.css$/, use: ['style-loader', 'css-loader']},
46
35
  ],
47
36
  },
48
37
  devtool: 'source-map',
package/dist/455.js DELETED
@@ -1,2 +0,0 @@
1
- var helm;(()=>{"use strict";const t={V2K_RGP_SHIFT:8,V2K_RGP_LINE:"M RGP",V2K_A_LINE:"A ",V3K_COUNTS_SHIFT:14,V3K_IDX_SHIFT:7,V3K_HEADER_FIRST_LINE:"\nDatagrok macromolecule handler\n\n",V3K_HEADER_SECOND_LINE:" 0 0 0 0 0 0 999 V3000\n",V3K_BEGIN_CTAB_BLOCK:"M V30 BEGIN CTAB\n",V3K_END_CTAB_BLOCK:"M V30 END CTAB\n",V3K_BEGIN_COUNTS_LINE:"M V30 COUNTS ",V3K_COUNTS_LINE_ENDING:" 0 0 0\n",V3K_BEGIN_ATOM_BLOCK:"M V30 BEGIN ATOM\n",V3K_END_ATOM_BLOCK:"M V30 END ATOM\n",V3K_BEGIN_BOND_BLOCK:"M V30 BEGIN BOND\n",V3K_END_BOND_BLOCK:"M V30 END BOND\n",V3K_BOND_CONFIG:" CFG=",V3K_BEGIN_DATA_LINE:"M V30 ",V3K_END:"M END",PRECISION_FACTOR:1e4,DEOXYRIBOSE:{polymerType:"RNA",symbol:"d"},RIBOSE:{polymerType:"RNA",symbol:"r"},PHOSPHATE:{polymerType:"RNA",symbol:"p"},OXYGEN:"O",HYDROGEN:"H"};function o(t,o){return t[o.polymerType]?.[o.symbol]}var n,e,s,i;!function(t){t[t.SUGAR=0]="SUGAR",t[t.BASE=1]="BASE",t[t.PHOSPHATE=2]="PHOSPHATE",t[t.TERMINAL_5P=3]="TERMINAL_5P",t[t.TERMINAL_3P=4]="TERMINAL_3P"}(n||(n={}));class a extends Map{constructor(t){super(t)}}class l{constructor(t,o){this.molfile=t,this.monomers=o}static createEmpty(){return new l("",new a(null))}}new RegExp("[rd]\\((\\w)\\)p?","g");class h{constructor(t,o,n){this.name=t,this.alphabet=o,this.cutoff=n}}!function(t){t.FASTA="fasta",t.SEPARATOR="separator",t.HELM="helm",t.CUSTOM="custom",t.BILN="biln"}(e||(e={})),function(t){t.DNA="DNA",t.RNA="RNA",t.PT="PT",t.UN="UN"}(s||(s={})),function(t){t.aligned="aligned",t.alphabet="alphabet",t.alphabetSize=".alphabetSize",t.alphabetIsMultichar=".alphabetIsMultichar",t.separator="separator",t.isHelmCompatible=".isHelmCompatible",t.positionNames=".positionNames",t.positionLabels=".positionLabels",t.regions=".regions",t.positionShift=".positionShift",t.selectedPosition=".selectedPosition",t.polymerTypeColumnName=".polymerTypeColumnName",t.annotations=".annotations",t.numberingScheme=".numberingScheme",t.annotationColumnName=".annotationColumnName"}(i||(i={}));const r=new class{constructor(){this.fasta={peptide:new Set(["G","L","Y","S","E","Q","D","N","F","A","K","R","H","C","V","P","W","I","M","T"]),dna:new Set(["A","C","G","T"]),rna:new Set(["A","C","G","U"])}}};var c;function E(t){let o;switch(t){case c.BASE:case c.SUGAR:case c.LINKER:case c.NUCLEOTIDE:case"nucleotide":o="RNA";break;case c.AA:o="PEPTIDE";break;case c.CHEM:o="CHEM";break;case c.BLOB:o="BLOB";break;default:o="PEPTIDE",console.warn(`Unexpected HelmType '${t}'`)}return o}function b(e,i,h,r,c){if(0===e.length)return l.createEmpty();const b="RNA"===r&&!!c&&c.length===e.length,{atomCount:A,bondCount:p,needsCapping:d}=function(e,i,a,l,h,r){let c=0,b=0,f=0,m=!0,N=null,_=null;for(let t=0;t<e.length;++t){const n=e[t];if(""!==n.symbol){if("*"==n.symbol)throw new Error("Gap canonical symbol is '', not '*");N=o(i,{symbol:n.symbol,polymerType:E(n.biotype)}),c+=N.atoms.x.length,b+=N.bonds.bondTypes.length,f++,h&&t%3==2&&(_=N)}}if("PEPTIDE"===l)c+=1,b+=f,f>0&&((N?.meta?.rNodes?.length??0)<2||N?.terminalR2Atom?.toLowerCase()===t.HYDROGEN.toLowerCase())&&(m=!1,c-=1,b-=1);else if(h)b+=f,r&&r.length>0&&r[r.length-1]===n.TERMINAL_3P?m=!1:c+=1;else{const n=a===s.DNA?o(i,t.DEOXYRIBOSE):o(i,t.RIBOSE),l=o(i,t.PHOSPHATE);c+=(e.length-1)*l.atoms.x.length,c+=e.length*n.atoms.x.length,c+=1,b+=(e.length-1)*l.bonds.bondTypes.length,b+=e.length*n.bonds.bondTypes.length,b-=1,b+=3*e.length}return{atomCount:c,bondCount:b,needsCapping:m}}(e,i,h,r,b,c),T=new Array(A),y=new Array(p);let u,I=null,O=null;"PEPTIDE"===r?u=f:(u=N,b||(I=h===s.DNA?o(i,t.DEOXYRIBOSE):o(i,t.RIBOSE),O=o(i,t.PHOSPHATE)));const g={i:0,nodeShift:0,bondShift:0,backbonePositionShift:new Array(2).fill(0),branchPositionShift:new Array(2).fill(0),backboneAttachNode:0,branchAttachNode:0,flipFactor:1},L={sugar:I,phosphate:O,seqLength:b?Math.ceil(e.length/3):e.length,atomCount:A,bondCount:p},C=new a,B=[];let D,P=0;if(b)!function(t,e,s,i,a,l,h,r,c,b,f){const N=e.length>0&&e[0]===n.TERMINAL_5P,A=e.length>0&&e[e.length-1]===n.TERMINAL_3P,S=N?1:0,p=(A?e.length-1:e.length)-S,d=Math.ceil(p/3),T=p===3*d,y=(t,n)=>{const e=o(s,{symbol:t.symbol,polymerType:E(t.biotype)}),h=l.nodeShift,N=l.bondShift;m(e,i,a,l),e.stereoAtoms?.forEach(t=>c.push(t+f())),b(e.atoms.x.length);const _=[];for(let t=h;t<l.nodeShift;++t)_.push(t);const A=[];for(let t=N;t<l.bondShift;++t)A.push(t);r.set(n,{biotype:t.biotype,symbol:t.symbol,atoms:_,bonds:A})};N&&(l.i=0,y(t[0],0));for(let n=0;n<d;++n){l.i=n+(N?1:0);const e=S+3*n,h=e+1,A=t[e],p=t[h],d=o(s,{symbol:A.symbol,polymerType:E(A.biotype)}),T=o(s,{symbol:p.symbol,polymerType:E(p.biotype)});if(n>=1){const o=S+3*(n-1)+2;y(t[o],o)}const u=l.nodeShift,I=l.bondShift;m(d,i,a,l),d.stereoAtoms?.forEach(t=>c.push(t+f())),b(d.atoms.x.length);const O=[];for(let t=u;t<l.nodeShift;++t)O.push(t);const g=[];for(let t=I;t<l.bondShift;++t)g.push(t);r.set(e,{biotype:A.biotype,symbol:A.symbol,atoms:O,bonds:g});const L=l.nodeShift,C=l.bondShift;_(T,i,a,l),T.stereoAtoms?.forEach(t=>c.push(t+f())),b(T.atoms.x.length);const B=[];for(let t=L;t<l.nodeShift;++t)B.push(t);const D=[];for(let t=C;t<l.bondShift;++t)D.push(t);r.set(h,{biotype:p.biotype,symbol:p.symbol,atoms:B,bonds:D})}if(T){const o=S+3*(d-1)+2;y(t[o],o)}A&&(l.i=d+(N?1:0),y(t[e.length-1],e.length-1))}(e,c,i,T,y,g,0,C,B,t=>{P+=t},()=>P);else for(g.i=0;g.i<L.seqLength;++g.i){const t=e[g.i];if(""===t.symbol)continue;const n=o(i,{symbol:t.symbol,polymerType:E(t.biotype)});D=n.terminalR2Atom;const s=g.nodeShift,a=g.bondShift;u(n,T,y,g,L),n.stereoAtoms?.forEach(t=>B.push(t+P)),P+=n.atoms.x.length;const l=g.nodeShift-s,h=new Array(l);for(let t=0;t<l;++t)h[t]=s+t;const r=g.bondShift-a,c=new Array(r);for(let t=0;t<r;++t)c[t]=a+t;C.set(g.i,{biotype:t.biotype,symbol:t.symbol,atoms:h,bonds:c})}d&&function(o,n,e,s,i=t.OXYGEN){const a=e.nodeShift+1;o[s.atomCount]=t.V3K_BEGIN_DATA_LINE+a+" "+(i??t.OXYGEN)+" "+S(e.backbonePositionShift[0])+" "+e.flipFactor*S(e.backbonePositionShift[1])+" 0.000000 0\n";const l=e.backboneAttachNode,h=a;n[s.bondCount]=t.V3K_BEGIN_DATA_LINE+e.bondShift+" 1 "+l+" "+h+"\n"}(T,y,g,L,D??t.OXYGEN);const R=t.V3K_BEGIN_COUNTS_LINE+A+" "+p+t.V3K_COUNTS_LINE_ENDING;let K="";return K+=t.V3K_HEADER_FIRST_LINE,K+=t.V3K_HEADER_SECOND_LINE,K+=t.V3K_BEGIN_CTAB_BLOCK,K+=R,K+=t.V3K_BEGIN_ATOM_BLOCK,K+=T.join(""),K+=t.V3K_END_ATOM_BLOCK,K+=t.V3K_BEGIN_BOND_BLOCK,K+=y.join(""),K+=t.V3K_END_BOND_BLOCK,B.length>0&&(K+=function(t){const o=[];let n=`M V30 MDLV30/STEABS ATOMS=(${t.length}`;for(let e=0;e<t.length;e++){const s=`${n} ${t[e]}`;s.length>76?(o.push(`${n} -\n`),n=`M V30 ${t[e]}`):n=s,e===t.length-1&&o.push(`${n})\n`)}return`M V30 BEGIN COLLECTION\n${o.join("")}M V30 END COLLECTION\n`}(B)),K+=t.V3K_END_CTAB_BLOCK,K+=t.V3K_END,{molfile:K,monomers:C}}function f(t,o,n,e){e.flipFactor=(-1)**(e.i%2),m(t,o,n,e)}function m(o,n,e,s){!function(o,n,e){for(let s=0;s<o.atoms.atomTypes.length;++s){const i=e.nodeShift+s+1;n[e.nodeShift+s]=t.V3K_BEGIN_DATA_LINE+i+" "+o.atoms.atomTypes[s]+" "+S(e.backbonePositionShift[0]+o.atoms.x[s])+" "+S(e.backbonePositionShift[1]+e.flipFactor*o.atoms.y[s])+" "+o.atoms.kwargs[s]}}(o,n,s),A(o,e,s),function(o,n,e){if(0!==e.backboneAttachNode){const s=e.bondShift,i=e.backboneAttachNode,a=o.meta.terminalNodes[0]+e.nodeShift;n[e.bondShift-1]=t.V3K_BEGIN_DATA_LINE+s+" 1 "+i+" "+a+"\n"}}(o,e,s),null!==o.meta.branchShift&&o.meta.terminalNodes.length>2&&function(t,o){o.branchAttachNode=o.nodeShift+t.meta.terminalNodes[2];for(let n=0;n<2;++n)o.branchPositionShift[n]=o.backbonePositionShift[n]+t.meta.branchShift[n]}(o,s),function(t,o){o.backboneAttachNode=o.nodeShift+t.meta.terminalNodes[1],o.bondShift+=t.bonds.atomPairs.length+1,o.nodeShift+=t.atoms.atomTypes.length,o.backbonePositionShift[0]+=t.meta.backboneShift?.[0]??0,o.backbonePositionShift[1]+=o.flipFactor*(t.meta.backboneShift?.[1]??0)}(o,s)}function N(t,o,n,e,s){if(0===e.i)m(s.sugar,o,n,e);else for(const t of[s.phosphate,s.sugar])m(t,o,n,e);_(t,o,n,e)}function _(o,n,e,s){!function(o,n,e){for(let s=0;s<o.atoms.atomTypes.length;++s){const i=e.nodeShift+s+1;n[e.nodeShift+s]=t.V3K_BEGIN_DATA_LINE+i+" "+o.atoms.atomTypes[s]+" "+S(e.branchPositionShift[0]+o.atoms.x[s])+" "+S(e.branchPositionShift[1]+e.flipFactor*o.atoms.y[s])+" "+o.atoms.kwargs[s]}}(o,n,s),A(o,e,s),function(o,n,e){const s=e.bondShift,i=e.branchAttachNode,a=o.meta.terminalNodes[0]+e.nodeShift;n[s-1]=t.V3K_BEGIN_DATA_LINE+s+" 1 "+i+" "+a+"\n"}(o,e,s);const i=s.bondShift,a=s.branchAttachNode,l=o.meta.terminalNodes[0]+s.nodeShift;e[i-1]=t.V3K_BEGIN_DATA_LINE+i+" 1 "+a+" "+l+"\n",s.bondShift+=o.bonds.atomPairs.length+1,s.nodeShift+=o.atoms.atomTypes.length}function A(o,n,e){for(let s=0;s<o.bonds.atomPairs.length;++s){const i=e.bondShift+s+1,a=o.bonds.atomPairs[s][0]+e.nodeShift,l=o.bonds.atomPairs[s][1]+e.nodeShift;let h="";if(o.bonds.bondConfiguration.has(s)){let t=o.bonds.bondConfiguration.get(s);e.flipFactor<0&&(t=1===t?3:1),h=" CFG="+t}const r=o.bonds.kwargs.has(s)?" "+o.bonds.kwargs.get(s):"";n[e.bondShift+s]=t.V3K_BEGIN_DATA_LINE+i+" "+o.bonds.bondTypes[s]+" "+a+" "+l+h+r+"\n"}}function S(o){return Math.round(t.PRECISION_FACTOR*o)/t.PRECISION_FACTOR}new h(s.PT,r.fasta.peptide,.5),new h(s.DNA,r.fasta.dna,.55),new h(s.RNA,r.fasta.rna,.55),e.FASTA,e.SEPARATOR,e.HELM,e.BILN,function(t){t.BASE="HELM_BASE",t.SUGAR="HELM_SUGAR",t.LINKER="HELM_LINKER",t.AA="HELM_AA",t.CHEM="HELM_CHEM",t.BLOB="HELM_BLOB",t.NUCLEOTIDE="HELM_NUCLETIDE"}(c||(c={})),onmessage=t=>{const{seqList:o,rolesList:n,monomersDict:e,alphabet:s,polymerType:i,start:a,end:l}=t.data,h=new Array(l-a),r=new Array(0);for(let t=a;t<l;++t)try{const l=o[t],r=n?n[t]:void 0;h[t-a]=b(l,e,s,i,r)}catch(o){const n=`Cannot get molfile of row #${t}: ${o instanceof Error?o.message:o.toString()}.`;r.push(n)}postMessage({molfiles:h,warnings:r})},helm={}})();
2
- //# sourceMappingURL=455.js.map
package/dist/455.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"455.js","mappings":"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","sources":["webpack://helm/./node_modules/@datagrok-libraries/bio/src/monomer-works/consts.js","webpack://helm/./node_modules/@datagrok-libraries/bio/src/monomer-works/types.js","webpack://helm/./node_modules/@datagrok-libraries/bio/src/utils/macromolecule/consts.js","webpack://helm/./node_modules/@datagrok-libraries/bio/src/utils/const.js","webpack://helm/./node_modules/@datagrok-libraries/bio/src/utils/macromolecule/types.js","webpack://helm/./node_modules/@datagrok-libraries/js-draw-lite/src/types/org.js","webpack://helm/./node_modules/@datagrok-libraries/bio/src/monomer-works/monomer-works.js","webpack://helm/./node_modules/@datagrok-libraries/bio/src/monomer-works/to-atomic-level-utils.js","webpack://helm/./node_modules/@datagrok-libraries/bio/src/monomer-works/seq-to-molfile-worker.js"],"sourcesContent":["export const monomerWorksConsts = {\n // constants for parsing molfile V2000\n V2K_RGP_SHIFT: 8,\n V2K_RGP_LINE: 'M RGP',\n V2K_A_LINE: 'A ',\n // constants for parsing/reconstruction of molfile V3000\n V3K_COUNTS_SHIFT: 14,\n V3K_IDX_SHIFT: 7,\n V3K_HEADER_FIRST_LINE: '\\nDatagrok macromolecule handler\\n\\n',\n V3K_HEADER_SECOND_LINE: ' 0 0 0 0 0 0 999 V3000\\n',\n V3K_BEGIN_CTAB_BLOCK: 'M V30 BEGIN CTAB\\n',\n V3K_END_CTAB_BLOCK: 'M V30 END CTAB\\n',\n V3K_BEGIN_COUNTS_LINE: 'M V30 COUNTS ',\n V3K_COUNTS_LINE_ENDING: ' 0 0 0\\n',\n V3K_BEGIN_ATOM_BLOCK: 'M V30 BEGIN ATOM\\n',\n V3K_END_ATOM_BLOCK: 'M V30 END ATOM\\n',\n V3K_BEGIN_BOND_BLOCK: 'M V30 BEGIN BOND\\n',\n V3K_END_BOND_BLOCK: 'M V30 END BOND\\n',\n V3K_BOND_CONFIG: ' CFG=',\n V3K_BEGIN_DATA_LINE: 'M V30 ',\n V3K_END: 'M END',\n PRECISION_FACTOR: 10000, // HELMCoreLibrary has 4 significant digits after decimal point in atom coordinates\n // symbols for the corresponding monomers in HELM library\n DEOXYRIBOSE: { polymerType: \"RNA\" /* PolymerTypes.RNA */, symbol: 'd' },\n RIBOSE: { polymerType: \"RNA\" /* PolymerTypes.RNA */, symbol: 'r' },\n PHOSPHATE: { polymerType: \"RNA\" /* PolymerTypes.RNA */, symbol: 'p' },\n OXYGEN: 'O',\n HYDROGEN: 'H',\n};\n//# sourceMappingURL=consts.js.map","export function getMolGraph(dict, libKey) {\n return dict[libKey.polymerType]?.[libKey.symbol];\n}\nexport function hasMolGraph(dict, libKey) {\n return !!dict[libKey.polymerType]?.[libKey.symbol];\n}\nexport function setMolGraph(dict, libKey, value) {\n let pt = dict[libKey.polymerType];\n if (!pt)\n pt = dict[libKey.polymerType] = {};\n pt[libKey.symbol] = value;\n}\n/** Role of an entry in a HELM RNA splitted sequence.\n * SUGAR/BASE/PHOSPHATE are the standard triple positions.\n * TERMINAL_5P marks a 5'-end terminal modifier (e.g. Chol) — a monomer\n * with R2 only that takes the place of the leading sugar.\n * TERMINAL_3P marks a 3'-end terminal modifier (e.g. GalNAc) — a monomer\n * with R1 only that takes the place of the trailing phosphate. The OH cap\n * MUST be omitted when a TERMINAL_3P is present. */\nexport var NucleotideRole;\n(function (NucleotideRole) {\n NucleotideRole[NucleotideRole[\"SUGAR\"] = 0] = \"SUGAR\";\n NucleotideRole[NucleotideRole[\"BASE\"] = 1] = \"BASE\";\n NucleotideRole[NucleotideRole[\"PHOSPHATE\"] = 2] = \"PHOSPHATE\";\n NucleotideRole[NucleotideRole[\"TERMINAL_5P\"] = 3] = \"TERMINAL_5P\";\n NucleotideRole[NucleotideRole[\"TERMINAL_3P\"] = 4] = \"TERMINAL_3P\";\n})(NucleotideRole || (NucleotideRole = {}));\nexport class MonomerMap extends Map {\n constructor(entries) {\n super(entries);\n }\n}\n/** @property monomers key - helm seq position, */\nexport class MolfileWithMap {\n constructor(molfile, monomers) {\n this.molfile = molfile;\n this.monomers = monomers;\n }\n static createEmpty() { return new MolfileWithMap('', new MonomerMap(null)); }\n}\n//# sourceMappingURL=types.js.map","import { CandidateType } from './types';\n/** enum type to simplify setting \"user-friendly\" notation if necessary */\nexport var NOTATION;\n(function (NOTATION) {\n NOTATION[\"FASTA\"] = \"fasta\";\n NOTATION[\"SEPARATOR\"] = \"separator\";\n NOTATION[\"HELM\"] = \"helm\";\n /* Requires notation handler */ NOTATION[\"CUSTOM\"] = \"custom\";\n /* Requires notation handler */ NOTATION[\"BILN\"] = \"biln\";\n})(NOTATION || (NOTATION = {}));\nexport var ALPHABET;\n(function (ALPHABET) {\n ALPHABET[\"DNA\"] = \"DNA\";\n ALPHABET[\"RNA\"] = \"RNA\";\n ALPHABET[\"PT\"] = \"PT\";\n /** Unknown */\n ALPHABET[\"UN\"] = \"UN\";\n})(ALPHABET || (ALPHABET = {}));\nexport var TAGS;\n(function (TAGS) {\n TAGS[\"aligned\"] = \"aligned\";\n TAGS[\"alphabet\"] = \"alphabet\";\n TAGS[\"alphabetSize\"] = \".alphabetSize\";\n TAGS[\"alphabetIsMultichar\"] = \".alphabetIsMultichar\";\n TAGS[\"separator\"] = \"separator\";\n TAGS[\"isHelmCompatible\"] = \".isHelmCompatible\";\n TAGS[\"positionNames\"] = \".positionNames\";\n TAGS[\"positionLabels\"] = \".positionLabels\";\n TAGS[\"regions\"] = \".regions\";\n TAGS[\"positionShift\"] = \".positionShift\";\n TAGS[\"selectedPosition\"] = \".selectedPosition\";\n TAGS[\"polymerTypeColumnName\"] = \".polymerTypeColumnName\";\n TAGS[\"annotations\"] = \".annotations\";\n TAGS[\"numberingScheme\"] = \".numberingScheme\";\n TAGS[\"annotationColumnName\"] = \".annotationColumnName\";\n})(TAGS || (TAGS = {}));\nexport { TAGS as BioTags };\nexport const positionSeparator = ', ';\nexport const monomerRe = /(?:\\[([A-Za-z0-9_\\-,()]+)\\])|([A-Za-z\\-])/g;\nexport const helmRe = /(PEPTIDE1|DNA1|RNA1)\\{([^}]+)}/g;\nexport const helmPp1Re = /\\[([^\\[\\]]+)]/g;\nexport const Alphabets = new class {\n constructor() {\n this.fasta = {\n peptide: new Set([\n 'G', 'L', 'Y', 'S', 'E', 'Q', 'D', 'N', 'F', 'A',\n 'K', 'R', 'H', 'C', 'V', 'P', 'W', 'I', 'M', 'T',\n ]),\n dna: new Set(['A', 'C', 'G', 'T']),\n rna: new Set(['A', 'C', 'G', 'U']),\n };\n }\n}();\nexport const candidateAlphabets = [\n new CandidateType(ALPHABET.PT, Alphabets.fasta.peptide, 0.50),\n new CandidateType(ALPHABET.DNA, Alphabets.fasta.dna, 0.55),\n new CandidateType(ALPHABET.RNA, Alphabets.fasta.rna, 0.55),\n];\n/** Canonical gap symbol */\nexport const GAP_SYMBOL = '';\nexport const GapOriginals = {\n [NOTATION.FASTA]: '-',\n [NOTATION.SEPARATOR]: '',\n [NOTATION.HELM]: '*',\n [NOTATION.BILN]: '',\n};\nexport const MONOMER_MOTIF_SPLITTER = ' , ';\n/** Tag on Monomer columns storing the nqName of a function that returns an IMonomerCanonicalizer.\n * The `.%` prefix ensures this tag is persisted with projects. */\nexport const MONOMER_CANONICALIZER_FUNC_TAG = '.%monomer-canonicalizer-func';\n/** Column temp key for the cached IMonomerCanonicalizer instance */\nexport const MONOMER_CANONICALIZER_TEMP = 'monomer-canonicalizer';\nexport const NOTATION_PROVIDER_CONSTRUCTOR_ROLE = 'notationProviderConstructor';\n//# sourceMappingURL=consts.js.map","// core fields of HELM library object used in toAtomicLevel function\nexport const HELM_CORE_FIELDS = [\n \"symbol\" /* HELM_FIELDS.SYMBOL */,\n \"molfile\" /* HELM_FIELDS.MOLFILE */,\n \"rgroups\" /* HELM_FIELDS.RGROUPS */,\n \"name\" /* HELM_FIELDS.NAME */,\n // HELM_FIELDS.MONOMER_TYPE, // add if terminal monomers for PEPTIDEs to be\n // supported\n];\nexport const SDF_MONOMER_NAME = 'MonomerName';\n// todo: ideally, keys should be expressed via constants\nexport const jsonSdfMonomerLibDict = {\n 'monomerType': null, // -> Backbone\n 'smiles': null,\n 'name': 'Name',\n 'author': null,\n 'molfile': 'molecule',\n 'naturalAnalog': 'MonomerNaturalAnalogCode',\n 'rgroups': 'MonomerCaps',\n 'createDate': null,\n 'id': null,\n 'polymerType': 'MonomerType',\n 'symbol': 'MonomerName'\n};\nexport const DUMMY_MONOMER = {\n 'monomerType': 'Backbone',\n 'smiles': '',\n 'name': '',\n 'author': 'Datagrok',\n 'molfile': '',\n 'naturalAnalog': '',\n 'rgroups': [],\n 'createDate': null,\n 'id': 0,\n 'polymerType': 'PEPTIDE',\n 'symbol': ''\n};\n// range of hex nubers used in PepSea library to endode monomers\nexport const MONOMER_ENCODE_MIN = 0x100;\nexport const MONOMER_ENCODE_MAX = 0x40A;\nexport const RIBOSE_SYMBOL = 'r';\nexport const DEOXYRIBOSE_SYMBOL = 'd';\nexport const PHOSPHATE_SYMBOL = 'p';\nexport const HELM_WRAPPERS_REGEXP = new RegExp(`[${RIBOSE_SYMBOL}${DEOXYRIBOSE_SYMBOL}]\\\\((\\\\w)\\\\)${PHOSPHATE_SYMBOL}?`, 'g');\n//# sourceMappingURL=const.js.map","import { NOTATION_PROVIDER_CONSTRUCTOR_ROLE } from './consts';\nexport class NotationProviderBase {\n /** Name of the custom notation */\n static get notationName() {\n return 'Custom';\n }\n ;\n /** flag to let bio know if this provider implements method for converting helm to it */\n static get implementsFromHelm() {\n return false;\n }\n ;\n /** Method for converting HELM to this notation */\n static convertFromHelm(helm, options) {\n throw new Error(`Method convertFromHelm not implemented for this notation provider`);\n }\n ;\n static async getProviderConstructors() {\n // this is terrible, I know, but otherwise this gets put in webworkers and fails due to DG resolution)))\n // @ts-ignore\n if (window?.DG) {\n // @ts-ignore\n const constFuncs = window.DG.Func.find({ meta: { role: NOTATION_PROVIDER_CONSTRUCTOR_ROLE } });\n return Promise.all(constFuncs.map((f) => f.apply({})));\n }\n return [];\n }\n}\n/** Alphabet candidate type */\nexport class CandidateType {\n constructor(name, alphabet, cutoff) {\n this.name = name;\n this.alphabet = alphabet;\n this.cutoff = cutoff;\n }\n}\n/** Alphabet candidate similarity type */\nexport class CandidateSimType extends CandidateType {\n constructor(candidate, freq, similarity) {\n super(candidate.name, candidate.alphabet, candidate.cutoff);\n this.freq = freq;\n this.similarity = similarity;\n }\n}\n//# sourceMappingURL=types.js.map","export var HelmTypes;\n(function (HelmTypes) {\n HelmTypes[\"BASE\"] = \"HELM_BASE\";\n HelmTypes[\"SUGAR\"] = \"HELM_SUGAR\";\n HelmTypes[\"LINKER\"] = \"HELM_LINKER\";\n HelmTypes[\"AA\"] = \"HELM_AA\";\n HelmTypes[\"CHEM\"] = \"HELM_CHEM\";\n HelmTypes[\"BLOB\"] = \"HELM_BLOB\";\n HelmTypes[\"NUCLEOTIDE\"] = \"HELM_NUCLETIDE\";\n})(HelmTypes || (HelmTypes = {}));\n//# sourceMappingURL=org.js.map","import { HelmTypes } from '../helm/consts';\nexport class MonomerWorks {\n //private molfileConverter: IMolfileConverter;\n constructor(monomerLib /*, molfileConverter: IMolfileConverter*/) {\n this.monomerLib = monomerLib;\n //this.molfileConverter = molfileConverter;\n }\n //types according to Monomer possible\n getCappedRotatedMonomer(monomerType, monomerName) {\n // TODO: Check type of monomerType arg\n const monomer = this.monomerLib.getMonomer(monomerType, monomerName);\n if (monomer)\n return monomer.molfile; //TODO cap\n return null;\n }\n}\nexport function helmTypeToPolymerType(helmType) {\n let polymerType = undefined;\n switch (helmType) {\n case HelmTypes.BASE:\n case HelmTypes.SUGAR: // r - ribose, d - deoxyribose\n case HelmTypes.LINKER: // p - phosphate\n case HelmTypes.NUCLEOTIDE:\n // @ts-ignore\n case 'nucleotide':\n polymerType = \"RNA\" /* PolymerTypes.RNA */;\n break;\n case HelmTypes.AA:\n polymerType = \"PEPTIDE\" /* PolymerTypes.PEPTIDE */;\n break;\n case HelmTypes.CHEM:\n polymerType = \"CHEM\" /* PolymerTypes.CHEM */;\n break;\n case HelmTypes.BLOB:\n polymerType = \"BLOB\" /* PolymerTypes.BLOB */;\n break;\n default:\n polymerType = \"PEPTIDE\" /* PolymerTypes.PEPTIDE */;\n console.warn(`Unexpected HelmType '${helmType}'`);\n }\n return polymerType;\n}\n//# sourceMappingURL=monomer-works.js.map","/* eslint-disable max-len */\nimport { monomerWorksConsts as C } from './consts';\nimport { getMolGraph, MolfileWithMap, MonomerMap, NucleotideRole } from './types';\nimport { HELM_CORE_FIELDS, } from '../utils/const';\nimport { ALPHABET, GAP_SYMBOL } from '../utils/macromolecule/consts';\nimport { helmTypeToPolymerType } from './monomer-works';\n/** Get a mapping of peptide symbols to HELM monomer library objects with selected fields.\n * @param {IMonomerLib} monomerLib - Monomer library\n * @param {HELM_POLYMER_TYPE} polymerType - Polymer type\n * @param {ALPHABET} alphabet - Alphabet of the column\n * @return {Map<string, any>} - Mapping of peptide symbols to HELM monomer library objects with selected fields*/\nexport function getFormattedMonomerLib(monomerLib, polymerType, alphabet) {\n const map = new Map();\n for (const monomerSymbol of monomerLib.getMonomerSymbolsByType(polymerType)) {\n const it = monomerLib.getMonomer(polymerType, monomerSymbol);\n if (\n // RNA: all branch monomers (bases) and all backbone monomers (sugars +\n // phosphates, including modified ones). Modifications are looked up by\n // symbol at assembly time, so they MUST be present in the formatted lib.\n polymerType === \"RNA\" /* HELM_POLYMER_TYPE.RNA */ || (polymerType === \"PEPTIDE\" /* HELM_POLYMER_TYPE.PEPTIDE */ &&\n it[\"monomerType\" /* HELM_FIELDS.MONOMER_TYPE */] !== \"Branch\" /* HELM_MONOMER_TYPE.BRANCH */)) {\n const monomerObject = {};\n HELM_CORE_FIELDS.forEach((field) => {\n //@ts-ignore\n monomerObject[field] = it[field];\n });\n map.set(monomerSymbol, monomerObject);\n }\n }\n return map;\n}\n/** Translate a sequence of monomer symbols into Molfile V3000\n * @param {ISeqMonomer[]} monomerSeq - Sequence of monomer symbols (canonical)\n * @param {MonomerMolGraphMap} monomersDict - Mapping of monomer symbols to MolGraph objects\n * @param {ALPHABET} alphabet - Alphabet of the column\n * @param {PolymerType} polymerType - Polymer type\n * @param {Array} roles - Optional per-position NucleotideRole tags. When set, RNA assembly\n * uses per-position sugars/phosphates from monomerSeq directly (HELM triples mode).\n * @return {MolfileWithMap} - Molfile V3000 + per-position monomer index map */\nexport function monomerSeqToMolfile(monomerSeq, monomersDict, alphabet, polymerType, roles) {\n if (monomerSeq.length === 0) {\n // throw new Error('monomerSeq is empty');\n return MolfileWithMap.createEmpty();\n }\n // Triples mode is on only when the caller flagged the row with roles\n // (built and validated by `buildRolesForHelmRna` in to-atomic-level.ts).\n // The roles array carries the per-position semantics — including\n // TERMINAL_5P / TERMINAL_3P for non-canonical chain ends — so we don't\n // re-validate the length here.\n const triplesMode = polymerType === \"RNA\" /* HELM_POLYMER_TYPE.RNA */ && !!roles &&\n roles.length === monomerSeq.length;\n // define atom and bond counts, taking into account the bond type\n const { atomCount, bondCount, needsCapping } = getResultingAtomBondCounts(monomerSeq, monomersDict, alphabet, polymerType, triplesMode, roles);\n // create arrays to store lines of the resulting molfile\n const molfileAtomBlock = new Array(atomCount);\n const molfileBondBlock = new Array(bondCount);\n let addMonomerToMolblock;\n let sugar = null;\n let phosphate = null;\n if (polymerType === \"PEPTIDE\" /* HELM_POLYMER_TYPE.PEPTIDE */)\n addMonomerToMolblock = addAminoAcidToMolblock;\n else { // nucleotides\n addMonomerToMolblock = addNucleotideToMolblock;\n // Default sugar/phosphate are only consulted in bases-only mode. In\n // triples mode, every nucleotide carries its own.\n if (!triplesMode) {\n sugar = (alphabet === ALPHABET.DNA) ? getMolGraph(monomersDict, C.DEOXYRIBOSE) : getMolGraph(monomersDict, C.RIBOSE);\n phosphate = getMolGraph(monomersDict, C.PHOSPHATE);\n }\n }\n const v = {\n i: 0,\n nodeShift: 0,\n bondShift: 0,\n backbonePositionShift: new Array(2).fill(0),\n branchPositionShift: new Array(2).fill(0),\n backboneAttachNode: 0,\n branchAttachNode: 0,\n flipFactor: 1,\n };\n const LC = {\n sugar: sugar,\n phosphate: phosphate,\n // In triples mode, the \"logical\" sequence length is the nucleotide count.\n seqLength: triplesMode ? Math.ceil(monomerSeq.length / 3) : monomerSeq.length,\n atomCount: atomCount,\n bondCount: bondCount,\n };\n const monomers = new MonomerMap();\n const steabsCollection = [];\n let nAtoms = 0;\n let lastMonomerCappingAtom = undefined;\n if (triplesMode) {\n runTriplesAssembly(monomerSeq, roles, monomersDict, molfileAtomBlock, molfileBondBlock, v, LC, monomers, steabsCollection, (a) => { nAtoms += a; }, () => nAtoms);\n }\n else {\n for (v.i = 0; v.i < LC.seqLength; ++v.i) {\n const seqMonomer = monomerSeq[v.i];\n if (seqMonomer.symbol === GAP_SYMBOL)\n continue;\n const monomer = getMolGraph(monomersDict, { symbol: seqMonomer.symbol, polymerType: helmTypeToPolymerType(seqMonomer.biotype) });\n lastMonomerCappingAtom = monomer.terminalR2Atom;\n const mAtomFirst = v.nodeShift;\n const mBondFirst = v.bondShift;\n addMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v, LC);\n //adding stereo atoms to array for further STEABS block generation\n monomer.stereoAtoms?.forEach((i) => steabsCollection.push(i + nAtoms));\n nAtoms += monomer.atoms.x.length;\n const mAtomCount = v.nodeShift - mAtomFirst;\n const mAtomList = new Array(mAtomCount);\n for (let maI = 0; maI < mAtomCount; ++maI)\n mAtomList[maI] = mAtomFirst + maI;\n const mBondCount = v.bondShift - mBondFirst;\n const mBondList = new Array(mBondCount);\n for (let mbI = 0; mbI < mBondCount; ++mbI)\n mBondList[mbI] = mBondFirst + mbI;\n monomers.set(v.i, {\n biotype: seqMonomer.biotype,\n symbol: seqMonomer.symbol,\n atoms: mAtomList, bonds: mBondList\n });\n }\n }\n // if the last monomer needs to be capped, add the terminal OH to the resulting molfile\n if (needsCapping)\n capResultingMolblock(molfileAtomBlock, molfileBondBlock, v, LC, lastMonomerCappingAtom ?? C.OXYGEN);\n const molfileCountsLine = C.V3K_BEGIN_COUNTS_LINE + atomCount + ' ' + bondCount + C.V3K_COUNTS_LINE_ENDING;\n // todo: possible optimization may be achieved by replacing .join('') with +=\n // since counterintuitively joining an array into a new string is reportedly\n // slower than using += as below\n let result = '';\n result += C.V3K_HEADER_FIRST_LINE;\n result += C.V3K_HEADER_SECOND_LINE;\n result += C.V3K_BEGIN_CTAB_BLOCK;\n result += molfileCountsLine;\n result += C.V3K_BEGIN_ATOM_BLOCK;\n result += molfileAtomBlock.join('');\n result += C.V3K_END_ATOM_BLOCK;\n result += C.V3K_BEGIN_BOND_BLOCK;\n result += molfileBondBlock.join('');\n result += C.V3K_END_BOND_BLOCK;\n if (steabsCollection.length > 0)\n result += getCollectionBlock(steabsCollection);\n result += C.V3K_END_CTAB_BLOCK;\n result += C.V3K_END;\n // return molfileParts.join('');\n return { molfile: result, monomers: monomers };\n}\nfunction getCollectionBlock(collection) {\n //one row in STEABS block can be no longer than 80 symbols\n //maxSymbols = 80 symbols minus ' -\\n' (4 symbols)\n const maxSymbols = 76;\n const rowsArray = [];\n let newCollectionRow = `M V30 MDLV30/STEABS ATOMS=(${collection.length}`;\n for (let i = 0; i < collection.length; i++) {\n const updatedRow = `${newCollectionRow} ${collection[i]}`;\n if (updatedRow.length > maxSymbols) {\n rowsArray.push(`${newCollectionRow} -\\n`);\n newCollectionRow = `M V30 ${collection[i]}`;\n }\n else\n newCollectionRow = updatedRow;\n //in case last atom was added - close the block\n if (i === collection.length - 1)\n rowsArray.push(`${newCollectionRow})\\n`);\n }\n return `M V30 BEGIN COLLECTION\\n${rowsArray.join('')}M V30 END COLLECTION\\n`;\n}\n/** Cap the resulting (after sewing up all the monomers) molfile with 'O'\n * @param {string[]} molfileAtomBlock - Array of lines of the resulting molfile atom block\n * @param {string[]} molfileBondBlock - Array of lines of the resulting molfile bond block\n * @param {LoopVariables} v - Loop variables\n * @param {LoopConstants} LC - Loop constants*/\nfunction capResultingMolblock(molfileAtomBlock, molfileBondBlock, v, LC, cappingAtomType = C.OXYGEN) {\n // add terminal oxygen\n const atomIdx = v.nodeShift + 1;\n molfileAtomBlock[LC.atomCount] = C.V3K_BEGIN_DATA_LINE + atomIdx + ' ' +\n (cappingAtomType ?? C.OXYGEN) + ' ' + keepPrecision(v.backbonePositionShift[0]) + ' ' +\n v.flipFactor * keepPrecision(v.backbonePositionShift[1]) + ' ' + '0.000000 0' + '\\n';\n // add terminal bond\n const firstAtom = v.backboneAttachNode;\n const secondAtom = atomIdx;\n molfileBondBlock[LC.bondCount] = C.V3K_BEGIN_DATA_LINE + v.bondShift + ' ' +\n 1 + ' ' + firstAtom + ' ' + secondAtom + '\\n';\n}\nfunction addAminoAcidToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v) {\n v.flipFactor = (-1) ** (v.i % 2); // to flip every even monomer over OX\n addBackboneMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v);\n}\nfunction addBackboneMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v) {\n // todo: remove these comments to the docstrings of the corr. functions\n // construnct the lines of V3K molfile atom block\n fillAtomLines(monomer, molfileAtomBlock, v);\n // construct the lines of V3K molfile bond block\n fillBondLines(monomer, molfileBondBlock, v);\n // peptide bond\n fillChainExtendingBond(monomer, molfileBondBlock, v);\n // update branch variables if necessary\n if (monomer.meta.branchShift !== null && monomer.meta.terminalNodes.length > 2)\n updateBranchVariables(monomer, v);\n // update loop variables\n updateChainExtendingVariables(monomer, v);\n}\nfunction addNucleotideToMolblock(nucleobase, molfileAtomBlock, molfileBondBlock, v, LC) {\n // construnct the lines of V3K molfile atom block corresponding to phosphate\n // and sugar\n if (v.i === 0)\n addBackboneMonomerToMolblock(LC.sugar, molfileAtomBlock, molfileBondBlock, v);\n else {\n for (const monomer of [LC.phosphate, LC.sugar])\n addBackboneMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v);\n }\n addBranchMonomerToMolblock(nucleobase, molfileAtomBlock, molfileBondBlock, v);\n}\nfunction addBranchMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v) {\n fillBranchAtomLines(monomer, molfileAtomBlock, v);\n fillBondLines(monomer, molfileBondBlock, v);\n fillBackboneToBranchBond(monomer, molfileBondBlock, v);\n // C-N bond\n const bondIdx = v.bondShift;\n const firstAtom = v.branchAttachNode;\n const secondAtom = monomer.meta.terminalNodes[0] + v.nodeShift;\n molfileBondBlock[bondIdx - 1] = C.V3K_BEGIN_DATA_LINE + bondIdx + ' ' +\n 1 + ' ' + firstAtom + ' ' + secondAtom + '\\n';\n // update loop variables\n v.bondShift += monomer.bonds.atomPairs.length + 1;\n v.nodeShift += monomer.atoms.atomTypes.length;\n}\nfunction updateChainExtendingVariables(monomer, v) {\n v.backboneAttachNode = v.nodeShift + monomer.meta.terminalNodes[1];\n v.bondShift += monomer.bonds.atomPairs.length + 1;\n v.nodeShift += monomer.atoms.atomTypes.length;\n v.backbonePositionShift[0] += monomer.meta.backboneShift?.[0] ?? 0; // todo: non-null check\n v.backbonePositionShift[1] += v.flipFactor * (monomer.meta.backboneShift?.[1] ?? 0);\n}\nfunction updateBranchVariables(monomer, v) {\n v.branchAttachNode = v.nodeShift + monomer.meta.terminalNodes[2];\n for (let i = 0; i < 2; ++i)\n v.branchPositionShift[i] = v.backbonePositionShift[i] + monomer.meta.branchShift[i];\n}\nfunction fillAtomLines(monomer, molfileAtomBlock, v) {\n for (let j = 0; j < monomer.atoms.atomTypes.length; ++j) {\n const atomIdx = v.nodeShift + j + 1;\n molfileAtomBlock[v.nodeShift + j] = C.V3K_BEGIN_DATA_LINE + atomIdx + ' ' +\n monomer.atoms.atomTypes[j] + ' ' +\n keepPrecision(v.backbonePositionShift[0] + monomer.atoms.x[j]) + ' ' +\n keepPrecision(v.backbonePositionShift[1] + v.flipFactor * monomer.atoms.y[j]) +\n ' ' + monomer.atoms.kwargs[j];\n }\n}\n// todo: remove as quickfix\nfunction fillBranchAtomLines(monomer, molfileAtomBlock, v) {\n for (let j = 0; j < monomer.atoms.atomTypes.length; ++j) {\n const atomIdx = v.nodeShift + j + 1;\n molfileAtomBlock[v.nodeShift + j] = C.V3K_BEGIN_DATA_LINE + atomIdx + ' ' +\n monomer.atoms.atomTypes[j] + ' ' +\n keepPrecision(v.branchPositionShift[0] + monomer.atoms.x[j]) + ' ' +\n keepPrecision(v.branchPositionShift[1] + v.flipFactor * monomer.atoms.y[j]) +\n ' ' + monomer.atoms.kwargs[j];\n }\n}\nfunction fillBondLines(monomer, molfileBondBlock, v) {\n // construct the lines of V3K molfile bond block\n for (let j = 0; j < monomer.bonds.atomPairs.length; ++j) {\n const bondIdx = v.bondShift + j + 1;\n const firstAtom = monomer.bonds.atomPairs[j][0] + v.nodeShift;\n const secondAtom = monomer.bonds.atomPairs[j][1] + v.nodeShift;\n let bondCfg = '';\n if (monomer.bonds.bondConfiguration.has(j)) {\n // flip orientation when necessary\n let orientation = monomer.bonds.bondConfiguration.get(j);\n if (v.flipFactor < 0)\n orientation = (orientation === 1) ? 3 : 1;\n bondCfg = ' CFG=' + orientation;\n }\n const kwargs = monomer.bonds.kwargs.has(j) ?\n ' ' + monomer.bonds.kwargs.get(j) : '';\n molfileBondBlock[v.bondShift + j] = C.V3K_BEGIN_DATA_LINE + bondIdx + ' ' +\n monomer.bonds.bondTypes[j] + ' ' +\n firstAtom + ' ' + secondAtom + bondCfg + kwargs + '\\n';\n }\n}\nfunction fillChainExtendingBond(monomer, molfileBondBlock, v) {\n if (v.backboneAttachNode !== 0) {\n const bondIdx = v.bondShift;\n const firstAtom = v.backboneAttachNode;\n const secondAtom = monomer.meta.terminalNodes[0] + v.nodeShift;\n molfileBondBlock[v.bondShift - 1] = C.V3K_BEGIN_DATA_LINE + bondIdx + ' ' +\n 1 + ' ' + firstAtom + ' ' + secondAtom + '\\n';\n }\n}\n// todo: remove\nfunction fillBackboneToBranchBond(branchMonomer, molfileBondBlock, v) {\n const bondIdx = v.bondShift;\n const firstAtom = v.branchAttachNode;\n const secondAtom = branchMonomer.meta.terminalNodes[0] + v.nodeShift;\n molfileBondBlock[bondIdx - 1] = C.V3K_BEGIN_DATA_LINE + bondIdx + ' ' +\n 1 + ' ' + firstAtom + ' ' + secondAtom + '\\n';\n}\n/** Compute the atom/bond counts for the resulting molfile, depending on the\n * type of polymer (peptide/nucleotide)\n * @param {ISeqMonomer[]} monomerSeq - the sequence of monomers\n * @param {MonomerMolGraphMap} monomersDict - the dictionary of monomers\n * @param {ALPHABET} alphabet - the alphabet of the monomers\n * @param {PolymerType} polymerType - the type of polymer\n * @param {boolean} triplesMode - true when monomerSeq is a flat list of HELM RNA triples\n * @param {Array} roles - per-position role tags (only meaningful when triplesMode is true)\n * @return {Object} the atom/bond counts plus needsCapping flag */\nfunction getResultingAtomBondCounts(monomerSeq, monomersDict, alphabet, polymerType, triplesMode, roles) {\n let atomCount = 0;\n let bondCount = 0;\n let monomerCount = 0;\n let needsCapping = true;\n let lastMonomerGraph = null;\n let lastPhosphateGraph = null;\n // sum up all the atoms/nodes provided by the sequence\n for (let i = 0; i < monomerSeq.length; ++i) {\n const seqMonomer = monomerSeq[i];\n if (seqMonomer.symbol === GAP_SYMBOL)\n continue; // Skip for gap/empty monomer in MSA\n if (seqMonomer.symbol == '*')\n throw new Error(`Gap canonical symbol is '', not '*`);\n lastMonomerGraph = getMolGraph(monomersDict, { symbol: seqMonomer.symbol, polymerType: helmTypeToPolymerType(seqMonomer.biotype) });\n atomCount += lastMonomerGraph.atoms.x.length;\n bondCount += lastMonomerGraph.bonds.bondTypes.length;\n monomerCount++;\n // In triples mode, every 3rd entry (index 2 mod 3) is a phosphate. Track\n // the LAST one — its atoms/bonds are dropped at the 3'-terminus.\n if (triplesMode && i % 3 === 2)\n lastPhosphateGraph = lastMonomerGraph;\n }\n // add extra values depending on the polymer type\n if (polymerType === \"PEPTIDE\" /* HELM_POLYMER_TYPE.PEPTIDE */) {\n // add the rightmost/terminating cap group 'OH' (i.e. 'O')\n atomCount += 1;\n // add chain-extending bonds (C-NH per each monomer pair and terminal C-OH)\n bondCount += monomerCount;\n // if the last monomer is something like NH2, which only has R1, there is no need to cap it\n // although, this should never happen, but hey... in other bits of code, there is a chunk that adds pseudo-R2 as hydrogen\n // we should also check, if the R2 of the last monomer is not hydrogen, that case should also be omitted\n if (monomerCount > 0) {\n if ((lastMonomerGraph?.meta?.rNodes?.length ?? 0) < 2 || lastMonomerGraph?.terminalR2Atom?.toLowerCase() === C.HYDROGEN.toLowerCase()) {\n needsCapping = false;\n atomCount -= 1; // remove the last atom (the terminal 'O')\n bondCount -= 1; // remove the last bond (the terminal C-OH)\n }\n }\n }\n else if (triplesMode) { // nucleotides — HELM triples (per-position sugar/base/phosphate)\n void lastPhosphateGraph; // kept for symmetry; trailing P is now retained when HELM wrote it\n // Per-monomer-loop already summed sugars + bases + phosphates for every\n // entry in monomerSeq (terminals included). Reservation: each backbone\n // emit (sugar / phosphate / terminal) reserves +1 bond slot for the\n // chain-extending bond, each branch (base) reserves +1 for its branch\n // bond. Total reservations = monomerCount.\n bondCount += monomerCount;\n // OH cap atom rides on the 3'-end. Skip it when HELM specified a\n // 3'-terminal modifier (e.g. GalNAc) that IS the chain end.\n const has3pTerm = !!roles && roles.length > 0 &&\n roles[roles.length - 1] === NucleotideRole.TERMINAL_3P;\n if (has3pTerm)\n needsCapping = false;\n else\n atomCount += 1; // OH cap atom (rides on trailing P or on last sugar's R2)\n }\n else { // nucleotides — bases-only legacy path with default sugar/phosphate\n const sugar = (alphabet === ALPHABET.DNA) ?\n getMolGraph(monomersDict, C.DEOXYRIBOSE) : getMolGraph(monomersDict, C.RIBOSE);\n const phosphate = getMolGraph(monomersDict, C.PHOSPHATE);\n // add phosphate per each pair of nucleobase symbols\n atomCount += (monomerSeq.length - 1) * phosphate.atoms.x.length;\n // add sugar per each nucleobase symbol\n atomCount += monomerSeq.length * sugar.atoms.x.length;\n // add the leftmost cap group 'OH' (i.e. 'O')\n atomCount += 1;\n // add bonds from phosphate monomers\n bondCount += (monomerSeq.length - 1) * phosphate.bonds.bondTypes.length;\n // add bonds from sugar monomers\n bondCount += monomerSeq.length * sugar.bonds.bondTypes.length;\n // exclude the first chain-extending bond O-P (absent, no 'leftmost' phosphate)\n bondCount -= 1;\n // add chain-extending and branch bonds (O-P, C-O and C-N per each nucleotide)\n bondCount += monomerSeq.length * 3;\n }\n return { atomCount, bondCount, needsCapping };\n}\n// Triples-mode RNA assembly. Iterates by NUCLEOTIDE over the row's \"core\"\n// positions (those tagged SUGAR/BASE/PHOSPHATE), and emits at most one\n// TERMINAL_5P at the head and one TERMINAL_3P at the tail.\n//\n// Layout permutations the function handles:\n// roles = [SUGAR, BASE, PHOSPHATE, ...] // standard RNA\n// roles = [..., SUGAR, BASE] // no trailing P\n// roles = [TERMINAL_5P, SUGAR, BASE, PHOSPHATE, ...] // 5' modifier\n// roles = [..., SUGAR, BASE, TERMINAL_3P] // 3' modifier (replaces last P)\n// roles = [TERMINAL_5P, ..., TERMINAL_3P] // both\n//\n// When a TERMINAL_3P is present the OH cap MUST be skipped (the last\n// monomer is the chain end, period); the caller takes responsibility for\n// needsCapping=false in `getResultingAtomBondCounts`.\nfunction runTriplesAssembly(monomerSeq, roles, monomersDict, molfileAtomBlock, molfileBondBlock, v, LC, monomers, steabsCollection, addAtoms, getAtoms) {\n const has5pTerm = roles.length > 0 && roles[0] === NucleotideRole.TERMINAL_5P;\n const has3pTerm = roles.length > 0 && roles[roles.length - 1] === NucleotideRole.TERMINAL_3P;\n const coreStart = has5pTerm ? 1 : 0;\n const coreEnd = has3pTerm ? roles.length - 1 : roles.length;\n const coreLen = coreEnd - coreStart;\n const N = Math.ceil(coreLen / 3); // nucleotide count in the core\n // coreLen === 3N → trailing P present. coreLen === 3N - 1 → no trailing P.\n const hasTrailingP = coreLen === 3 * N;\n // Helper: emit one monomer as a backbone unit and record its atom/bond\n // ranges in the per-row monomer map.\n const emitBackbone = (sm, mapKey) => {\n const mG = getMolGraph(monomersDict, { symbol: sm.symbol, polymerType: helmTypeToPolymerType(sm.biotype) });\n const aFirst = v.nodeShift;\n const bFirst = v.bondShift;\n addBackboneMonomerToMolblock(mG, molfileAtomBlock, molfileBondBlock, v);\n mG.stereoAtoms?.forEach((i) => steabsCollection.push(i + getAtoms()));\n addAtoms(mG.atoms.x.length);\n const aList = [];\n for (let a = aFirst; a < v.nodeShift; ++a)\n aList.push(a);\n const bList = [];\n for (let b = bFirst; b < v.bondShift; ++b)\n bList.push(b);\n monomers.set(mapKey, { biotype: sm.biotype, symbol: sm.symbol, atoms: aList, bonds: bList });\n };\n // 1. 5'-end terminal modifier (e.g. Chol).\n if (has5pTerm) {\n v.i = 0;\n emitBackbone(monomerSeq[0], 0);\n }\n // 2. Core triples loop: each iteration emits [prev-P (if n>=1)] + sugar + base.\n for (let n = 0; n < N; ++n) {\n v.i = n + (has5pTerm ? 1 : 0); // keep v.i monotone across emits\n const sugarSeqIdx = coreStart + 3 * n;\n const baseSeqIdx = sugarSeqIdx + 1;\n const sugarSm = monomerSeq[sugarSeqIdx];\n const baseSm = monomerSeq[baseSeqIdx];\n const sugarG = getMolGraph(monomersDict, { symbol: sugarSm.symbol, polymerType: helmTypeToPolymerType(sugarSm.biotype) });\n const baseG = getMolGraph(monomersDict, { symbol: baseSm.symbol, polymerType: helmTypeToPolymerType(baseSm.biotype) });\n // Inter-nucleotide phosphate sits at coreStart + 3*(n-1) + 2 for n >= 1.\n if (n >= 1) {\n const prevPhosKey = coreStart + 3 * (n - 1) + 2;\n emitBackbone(monomerSeq[prevPhosKey], prevPhosKey);\n }\n // Sugar (backbone)\n const sugarAtomFirst = v.nodeShift;\n const sugarBondFirst = v.bondShift;\n addBackboneMonomerToMolblock(sugarG, molfileAtomBlock, molfileBondBlock, v);\n sugarG.stereoAtoms?.forEach((i) => steabsCollection.push(i + getAtoms()));\n addAtoms(sugarG.atoms.x.length);\n const sAList = [];\n for (let a = sugarAtomFirst; a < v.nodeShift; ++a)\n sAList.push(a);\n const sBList = [];\n for (let b = sugarBondFirst; b < v.bondShift; ++b)\n sBList.push(b);\n monomers.set(sugarSeqIdx, {\n biotype: sugarSm.biotype, symbol: sugarSm.symbol,\n atoms: sAList, bonds: sBList,\n });\n // Base (branch)\n const baseAtomFirst = v.nodeShift;\n const baseBondFirst = v.bondShift;\n addBranchMonomerToMolblock(baseG, molfileAtomBlock, molfileBondBlock, v);\n baseG.stereoAtoms?.forEach((i) => steabsCollection.push(i + getAtoms()));\n addAtoms(baseG.atoms.x.length);\n const bAList = [];\n for (let a = baseAtomFirst; a < v.nodeShift; ++a)\n bAList.push(a);\n const bBList = [];\n for (let b = baseBondFirst; b < v.bondShift; ++b)\n bBList.push(b);\n monomers.set(baseSeqIdx, {\n biotype: baseSm.biotype, symbol: baseSm.symbol,\n atoms: bAList, bonds: bBList,\n });\n }\n // 3. Trailing phosphate (the LAST nucleotide's P) — only if HELM wrote\n // one AND there is no 3'-terminal modifier replacing it.\n if (hasTrailingP) {\n const lastPhosKey = coreStart + 3 * (N - 1) + 2;\n emitBackbone(monomerSeq[lastPhosKey], lastPhosKey);\n }\n // 4. 3'-end terminal modifier (e.g. GalNAc).\n if (has3pTerm) {\n v.i = N + (has5pTerm ? 1 : 0);\n emitBackbone(monomerSeq[roles.length - 1], roles.length - 1);\n }\n}\n/** Keep precision upon floating point operations over atom coordinates\n * @param {number}x - the floating point number\n * @return {number} - the floating point number with the same precision\n */\nexport function keepPrecision(x) {\n return Math.round(C.PRECISION_FACTOR * x) / C.PRECISION_FACTOR;\n}\n//# sourceMappingURL=to-atomic-level-utils.js.map","import { monomerSeqToMolfile } from './to-atomic-level-utils';\nonmessage = (event) => {\n const { seqList, rolesList, monomersDict, alphabet, polymerType, start, end } = event.data;\n const resMolList = new Array(end - start);\n const molfileWarningList = new Array(0);\n for (let rowI = start; rowI < end; ++rowI) {\n try {\n const seq = seqList[rowI];\n const roles = rolesList ? rolesList[rowI] : undefined;\n resMolList[rowI - start] = monomerSeqToMolfile(seq, monomersDict, alphabet, polymerType, roles);\n }\n catch (err) {\n const errMsg = err instanceof Error ? err.message : err.toString();\n const msg = `Cannot get molfile of row #${rowI}: ${errMsg}.`;\n molfileWarningList.push(msg);\n }\n }\n postMessage({ molfiles: resMolList, warnings: molfileWarningList });\n};\n//# sourceMappingURL=seq-to-molfile-worker.js.map"],"names":["monomerWorksConsts","V2K_RGP_SHIFT","V2K_RGP_LINE","V2K_A_LINE","V3K_COUNTS_SHIFT","V3K_IDX_SHIFT","V3K_HEADER_FIRST_LINE","V3K_HEADER_SECOND_LINE","V3K_BEGIN_CTAB_BLOCK","V3K_END_CTAB_BLOCK","V3K_BEGIN_COUNTS_LINE","V3K_COUNTS_LINE_ENDING","V3K_BEGIN_ATOM_BLOCK","V3K_END_ATOM_BLOCK","V3K_BEGIN_BOND_BLOCK","V3K_END_BOND_BLOCK","V3K_BOND_CONFIG","V3K_BEGIN_DATA_LINE","V3K_END","PRECISION_FACTOR","DEOXYRIBOSE","polymerType","symbol","RIBOSE","PHOSPHATE","OXYGEN","HYDROGEN","getMolGraph","dict","libKey","NucleotideRole","NOTATION","ALPHABET","TAGS","MonomerMap","Map","constructor","entries","super","MolfileWithMap","molfile","monomers","this","createEmpty","RegExp","CandidateType","name","alphabet","cutoff","Alphabets","fasta","peptide","Set","dna","rna","HelmTypes","helmTypeToPolymerType","helmType","BASE","SUGAR","LINKER","NUCLEOTIDE","AA","CHEM","BLOB","console","warn","monomerSeqToMolfile","monomerSeq","monomersDict","roles","length","triplesMode","atomCount","bondCount","needsCapping","monomerCount","lastMonomerGraph","lastPhosphateGraph","i","seqMonomer","Error","biotype","atoms","x","bonds","bondTypes","meta","rNodes","terminalR2Atom","toLowerCase","TERMINAL_3P","sugar","DNA","phosphate","getResultingAtomBondCounts","molfileAtomBlock","Array","molfileBondBlock","addMonomerToMolblock","addAminoAcidToMolblock","addNucleotideToMolblock","v","nodeShift","bondShift","backbonePositionShift","fill","branchPositionShift","backboneAttachNode","branchAttachNode","flipFactor","LC","seqLength","Math","ceil","steabsCollection","lastMonomerCappingAtom","nAtoms","addAtoms","getAtoms","has5pTerm","TERMINAL_5P","has3pTerm","coreStart","coreLen","N","hasTrailingP","emitBackbone","sm","mapKey","mG","aFirst","bFirst","addBackboneMonomerToMolblock","stereoAtoms","forEach","push","aList","a","bList","b","set","n","sugarSeqIdx","baseSeqIdx","sugarSm","baseSm","sugarG","baseG","prevPhosKey","sugarAtomFirst","sugarBondFirst","sAList","sBList","baseAtomFirst","baseBondFirst","addBranchMonomerToMolblock","bAList","bBList","lastPhosKey","runTriplesAssembly","monomer","mAtomFirst","mBondFirst","mAtomCount","mAtomList","maI","mBondCount","mBondList","mbI","cappingAtomType","atomIdx","keepPrecision","firstAtom","secondAtom","capResultingMolblock","molfileCountsLine","result","join","collection","rowsArray","newCollectionRow","updatedRow","getCollectionBlock","j","atomTypes","y","kwargs","fillAtomLines","fillBondLines","bondIdx","terminalNodes","fillChainExtendingBond","branchShift","updateBranchVariables","atomPairs","backboneShift","updateChainExtendingVariables","nucleobase","fillBranchAtomLines","branchMonomer","fillBackboneToBranchBond","bondCfg","bondConfiguration","has","orientation","get","round","PT","RNA","FASTA","SEPARATOR","HELM","BILN","onmessage","event","seqList","rolesList","start","end","data","resMolList","molfileWarningList","rowI","seq","undefined","err","msg","message","toString","postMessage","molfiles","warnings"],"sourceRoot":""}