@sjcrh/proteinpaint-client 2.170.21 → 2.170.23

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 (529) hide show
  1. package/dist/{2dmaf-E5HYTRL4.js → 2dmaf-K34DVHWJ.js} +7 -7
  2. package/dist/{AIProjectAdmin-IRL7HHZH.js → AIProjectAdmin-OX7PPAXW.js} +8 -8
  3. package/dist/{AppHeader-IRDFPBAQ.js → AppHeader-JUBKPSEB.js} +15 -15
  4. package/dist/{BoxPlot-QABZS7Q5.js → BoxPlot-KM3EW2SS.js} +7 -7
  5. package/dist/{CorrelationVolcano-E26KZ335.js → CorrelationVolcano-AOD672SJ.js} +7 -7
  6. package/dist/{DifferentialAnalysis-DAWKCJVG.js → DifferentialAnalysis-VTWIRFQG.js} +9 -9
  7. package/dist/{Disco-63UZHXXL.js → Disco-ZD3QJDWR.js} +9 -9
  8. package/dist/{Disco.UI-F2X3RUBK.js → Disco.UI-ESSJJ667.js} +11 -11
  9. package/dist/{DziViewer-MIBKWCRR.js → DziViewer-3GAMDKPH.js} +2 -2
  10. package/dist/{GB-2CLFK735.js → GB-AHN7GT3M.js} +10 -10
  11. package/dist/{GB-2CLFK735.js.map → GB-AHN7GT3M.js.map} +2 -2
  12. package/dist/{HicApp-F3Y2WFLI.js → HicApp-555HNG3L.js} +9 -9
  13. package/dist/{NumBinaryEditor-WZZC2KPZ.js → NumBinaryEditor-4FQYQRMK.js} +7 -7
  14. package/dist/{NumBinaryEditor.unit.spec-SA7JSAIQ.js → NumBinaryEditor.unit.spec-7GAPTGZ2.js} +9 -9
  15. package/dist/{NumContEditor-LMZDNT5K.js → NumContEditor-LWNWFSCT.js} +7 -7
  16. package/dist/{NumContEditor.unit.spec-3HF3J7ML.js → NumContEditor.unit.spec-OA433BZ5.js} +8 -8
  17. package/dist/{NumCustomBinEditor-4XX4O6IF.js → NumCustomBinEditor-XRRK2ZFR.js} +8 -8
  18. package/dist/{NumCustomBinEditor.unit.spec-U2QPRKPZ.js → NumCustomBinEditor.unit.spec-DDHJY4V4.js} +8 -8
  19. package/dist/{NumDiscreteEditor-WWPUE3FP.js → NumDiscreteEditor-DD6SKXHS.js} +9 -9
  20. package/dist/{NumDiscreteEditor.unit.spec-6SM2QXEV.js → NumDiscreteEditor.unit.spec-Z7N3I2HN.js} +8 -8
  21. package/dist/{NumRegularBinEditor-TH3RBZSY.js → NumRegularBinEditor-OOMRRNCC.js} +8 -8
  22. package/dist/{NumRegularBinEditor.unit.spec-UGE3QUWX.js → NumRegularBinEditor.unit.spec-PUFXJTKW.js} +8 -8
  23. package/dist/{NumSplineEditor-YDPRBQOM.js → NumSplineEditor-RRMQACCX.js} +7 -7
  24. package/dist/{NumSplineEditor.unit.spec-XWYY2NRC.js → NumSplineEditor.unit.spec-DCPVD2O3.js} +9 -9
  25. package/dist/{NumericDensity-2NW3AW6Z.js → NumericDensity-YD6U6T2D.js} +7 -7
  26. package/dist/{NumericDensity.unit.spec-ZAZM2SFR.js → NumericDensity.unit.spec-26QLWMWA.js} +7 -7
  27. package/dist/{NumericHandler-F56UMRAR.js → NumericHandler-ANYWWNOB.js} +8 -8
  28. package/dist/{NumericHandler.unit.spec-QQ6BYTAF.js → NumericHandler.unit.spec-D2ZDNPN5.js} +9 -9
  29. package/dist/{SC-AEMJB5Q6.js → SC-TE7VABQU.js} +7 -7
  30. package/dist/{Volcano-LGQRKYH3.js → Volcano-XQ2H7UYY.js} +8 -8
  31. package/dist/{WSIViewer-NNW5SMHT.js → WSIViewer-DNKMSHLX.js} +7 -7
  32. package/dist/{WsiSamplesPlot-AXO4563E.js → WsiSamplesPlot-VJYDVYX3.js} +8 -8
  33. package/dist/{adSandbox-4AOK2PIZ.js → adSandbox-XAZZ6ZWL.js} +8 -8
  34. package/dist/{alphaGenome-4V53PTIP.js → alphaGenome-XELMXZYP.js} +7 -7
  35. package/dist/{app-C4XKYGIR.js → app-6DWGFTEB.js} +18 -18
  36. package/dist/{app-QNI5FPKL.js → app-QNBZNQHD.js} +7 -7
  37. package/dist/app.js +13 -13
  38. package/dist/{bam-UO2NKEZU.js → bam-PZ5MJVUJ.js} +9 -9
  39. package/dist/{barchart-CCKWJFW3.js → barchart-7NKVAMCT.js} +7 -7
  40. package/dist/{barchart.data-SUK3FVSI.js → barchart.data-XHQQSOBI.js} +7 -7
  41. package/dist/{barchart.events-WJLKUF2P.js → barchart.events-PN2DFSO6.js} +7 -7
  42. package/dist/{barchart.integration.spec-RI5GLTPZ.js → barchart.integration.spec-SPQHQ5RV.js} +16 -16
  43. package/dist/{block-CHK3JXWE.js → block-6XQF343G.js} +28 -28
  44. package/dist/{block.init-OHFYD2GC.js → block.init-GEPMVVIB.js} +8 -8
  45. package/dist/{block.mds.expressionrank-JOOWWSIZ.js → block.mds.expressionrank-U3DMFQUC.js} +9 -9
  46. package/dist/{block.mds.geneboxplot-KYOAH2FM.js → block.mds.geneboxplot-PZCQ4VR4.js} +8 -8
  47. package/dist/{block.mds.junction-C6BW4CGE.js → block.mds.junction-TYZVWU53.js} +14 -14
  48. package/dist/{block.mds.svcnv-5EJF42KE.js → block.mds.svcnv-CJCSFD4K.js} +21 -21
  49. package/dist/{block.svg-Q3CY6LKT.js → block.svg-OON2RGFH.js} +7 -7
  50. package/dist/{block.tk.aicheck-VQQU4H5R.js → block.tk.aicheck-Y27E6PN5.js} +7 -7
  51. package/dist/{block.tk.ase-GCQC4QDD.js → block.tk.ase-LAHASPSI.js} +9 -9
  52. package/dist/{block.tk.bam-RKYX5GER.js → block.tk.bam-QHN37XD4.js} +7 -7
  53. package/dist/{block.tk.bedgraphdot-EUF62NFN.js → block.tk.bedgraphdot-QPDKUOS4.js} +7 -7
  54. package/dist/{block.tk.bigwig.ui-5TBNTISB.js → block.tk.bigwig.ui-2MR2L3JB.js} +7 -7
  55. package/dist/{block.tk.hicstraw-IHYYKSOR.js → block.tk.hicstraw-7IWJRJTN.js} +8 -8
  56. package/dist/{block.tk.junction-4BFR7AFT.js → block.tk.junction-2ZN2FSJ7.js} +11 -11
  57. package/dist/{block.tk.junction.textmatrixui-AKUCCZEF.js → block.tk.junction.textmatrixui-CPQ3V4YE.js} +8 -8
  58. package/dist/{block.tk.ld-2YGP5V6I.js → block.tk.ld-2HDMWZZF.js} +10 -10
  59. package/dist/{block.tk.menu-N4BI5ZCU.js → block.tk.menu-55F25LG4.js} +7 -7
  60. package/dist/{block.tk.pgv-YM7L6DHK.js → block.tk.pgv-QSZCHGVE.js} +10 -10
  61. package/dist/{brainImaging-F7RM7ORO.js → brainImaging-FWH2D2DU.js} +7 -7
  62. package/dist/{chat-EA2TOYGY.js → chat-3XZGIAON.js} +9 -9
  63. package/dist/{chunk-MWGHZ2OR.js → chunk-2Y7E546M.js} +2 -2
  64. package/dist/{chunk-CA5LLXPV.js → chunk-3KMTDBZT.js} +32 -32
  65. package/dist/{chunk-Q7AZKMBU.js → chunk-55UDBBL6.js} +4 -4
  66. package/dist/{chunk-YEU7WXWS.js → chunk-57TWICXZ.js} +2 -2
  67. package/dist/{chunk-JUT2O3BR.js → chunk-5FTNFH4T.js} +2 -2
  68. package/dist/{chunk-RACPPJ6V.js → chunk-5SFP5RNN.js} +3 -3
  69. package/dist/{chunk-UMD7KT6T.js → chunk-67DWCIOA.js} +5 -5
  70. package/dist/{chunk-4QAUULAQ.js → chunk-6JFZ55C7.js} +9 -9
  71. package/dist/{chunk-FOD4UOVS.js → chunk-7BXRTSFU.js} +7 -7
  72. package/dist/{chunk-JFWEYCVW.js → chunk-7CDMJ2DF.js} +2 -2
  73. package/dist/{chunk-W55E4RPB.js → chunk-7DFVPWFW.js} +9 -9
  74. package/dist/{chunk-EHBAKRMC.js → chunk-7E5BGMUZ.js} +2 -2
  75. package/dist/{chunk-CY52TN75.js → chunk-7UR62HW6.js} +2 -2
  76. package/dist/{chunk-GHOILSV3.js → chunk-7Y2A4FZS.js} +2 -2
  77. package/dist/{chunk-QIE5DTBW.js → chunk-ABMFFNR4.js} +2 -2
  78. package/dist/{chunk-QIE5DTBW.js.map → chunk-ABMFFNR4.js.map} +2 -2
  79. package/dist/{chunk-GVWGD5I3.js → chunk-ADLA3PJ4.js} +2 -2
  80. package/dist/{chunk-C5YNJFLG.js → chunk-ASKMNRM2.js} +3 -3
  81. package/dist/{chunk-VO5VI2LE.js → chunk-AVOKYZGR.js} +2 -2
  82. package/dist/{chunk-PJNCR2WK.js → chunk-BELOVMGO.js} +5 -5
  83. package/dist/{chunk-Y4B6ALEU.js → chunk-BJORP6HK.js} +11 -11
  84. package/dist/{chunk-NLBQ2GUL.js → chunk-FLRBOZQC.js} +13 -13
  85. package/dist/{chunk-37ZWUZ3W.js → chunk-FVJDNXNU.js} +5 -5
  86. package/dist/{chunk-RJVNGG6X.js → chunk-FWHKDQVI.js} +6 -6
  87. package/dist/{chunk-GYKTYGJQ.js → chunk-G54EMJTA.js} +2 -2
  88. package/dist/{chunk-UBXN6Z7C.js → chunk-GVYOZF7N.js} +2 -2
  89. package/dist/{chunk-IMCHIQT2.js → chunk-HTNDG4VX.js} +3 -3
  90. package/dist/{chunk-CTRQJ6M4.js → chunk-IKXK6WW5.js} +91 -97
  91. package/dist/chunk-IKXK6WW5.js.map +7 -0
  92. package/dist/{chunk-VGLPN6PS.js → chunk-KZBB7S6A.js} +8 -9
  93. package/dist/chunk-KZBB7S6A.js.map +7 -0
  94. package/dist/{chunk-MPDW5RZN.js → chunk-LJG5K5IY.js} +5 -5
  95. package/dist/{chunk-JZJJOLHH.js → chunk-LRFMJ4EE.js} +5 -5
  96. package/dist/{chunk-SGCTGCO2.js → chunk-LYQPQQ6A.js} +6 -6
  97. package/dist/{chunk-XENPVHIO.js → chunk-M7MBFGEA.js} +2 -2
  98. package/dist/{chunk-NZR3WNO6.js → chunk-N4XAZC5O.js} +3 -3
  99. package/dist/{chunk-ZB2OEEK2.js → chunk-OLMWMYZM.js} +3 -3
  100. package/dist/{chunk-HWBM5EIT.js → chunk-OM5BLCRN.js} +9 -9
  101. package/dist/{chunk-LMGPUDWT.js → chunk-PNNA43ZG.js} +6 -6
  102. package/dist/chunk-PZ7WCWYR.js +168 -0
  103. package/dist/{chunk-NJNNPYMC.js → chunk-Q2PPO2QT.js} +2 -2
  104. package/dist/{chunk-O7P4EZHA.js → chunk-QXGUNKDA.js} +3 -3
  105. package/dist/{chunk-BRKQSTPH.js → chunk-RNZFN7TZ.js} +3 -3
  106. package/dist/{chunk-PRPEYNVE.js → chunk-RVNIY4SD.js} +2 -2
  107. package/dist/{chunk-L2XKBMRK.js → chunk-RVZ6M5MM.js} +8 -8
  108. package/dist/{chunk-UWYO26OF.js → chunk-RZWCVHII.js} +17 -6
  109. package/dist/{chunk-UWYO26OF.js.map → chunk-RZWCVHII.js.map} +2 -2
  110. package/dist/{chunk-XZTUXLC6.js → chunk-TT37XSK5.js} +3 -3
  111. package/dist/{chunk-2KJMSFOW.js → chunk-TZ25ECOQ.js} +3 -2
  112. package/dist/chunk-TZ25ECOQ.js.map +7 -0
  113. package/dist/{chunk-JUAB6AWT.js → chunk-VMNJ3CBS.js} +2 -2
  114. package/dist/{chunk-CENQDG7A.js → chunk-VOUTHIB5.js} +4 -4
  115. package/dist/{chunk-CKY3ZZAO.js → chunk-VU5VYG3S.js} +5 -5
  116. package/dist/{chunk-FPT6OILW.js → chunk-W5IT2MO3.js} +18 -7
  117. package/dist/{chunk-FPT6OILW.js.map → chunk-W5IT2MO3.js.map} +2 -2
  118. package/dist/{chunk-PFBEIJLF.js → chunk-WQENZXSN.js} +2 -2
  119. package/dist/{chunk-HEDJB65N.js → chunk-WVKSA7YU.js} +4 -4
  120. package/dist/{chunk-EHM4V22E.js → chunk-X4GU2VKQ.js} +3 -3
  121. package/dist/{chunk-ULFFSC6N.js → chunk-XDBGOZED.js} +38 -38
  122. package/dist/{chunk-TINZX7UD.js → chunk-XJYLUSJH.js} +3 -3
  123. package/dist/{chunk-GS7QVATH.js → chunk-XNLOWBF6.js} +10 -10
  124. package/dist/{chunk-XG4HJBT5.js → chunk-XULJ2UUC.js} +2 -2
  125. package/dist/{chunk-ZQ5QFLEC.js → chunk-Y4QM3UWA.js} +2 -2
  126. package/dist/{chunk-S2HEJABN.js → chunk-YYWSZV5S.js} +3 -3
  127. package/dist/{chunk-EIBJYYWV.js → chunk-ZMYYCORH.js} +6 -6
  128. package/dist/{chunk-2XIEFQJ6.js → chunk-ZPYTB7CX.js} +8 -8
  129. package/dist/{condition-NEAL2DMW.js → condition-3IMVLHQL.js} +7 -7
  130. package/dist/{controls-VUR7TFLT.js → controls-GLYBFGRP.js} +7 -7
  131. package/dist/controls.btns-UXIUAMXI.js +9 -0
  132. package/dist/{controls.config-WX7Q5QB7.js → controls.config-AM4LK4IC.js} +7 -7
  133. package/dist/{correlation-VZFRAG7E.js → correlation-TT6KVP6F.js} +18 -18
  134. package/dist/{cuminc-GGM67RVU.js → cuminc-WZD56GIC.js} +7 -7
  135. package/dist/{cuminc.integration.spec-VDVRK32W.js → cuminc.integration.spec-CFZ4UO24.js} +16 -16
  136. package/dist/{customdata.inputui-TH3MOITU.js → customdata.inputui-TX6PV5YX.js} +7 -7
  137. package/dist/{dataDownload-C23I2HIR.js → dataDownload-24QHNCXE.js} +7 -7
  138. package/dist/{dataDownload.integration.spec-BZXVK7OR.js → dataDownload.integration.spec-ZRVUKWZG.js} +16 -16
  139. package/dist/{databrowser.ui-Z4KVSI5B.js → databrowser.ui-UARCBZGZ.js} +18 -18
  140. package/dist/{dictionary-IGN6YRUJ.js → dictionary-5E7CLLRU.js} +7 -7
  141. package/dist/{e2pca-X62QCCC2.js → e2pca-E3IC443X.js} +7 -7
  142. package/dist/{ep-6LFSB727.js → ep-Y5HJE5E6.js} +7 -7
  143. package/dist/{expclust.gdc.spec-2WVN7NXH.js → expclust.gdc.spec-CY34SALS.js} +16 -16
  144. package/dist/{facet-IQMRDCTJ.js → facet-6QNMIO6E.js} +7 -7
  145. package/dist/{frequencyChart-UXVZLE4B.js → frequencyChart-I3Q3QVY6.js} +13 -13
  146. package/dist/{frequencyChart.integration.spec-TYLWQ6NW.js → frequencyChart.integration.spec-TDLFPFR2.js} +16 -16
  147. package/dist/{geneExpClustering-3ZPRKNC6.js → geneExpClustering-6HPIGNEY.js} +10 -10
  148. package/dist/{geneExpression-QY4V4OZJ.js → geneExpression-PGQLCHVG.js} +7 -7
  149. package/dist/{geneExpression-GVA5BRX6.js → geneExpression-RNDWSUNQ.js} +3 -3
  150. package/dist/{geneORA-4AT3IJXA.js → geneORA-2Y7CYHTH.js} +7 -7
  151. package/dist/{geneVariant-FEJITLIE.js → geneVariant-6YVZOVL7.js} +7 -7
  152. package/dist/{geneVariant-FJVWCZ44.js → geneVariant-YFIRRMLF.js} +7 -7
  153. package/dist/{genefusion.ui-IW42TLDI.js → genefusion.ui-UFKO4ANL.js} +7 -7
  154. package/dist/{geneset-YZE2IIKN.js → geneset-ECEP5R3U.js} +7 -7
  155. package/dist/{genomeBrowser.spec-GIXSWSQN.js → genomeBrowser.spec-4T56V22I.js} +16 -16
  156. package/dist/{grin2-AZPBRFLO.js → grin2-2RLFI6VP.js} +7 -7
  157. package/dist/{grin2-YHC3LQXA.js → grin2-ESRCBH5I.js} +7 -7
  158. package/dist/{gsea-AIU4T227.js → gsea-BTM3IJRY.js} +9 -9
  159. package/dist/{hierCluster-7LSQZBDB.js → hierCluster-54BKKQ44.js} +18 -18
  160. package/dist/{hierCluster-APLSHBKU.js → hierCluster-DLGVELGL.js} +17 -17
  161. package/dist/{hierCluster.config-AEBDTH52.js → hierCluster.config-GUYZGTEW.js} +9 -9
  162. package/dist/{hierCluster.integration.spec-AQAC4IRZ.js → hierCluster.integration.spec-QPLO6REA.js} +19 -19
  163. package/dist/hierCluster.integration.spec-QPLO6REA.js.map +7 -0
  164. package/dist/{hierCluster.interactivity-IUHCF25Z.js → hierCluster.interactivity-URC4TOXY.js} +8 -8
  165. package/dist/{imagePlot-6WTC55I7.js → imagePlot-UTTJUD4R.js} +8 -8
  166. package/dist/importPlot-L2J4NM7V.js +8 -0
  167. package/dist/{launch.adhoc-FH6TIDI3.js → launch.adhoc-DZWJHDQH.js} +11 -11
  168. package/dist/{leftlabel.sample-IHA6AM63.js → leftlabel.sample-4NRQFG6G.js} +11 -11
  169. package/dist/{lollipop-CE5O2SGO.js → lollipop-HT3WW4H5.js} +9 -9
  170. package/dist/{maf-LPLH7TDL.js → maf-Y4XEWK5W.js} +7 -7
  171. package/dist/{maftimeline-IEYWUW6W.js → maftimeline-Y3HSIRLL.js} +7 -7
  172. package/dist/{matrix-7S2WDPLS.js → matrix-SFABUCQW.js} +15 -15
  173. package/dist/{matrix-WNQ6WWE3.js → matrix-WQO4KMUQ.js} +15 -15
  174. package/dist/{matrix.config-EPZWWJBM.js → matrix.config-C33VG7ZQ.js} +8 -8
  175. package/dist/{matrix.controls-IHTKLPON.js → matrix.controls-OTW7KDWP.js} +9 -9
  176. package/dist/{matrix.data-LIKP4VN2.js → matrix.data-4UAT3IGU.js} +8 -8
  177. package/dist/{matrix.dom-ZJJUCLUC.js → matrix.dom-KO3RCBVA.js} +2 -2
  178. package/dist/{matrix.integration.spec-MXRWWX55.js → matrix.integration.spec-7DEVQKQF.js} +18 -19
  179. package/dist/matrix.integration.spec-7DEVQKQF.js.map +7 -0
  180. package/dist/{matrix.interactivity-IJJ5DYSX.js → matrix.interactivity-KMRUZK22.js} +8 -8
  181. package/dist/{matrix.layout-DO2Z62NZ.js → matrix.layout-R5IJLBZX.js} +8 -8
  182. package/dist/{matrix.renderers-3YJM3VUR.js → matrix.renderers-Z7XPW7LE.js} +8 -8
  183. package/dist/{matrix.sort.unit.spec-VDILEMLX.js → matrix.sort.unit.spec-XT7OSKPO.js} +8 -8
  184. package/dist/{matrix.sorterUi-7O5WW2BB.js → matrix.sorterUi-DCUNQCSC.js} +3 -3
  185. package/dist/{matrix.sorterUi.unit.spec-ZBVONLEC.js → matrix.sorterUi.unit.spec-IO4NUU6K.js} +9 -9
  186. package/dist/{mavb-JGXI2V5N.js → mavb-BKHUKZAV.js} +8 -8
  187. package/dist/{mds.fimo-6WSBGGFB.js → mds.fimo-LTKB4SWO.js} +7 -7
  188. package/dist/{mds.samplescatterplot-D7YELQN4.js → mds.samplescatterplot-J5GDKNYU.js} +9 -9
  189. package/dist/{mds.survivalplot-Y34T6NSI.js → mds.survivalplot-N72ATZJR.js} +7 -7
  190. package/dist/{oncomatrix-4WLJCOFC.js → oncomatrix-XTUAPJUF.js} +10 -10
  191. package/dist/{oncomatrix.spec-ZFL526E7.js → oncomatrix.spec-CWPLPGHG.js} +16 -16
  192. package/dist/{plot.2dvaf-NN22RWZL.js → plot.2dvaf-XAICO24V.js} +7 -7
  193. package/dist/{plot.app-YGVH25VS.js → plot.app-FSC2AQFH.js} +10 -10
  194. package/dist/{plot.barplot-SH2P2QWY.js → plot.barplot-WUWUQHYY.js} +7 -7
  195. package/dist/{plot.boxplot-5A5P2DQW.js → plot.boxplot-P5UBBN75.js} +7 -7
  196. package/dist/{plot.brainImaging-MLSVOQBT.js → plot.brainImaging-INP467BP.js} +2 -2
  197. package/dist/{plot.disco-TKAQQ55L.js → plot.disco-H6LXVUJK.js} +4 -4
  198. package/dist/{plot.dzi-MYVQVQ5P.js → plot.dzi-MJACI56W.js} +2 -2
  199. package/dist/{plot.ssgq-UEIYBTLN.js → plot.ssgq-GUF2P4WC.js} +8 -8
  200. package/dist/{plot.vaf2cov-HVULJFB6.js → plot.vaf2cov-6MYDEWAQ.js} +7 -7
  201. package/dist/{plot.wsi-JJOJ2QZG.js → plot.wsi-AQHIZFJB.js} +2 -2
  202. package/dist/{polar-7QEFABS7.js → polar-W2J4F67H.js} +8 -8
  203. package/dist/{profile.spec-Z5EHD2QY.js → profile.spec-ZJMY7LJR.js} +16 -16
  204. package/dist/{profileBarchart-VC5N2W3J.js → profileBarchart-4U54MXDT.js} +8 -8
  205. package/dist/{profileForms-4G2QQOLV.js → profileForms-WJB34G3I.js} +8 -8
  206. package/dist/{profilePlot-T6FMSUBV.js → profilePlot-IRL5LWXF.js} +8 -8
  207. package/dist/{profileRadar-BNZU75U4.js → profileRadar-YPEHROUX.js} +8 -8
  208. package/dist/{profileRadarFacility-JI22AQF2.js → profileRadarFacility-SFG2N5OH.js} +8 -8
  209. package/dist/{qualitative-7JTKUXHA.js → qualitative-SUZQSJZR.js} +7 -7
  210. package/dist/{regression-47TS7OEE.js → regression-GIF2TWTH.js} +16 -16
  211. package/dist/{regression.inputs-GZSNE3BU.js → regression.inputs-Y47JA57G.js} +16 -16
  212. package/dist/{regression.inputs.term-LKQG73GI.js → regression.inputs.term-K2CBZFIA.js} +16 -16
  213. package/dist/{regression.inputs.values.table-KMOJJXY4.js → regression.inputs.values.table-E543YLX2.js} +14 -14
  214. package/dist/{regression.integration.spec-QHXU74NL.js → regression.integration.spec-XVQP42RL.js} +16 -16
  215. package/dist/{regression.results-N7AOQ45M.js → regression.results-2FDKW6OV.js} +8 -8
  216. package/dist/{regression.spec-PECC7VKK.js → regression.spec-YOVJOJ6N.js} +15 -15
  217. package/dist/{report-X4IVRCV7.js → report-SCPRSEH3.js} +7 -7
  218. package/dist/{runChart-D765EM4X.js → runChart-7EZTX54Q.js} +13 -13
  219. package/dist/{runchart.integration.spec-6H4MHQFX.js → runchart.integration.spec-NLRTXWFJ.js} +16 -16
  220. package/dist/{sampleScatter.spec-FAQBPYEF.js → sampleScatter.spec-G57CFW6R.js} +15 -15
  221. package/dist/{sampleView-HY5KWZAG.js → sampleView-ZUTPY5L2.js} +8 -8
  222. package/dist/{samplelst-YXJX2QVO.js → samplelst-X6ELC6IZ.js} +7 -7
  223. package/dist/{samplematrix-TSEHYV3F.js → samplematrix-PXNCBXIJ.js} +9 -9
  224. package/dist/{scatter-6ADP4FAF.js → scatter-HM7RI57U.js} +12 -12
  225. package/dist/{scatter.integration.spec-LMDUQ5EB.js → scatter.integration.spec-H67MTCSL.js} +16 -16
  226. package/dist/{selectGenomeWithTklst-XAJOWS5J.js → selectGenomeWithTklst-5EGOBAEU.js} +8 -8
  227. package/dist/{singleCellPlot-B2POK3R7.js → singleCellPlot-HEEYLAS7.js} +10 -10
  228. package/dist/{singlecell-O6NJBKRT.js → singlecell-QBIJOBD7.js} +10 -10
  229. package/dist/{singlecell-ZCKC4NBD.js → singlecell-V5T7YXHL.js} +10 -10
  230. package/dist/{snp-2GIO5XT3.js → snp-BHWJOFKA.js} +7 -7
  231. package/dist/{snplocus-K6AVLJ4I.js → snplocus-4KJHSX65.js} +7 -7
  232. package/dist/{spliceevent.a53ss.diagram-IJVSZM65.js → spliceevent.a53ss.diagram-QSDXAKY6.js} +7 -7
  233. package/dist/{spliceevent.exonskip.diagram-HJIQDN26.js → spliceevent.exonskip.diagram-4D2JGWWJ.js} +8 -8
  234. package/dist/{spliceevent.noeventdiagram-6AJOC7QU.js → spliceevent.noeventdiagram-HXJEWLLN.js} +7 -7
  235. package/dist/{ssGSEA-Q2VNUV7S.js → ssGSEA-R6UFFPD2.js} +7 -7
  236. package/dist/{stattable-ROGQD6RZ.js → stattable-LAEJIX2Y.js} +2 -2
  237. package/dist/{summarizeCnvGeneexp-2M6HG34J.js → summarizeCnvGeneexp-RRGWIRST.js} +8 -8
  238. package/dist/{summarizeGeneexpSurvival-HKUANUC6.js → summarizeGeneexpSurvival-F4IYUKX5.js} +9 -9
  239. package/dist/{summarizeMutationCnv-UC7WX7SY.js → summarizeMutationCnv-LLIWCBAO.js} +8 -8
  240. package/dist/{summarizeMutationDiagnosis-7HCGZ3JF.js → summarizeMutationDiagnosis-TQ73TOH2.js} +8 -8
  241. package/dist/{summarizeMutationSurvival-MTCVUY63.js → summarizeMutationSurvival-T23XPTRO.js} +8 -8
  242. package/dist/{summary-V4RTXB26.js → summary-NZNBNPC2.js} +16 -16
  243. package/dist/{summary.integration.spec-LF6EAZ6X.js → summary.integration.spec-6LOR5EZO.js} +16 -16
  244. package/dist/{summaryInput-EES6OICV.js → summaryInput-INPB6GAR.js} +8 -8
  245. package/dist/{sunburst-PZGXUWAU.js → sunburst-PRGEJ4UW.js} +7 -7
  246. package/dist/{survival-IJPWTMHV.js → survival-EXRXLCN3.js} +7 -7
  247. package/dist/{survival-H3A7UZO7.js → survival-L4UIFI54.js} +8 -8
  248. package/dist/{survival.integration.spec-7IMPQ6UR.js → survival.integration.spec-2MM5OTD2.js} +16 -16
  249. package/dist/{svgraph-AXRWUY5T.js → svgraph-TI7I7CU7.js} +7 -7
  250. package/dist/{svmr-YVFAESAJ.js → svmr-FYHSR5A2.js} +10 -10
  251. package/dist/{table-4MSZVAOW.js → table-NYNPJQE6.js} +7 -7
  252. package/dist/{termCollection-BVVD2U4L.js → termCollection-EOD4XXG4.js} +7 -7
  253. package/dist/{termCollection-M6ZYDSZQ.js → termCollection-FJPAWHM2.js} +7 -7
  254. package/dist/termInfo-DV6LCTSA.js +9 -0
  255. package/dist/{tk-7KLNTJRO.js → tk-YDLDOA6D.js} +11 -11
  256. package/dist/{tp.ui-6ZAZ36DP.js → tp.ui-AQBLNRRY.js} +16 -16
  257. package/dist/{tvs.dt-SCKV6353.js → tvs.dt-BVRGEYCQ.js} +7 -7
  258. package/dist/{tvs.dtcnv.categorical-HLBVD6GJ.js → tvs.dtcnv.categorical-JKHHB5GI.js} +7 -7
  259. package/dist/{tvs.dtcnv.continuous-CIKGTUOG.js → tvs.dtcnv.continuous-AW2N7K3K.js} +7 -7
  260. package/dist/{tvs.dtfusion-RF5ZUUOM.js → tvs.dtfusion-WV5WKCKW.js} +7 -7
  261. package/dist/{tvs.dtsnvindel-QF74XMOV.js → tvs.dtsnvindel-O3YFG5WN.js} +7 -7
  262. package/dist/{tvs.dtsv-TJJZZPRM.js → tvs.dtsv-ZHB56FVV.js} +7 -7
  263. package/dist/{tvs.samplelst-HMFJNEY7.js → tvs.samplelst-SLH5HSZ5.js} +7 -7
  264. package/dist/{tvs.termCollection-774HFDVL.js → tvs.termCollection-AWBDQQ25.js} +7 -7
  265. package/dist/{violin-YIN2B5UM.js → violin-DDDKSLSA.js} +10 -10
  266. package/dist/{violin.integration.spec-P5J3S26X.js → violin.integration.spec-6AFHD3SD.js} +16 -16
  267. package/dist/{violin.interactivity-VN3O6BAP.js → violin.interactivity-LDD54ACO.js} +8 -8
  268. package/dist/{violin.renderer-7Z5QGC2C.js → violin.renderer-6IGRXYNY.js} +8 -8
  269. package/dist/{vocabulary-SIJORF5B.js → vocabulary-YBNE26CP.js} +7 -7
  270. package/package.json +1 -1
  271. package/dist/chunk-2KJMSFOW.js.map +0 -7
  272. package/dist/chunk-CTRQJ6M4.js.map +0 -7
  273. package/dist/chunk-DXDHMTY7.js +0 -168
  274. package/dist/chunk-VGLPN6PS.js.map +0 -7
  275. package/dist/controls.btns-5UJ2DWD2.js +0 -9
  276. package/dist/hierCluster.integration.spec-AQAC4IRZ.js.map +0 -7
  277. package/dist/importPlot-5DNHHRRL.js +0 -8
  278. package/dist/matrix.integration.spec-MXRWWX55.js.map +0 -7
  279. package/dist/termInfo-KHKBMZ32.js +0 -9
  280. /package/dist/{2dmaf-E5HYTRL4.js.map → 2dmaf-K34DVHWJ.js.map} +0 -0
  281. /package/dist/{AIProjectAdmin-IRL7HHZH.js.map → AIProjectAdmin-OX7PPAXW.js.map} +0 -0
  282. /package/dist/{AppHeader-IRDFPBAQ.js.map → AppHeader-JUBKPSEB.js.map} +0 -0
  283. /package/dist/{BoxPlot-QABZS7Q5.js.map → BoxPlot-KM3EW2SS.js.map} +0 -0
  284. /package/dist/{CorrelationVolcano-E26KZ335.js.map → CorrelationVolcano-AOD672SJ.js.map} +0 -0
  285. /package/dist/{DifferentialAnalysis-DAWKCJVG.js.map → DifferentialAnalysis-VTWIRFQG.js.map} +0 -0
  286. /package/dist/{Disco-63UZHXXL.js.map → Disco-ZD3QJDWR.js.map} +0 -0
  287. /package/dist/{Disco.UI-F2X3RUBK.js.map → Disco.UI-ESSJJ667.js.map} +0 -0
  288. /package/dist/{DziViewer-MIBKWCRR.js.map → DziViewer-3GAMDKPH.js.map} +0 -0
  289. /package/dist/{HicApp-F3Y2WFLI.js.map → HicApp-555HNG3L.js.map} +0 -0
  290. /package/dist/{NumBinaryEditor-WZZC2KPZ.js.map → NumBinaryEditor-4FQYQRMK.js.map} +0 -0
  291. /package/dist/{NumBinaryEditor.unit.spec-SA7JSAIQ.js.map → NumBinaryEditor.unit.spec-7GAPTGZ2.js.map} +0 -0
  292. /package/dist/{NumContEditor-LMZDNT5K.js.map → NumContEditor-LWNWFSCT.js.map} +0 -0
  293. /package/dist/{NumContEditor.unit.spec-3HF3J7ML.js.map → NumContEditor.unit.spec-OA433BZ5.js.map} +0 -0
  294. /package/dist/{NumCustomBinEditor-4XX4O6IF.js.map → NumCustomBinEditor-XRRK2ZFR.js.map} +0 -0
  295. /package/dist/{NumCustomBinEditor.unit.spec-U2QPRKPZ.js.map → NumCustomBinEditor.unit.spec-DDHJY4V4.js.map} +0 -0
  296. /package/dist/{NumDiscreteEditor-WWPUE3FP.js.map → NumDiscreteEditor-DD6SKXHS.js.map} +0 -0
  297. /package/dist/{NumDiscreteEditor.unit.spec-6SM2QXEV.js.map → NumDiscreteEditor.unit.spec-Z7N3I2HN.js.map} +0 -0
  298. /package/dist/{NumRegularBinEditor-TH3RBZSY.js.map → NumRegularBinEditor-OOMRRNCC.js.map} +0 -0
  299. /package/dist/{NumRegularBinEditor.unit.spec-UGE3QUWX.js.map → NumRegularBinEditor.unit.spec-PUFXJTKW.js.map} +0 -0
  300. /package/dist/{NumSplineEditor-YDPRBQOM.js.map → NumSplineEditor-RRMQACCX.js.map} +0 -0
  301. /package/dist/{NumSplineEditor.unit.spec-XWYY2NRC.js.map → NumSplineEditor.unit.spec-DCPVD2O3.js.map} +0 -0
  302. /package/dist/{NumericDensity-2NW3AW6Z.js.map → NumericDensity-YD6U6T2D.js.map} +0 -0
  303. /package/dist/{NumericDensity.unit.spec-ZAZM2SFR.js.map → NumericDensity.unit.spec-26QLWMWA.js.map} +0 -0
  304. /package/dist/{NumericHandler-F56UMRAR.js.map → NumericHandler-ANYWWNOB.js.map} +0 -0
  305. /package/dist/{NumericHandler.unit.spec-QQ6BYTAF.js.map → NumericHandler.unit.spec-D2ZDNPN5.js.map} +0 -0
  306. /package/dist/{SC-AEMJB5Q6.js.map → SC-TE7VABQU.js.map} +0 -0
  307. /package/dist/{Volcano-LGQRKYH3.js.map → Volcano-XQ2H7UYY.js.map} +0 -0
  308. /package/dist/{WSIViewer-NNW5SMHT.js.map → WSIViewer-DNKMSHLX.js.map} +0 -0
  309. /package/dist/{WsiSamplesPlot-AXO4563E.js.map → WsiSamplesPlot-VJYDVYX3.js.map} +0 -0
  310. /package/dist/{adSandbox-4AOK2PIZ.js.map → adSandbox-XAZZ6ZWL.js.map} +0 -0
  311. /package/dist/{alphaGenome-4V53PTIP.js.map → alphaGenome-XELMXZYP.js.map} +0 -0
  312. /package/dist/{app-C4XKYGIR.js.map → app-6DWGFTEB.js.map} +0 -0
  313. /package/dist/{app-QNI5FPKL.js.map → app-QNBZNQHD.js.map} +0 -0
  314. /package/dist/{bam-UO2NKEZU.js.map → bam-PZ5MJVUJ.js.map} +0 -0
  315. /package/dist/{barchart-CCKWJFW3.js.map → barchart-7NKVAMCT.js.map} +0 -0
  316. /package/dist/{barchart.data-SUK3FVSI.js.map → barchart.data-XHQQSOBI.js.map} +0 -0
  317. /package/dist/{barchart.events-WJLKUF2P.js.map → barchart.events-PN2DFSO6.js.map} +0 -0
  318. /package/dist/{barchart.integration.spec-RI5GLTPZ.js.map → barchart.integration.spec-SPQHQ5RV.js.map} +0 -0
  319. /package/dist/{block-CHK3JXWE.js.map → block-6XQF343G.js.map} +0 -0
  320. /package/dist/{block.init-OHFYD2GC.js.map → block.init-GEPMVVIB.js.map} +0 -0
  321. /package/dist/{block.mds.expressionrank-JOOWWSIZ.js.map → block.mds.expressionrank-U3DMFQUC.js.map} +0 -0
  322. /package/dist/{block.mds.geneboxplot-KYOAH2FM.js.map → block.mds.geneboxplot-PZCQ4VR4.js.map} +0 -0
  323. /package/dist/{block.mds.junction-C6BW4CGE.js.map → block.mds.junction-TYZVWU53.js.map} +0 -0
  324. /package/dist/{block.mds.svcnv-5EJF42KE.js.map → block.mds.svcnv-CJCSFD4K.js.map} +0 -0
  325. /package/dist/{block.svg-Q3CY6LKT.js.map → block.svg-OON2RGFH.js.map} +0 -0
  326. /package/dist/{block.tk.aicheck-VQQU4H5R.js.map → block.tk.aicheck-Y27E6PN5.js.map} +0 -0
  327. /package/dist/{block.tk.ase-GCQC4QDD.js.map → block.tk.ase-LAHASPSI.js.map} +0 -0
  328. /package/dist/{block.tk.bam-RKYX5GER.js.map → block.tk.bam-QHN37XD4.js.map} +0 -0
  329. /package/dist/{block.tk.bedgraphdot-EUF62NFN.js.map → block.tk.bedgraphdot-QPDKUOS4.js.map} +0 -0
  330. /package/dist/{block.tk.bigwig.ui-5TBNTISB.js.map → block.tk.bigwig.ui-2MR2L3JB.js.map} +0 -0
  331. /package/dist/{block.tk.hicstraw-IHYYKSOR.js.map → block.tk.hicstraw-7IWJRJTN.js.map} +0 -0
  332. /package/dist/{block.tk.junction-4BFR7AFT.js.map → block.tk.junction-2ZN2FSJ7.js.map} +0 -0
  333. /package/dist/{block.tk.junction.textmatrixui-AKUCCZEF.js.map → block.tk.junction.textmatrixui-CPQ3V4YE.js.map} +0 -0
  334. /package/dist/{block.tk.ld-2YGP5V6I.js.map → block.tk.ld-2HDMWZZF.js.map} +0 -0
  335. /package/dist/{block.tk.menu-N4BI5ZCU.js.map → block.tk.menu-55F25LG4.js.map} +0 -0
  336. /package/dist/{block.tk.pgv-YM7L6DHK.js.map → block.tk.pgv-QSZCHGVE.js.map} +0 -0
  337. /package/dist/{brainImaging-F7RM7ORO.js.map → brainImaging-FWH2D2DU.js.map} +0 -0
  338. /package/dist/{chat-EA2TOYGY.js.map → chat-3XZGIAON.js.map} +0 -0
  339. /package/dist/{chunk-MWGHZ2OR.js.map → chunk-2Y7E546M.js.map} +0 -0
  340. /package/dist/{chunk-CA5LLXPV.js.map → chunk-3KMTDBZT.js.map} +0 -0
  341. /package/dist/{chunk-Q7AZKMBU.js.map → chunk-55UDBBL6.js.map} +0 -0
  342. /package/dist/{chunk-YEU7WXWS.js.map → chunk-57TWICXZ.js.map} +0 -0
  343. /package/dist/{chunk-JUT2O3BR.js.map → chunk-5FTNFH4T.js.map} +0 -0
  344. /package/dist/{chunk-RACPPJ6V.js.map → chunk-5SFP5RNN.js.map} +0 -0
  345. /package/dist/{chunk-UMD7KT6T.js.map → chunk-67DWCIOA.js.map} +0 -0
  346. /package/dist/{chunk-4QAUULAQ.js.map → chunk-6JFZ55C7.js.map} +0 -0
  347. /package/dist/{chunk-FOD4UOVS.js.map → chunk-7BXRTSFU.js.map} +0 -0
  348. /package/dist/{chunk-JFWEYCVW.js.map → chunk-7CDMJ2DF.js.map} +0 -0
  349. /package/dist/{chunk-W55E4RPB.js.map → chunk-7DFVPWFW.js.map} +0 -0
  350. /package/dist/{chunk-EHBAKRMC.js.map → chunk-7E5BGMUZ.js.map} +0 -0
  351. /package/dist/{chunk-CY52TN75.js.map → chunk-7UR62HW6.js.map} +0 -0
  352. /package/dist/{chunk-GHOILSV3.js.map → chunk-7Y2A4FZS.js.map} +0 -0
  353. /package/dist/{chunk-GVWGD5I3.js.map → chunk-ADLA3PJ4.js.map} +0 -0
  354. /package/dist/{chunk-C5YNJFLG.js.map → chunk-ASKMNRM2.js.map} +0 -0
  355. /package/dist/{chunk-VO5VI2LE.js.map → chunk-AVOKYZGR.js.map} +0 -0
  356. /package/dist/{chunk-PJNCR2WK.js.map → chunk-BELOVMGO.js.map} +0 -0
  357. /package/dist/{chunk-Y4B6ALEU.js.map → chunk-BJORP6HK.js.map} +0 -0
  358. /package/dist/{chunk-NLBQ2GUL.js.map → chunk-FLRBOZQC.js.map} +0 -0
  359. /package/dist/{chunk-37ZWUZ3W.js.map → chunk-FVJDNXNU.js.map} +0 -0
  360. /package/dist/{chunk-RJVNGG6X.js.map → chunk-FWHKDQVI.js.map} +0 -0
  361. /package/dist/{chunk-GYKTYGJQ.js.map → chunk-G54EMJTA.js.map} +0 -0
  362. /package/dist/{chunk-UBXN6Z7C.js.map → chunk-GVYOZF7N.js.map} +0 -0
  363. /package/dist/{chunk-IMCHIQT2.js.map → chunk-HTNDG4VX.js.map} +0 -0
  364. /package/dist/{chunk-MPDW5RZN.js.map → chunk-LJG5K5IY.js.map} +0 -0
  365. /package/dist/{chunk-JZJJOLHH.js.map → chunk-LRFMJ4EE.js.map} +0 -0
  366. /package/dist/{chunk-SGCTGCO2.js.map → chunk-LYQPQQ6A.js.map} +0 -0
  367. /package/dist/{chunk-XENPVHIO.js.map → chunk-M7MBFGEA.js.map} +0 -0
  368. /package/dist/{chunk-NZR3WNO6.js.map → chunk-N4XAZC5O.js.map} +0 -0
  369. /package/dist/{chunk-ZB2OEEK2.js.map → chunk-OLMWMYZM.js.map} +0 -0
  370. /package/dist/{chunk-HWBM5EIT.js.map → chunk-OM5BLCRN.js.map} +0 -0
  371. /package/dist/{chunk-LMGPUDWT.js.map → chunk-PNNA43ZG.js.map} +0 -0
  372. /package/dist/{chunk-DXDHMTY7.js.map → chunk-PZ7WCWYR.js.map} +0 -0
  373. /package/dist/{chunk-NJNNPYMC.js.map → chunk-Q2PPO2QT.js.map} +0 -0
  374. /package/dist/{chunk-O7P4EZHA.js.map → chunk-QXGUNKDA.js.map} +0 -0
  375. /package/dist/{chunk-BRKQSTPH.js.map → chunk-RNZFN7TZ.js.map} +0 -0
  376. /package/dist/{chunk-PRPEYNVE.js.map → chunk-RVNIY4SD.js.map} +0 -0
  377. /package/dist/{chunk-L2XKBMRK.js.map → chunk-RVZ6M5MM.js.map} +0 -0
  378. /package/dist/{chunk-XZTUXLC6.js.map → chunk-TT37XSK5.js.map} +0 -0
  379. /package/dist/{chunk-JUAB6AWT.js.map → chunk-VMNJ3CBS.js.map} +0 -0
  380. /package/dist/{chunk-CENQDG7A.js.map → chunk-VOUTHIB5.js.map} +0 -0
  381. /package/dist/{chunk-CKY3ZZAO.js.map → chunk-VU5VYG3S.js.map} +0 -0
  382. /package/dist/{chunk-PFBEIJLF.js.map → chunk-WQENZXSN.js.map} +0 -0
  383. /package/dist/{chunk-HEDJB65N.js.map → chunk-WVKSA7YU.js.map} +0 -0
  384. /package/dist/{chunk-EHM4V22E.js.map → chunk-X4GU2VKQ.js.map} +0 -0
  385. /package/dist/{chunk-ULFFSC6N.js.map → chunk-XDBGOZED.js.map} +0 -0
  386. /package/dist/{chunk-TINZX7UD.js.map → chunk-XJYLUSJH.js.map} +0 -0
  387. /package/dist/{chunk-GS7QVATH.js.map → chunk-XNLOWBF6.js.map} +0 -0
  388. /package/dist/{chunk-XG4HJBT5.js.map → chunk-XULJ2UUC.js.map} +0 -0
  389. /package/dist/{chunk-ZQ5QFLEC.js.map → chunk-Y4QM3UWA.js.map} +0 -0
  390. /package/dist/{chunk-S2HEJABN.js.map → chunk-YYWSZV5S.js.map} +0 -0
  391. /package/dist/{chunk-EIBJYYWV.js.map → chunk-ZMYYCORH.js.map} +0 -0
  392. /package/dist/{chunk-2XIEFQJ6.js.map → chunk-ZPYTB7CX.js.map} +0 -0
  393. /package/dist/{condition-NEAL2DMW.js.map → condition-3IMVLHQL.js.map} +0 -0
  394. /package/dist/{controls-VUR7TFLT.js.map → controls-GLYBFGRP.js.map} +0 -0
  395. /package/dist/{controls.btns-5UJ2DWD2.js.map → controls.btns-UXIUAMXI.js.map} +0 -0
  396. /package/dist/{controls.config-WX7Q5QB7.js.map → controls.config-AM4LK4IC.js.map} +0 -0
  397. /package/dist/{correlation-VZFRAG7E.js.map → correlation-TT6KVP6F.js.map} +0 -0
  398. /package/dist/{cuminc-GGM67RVU.js.map → cuminc-WZD56GIC.js.map} +0 -0
  399. /package/dist/{cuminc.integration.spec-VDVRK32W.js.map → cuminc.integration.spec-CFZ4UO24.js.map} +0 -0
  400. /package/dist/{customdata.inputui-TH3MOITU.js.map → customdata.inputui-TX6PV5YX.js.map} +0 -0
  401. /package/dist/{dataDownload-C23I2HIR.js.map → dataDownload-24QHNCXE.js.map} +0 -0
  402. /package/dist/{dataDownload.integration.spec-BZXVK7OR.js.map → dataDownload.integration.spec-ZRVUKWZG.js.map} +0 -0
  403. /package/dist/{databrowser.ui-Z4KVSI5B.js.map → databrowser.ui-UARCBZGZ.js.map} +0 -0
  404. /package/dist/{dictionary-IGN6YRUJ.js.map → dictionary-5E7CLLRU.js.map} +0 -0
  405. /package/dist/{e2pca-X62QCCC2.js.map → e2pca-E3IC443X.js.map} +0 -0
  406. /package/dist/{ep-6LFSB727.js.map → ep-Y5HJE5E6.js.map} +0 -0
  407. /package/dist/{expclust.gdc.spec-2WVN7NXH.js.map → expclust.gdc.spec-CY34SALS.js.map} +0 -0
  408. /package/dist/{facet-IQMRDCTJ.js.map → facet-6QNMIO6E.js.map} +0 -0
  409. /package/dist/{frequencyChart-UXVZLE4B.js.map → frequencyChart-I3Q3QVY6.js.map} +0 -0
  410. /package/dist/{frequencyChart.integration.spec-TYLWQ6NW.js.map → frequencyChart.integration.spec-TDLFPFR2.js.map} +0 -0
  411. /package/dist/{geneExpClustering-3ZPRKNC6.js.map → geneExpClustering-6HPIGNEY.js.map} +0 -0
  412. /package/dist/{geneExpression-QY4V4OZJ.js.map → geneExpression-PGQLCHVG.js.map} +0 -0
  413. /package/dist/{geneExpression-GVA5BRX6.js.map → geneExpression-RNDWSUNQ.js.map} +0 -0
  414. /package/dist/{geneORA-4AT3IJXA.js.map → geneORA-2Y7CYHTH.js.map} +0 -0
  415. /package/dist/{geneVariant-FEJITLIE.js.map → geneVariant-6YVZOVL7.js.map} +0 -0
  416. /package/dist/{geneVariant-FJVWCZ44.js.map → geneVariant-YFIRRMLF.js.map} +0 -0
  417. /package/dist/{genefusion.ui-IW42TLDI.js.map → genefusion.ui-UFKO4ANL.js.map} +0 -0
  418. /package/dist/{geneset-YZE2IIKN.js.map → geneset-ECEP5R3U.js.map} +0 -0
  419. /package/dist/{genomeBrowser.spec-GIXSWSQN.js.map → genomeBrowser.spec-4T56V22I.js.map} +0 -0
  420. /package/dist/{grin2-AZPBRFLO.js.map → grin2-2RLFI6VP.js.map} +0 -0
  421. /package/dist/{grin2-YHC3LQXA.js.map → grin2-ESRCBH5I.js.map} +0 -0
  422. /package/dist/{gsea-AIU4T227.js.map → gsea-BTM3IJRY.js.map} +0 -0
  423. /package/dist/{hierCluster-7LSQZBDB.js.map → hierCluster-54BKKQ44.js.map} +0 -0
  424. /package/dist/{hierCluster-APLSHBKU.js.map → hierCluster-DLGVELGL.js.map} +0 -0
  425. /package/dist/{hierCluster.config-AEBDTH52.js.map → hierCluster.config-GUYZGTEW.js.map} +0 -0
  426. /package/dist/{hierCluster.interactivity-IUHCF25Z.js.map → hierCluster.interactivity-URC4TOXY.js.map} +0 -0
  427. /package/dist/{imagePlot-6WTC55I7.js.map → imagePlot-UTTJUD4R.js.map} +0 -0
  428. /package/dist/{importPlot-5DNHHRRL.js.map → importPlot-L2J4NM7V.js.map} +0 -0
  429. /package/dist/{launch.adhoc-FH6TIDI3.js.map → launch.adhoc-DZWJHDQH.js.map} +0 -0
  430. /package/dist/{leftlabel.sample-IHA6AM63.js.map → leftlabel.sample-4NRQFG6G.js.map} +0 -0
  431. /package/dist/{lollipop-CE5O2SGO.js.map → lollipop-HT3WW4H5.js.map} +0 -0
  432. /package/dist/{maf-LPLH7TDL.js.map → maf-Y4XEWK5W.js.map} +0 -0
  433. /package/dist/{maftimeline-IEYWUW6W.js.map → maftimeline-Y3HSIRLL.js.map} +0 -0
  434. /package/dist/{matrix-7S2WDPLS.js.map → matrix-SFABUCQW.js.map} +0 -0
  435. /package/dist/{matrix-WNQ6WWE3.js.map → matrix-WQO4KMUQ.js.map} +0 -0
  436. /package/dist/{matrix.config-EPZWWJBM.js.map → matrix.config-C33VG7ZQ.js.map} +0 -0
  437. /package/dist/{matrix.controls-IHTKLPON.js.map → matrix.controls-OTW7KDWP.js.map} +0 -0
  438. /package/dist/{matrix.data-LIKP4VN2.js.map → matrix.data-4UAT3IGU.js.map} +0 -0
  439. /package/dist/{matrix.dom-ZJJUCLUC.js.map → matrix.dom-KO3RCBVA.js.map} +0 -0
  440. /package/dist/{matrix.interactivity-IJJ5DYSX.js.map → matrix.interactivity-KMRUZK22.js.map} +0 -0
  441. /package/dist/{matrix.layout-DO2Z62NZ.js.map → matrix.layout-R5IJLBZX.js.map} +0 -0
  442. /package/dist/{matrix.renderers-3YJM3VUR.js.map → matrix.renderers-Z7XPW7LE.js.map} +0 -0
  443. /package/dist/{matrix.sort.unit.spec-VDILEMLX.js.map → matrix.sort.unit.spec-XT7OSKPO.js.map} +0 -0
  444. /package/dist/{matrix.sorterUi-7O5WW2BB.js.map → matrix.sorterUi-DCUNQCSC.js.map} +0 -0
  445. /package/dist/{matrix.sorterUi.unit.spec-ZBVONLEC.js.map → matrix.sorterUi.unit.spec-IO4NUU6K.js.map} +0 -0
  446. /package/dist/{mavb-JGXI2V5N.js.map → mavb-BKHUKZAV.js.map} +0 -0
  447. /package/dist/{mds.fimo-6WSBGGFB.js.map → mds.fimo-LTKB4SWO.js.map} +0 -0
  448. /package/dist/{mds.samplescatterplot-D7YELQN4.js.map → mds.samplescatterplot-J5GDKNYU.js.map} +0 -0
  449. /package/dist/{mds.survivalplot-Y34T6NSI.js.map → mds.survivalplot-N72ATZJR.js.map} +0 -0
  450. /package/dist/{oncomatrix-4WLJCOFC.js.map → oncomatrix-XTUAPJUF.js.map} +0 -0
  451. /package/dist/{oncomatrix.spec-ZFL526E7.js.map → oncomatrix.spec-CWPLPGHG.js.map} +0 -0
  452. /package/dist/{plot.2dvaf-NN22RWZL.js.map → plot.2dvaf-XAICO24V.js.map} +0 -0
  453. /package/dist/{plot.app-YGVH25VS.js.map → plot.app-FSC2AQFH.js.map} +0 -0
  454. /package/dist/{plot.barplot-SH2P2QWY.js.map → plot.barplot-WUWUQHYY.js.map} +0 -0
  455. /package/dist/{plot.boxplot-5A5P2DQW.js.map → plot.boxplot-P5UBBN75.js.map} +0 -0
  456. /package/dist/{plot.brainImaging-MLSVOQBT.js.map → plot.brainImaging-INP467BP.js.map} +0 -0
  457. /package/dist/{plot.disco-TKAQQ55L.js.map → plot.disco-H6LXVUJK.js.map} +0 -0
  458. /package/dist/{plot.dzi-MYVQVQ5P.js.map → plot.dzi-MJACI56W.js.map} +0 -0
  459. /package/dist/{plot.ssgq-UEIYBTLN.js.map → plot.ssgq-GUF2P4WC.js.map} +0 -0
  460. /package/dist/{plot.vaf2cov-HVULJFB6.js.map → plot.vaf2cov-6MYDEWAQ.js.map} +0 -0
  461. /package/dist/{plot.wsi-JJOJ2QZG.js.map → plot.wsi-AQHIZFJB.js.map} +0 -0
  462. /package/dist/{polar-7QEFABS7.js.map → polar-W2J4F67H.js.map} +0 -0
  463. /package/dist/{profile.spec-Z5EHD2QY.js.map → profile.spec-ZJMY7LJR.js.map} +0 -0
  464. /package/dist/{profileBarchart-VC5N2W3J.js.map → profileBarchart-4U54MXDT.js.map} +0 -0
  465. /package/dist/{profileForms-4G2QQOLV.js.map → profileForms-WJB34G3I.js.map} +0 -0
  466. /package/dist/{profilePlot-T6FMSUBV.js.map → profilePlot-IRL5LWXF.js.map} +0 -0
  467. /package/dist/{profileRadar-BNZU75U4.js.map → profileRadar-YPEHROUX.js.map} +0 -0
  468. /package/dist/{profileRadarFacility-JI22AQF2.js.map → profileRadarFacility-SFG2N5OH.js.map} +0 -0
  469. /package/dist/{qualitative-7JTKUXHA.js.map → qualitative-SUZQSJZR.js.map} +0 -0
  470. /package/dist/{regression-47TS7OEE.js.map → regression-GIF2TWTH.js.map} +0 -0
  471. /package/dist/{regression.inputs-GZSNE3BU.js.map → regression.inputs-Y47JA57G.js.map} +0 -0
  472. /package/dist/{regression.inputs.term-LKQG73GI.js.map → regression.inputs.term-K2CBZFIA.js.map} +0 -0
  473. /package/dist/{regression.inputs.values.table-KMOJJXY4.js.map → regression.inputs.values.table-E543YLX2.js.map} +0 -0
  474. /package/dist/{regression.integration.spec-QHXU74NL.js.map → regression.integration.spec-XVQP42RL.js.map} +0 -0
  475. /package/dist/{regression.results-N7AOQ45M.js.map → regression.results-2FDKW6OV.js.map} +0 -0
  476. /package/dist/{regression.spec-PECC7VKK.js.map → regression.spec-YOVJOJ6N.js.map} +0 -0
  477. /package/dist/{report-X4IVRCV7.js.map → report-SCPRSEH3.js.map} +0 -0
  478. /package/dist/{runChart-D765EM4X.js.map → runChart-7EZTX54Q.js.map} +0 -0
  479. /package/dist/{runchart.integration.spec-6H4MHQFX.js.map → runchart.integration.spec-NLRTXWFJ.js.map} +0 -0
  480. /package/dist/{sampleScatter.spec-FAQBPYEF.js.map → sampleScatter.spec-G57CFW6R.js.map} +0 -0
  481. /package/dist/{sampleView-HY5KWZAG.js.map → sampleView-ZUTPY5L2.js.map} +0 -0
  482. /package/dist/{samplelst-YXJX2QVO.js.map → samplelst-X6ELC6IZ.js.map} +0 -0
  483. /package/dist/{samplematrix-TSEHYV3F.js.map → samplematrix-PXNCBXIJ.js.map} +0 -0
  484. /package/dist/{scatter-6ADP4FAF.js.map → scatter-HM7RI57U.js.map} +0 -0
  485. /package/dist/{scatter.integration.spec-LMDUQ5EB.js.map → scatter.integration.spec-H67MTCSL.js.map} +0 -0
  486. /package/dist/{selectGenomeWithTklst-XAJOWS5J.js.map → selectGenomeWithTklst-5EGOBAEU.js.map} +0 -0
  487. /package/dist/{singleCellPlot-B2POK3R7.js.map → singleCellPlot-HEEYLAS7.js.map} +0 -0
  488. /package/dist/{singlecell-O6NJBKRT.js.map → singlecell-QBIJOBD7.js.map} +0 -0
  489. /package/dist/{singlecell-ZCKC4NBD.js.map → singlecell-V5T7YXHL.js.map} +0 -0
  490. /package/dist/{snp-2GIO5XT3.js.map → snp-BHWJOFKA.js.map} +0 -0
  491. /package/dist/{snplocus-K6AVLJ4I.js.map → snplocus-4KJHSX65.js.map} +0 -0
  492. /package/dist/{spliceevent.a53ss.diagram-IJVSZM65.js.map → spliceevent.a53ss.diagram-QSDXAKY6.js.map} +0 -0
  493. /package/dist/{spliceevent.exonskip.diagram-HJIQDN26.js.map → spliceevent.exonskip.diagram-4D2JGWWJ.js.map} +0 -0
  494. /package/dist/{spliceevent.noeventdiagram-6AJOC7QU.js.map → spliceevent.noeventdiagram-HXJEWLLN.js.map} +0 -0
  495. /package/dist/{ssGSEA-Q2VNUV7S.js.map → ssGSEA-R6UFFPD2.js.map} +0 -0
  496. /package/dist/{stattable-ROGQD6RZ.js.map → stattable-LAEJIX2Y.js.map} +0 -0
  497. /package/dist/{summarizeCnvGeneexp-2M6HG34J.js.map → summarizeCnvGeneexp-RRGWIRST.js.map} +0 -0
  498. /package/dist/{summarizeGeneexpSurvival-HKUANUC6.js.map → summarizeGeneexpSurvival-F4IYUKX5.js.map} +0 -0
  499. /package/dist/{summarizeMutationCnv-UC7WX7SY.js.map → summarizeMutationCnv-LLIWCBAO.js.map} +0 -0
  500. /package/dist/{summarizeMutationDiagnosis-7HCGZ3JF.js.map → summarizeMutationDiagnosis-TQ73TOH2.js.map} +0 -0
  501. /package/dist/{summarizeMutationSurvival-MTCVUY63.js.map → summarizeMutationSurvival-T23XPTRO.js.map} +0 -0
  502. /package/dist/{summary-V4RTXB26.js.map → summary-NZNBNPC2.js.map} +0 -0
  503. /package/dist/{summary.integration.spec-LF6EAZ6X.js.map → summary.integration.spec-6LOR5EZO.js.map} +0 -0
  504. /package/dist/{summaryInput-EES6OICV.js.map → summaryInput-INPB6GAR.js.map} +0 -0
  505. /package/dist/{sunburst-PZGXUWAU.js.map → sunburst-PRGEJ4UW.js.map} +0 -0
  506. /package/dist/{survival-IJPWTMHV.js.map → survival-EXRXLCN3.js.map} +0 -0
  507. /package/dist/{survival-H3A7UZO7.js.map → survival-L4UIFI54.js.map} +0 -0
  508. /package/dist/{survival.integration.spec-7IMPQ6UR.js.map → survival.integration.spec-2MM5OTD2.js.map} +0 -0
  509. /package/dist/{svgraph-AXRWUY5T.js.map → svgraph-TI7I7CU7.js.map} +0 -0
  510. /package/dist/{svmr-YVFAESAJ.js.map → svmr-FYHSR5A2.js.map} +0 -0
  511. /package/dist/{table-4MSZVAOW.js.map → table-NYNPJQE6.js.map} +0 -0
  512. /package/dist/{termCollection-BVVD2U4L.js.map → termCollection-EOD4XXG4.js.map} +0 -0
  513. /package/dist/{termCollection-M6ZYDSZQ.js.map → termCollection-FJPAWHM2.js.map} +0 -0
  514. /package/dist/{termInfo-KHKBMZ32.js.map → termInfo-DV6LCTSA.js.map} +0 -0
  515. /package/dist/{tk-7KLNTJRO.js.map → tk-YDLDOA6D.js.map} +0 -0
  516. /package/dist/{tp.ui-6ZAZ36DP.js.map → tp.ui-AQBLNRRY.js.map} +0 -0
  517. /package/dist/{tvs.dt-SCKV6353.js.map → tvs.dt-BVRGEYCQ.js.map} +0 -0
  518. /package/dist/{tvs.dtcnv.categorical-HLBVD6GJ.js.map → tvs.dtcnv.categorical-JKHHB5GI.js.map} +0 -0
  519. /package/dist/{tvs.dtcnv.continuous-CIKGTUOG.js.map → tvs.dtcnv.continuous-AW2N7K3K.js.map} +0 -0
  520. /package/dist/{tvs.dtfusion-RF5ZUUOM.js.map → tvs.dtfusion-WV5WKCKW.js.map} +0 -0
  521. /package/dist/{tvs.dtsnvindel-QF74XMOV.js.map → tvs.dtsnvindel-O3YFG5WN.js.map} +0 -0
  522. /package/dist/{tvs.dtsv-TJJZZPRM.js.map → tvs.dtsv-ZHB56FVV.js.map} +0 -0
  523. /package/dist/{tvs.samplelst-HMFJNEY7.js.map → tvs.samplelst-SLH5HSZ5.js.map} +0 -0
  524. /package/dist/{tvs.termCollection-774HFDVL.js.map → tvs.termCollection-AWBDQQ25.js.map} +0 -0
  525. /package/dist/{violin-YIN2B5UM.js.map → violin-DDDKSLSA.js.map} +0 -0
  526. /package/dist/{violin.integration.spec-P5J3S26X.js.map → violin.integration.spec-6AFHD3SD.js.map} +0 -0
  527. /package/dist/{violin.interactivity-VN3O6BAP.js.map → violin.interactivity-LDD54ACO.js.map} +0 -0
  528. /package/dist/{violin.renderer-7Z5QGC2C.js.map → violin.renderer-6IGRXYNY.js.map} +0 -0
  529. /package/dist/{vocabulary-SIJORF5B.js.map → vocabulary-YBNE26CP.js.map} +0 -0
@@ -198,10 +198,8 @@ var AppApi = class _AppApi {
198
198
  async dispatch(action) {
199
199
  const self = this.#App;
200
200
  self.bus.emit("preDispatch");
201
- if (this.#abortController) {
202
- this.#abortController.abort("stale sequenceId");
203
- this.#abortController = void 0;
204
- }
201
+ if (this.#abortController && !self.skipPrevActionAbort?.(action)) this.#abortController.abort("stale sequenceId");
202
+ this.#abortController = new AbortController();
205
203
  try {
206
204
  if (this.#middlewares.length) {
207
205
  for (const fxn of this.#middlewares.slice()) {
@@ -429,7 +427,7 @@ var ComponentApi = class _ComponentApi {
429
427
  #Component;
430
428
  // only in debugmode
431
429
  #latestActionSequenceId;
432
- #abortController;
430
+ #abortController = new AbortController();
433
431
  #abortControllers;
434
432
  // TODO: may use #incompleteUpdate property, if the shared app abortController signal is used
435
433
  // #incompleteUpdate: boolean = true
@@ -493,8 +491,8 @@ var ComponentApi = class _ComponentApi {
493
491
  if (current.action) this.#latestActionSequenceId = current.action.sequenceId;
494
492
  if (this.#abortController) {
495
493
  this.#abortController.abort("stale sequenceId");
496
- this.#abortController = void 0;
497
494
  }
495
+ this.#abortController = new AbortController();
498
496
  if (self.mainArg == "state") {
499
497
  try {
500
498
  await self.main(componentState);
@@ -594,7 +592,7 @@ var ComponentApi = class _ComponentApi {
594
592
  }
595
593
  getAbortSignal() {
596
594
  if (!this.#abortController) this.#abortController = new AbortController();
597
- return this.#abortController?.signal;
595
+ return this.#abortController.signal;
598
596
  }
599
597
  triggerAbort(reason = "") {
600
598
  if (reason) console.info(`triggerAbort()`, reason);
@@ -978,7 +976,8 @@ function getComponentApi(self) {
978
976
  if (!componentState) return;
979
977
  if (!current.action || !deepEqual(componentState, self.state)) {
980
978
  if (current.action) latestActionSequenceId = current.action.sequenceId;
981
- if (abortController) abortController.abort();
979
+ if (abortController) abortController.abort("stale sequenceId");
980
+ abortController = new AbortController();
982
981
  if (self.mainArg == "state") {
983
982
  await self.main(componentState);
984
983
  } else {
@@ -1201,4 +1200,4 @@ export {
1201
1200
  getCompInit,
1202
1201
  multiInit
1203
1202
  };
1204
- //# sourceMappingURL=chunk-VGLPN6PS.js.map
1203
+ //# sourceMappingURL=chunk-KZBB7S6A.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../rx/src/utils.ts", "../rx/src/Bus.ts", "../rx/src/AppApi.ts", "../rx/src/StoreApi.ts", "../rx/src/ComponentApi.ts", "../rx/src/legacy.ts", "../rx/src/StoreBase.ts"],
4
+ "sourcesContent": ["/**************\nUtility Classes\n***************/\n\n/******************\n Detached Helpers\n******************/\n/*\n\tMethods to attach directly to an instance\n\tinside a class contructor method.\n\t\n\tThis is recommended instead of using \n\tinheritance via \"extends\", since this \"mixin\" \n\tapproach:\n\n\t- makes it clearer which instance method corresponds\n\t to what rx method\n\t\n\t- it is not susceptible to any class prototype edits\n\t that may affect all instances that inherits from \n\t the edited class\n\n\t- avoids conceptual association of classical\n\t inheritance using the \"extends\" keyword\n*/\n\n// x, y: objects to compare\n// matched: a tracker for x nested object values that's already been inspected\n// and found to match the corresponding value in y. This is useful when\n// using deepEqual() in deepCopyFreeze(), since it returns early when\n// some value does not match, but there may have been other nested objects\n// that have already been matched that do not need to be inspected again.\n//\n// NOTE: The 2nd argument will be frozen if added to the optional matched argument.\n// May improve the matched argument later into an opts{} argument, as needed.\nexport function deepEqual(x, y, matched?: WeakMap<any, WeakSet<any>> | Map<any, WeakSet<any>>) {\n\tif (x === y) {\n\t\treturn true\n\t} else if (typeof x == 'object' && x != null && typeof y == 'object' && y != null) {\n\t\tif (matched?.get(x)?.has(y)) return true\n\t\tconst xEntries = Object.entries(x)\n\t\tconst yKeys = Object.keys(y)\n\t\tif (xEntries.length != yKeys.length) return false\n\t\t// an empty object and empty array should not equal each other\n\t\tif (!xEntries.length && x.constructor.name !== y.constructor.name) return false\n\t\t// not using for..in loop, in order to not descend into inherited props/methods\n\t\tfor (const [key, val] of xEntries) {\n\t\t\tif (!yKeys.includes(key)) return false\n\t\t\tif (!deepEqual(val, y[key], matched)) return false\n\t\t}\n\t\tif (matched) {\n\t\t\tObject.freeze(y)\n\t\t\tif (!matched.has(x)) matched.set(x, new WeakSet())\n\t\t\tmatched.get(x)!.add(y)\n\t\t}\n\t\treturn true\n\t} else return false\n}\n\nexport function deepFreeze(obj) {\n\tObject.freeze(obj)\n\t// not using for..in loop, in order to not descend into inherited props/methods\n\tfor (const value of Object.values(obj)) {\n\t\tif (value !== null && typeof value == 'object') deepFreeze(value)\n\t}\n\treturn obj\n}\n\n// a reusable reference to an empty object\nconst emptyFrozenObj = Object.freeze({})\n\n// deepCopyFreez()\n//\n// input:\n// - object to copy\n// - may be mutated to freeze a class instance (or TODO: replace literal objects\n// with isolated mutable copies that are only accessible to the consumer code,\n// such as an rx store instance)\n// ref: may reuse another copy that's already frozen, if it already equals the input\n// matched: a tracker to supply as 3rd argument to deepEqual(), to track objects\n// that equal the second argument.\nexport function deepCopyFreeze(\n\tinput,\n\tref: any = {},\n\tmatched: WeakMap<any, WeakSet<any>> | Map<any, WeakSet<any>> = new Map()\n) {\n\t// non-objects will be returned as-is\n\tif (input === null || typeof input != 'object') return input\n\t// detect non-literal objects with a deepFreeze() method; class instances\n\t// without that method is assumed to be created by embedder code and should not be mutated,\n\t// cannot safely reuse the instance as-is\n\tif (\n\t\tinput.constructor.name !== 'Object' &&\n\t\tinput.constructor.name !== 'Array' &&\n\t\ttypeof input.deepFreeze == 'function'\n\t) {\n\t\t// class instances (non-literal objects) will be returned as-is but frozen,\n\t\t// i.e., a reference to the instances is returned instead of a copy\n\t\tif (!matched.has(input)) matched.set(input, new WeakSet())\n\t\tmatched.get(input)!.add(input)\n\t\treturn input.deepFreeze()\n\t}\n\tif (deepEqual(input, ref, matched)) return Object.freeze(ref)\n\tconst copy = Array.isArray(input) ? [] : {}\n\t// ref argument may be a non-object (string, number, etc), where\n\t// ref?.[key] (such as 1['test'] or \"abc\"['test']) would still work\n\t// but is not really an intended, valid comparison with an input object\n\tconst _ref = ref === null || typeof ref !== 'object' ? emptyFrozenObj : ref\n\t// not using for..in loop, in order to not descend into inherited props/methods\n\tfor (const [key, value] of Object.entries(input)) {\n\t\tcopy[key] = deepCopyFreeze(value, _ref[key], matched)\n\t}\n\treturn Object.freeze(copy)\n}\n\nexport async function notifyComponents(components, current) {\n\tif (!components) return // allow component-less app\n\tconst called: any[] = []\n\n\tfor (const name of Object.keys(components)) {\n\t\t// when components is array, name will be index\n\t\tconst component = components[name]\n\t\tif (Array.isArray(component)) {\n\t\t\tfor (const c of component) called.push(c.update(current))\n\t\t} else if (typeof component == 'object') {\n\t\t\tif (typeof component.update == 'function') {\n\t\t\t\tcalled.push(component.update(current))\n\t\t\t} else if (!component.main) {\n\t\t\t\tfor (const subname of Object.keys(component)) {\n\t\t\t\t\tif (typeof component[subname] == 'object' && typeof component[subname]?.update == 'function') {\n\t\t\t\t\t\tcalled.push(component[subname].update(current))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn Promise.all(called)\n}\n\n// Store Helpers\n// -------------\n\n/*\n\tbase: \n\t- either a state object or its JSON-stringified equivalent \n\t- will be over-written by second+ argument,\n\t similar to native Object.assign() overwrite sequence\n\n\targs\n\t- full or partial state object(s). if base is a string, then\n\t the arg object will be converted to/from JSON to\n\t create a copy for merging\n\t- the last argument may be an array of keys to force replacing\n\t an object value instead of extending it\n\n\tMerging behavior:\n\t- a base value that is an array or non-object will be replaced by matching arg key-value\n\t- a base value that is an object will be extended by a matching arg key-value\n\t- nested base object values will be extended recursively, instead of being swapped/replaced\n\t at the root level *** EXCEPT IF there is an isAtomic flag on one of these ****\n\t - the source\n\t - target object\n\t - target child object\n\t- see index.spec test for copyMerge details\n*/\nexport function copyMerge(base, ...args) {\n\tconst target = typeof base == 'string' ? fromJson(base) : base\n\tfor (const arg of args) {\n\t\tif (!arg) continue\n\t\tconst source = typeof base == 'string' ? fromJson(toJson(arg)) : arg\n\t\tfor (const [key, value] of Object.entries(source)) {\n\t\t\tif (\n\t\t\t\t!target[key] ||\n\t\t\t\tArray.isArray(target[key]) ||\n\t\t\t\ttypeof target[key] !== 'object' ||\n\t\t\t\tsource === null ||\n\t\t\t\tsource === undefined ||\n\t\t\t\tsource.isAtomic ||\n\t\t\t\ttarget?.isAtomic ||\n\t\t\t\ttarget[key]?.isAtomic\n\t\t\t) {\n\t\t\t\ttarget[key] = value\n\t\t\t} else copyMerge(target[key], value)\n\t\t}\n\t}\n\treturn target\n}\n\nexport function fromJson(objStr) {\n\t// this method should not be reused when there is\n\t// a need to recover any Set or Map values, instead\n\t// declare a class specific fromJson() method that has\n\t// new Set(arrOfValues) or new Map(arrOfPairedValues)\n\t//\n\t// also, do not use this when autogenerated IDs\n\t// need to be attached to list entries\n\t//\n\treturn JSON.parse(objStr)\n}\n\nexport function toJson(this: any, obj = null) {\n\t// this method should not be reused when there is\n\t// a need to stringify any Set or Map values,\n\t// instead declare a class specific toJson() method\n\t// that converts any Set or Map values to\n\t// [...Set] or [...Map] before JSON.stringify()\n\treturn JSON.stringify(obj ? obj : this.state)\n}\n\nexport function sleep(ms) {\n\treturn new Promise(resolve => setTimeout(resolve, ms))\n}\n\n// Component Helpers\n// -----------------\n\n// access the api of an indirectly connected component,\n// for example to subscribe an .on(event, listener) to\n// the event bus of a distant component\nexport function getComponents(components, dotSepNames) {\n\tif (!dotSepNames) return Object.assign({}, components)\n\t// string-based convenient accessor,\n\t// so instead of\n\t// app.getComponents().controls.getComponents().search,\n\t// simply\n\t// app.getComponents(\"controls.search\")\n\tconst names = dotSepNames.split('.')\n\tlet component = components\n\twhile (names.length) {\n\t\tlet name = names.shift()\n\t\tif (Array.isArray(component)) name = Number(name)\n\n\t\tif (!names.length) component = component[name]\n\t\telse if (component[name] && component[name].components) component = component[name].components\n\t\telse if (component[name] && component[name].getComponents) component = component[name].getComponents()\n\t\telse component = component[name]\n\t\tif (!component) break\n\t}\n\treturn component\n}\n", "/*\n\tA Bus instance will be its own api,\n\tsince it does not have a getApi() method.\n\tInstead, the mutable Bus instance will be hidden via the\n\tcomponent.api.on() method.\n*/\n\nexport class Bus {\n\tname: string\n\t/** \n\t \teventTypes[] \n\t\t\t- the events that this component wants to emit\n\t\t\t- e.g. ['postInit', 'postRender', 'postClick']\n\t\t\t- must not be namespaced\n\t\t\t- later, api.on() can use namespaced eventTypes\n\t*/\n\teventTypes: string[]\n\n\tevents: {\n\t\tpostInit?: (api: any) => void\n\t\tfirstRender?: (api: any) => void\n\t\tpostRender?: (api: any) => void\n\t\t//[eventName: string]?: (api: any) => void\n\t}\n\n\tdefaultArg: any\n\n\tconstructor(api, eventTypes, callbacks) {\n\t\t/*\n\t\t\tapi{} \n\t\t\t- the immutable api of the app or component\n\t\t\t\n\t\t\t\n\n\t\t\tcallbacks{}\n\t\t\t- any event listeners to set-up for this component \n\t\t\t- key: eventType, value: callback\n\n\t\t*/\n\t\tthis.name = api.type + (api.id === undefined || api.id === null ? '' : '#' + api.id)\n\t\tthis.eventTypes = eventTypes\n\t\tthis.events = {}\n\t\tthis.defaultArg = api\n\t\tif (callbacks) {\n\t\t\tfor (const [eventType, callback] of Object.entries(callbacks)) {\n\t\t\t\tthis.on(eventType, callback)\n\t\t\t}\n\t\t}\n\t}\n\n\ton(eventType, callback, opts: { wait?: number; [optsName: string]: any } = {}) {\n\t\t/*\n\t\tassign or delete a callback for an event\n\n\t\teventType\n\t\t- must match one of the eventTypes supplied to the Bus constructor\n\t\t- maybe be namespaced or not, example: \"postRender.test\" or \"postRender\"\n\t\t- any previous event-attached callbacks will be REPLACED in this bus \n\t\t when the same eventType is used as an argument again -- same behavior\n\t\t as a DOM event listener namespacing and replacement\n\n\t\tcallback\n\t\t- function. if missing will delete the eventType from bus\n\n\t\topts{}\n\t\t- optional callback configuration, such as\n\t\t.wait // to delay callback \n\t\t*/\n\t\tconst type = eventType.split('.').shift()\n\t\tif (!this.eventTypes.includes(type)) {\n\t\t\tthrow `Unknown bus event '${type}' for component ${this.name}`\n\t\t} else if (!callback) {\n\t\t\tdelete this.events[eventType]\n\t\t} else if (typeof callback == 'function') {\n\t\t\tif (eventType in this.events && !eventType.includes('.')) {\n\t\t\t\tconsole.log(`Warning: replacing ${this.name} ${eventType} callback - use event.name?`)\n\t\t\t}\n\t\t\tthis.events[eventType] = opts.wait ? arg => setTimeout(() => callback(arg), opts.wait) : callback\n\t\t} else {\n\t\t\tthrow `invalid callback for ${this.name} eventType=${eventType}`\n\t\t}\n\t\treturn this\n\t}\n\n\temit(eventType, arg = null, wait = 0, error = null) {\n\t\t/*\n\t\teventType\n\t\t- must be one of the eventTypes supplied to the Bus constructor\n\t\t- maybe be namespaced or not, example: \"postRender.test\" or \"postRender\"\n\n\t\targ\n\t\t- optional: the argument to supply to the callback\n\t\t if null or undefined, will use constructor() opts.defaultArg instead\n\n\t\twait\n\t\t- optional delay in calling the callback\n\t*/\n\t\tsetTimeout(() => {\n\t\t\tfor (const type of Object.keys(this.events)) {\n\t\t\t\tif (eventType == 'postRender' && type.startsWith('firstRender')) {\n\t\t\t\t\tthis.events[type](arg || this.defaultArg, error)\n\t\t\t\t\tdelete this.events[type]\n\t\t\t\t}\n\n\t\t\t\tif (type == eventType || type.startsWith(eventType + '.')) {\n\t\t\t\t\tthis.events[type](arg || this.defaultArg, error)\n\t\t\t\t\tif (eventType == 'postInit') delete this.events[type]\n\t\t\t\t}\n\t\t\t}\n\t\t}, wait)\n\t\treturn this\n\t}\n\n\tdestroy() {\n\t\tfor (const key in this.events) {\n\t\t\tdelete this.events[key]\n\t\t}\n\t}\n}\n", "import { type ComponentApi } from './ComponentApi.ts'\nimport { Bus } from './Bus.ts'\nimport { notifyComponents, getComponents } from './utils.ts'\n\ntype DispatchAction =\n\t| {\n\t\t\ttype: string\n\t\t\t[key: string]: any\n\t }\n\t| undefined\n\nexport interface RxApp {\n\ttype: string\n\tapi?: AppApi\n\tid: any\n\topts: any\n\tstate: any\n\tstore: any\n\tdebug?: boolean\n\t// should require dom to automate destroy()\n\tdom: {\n\t\t[index: string]: any\n\t}\n\tcomponents: ComponentApi[] | { [name: string]: ComponentApi | { [name: string]: ComponentApi } }\n\tpreApiFreeze?: (api: AppApi) => Promise<void>\n\tinit: () => Promise<void>\n\treactsTo?: (action: DispatchAction) => boolean\n\tgetState?: (appState: any) => any\n\thasStatePreMain?: boolean\n\tmain: (arg?: any) => void\n\tmainArg?: any\n\tprintError?: (any) => void\n\tdestroy?: () => void\n\t// may skip aborting previously dispatched actions in AppApi.dispatch()\n\t// if the new dispatched action doesn't affect all components; this will\n\t// allow plots and control menus to continue rendering while creating,\n\t// editing, or deleting another plot\n\tskipPrevActionAbort?: (action: DispatchAction) => boolean\n\n\tbus: Bus\n\teventTypes?: string[]\n\tcustomEvents?: string[]\n\twasDestroyed: boolean\n}\n\nexport class AppApi {\n\ttype = 'app'\n\tid: string\n\topts: any\n\tvocabApi: any\n\t#App: RxApp\n\tInner?: RxApp // only in debugmode\n\t#middlewares: any[] = []\n\tstate: any\n\n\t#latestActionSequenceId: number\n\t#abortController?: AbortController\n\t/** trackedAbortContrlsBySignal is used by trackAbortCtrlBySignal() */\n\t#trackedAbortContrlsBySignal = new WeakMap()\n\t#componentsByType: {\n\t\t[chartType: string]: {\n\t\t\t[plotId: string]: ComponentApi\n\t\t}\n\t} = {}\n\n\tstatic getInitFxn(__Class__) {\n\t\treturn async opts => {\n\t\t\tconst api = new AppApi(opts, __Class__)\n\t\t\tawait api.init()\n\t\t\treturn api\n\t\t}\n\t}\n\n\tconstructor(opts, __Class__) {\n\t\t// the component type + id may be used later to\n\t\t// simplify getting its state from the store\n\t\tconst self: RxApp = new __Class__(opts)\n\t\tself.opts = opts\n\t\tif (!self.id) self.id = opts.id || self.opts?.id\n\t\tif (!self.type) self.type = __Class__.type\n\t\tself.api = this\n\n\t\tthis.#App = self\n\t\tthis.id = self.id\n\t\tthis.type = self.type || __Class__.type\n\t\tthis.opts = opts\n\n\t\t// make it easy to access the private instance in debug mode, for testing\n\t\tif (self.debug || (self.opts && self.opts.debug)) this.Inner = self\n\n\t\tif (!self.eventTypes) self.eventTypes = ['preDispatch', 'postInit', 'postRender', 'firstRender', 'error']\n\t\tif (self.customEvents) self.eventTypes.push(...self.customEvents)\n\t\tself.bus = new Bus(this, self.eventTypes, opts.callbacks)\n\n\t\tthis.#latestActionSequenceId = 0\n\t}\n\n\tasync init() {\n\t\tif (this.#App.preApiFreeze) await this.#App.preApiFreeze(this)\n\t\tawait this.#App.init()\n\t\tif (this.#App.bus) this.#App.bus.emit('postInit')\n\t}\n\n\tasync dispatch(action?: any) {\n\t\tconst self = this.#App\n\t\tself.bus.emit('preDispatch')\n\t\t// any active but stale async operation, like fetch, should be canceled\n\t\t// if a new dispatch supercedes previous dispatches.\n\t\t// NOTE: this cancellation should not affect synchronous steps\n\t\tif (this.#abortController && !self.skipPrevActionAbort?.(action)) this.#abortController.abort('stale sequenceId')\n\t\tthis.#abortController = new AbortController()\n\n\t\ttry {\n\t\t\tif (this.#middlewares.length) {\n\t\t\t\tfor (const fxn of this.#middlewares.slice()) {\n\t\t\t\t\tconst result = await fxn(action)\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tif (result.cancel) return\n\t\t\t\t\t\tif (result.error) throw result.error\n\t\t\t\t\t\tif (result.deactivate) {\n\t\t\t\t\t\t\tthis.#middlewares.splice(this.#middlewares.indexOf(fxn), 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// IMPORTANT: Since a dispatched action does not necessarily affect all plot,\n\t\t\t// there should not be any guard here to detect stale sequence ID. The app\n\t\t\t// must continue dispatching actions that may update a specific plot or component,\n\t\t\t// and allow a subsequent action to also update another component without canceling\n\t\t\t// the previous action. This allows plots to continue rendering without unnecessarily\n\t\t\t// aborting for unrelated dispatched actions. The main exception to these are changes\n\t\t\t// to global filter and cohort (action.type == 'filter_replace' || 'cohort_set'), which\n\t\t\t// are assumed to affect all plots and components - there excemptions are specified\n\t\t\t// in this.#App.skipPrevActionAbort().\n\n\t\t\t// expect store.write() to be debounced and handle rapid succession of dispatches\n\t\t\t// replace app.state if there is an action\n\t\t\tif (action) self.state = await self.store.write(action)\n\t\t\tthis.#latestActionSequenceId = action?.sequenceId\n\t\t\t// TODO: may need to group calls to this.main by action type and plot.id,\n\t\t\t// in order to debounce correctly\n\t\t\tif (self.main) await self.main()\n\t\t\tconst current = { action, appState: self.state }\n\t\t\tawait notifyComponents(current.action?._notificationRoot_ || self.components, current)\n\t\t} catch (e: any) {\n\t\t\tif (this.isAbortError(e) || (e && typeof e == 'object' && e.level === 'warn')) {\n\t\t\t\tself.bus.emit('postRender')\n\t\t\t\tconsole.warn(String(e))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (self.wasDestroyed) return\n\t\t\tif (self.bus && this.#latestActionSequenceId == action?.sequenceId) self.bus.emit('error')\n\t\t\tif (self.printError) self.printError(e)\n\t\t\telse console.log(e)\n\t\t}\n\t\t// do not emit a postRender event if the action has become stale\n\t\tif (self.bus && this.#latestActionSequenceId == action?.sequenceId) self.bus.emit('postRender')\n\t\tthis.#abortController = undefined\n\t}\n\n\t// action: RxAction\n\tasync save(action) {\n\t\tconst self = this.#App\n\t\tif (self.wasDestroyed) return\n\t\t// save changes to store, do not notify components\n\t\tself.state = await self.store.write(action)\n\t\t// TODO: may generalize to use the key instead of hardcoding to only .recover\n\t\tif (this.#componentsByType.recover) {\n\t\t\tfor (const id in this.#componentsByType.recover) {\n\t\t\t\tconst api = this.#componentsByType.recover[id]\n\t\t\t\t// note: store.write() returns a frozen state, so safe to pass as argument\n\t\t\t\tif (api.replaceLastState) api.replaceLastState(self.state)\n\t\t\t}\n\t\t}\n\t}\n\n\tgetState() {\n\t\treturn this.#App.state\n\t}\n\t// fxn: RxAction => void\n\tmiddle(fxn) {\n\t\t/*\n\t\tadd #middlewares prior to calling dispatch()\n\t\t\n\t\tfxn(action: RxAction) \n\t\t- called in the order of being added to #middlewares array\n\t\t- must accept an action{} argument\n\t\t- do not return any value to eventually reach dispatch()\n\t\t - OR -\n\t\t- optionally return an object{}\n\t\t\t.error: \"string\" will throw\n\t\t\t.cancel: true will cancel dispatch\n\t\t\t.deactivate: true will remove the fxn from the #middlewares array\n\t\t*/\n\t\tif (typeof fxn !== 'function') throw `a middleware must be a function`\n\t\tif (this.#middlewares.includes(fxn)) throw `the function is already in the #middlewares array`\n\t\tthis.#middlewares.push(fxn)\n\t\treturn this\n\t}\n\n\t// must not expose this.bus directly since that\n\t// will also expose bus.emit() which should only\n\t// be triggered by this component\n\ton(eventType, callback) {\n\t\tconst self = this.#App\n\t\tif (!self.eventTypes) throw `no eventTypes[] for ${self.type} component`\n\t\tself.bus.on(eventType, callback)\n\t\treturn this\n\t}\n\n\tgetComponents(dotSepNames = '') {\n\t\treturn getComponents(this.#App.components, dotSepNames)\n\t}\n\n\tregister(api) {\n\t\tif (!this.#componentsByType[api.type]) this.#componentsByType[api.type] = {}\n\t\tthis.#componentsByType[api.type][api.id] = api\n\t}\n\n\tderegister(api) {\n\t\tif (this.#componentsByType[api.type]?.[api.id]) delete this.#componentsByType[api.type][api.id]\n\t}\n\n\tgetAbortSignal() {\n\t\tif (!this.#abortController) this.#abortController = new AbortController()\n\t\treturn this.#abortController?.signal\n\t\t// NOTE: the same signal can be reused to cancel different fetch requests, as tested pasting and running the following in the browser console:\n\t\t// > const ac = new AbortController(); for(let i=0; i<3; i++) fetch('/healthcheck', {signal: ac.signal}).then(r=>r.json()).then(console.log).catch(console.log); const t = setTimeout(()=>ac.abort('stale sequenceId'), 0);\n\t\t// stale sequenceId // repeats 3x\n\t\t// // can also change timeout to 1000, to see that aborting is okay after the signaled fetch completes\n\t}\n\n\ttriggerAbort(reason = '', signal?: any) {\n\t\tif (reason) console.info(`triggerAbort()`, reason)\n\t\tif (signal) {\n\t\t\tif (signal.aborted) return\n\t\t\tif (this.#abortController && signal === this.#abortController?.signal) this.#abortController.abort()\n\t\t\telse {\n\t\t\t\tconst abortCtrl = this.#trackedAbortContrlsBySignal.get(signal)\n\t\t\t\tif (abortCtrl) abortCtrl.abort()\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tconst self = this.#App\n\t\tif (this.#abortController) {\n\t\t\tthis.#abortController.abort('stale sequenceId')\n\t\t\tthis.#abortController = undefined\n\t\t}\n\t\tfor (const name of Object.keys(self.components)) {\n\t\t\tconst component = self.components[name]\n\t\t\tif (!component) continue\n\t\t\tif (Array.isArray(component)) {\n\t\t\t\tfor (const c of component) c.triggerAbort?.()\n\t\t\t} else if (!component || typeof component !== 'object') {\n\t\t\t\tcontinue\n\t\t\t} else if (typeof component.triggerAbort == 'function') {\n\t\t\t\t// NOTE: triggerAbort() is a prototype method, cannot use Object.keys(component).includes('triggerAbort')\n\t\t\t\t// which does not detect prototype/inherited methods\n\t\t\t\tcomponent.triggerAbort()\n\t\t\t} else if (!component.main) {\n\t\t\t\tfor (const subname of Object.keys(component)) {\n\t\t\t\t\tif (typeof component[subname].triggerAbort === 'function') {\n\t\t\t\t\t\tcomponent[subname].triggerAbort()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\ttrackAbortCtrlBySignal(abortCtrl) {\n\t\tthis.#trackedAbortContrlsBySignal.set(abortCtrl.signal, abortCtrl)\n\t}\n\n\tgetSequenceId() {\n\t\treturn this.#latestActionSequenceId\n\t}\n\n\tisStaleSequenceId(sequenceId) {\n\t\treturn sequenceId != this.#latestActionSequenceId\n\t}\n\n\tisAbortError(e) {\n\t\tif (e instanceof DOMException) return e.name === 'AbortError'\n\t\tif (typeof e == 'string') return e.includes('stale sequenceId') || e.includes('AbortError')\n\t\treturn false\n\t}\n\n\tdestroy() {\n\t\tconst self = this.#App\n\t\t// delete references to other objects to make it easier\n\t\t// for automatic garbage collection to find unreferenced objects\n\t\tfor (const key in self.components) {\n\t\t\tconst component = self.components[key]\n\t\t\tif (typeof component.destroy == 'function') {\n\t\t\t\tcomponent.destroy()\n\t\t\t} else if (component.holder) {\n\t\t\t\tcomponent.holder.selectAll('*').remove()\n\t\t\t}\n\t\t\tdelete self.components[key]\n\t\t}\n\t\tif (typeof self.destroy == 'function') self.destroy()\n\t\tif (self.dom) {\n\t\t\tif (self.dom.holder) self.dom.holder.selectAll('*').remove()\n\t\t\tfor (const key in self.dom) {\n\t\t\t\tdelete self.dom[key]\n\t\t\t}\n\t\t}\n\t\tif (self.bus) self.bus.destroy()\n\t\tdelete self.store\n\t\tif (self.api) delete self.api\n\t\tself.wasDestroyed = true\n\t}\n\n\tprintError(e) {\n\t\tif (this.#App.printError) this.#App.printError(e)\n\t\telse alert(e)\n\t}\n}\n", "import { deepCopyFreeze } from './utils.ts'\n\nexport interface RxStore {\n\ttype: string\n\tapi?: StoreApi\n\tid: any\n\tparentId?: string\n\topts: any\n\tdefaultState: any\n\tstate: any\n\tdebug?: boolean\n\tsequenceId: number\n\tnumPromisedWrites: number\n\tactions: {\n\t\t[actionType: string]: (action: { type: string; [prop: string]: any }) => void | Promise<void>\n\t}\n\n\tinit: () => void\n\tvalidateState?: () => void\n\tfromJson: (s: string) => any\n\ttoJson: (o: any) => string\n\tdeepFreeze: (o: any) => void\n\tcopyMerge: (_, __) => any\n}\n\nexport class StoreApi {\n\ttype: string\n\tid?: string\n\topts: any\n\n\t#Store: RxStore\n\tInner?: RxStore // only in debugmode\n\t#frozenStateCopy: any = Object.freeze({})\n\n\tstatic getInitFxn(__Class__) {\n\t\treturn async opts => {\n\t\t\tconst api = new StoreApi(opts, __Class__)\n\t\t\tawait api.init()\n\t\t\treturn api\n\t\t}\n\t}\n\n\tconstructor(_opts, __Class__) {\n\t\tconst opts = this.#validateOpts(_opts, __Class__)\n\t\t//this.app = opts.app\n\t\t//this.opts = opts\n\t\t// the component type + id may be used later to\n\t\t// simplify getting its state from the store\n\t\tconst self: RxStore = new __Class__(opts, this)\n\t\t//self.opts = opts\n\t\t//self.app = opts.app\n\t\tif (!self.id) self.id = opts.id || self.opts?.id\n\t\tif (!self.type) self.type = __Class__.type\n\t\tself.api = this\n\t\tthis.#Store = self\n\t\tthis.id = self.id\n\t\tthis.type = self.type || __Class__.type\n\n\t\t// make it easy to access the private instance in debug mode, for testing\n\t\tif (self.debug || self.opts?.debug) this.Inner = self\n\t}\n\n\t#validateOpts(opts, __Class__) {\n\t\tconst optKeys = Object.keys(opts)\n\t\tif (!optKeys.includes('app')) throw `missing opts.app`\n\t\tif (!optKeys.includes('debug')) opts.debug = opts.app.debug ?? opts.app.opts?.debug ?? false\n\t\treturn opts\n\t}\n\n\tasync init() {\n\t\tif (this.#Store.init) await this.#Store.init()\n\t\tif (this.#Store.validateState) this.#Store.validateState()\n\t\tObject.freeze(this)\n\t}\n\n\tasync write(action) {\n\t\tconst self = this.#Store\n\n\t\t// to allow an app or chart code to fail due to race condition,\n\t\t// hardcode a constant value or comment out the ++ for the sequenceID\n\t\t// !!! CRITICAL TO INCREMENT THIS !!!\n\t\taction.sequenceId = this.#Store.sequenceId++\n\t\t// avoid calls to inherited methods\n\t\tconst actions = self.constructor.prototype.actions\n\t\tif (!actions) {\n\t\t\tthrow `no store actions specified`\n\t\t}\n\t\tif (!Object.keys(actions).includes(action.type)) {\n\t\t\tthrow `Action=${action.type} must be declared in an \"actions\" property of a class.`\n\t\t}\n\t\tif (typeof actions[action.type] !== 'function') {\n\t\t\tthrow `invalid action type=${action.type}`\n\t\t}\n\t\tawait actions[action.type].call(self, action)\n\t\t// quick fix?? add custom state properties to the state to trigger special action-related handling\n\t\t// _scope_:\n\t\tself.state._scope_ = action._scope_\n\t\tif (!self.opts.debounceInterval) return this.copyState()\n\n\t\t// track the #\n\t\tself.numPromisedWrites += 1\n\t\tlet decrement = -1\n\t\treturn new Promise(resolve => {\n\t\t\tconst interval = setInterval(() => {\n\t\t\t\tself.numPromisedWrites += decrement\n\t\t\t\tdecrement = 0\n\t\t\t\tif (self.numPromisedWrites > 0) return\n\t\t\t\tclearInterval(interval)\n\t\t\t\tresolve(this.copyState())\n\t\t\t}, self.opts.debounceInterval)\n\t\t})\n\t}\n\n\tasync copyState() {\n\t\t// const time = Date.now()\n\t\tthis.#frozenStateCopy = deepCopyFreeze(this.#Store.state, this.#frozenStateCopy)\n\t\t// const self = this.#Store\n\t\t// this.#frozenStateCopy = self.fromJson(self.toJson(self.state))\n\t\t// self.deepFreeze(this.#frozenStateCopy)\n\t\t// console.log('copyState() time', Date.now() - time)\n\t\treturn this.#frozenStateCopy\n\t}\n}\n", "import type { AppApi } from './AppApi.ts'\nimport { deepEqual, notifyComponents, copyMerge, getComponents } from './utils.ts'\nimport { Bus } from './Bus.ts'\n\nexport interface RxComponent {\n\ttype: string\n\tapi?: ComponentApi\n\tapp: AppApi\n\tid: any\n\tparentId?: string\n\topts: any\n\tstate: any\n\tdebug?: boolean\n\t// should require dom to automate destroy()\n\tdom: {\n\t\t[index: string]: any\n\t}\n\tcomponents?: ComponentApi[] | { [name: string]: ComponentApi | { [name: string]: ComponentApi } }\n\tpreApiFreeze?: (api: ComponentApi) => void\n\tinit?: (appState: any) => Promise<void>\n\treactsTo?: (action: { type: string; [key: string]: any }) => boolean | undefined\n\tgetState?: (appState: any) => any\n\thasStatePreMain?: boolean\n\tmain: (arg?: any) => void\n\tmainArg?: any\n\tprintError?: (any) => void\n\tdestroy?: () => void\n\tgetChartImages?: () => any\n\n\tbus?: any\n\teventTypes?: string[]\n\tcustomEvents?: string[]\n}\n\nexport class ComponentApi {\n\ttype: string\n\tid?: string\n\n\t#Component: RxComponent\n\tInner?: RxComponent // only in debugmode\n\t#latestActionSequenceId: number\n\t#abortController?: AbortController = new AbortController()\n\t#abortControllers: Set<AbortController>\n\t// TODO: may use #incompleteUpdate property, if the shared app abortController signal is used\n\t// #incompleteUpdate: boolean = true\n\t#bus?: Bus\n\n\tstatic getInitFxn(__Class__) {\n\t\treturn async opts => {\n\t\t\tconst api = new ComponentApi(opts, __Class__)\n\t\t\tawait api.init()\n\t\t\treturn api\n\t\t}\n\t}\n\n\tconstructor(_opts, __Class__) {\n\t\tconst opts = this.#validateOpts(_opts, __Class__)\n\t\t// the component type + id may be used later to\n\t\t// simplify getting its state from the store\n\t\tconst self: RxComponent = new __Class__(opts, this)\n\t\tself.opts = opts\n\t\tif (!self.id) self.id = opts.id || self.opts?.id\n\t\tif (!self.type) self.type = __Class__.type\n\t\tself.app = opts.app\n\t\tself.api = this\n\n\t\tthis.#Component = self\n\t\tthis.id = self.id\n\t\tthis.type = self.type || __Class__.type\n\n\t\t// make it easy to access the private instance in debug mode, for testing\n\t\tif (self.debug || (self.opts && self.opts.debug)) this.Inner = self\n\n\t\tif (!self.eventTypes) self.eventTypes = ['preDispatch', 'postInit', 'postRender', 'firstRender', 'error']\n\t\tif (self.customEvents) self.eventTypes.push(...self.customEvents)\n\t\tself.bus = new Bus(this, self.eventTypes, opts.callbacks)\n\n\t\tthis.#latestActionSequenceId = 0\n\t\tthis.#abortControllers = new Set()\n\t}\n\n\t#validateOpts(opts, __Class__) {\n\t\tconst optKeys = Object.keys(opts)\n\t\tif (!optKeys.includes('app')) throw `missing opts.app`\n\t\tif (!optKeys.includes('debug')) opts.debug = opts.app.debug ?? opts.app.opts?.debug ?? false\n\t\tif (__Class__.type && opts.app.opts?.[__Class__.type]) {\n\t\t\tcopyMerge(opts, opts.app.opts[__Class__.type])\n\t\t}\n\t\treturn opts\n\t}\n\n\tasync init() {\n\t\tconst self = this.#Component\n\t\t// an instance may want to add or modify api properties before it is frozen\n\t\tif (self.preApiFreeze) await self.preApiFreeze(this)\n\t\t// freeze the api's properties and methods before exposing\n\t\tObject.freeze(this)\n\n\t\tif (self.init) await self.init(this.#Component.app.getState())\n\t\t// lessen confusing behavior\n\t\tif (self.state && !self.hasStatePreMain) {\n\t\t\tdelete self.state\n\t\t\tconsole.warn(\n\t\t\t\t`${self.type}: rx deleted this.state after init()` +\n\t\t\t\t\t`to avoid confusing behavior, such as the component not rendering initially ` +\n\t\t\t\t\t`because this.state would not have changed between init() and the first time ` +\n\t\t\t\t\t`main() is called. To skip this warning and retain this.state after init(), ` +\n\t\t\t\t\t`set this.hasStatePreMain = true in the ${self.type} constructor.`\n\t\t\t)\n\t\t}\n\t}\n\n\t// current: {action: RxAction, appState}\n\tasync update(current) {\n\t\tconst self = this.#Component\n\t\t// TODO: may use #incompleteUpdate property, if the shared app abortController signal is used\n\t\tif (/*!this.#incompleteUpdate &&*/ current.action && self.reactsTo && !self.reactsTo(current.action)) return\n\t\tconst componentState = self.getState ? self.getState(current.appState) : current.appState\n\t\t// no new state computed for this component\n\t\tif (!componentState) return\n\t\t// force update if there is no action, or\n\t\t// if the current and pending state is not equal\n\t\tif (!current.action /*|| this.#incompleteUpdate*/ || !deepEqual(componentState, self.state)) {\n\t\t\t//this.#incompleteUpdate = true\n\t\t\tif (current.action) this.#latestActionSequenceId = current.action.sequenceId\n\t\t\tif (this.#abortController) {\n\t\t\t\tthis.#abortController.abort('stale sequenceId')\n\t\t\t}\n\t\t\tthis.#abortController = new AbortController()\n\n\t\t\tif (self.mainArg == 'state') {\n\t\t\t\t// some components may require passing state to its .main() method,\n\t\t\t\t// for example when extending a simple object class into an rx-component\n\t\t\t\ttry {\n\t\t\t\t\tawait self.main(componentState)\n\t\t\t\t\tthis.#abortController = undefined\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.#abortController = undefined\n\t\t\t\t\tthrow e\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.state = componentState\n\t\t\t\tif (self.main) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait self.main()\n\t\t\t\t\t\tthis.#abortController = undefined\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.#abortController = undefined\n\t\t\t\t\t\tif (self.app.isAbortError(e)) return\n\t\t\t\t\t\tif (self.bus) self.bus.emit('error')\n\t\t\t\t\t\tthrow e\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttry {\n\t\t\t// notify children\n\t\t\tawait notifyComponents(self.components, current)\n\t\t\tif (self.bus && (!current.action || current.action.sequenceId === this.#latestActionSequenceId))\n\t\t\t\tself.bus.emit('postRender')\n\t\t\t//this.#incompleteUpdate = false\n\t\t\treturn this\n\t\t} catch (e: any) {\n\t\t\tif (self.printError) self.printError(e)\n\t\t\telse if (self.dom?.errdiv) throw { message: e.message || e.error || e, errdiv: self.dom?.errdiv }\n\t\t\telse throw e\n\t\t}\n\t}\n\n\tgetComponents(dotSepNames = '') {\n\t\treturn getComponents(this.#Component.components, dotSepNames)\n\t}\n\n\t// must not expose self.bus directly since that\n\t// will also expose bus.emit() which should only\n\t// be triggered by this component\n\ton(eventType, callback) {\n\t\tconst self = this.#Component\n\t\tif (!self.eventTypes) throw `no eventTypes[] for ${self.type} component`\n\t\tself.bus.on(eventType, callback)\n\t\treturn this\n\t}\n\n\t// getComponents(dotSepNames = '') {\n\t// \treturn getComponents(self.components, dotSepNames)\n\t// }\n\t//\n\n\t// When an async function takes a while to resolve, such as for server requests,\n\t// a subsequent action may trigger another request before the first one resolves,\n\t// in that case should ignore the stale response/result from the async function.\n\t// This is an api function so that code that has access to this component api\n\t// can also tie-in a function call to the fresheness of the component action.\n\t//\n\tasync detectStale(asyncFxn, opts: { abortCtrl?: AbortController; wait?: number } = {}) {\n\t\tconst abortControllers = this.#abortControllers\n\t\t//let errMsg = ''\n\t\ttry {\n\t\t\tconst actionSequenceId = this.#latestActionSequenceId\n\t\t\tconst promises: Promise<any>[] = []\n\t\t\tlet i, promResolve\n\t\t\tif (opts.abortCtrl) {\n\t\t\t\tabortControllers.add(opts.abortCtrl)\n\t\t\t\tpromises.push(\n\t\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\t\tpromResolve = resolve\n\t\t\t\t\t\ti = setInterval(() => {\n\t\t\t\t\t\t\tif (actionSequenceId !== this.#latestActionSequenceId) {\n\t\t\t\t\t\t\t\tclearInterval(i)\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\topts.abortCtrl?.abort()\n\t\t\t\t\t\t\t\t\tthrow `stale sequenceId`\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\treject(e)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, opts.wait || 100)\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\t\t\tpromises.push(asyncFxn())\n\t\t\t// the setInterval does not resolve, so Promise.race can only be \"won\" by the asyncFxn() result,\n\t\t\t// but the race can be aborted by the reject() inside the setInterval\n\t\t\tconst result = await Promise.race(promises)\n\t\t\tif (i) clearInterval(i)\n\t\t\tif (promResolve) promResolve()\n\t\t\tif (opts.abortCtrl && abortControllers.has(opts.abortCtrl)) abortControllers.delete(opts.abortCtrl)\n\t\t\tif (this.#latestActionSequenceId !== actionSequenceId) {\n\t\t\t\t// another state change has been dispatched between the start and completion of the server request\n\t\t\t\tconsole.warn('aborted state update, the returned data corresponds to a stale action.sequenceId')\n\t\t\t\tif (opts.abortCtrl) opts.abortCtrl.abort()\n\t\t\t\treturn [result, true]\n\t\t\t}\n\t\t\treturn [result]\n\t\t} catch (e) {\n\t\t\tif (typeof e == 'string' && e.includes('sequenceId')) console.warn(e)\n\t\t\tthrow e\n\t\t}\n\t}\n\n\tgetAbortSignal() {\n\t\tif (!this.#abortController) this.#abortController = new AbortController()\n\t\treturn this.#abortController.signal\n\t\t// NOTE: the same signal can be reused to cancel different fetch requests, as tested pasting and running the following in the browser console:\n\t\t// > const ac = new AbortController(); for(let i=0; i<3; i++) fetch('/healthcheck', {signal: ac.signal}).then(r=>r.json()).then(console.log).catch(console.log); const t = setTimeout(()=>ac.abort('stale sequenceId'), 0);\n\t\t// stale sequenceId // repeats 3x\n\t\t// // can also change timeout to 1000, to see that aborting is okay after the signaled fetch completes\n\t}\n\n\ttriggerAbort(reason = '') {\n\t\tif (reason) console.info(`triggerAbort()`, reason)\n\t\tif (this.#abortController) {\n\t\t\tthis.#abortController.abort('stale sequenceId')\n\t\t\tthis.#abortController = undefined\n\t\t}\n\t\tfor (const c of this.#abortControllers.values()) {\n\t\t\ttry {\n\t\t\t\tc.abort()\n\t\t\t\tthis.#abortControllers.delete(c)\n\t\t\t} catch (e) {\n\t\t\t\t// ok to\n\t\t\t\tconsole.warn('unable to cancel fetch: ', e)\n\t\t\t\tthis.#abortControllers.delete(c)\n\t\t\t}\n\t\t}\n\t\tconst self = this.#Component\n\t\tif (!self.components) return\n\t\tfor (const name of Object.keys(self.components)) {\n\t\t\tconst component = self.components[name]\n\t\t\tif (Array.isArray(component)) {\n\t\t\t\tfor (const c of component) c.triggerAbort?.()\n\t\t\t} else if (!component || typeof component !== 'object') {\n\t\t\t\tcontinue\n\t\t\t} else if (typeof component.triggerAbort === 'function') {\n\t\t\t\t// NOTE: triggerAbort() is a prototype method, cannot use Object.keys(component).includes('triggerAbort')\n\t\t\t\t// which does not detect prototype/inherited methods\n\t\t\t\tcomponent.triggerAbort()\n\t\t\t} else if (!component.main) {\n\t\t\t\tfor (const subname of Object.keys(component)) {\n\t\t\t\t\tif (typeof component[subname].triggerAbort === 'function') {\n\t\t\t\t\t\tcomponent[subname].triggerAbort()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgetSequenceId() {\n\t\treturn this.#latestActionSequenceId\n\t}\n\n\tisStaleSequenceId(sequenceId) {\n\t\treturn sequenceId != this.#latestActionSequenceId\n\t}\n\n\tdestroy() {\n\t\tthis.triggerAbort()\n\t\tconst self = this.#Component\n\t\t// delete references to other objects to make it easier\n\t\t// for automatic garbage collection to find unreferenced objects\n\t\tself.app.deregister(self.api)\n\t\tfor (const key in self.components) {\n\t\t\tconst component = self.components[key]\n\t\t\tif (typeof component.destroy == 'function') {\n\t\t\t\tcomponent.destroy()\n\t\t\t} else if (component.holder) {\n\t\t\t\tcomponent.holder.selectAll('*').remove()\n\t\t\t}\n\t\t\tdelete self.components[key]\n\t\t}\n\t\tif (typeof self.destroy == 'function') self.destroy()\n\t\tif (self.dom) {\n\t\t\tif (self.dom.holder) self.dom.holder.selectAll('*').remove()\n\t\t\tfor (const key in self.dom) {\n\t\t\t\tif (typeof self.dom[key]?.remove == 'function') self.dom[key].remove()\n\t\t\t\tdelete self.dom[key]\n\t\t\t}\n\t\t}\n\t\tif (self.bus) self.bus.destroy()\n\t\tif (self.api) delete self.api\n\t}\n\n\t// defaults for optional preApiFreeze addons\n\treplaceLastState(_) {}\n\n\tgetChartImages() {\n\t\treturn this.#Component.getChartImages ? this.#Component.getChartImages() : null\n\t}\n}\n", "// !!! TODO: migrate all rx code to strictly-defined typescript and\n// to use classes (with private #Inner) instead of closures !!!\nimport { deepEqual, deepFreeze, notifyComponents, copyMerge, fromJson, toJson, getComponents } from './utils.ts'\nimport { AppApi } from './AppApi.ts'\nimport { StoreApi } from './StoreApi.ts'\nimport { ComponentApi } from './ComponentApi.ts'\nimport { Bus } from './Bus.ts'\n\n/*\n*********** Exported ***********\ngetInitFxn()\ngetStoreApi()\ngetAppApi()\ngetComponentApi()\nBus (class)\nnotifyComponents()\ngetComponents()\ncopyMerge()\nfromJson()\ntoJson()\ndeepFreeze()\ndeepEqual()\n*********** Internal ***********\n\nInstances, APIs, and callback arguments are documented at:\nhttps://docs.google.com/document/d/1G3LqbtsCEkGw4ABA_VognhjVnUHnsVYAGdXyhYG374M/edit#\n\n*/\n\n/************\n Init Factory\n*************/\n\n/* \n\tgetInitFxn()\n\t- returns a _Class_ initiator function that\n\t\t- creates a _Class_ instance\n\t\t- optionally attaches an api.Inner reference to the instance for debugging\n\t\t- optionally creates an instance.bus property if there is an instance.eventTypes property\n\t\t- freezes and returns an immutable instance API\n\n\tDesign goal: \n\t- to protect _Class_ instance properties from being changed arbitrarily \n\t by any code that has a reference to it\n\t- Flexibility to use the generated instance outside of the rx framework/notification flow,\n\t\twith or without an coordinating \"app\"\n*/\n// deprecated: use <AppApi | StoreApi | ComponentApi>.getInitFxn\nexport function getInitFxn(_Class_) {\n\t/*\n\t\topts\n\t\t- the argument to the _Class_ constructor\n\t*/\n\treturn opts => {\n\t\t// create a _Class_ instance with mutable private properties and methods\n\t\tconst self = new _Class_(opts)\n\n\t\tif (!self.api && self.type) {\n\t\t\tif (self.type == 'app') prepApp(self, opts)\n\t\t\telse if (self.type == 'store') prepStore(self, opts)\n\t\t\telse prepComponent(self, opts)\n\t\t}\n\n\t\t// get the instance's api that may hide its mutable props and methods\n\t\t// - if there is already an instance api as constructed, use it\n\t\t// - if not, expose the mutable instance as its public api\n\t\tconst api = self.api || self\n\t\t// optionally expose the hidden instance to debugging and testing code\n\t\tif (self.debug || (self.opts && self.opts.debug)) api.Inner = self\n\t\t// an instance may want to add or modify api properties before it is frozen\n\t\tif (typeof self.preApiFreeze == 'function') self.preApiFreeze(api)\n\t\t// freeze the api's properties and methods before exposing\n\t\tObject.freeze(api)\n\n\t\t// the optional instance.init() is expected to be an async function,\n\t\t// which is not compatible within a constructor() function,\n\t\t// so call it here if it is available as an instance method\n\t\tif (self.init) {\n\t\t\t// return a Promise thar resolves to the instance API;\n\t\t\t// the parent component must use the await keyword\n\t\t\t// when using this initializer to get the instance's API\n\t\t\treturn self\n\t\t\t\t.init()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (self.bus) self.bus.emit('postInit')\n\t\t\t\t\treturn api\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tif (self.printError) self.printError(e)\n\t\t\t\t\tif (self.bus) self.bus.emit('postInit', null, 0, e)\n\t\t\t\t\telse throw e\n\t\t\t\t})\n\t\t} else {\n\t\t\tif (self.bus) self.bus.emit('postInit')\n\t\t\t// return the instance API; the parent component that uses this initializer\n\t\t\t// does NOT have to use the await keyword\n\t\t\treturn api\n\t\t}\n\t}\n}\n\nexport function getAppInit(_Class_) {\n\tif (_Class_.type) return AppApi.getInitFxn(_Class_)\n\treturn getInitPrepFxn(_Class_, prepApp)\n}\n\nexport function getStoreInit(_Class_) {\n\tif (_Class_.type) return StoreApi.getInitFxn(_Class_)\n\treturn getInitPrepFxn(_Class_, prepStore)\n}\n\nexport function getCompInit(_Class_) {\n\tif (_Class_.type) return ComponentApi.getInitFxn(_Class_)\n\treturn getInitPrepFxn(_Class_, prepComponent)\n}\n\nfunction getInitPrepFxn(_Class_, prepFxn) {\n\tif (typeof prepFxn != 'function') throw 'prepFxn must be a function'\n\n\t/*\n\t\topts\n\t\t- the argument to the _Class_ constructor\n\t*/\n\treturn async opts => {\n\t\tlet self\n\t\ttry {\n\t\t\tif (opts.app?.opts && 'debug' in opts.app.opts && !('debug' in opts) && opts != opts.app.opts) {\n\t\t\t\t// propagate debugmode from app.opts, if not set directly on the current opts object\n\t\t\t\topts.debug = opts.app.opts.debug\n\t\t\t}\n\t\t\t// create a _Class_ instance with mutable private properties and methods\n\t\t\tself = new _Class_(opts)\n\t\t\tprepFxn(self, opts)\n\n\t\t\t// get the instance's api that may hide its mutable props and methods\n\t\t\t// - if there is already an instance api as constructed, use it\n\t\t\t// - if not, expose the instance as its public api\n\t\t\tconst api = self.api || self\n\t\t\t// optionally expose the hidden instance to debugging and testing code\n\t\t\tif (self.debug || (self.opts && self.opts.debug)) api.Inner = self\n\t\t\t// an instance may want to add or modify api properties before it is frozen\n\t\t\tif (self.preApiFreeze) await self.preApiFreeze(api)\n\t\t\t// freeze the api's properties and methods before exposing\n\t\t\tObject.freeze(api)\n\n\t\t\t// instance.init() can be an async function\n\t\t\t// which is not compatible within a constructor() function,\n\t\t\t// so call it here if it is available as an instance method\n\t\t\tif (self.init) {\n\t\t\t\tif (self.app && self.app != self) await self.init(self.app.getState())\n\t\t\t\telse await self.init()\n\n\t\t\t\t// lessen confusing behavior\n\t\t\t\tif (self.type != 'app' && self.type != 'store' && self.state && !self.hasStatePreMain) {\n\t\t\t\t\tdelete self.state\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`${self.type}: rx deleted this.state after init()` +\n\t\t\t\t\t\t\t`to avoid confusing behavior, such as the component not rendering initially ` +\n\t\t\t\t\t\t\t`because this.state would not have changed between init() and the first time ` +\n\t\t\t\t\t\t\t`main() is called. To skip this warning and retain this.state after init(), ` +\n\t\t\t\t\t\t\t`set this.hasStatePreMain = true in the ${self.type} constructor.`\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (self.bus) self.bus.emit('postInit')\n\t\t\treturn api\n\t\t} catch (error) {\n\t\t\tconsole.log('error:', error)\n\t\t\tif (self?.bus) self.bus.emit('postInit', null, 0, error)\n\t\t\tif (!self?.printError) throw error\n\t\t}\n\t}\n}\n\n/*\n\tmay apply overrides to instance opts\n\tif there is an instance.type key in app.opts\n*/\nexport function getOpts(_opts, instance) {\n\tconst opts = Object.assign({}, instance.opts || {}, _opts)\n\tif (!instance.app) return opts\n\tif (instance.type in instance.app.opts) {\n\t\t/*\n\t\t\tAlways override opts with any app.opts that is available\n\t\t\tfor the instance's component type, supplied as an appInit() argument.\n\n\t\t\tTODO: May want the ability to NOT override an existing key-value\n\t\t\tin opts, only apply app.opts[instance.type] override for key-values\n\t\t\tthat are not in opts. Need to see an actual use case before working on this.\n\t\t*/\n\t\tconst overrides = instance.app.opts[instance.type]\n\t\tif (instance.validateOpts) instance.validateOpts(overrides)\n\t\tcopyMerge(opts, overrides)\n\t}\n\tif ('debug' in instance.app) opts.debug = instance.app.debug\n\telse if (instance.app.opts && 'debug' in instance.app.opts) opts.debug = instance.app.opts.debug\n\treturn opts\n}\n\n/*\n\tParallelize the potentially async initialization of multiple components\n\n\tinitPromises{}\n\t- keys: component names\n\t- values: Promise\n*/\nexport async function multiInit(initPromises) {\n\tconst components = {}\n\tawait Promise.all(Object.values(initPromises))\n\tfor (const name in initPromises) {\n\t\tcomponents[name] = await initPromises[name]\n\t}\n\treturn components\n}\n\n/****************\n API Generators\n*****************/\n\n// deprecated: use StoreApi\nexport function prepStore(self, opts) {\n\tif (self.validateOpts) self.validateOpts(opts)\n\tself.app = opts.app\n\tself.opts = getOpts(opts, self)\n\tself.api = getStoreApi(self)\n\tself.copyMerge = copyMerge\n\tself.deepFreeze = deepFreeze\n\t// see comments on when not to reuse rx.fromJson, rx.toJson\n\tif (!self.fromJson) self.fromJson = fromJson // used in store.api.copyState()\n\tif (!self.toJson) self.toJson = toJson // used in store.api.copyState()\n\tself.state = copyMerge(self.toJson(self.defaultState), opts.state)\n\tif (self.validateState) self.validateState()\n}\n\n// the action.sequenceId can be used by a chart/app\n// to identify the state that corresponds to an async step\n// like a server data request, so that a really late-arriving data\n// can be rejected if the state that was associated with that requested\n// is already stale/superseded by a subsequent state update\nlet sequenceId = 0\n\n/*\ntype RxAction = {\n type: string // one of the methods in [StoreClass].prototype.actions, for example see mass/store.js\n id?: string // a component identifier to help with routing the dispatched action\n [key=string]: any // the payload, depends on the action.type, can make this action into a union\n\n _notificationRoot_?: RxComponentApi[] \n\t\t\t\t\t\t\t\t\t\t\t\t// may be used to directly notify specific components that are known to be affected by an action,\n \t\t\t\t\t\t\t\t\t\t// this will cause the dispatch notification to skip all components above or outside the \n \t\t\t\t\t\t\t\t\t\t// _notificationRoot_, !!! use only rarely when absolutely sure of excluding other components !!!\n\n _scope_?: 'none' | 'local' | 'global'\n \t\t\t\t\t\t\t\t\t\t\t// indicates where this action should be tracked by a history tracker such as a recover component\n // NOTE: may be deprecated(???) in favor of ._notificationRoot_\n}\n*/\n\n// deprecated: use StoreApi\nexport function getStoreApi(self) {\n\tself.history = []\n\tself.currIndex = -1\n\tlet numPromisedWrites = 0\n\tconst api = {\n\t\t// action: RxAction\n\t\tasync write(action) {\n\t\t\t// to allow an app or chart code to fail due to race condition,\n\t\t\t// hardcode a constant value or comment out the ++ for the sequenceID\n\t\t\t// !!! CRITICAL TO INCREMENT THIS !!!\n\t\t\taction.sequenceId = sequenceId++\n\t\t\t// avoid calls to inherited methods\n\t\t\tconst actions = self.constructor.prototype.actions\n\t\t\tif (!actions) {\n\t\t\t\tthrow `no store actions specified`\n\t\t\t}\n\t\t\tif (!Object.keys(actions).includes(action.type)) {\n\t\t\t\tthrow `Action=${action.type} must be declared in an \"actions\" property of a class.`\n\t\t\t}\n\t\t\tif (typeof actions[action.type] !== 'function') {\n\t\t\t\tthrow `invalid action type=${action.type}`\n\t\t\t}\n\t\t\tawait actions[action.type].call(self, action)\n\t\t\t// quick fix?? add custom state properties to the state to trigger special action-related handling\n\t\t\t// _scope_:\n\t\t\tself.state._scope_ = action._scope_\n\t\t\tif (!self.opts.debounceInterval) return api.copyState()\n\n\t\t\t// track the #\n\t\t\tnumPromisedWrites += 1\n\t\t\tlet decrement = -1\n\t\t\treturn new Promise(resolve => {\n\t\t\t\tconst interval = setInterval(() => {\n\t\t\t\t\tnumPromisedWrites += decrement\n\t\t\t\t\tdecrement = 0\n\t\t\t\t\tif (numPromisedWrites > 0) return\n\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\tresolve(api.copyState())\n\t\t\t\t}, self.opts.debounceInterval)\n\t\t\t})\n\t\t},\n\t\tasync copyState() {\n\t\t\tconst stateCopy = self.fromJson(self.toJson(self.state))\n\t\t\tself.deepFreeze(stateCopy)\n\t\t\treturn stateCopy\n\t\t}\n\t}\n\treturn api\n}\n\n// deprecated: use AppApi\nexport function prepApp(self, opts) {\n\ttry {\n\t\tif (self.validateOpts) self.validateOpts(opts)\n\t\tif ('id' in opts) self.id = opts[self.type].id\n\t\tself.opts = opts\n\t\tself.api = getAppApi(self)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t\tif (self.printError) self.printError(e)\n\t\telse alert(e)\n\t}\n}\n\n// deprecated: use AppApi\nexport function getAppApi(self) {\n\t// optional registry for component instances\n\tconst componentsByType: { [name: string]: any } = {}\n\tconst middlewares: any[] = []\n\tlet latestActionSequenceId\n\tconst api = {\n\t\ttype: self.type,\n\t\topts: self.opts,\n\t\t// action: RxAction\n\t\tasync dispatch(action) {\n\t\t\tself.bus.emit('preDispatch')\n\t\t\ttry {\n\t\t\t\tif (middlewares.length) {\n\t\t\t\t\tfor (const fxn of middlewares.slice()) {\n\t\t\t\t\t\tconst result = await fxn(action)\n\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\tif (result.cancel) return\n\t\t\t\t\t\t\tif (result.error) throw result.error\n\t\t\t\t\t\t\tif (result.deactivate) {\n\t\t\t\t\t\t\t\tmiddlewares.splice(middlewares.indexOf(fxn), 1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// expect store.write() to be debounced and handle rapid succession of dispatches\n\t\t\t\t// replace app.state if there is an action\n\t\t\t\tif (action) self.state = await self.store.write(action)\n\t\t\t\tlatestActionSequenceId = action?.sequenceId\n\t\t\t\t// TODO: may need to group calls to self.main by action type and plot.id,\n\t\t\t\t// in order to debounce correctly\n\t\t\t\tif (self.main) await self.main()\n\t\t\t\tconst current = { action, appState: self.state }\n\t\t\t\tawait notifyComponents(current.action?._notificationRoot_ || self.components, current)\n\t\t\t} catch (e) {\n\t\t\t\tif (self.wasDestroyed) return\n\t\t\t\tif (self.bus && latestActionSequenceId == action?.sequenceId) self.bus.emit('error')\n\t\t\t\tif (self.printError) self.printError(e)\n\t\t\t\telse console.log(e)\n\t\t\t}\n\t\t\t// do not emit a postRender event if the action has become stale\n\t\t\tif (self.bus && latestActionSequenceId == action?.sequenceId) self.bus.emit('postRender')\n\t\t},\n\t\t// action: RxAction\n\t\tasync save(action) {\n\t\t\t// save changes to store, do not notify components\n\t\t\tself.state = await self.store.write(action)\n\t\t\t// TODO: may generalize to use the key instead of hardcoding to only .recover\n\t\t\tif (componentsByType.recover) {\n\t\t\t\tfor (const id in componentsByType.recover) {\n\t\t\t\t\tconst api = componentsByType.recover[id]\n\t\t\t\t\t// note: store.write() returns a frozen state, so safe to pass as argument\n\t\t\t\t\tapi.replaceLastState(self.state)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetState() {\n\t\t\treturn self.state\n\t\t},\n\t\t// fxn: RxAction => void\n\t\tmiddle(fxn) {\n\t\t\t/*\n\t\t\tadd middlewares prior to calling dispatch()\n\t\t\t\n\t\t\tfxn(action: RxAction) \n\t\t\t- called in the order of being added to middlewares array\n\t\t\t- must accept an action{} argument\n\t\t\t- do not return any value to eventually reach dispatch()\n\t\t\t - OR -\n\t\t\t- optionally return an object{}\n\t\t\t\t.error: \"string\" will throw\n\t\t\t\t.cancel: true will cancel dispatch\n\t\t\t\t.deactivate: true will remove the fxn from the middlewares array\n\t\t\t*/\n\t\t\tif (typeof fxn !== 'function') throw `a middleware must be a function`\n\t\t\tif (middlewares.includes(fxn)) throw `the function is already in the middlewares array`\n\t\t\tmiddlewares.push(fxn)\n\t\t\treturn api\n\t\t},\n\t\t// must not expose this.bus directly since that\n\t\t// will also expose bus.emit() which should only\n\t\t// be triggered by this component\n\t\ton(eventType, callback) {\n\t\t\tif (!self.eventTypes) throw `no eventTypes[] for ${self.type} component`\n\t\t\tself.bus.on(eventType, callback)\n\t\t\treturn api\n\t\t},\n\t\tgetComponents(dotSepNames = '') {\n\t\t\treturn getComponents(self.components, dotSepNames)\n\t\t},\n\t\tregister(api) {\n\t\t\tif (!componentsByType[api.type]) componentsByType[api.type] = {}\n\t\t\tcomponentsByType[api.type][api.id] = api\n\t\t},\n\t\tderegister(api) {\n\t\t\tif (componentsByType[api.type]?.[api.id]) delete componentsByType[api.type][api.id]\n\t\t},\n\t\ttriggerAbort(reason = '') {\n\t\t\tif (reason) if (reason) console.info(`triggerAbort()`, reason)\n\t\t\tfor (const name of Object.keys(self.components)) {\n\t\t\t\tconst component = self.components[name]\n\t\t\t\tif (!component) continue\n\t\t\t\tif (Array.isArray(component)) {\n\t\t\t\t\tfor (const c of component) c.triggerAbort()\n\t\t\t\t} else if (typeof component == 'object') {\n\t\t\t\t\tif (Object.keys(component).includes('triggerAbort')) {\n\t\t\t\t\t\tcomponent.triggerAbort()\n\t\t\t\t\t} else if (!component.main) {\n\t\t\t\t\t\tfor (const subname of Object.keys(component)) {\n\t\t\t\t\t\t\tif (typeof component[subname].triggerAbort == 'function') {\n\t\t\t\t\t\t\t\tcomponent[subname].triggerAbort()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdestroy() {\n\t\t\t// delete references to other objects to make it easier\n\t\t\t// for automatic garbage collection to find unreferenced objects\n\t\t\tfor (const key in self.components) {\n\t\t\t\tconst component = self.components[key]\n\t\t\t\tif (typeof component.destroy == 'function') {\n\t\t\t\t\tcomponent.destroy()\n\t\t\t\t} else if (component.holder) {\n\t\t\t\t\tcomponent.holder.selectAll('*').remove()\n\t\t\t\t}\n\t\t\t\tdelete self.components[key]\n\t\t\t}\n\t\t\tif (typeof self.destroy == 'function') self.destroy()\n\t\t\tif (self.dom) {\n\t\t\t\tif (self.dom.holder) self.dom.holder.selectAll('*').remove()\n\t\t\t\tfor (const key in self.dom) {\n\t\t\t\t\tdelete self.dom[key]\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (self.bus) self.bus.destroy()\n\t\t\tdelete self.store\n\t\t\tif (self.api) delete self.api\n\t\t\tself.wasDestroyed = true\n\t\t}\n\t}\n\n\tif (!self.bus) {\n\t\tif (!self.eventTypes) self.eventTypes = ['preDispatch', 'postInit', 'postRender', 'firstRender', 'error']\n\t\tif (self.customEvents) self.eventTypes.push(...self.customEvents)\n\t\t// set up a required event bus\n\t\tconst callbacks = (self.opts.app && self.opts.app.callbacks) || self.opts.callbacks || {}\n\t\tself.bus = new Bus(api, self.eventTypes, callbacks)\n\t}\n\treturn api\n}\n\n// deprecated: use ComponentApi\nexport function prepComponent(self, opts) {\n\tif (!opts.app) throw `missing self.opts.app in prepComponent(${self.type})`\n\tself.app = opts.app\n\tself.opts = getOpts(opts, self)\n\tif (self.validateOpts) self.validateOpts(opts)\n\t// the component type + id may be used later to\n\t// simplify getting its state from the store\n\tif ('id' in opts) self.id = self.opts.id\n\tself.api = getComponentApi(self)\n}\n\n// deprecated: use ComponentApi\nexport function getComponentApi(self) {\n\tif (!('type' in self)) {\n\t\tthrow `The component's type must be set before calling this.getComponentApi(this).`\n\t}\n\n\t// track abortController instances to optionally cancel active async steps,\n\t// for example to cancel matrix data requests when the view is closed\n\tconst abortControllers = new Set()\n\n\t// remember the action.sequenceId that caused the last state change\n\tlet latestActionSequenceId, abortController\n\n\tconst api = {\n\t\ttype: self.type,\n\t\tid: self.id,\n\t\t// current: {action: RxAction, appState}\n\t\tasync update(current) {\n\t\t\tif (current.action && self.reactsTo && !self.reactsTo(current.action)) return\n\t\t\tconst componentState = self.getState ? self.getState(current.appState) : current.appState\n\t\t\t// no new state computed for this component\n\t\t\tif (!componentState) return\n\t\t\t// force update if there is no action, or\n\t\t\t// if the current and pending state is not equal\n\t\t\tif (!current.action || !deepEqual(componentState, self.state)) {\n\t\t\t\tif (current.action) latestActionSequenceId = current.action.sequenceId\n\t\t\t\tif (abortController) abortController.abort('stale sequenceId')\n\t\t\t\tabortController = new AbortController()\n\t\t\t\tif (self.mainArg == 'state') {\n\t\t\t\t\t// some components may require passing state to its .main() method,\n\t\t\t\t\t// for example when extending a simple object class into an rx-component\n\t\t\t\t\tawait self.main(componentState)\n\t\t\t\t} else {\n\t\t\t\t\tself.state = componentState\n\t\t\t\t\tif (self.main) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait self.main()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tif (self.bus) self.bus.emit('error')\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tabortController = undefined\n\t\t\t}\n\t\t\ttry {\n\t\t\t\t// notify children\n\t\t\t\tawait notifyComponents(self.components, current)\n\t\t\t\tif (self.bus && (!current.action || current.action.sequenceId === latestActionSequenceId))\n\t\t\t\t\tself.bus.emit('postRender')\n\t\t\t\treturn api\n\t\t\t} catch (e: any) {\n\t\t\t\tif (self.printError) self.printError(e)\n\t\t\t\telse if (self.dom?.errdiv) throw { message: e.message || e.error || e, errdiv: self.dom?.errdiv }\n\t\t\t\telse throw e\n\t\t\t}\n\t\t},\n\t\t// must not expose self.bus directly since that\n\t\t// will also expose bus.emit() which should only\n\t\t// be triggered by this component\n\t\ton(eventType, callback) {\n\t\t\tif (!self.eventTypes) throw `no eventTypes[] for ${self.type} component`\n\t\t\tself.bus.on(eventType, callback)\n\t\t\treturn api\n\t\t},\n\t\tgetComponents(dotSepNames = '') {\n\t\t\treturn getComponents(self.components, dotSepNames)\n\t\t},\n\t\t//\n\t\t// When an async function takes a while to resolve, such as for server requests,\n\t\t// a subsequent action may trigger another request before the first one resolves,\n\t\t// in that case should ignore the stale response/result from the async function.\n\t\t// This is an api function so that code that has access to this component api\n\t\t// can also tie-in a function call to the fresheness of the component action.\n\t\t//\n\t\tasync detectStale(asyncFxn, opts: { abortCtrl?: AbortController; wait?: number } = {}) {\n\t\t\ttry {\n\t\t\t\tconst actionSequenceId = latestActionSequenceId\n\t\t\t\tconst promises: any[] = []\n\t\t\t\tlet i, promResolve\n\t\t\t\tif (opts.abortCtrl) {\n\t\t\t\t\tabortControllers.add(opts.abortCtrl)\n\t\t\t\t\tpromises.push(\n\t\t\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\t\t\tpromResolve = resolve\n\t\t\t\t\t\t\ti = setInterval(() => {\n\t\t\t\t\t\t\t\tif (actionSequenceId !== latestActionSequenceId) {\n\t\t\t\t\t\t\t\t\tclearInterval(i)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\topts.abortCtrl?.abort()\n\t\t\t\t\t\t\t\t\t\tthrow `stale sequenceId`\n\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\treject(e)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, opts.wait || 100)\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tpromises.push(asyncFxn())\n\t\t\t\t// the setInterval does not resolve, so Promise.race can only be \"won\" by the asyncFxn() result,\n\t\t\t\t// but the race can be aborted by the reject() inside the setInterval\n\t\t\t\tconst result = await Promise.race(promises)\n\t\t\t\tif (i) clearInterval(i)\n\t\t\t\tif (promResolve) promResolve()\n\t\t\t\tif (opts.abortCtrl && abortControllers.has(opts.abortCtrl)) abortControllers.delete(opts.abortCtrl)\n\t\t\t\tif (latestActionSequenceId !== actionSequenceId) {\n\t\t\t\t\t// another state change has been dispatched between the start and completion of the server request\n\t\t\t\t\tconsole.warn('aborted state update, the returned data corresponds to a stale action.sequenceId')\n\t\t\t\t\tif (opts.abortCtrl) opts.abortCtrl.abort()\n\t\t\t\t\treturn [result, true]\n\t\t\t\t}\n\t\t\t\treturn [result]\n\t\t\t} catch (e) {\n\t\t\t\tif (typeof e == 'string' && e.includes('sequenceId')) console.warn(e)\n\t\t\t\tthrow e\n\t\t\t}\n\t\t},\n\t\tgetAbortSignal() {\n\t\t\tif (!abortController) abortController = new AbortController()\n\t\t\treturn abortController?.signal\n\t\t\t// NOTE: the same signal can be reused to cancel different fetch requests, as tested pasting and running the following in the browser console:\n\t\t\t// > const ac = new AbortController(); for(let i=0; i<3; i++) fetch('/healthcheck', {signal: ac.signal}).then(r=>r.json()).then(console.log).catch(console.log); const t = setTimeout(()=>ac.abort('stale sequenceId'), 0);\n\t\t\t// stale sequenceId // repeats 3x\n\t\t\t// // can also change timeout to 1000, to see that aborting is okay after the signaled fetch completes\n\t\t},\n\t\ttriggerAbort(reason = '') {\n\t\t\tif (reason) console.info(`triggerAbort()`, reason)\n\t\t\tif (abortController) {\n\t\t\t\tabortController.abort('stale sequenceId')\n\t\t\t\tabortController = undefined\n\t\t\t}\n\t\t\tfor (const c of (abortControllers as Set<AbortController>).values()) {\n\t\t\t\ttry {\n\t\t\t\t\tc.abort()\n\t\t\t\t\tabortControllers.delete(c)\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// ok to\n\t\t\t\t\tconsole.warn('unable to cancel fetch: ', e)\n\t\t\t\t\tabortControllers.delete(c)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self.components) return\n\t\t\tfor (const name of Object.keys(self.components)) {\n\t\t\t\tconst component = self.components[name]\n\t\t\t\tif (Array.isArray(component)) {\n\t\t\t\t\tfor (const c of component) c.triggerAbort()\n\t\t\t\t} else if (typeof component.triggerAbort == 'function') {\n\t\t\t\t\tcomponent.triggerAbort()\n\t\t\t\t} else if (component && typeof component == 'object' && !component.main) {\n\t\t\t\t\tfor (const subname of Object.keys(component)) {\n\t\t\t\t\t\tif (typeof component[subname].triggerAbort == 'function') {\n\t\t\t\t\t\t\tcomponent[subname].triggerAbort()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetSequenceId() {\n\t\t\treturn latestActionSequenceId\n\t\t},\n\t\tisStaleSequenceId(sequenceId) {\n\t\t\treturn sequenceId != latestActionSequenceId\n\t\t},\n\t\tdestroy() {\n\t\t\t// delete references to other objects to make it easier\n\t\t\t// for automatic garbage collection to find unreferenced objects\n\t\t\tself.app.deregister(self.api)\n\t\t\tfor (const key in self.components) {\n\t\t\t\tconst component = self.components[key]\n\t\t\t\tif (typeof component.destroy == 'function') {\n\t\t\t\t\tcomponent.destroy()\n\t\t\t\t} else if (component.holder) {\n\t\t\t\t\tcomponent.holder.selectAll('*').remove()\n\t\t\t\t}\n\t\t\t\tdelete self.components[key]\n\t\t\t}\n\t\t\tif (typeof self.destroy == 'function') self.destroy()\n\t\t\tif (self.dom) {\n\t\t\t\tif (self.dom.holder) self.dom.holder.selectAll('*').remove()\n\t\t\t\tfor (const key in self.dom) {\n\t\t\t\t\tif (typeof self.dom[key]?.remove == 'function') self.dom[key].remove()\n\t\t\t\t\tdelete self.dom[key]\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (self.bus) self.bus.destroy()\n\t\t\tif (self.api) delete self.api\n\t\t}\n\t}\n\n\tif (!self.bus) {\n\t\tif (!self.eventTypes) self.eventTypes = ['postInit', 'postRender', 'postPrintError', 'firstRender', 'error']\n\t\tif (self.customEvents) self.eventTypes.push(...self.customEvents)\n\t\t// set up a required event bus\n\t\tself.bus = new Bus(api, self.eventTypes, (self.opts && self.opts.callbacks) || {})\n\t}\n\n\t// must not freeze returned api, as getInitFxn() will add api.Inner\n\treturn api\n}\n", "import { type AppApi } from './AppApi'\n\nexport class StoreBase {\n\ttype: string = 'store'\n\tapp: AppApi\n\t//type: string\n\t//id: string\n\topts: any\n\tid: string\n\tstate: any\n\t// dom: any\n\t// config: any\n\n\t/** use for assigning unique IDs where needed\n\t * may be used later to simplify getting component state by type and id */\n\tprevGeneratedId = 0\n\n\t// the action.sequenceId can be used by a chart/app\n\t// to identify the state that corresponds to an async step\n\t// like a server data request, so that a really late-arriving data\n\t// can be rejected if the state that was associated with that requested\n\t// is already stale/superseded by a subsequent state update\n\tsequenceId: number = 0\n\n\tnumPromisedWrites: number = 0\n\n\tconstructor(opts) {\n\t\tthis.opts = this.validateOpts(opts)\n\t\tthis.app = this.opts.app\n\t\tthis.id = opts.id\n\t}\n\n\tvalidateOpts(o: any = {}) {\n\t\treturn o\n\t}\n\n\tfromJson(objStr) {\n\t\t// this base method should not be reused when there is\n\t\t// a need to recover any Set or Map values, instead\n\t\t// declare a class specific fromJson() method that has\n\t\t// new Set(arrOfValues) or new Map(arrOfPairedValues)\n\t\t//\n\t\t// also, do not use this when autogenerated IDs\n\t\t// need to be attached to list entries\n\t\t//\n\t\treturn JSON.parse(objStr)\n\t}\n\n\ttoJson(this: any, obj: any = null) {\n\t\t// this base method should not be reused when there is\n\t\t// a need to stringify any Set or Map values,\n\t\t// instead declare a class specific toJson() method\n\t\t// that converts any Set or Map values to\n\t\t// [...Set] or [...Map] before JSON.stringify()\n\t\treturn JSON.stringify(obj ? obj : this.state)\n\t}\n\n\tdeepFreeze(obj) {\n\t\tObject.freeze(obj)\n\t\t// not using for..in loop, in order to not descend into inherited props/methods\n\t\tfor (const value of Object.values(obj)) {\n\t\t\tif (value !== null && typeof value == 'object') this.deepFreeze(value)\n\t\t}\n\t}\n\n\tcopyMerge(base, ...args) {\n\t\tconst target = typeof base == 'string' ? this.fromJson(base) : base\n\t\tfor (const arg of args) {\n\t\t\tif (arg) {\n\t\t\t\tconst source = typeof base == 'string' ? this.fromJson(this.toJson(arg)) : arg\n\t\t\t\tfor (const key in source) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!target[key] ||\n\t\t\t\t\t\tArray.isArray(target[key]) ||\n\t\t\t\t\t\ttypeof target[key] !== 'object' ||\n\t\t\t\t\t\tsource === null ||\n\t\t\t\t\t\tsource === undefined ||\n\t\t\t\t\t\tsource.isAtomic ||\n\t\t\t\t\t\ttarget?.isAtomic ||\n\t\t\t\t\t\ttarget[key]?.isAtomic\n\t\t\t\t\t)\n\t\t\t\t\t\ttarget[key] = source[key]\n\t\t\t\t\telse this.copyMerge(target[key], source[key])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn target\n\t}\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["sequenceId", "sequenceId", "api", "sequenceId"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getSorterUi
3
- } from "./chunk-VO5VI2LE.js";
3
+ } from "./chunk-AVOKYZGR.js";
4
4
  import {
5
5
  GeneSetEditUI,
6
6
  fillTermWrapper,
@@ -11,7 +11,7 @@ import {
11
11
  svgScroll,
12
12
  to_svg,
13
13
  zoom
14
- } from "./chunk-CTRQJ6M4.js";
14
+ } from "./chunk-IKXK6WW5.js";
15
15
  import {
16
16
  Menu
17
17
  } from "./chunk-OGVY5ALW.js";
@@ -29,7 +29,7 @@ import {
29
29
  } from "./chunk-6RC5V24O.js";
30
30
  import {
31
31
  icons
32
- } from "./chunk-CY52TN75.js";
32
+ } from "./chunk-7UR62HW6.js";
33
33
  import {
34
34
  select_default
35
35
  } from "./chunk-NDWTN4U5.js";
@@ -1219,7 +1219,7 @@ var MatrixControls = class {
1219
1219
  }
1220
1220
  }
1221
1221
  async addDictMenu(app, parent, holder = void 0) {
1222
- const termdb = await import("./app-QNI5FPKL.js");
1222
+ const termdb = await import("./app-QNBZNQHD.js");
1223
1223
  termdb.appInit({
1224
1224
  holder: holder || app.tip.d,
1225
1225
  vocabApi: this.parent.app.vocabApi,
@@ -1410,4 +1410,4 @@ var MatrixControls = class {
1410
1410
  export {
1411
1411
  MatrixControls
1412
1412
  };
1413
- //# sourceMappingURL=chunk-MPDW5RZN.js.map
1413
+ //# sourceMappingURL=chunk-LJG5K5IY.js.map
@@ -2,10 +2,10 @@ import {
2
2
  first_genetrack_tolist,
3
3
  gmmode,
4
4
  sayerror
5
- } from "./chunk-CTRQJ6M4.js";
5
+ } from "./chunk-IKXK6WW5.js";
6
6
  import {
7
7
  dofetch3
8
- } from "./chunk-QIE5DTBW.js";
8
+ } from "./chunk-ABMFFNR4.js";
9
9
  import {
10
10
  codon_stop,
11
11
  nt2aa,
@@ -79,7 +79,7 @@ async function step1_findgm(arg) {
79
79
  debugmode: arg.debugmode
80
80
  };
81
81
  first_genetrack_tolist(arg.genome, par.tklst);
82
- const b = await import("./block-CHK3JXWE.js");
82
+ const b = await import("./block-6XQF343G.js");
83
83
  const block = new b.Block(par);
84
84
  block.addhlregion(r.chr, r.start, r.stop - 1);
85
85
  } catch (e) {
@@ -256,7 +256,7 @@ async function step3(arg) {
256
256
  delete ds.legacyDsIsUninitiated;
257
257
  }
258
258
  }
259
- const b = await import("./block-CHK3JXWE.js");
259
+ const b = await import("./block-6XQF343G.js");
260
260
  arg.__blockInstance = new b.Block({
261
261
  genome: arg.genome,
262
262
  holder: arg.holder,
@@ -290,4 +290,4 @@ export {
290
290
  string2snp,
291
291
  block_init_default
292
292
  };
293
- //# sourceMappingURL=chunk-JZJJOLHH.js.map
293
+ //# sourceMappingURL=chunk-LRFMJ4EE.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-B6BXSOVF.js";
4
4
  import {
5
5
  Tabs
6
- } from "./chunk-CTRQJ6M4.js";
6
+ } from "./chunk-IKXK6WW5.js";
7
7
  import {
8
8
  HandlerBase
9
9
  } from "./chunk-LSEFWW72.js";
@@ -76,22 +76,22 @@ var NumericHandler = class extends HandlerBase {
76
76
  if (!this.handlerByMode[tabData.mode]) {
77
77
  switch (tabData.mode) {
78
78
  case "continuous": {
79
- const { NumContEditor } = await import("./NumContEditor-LMZDNT5K.js");
79
+ const { NumContEditor } = await import("./NumContEditor-LWNWFSCT.js");
80
80
  this.handlerByMode.continuous = new NumContEditor(this.opts, this);
81
81
  break;
82
82
  }
83
83
  case "discrete": {
84
- const { NumDiscreteEditor } = await import("./NumDiscreteEditor-WWPUE3FP.js");
84
+ const { NumDiscreteEditor } = await import("./NumDiscreteEditor-DD6SKXHS.js");
85
85
  this.handlerByMode.discrete = new NumDiscreteEditor(this.opts, this);
86
86
  break;
87
87
  }
88
88
  case "binary": {
89
- const { NumBinaryEditor } = await import("./NumBinaryEditor-WZZC2KPZ.js");
89
+ const { NumBinaryEditor } = await import("./NumBinaryEditor-4FQYQRMK.js");
90
90
  this.handlerByMode.binary = new NumBinaryEditor(this.opts, this);
91
91
  break;
92
92
  }
93
93
  case "spline": {
94
- const { NumSplineEditor } = await import("./NumSplineEditor-YDPRBQOM.js");
94
+ const { NumSplineEditor } = await import("./NumSplineEditor-RRMQACCX.js");
95
95
  this.handlerByMode.spline = new NumSplineEditor(this.opts, this);
96
96
  break;
97
97
  }
@@ -155,4 +155,4 @@ var NumericHandler = class extends HandlerBase {
155
155
  export {
156
156
  NumericHandler
157
157
  };
158
- //# sourceMappingURL=chunk-SGCTGCO2.js.map
158
+ //# sourceMappingURL=chunk-LYQPQQ6A.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getAppInit,
3
3
  getStoreInit
4
- } from "./chunk-VGLPN6PS.js";
4
+ } from "./chunk-KZBB7S6A.js";
5
5
 
6
6
  // test/test.helpers.js
7
7
  function sleep(ms) {
@@ -223,4 +223,4 @@ export {
223
223
  detectOne,
224
224
  whenVisible
225
225
  };
226
- //# sourceMappingURL=chunk-XENPVHIO.js.map
226
+ //# sourceMappingURL=chunk-M7MBFGEA.js.map
@@ -2,13 +2,13 @@ import {
2
2
  colorDelta,
3
3
  getInterpolatedDomainRange,
4
4
  removeOutliers
5
- } from "./chunk-CTRQJ6M4.js";
5
+ } from "./chunk-IKXK6WW5.js";
6
6
  import {
7
7
  dtcnv
8
8
  } from "./chunk-6RC5V24O.js";
9
9
  import {
10
10
  copyMerge
11
- } from "./chunk-VGLPN6PS.js";
11
+ } from "./chunk-KZBB7S6A.js";
12
12
  import {
13
13
  Blues_default,
14
14
  Reds_default
@@ -464,4 +464,4 @@ export {
464
464
  setLayout,
465
465
  matrix_layout_exports
466
466
  };
467
- //# sourceMappingURL=chunk-NZR3WNO6.js.map
467
+ //# sourceMappingURL=chunk-N4XAZC5O.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  appInit
3
- } from "./chunk-UWYO26OF.js";
3
+ } from "./chunk-RZWCVHII.js";
4
4
  import {
5
5
  showErrorsWithCounter
6
- } from "./chunk-CTRQJ6M4.js";
6
+ } from "./chunk-IKXK6WW5.js";
7
7
  import {
8
8
  mclass
9
9
  } from "./chunk-6RC5V24O.js";
@@ -155,4 +155,4 @@ function validateMutation(mutation, errors) {
155
155
  export {
156
156
  launch
157
157
  };
158
- //# sourceMappingURL=chunk-ZB2OEEK2.js.map
158
+ //# sourceMappingURL=chunk-OLMWMYZM.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  matrix_layout_exports
3
- } from "./chunk-NZR3WNO6.js";
3
+ } from "./chunk-N4XAZC5O.js";
4
4
  import {
5
5
  matrix_serieses_exports
6
6
  } from "./chunk-ZSPOCZOT.js";
@@ -12,25 +12,25 @@ import {
12
12
  } from "./chunk-NPCN4T5F.js";
13
13
  import {
14
14
  setComputedConfig
15
- } from "./chunk-TINZX7UD.js";
15
+ } from "./chunk-XJYLUSJH.js";
16
16
  import {
17
17
  setMatrixDom
18
18
  } from "./chunk-CNBWECUD.js";
19
19
  import {
20
20
  setInteractivity
21
- } from "./chunk-W55E4RPB.js";
21
+ } from "./chunk-7DFVPWFW.js";
22
22
  import {
23
23
  setRenderers
24
- } from "./chunk-GYKTYGJQ.js";
24
+ } from "./chunk-G54EMJTA.js";
25
25
  import {
26
26
  MatrixCluster
27
27
  } from "./chunk-A5TSPTYC.js";
28
28
  import {
29
29
  MatrixControls
30
- } from "./chunk-MPDW5RZN.js";
30
+ } from "./chunk-LJG5K5IY.js";
31
31
  import {
32
32
  matrix_data_exports
33
- } from "./chunk-2KJMSFOW.js";
33
+ } from "./chunk-TZ25ECOQ.js";
34
34
  import {
35
35
  PlotBase,
36
36
  TwRouter,
@@ -38,7 +38,7 @@ import {
38
38
  rebaseGroupFilter,
39
39
  sayerror,
40
40
  svgLegend
41
- } from "./chunk-CTRQJ6M4.js";
41
+ } from "./chunk-IKXK6WW5.js";
42
42
  import {
43
43
  dt2label,
44
44
  mclass,
@@ -48,7 +48,7 @@ import {
48
48
  copyMerge,
49
49
  deepEqual,
50
50
  getCompInit
51
- } from "./chunk-VGLPN6PS.js";
51
+ } from "./chunk-KZBB7S6A.js";
52
52
  import {
53
53
  convertUnits
54
54
  } from "./chunk-BEWDIM6H.js";
@@ -482,4 +482,4 @@ export {
482
482
  componentInit,
483
483
  makeChartBtnMenu
484
484
  };
485
- //# sourceMappingURL=chunk-HWBM5EIT.js.map
485
+ //# sourceMappingURL=chunk-OM5BLCRN.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  InputValuesTable
3
- } from "./chunk-O7P4EZHA.js";
3
+ } from "./chunk-QXGUNKDA.js";
4
4
  import {
5
5
  RegressionResults
6
- } from "./chunk-CKY3ZZAO.js";
6
+ } from "./chunk-VU5VYG3S.js";
7
7
  import {
8
8
  mayRunSnplstTask
9
9
  } from "./chunk-7OYOC7XY.js";
@@ -15,20 +15,20 @@ import {
15
15
  make_one_checkbox,
16
16
  sayerror,
17
17
  termsettingInit
18
- } from "./chunk-CTRQJ6M4.js";
18
+ } from "./chunk-IKXK6WW5.js";
19
19
  import {
20
20
  Menu
21
21
  } from "./chunk-OGVY5ALW.js";
22
22
  import {
23
23
  get_bin_label
24
- } from "./chunk-QIE5DTBW.js";
24
+ } from "./chunk-ABMFFNR4.js";
25
25
  import {
26
26
  isDictionaryType
27
27
  } from "./chunk-YJWWWCJ6.js";
28
28
  import {
29
29
  copyMerge,
30
30
  getCompInit
31
- } from "./chunk-VGLPN6PS.js";
31
+ } from "./chunk-KZBB7S6A.js";
32
32
  import {
33
33
  select_default
34
34
  } from "./chunk-NDWTN4U5.js";
@@ -1083,4 +1083,4 @@ export {
1083
1083
  InputTerm,
1084
1084
  RegressionInputs
1085
1085
  };
1086
- //# sourceMappingURL=chunk-LMGPUDWT.js.map
1086
+ //# sourceMappingURL=chunk-PNNA43ZG.js.map