@openneuro/app 4.2.0 → 4.2.1

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 (552) hide show
  1. package/package.json +9 -18
  2. package/src/scripts/common/forms/warn-button.jsx +1 -1
  3. package/src/scripts/pages/citation-page.tsx +41 -0
  4. package/src/scripts/refactor_2021/admin/admin.jsx +1 -1
  5. package/src/scripts/refactor_2021/admin/flagged-files.jsx +2 -1
  6. package/src/scripts/refactor_2021/admin/user-tools.tsx +3 -5
  7. package/src/scripts/refactor_2021/admin/users.jsx +7 -10
  8. package/src/scripts/{authentication → refactor_2021/authentication}/__tests__/profile.spec.js +1 -1
  9. package/src/scripts/{datalad/dataset → refactor_2021/dataset/comments}/__tests__/__snapshots__/comment.spec.jsx.snap +0 -8
  10. package/src/scripts/refactor_2021/dataset/comments/__tests__/__snapshots__/comments.spec.jsx.snap +129 -0
  11. package/src/scripts/{datalad/dataset → refactor_2021/dataset/comments}/__tests__/comment.spec.jsx +0 -0
  12. package/src/scripts/{datalad/dataset → refactor_2021/dataset/comments}/__tests__/comments.spec.jsx +0 -0
  13. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/__snapshots__/download-command-line.spec.jsx.snap +0 -0
  14. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/__snapshots__/download-link.spec.jsx.snap +645 -105
  15. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/__snapshots__/shell-example.spec.jsx.snap +6 -3
  16. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/download-command-line.spec.jsx +0 -0
  17. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/download-link.spec.jsx +0 -0
  18. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/download-native.spec.js +0 -0
  19. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/shell-example.spec.jsx +0 -0
  20. package/src/scripts/refactor_2021/dataset/files/file-tree.jsx +3 -2
  21. package/src/scripts/refactor_2021/dataset/fragments/__tests__/__snapshots__/cancel-button.spec.tsx.snap +10 -0
  22. package/src/scripts/refactor_2021/dataset/fragments/__tests__/__snapshots__/edit-button.spec.tsx.snap +10 -0
  23. package/src/scripts/refactor_2021/dataset/fragments/__tests__/__snapshots__/edit-list.spec.jsx.snap +24 -0
  24. package/src/scripts/refactor_2021/dataset/fragments/__tests__/__snapshots__/save-button.spec.tsx.snap +10 -0
  25. package/src/scripts/{datalad/fragments/__tests__/__snapshots__/select-input.spec.jsx.snap → refactor_2021/dataset/fragments/__tests__/__snapshots__/select-input.spec.tsx.snap} +0 -0
  26. package/src/scripts/{datalad/fragments/__tests__/cancel-button.spec.jsx → refactor_2021/dataset/fragments/__tests__/cancel-button.spec.tsx} +2 -2
  27. package/src/scripts/{datalad → refactor_2021/dataset}/fragments/__tests__/dataset-citation.spec.jsx +0 -0
  28. package/src/scripts/{datalad/fragments/__tests__/edit-button.spec.jsx → refactor_2021/dataset/fragments/__tests__/edit-button.spec.tsx} +2 -2
  29. package/src/scripts/refactor_2021/dataset/fragments/__tests__/edit-list.spec.jsx +27 -0
  30. package/src/scripts/{datalad/fragments/__tests__/save-button.spec.jsx → refactor_2021/dataset/fragments/__tests__/save-button.spec.tsx} +2 -2
  31. package/src/scripts/{datalad/fragments/__tests__/select-input.spec.jsx → refactor_2021/dataset/fragments/__tests__/select-input.spec.tsx} +0 -0
  32. package/src/scripts/refactor_2021/dataset/mutations/__tests__/__snapshots__/delete.spec.jsx.snap +50 -0
  33. package/src/scripts/{datalad → refactor_2021/dataset}/mutations/__tests__/__snapshots__/description.spec.jsx.snap +0 -0
  34. package/src/scripts/refactor_2021/dataset/mutations/__tests__/__snapshots__/update-permissions.spec.jsx.snap +27 -0
  35. package/src/scripts/{datalad → refactor_2021/dataset}/mutations/__tests__/cache-id.spec.js +0 -0
  36. package/src/scripts/{datalad → refactor_2021/dataset}/mutations/__tests__/delete.spec.jsx +8 -8
  37. package/src/scripts/{datalad → refactor_2021/dataset}/mutations/__tests__/description.spec.jsx +0 -0
  38. package/src/scripts/{datalad/mutations/__tests__/remove-permissions.spec.jsx → refactor_2021/dataset/mutations/__tests__/remove-permissions.spec.tsx} +1 -1
  39. package/src/scripts/refactor_2021/dataset/mutations/__tests__/update-permissions.spec.jsx +28 -0
  40. package/src/scripts/refactor_2021/dataset/mutations/update-file.jsx +2 -2
  41. package/src/scripts/refactor_2021/routes.tsx +1 -1
  42. package/src/scripts/refactor_2021/search/initial-search-params.tsx +7 -7
  43. package/src/scripts/refactor_2021/search/inputs/index.ts +2 -2
  44. package/src/scripts/refactor_2021/search/inputs/{gender-radios.tsx → sex-radios.tsx} +10 -10
  45. package/src/scripts/refactor_2021/search/search-container.tsx +2 -2
  46. package/src/scripts/refactor_2021/search/search-params-ctx.tsx +3 -3
  47. package/src/scripts/refactor_2021/search/use-search-results.tsx +3 -3
  48. package/src/scripts/refactor_2021/user/api.jsx +11 -6
  49. package/src/sass/_bootstrap-compass.scss +0 -9
  50. package/src/sass/_bootstrap-mincer.scss +0 -19
  51. package/src/sass/_bootstrap-sprockets.scss +0 -9
  52. package/src/sass/_bootstrap.scss +0 -50
  53. package/src/sass/animate/_attention-seekers/_bounce.scss +0 -15
  54. package/src/sass/animate/_attention-seekers/_flash.scss +0 -14
  55. package/src/sass/animate/_attention-seekers/_pulse.scss +0 -17
  56. package/src/sass/animate/_attention-seekers/_rubberBand.scss +0 -19
  57. package/src/sass/animate/_attention-seekers/_shake.scss +0 -15
  58. package/src/sass/animate/_attention-seekers/_swing.scss +0 -19
  59. package/src/sass/animate/_attention-seekers/_tada.scss +0 -17
  60. package/src/sass/animate/_attention-seekers/_wobble.scss +0 -21
  61. package/src/sass/animate/_attention-seekers/attention-seekers.scss +0 -12
  62. package/src/sass/animate/_bouncing-entrances/_bounceIn.scss +0 -26
  63. package/src/sass/animate/_bouncing-entrances/_bounceInDown.scss +0 -26
  64. package/src/sass/animate/_bouncing-entrances/_bounceInLeft.scss +0 -26
  65. package/src/sass/animate/_bouncing-entrances/_bounceInRight.scss +0 -26
  66. package/src/sass/animate/_bouncing-entrances/_bounceInUp.scss +0 -26
  67. package/src/sass/animate/_bouncing-entrances/bouncing-entrances.scss +0 -9
  68. package/src/sass/animate/_bouncing-exits/_bounceOut.scss +0 -26
  69. package/src/sass/animate/_bouncing-exits/_bounceOutDown.scss +0 -23
  70. package/src/sass/animate/_bouncing-exits/_bounceOutLeft.scss +0 -23
  71. package/src/sass/animate/_bouncing-exits/_bounceOutRight.scss +0 -23
  72. package/src/sass/animate/_bouncing-exits/_bounceOutUp.scss +0 -23
  73. package/src/sass/animate/_bouncing-exits/bouncing-exits.scss +0 -4
  74. package/src/sass/animate/_fading-entrances/_fadeIn.scss +0 -14
  75. package/src/sass/animate/_fading-entrances/_fadeInDown.scss +0 -20
  76. package/src/sass/animate/_fading-entrances/_fadeInDownBig.scss +0 -20
  77. package/src/sass/animate/_fading-entrances/_fadeInLeft.scss +0 -20
  78. package/src/sass/animate/_fading-entrances/_fadeInLeftBig.scss +0 -20
  79. package/src/sass/animate/_fading-entrances/_fadeInRight.scss +0 -20
  80. package/src/sass/animate/_fading-entrances/_fadeInRightBig.scss +0 -20
  81. package/src/sass/animate/_fading-entrances/_fadeInUp.scss +0 -19
  82. package/src/sass/animate/_fading-entrances/_fadeInUpBig.scss +0 -20
  83. package/src/sass/animate/_fading-entrances/fading-entrances.scss +0 -5
  84. package/src/sass/animate/_fading-exits/_fadeOut.scss +0 -14
  85. package/src/sass/animate/_fading-exits/_fadeOutDown.scss +0 -20
  86. package/src/sass/animate/_fading-exits/_fadeOutDownBig.scss +0 -20
  87. package/src/sass/animate/_fading-exits/_fadeOutLeft.scss +0 -20
  88. package/src/sass/animate/_fading-exits/_fadeOutLeftBig.scss +0 -20
  89. package/src/sass/animate/_fading-exits/_fadeOutRight.scss +0 -20
  90. package/src/sass/animate/_fading-exits/_fadeOutRightBig.scss +0 -20
  91. package/src/sass/animate/_fading-exits/_fadeOutUp.scss +0 -20
  92. package/src/sass/animate/_fading-exits/_fadeOutUpBig.scss +0 -20
  93. package/src/sass/animate/_fading-exits/fading-exits.scss +0 -5
  94. package/src/sass/animate/_flippers/_flip.scss +0 -33
  95. package/src/sass/animate/_flippers/_flipInX.scss +0 -26
  96. package/src/sass/animate/_flippers/_flipInY.scss +0 -26
  97. package/src/sass/animate/_flippers/_flipOutX.scss +0 -20
  98. package/src/sass/animate/_flippers/_flipOutY.scss +0 -20
  99. package/src/sass/animate/_flippers/flippers.scss +0 -8
  100. package/src/sass/animate/_lightspeed/_lightSpeedIn.scss +0 -29
  101. package/src/sass/animate/_lightspeed/_lightSpeedOut.scss +0 -21
  102. package/src/sass/animate/_lightspeed/lightspeed.scss +0 -3
  103. package/src/sass/animate/_properties.scss +0 -119
  104. package/src/sass/animate/_rotating-entrances/_rotateIn.scss +0 -22
  105. package/src/sass/animate/_rotating-entrances/_rotateInDownLeft.scss +0 -22
  106. package/src/sass/animate/_rotating-entrances/_rotateInDownRight.scss +0 -22
  107. package/src/sass/animate/_rotating-entrances/_rotateInUpLeft.scss +0 -22
  108. package/src/sass/animate/_rotating-entrances/_rotateInUpRight.scss +0 -22
  109. package/src/sass/animate/_rotating-entrances/rotating-entrances.scss +0 -8
  110. package/src/sass/animate/_rotating-exits/_rotateOut.scss +0 -22
  111. package/src/sass/animate/_rotating-exits/_rotateOutDownLeft.scss +0 -22
  112. package/src/sass/animate/_rotating-exits/_rotateOutDownRight.scss +0 -22
  113. package/src/sass/animate/_rotating-exits/_rotateOutUpLeft.scss +0 -22
  114. package/src/sass/animate/_rotating-exits/_rotateOutUpRight.scss +0 -22
  115. package/src/sass/animate/_rotating-exits/rotating-exits.scss +0 -8
  116. package/src/sass/animate/_sliding-entrances/_slideInDown.scss +0 -19
  117. package/src/sass/animate/_sliding-entrances/_slideInLeft.scss +0 -19
  118. package/src/sass/animate/_sliding-entrances/_slideInRight.scss +0 -42
  119. package/src/sass/animate/_sliding-entrances/_slideInUp.scss +0 -19
  120. package/src/sass/animate/_sliding-entrances/sliding-entrances.scss +0 -7
  121. package/src/sass/animate/_sliding-exits/_slideOutDown.scss +0 -19
  122. package/src/sass/animate/_sliding-exits/_slideOutLeft.scss +0 -19
  123. package/src/sass/animate/_sliding-exits/_slideOutRight.scss +0 -19
  124. package/src/sass/animate/_sliding-exits/_slideOutUp.scss +0 -19
  125. package/src/sass/animate/_sliding-exits/sliding-exits.scss +0 -7
  126. package/src/sass/animate/_specials/_hinge.scss +0 -37
  127. package/src/sass/animate/_specials/_rollIn.scss +0 -20
  128. package/src/sass/animate/_specials/_rollOut.scss +0 -22
  129. package/src/sass/animate/_specials/specials.scss +0 -6
  130. package/src/sass/animate/_zooming-entrances/_zoomIn.scss +0 -19
  131. package/src/sass/animate/_zooming-entrances/_zoomInDown.scss +0 -22
  132. package/src/sass/animate/_zooming-entrances/_zoomInLeft.scss +0 -22
  133. package/src/sass/animate/_zooming-entrances/_zoomInRight.scss +0 -22
  134. package/src/sass/animate/_zooming-entrances/_zoomInUp.scss +0 -22
  135. package/src/sass/animate/_zooming-entrances/zooming-entrances.scss +0 -4
  136. package/src/sass/animate/_zooming-exits/_zoomOut.scss +0 -22
  137. package/src/sass/animate/_zooming-exits/_zoomOutDown.scss +0 -23
  138. package/src/sass/animate/_zooming-exits/_zoomOutLeft.scss +0 -21
  139. package/src/sass/animate/_zooming-exits/_zoomOutRight.scss +0 -21
  140. package/src/sass/animate/_zooming-exits/_zoomOutUp.scss +0 -23
  141. package/src/sass/animate/_zooming-exits/zooming-exits.scss +0 -4
  142. package/src/sass/animate/animate.css +0 -7497
  143. package/src/sass/animate/animate.css.map +0 -7
  144. package/src/sass/animate/animate.min.css +0 -2
  145. package/src/sass/animate/animate.min.css.map +0 -7
  146. package/src/sass/animate/animate.scss +0 -30
  147. package/src/sass/animate/bower.json +0 -22
  148. package/src/sass/bootstrap/_alerts.scss +0 -70
  149. package/src/sass/bootstrap/_badges.scss +0 -68
  150. package/src/sass/bootstrap/_breadcrumbs.scss +0 -26
  151. package/src/sass/bootstrap/_button-groups.scss +0 -243
  152. package/src/sass/bootstrap/_buttons.scss +0 -160
  153. package/src/sass/bootstrap/_carousel.scss +0 -269
  154. package/src/sass/bootstrap/_close.scss +0 -36
  155. package/src/sass/bootstrap/_code.scss +0 -69
  156. package/src/sass/bootstrap/_component-animations.scss +0 -37
  157. package/src/sass/bootstrap/_dropdowns.scss +0 -223
  158. package/src/sass/bootstrap/_forms.scss +0 -613
  159. package/src/sass/bootstrap/_grid.scss +0 -84
  160. package/src/sass/bootstrap/_input-groups.scss +0 -166
  161. package/src/sass/bootstrap/_jumbotron.scss +0 -50
  162. package/src/sass/bootstrap/_labels.scss +0 -66
  163. package/src/sass/bootstrap/_list-group.scss +0 -124
  164. package/src/sass/bootstrap/_media.scss +0 -61
  165. package/src/sass/bootstrap/_mixins.scss +0 -39
  166. package/src/sass/bootstrap/_modals.scss +0 -150
  167. package/src/sass/bootstrap/_navbar.scss +0 -647
  168. package/src/sass/bootstrap/_navs.scss +0 -243
  169. package/src/sass/bootstrap/_normalize.scss +0 -427
  170. package/src/sass/bootstrap/_pager.scss +0 -54
  171. package/src/sass/bootstrap/_pagination.scss +0 -88
  172. package/src/sass/bootstrap/_panels.scss +0 -265
  173. package/src/sass/bootstrap/_popovers.scss +0 -135
  174. package/src/sass/bootstrap/_print.scss +0 -107
  175. package/src/sass/bootstrap/_progress-bars.scss +0 -87
  176. package/src/sass/bootstrap/_responsive-embed.scss +0 -35
  177. package/src/sass/bootstrap/_responsive-utilities.scss +0 -177
  178. package/src/sass/bootstrap/_scaffolding.scss +0 -162
  179. package/src/sass/bootstrap/_tables.scss +0 -234
  180. package/src/sass/bootstrap/_theme.scss +0 -273
  181. package/src/sass/bootstrap/_thumbnails.scss +0 -38
  182. package/src/sass/bootstrap/_tooltip.scss +0 -102
  183. package/src/sass/bootstrap/_type.scss +0 -298
  184. package/src/sass/bootstrap/_utilities.scss +0 -55
  185. package/src/sass/bootstrap/_variables.scss +0 -866
  186. package/src/sass/bootstrap/_wells.scss +0 -29
  187. package/src/sass/bootstrap/float-label.scss +0 -70
  188. package/src/sass/bootstrap/mixins/_alerts.scss +0 -14
  189. package/src/sass/bootstrap/mixins/_background-variant.scss +0 -11
  190. package/src/sass/bootstrap/mixins/_border-radius.scss +0 -18
  191. package/src/sass/bootstrap/mixins/_buttons.scss +0 -52
  192. package/src/sass/bootstrap/mixins/_center-block.scss +0 -7
  193. package/src/sass/bootstrap/mixins/_clearfix.scss +0 -22
  194. package/src/sass/bootstrap/mixins/_forms.scss +0 -88
  195. package/src/sass/bootstrap/mixins/_gradients.scss +0 -58
  196. package/src/sass/bootstrap/mixins/_grid-framework.scss +0 -81
  197. package/src/sass/bootstrap/mixins/_grid.scss +0 -122
  198. package/src/sass/bootstrap/mixins/_hide-text.scss +0 -21
  199. package/src/sass/bootstrap/mixins/_image.scss +0 -33
  200. package/src/sass/bootstrap/mixins/_labels.scss +0 -12
  201. package/src/sass/bootstrap/mixins/_list-group.scss +0 -31
  202. package/src/sass/bootstrap/mixins/_nav-divider.scss +0 -10
  203. package/src/sass/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  204. package/src/sass/bootstrap/mixins/_opacity.scss +0 -8
  205. package/src/sass/bootstrap/mixins/_pagination.scss +0 -23
  206. package/src/sass/bootstrap/mixins/_panels.scss +0 -24
  207. package/src/sass/bootstrap/mixins/_progress-bar.scss +0 -10
  208. package/src/sass/bootstrap/mixins/_reset-filter.scss +0 -8
  209. package/src/sass/bootstrap/mixins/_resize.scss +0 -6
  210. package/src/sass/bootstrap/mixins/_responsive-visibility.scss +0 -21
  211. package/src/sass/bootstrap/mixins/_size.scss +0 -10
  212. package/src/sass/bootstrap/mixins/_tab-focus.scss +0 -9
  213. package/src/sass/bootstrap/mixins/_table-row.scss +0 -28
  214. package/src/sass/bootstrap/mixins/_text-emphasis.scss +0 -11
  215. package/src/sass/bootstrap/mixins/_text-overflow.scss +0 -8
  216. package/src/sass/bootstrap/mixins/_vendor-prefixes.scss +0 -222
  217. package/src/sass/crn_app/_admin.admin.scss +0 -205
  218. package/src/sass/crn_app/_admin.graphs.scss +0 -51
  219. package/src/sass/crn_app/_admin.tools.scss +0 -24
  220. package/src/sass/crn_app/_api.scss +0 -65
  221. package/src/sass/crn_app/_bootstrap.overrides.scss +0 -54
  222. package/src/sass/crn_app/_colors.scss +0 -88
  223. package/src/sass/crn_app/_common.click-to-edit.scss +0 -187
  224. package/src/sass/crn_app/_common.modals.scss +0 -686
  225. package/src/sass/crn_app/_common.pagination.scss +0 -41
  226. package/src/sass/crn_app/_common.papaya.scss +0 -348
  227. package/src/sass/crn_app/_common.progress-bar.scss +0 -26
  228. package/src/sass/crn_app/_common.spinner.scss +0 -63
  229. package/src/sass/crn_app/_common.status.scss +0 -103
  230. package/src/sass/crn_app/_common.tooltip.scss +0 -22
  231. package/src/sass/crn_app/_common.typeahead.scss +0 -31
  232. package/src/sass/crn_app/_common.variables.scss +0 -16
  233. package/src/sass/crn_app/_dashboard.datasets.scss +0 -588
  234. package/src/sass/crn_app/_dataset.comments.scss +0 -201
  235. package/src/sass/crn_app/_dataset.dataset.scss +0 -161
  236. package/src/sass/crn_app/_dataset.file-tree.scss +0 -277
  237. package/src/sass/crn_app/_dataset.jobs.scss +0 -701
  238. package/src/sass/crn_app/_dataset.sidebar.scss +0 -265
  239. package/src/sass/crn_app/_dataset.tools.scss +0 -118
  240. package/src/sass/crn_app/_elements-wrappers.scss +0 -870
  241. package/src/sass/crn_app/_faq.scss +0 -37
  242. package/src/sass/crn_app/_frontPage.scss +0 -569
  243. package/src/sass/crn_app/_nav.navbar.scss +0 -387
  244. package/src/sass/crn_app/_theme.scss +0 -87
  245. package/src/sass/crn_app/_upload.upload.scss +0 -393
  246. package/src/sass/crn_app/_upload.validation.scss +0 -210
  247. package/src/sass/draft/draft.scss +0 -11
  248. package/src/sass/draft/rich-editor.scss +0 -73
  249. package/src/sass/font-awesome/_animated.scss +0 -34
  250. package/src/sass/font-awesome/_bordered-pulled.scss +0 -25
  251. package/src/sass/font-awesome/_core.scss +0 -12
  252. package/src/sass/font-awesome/_fixed-width.scss +0 -6
  253. package/src/sass/font-awesome/_font-awesome.scss +0 -17
  254. package/src/sass/font-awesome/_icons.scss +0 -697
  255. package/src/sass/font-awesome/_larger.scss +0 -13
  256. package/src/sass/font-awesome/_list.scss +0 -19
  257. package/src/sass/font-awesome/_mixins.scss +0 -26
  258. package/src/sass/font-awesome/_path.scss +0 -15
  259. package/src/sass/font-awesome/_rotated-flipped.scss +0 -20
  260. package/src/sass/font-awesome/_stacked.scss +0 -20
  261. package/src/sass/font-awesome/_variables.scss +0 -713
  262. package/src/sass/main.scss +0 -317
  263. package/src/sass/pre-refactor-with-wrapper-main.scss +0 -1549
  264. package/src/scripts/admin/__tests__/__snapshots__/exports.spec.jsx.snap +0 -112
  265. package/src/scripts/admin/__tests__/exports.spec.jsx +0 -15
  266. package/src/scripts/admin/__tests__/users.spec.jsx +0 -15
  267. package/src/scripts/admin/admin.jsx +0 -53
  268. package/src/scripts/admin/flagged-files.jsx +0 -178
  269. package/src/scripts/admin/user-fragment.ts +0 -14
  270. package/src/scripts/admin/user-tools.tsx +0 -83
  271. package/src/scripts/admin/users.jsx +0 -224
  272. package/src/scripts/authentication/admin-user.jsx +0 -23
  273. package/src/scripts/authentication/buttons.jsx +0 -26
  274. package/src/scripts/authentication/globus-button.jsx +0 -39
  275. package/src/scripts/authentication/google-button.jsx +0 -32
  276. package/src/scripts/authentication/logged-in.jsx +0 -12
  277. package/src/scripts/authentication/logged-out.jsx +0 -12
  278. package/src/scripts/authentication/loginCheck.js +0 -7
  279. package/src/scripts/authentication/orcid-button.jsx +0 -32
  280. package/src/scripts/authentication/withProfile.jsx +0 -22
  281. package/src/scripts/classic.tsx +0 -18
  282. package/src/scripts/common/forms/file-select.tsx +0 -71
  283. package/src/scripts/common/partials/__tests__/__snapshots__/footer.spec.jsx.snap +0 -42
  284. package/src/scripts/common/partials/__tests__/__snapshots__/metric.spec.jsx.snap +0 -101
  285. package/src/scripts/common/partials/__tests__/footer.spec.jsx +0 -10
  286. package/src/scripts/common/partials/__tests__/metric.spec.jsx +0 -31
  287. package/src/scripts/common/partials/footer.jsx +0 -40
  288. package/src/scripts/common/partials/login.jsx +0 -99
  289. package/src/scripts/common/partials/metric.jsx +0 -73
  290. package/src/scripts/common/partials/spinner.jsx +0 -34
  291. package/src/scripts/common/partials/status.jsx +0 -96
  292. package/src/scripts/common/partials/timeout.jsx +0 -47
  293. package/src/scripts/common/partials/tooltip.jsx +0 -36
  294. package/src/scripts/components/__tests__/dropdown-button.spec.tsx +0 -49
  295. package/src/scripts/components/dropdown-button.tsx +0 -42
  296. package/src/scripts/components/panel-group.tsx +0 -24
  297. package/src/scripts/components/panel.tsx +0 -42
  298. package/src/scripts/datalad/__tests__/snapshotVersion.spec.js +0 -21
  299. package/src/scripts/datalad/comments/__tests__/comment-editor.spec.jsx +0 -19
  300. package/src/scripts/datalad/comments/block-style-controls.jsx +0 -46
  301. package/src/scripts/datalad/comments/comment-editor.jsx +0 -79
  302. package/src/scripts/datalad/comments/inline-style-controls.jsx +0 -34
  303. package/src/scripts/datalad/comments/style-button.jsx +0 -28
  304. package/src/scripts/datalad/dashboard/__tests__/__snapshots__/dashboard.spec.jsx.snap +0 -163
  305. package/src/scripts/datalad/dashboard/__tests__/dashboard.spec.jsx +0 -21
  306. package/src/scripts/datalad/dashboard/dashboard.jsx +0 -54
  307. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-filter.spec.jsx.snap +0 -20
  308. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-row-skeleton.spec.jsx.snap +0 -13
  309. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-row.spec.jsx.snap +0 -65
  310. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-sorter.spec.jsx.snap +0 -14
  311. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-virtual-scroller.spec.jsx.snap +0 -17
  312. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/uploaded.spec.jsx.snap +0 -27
  313. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-filter.spec.jsx +0 -67
  314. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-query.spec.jsx +0 -72
  315. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-row-skeleton.spec.jsx +0 -9
  316. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-row.spec.jsx +0 -53
  317. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-sorter.spec.jsx +0 -69
  318. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-virtual-scroller.spec.jsx +0 -65
  319. package/src/scripts/datalad/dashboard/datasets/__tests__/uploaded.spec.jsx +0 -17
  320. package/src/scripts/datalad/dashboard/datasets/dataset-filter.jsx +0 -78
  321. package/src/scripts/datalad/dashboard/datasets/dataset-query.jsx +0 -102
  322. package/src/scripts/datalad/dashboard/datasets/dataset-row-error-boundary.jsx +0 -52
  323. package/src/scripts/datalad/dashboard/datasets/dataset-row-skeleton.jsx +0 -10
  324. package/src/scripts/datalad/dashboard/datasets/dataset-row.jsx +0 -58
  325. package/src/scripts/datalad/dashboard/datasets/dataset-sorter.jsx +0 -148
  326. package/src/scripts/datalad/dashboard/datasets/dataset-statuses.jsx +0 -44
  327. package/src/scripts/datalad/dashboard/datasets/dataset-tab.jsx +0 -192
  328. package/src/scripts/datalad/dashboard/datasets/dataset-virtual-scroller.jsx +0 -126
  329. package/src/scripts/datalad/dashboard/datasets/row-height.jsx +0 -7
  330. package/src/scripts/datalad/dashboard/datasets/uploaded.jsx +0 -33
  331. package/src/scripts/datalad/dataset/__tests__/__snapshots__/comments.spec.jsx.snap +0 -137
  332. package/src/scripts/datalad/dataset/__tests__/__snapshots__/dataset-page.spec.jsx.snap +0 -69
  333. package/src/scripts/datalad/dataset/__tests__/__snapshots__/dataset-query.spec.jsx.snap +0 -15
  334. package/src/scripts/datalad/dataset/__tests__/__snapshots__/left-siderbar.spec.jsx.snap +0 -85
  335. package/src/scripts/datalad/dataset/__tests__/dataset-page.spec.jsx +0 -33
  336. package/src/scripts/datalad/dataset/__tests__/dataset-query.spec.jsx +0 -20
  337. package/src/scripts/datalad/dataset/__tests__/left-siderbar.spec.jsx +0 -106
  338. package/src/scripts/datalad/dataset/comment.jsx +0 -90
  339. package/src/scripts/datalad/dataset/comments.jsx +0 -83
  340. package/src/scripts/datalad/dataset/dataset-description.jsx +0 -111
  341. package/src/scripts/datalad/dataset/dataset-main.jsx +0 -29
  342. package/src/scripts/datalad/dataset/dataset-page.jsx +0 -63
  343. package/src/scripts/datalad/dataset/dataset-query.jsx +0 -192
  344. package/src/scripts/datalad/dataset/dataset.jsx +0 -22
  345. package/src/scripts/datalad/dataset/delete-page.tsx +0 -92
  346. package/src/scripts/datalad/dataset/left-sidebar.jsx +0 -109
  347. package/src/scripts/datalad/download/__tests__/__snapshots__/download-dataset.spec.jsx.snap +0 -7
  348. package/src/scripts/datalad/download/__tests__/__snapshots__/download-tool.spec.jsx.snap +0 -26
  349. package/src/scripts/datalad/download/__tests__/download-dataset.spec.jsx +0 -19
  350. package/src/scripts/datalad/download/__tests__/download-tool.spec.jsx +0 -19
  351. package/src/scripts/datalad/download/download-command-line.jsx +0 -43
  352. package/src/scripts/datalad/download/download-datalad.jsx +0 -58
  353. package/src/scripts/datalad/download/download-dataset.jsx +0 -61
  354. package/src/scripts/datalad/download/download-link.jsx +0 -41
  355. package/src/scripts/datalad/download/download-native.js +0 -118
  356. package/src/scripts/datalad/download/download-query.js +0 -22
  357. package/src/scripts/datalad/download/download-s3.jsx +0 -46
  358. package/src/scripts/datalad/download/download-tool.jsx +0 -44
  359. package/src/scripts/datalad/download/native-file-toast.jsx +0 -90
  360. package/src/scripts/datalad/download/shell-example.jsx +0 -9
  361. package/src/scripts/datalad/download/track-download.js +0 -15
  362. package/src/scripts/datalad/fragments/__tests__/__snapshots__/cancel-button.spec.jsx.snap +0 -21
  363. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-analytics.spec.jsx.snap +0 -41
  364. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-authors.spec.jsx.snap +0 -13
  365. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-readme.spec.jsx.snap +0 -49
  366. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-title.spec.jsx.snap +0 -7
  367. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-tools.spec.jsx.snap +0 -346
  368. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-uploaded.spec.jsx.snap +0 -7
  369. package/src/scripts/datalad/fragments/__tests__/__snapshots__/edit-button.spec.jsx.snap +0 -21
  370. package/src/scripts/datalad/fragments/__tests__/__snapshots__/edit-list.spec.jsx.snap +0 -34
  371. package/src/scripts/datalad/fragments/__tests__/__snapshots__/edit-readme.spec.jsx.snap +0 -3
  372. package/src/scripts/datalad/fragments/__tests__/__snapshots__/save-button.spec.jsx.snap +0 -21
  373. package/src/scripts/datalad/fragments/__tests__/dataset-analytics.spec.jsx +0 -16
  374. package/src/scripts/datalad/fragments/__tests__/dataset-authors.spec.jsx +0 -22
  375. package/src/scripts/datalad/fragments/__tests__/dataset-prominent-links.spec.jsx +0 -32
  376. package/src/scripts/datalad/fragments/__tests__/dataset-readme.spec.jsx +0 -10
  377. package/src/scripts/datalad/fragments/__tests__/dataset-summary.spec.jsx +0 -55
  378. package/src/scripts/datalad/fragments/__tests__/dataset-title.spec.jsx +0 -10
  379. package/src/scripts/datalad/fragments/__tests__/dataset-tools.spec.jsx +0 -55
  380. package/src/scripts/datalad/fragments/__tests__/dataset-uploaded.spec.jsx +0 -16
  381. package/src/scripts/datalad/fragments/__tests__/edit-list.spec.jsx +0 -25
  382. package/src/scripts/datalad/fragments/__tests__/edit-readme.spec.jsx +0 -10
  383. package/src/scripts/datalad/fragments/cancel-button.jsx +0 -24
  384. package/src/scripts/datalad/fragments/copyable-tooltip.jsx +0 -82
  385. package/src/scripts/datalad/fragments/dataset-analytics.jsx +0 -27
  386. package/src/scripts/datalad/fragments/dataset-authors.jsx +0 -16
  387. package/src/scripts/datalad/fragments/dataset-citation.jsx +0 -77
  388. package/src/scripts/datalad/fragments/dataset-files.jsx +0 -50
  389. package/src/scripts/datalad/fragments/dataset-git-access.jsx +0 -56
  390. package/src/scripts/datalad/fragments/dataset-git-hash.jsx +0 -27
  391. package/src/scripts/datalad/fragments/dataset-history.jsx +0 -95
  392. package/src/scripts/datalad/fragments/dataset-modified.jsx +0 -17
  393. package/src/scripts/datalad/fragments/dataset-prominent-links.jsx +0 -129
  394. package/src/scripts/datalad/fragments/dataset-readme.jsx +0 -42
  395. package/src/scripts/datalad/fragments/dataset-summary.jsx +0 -230
  396. package/src/scripts/datalad/fragments/dataset-title.jsx +0 -10
  397. package/src/scripts/datalad/fragments/dataset-tools.jsx +0 -190
  398. package/src/scripts/datalad/fragments/dataset-uploaded.jsx +0 -25
  399. package/src/scripts/datalad/fragments/edit-button.jsx +0 -24
  400. package/src/scripts/datalad/fragments/edit-description-field.jsx +0 -54
  401. package/src/scripts/datalad/fragments/edit-description-list.jsx +0 -49
  402. package/src/scripts/datalad/fragments/edit-list.jsx +0 -82
  403. package/src/scripts/datalad/fragments/edit-readme.jsx +0 -44
  404. package/src/scripts/datalad/fragments/incomplete-dataset.jsx +0 -23
  405. package/src/scripts/datalad/fragments/metadata-tool.jsx +0 -34
  406. package/src/scripts/datalad/fragments/number-input.tsx +0 -126
  407. package/src/scripts/datalad/fragments/save-button.jsx +0 -24
  408. package/src/scripts/datalad/fragments/select-input.tsx +0 -247
  409. package/src/scripts/datalad/fragments/share-dataset-button.jsx +0 -32
  410. package/src/scripts/datalad/fragments/text-array-input.tsx +0 -119
  411. package/src/scripts/datalad/fragments/text-input.tsx +0 -206
  412. package/src/scripts/datalad/mutations/__tests__/__snapshots__/comment.spec.jsx.snap +0 -5
  413. package/src/scripts/datalad/mutations/__tests__/__snapshots__/delete.spec.jsx.snap +0 -181
  414. package/src/scripts/datalad/mutations/__tests__/__snapshots__/manage-permissions.spec.jsx.snap +0 -361
  415. package/src/scripts/datalad/mutations/__tests__/__snapshots__/subscribe-to-newsletter.spec.jsx.snap +0 -83
  416. package/src/scripts/datalad/mutations/__tests__/__snapshots__/update-file.spec.jsx.snap +0 -25
  417. package/src/scripts/datalad/mutations/__tests__/__snapshots__/update-permissions.spec.jsx.snap +0 -361
  418. package/src/scripts/datalad/mutations/__tests__/comment.spec.jsx +0 -154
  419. package/src/scripts/datalad/mutations/__tests__/manage-permissions.spec.jsx +0 -21
  420. package/src/scripts/datalad/mutations/__tests__/subscribe-to-newsletter.spec.jsx +0 -10
  421. package/src/scripts/datalad/mutations/__tests__/update-file.spec.jsx +0 -15
  422. package/src/scripts/datalad/mutations/__tests__/update-permissions.spec.jsx +0 -21
  423. package/src/scripts/datalad/mutations/add-metadata.jsx +0 -164
  424. package/src/scripts/datalad/mutations/comment.jsx +0 -164
  425. package/src/scripts/datalad/mutations/delete-dataset-form.jsx +0 -82
  426. package/src/scripts/datalad/mutations/description.jsx +0 -129
  427. package/src/scripts/datalad/mutations/flag-annex-object.jsx +0 -62
  428. package/src/scripts/datalad/mutations/metadata-form.jsx +0 -388
  429. package/src/scripts/datalad/mutations/readme.jsx +0 -53
  430. package/src/scripts/datalad/mutations/remove-annex-object.jsx +0 -71
  431. package/src/scripts/datalad/mutations/subscribe-to-newsletter.jsx +0 -26
  432. package/src/scripts/datalad/mutations/update-file.jsx +0 -51
  433. package/src/scripts/datalad/routes/__tests__/__snapshots__/manage-permissions.spec.jsx.snap +0 -159
  434. package/src/scripts/datalad/routes/__tests__/__snapshots__/snapshot.spec.jsx.snap +0 -31
  435. package/src/scripts/datalad/routes/__tests__/dataset-content.spec.jsx +0 -108
  436. package/src/scripts/datalad/routes/__tests__/file-display.spec.jsx +0 -22
  437. package/src/scripts/datalad/routes/__tests__/manage-permissions.spec.jsx +0 -101
  438. package/src/scripts/datalad/routes/__tests__/snapshot.spec.jsx +0 -49
  439. package/src/scripts/datalad/routes/admin-datalad.jsx +0 -45
  440. package/src/scripts/datalad/routes/admin-exports.jsx +0 -125
  441. package/src/scripts/datalad/routes/dataset-content.jsx +0 -198
  442. package/src/scripts/datalad/routes/dataset-routes.jsx +0 -162
  443. package/src/scripts/datalad/routes/file-display.jsx +0 -84
  444. package/src/scripts/datalad/routes/manage-permissions.jsx +0 -128
  445. package/src/scripts/datalad/routes/snapshot-content.jsx +0 -135
  446. package/src/scripts/datalad/routes/snapshot.jsx +0 -131
  447. package/src/scripts/datalad/snapshotVersion.js +0 -7
  448. package/src/scripts/datalad/validation/validation-panel.jsx +0 -48
  449. package/src/scripts/datalad/validation/validation-status.jsx +0 -120
  450. package/src/scripts/datalad/validation/validation.jsx +0 -40
  451. package/src/scripts/dataset/dataset.metrics.jsx +0 -61
  452. package/src/scripts/file-tree/__tests__/__snapshots__/file-tree-unloaded-directory.spec.jsx.snap +0 -26
  453. package/src/scripts/file-tree/__tests__/__snapshots__/file-tree.spec.jsx.snap +0 -18
  454. package/src/scripts/file-tree/__tests__/__snapshots__/file.spec.jsx.snap +0 -81
  455. package/src/scripts/file-tree/__tests__/file-tree-loading.spec.jsx +0 -18
  456. package/src/scripts/file-tree/__tests__/file-tree-unloaded-directory.spec.jsx +0 -74
  457. package/src/scripts/file-tree/__tests__/file-tree.spec.jsx +0 -94
  458. package/src/scripts/file-tree/__tests__/file-viewer-type.spec.jsx +0 -15
  459. package/src/scripts/file-tree/__tests__/file.spec.jsx +0 -44
  460. package/src/scripts/file-tree/__tests__/flat-to-tree.spec.js +0 -55
  461. package/src/scripts/file-tree/file-tree-loading.jsx +0 -64
  462. package/src/scripts/file-tree/file-tree-unloaded-directory.jsx +0 -108
  463. package/src/scripts/file-tree/file-tree.jsx +0 -133
  464. package/src/scripts/file-tree/file-view.jsx +0 -31
  465. package/src/scripts/file-tree/file-viewer-type.jsx +0 -45
  466. package/src/scripts/file-tree/file.jsx +0 -123
  467. package/src/scripts/file-tree/files.jsx +0 -126
  468. package/src/scripts/file-tree/flat-to-tree.js +0 -49
  469. package/src/scripts/file-tree/viewers/__tests__/__snapshots__/file-viewer-json.spec.jsx.snap +0 -51
  470. package/src/scripts/file-tree/viewers/__tests__/file-viewer-json.spec.jsx +0 -15
  471. package/src/scripts/file-tree/viewers/__tests__/parse-tabular.spec.js +0 -24
  472. package/src/scripts/file-tree/viewers/file-viewer-csv.jsx +0 -16
  473. package/src/scripts/file-tree/viewers/file-viewer-html.jsx +0 -20
  474. package/src/scripts/file-tree/viewers/file-viewer-json.jsx +0 -50
  475. package/src/scripts/file-tree/viewers/file-viewer-nifti.jsx +0 -11
  476. package/src/scripts/file-tree/viewers/file-viewer-table.jsx +0 -34
  477. package/src/scripts/file-tree/viewers/file-viewer-text.jsx +0 -13
  478. package/src/scripts/file-tree/viewers/file-viewer-tsv.jsx +0 -16
  479. package/src/scripts/file-tree/viewers/parse-tabular.js +0 -18
  480. package/src/scripts/front-page/__tests__/__snapshots__/email-subscription-box.spec.jsx.snap +0 -190
  481. package/src/scripts/front-page/__tests__/__snapshots__/front-page-stats.spec.jsx.snap +0 -29
  482. package/src/scripts/front-page/__tests__/__snapshots__/front-page-top-datasets.spec.jsx.snap +0 -464
  483. package/src/scripts/front-page/__tests__/dataset-count.spec.jsx +0 -33
  484. package/src/scripts/front-page/__tests__/email-subscription-box.spec.jsx +0 -57
  485. package/src/scripts/front-page/__tests__/front-page-stats.spec.jsx +0 -10
  486. package/src/scripts/front-page/__tests__/front-page-top-datasets.spec.jsx +0 -27
  487. package/src/scripts/front-page/__tests__/participant-count.spec.jsx +0 -31
  488. package/src/scripts/front-page/dataset-count.jsx +0 -29
  489. package/src/scripts/front-page/email-subscription-box.jsx +0 -131
  490. package/src/scripts/front-page/front-page-additional-info.jsx +0 -15
  491. package/src/scripts/front-page/front-page-collaborators.jsx +0 -117
  492. package/src/scripts/front-page/front-page-stats.jsx +0 -71
  493. package/src/scripts/front-page/front-page-support.jsx +0 -30
  494. package/src/scripts/front-page/front-page-tabs.jsx +0 -166
  495. package/src/scripts/front-page/front-page-top-datasets.jsx +0 -203
  496. package/src/scripts/front-page/front-page.jsx +0 -95
  497. package/src/scripts/front-page/participant-count.jsx +0 -25
  498. package/src/scripts/hooks/use-measure.js +0 -15
  499. package/src/scripts/hooks/use-previous.js +0 -7
  500. package/src/scripts/nav/assets/brand_mark.png +0 -0
  501. package/src/scripts/nav/assets/favicon-upload.png +0 -0
  502. package/src/scripts/nav/assets/logo_app.png +0 -0
  503. package/src/scripts/nav/navbar.jsx +0 -144
  504. package/src/scripts/nav/navbar.navmenu.jsx +0 -106
  505. package/src/scripts/nav/navbar.usermenu.jsx +0 -52
  506. package/src/scripts/pages/citation-page.jsx +0 -43
  507. package/src/scripts/pet/__tests__/__snapshots__/dummy.spec.jsx.snap +0 -70
  508. package/src/scripts/pet/__tests__/dummy.spec.jsx +0 -10
  509. package/src/scripts/pet/dummy.jsx +0 -61
  510. package/src/scripts/refactor_2021/dataset/dataset-pre-refactor-container.tsx +0 -12
  511. package/src/scripts/routes.tsx +0 -36
  512. package/src/scripts/search/search-input.tsx +0 -42
  513. package/src/scripts/search/search-results.tsx +0 -114
  514. package/src/scripts/styles/capitalized.jsx +0 -6
  515. package/src/scripts/styles/uppercase.jsx +0 -6
  516. package/src/scripts/uploader/__tests__/add-path-to-files.spec.js +0 -29
  517. package/src/scripts/uploader/__tests__/file-upload.spec.js +0 -116
  518. package/src/scripts/uploader/__tests__/upload-disclaimer.spec.jsx +0 -67
  519. package/src/scripts/uploader/__tests__/upload-mutation.spec.js +0 -57
  520. package/src/scripts/uploader/__tests__/uploader.spec.js +0 -31
  521. package/src/scripts/uploader/add-path-to-files.js +0 -19
  522. package/src/scripts/uploader/file-upload.js +0 -88
  523. package/src/scripts/uploader/upload-button.jsx +0 -18
  524. package/src/scripts/uploader/upload-disclaimer.jsx +0 -92
  525. package/src/scripts/uploader/upload-file-status.jsx +0 -20
  526. package/src/scripts/uploader/upload-issues.jsx +0 -131
  527. package/src/scripts/uploader/upload-metadata.jsx +0 -59
  528. package/src/scripts/uploader/upload-mutation.js +0 -111
  529. package/src/scripts/uploader/upload-progress-button.jsx +0 -20
  530. package/src/scripts/uploader/upload-progress-class.js +0 -36
  531. package/src/scripts/uploader/upload-progress.jsx +0 -15
  532. package/src/scripts/uploader/upload-rename.jsx +0 -33
  533. package/src/scripts/uploader/upload-resume.jsx +0 -35
  534. package/src/scripts/uploader/upload-select.jsx +0 -29
  535. package/src/scripts/uploader/upload-status.jsx +0 -23
  536. package/src/scripts/uploader/upload-step.jsx +0 -48
  537. package/src/scripts/uploader/uploader-context.js +0 -6
  538. package/src/scripts/uploader/uploader-location.js +0 -5
  539. package/src/scripts/uploader/uploader-modal.jsx +0 -27
  540. package/src/scripts/uploader/uploader-setup-routes.jsx +0 -52
  541. package/src/scripts/uploader/uploader-status-routes.jsx +0 -30
  542. package/src/scripts/uploader/uploader-view.jsx +0 -45
  543. package/src/scripts/uploader/uploader.jsx +0 -388
  544. package/src/scripts/user/__mocks__/user.store.js +0 -1
  545. package/src/scripts/user/api.jsx +0 -132
  546. package/src/scripts/user/avatar.jsx +0 -40
  547. package/src/scripts/utils/crn.js +0 -15
  548. package/src/scripts/utils/request.js +0 -107
  549. package/src/scripts/utils/user.js +0 -18
  550. package/src/scripts/validation/validation-results.issues.issue.jsx +0 -90
  551. package/src/scripts/validation/validation-results.issues.jsx +0 -79
  552. package/src/scripts/validation/validation-results.jsx +0 -96
@@ -1,388 +0,0 @@
1
- import { apm } from '../apm'
2
- import { toast } from 'react-toastify'
3
- import ToastContent from '../common/partials/toast-content.jsx'
4
- import React from 'react'
5
- import PropTypes from 'prop-types'
6
- import { ApolloConsumer } from '@apollo/client'
7
- import * as gtag from '../utils/gtag'
8
- import UploaderContext from './uploader-context.js'
9
- import FileSelect from '../common/forms/file-select'
10
- import { locationFactory } from './uploader-location.js'
11
- import * as mutation from './upload-mutation.js'
12
- import { datasets, uploads } from '@openneuro/client'
13
- import { withRouter } from 'react-router-dom'
14
- import { uploadFiles } from './file-upload.js'
15
- import { UploadProgress } from './upload-progress-class'
16
- import { addPathToFiles } from './add-path-to-files.js'
17
-
18
- /**
19
- * Stateful uploader workflow and status
20
- *
21
- * Usable from anywhere, so this button sets up a modal and
22
- * virtual router to navigate within it.
23
- */
24
- export class UploadClient extends React.Component {
25
- constructor(props) {
26
- super(props)
27
-
28
- this.state = {
29
- // An upload is processing
30
- uploading: false,
31
- // Which step in the modal
32
- location: locationFactory('/hidden'),
33
- // List of files being uploaded
34
- files: [],
35
- // Files selected, regardless of if they will be uploaded
36
- selectedFiles: {},
37
- // Relabel dataset during upload
38
- name: '',
39
- // Dataset description - null if it doesn't exist
40
- description: null,
41
- progress: 0,
42
- // Resume an existing dataset
43
- resume: null,
44
- // Control if the top level path is trimmed out (good for initial uploads, bad for adding to dataset)
45
- stripRelativePath: true,
46
- // Allow context consumers to change routes
47
- setLocation: this.setLocation,
48
- // Set a dataset to resume upload for
49
- resumeDataset: this.resumeDataset,
50
- // Get files from the browser
51
- selectFiles: this.selectFiles,
52
- // Capture metadata from form
53
- captureMetadata: this.captureMetadata,
54
- // Start an upload
55
- upload: this.upload,
56
- // Upload XHR request
57
- xhr: null,
58
- // Id of the uploaded dataset
59
- datasetId: null,
60
- // Cancel current upload
61
- cancel: this.cancel,
62
- // dataset metadata
63
- metadata: {},
64
- // Track currently uploading files
65
- uploadingFiles: new Set(),
66
- // Track any failed files
67
- failedFiles: new Set(),
68
- // Abort controller for abandoning the upload
69
- abortController: null,
70
- }
71
- }
72
-
73
- /**
74
- * Change to a new step in upload setup
75
- *
76
- * @param {string} path Virtual router path for upload modal
77
- */
78
- setLocation = path => {
79
- gtag.pageview(path)
80
- this.setState({ location: locationFactory(path) })
81
- }
82
-
83
- /**
84
- * Specify a dataset to resume upload for
85
- * @param {string} datasetId
86
- * @param {string} [path] Optional path to prefix all files with
87
- * @param {boolean} [stripRelativePath] Don't strip the first path (useful for adding directories)
88
- */
89
- resumeDataset = (datasetId, path, stripRelativePath) => {
90
- return ({ files }) => {
91
- this.props.client
92
- .query({
93
- query: datasets.getDraftFiles,
94
- variables: { id: datasetId },
95
- })
96
- .then(
97
- ({
98
- data: {
99
- dataset: { draft, metadata },
100
- },
101
- }) => {
102
- const affirmedDefaced = metadata?.affirmedDefaced || null
103
- const affirmedConsent = metadata?.affirmedConsent || null
104
- // Create a new array of files to upload
105
- const filesToUpload = []
106
- // Create hashmap of filename -> size
107
- const existingFiles = draft.files.reduce((existingFiles, f) => {
108
- existingFiles[f.filename] = f.size
109
- return existingFiles
110
- }, {})
111
- for (const newFile of files) {
112
- const newFilePath = newFile.webkitRelativePath.split(/\/(.*)/)[1]
113
- // Skip any existing files
114
- if (existingFiles[newFilePath] !== newFile.size) {
115
- filesToUpload.push(newFile)
116
- }
117
- }
118
- this.setState({
119
- datasetId,
120
- resume: true,
121
- stripRelativePath,
122
- files: addPathToFiles(filesToUpload, path),
123
- selectedFiles: files,
124
- })
125
- this.upload({ affirmedDefaced, affirmedConsent })
126
- },
127
- )
128
- }
129
- }
130
-
131
- /**
132
- * Select the files for upload
133
- * @param {object} event onChange event from multi file select
134
- */
135
- selectFiles = ({ files }) => {
136
- // First get the name from dataset_description.json
137
- return new Promise(resolve => {
138
- const descriptionFile = [...files].find(
139
- f => f.name === 'dataset_description.json',
140
- )
141
- if (!descriptionFile) {
142
- // Use directory name if no dataset_description
143
- resolve(files[0].webkitRelativePath.split('/')[0])
144
- }
145
- const descriptionReader = new FileReader()
146
- descriptionReader.onload = event => {
147
- try {
148
- // Read Name field from dataset_description.json
149
- const description = JSON.parse(event.target.result.toString())
150
- // Save description to state for writing later
151
- this.setState({ description })
152
- resolve(description.Name)
153
- } catch (e) {
154
- // Fallback to directory name if JSON parse failed
155
- resolve(files[0].webkitRelativePath.split('/')[0])
156
- }
157
- }
158
- descriptionReader.readAsText(descriptionFile)
159
- }).then(name => {
160
- if (files.length > 0) {
161
- this.setState({
162
- files,
163
- selectedFiles: files,
164
- name,
165
- })
166
- this.setLocation('/upload/issues')
167
- } else {
168
- throw new Error('No files selected')
169
- }
170
- })
171
- }
172
-
173
- captureMetadata = metadata => {
174
- this.setState({
175
- metadata,
176
- })
177
- }
178
-
179
- uploadMetadata = () =>
180
- mutation.submitMetadata(this.props.client)(
181
- this.state.datasetId,
182
- this.state.metadata,
183
- )
184
-
185
- upload = ({ affirmedDefaced, affirmedConsent }) => {
186
- // Track the start of uploads
187
- gtag.event({
188
- category: 'Upload',
189
- action: 'Started web upload',
190
- label: this.state.datasetId,
191
- })
192
- this.setState({
193
- uploading: true,
194
- abortController: new AbortController(),
195
- })
196
- this.setLocation('/hidden')
197
- if (this.state.resume && this.state.datasetId) {
198
- // Just add files since this is an existing dataset
199
- this._addFiles()
200
- } else {
201
- // Create dataset and then add files
202
- mutation
203
- .createDataset(this.props.client)({
204
- affirmedDefaced,
205
- affirmedConsent,
206
- })
207
- .then(datasetId => {
208
- // Note chain to this._addFiles
209
- this.setState({ datasetId }, () => {
210
- this.uploadMetadata()
211
- this._addFiles()
212
- })
213
- })
214
- .catch(error => {
215
- apm.captureError(error)
216
- toast.error(
217
- <ToastContent
218
- title="Dataset creation failed"
219
- body="Please check your connection"
220
- />,
221
- { autoClose: false },
222
- )
223
- this.setState({
224
- error,
225
- uploading: false,
226
- })
227
- this.setLocation('/hidden')
228
- })
229
- }
230
- }
231
-
232
- /**
233
- * Check for CHANGES file and add if it does not exist
234
- */
235
- _includeChanges() {
236
- const files = [...this.state.files]
237
- // Determine if the files list has a CHANGES file already
238
- const hasChanges = files.some(f => f.name === 'CHANGES')
239
-
240
- // Do nothing if the file already exists
241
- if (hasChanges) return files
242
-
243
- // Construct the initial CHANGES file and add to the files array
244
- const initialChangesFile = new Blob([], {
245
- type: 'text/plain',
246
- })
247
- initialChangesFile.name = 'CHANGES'
248
- initialChangesFile.webkitRelativePath = '/CHANGES'
249
- files.push(initialChangesFile)
250
- return files
251
- }
252
-
253
- /**
254
- * Do the actual upload
255
- */
256
- async _addFiles() {
257
- // Uploads the version of files with dataset_description formatted and Name updated
258
- // Adds a CHANGES file if it is not present
259
- const filesToUpload = this.state.resume
260
- ? this.state.files
261
- : this._includeChanges()
262
-
263
- // Call prepare upload to find the bucket needed and endpoint
264
- const {
265
- data: {
266
- prepareUpload: { id: uploadId, endpoint, token },
267
- },
268
- } = await mutation.prepareUpload(this.props.client)({
269
- datasetId: this.state.datasetId,
270
- uploadId: uploads.hashFileList(this.state.datasetId, filesToUpload),
271
- })
272
-
273
- try {
274
- await uploadFiles({
275
- uploadId,
276
- datasetId: this.state.datasetId,
277
- endpoint,
278
- filesToUpload,
279
- token,
280
- uploadProgress: new UploadProgress(
281
- this.uploadProgress,
282
- filesToUpload.length,
283
- ),
284
- abortController: this.state.abortController,
285
- stripRelativePath: this.state.stripRelativePath,
286
- })
287
- if (!this.state.abortController.signal.aborted) {
288
- await mutation.finishUpload(this.props.client)(uploadId)
289
- this.setState({ uploading: false })
290
- this.uploadCompleteAction()
291
- }
292
- } catch (error) {
293
- apm.captureError(error)
294
- const toastId = toast.error(
295
- <ToastContent
296
- title="Dataset upload failed"
297
- body="Please check your connection">
298
- <FileSelect
299
- onChange={event => {
300
- toast.dismiss(toastId)
301
- this.resumeDataset(this.state.datasetId)(event)
302
- }}
303
- resume
304
- />
305
- </ToastContent>,
306
- { autoClose: false },
307
- )
308
- this.setState({
309
- error,
310
- uploading: false,
311
- })
312
- this.setLocation('/hidden')
313
- if (this.state.xhr) {
314
- try {
315
- this.state.xhr.abort()
316
- } catch (e) {
317
- apm.captureError(e)
318
- }
319
- }
320
- }
321
- }
322
-
323
- uploadCompleteAction = () => {
324
- // Record upload finished successfully with Google Analytics
325
- gtag.event({
326
- category: 'Upload',
327
- action: 'Finished web upload',
328
- label: this.state.datasetId,
329
- })
330
- const datasetURL = `/datasets/${this.state.datasetId}`
331
- if (this.state.location.pathname !== locationFactory('/hidden').pathname) {
332
- this.props.history.push(datasetURL)
333
- this.setLocation('/hidden')
334
- } else {
335
- toast.success(
336
- <ToastContent
337
- title="Upload complete"
338
- body="Dataset successfully uploaded">
339
- <a href={datasetURL}>Click here to browse your dataset.</a>
340
- </ToastContent>,
341
- { autoClose: false },
342
- )
343
- }
344
- }
345
-
346
- uploadProgress = state => {
347
- this.setState(state)
348
- }
349
-
350
- cancel = () => {
351
- this.state.abortController.abort()
352
- this.setState({ uploading: false, progress: 0 })
353
- }
354
-
355
- render() {
356
- return (
357
- <UploaderContext.Provider value={this.state}>
358
- {this.props.children}
359
- </UploaderContext.Provider>
360
- )
361
- }
362
- }
363
-
364
- UploadClient.propTypes = {
365
- client: PropTypes.object,
366
- history: PropTypes.object,
367
- children: PropTypes.element,
368
- }
369
-
370
- const UploadClientWithRouter = withRouter(UploadClient)
371
-
372
- const Uploader = ({ children }) => (
373
- <ApolloConsumer>
374
- {client => (
375
- <div className="uploader">
376
- <UploadClientWithRouter client={client}>
377
- {children}
378
- </UploadClientWithRouter>
379
- </div>
380
- )}
381
- </ApolloConsumer>
382
- )
383
-
384
- Uploader.propTypes = {
385
- children: PropTypes.element,
386
- }
387
-
388
- export default Uploader
@@ -1 +0,0 @@
1
- export default {}
@@ -1,132 +0,0 @@
1
- import React from 'react'
2
- import Spinner from '../common/partials/spinner.jsx'
3
- import { CopyToClipboard } from 'react-copy-to-clipboard'
4
- import crn from '../utils/crn.js'
5
- import Helmet from 'react-helmet'
6
- import { pageTitle } from '../resources/strings.js'
7
-
8
- /**
9
- * Create API Key
10
- *
11
- * Given the current user, creates an api key
12
- * for use with the standalone CLI
13
- */
14
- const createAPIKey = () => {
15
- return crn.createAPIKey().then(res => (res && res.body ? res.body.key : null))
16
- }
17
-
18
- class APIKeyGen extends React.Component {
19
- constructor(props) {
20
- super(props)
21
- this.requestKey = this._requestKey.bind(this)
22
- this.state = {
23
- loading: false,
24
- key: null,
25
- }
26
- }
27
-
28
- _requestKey() {
29
- this.setState({ loading: true })
30
- createAPIKey()
31
- .then(key => {
32
- this.setState({ key, loading: false })
33
- })
34
- .catch(() => {
35
- this.setState({ loading: false })
36
- })
37
- }
38
-
39
- _requestButton() {
40
- return (
41
- <button
42
- className="btn btn-lg btn-primary"
43
- onClick={this.requestKey.bind(this)}>
44
- GENERATE NEW API KEY
45
- </button>
46
- )
47
- }
48
-
49
- _loadingSpinner() {
50
- if (this.state.loading) {
51
- return <Spinner active={true} />
52
- } else {
53
- return null
54
- }
55
- }
56
-
57
- _key() {
58
- const content = (
59
- <div className="api-key-div">
60
- <div className="api-key">{this.state.key}</div>
61
- <div className="copy-key">
62
- <CopyToClipboard
63
- text={this.state.key}
64
- onCopy={this._onCopy.bind(this)}>
65
- <span className="copy-key">
66
- <i className="fa fa-link" aria-hidden="true" />{' '}
67
- {this._copyNotification()}
68
- </span>
69
- </CopyToClipboard>
70
- </div>
71
- </div>
72
- )
73
- if (this.state.key) {
74
- return content
75
- } else {
76
- return null
77
- }
78
- }
79
- _copyNotification() {
80
- const copyClass = this.state.linkCopied
81
- ? 'copy-notification-active copy-notification-copied'
82
- : 'copy-notification-active'
83
- const copyText = this.state.linkCopied ? 'Copied!' : 'Copy key to clipboard'
84
- return (
85
- <span>
86
- <span className={copyClass}>{copyText}</span>
87
- </span>
88
- )
89
- }
90
-
91
- _onCopy() {
92
- this.setState({ linkCopied: true })
93
- setTimeout(() => {
94
- this.setState({ linkCopied: false })
95
- }, 3000)
96
- }
97
-
98
- render() {
99
- const helperText = this.state.key
100
- ? 'Your API Key:'
101
- : 'Click the button below to generate an API key'
102
- return (
103
- <>
104
- <Helmet>
105
- <title>Generate API key for openneuro-cli - {pageTitle}</title>
106
- </Helmet>
107
- <div className="container api">
108
- <div className="panel">
109
- <div className="panel-heading">CLI API Key Generator</div>
110
- <div className="panel-body explanation">
111
- Users that wish to use the CLI uploader will be required to
112
- authenticate their requests with an API key. Please store your API
113
- key in a safe place. If you lose your key, you can obtain a new
114
- one on this page. Once a new key is obtained, the previous key
115
- will become invalid.
116
- </div>
117
- </div>
118
- <div className="panel">
119
- <div className="panel-heading">{helperText}</div>
120
- <div className="panel-body">
121
- {this._loadingSpinner()}
122
- {this._key()}
123
- {this._requestButton()}
124
- </div>
125
- </div>
126
- </div>
127
- </>
128
- )
129
- }
130
- }
131
-
132
- export default APIKeyGen
@@ -1,40 +0,0 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import { generateGravatarUrl } from '../utils/user.js'
4
-
5
- class Avatar extends React.Component {
6
- constructor(props) {
7
- super(props)
8
- }
9
-
10
- render() {
11
- const profile = this.props.profile
12
-
13
- if (!profile) {
14
- return null
15
- }
16
- const imageUrl = generateGravatarUrl(profile)
17
- let thumbnail
18
- if (imageUrl) {
19
- const username = profile && profile.name ? profile.name : null
20
- thumbnail = (
21
- <img src={imageUrl} alt={username} className="user-img-thumb" />
22
- )
23
- } else {
24
- const firstLetter =
25
- profile && profile.name ? profile.name.slice(0, 1) : null
26
- thumbnail = (
27
- <div className="user-generic-thumb">
28
- <div className="user-generic-thumb-letter">{firstLetter}</div>
29
- </div>
30
- )
31
- }
32
- return thumbnail
33
- }
34
- }
35
-
36
- Avatar.propTypes = {
37
- profile: PropTypes.object,
38
- }
39
-
40
- export default Avatar
@@ -1,15 +0,0 @@
1
- import request from './request'
2
- import { config } from '../config'
3
-
4
- /**
5
- * CRN
6
- *
7
- * A library for interacting with the CRN server side
8
- * application.
9
- */
10
- export default {
11
- // API Key ----------------------------------------------------------------------
12
- createAPIKey() {
13
- return request.post(config.api + 'keygen', {})
14
- },
15
- }
@@ -1,107 +0,0 @@
1
- import request from 'superagent'
2
-
3
- /*
4
- * Upload retries limit
5
- */
6
- const maxRetries = 3
7
-
8
- /**
9
- * Normalize Options
10
- *
11
- * Takes a request options object and
12
- * normalizes it so requests won't fail.
13
- */
14
- function normalizeOptions(options) {
15
- options = options ? options : {}
16
- if (!options.headers) {
17
- options.headers = {}
18
- }
19
- if (!options.query) {
20
- options.query = {}
21
- }
22
- if (!options.hasOwnProperty('auth')) {
23
- options.auth = true
24
- }
25
- return options
26
- }
27
-
28
- /**
29
- * Handle Request
30
- *
31
- * A generic request handler used to intercept
32
- * requests before they request out. Ensures
33
- * access_token isn't expired sets it as the
34
- * Authorization header.
35
- *
36
- * Available options
37
- * - headers: An object with keys set to the header name
38
- * and values set to the corresponding header value.
39
- * - query: An object with keys set to url query parameters
40
- * and values set to the corresponding query values.
41
- * - body: A http request body.
42
- * - auth: A boolean determining whether the access token
43
- * should be supplied with the request.
44
- * - snapshot: A boolean that will add a 'snapshots' url
45
- * param to scitran requests.
46
- */
47
- function handleRequest(url, options, callback) {
48
- // normalize options to play nice with superagent requests
49
- options = normalizeOptions(options)
50
-
51
- return callback(url, options)
52
- }
53
-
54
- /**
55
- * Request
56
- *
57
- * A wrapper for the superagent request library.
58
- * Provides a place for global request settings
59
- * and response handling.
60
- */
61
- const Request = {
62
- get(url, options) {
63
- return handleRequest(url, options, (url, options) => {
64
- return request.get(url).set(options.headers).query(options.query)
65
- })
66
- },
67
-
68
- post(url, options) {
69
- return handleRequest(url, options, (url, options) => {
70
- return request
71
- .post(url)
72
- .set(options.headers)
73
- .query(options.query)
74
- .send(options.body)
75
- })
76
- },
77
-
78
- put(url, options) {
79
- return handleRequest(url, options, (url, options) => {
80
- return request
81
- .put(url)
82
- .set(options.headers)
83
- .query(options.query)
84
- .send(options.body)
85
- })
86
- },
87
-
88
- del(url, options) {
89
- return handleRequest(url, options, (url, options) => {
90
- return request.del(url).set(options.headers).query(options.query)
91
- })
92
- },
93
-
94
- upload(url, options) {
95
- return handleRequest(url, options, (url, options) => {
96
- return request
97
- .post(url)
98
- .query(options.query)
99
- .set(options.headers)
100
- .field('tags', options.fields.tags)
101
- .attach('file', options.fields.file, options.fields.name)
102
- .retry(maxRetries)
103
- })
104
- },
105
- }
106
-
107
- export default Request
@@ -1,18 +0,0 @@
1
- import md5 from 'md5'
2
-
3
- /**
4
- * Generate Gravatar Url
5
- *
6
- * Given a user profile, generate a gravatar identicon url
7
- * to use as source for an image
8
- */
9
- export function generateGravatarUrl(userProfile) {
10
- const email = userProfile.email
11
- if (email) {
12
- const hash = md5(email)
13
- const gravatarUrl = `https://www.gravatar.com/avatar/${hash}?s=200&d=identicon`
14
- return gravatarUrl
15
- } else {
16
- return null
17
- }
18
- }