@openneuro/app 4.2.0 → 4.2.4

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 (554) 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/draft-container.tsx +11 -22
  21. package/src/scripts/refactor_2021/dataset/files/file-tree.jsx +3 -2
  22. package/src/scripts/refactor_2021/dataset/fragments/__tests__/__snapshots__/cancel-button.spec.tsx.snap +10 -0
  23. package/src/scripts/refactor_2021/dataset/fragments/__tests__/__snapshots__/edit-button.spec.tsx.snap +10 -0
  24. package/src/scripts/refactor_2021/dataset/fragments/__tests__/__snapshots__/edit-list.spec.jsx.snap +24 -0
  25. package/src/scripts/refactor_2021/dataset/fragments/__tests__/__snapshots__/save-button.spec.tsx.snap +10 -0
  26. 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
  27. package/src/scripts/{datalad/fragments/__tests__/cancel-button.spec.jsx → refactor_2021/dataset/fragments/__tests__/cancel-button.spec.tsx} +2 -2
  28. package/src/scripts/{datalad → refactor_2021/dataset}/fragments/__tests__/dataset-citation.spec.jsx +0 -0
  29. package/src/scripts/{datalad/fragments/__tests__/edit-button.spec.jsx → refactor_2021/dataset/fragments/__tests__/edit-button.spec.tsx} +2 -2
  30. package/src/scripts/refactor_2021/dataset/fragments/__tests__/edit-list.spec.jsx +27 -0
  31. package/src/scripts/{datalad/fragments/__tests__/save-button.spec.jsx → refactor_2021/dataset/fragments/__tests__/save-button.spec.tsx} +2 -2
  32. package/src/scripts/{datalad/fragments/__tests__/select-input.spec.jsx → refactor_2021/dataset/fragments/__tests__/select-input.spec.tsx} +0 -0
  33. package/src/scripts/refactor_2021/dataset/mutations/__tests__/__snapshots__/delete.spec.jsx.snap +50 -0
  34. package/src/scripts/{datalad → refactor_2021/dataset}/mutations/__tests__/__snapshots__/description.spec.jsx.snap +0 -0
  35. package/src/scripts/refactor_2021/dataset/mutations/__tests__/__snapshots__/update-permissions.spec.jsx.snap +27 -0
  36. package/src/scripts/{datalad → refactor_2021/dataset}/mutations/__tests__/cache-id.spec.js +0 -0
  37. package/src/scripts/{datalad → refactor_2021/dataset}/mutations/__tests__/delete.spec.jsx +8 -8
  38. package/src/scripts/{datalad → refactor_2021/dataset}/mutations/__tests__/description.spec.jsx +0 -0
  39. package/src/scripts/{datalad/mutations/__tests__/remove-permissions.spec.jsx → refactor_2021/dataset/mutations/__tests__/remove-permissions.spec.tsx} +1 -1
  40. package/src/scripts/refactor_2021/dataset/mutations/__tests__/update-permissions.spec.jsx +28 -0
  41. package/src/scripts/refactor_2021/dataset/mutations/update-file.jsx +2 -2
  42. package/src/scripts/refactor_2021/dataset/snapshot-container.tsx +4 -8
  43. package/src/scripts/refactor_2021/routes.tsx +1 -1
  44. package/src/scripts/refactor_2021/search/initial-search-params.tsx +7 -7
  45. package/src/scripts/refactor_2021/search/inputs/index.ts +2 -2
  46. package/src/scripts/refactor_2021/search/inputs/{gender-radios.tsx → sex-radios.tsx} +10 -10
  47. package/src/scripts/refactor_2021/search/search-container.tsx +2 -2
  48. package/src/scripts/refactor_2021/search/search-params-ctx.tsx +3 -3
  49. package/src/scripts/refactor_2021/search/use-search-results.tsx +3 -3
  50. package/src/scripts/refactor_2021/user/api.jsx +11 -6
  51. package/src/sass/_bootstrap-compass.scss +0 -9
  52. package/src/sass/_bootstrap-mincer.scss +0 -19
  53. package/src/sass/_bootstrap-sprockets.scss +0 -9
  54. package/src/sass/_bootstrap.scss +0 -50
  55. package/src/sass/animate/_attention-seekers/_bounce.scss +0 -15
  56. package/src/sass/animate/_attention-seekers/_flash.scss +0 -14
  57. package/src/sass/animate/_attention-seekers/_pulse.scss +0 -17
  58. package/src/sass/animate/_attention-seekers/_rubberBand.scss +0 -19
  59. package/src/sass/animate/_attention-seekers/_shake.scss +0 -15
  60. package/src/sass/animate/_attention-seekers/_swing.scss +0 -19
  61. package/src/sass/animate/_attention-seekers/_tada.scss +0 -17
  62. package/src/sass/animate/_attention-seekers/_wobble.scss +0 -21
  63. package/src/sass/animate/_attention-seekers/attention-seekers.scss +0 -12
  64. package/src/sass/animate/_bouncing-entrances/_bounceIn.scss +0 -26
  65. package/src/sass/animate/_bouncing-entrances/_bounceInDown.scss +0 -26
  66. package/src/sass/animate/_bouncing-entrances/_bounceInLeft.scss +0 -26
  67. package/src/sass/animate/_bouncing-entrances/_bounceInRight.scss +0 -26
  68. package/src/sass/animate/_bouncing-entrances/_bounceInUp.scss +0 -26
  69. package/src/sass/animate/_bouncing-entrances/bouncing-entrances.scss +0 -9
  70. package/src/sass/animate/_bouncing-exits/_bounceOut.scss +0 -26
  71. package/src/sass/animate/_bouncing-exits/_bounceOutDown.scss +0 -23
  72. package/src/sass/animate/_bouncing-exits/_bounceOutLeft.scss +0 -23
  73. package/src/sass/animate/_bouncing-exits/_bounceOutRight.scss +0 -23
  74. package/src/sass/animate/_bouncing-exits/_bounceOutUp.scss +0 -23
  75. package/src/sass/animate/_bouncing-exits/bouncing-exits.scss +0 -4
  76. package/src/sass/animate/_fading-entrances/_fadeIn.scss +0 -14
  77. package/src/sass/animate/_fading-entrances/_fadeInDown.scss +0 -20
  78. package/src/sass/animate/_fading-entrances/_fadeInDownBig.scss +0 -20
  79. package/src/sass/animate/_fading-entrances/_fadeInLeft.scss +0 -20
  80. package/src/sass/animate/_fading-entrances/_fadeInLeftBig.scss +0 -20
  81. package/src/sass/animate/_fading-entrances/_fadeInRight.scss +0 -20
  82. package/src/sass/animate/_fading-entrances/_fadeInRightBig.scss +0 -20
  83. package/src/sass/animate/_fading-entrances/_fadeInUp.scss +0 -19
  84. package/src/sass/animate/_fading-entrances/_fadeInUpBig.scss +0 -20
  85. package/src/sass/animate/_fading-entrances/fading-entrances.scss +0 -5
  86. package/src/sass/animate/_fading-exits/_fadeOut.scss +0 -14
  87. package/src/sass/animate/_fading-exits/_fadeOutDown.scss +0 -20
  88. package/src/sass/animate/_fading-exits/_fadeOutDownBig.scss +0 -20
  89. package/src/sass/animate/_fading-exits/_fadeOutLeft.scss +0 -20
  90. package/src/sass/animate/_fading-exits/_fadeOutLeftBig.scss +0 -20
  91. package/src/sass/animate/_fading-exits/_fadeOutRight.scss +0 -20
  92. package/src/sass/animate/_fading-exits/_fadeOutRightBig.scss +0 -20
  93. package/src/sass/animate/_fading-exits/_fadeOutUp.scss +0 -20
  94. package/src/sass/animate/_fading-exits/_fadeOutUpBig.scss +0 -20
  95. package/src/sass/animate/_fading-exits/fading-exits.scss +0 -5
  96. package/src/sass/animate/_flippers/_flip.scss +0 -33
  97. package/src/sass/animate/_flippers/_flipInX.scss +0 -26
  98. package/src/sass/animate/_flippers/_flipInY.scss +0 -26
  99. package/src/sass/animate/_flippers/_flipOutX.scss +0 -20
  100. package/src/sass/animate/_flippers/_flipOutY.scss +0 -20
  101. package/src/sass/animate/_flippers/flippers.scss +0 -8
  102. package/src/sass/animate/_lightspeed/_lightSpeedIn.scss +0 -29
  103. package/src/sass/animate/_lightspeed/_lightSpeedOut.scss +0 -21
  104. package/src/sass/animate/_lightspeed/lightspeed.scss +0 -3
  105. package/src/sass/animate/_properties.scss +0 -119
  106. package/src/sass/animate/_rotating-entrances/_rotateIn.scss +0 -22
  107. package/src/sass/animate/_rotating-entrances/_rotateInDownLeft.scss +0 -22
  108. package/src/sass/animate/_rotating-entrances/_rotateInDownRight.scss +0 -22
  109. package/src/sass/animate/_rotating-entrances/_rotateInUpLeft.scss +0 -22
  110. package/src/sass/animate/_rotating-entrances/_rotateInUpRight.scss +0 -22
  111. package/src/sass/animate/_rotating-entrances/rotating-entrances.scss +0 -8
  112. package/src/sass/animate/_rotating-exits/_rotateOut.scss +0 -22
  113. package/src/sass/animate/_rotating-exits/_rotateOutDownLeft.scss +0 -22
  114. package/src/sass/animate/_rotating-exits/_rotateOutDownRight.scss +0 -22
  115. package/src/sass/animate/_rotating-exits/_rotateOutUpLeft.scss +0 -22
  116. package/src/sass/animate/_rotating-exits/_rotateOutUpRight.scss +0 -22
  117. package/src/sass/animate/_rotating-exits/rotating-exits.scss +0 -8
  118. package/src/sass/animate/_sliding-entrances/_slideInDown.scss +0 -19
  119. package/src/sass/animate/_sliding-entrances/_slideInLeft.scss +0 -19
  120. package/src/sass/animate/_sliding-entrances/_slideInRight.scss +0 -42
  121. package/src/sass/animate/_sliding-entrances/_slideInUp.scss +0 -19
  122. package/src/sass/animate/_sliding-entrances/sliding-entrances.scss +0 -7
  123. package/src/sass/animate/_sliding-exits/_slideOutDown.scss +0 -19
  124. package/src/sass/animate/_sliding-exits/_slideOutLeft.scss +0 -19
  125. package/src/sass/animate/_sliding-exits/_slideOutRight.scss +0 -19
  126. package/src/sass/animate/_sliding-exits/_slideOutUp.scss +0 -19
  127. package/src/sass/animate/_sliding-exits/sliding-exits.scss +0 -7
  128. package/src/sass/animate/_specials/_hinge.scss +0 -37
  129. package/src/sass/animate/_specials/_rollIn.scss +0 -20
  130. package/src/sass/animate/_specials/_rollOut.scss +0 -22
  131. package/src/sass/animate/_specials/specials.scss +0 -6
  132. package/src/sass/animate/_zooming-entrances/_zoomIn.scss +0 -19
  133. package/src/sass/animate/_zooming-entrances/_zoomInDown.scss +0 -22
  134. package/src/sass/animate/_zooming-entrances/_zoomInLeft.scss +0 -22
  135. package/src/sass/animate/_zooming-entrances/_zoomInRight.scss +0 -22
  136. package/src/sass/animate/_zooming-entrances/_zoomInUp.scss +0 -22
  137. package/src/sass/animate/_zooming-entrances/zooming-entrances.scss +0 -4
  138. package/src/sass/animate/_zooming-exits/_zoomOut.scss +0 -22
  139. package/src/sass/animate/_zooming-exits/_zoomOutDown.scss +0 -23
  140. package/src/sass/animate/_zooming-exits/_zoomOutLeft.scss +0 -21
  141. package/src/sass/animate/_zooming-exits/_zoomOutRight.scss +0 -21
  142. package/src/sass/animate/_zooming-exits/_zoomOutUp.scss +0 -23
  143. package/src/sass/animate/_zooming-exits/zooming-exits.scss +0 -4
  144. package/src/sass/animate/animate.css +0 -7497
  145. package/src/sass/animate/animate.css.map +0 -7
  146. package/src/sass/animate/animate.min.css +0 -2
  147. package/src/sass/animate/animate.min.css.map +0 -7
  148. package/src/sass/animate/animate.scss +0 -30
  149. package/src/sass/animate/bower.json +0 -22
  150. package/src/sass/bootstrap/_alerts.scss +0 -70
  151. package/src/sass/bootstrap/_badges.scss +0 -68
  152. package/src/sass/bootstrap/_breadcrumbs.scss +0 -26
  153. package/src/sass/bootstrap/_button-groups.scss +0 -243
  154. package/src/sass/bootstrap/_buttons.scss +0 -160
  155. package/src/sass/bootstrap/_carousel.scss +0 -269
  156. package/src/sass/bootstrap/_close.scss +0 -36
  157. package/src/sass/bootstrap/_code.scss +0 -69
  158. package/src/sass/bootstrap/_component-animations.scss +0 -37
  159. package/src/sass/bootstrap/_dropdowns.scss +0 -223
  160. package/src/sass/bootstrap/_forms.scss +0 -613
  161. package/src/sass/bootstrap/_grid.scss +0 -84
  162. package/src/sass/bootstrap/_input-groups.scss +0 -166
  163. package/src/sass/bootstrap/_jumbotron.scss +0 -50
  164. package/src/sass/bootstrap/_labels.scss +0 -66
  165. package/src/sass/bootstrap/_list-group.scss +0 -124
  166. package/src/sass/bootstrap/_media.scss +0 -61
  167. package/src/sass/bootstrap/_mixins.scss +0 -39
  168. package/src/sass/bootstrap/_modals.scss +0 -150
  169. package/src/sass/bootstrap/_navbar.scss +0 -647
  170. package/src/sass/bootstrap/_navs.scss +0 -243
  171. package/src/sass/bootstrap/_normalize.scss +0 -427
  172. package/src/sass/bootstrap/_pager.scss +0 -54
  173. package/src/sass/bootstrap/_pagination.scss +0 -88
  174. package/src/sass/bootstrap/_panels.scss +0 -265
  175. package/src/sass/bootstrap/_popovers.scss +0 -135
  176. package/src/sass/bootstrap/_print.scss +0 -107
  177. package/src/sass/bootstrap/_progress-bars.scss +0 -87
  178. package/src/sass/bootstrap/_responsive-embed.scss +0 -35
  179. package/src/sass/bootstrap/_responsive-utilities.scss +0 -177
  180. package/src/sass/bootstrap/_scaffolding.scss +0 -162
  181. package/src/sass/bootstrap/_tables.scss +0 -234
  182. package/src/sass/bootstrap/_theme.scss +0 -273
  183. package/src/sass/bootstrap/_thumbnails.scss +0 -38
  184. package/src/sass/bootstrap/_tooltip.scss +0 -102
  185. package/src/sass/bootstrap/_type.scss +0 -298
  186. package/src/sass/bootstrap/_utilities.scss +0 -55
  187. package/src/sass/bootstrap/_variables.scss +0 -866
  188. package/src/sass/bootstrap/_wells.scss +0 -29
  189. package/src/sass/bootstrap/float-label.scss +0 -70
  190. package/src/sass/bootstrap/mixins/_alerts.scss +0 -14
  191. package/src/sass/bootstrap/mixins/_background-variant.scss +0 -11
  192. package/src/sass/bootstrap/mixins/_border-radius.scss +0 -18
  193. package/src/sass/bootstrap/mixins/_buttons.scss +0 -52
  194. package/src/sass/bootstrap/mixins/_center-block.scss +0 -7
  195. package/src/sass/bootstrap/mixins/_clearfix.scss +0 -22
  196. package/src/sass/bootstrap/mixins/_forms.scss +0 -88
  197. package/src/sass/bootstrap/mixins/_gradients.scss +0 -58
  198. package/src/sass/bootstrap/mixins/_grid-framework.scss +0 -81
  199. package/src/sass/bootstrap/mixins/_grid.scss +0 -122
  200. package/src/sass/bootstrap/mixins/_hide-text.scss +0 -21
  201. package/src/sass/bootstrap/mixins/_image.scss +0 -33
  202. package/src/sass/bootstrap/mixins/_labels.scss +0 -12
  203. package/src/sass/bootstrap/mixins/_list-group.scss +0 -31
  204. package/src/sass/bootstrap/mixins/_nav-divider.scss +0 -10
  205. package/src/sass/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  206. package/src/sass/bootstrap/mixins/_opacity.scss +0 -8
  207. package/src/sass/bootstrap/mixins/_pagination.scss +0 -23
  208. package/src/sass/bootstrap/mixins/_panels.scss +0 -24
  209. package/src/sass/bootstrap/mixins/_progress-bar.scss +0 -10
  210. package/src/sass/bootstrap/mixins/_reset-filter.scss +0 -8
  211. package/src/sass/bootstrap/mixins/_resize.scss +0 -6
  212. package/src/sass/bootstrap/mixins/_responsive-visibility.scss +0 -21
  213. package/src/sass/bootstrap/mixins/_size.scss +0 -10
  214. package/src/sass/bootstrap/mixins/_tab-focus.scss +0 -9
  215. package/src/sass/bootstrap/mixins/_table-row.scss +0 -28
  216. package/src/sass/bootstrap/mixins/_text-emphasis.scss +0 -11
  217. package/src/sass/bootstrap/mixins/_text-overflow.scss +0 -8
  218. package/src/sass/bootstrap/mixins/_vendor-prefixes.scss +0 -222
  219. package/src/sass/crn_app/_admin.admin.scss +0 -205
  220. package/src/sass/crn_app/_admin.graphs.scss +0 -51
  221. package/src/sass/crn_app/_admin.tools.scss +0 -24
  222. package/src/sass/crn_app/_api.scss +0 -65
  223. package/src/sass/crn_app/_bootstrap.overrides.scss +0 -54
  224. package/src/sass/crn_app/_colors.scss +0 -88
  225. package/src/sass/crn_app/_common.click-to-edit.scss +0 -187
  226. package/src/sass/crn_app/_common.modals.scss +0 -686
  227. package/src/sass/crn_app/_common.pagination.scss +0 -41
  228. package/src/sass/crn_app/_common.papaya.scss +0 -348
  229. package/src/sass/crn_app/_common.progress-bar.scss +0 -26
  230. package/src/sass/crn_app/_common.spinner.scss +0 -63
  231. package/src/sass/crn_app/_common.status.scss +0 -103
  232. package/src/sass/crn_app/_common.tooltip.scss +0 -22
  233. package/src/sass/crn_app/_common.typeahead.scss +0 -31
  234. package/src/sass/crn_app/_common.variables.scss +0 -16
  235. package/src/sass/crn_app/_dashboard.datasets.scss +0 -588
  236. package/src/sass/crn_app/_dataset.comments.scss +0 -201
  237. package/src/sass/crn_app/_dataset.dataset.scss +0 -161
  238. package/src/sass/crn_app/_dataset.file-tree.scss +0 -277
  239. package/src/sass/crn_app/_dataset.jobs.scss +0 -701
  240. package/src/sass/crn_app/_dataset.sidebar.scss +0 -265
  241. package/src/sass/crn_app/_dataset.tools.scss +0 -118
  242. package/src/sass/crn_app/_elements-wrappers.scss +0 -870
  243. package/src/sass/crn_app/_faq.scss +0 -37
  244. package/src/sass/crn_app/_frontPage.scss +0 -569
  245. package/src/sass/crn_app/_nav.navbar.scss +0 -387
  246. package/src/sass/crn_app/_theme.scss +0 -87
  247. package/src/sass/crn_app/_upload.upload.scss +0 -393
  248. package/src/sass/crn_app/_upload.validation.scss +0 -210
  249. package/src/sass/draft/draft.scss +0 -11
  250. package/src/sass/draft/rich-editor.scss +0 -73
  251. package/src/sass/font-awesome/_animated.scss +0 -34
  252. package/src/sass/font-awesome/_bordered-pulled.scss +0 -25
  253. package/src/sass/font-awesome/_core.scss +0 -12
  254. package/src/sass/font-awesome/_fixed-width.scss +0 -6
  255. package/src/sass/font-awesome/_font-awesome.scss +0 -17
  256. package/src/sass/font-awesome/_icons.scss +0 -697
  257. package/src/sass/font-awesome/_larger.scss +0 -13
  258. package/src/sass/font-awesome/_list.scss +0 -19
  259. package/src/sass/font-awesome/_mixins.scss +0 -26
  260. package/src/sass/font-awesome/_path.scss +0 -15
  261. package/src/sass/font-awesome/_rotated-flipped.scss +0 -20
  262. package/src/sass/font-awesome/_stacked.scss +0 -20
  263. package/src/sass/font-awesome/_variables.scss +0 -713
  264. package/src/sass/main.scss +0 -317
  265. package/src/sass/pre-refactor-with-wrapper-main.scss +0 -1549
  266. package/src/scripts/admin/__tests__/__snapshots__/exports.spec.jsx.snap +0 -112
  267. package/src/scripts/admin/__tests__/exports.spec.jsx +0 -15
  268. package/src/scripts/admin/__tests__/users.spec.jsx +0 -15
  269. package/src/scripts/admin/admin.jsx +0 -53
  270. package/src/scripts/admin/flagged-files.jsx +0 -178
  271. package/src/scripts/admin/user-fragment.ts +0 -14
  272. package/src/scripts/admin/user-tools.tsx +0 -83
  273. package/src/scripts/admin/users.jsx +0 -224
  274. package/src/scripts/authentication/admin-user.jsx +0 -23
  275. package/src/scripts/authentication/buttons.jsx +0 -26
  276. package/src/scripts/authentication/globus-button.jsx +0 -39
  277. package/src/scripts/authentication/google-button.jsx +0 -32
  278. package/src/scripts/authentication/logged-in.jsx +0 -12
  279. package/src/scripts/authentication/logged-out.jsx +0 -12
  280. package/src/scripts/authentication/loginCheck.js +0 -7
  281. package/src/scripts/authentication/orcid-button.jsx +0 -32
  282. package/src/scripts/authentication/withProfile.jsx +0 -22
  283. package/src/scripts/classic.tsx +0 -18
  284. package/src/scripts/common/forms/file-select.tsx +0 -71
  285. package/src/scripts/common/partials/__tests__/__snapshots__/footer.spec.jsx.snap +0 -42
  286. package/src/scripts/common/partials/__tests__/__snapshots__/metric.spec.jsx.snap +0 -101
  287. package/src/scripts/common/partials/__tests__/footer.spec.jsx +0 -10
  288. package/src/scripts/common/partials/__tests__/metric.spec.jsx +0 -31
  289. package/src/scripts/common/partials/footer.jsx +0 -40
  290. package/src/scripts/common/partials/login.jsx +0 -99
  291. package/src/scripts/common/partials/metric.jsx +0 -73
  292. package/src/scripts/common/partials/spinner.jsx +0 -34
  293. package/src/scripts/common/partials/status.jsx +0 -96
  294. package/src/scripts/common/partials/timeout.jsx +0 -47
  295. package/src/scripts/common/partials/tooltip.jsx +0 -36
  296. package/src/scripts/components/__tests__/dropdown-button.spec.tsx +0 -49
  297. package/src/scripts/components/dropdown-button.tsx +0 -42
  298. package/src/scripts/components/panel-group.tsx +0 -24
  299. package/src/scripts/components/panel.tsx +0 -42
  300. package/src/scripts/datalad/__tests__/snapshotVersion.spec.js +0 -21
  301. package/src/scripts/datalad/comments/__tests__/comment-editor.spec.jsx +0 -19
  302. package/src/scripts/datalad/comments/block-style-controls.jsx +0 -46
  303. package/src/scripts/datalad/comments/comment-editor.jsx +0 -79
  304. package/src/scripts/datalad/comments/inline-style-controls.jsx +0 -34
  305. package/src/scripts/datalad/comments/style-button.jsx +0 -28
  306. package/src/scripts/datalad/dashboard/__tests__/__snapshots__/dashboard.spec.jsx.snap +0 -163
  307. package/src/scripts/datalad/dashboard/__tests__/dashboard.spec.jsx +0 -21
  308. package/src/scripts/datalad/dashboard/dashboard.jsx +0 -54
  309. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-filter.spec.jsx.snap +0 -20
  310. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-row-skeleton.spec.jsx.snap +0 -13
  311. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-row.spec.jsx.snap +0 -65
  312. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-sorter.spec.jsx.snap +0 -14
  313. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-virtual-scroller.spec.jsx.snap +0 -17
  314. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/uploaded.spec.jsx.snap +0 -27
  315. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-filter.spec.jsx +0 -67
  316. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-query.spec.jsx +0 -72
  317. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-row-skeleton.spec.jsx +0 -9
  318. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-row.spec.jsx +0 -53
  319. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-sorter.spec.jsx +0 -69
  320. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-virtual-scroller.spec.jsx +0 -65
  321. package/src/scripts/datalad/dashboard/datasets/__tests__/uploaded.spec.jsx +0 -17
  322. package/src/scripts/datalad/dashboard/datasets/dataset-filter.jsx +0 -78
  323. package/src/scripts/datalad/dashboard/datasets/dataset-query.jsx +0 -102
  324. package/src/scripts/datalad/dashboard/datasets/dataset-row-error-boundary.jsx +0 -52
  325. package/src/scripts/datalad/dashboard/datasets/dataset-row-skeleton.jsx +0 -10
  326. package/src/scripts/datalad/dashboard/datasets/dataset-row.jsx +0 -58
  327. package/src/scripts/datalad/dashboard/datasets/dataset-sorter.jsx +0 -148
  328. package/src/scripts/datalad/dashboard/datasets/dataset-statuses.jsx +0 -44
  329. package/src/scripts/datalad/dashboard/datasets/dataset-tab.jsx +0 -192
  330. package/src/scripts/datalad/dashboard/datasets/dataset-virtual-scroller.jsx +0 -126
  331. package/src/scripts/datalad/dashboard/datasets/row-height.jsx +0 -7
  332. package/src/scripts/datalad/dashboard/datasets/uploaded.jsx +0 -33
  333. package/src/scripts/datalad/dataset/__tests__/__snapshots__/comments.spec.jsx.snap +0 -137
  334. package/src/scripts/datalad/dataset/__tests__/__snapshots__/dataset-page.spec.jsx.snap +0 -69
  335. package/src/scripts/datalad/dataset/__tests__/__snapshots__/dataset-query.spec.jsx.snap +0 -15
  336. package/src/scripts/datalad/dataset/__tests__/__snapshots__/left-siderbar.spec.jsx.snap +0 -85
  337. package/src/scripts/datalad/dataset/__tests__/dataset-page.spec.jsx +0 -33
  338. package/src/scripts/datalad/dataset/__tests__/dataset-query.spec.jsx +0 -20
  339. package/src/scripts/datalad/dataset/__tests__/left-siderbar.spec.jsx +0 -106
  340. package/src/scripts/datalad/dataset/comment.jsx +0 -90
  341. package/src/scripts/datalad/dataset/comments.jsx +0 -83
  342. package/src/scripts/datalad/dataset/dataset-description.jsx +0 -111
  343. package/src/scripts/datalad/dataset/dataset-main.jsx +0 -29
  344. package/src/scripts/datalad/dataset/dataset-page.jsx +0 -63
  345. package/src/scripts/datalad/dataset/dataset-query.jsx +0 -192
  346. package/src/scripts/datalad/dataset/dataset.jsx +0 -22
  347. package/src/scripts/datalad/dataset/delete-page.tsx +0 -92
  348. package/src/scripts/datalad/dataset/left-sidebar.jsx +0 -109
  349. package/src/scripts/datalad/download/__tests__/__snapshots__/download-dataset.spec.jsx.snap +0 -7
  350. package/src/scripts/datalad/download/__tests__/__snapshots__/download-tool.spec.jsx.snap +0 -26
  351. package/src/scripts/datalad/download/__tests__/download-dataset.spec.jsx +0 -19
  352. package/src/scripts/datalad/download/__tests__/download-tool.spec.jsx +0 -19
  353. package/src/scripts/datalad/download/download-command-line.jsx +0 -43
  354. package/src/scripts/datalad/download/download-datalad.jsx +0 -58
  355. package/src/scripts/datalad/download/download-dataset.jsx +0 -61
  356. package/src/scripts/datalad/download/download-link.jsx +0 -41
  357. package/src/scripts/datalad/download/download-native.js +0 -118
  358. package/src/scripts/datalad/download/download-query.js +0 -22
  359. package/src/scripts/datalad/download/download-s3.jsx +0 -46
  360. package/src/scripts/datalad/download/download-tool.jsx +0 -44
  361. package/src/scripts/datalad/download/native-file-toast.jsx +0 -90
  362. package/src/scripts/datalad/download/shell-example.jsx +0 -9
  363. package/src/scripts/datalad/download/track-download.js +0 -15
  364. package/src/scripts/datalad/fragments/__tests__/__snapshots__/cancel-button.spec.jsx.snap +0 -21
  365. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-analytics.spec.jsx.snap +0 -41
  366. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-authors.spec.jsx.snap +0 -13
  367. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-readme.spec.jsx.snap +0 -49
  368. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-title.spec.jsx.snap +0 -7
  369. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-tools.spec.jsx.snap +0 -346
  370. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-uploaded.spec.jsx.snap +0 -7
  371. package/src/scripts/datalad/fragments/__tests__/__snapshots__/edit-button.spec.jsx.snap +0 -21
  372. package/src/scripts/datalad/fragments/__tests__/__snapshots__/edit-list.spec.jsx.snap +0 -34
  373. package/src/scripts/datalad/fragments/__tests__/__snapshots__/edit-readme.spec.jsx.snap +0 -3
  374. package/src/scripts/datalad/fragments/__tests__/__snapshots__/save-button.spec.jsx.snap +0 -21
  375. package/src/scripts/datalad/fragments/__tests__/dataset-analytics.spec.jsx +0 -16
  376. package/src/scripts/datalad/fragments/__tests__/dataset-authors.spec.jsx +0 -22
  377. package/src/scripts/datalad/fragments/__tests__/dataset-prominent-links.spec.jsx +0 -32
  378. package/src/scripts/datalad/fragments/__tests__/dataset-readme.spec.jsx +0 -10
  379. package/src/scripts/datalad/fragments/__tests__/dataset-summary.spec.jsx +0 -55
  380. package/src/scripts/datalad/fragments/__tests__/dataset-title.spec.jsx +0 -10
  381. package/src/scripts/datalad/fragments/__tests__/dataset-tools.spec.jsx +0 -55
  382. package/src/scripts/datalad/fragments/__tests__/dataset-uploaded.spec.jsx +0 -16
  383. package/src/scripts/datalad/fragments/__tests__/edit-list.spec.jsx +0 -25
  384. package/src/scripts/datalad/fragments/__tests__/edit-readme.spec.jsx +0 -10
  385. package/src/scripts/datalad/fragments/cancel-button.jsx +0 -24
  386. package/src/scripts/datalad/fragments/copyable-tooltip.jsx +0 -82
  387. package/src/scripts/datalad/fragments/dataset-analytics.jsx +0 -27
  388. package/src/scripts/datalad/fragments/dataset-authors.jsx +0 -16
  389. package/src/scripts/datalad/fragments/dataset-citation.jsx +0 -77
  390. package/src/scripts/datalad/fragments/dataset-files.jsx +0 -50
  391. package/src/scripts/datalad/fragments/dataset-git-access.jsx +0 -56
  392. package/src/scripts/datalad/fragments/dataset-git-hash.jsx +0 -27
  393. package/src/scripts/datalad/fragments/dataset-history.jsx +0 -95
  394. package/src/scripts/datalad/fragments/dataset-modified.jsx +0 -17
  395. package/src/scripts/datalad/fragments/dataset-prominent-links.jsx +0 -129
  396. package/src/scripts/datalad/fragments/dataset-readme.jsx +0 -42
  397. package/src/scripts/datalad/fragments/dataset-summary.jsx +0 -230
  398. package/src/scripts/datalad/fragments/dataset-title.jsx +0 -10
  399. package/src/scripts/datalad/fragments/dataset-tools.jsx +0 -190
  400. package/src/scripts/datalad/fragments/dataset-uploaded.jsx +0 -25
  401. package/src/scripts/datalad/fragments/edit-button.jsx +0 -24
  402. package/src/scripts/datalad/fragments/edit-description-field.jsx +0 -54
  403. package/src/scripts/datalad/fragments/edit-description-list.jsx +0 -49
  404. package/src/scripts/datalad/fragments/edit-list.jsx +0 -82
  405. package/src/scripts/datalad/fragments/edit-readme.jsx +0 -44
  406. package/src/scripts/datalad/fragments/incomplete-dataset.jsx +0 -23
  407. package/src/scripts/datalad/fragments/metadata-tool.jsx +0 -34
  408. package/src/scripts/datalad/fragments/number-input.tsx +0 -126
  409. package/src/scripts/datalad/fragments/save-button.jsx +0 -24
  410. package/src/scripts/datalad/fragments/select-input.tsx +0 -247
  411. package/src/scripts/datalad/fragments/share-dataset-button.jsx +0 -32
  412. package/src/scripts/datalad/fragments/text-array-input.tsx +0 -119
  413. package/src/scripts/datalad/fragments/text-input.tsx +0 -206
  414. package/src/scripts/datalad/mutations/__tests__/__snapshots__/comment.spec.jsx.snap +0 -5
  415. package/src/scripts/datalad/mutations/__tests__/__snapshots__/delete.spec.jsx.snap +0 -181
  416. package/src/scripts/datalad/mutations/__tests__/__snapshots__/manage-permissions.spec.jsx.snap +0 -361
  417. package/src/scripts/datalad/mutations/__tests__/__snapshots__/subscribe-to-newsletter.spec.jsx.snap +0 -83
  418. package/src/scripts/datalad/mutations/__tests__/__snapshots__/update-file.spec.jsx.snap +0 -25
  419. package/src/scripts/datalad/mutations/__tests__/__snapshots__/update-permissions.spec.jsx.snap +0 -361
  420. package/src/scripts/datalad/mutations/__tests__/comment.spec.jsx +0 -154
  421. package/src/scripts/datalad/mutations/__tests__/manage-permissions.spec.jsx +0 -21
  422. package/src/scripts/datalad/mutations/__tests__/subscribe-to-newsletter.spec.jsx +0 -10
  423. package/src/scripts/datalad/mutations/__tests__/update-file.spec.jsx +0 -15
  424. package/src/scripts/datalad/mutations/__tests__/update-permissions.spec.jsx +0 -21
  425. package/src/scripts/datalad/mutations/add-metadata.jsx +0 -164
  426. package/src/scripts/datalad/mutations/comment.jsx +0 -164
  427. package/src/scripts/datalad/mutations/delete-dataset-form.jsx +0 -82
  428. package/src/scripts/datalad/mutations/description.jsx +0 -129
  429. package/src/scripts/datalad/mutations/flag-annex-object.jsx +0 -62
  430. package/src/scripts/datalad/mutations/metadata-form.jsx +0 -388
  431. package/src/scripts/datalad/mutations/readme.jsx +0 -53
  432. package/src/scripts/datalad/mutations/remove-annex-object.jsx +0 -71
  433. package/src/scripts/datalad/mutations/subscribe-to-newsletter.jsx +0 -26
  434. package/src/scripts/datalad/mutations/update-file.jsx +0 -51
  435. package/src/scripts/datalad/routes/__tests__/__snapshots__/manage-permissions.spec.jsx.snap +0 -159
  436. package/src/scripts/datalad/routes/__tests__/__snapshots__/snapshot.spec.jsx.snap +0 -31
  437. package/src/scripts/datalad/routes/__tests__/dataset-content.spec.jsx +0 -108
  438. package/src/scripts/datalad/routes/__tests__/file-display.spec.jsx +0 -22
  439. package/src/scripts/datalad/routes/__tests__/manage-permissions.spec.jsx +0 -101
  440. package/src/scripts/datalad/routes/__tests__/snapshot.spec.jsx +0 -49
  441. package/src/scripts/datalad/routes/admin-datalad.jsx +0 -45
  442. package/src/scripts/datalad/routes/admin-exports.jsx +0 -125
  443. package/src/scripts/datalad/routes/dataset-content.jsx +0 -198
  444. package/src/scripts/datalad/routes/dataset-routes.jsx +0 -162
  445. package/src/scripts/datalad/routes/file-display.jsx +0 -84
  446. package/src/scripts/datalad/routes/manage-permissions.jsx +0 -128
  447. package/src/scripts/datalad/routes/snapshot-content.jsx +0 -135
  448. package/src/scripts/datalad/routes/snapshot.jsx +0 -131
  449. package/src/scripts/datalad/snapshotVersion.js +0 -7
  450. package/src/scripts/datalad/validation/validation-panel.jsx +0 -48
  451. package/src/scripts/datalad/validation/validation-status.jsx +0 -120
  452. package/src/scripts/datalad/validation/validation.jsx +0 -40
  453. package/src/scripts/dataset/dataset.metrics.jsx +0 -61
  454. package/src/scripts/file-tree/__tests__/__snapshots__/file-tree-unloaded-directory.spec.jsx.snap +0 -26
  455. package/src/scripts/file-tree/__tests__/__snapshots__/file-tree.spec.jsx.snap +0 -18
  456. package/src/scripts/file-tree/__tests__/__snapshots__/file.spec.jsx.snap +0 -81
  457. package/src/scripts/file-tree/__tests__/file-tree-loading.spec.jsx +0 -18
  458. package/src/scripts/file-tree/__tests__/file-tree-unloaded-directory.spec.jsx +0 -74
  459. package/src/scripts/file-tree/__tests__/file-tree.spec.jsx +0 -94
  460. package/src/scripts/file-tree/__tests__/file-viewer-type.spec.jsx +0 -15
  461. package/src/scripts/file-tree/__tests__/file.spec.jsx +0 -44
  462. package/src/scripts/file-tree/__tests__/flat-to-tree.spec.js +0 -55
  463. package/src/scripts/file-tree/file-tree-loading.jsx +0 -64
  464. package/src/scripts/file-tree/file-tree-unloaded-directory.jsx +0 -108
  465. package/src/scripts/file-tree/file-tree.jsx +0 -133
  466. package/src/scripts/file-tree/file-view.jsx +0 -31
  467. package/src/scripts/file-tree/file-viewer-type.jsx +0 -45
  468. package/src/scripts/file-tree/file.jsx +0 -123
  469. package/src/scripts/file-tree/files.jsx +0 -126
  470. package/src/scripts/file-tree/flat-to-tree.js +0 -49
  471. package/src/scripts/file-tree/viewers/__tests__/__snapshots__/file-viewer-json.spec.jsx.snap +0 -51
  472. package/src/scripts/file-tree/viewers/__tests__/file-viewer-json.spec.jsx +0 -15
  473. package/src/scripts/file-tree/viewers/__tests__/parse-tabular.spec.js +0 -24
  474. package/src/scripts/file-tree/viewers/file-viewer-csv.jsx +0 -16
  475. package/src/scripts/file-tree/viewers/file-viewer-html.jsx +0 -20
  476. package/src/scripts/file-tree/viewers/file-viewer-json.jsx +0 -50
  477. package/src/scripts/file-tree/viewers/file-viewer-nifti.jsx +0 -11
  478. package/src/scripts/file-tree/viewers/file-viewer-table.jsx +0 -34
  479. package/src/scripts/file-tree/viewers/file-viewer-text.jsx +0 -13
  480. package/src/scripts/file-tree/viewers/file-viewer-tsv.jsx +0 -16
  481. package/src/scripts/file-tree/viewers/parse-tabular.js +0 -18
  482. package/src/scripts/front-page/__tests__/__snapshots__/email-subscription-box.spec.jsx.snap +0 -190
  483. package/src/scripts/front-page/__tests__/__snapshots__/front-page-stats.spec.jsx.snap +0 -29
  484. package/src/scripts/front-page/__tests__/__snapshots__/front-page-top-datasets.spec.jsx.snap +0 -464
  485. package/src/scripts/front-page/__tests__/dataset-count.spec.jsx +0 -33
  486. package/src/scripts/front-page/__tests__/email-subscription-box.spec.jsx +0 -57
  487. package/src/scripts/front-page/__tests__/front-page-stats.spec.jsx +0 -10
  488. package/src/scripts/front-page/__tests__/front-page-top-datasets.spec.jsx +0 -27
  489. package/src/scripts/front-page/__tests__/participant-count.spec.jsx +0 -31
  490. package/src/scripts/front-page/dataset-count.jsx +0 -29
  491. package/src/scripts/front-page/email-subscription-box.jsx +0 -131
  492. package/src/scripts/front-page/front-page-additional-info.jsx +0 -15
  493. package/src/scripts/front-page/front-page-collaborators.jsx +0 -117
  494. package/src/scripts/front-page/front-page-stats.jsx +0 -71
  495. package/src/scripts/front-page/front-page-support.jsx +0 -30
  496. package/src/scripts/front-page/front-page-tabs.jsx +0 -166
  497. package/src/scripts/front-page/front-page-top-datasets.jsx +0 -203
  498. package/src/scripts/front-page/front-page.jsx +0 -95
  499. package/src/scripts/front-page/participant-count.jsx +0 -25
  500. package/src/scripts/hooks/use-measure.js +0 -15
  501. package/src/scripts/hooks/use-previous.js +0 -7
  502. package/src/scripts/nav/assets/brand_mark.png +0 -0
  503. package/src/scripts/nav/assets/favicon-upload.png +0 -0
  504. package/src/scripts/nav/assets/logo_app.png +0 -0
  505. package/src/scripts/nav/navbar.jsx +0 -144
  506. package/src/scripts/nav/navbar.navmenu.jsx +0 -106
  507. package/src/scripts/nav/navbar.usermenu.jsx +0 -52
  508. package/src/scripts/pages/citation-page.jsx +0 -43
  509. package/src/scripts/pet/__tests__/__snapshots__/dummy.spec.jsx.snap +0 -70
  510. package/src/scripts/pet/__tests__/dummy.spec.jsx +0 -10
  511. package/src/scripts/pet/dummy.jsx +0 -61
  512. package/src/scripts/refactor_2021/dataset/dataset-pre-refactor-container.tsx +0 -12
  513. package/src/scripts/routes.tsx +0 -36
  514. package/src/scripts/search/search-input.tsx +0 -42
  515. package/src/scripts/search/search-results.tsx +0 -114
  516. package/src/scripts/styles/capitalized.jsx +0 -6
  517. package/src/scripts/styles/uppercase.jsx +0 -6
  518. package/src/scripts/uploader/__tests__/add-path-to-files.spec.js +0 -29
  519. package/src/scripts/uploader/__tests__/file-upload.spec.js +0 -116
  520. package/src/scripts/uploader/__tests__/upload-disclaimer.spec.jsx +0 -67
  521. package/src/scripts/uploader/__tests__/upload-mutation.spec.js +0 -57
  522. package/src/scripts/uploader/__tests__/uploader.spec.js +0 -31
  523. package/src/scripts/uploader/add-path-to-files.js +0 -19
  524. package/src/scripts/uploader/file-upload.js +0 -88
  525. package/src/scripts/uploader/upload-button.jsx +0 -18
  526. package/src/scripts/uploader/upload-disclaimer.jsx +0 -92
  527. package/src/scripts/uploader/upload-file-status.jsx +0 -20
  528. package/src/scripts/uploader/upload-issues.jsx +0 -131
  529. package/src/scripts/uploader/upload-metadata.jsx +0 -59
  530. package/src/scripts/uploader/upload-mutation.js +0 -111
  531. package/src/scripts/uploader/upload-progress-button.jsx +0 -20
  532. package/src/scripts/uploader/upload-progress-class.js +0 -36
  533. package/src/scripts/uploader/upload-progress.jsx +0 -15
  534. package/src/scripts/uploader/upload-rename.jsx +0 -33
  535. package/src/scripts/uploader/upload-resume.jsx +0 -35
  536. package/src/scripts/uploader/upload-select.jsx +0 -29
  537. package/src/scripts/uploader/upload-status.jsx +0 -23
  538. package/src/scripts/uploader/upload-step.jsx +0 -48
  539. package/src/scripts/uploader/uploader-context.js +0 -6
  540. package/src/scripts/uploader/uploader-location.js +0 -5
  541. package/src/scripts/uploader/uploader-modal.jsx +0 -27
  542. package/src/scripts/uploader/uploader-setup-routes.jsx +0 -52
  543. package/src/scripts/uploader/uploader-status-routes.jsx +0 -30
  544. package/src/scripts/uploader/uploader-view.jsx +0 -45
  545. package/src/scripts/uploader/uploader.jsx +0 -388
  546. package/src/scripts/user/__mocks__/user.store.js +0 -1
  547. package/src/scripts/user/api.jsx +0 -132
  548. package/src/scripts/user/avatar.jsx +0 -40
  549. package/src/scripts/utils/crn.js +0 -15
  550. package/src/scripts/utils/request.js +0 -107
  551. package/src/scripts/utils/user.js +0 -18
  552. package/src/scripts/validation/validation-results.issues.issue.jsx +0 -90
  553. package/src/scripts/validation/validation-results.issues.jsx +0 -79
  554. 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
- }