@openneuro/app 4.20.5 → 4.20.6-alpha.2

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 (358) hide show
  1. package/__mocks__/fileMock.js +1 -1
  2. package/package.json +5 -5
  3. package/pluralize-esm.js +204 -211
  4. package/src/@types/custom.d.ts +3 -3
  5. package/src/@types/react.d.ts +3 -4
  6. package/src/client.jsx +17 -16
  7. package/src/scripts/__mocks__/config.ts +6 -6
  8. package/src/scripts/__utils__/mock-app-shell.tsx +9 -8
  9. package/src/scripts/apm.js +6 -6
  10. package/src/scripts/app.tsx +7 -7
  11. package/src/scripts/authentication/__tests__/profile.spec.js +10 -10
  12. package/src/scripts/authentication/admin-user.jsx +2 -2
  13. package/src/scripts/authentication/logged-in.jsx +2 -2
  14. package/src/scripts/authentication/logged-out.jsx +2 -2
  15. package/src/scripts/authentication/loginCheck.js +2 -2
  16. package/src/scripts/authentication/loginUrls.ts +1 -1
  17. package/src/scripts/authentication/profile.ts +7 -7
  18. package/src/scripts/authentication/regular-user.tsx +3 -3
  19. package/src/scripts/authentication/signOut.ts +2 -2
  20. package/src/scripts/authentication/withProfile.jsx +6 -6
  21. package/src/scripts/common/block-navigation.jsx +3 -4
  22. package/src/scripts/common/containers/__tests__/header.spec.tsx +16 -16
  23. package/src/scripts/common/containers/footer.tsx +3 -3
  24. package/src/scripts/common/containers/header.tsx +30 -30
  25. package/src/scripts/common/forms/__tests__/warn-button.spec.jsx +6 -6
  26. package/src/scripts/common/forms/warn-button.jsx +21 -17
  27. package/src/scripts/common/partials/block-navigation.jsx +3 -4
  28. package/src/scripts/common/partials/freshdesk-widget.jsx +17 -20
  29. package/src/scripts/common/partials/toast-content.jsx +2 -2
  30. package/src/scripts/components/__tests__/data-table.spec.tsx +7 -7
  31. package/src/scripts/components/data-table.tsx +23 -22
  32. package/src/scripts/config.ts +2 -2
  33. package/src/scripts/datalad/dataset/comments-fragments.js +1 -1
  34. package/src/scripts/datalad/dataset/dataset-context.js +1 -1
  35. package/src/scripts/datalad/dataset/dataset-query-context.js +1 -1
  36. package/src/scripts/datalad/dataset/dataset-query-fragments.js +1 -1
  37. package/src/scripts/datalad/mutations/cache-clear.jsx +7 -6
  38. package/src/scripts/datalad/mutations/cache-id.js +2 -2
  39. package/src/scripts/datalad/mutations/delete-comment.jsx +13 -11
  40. package/src/scripts/datalad/mutations/delete.jsx +10 -9
  41. package/src/scripts/datalad/mutations/follow.jsx +12 -11
  42. package/src/scripts/datalad/mutations/publish.jsx +13 -12
  43. package/src/scripts/datalad/mutations/remove-permissions.jsx +8 -8
  44. package/src/scripts/datalad/mutations/revalidate.jsx +7 -6
  45. package/src/scripts/datalad/mutations/snapshot.tsx +7 -7
  46. package/src/scripts/datalad/mutations/star.jsx +12 -11
  47. package/src/scripts/datalad/mutations/submit-metadata.jsx +14 -12
  48. package/src/scripts/datalad/mutations/update-permissions.jsx +14 -13
  49. package/src/scripts/datalad/mutations/update-ref.jsx +7 -6
  50. package/src/scripts/datalad/routes/dataset-redirect.tsx +49 -49
  51. package/src/scripts/datalad/subscriptions/__tests__/files-subscription.spec.jsx +32 -32
  52. package/src/scripts/datalad/subscriptions/files-subscription.jsx +16 -16
  53. package/src/scripts/datalad/subscriptions/useDatasetDeletedSubscription.jsx +4 -4
  54. package/src/scripts/datalad/subscriptions/useDraftSubscription.js +4 -4
  55. package/src/scripts/datalad/subscriptions/usePermissionsSubscription.js +4 -4
  56. package/src/scripts/datalad/subscriptions/useSnapshotsUpdatedSubscriptions.js +3 -3
  57. package/src/scripts/dataset/__tests__/__snapshots__/snapshot-container.spec.tsx.snap +2 -2
  58. package/src/scripts/dataset/__tests__/snapshot-container.spec.tsx +12 -12
  59. package/src/scripts/dataset/comments/__tests__/comment.spec.jsx +21 -21
  60. package/src/scripts/dataset/comments/__tests__/comments.spec.jsx +10 -10
  61. package/src/scripts/dataset/comments/block-style-controls.jsx +15 -15
  62. package/src/scripts/dataset/comments/comment-editor.jsx +31 -31
  63. package/src/scripts/dataset/comments/comment.jsx +50 -50
  64. package/src/scripts/dataset/comments/comments.jsx +24 -22
  65. package/src/scripts/dataset/comments/inline-style-controls.jsx +9 -9
  66. package/src/scripts/dataset/comments/style-button.jsx +8 -9
  67. package/src/scripts/dataset/common/follow-toggles.tsx +3 -3
  68. package/src/scripts/dataset/dataset-query-context.js +1 -1
  69. package/src/scripts/dataset/dataset-query.jsx +34 -31
  70. package/src/scripts/dataset/dataset-routes.jsx +5 -5
  71. package/src/scripts/dataset/download/__tests__/download-command-line.spec.jsx +13 -13
  72. package/src/scripts/dataset/download/__tests__/download-link.spec.jsx +10 -10
  73. package/src/scripts/dataset/download/__tests__/download-native.spec.js +7 -7
  74. package/src/scripts/dataset/download/__tests__/shell-example.spec.jsx +5 -5
  75. package/src/scripts/dataset/download/download-command-line.jsx +9 -7
  76. package/src/scripts/dataset/download/download-datalad.jsx +22 -20
  77. package/src/scripts/dataset/download/download-derivative-datalad.tsx +2 -2
  78. package/src/scripts/dataset/download/download-derivative-s3.tsx +2 -2
  79. package/src/scripts/dataset/download/download-link.jsx +6 -6
  80. package/src/scripts/dataset/download/download-native.js +20 -19
  81. package/src/scripts/dataset/download/download-query.js +2 -3
  82. package/src/scripts/dataset/download/download-s3.jsx +8 -8
  83. package/src/scripts/dataset/download/download-script.tsx +23 -20
  84. package/src/scripts/dataset/download/native-file-toast.jsx +13 -11
  85. package/src/scripts/dataset/download/shell-example.jsx +1 -1
  86. package/src/scripts/dataset/download/track-download.js +5 -5
  87. package/src/scripts/dataset/draft-container.tsx +104 -102
  88. package/src/scripts/dataset/draft-snapshot-routes.tsx +3 -3
  89. package/src/scripts/dataset/files/__tests__/file-tree-unloaded-directory.spec.jsx +23 -23
  90. package/src/scripts/dataset/files/__tests__/file-tree.spec.jsx +57 -58
  91. package/src/scripts/dataset/files/__tests__/file-viewer-type.spec.jsx +6 -6
  92. package/src/scripts/dataset/files/__tests__/file.spec.jsx +15 -15
  93. package/src/scripts/dataset/files/file-display.jsx +11 -11
  94. package/src/scripts/dataset/files/file-tree-unloaded-directory.jsx +10 -10
  95. package/src/scripts/dataset/files/file-tree.tsx +27 -27
  96. package/src/scripts/dataset/files/file-view.jsx +4 -4
  97. package/src/scripts/dataset/files/file-viewer-type.jsx +21 -21
  98. package/src/scripts/dataset/files/file.tsx +85 -80
  99. package/src/scripts/dataset/files/files.tsx +41 -40
  100. package/src/scripts/dataset/files/index.tsx +2 -2
  101. package/src/scripts/dataset/files/viewers/__tests__/__snapshots__/file-viewer-json.spec.jsx.snap +0 -24
  102. package/src/scripts/dataset/files/viewers/__tests__/file-viewer-json.spec.jsx +9 -9
  103. package/src/scripts/dataset/files/viewers/__tests__/parse-tabular.spec.js +8 -8
  104. package/src/scripts/dataset/files/viewers/file-viewer-csv.jsx +5 -5
  105. package/src/scripts/dataset/files/viewers/file-viewer-html.jsx +3 -3
  106. package/src/scripts/dataset/files/viewers/file-viewer-json.jsx +4 -4
  107. package/src/scripts/dataset/files/viewers/file-viewer-nifti.tsx +4 -4
  108. package/src/scripts/dataset/files/viewers/file-viewer-table.tsx +3 -3
  109. package/src/scripts/dataset/files/viewers/file-viewer-text.jsx +3 -3
  110. package/src/scripts/dataset/files/viewers/file-viewer-tsv.jsx +5 -5
  111. package/src/scripts/dataset/files/viewers/parse-tabular.js +4 -4
  112. package/src/scripts/dataset/fragments/__tests__/cancel-button.spec.tsx +5 -5
  113. package/src/scripts/dataset/fragments/__tests__/dataset-alert-draft.spec.tsx +9 -9
  114. package/src/scripts/dataset/fragments/__tests__/dataset-citation.spec.jsx +10 -10
  115. package/src/scripts/dataset/fragments/__tests__/doi-link.spec.tsx +29 -29
  116. package/src/scripts/dataset/fragments/__tests__/edit-button.spec.tsx +5 -5
  117. package/src/scripts/dataset/fragments/__tests__/edit-list.spec.jsx +13 -13
  118. package/src/scripts/dataset/fragments/__tests__/save-button.spec.tsx +5 -5
  119. package/src/scripts/dataset/fragments/__tests__/select-input.spec.tsx +26 -26
  120. package/src/scripts/dataset/fragments/cancel-button.tsx +2 -2
  121. package/src/scripts/dataset/fragments/comments-fragments.js +1 -1
  122. package/src/scripts/dataset/fragments/copyable-tooltip.jsx +14 -13
  123. package/src/scripts/dataset/fragments/dataset-alert-draft.tsx +17 -13
  124. package/src/scripts/dataset/fragments/dataset-alert-version.tsx +5 -4
  125. package/src/scripts/dataset/fragments/dataset-citation.jsx +23 -21
  126. package/src/scripts/dataset/fragments/dataset-history.jsx +12 -12
  127. package/src/scripts/dataset/fragments/dataset-reviewers.ts +1 -1
  128. package/src/scripts/dataset/fragments/doi-link.tsx +6 -6
  129. package/src/scripts/dataset/fragments/edit-button.tsx +2 -2
  130. package/src/scripts/dataset/fragments/edit-description-field.jsx +23 -21
  131. package/src/scripts/dataset/fragments/edit-description-list.jsx +8 -8
  132. package/src/scripts/dataset/fragments/edit-list.jsx +8 -8
  133. package/src/scripts/dataset/fragments/number-input.tsx +36 -35
  134. package/src/scripts/dataset/fragments/save-button.tsx +2 -2
  135. package/src/scripts/dataset/fragments/select-input.tsx +87 -86
  136. package/src/scripts/dataset/fragments/text-array-input.tsx +38 -37
  137. package/src/scripts/dataset/fragments/text-input.tsx +79 -78
  138. package/src/scripts/dataset/mutations/__tests__/cache-id.spec.js +5 -5
  139. package/src/scripts/dataset/mutations/__tests__/delete-file.spec.jsx +85 -83
  140. package/src/scripts/dataset/mutations/__tests__/delete.spec.jsx +8 -8
  141. package/src/scripts/dataset/mutations/__tests__/deprecate-snapshot.spec.tsx +17 -17
  142. package/src/scripts/dataset/mutations/__tests__/deprecate-version.spec.tsx +19 -19
  143. package/src/scripts/dataset/mutations/__tests__/description.spec.jsx +51 -51
  144. package/src/scripts/dataset/mutations/__tests__/remove-permissions.spec.tsx +9 -9
  145. package/src/scripts/dataset/mutations/__tests__/update-permissions.spec.jsx +7 -7
  146. package/src/scripts/dataset/mutations/admin-exports.jsx +13 -12
  147. package/src/scripts/dataset/mutations/cache-clear.jsx +6 -6
  148. package/src/scripts/dataset/mutations/cache-id.js +2 -2
  149. package/src/scripts/dataset/mutations/comment.jsx +25 -23
  150. package/src/scripts/dataset/mutations/create-anonymous-reviewer.tsx +36 -30
  151. package/src/scripts/dataset/mutations/dataset-relations.tsx +28 -29
  152. package/src/scripts/dataset/mutations/delete-anonymous-reviewer.tsx +7 -8
  153. package/src/scripts/dataset/mutations/delete-comment.jsx +14 -12
  154. package/src/scripts/dataset/mutations/delete-dataset-form.jsx +20 -22
  155. package/src/scripts/dataset/mutations/delete-file.jsx +8 -8
  156. package/src/scripts/dataset/mutations/delete.jsx +10 -9
  157. package/src/scripts/dataset/mutations/deprecate-version.tsx +5 -6
  158. package/src/scripts/dataset/mutations/description.jsx +21 -20
  159. package/src/scripts/dataset/mutations/flag-annex-object.jsx +10 -9
  160. package/src/scripts/dataset/mutations/follow.tsx +15 -14
  161. package/src/scripts/dataset/mutations/import-dataset.tsx +5 -5
  162. package/src/scripts/dataset/mutations/metadata-form.jsx +94 -97
  163. package/src/scripts/dataset/mutations/publish.jsx +13 -13
  164. package/src/scripts/dataset/mutations/readme.jsx +12 -11
  165. package/src/scripts/dataset/mutations/remove-annex-object.jsx +10 -9
  166. package/src/scripts/dataset/mutations/remove-permissions.tsx +5 -6
  167. package/src/scripts/dataset/mutations/revalidate.jsx +7 -7
  168. package/src/scripts/dataset/mutations/snapshot.tsx +8 -8
  169. package/src/scripts/dataset/mutations/star.tsx +14 -13
  170. package/src/scripts/dataset/mutations/submit-metadata.jsx +12 -11
  171. package/src/scripts/dataset/mutations/undo-deprecate-version.tsx +5 -6
  172. package/src/scripts/dataset/mutations/update-file.jsx +6 -6
  173. package/src/scripts/dataset/mutations/update-permissions.tsx +9 -9
  174. package/src/scripts/dataset/mutations/update-ref.jsx +7 -7
  175. package/src/scripts/dataset/routes/__tests__/deprecate-snapshot-page.spec.tsx +5 -5
  176. package/src/scripts/dataset/routes/add-metadata.jsx +19 -20
  177. package/src/scripts/dataset/routes/admin-datalad.jsx +7 -7
  178. package/src/scripts/dataset/routes/dataset-default.tsx +12 -10
  179. package/src/scripts/dataset/routes/delete-page.tsx +12 -12
  180. package/src/scripts/dataset/routes/deprecate-snapshot-page.tsx +8 -8
  181. package/src/scripts/dataset/routes/derivatives.tsx +10 -10
  182. package/src/scripts/dataset/routes/download-dataset.tsx +20 -20
  183. package/src/scripts/dataset/routes/manage-anonymous-reviewers.tsx +37 -35
  184. package/src/scripts/dataset/routes/manage-permissions.jsx +22 -22
  185. package/src/scripts/dataset/routes/publish.jsx +32 -30
  186. package/src/scripts/dataset/routes/snapshot-default.tsx +7 -7
  187. package/src/scripts/dataset/routes/snapshot.tsx +44 -43
  188. package/src/scripts/dataset/routes/styles/dataset-page-border.tsx +3 -3
  189. package/src/scripts/dataset/routes/styles/dataset-page-tab-container.tsx +3 -3
  190. package/src/scripts/dataset/routes/styles/header-row.tsx +3 -3
  191. package/src/scripts/dataset/routes/tab-routes-draft.tsx +12 -12
  192. package/src/scripts/dataset/routes/tab-routes-snapshot.tsx +8 -8
  193. package/src/scripts/dataset/snapshot-container.tsx +78 -86
  194. package/src/scripts/errors/403page.tsx +11 -11
  195. package/src/scripts/errors/404page.tsx +12 -12
  196. package/src/scripts/errors/errorBoundary.jsx +13 -12
  197. package/src/scripts/errors/errorRoute.jsx +6 -6
  198. package/src/scripts/errors/freshdesk-widget.jsx +17 -20
  199. package/src/scripts/errors/freshdeskInterface.jsx +9 -9
  200. package/src/scripts/errors/orcid/email.jsx +3 -3
  201. package/src/scripts/errors/orcid/family.jsx +4 -4
  202. package/src/scripts/errors/orcid/general.jsx +1 -1
  203. package/src/scripts/errors/orcid/given.jsx +4 -4
  204. package/src/scripts/fixtures/dataset-query.ts +119 -119
  205. package/src/scripts/fixtures/mock-app-wrapper.tsx +4 -4
  206. package/src/scripts/index.tsx +9 -9
  207. package/src/scripts/pages/admin/admin.jsx +5 -5
  208. package/src/scripts/pages/admin/flagged-files.jsx +33 -31
  209. package/src/scripts/pages/admin/user-fragment.ts +1 -1
  210. package/src/scripts/pages/admin/user-tools.tsx +13 -11
  211. package/src/scripts/pages/admin/users.jsx +38 -39
  212. package/src/scripts/pages/api.jsx +20 -19
  213. package/src/scripts/pages/citation-page.tsx +4 -4
  214. package/src/scripts/pages/faq/faq.tsx +2 -2
  215. package/src/scripts/pages/front-page/aggregate-queries/aggregate-counts-container.tsx +6 -5
  216. package/src/scripts/pages/front-page/aggregate-queries/use-participant-count.ts +2 -2
  217. package/src/scripts/pages/front-page/aggregate-queries/use-publicDatasets-count.ts +2 -2
  218. package/src/scripts/pages/front-page/front-page-content.ts +42 -42
  219. package/src/scripts/pages/front-page/front-page.tsx +18 -14
  220. package/src/scripts/pages/front-page-comp.tsx +3 -3
  221. package/src/scripts/pages/import-dataset.tsx +10 -10
  222. package/src/scripts/pages/metadata/dataset-metadata.tsx +15 -14
  223. package/src/scripts/pages/pet-redirect.tsx +2 -2
  224. package/src/scripts/queries/dataset.ts +3 -3
  225. package/src/scripts/resources/__tests__/kibana.spec.js +9 -9
  226. package/src/scripts/resources/kibana.js +3 -3
  227. package/src/scripts/resources/strings.js +2 -2
  228. package/src/scripts/routes.tsx +14 -14
  229. package/src/scripts/search/__helpers__/search-render.tsx +3 -3
  230. package/src/scripts/search/__tests__/search-container.spec.tsx +22 -22
  231. package/src/scripts/search/__tests__/search-params-ctx.spec.tsx +20 -20
  232. package/src/scripts/search/es-query-builders.ts +21 -5
  233. package/src/scripts/search/filters-block-container.tsx +14 -16
  234. package/src/scripts/search/initial-search-params.tsx +45 -45
  235. package/src/scripts/search/inputs/__tests__/sort-by-select.spec.tsx +23 -23
  236. package/src/scripts/search/inputs/admin-allDatasets-toggle.tsx +12 -12
  237. package/src/scripts/search/inputs/age-range-input.tsx +9 -8
  238. package/src/scripts/search/inputs/author-input.tsx +14 -11
  239. package/src/scripts/search/inputs/date-radios.tsx +8 -7
  240. package/src/scripts/search/inputs/diagnosis-select.tsx +6 -6
  241. package/src/scripts/search/inputs/index.ts +33 -33
  242. package/src/scripts/search/inputs/keyword-input.tsx +13 -13
  243. package/src/scripts/search/inputs/modality-select.tsx +33 -30
  244. package/src/scripts/search/inputs/pet/bodyParts_input.tsx +18 -16
  245. package/src/scripts/search/inputs/pet/scannerManufacturersModelNames_input.tsx +18 -16
  246. package/src/scripts/search/inputs/pet/scannerManufacturers_input.tsx +18 -16
  247. package/src/scripts/search/inputs/pet/tracerNames_input.tsx +16 -15
  248. package/src/scripts/search/inputs/pet/tracerRadionuclides_input.tsx +18 -16
  249. package/src/scripts/search/inputs/section-select.tsx +6 -6
  250. package/src/scripts/search/inputs/sex-radios.tsx +6 -6
  251. package/src/scripts/search/inputs/show-datasets-radios.tsx +31 -29
  252. package/src/scripts/search/inputs/sort-by-select.tsx +10 -11
  253. package/src/scripts/search/inputs/species-select.tsx +6 -6
  254. package/src/scripts/search/inputs/study-domain-input.tsx +18 -16
  255. package/src/scripts/search/inputs/subject-count-range-input.tsx +8 -7
  256. package/src/scripts/search/inputs/task-input.tsx +18 -16
  257. package/src/scripts/search/search-container.tsx +83 -85
  258. package/src/scripts/search/search-params-ctx.tsx +40 -38
  259. package/src/scripts/search/search-routes.tsx +4 -4
  260. package/src/scripts/search/use-search-results.tsx +125 -99
  261. package/src/scripts/styles/media.tsx +3 -3
  262. package/src/scripts/styles/support-modal.jsx +2 -2
  263. package/src/scripts/sw.ts +12 -11
  264. package/src/scripts/test-utils.js +4 -4
  265. package/src/scripts/uploader/add-path-to-files.js +7 -7
  266. package/src/scripts/uploader/file-select.tsx +3 -3
  267. package/src/scripts/uploader/file-upload.js +13 -12
  268. package/src/scripts/uploader/input.jsx +8 -7
  269. package/src/scripts/uploader/upload-button.jsx +3 -3
  270. package/src/scripts/uploader/upload-disclaimer-input.tsx +66 -66
  271. package/src/scripts/uploader/upload-disclaimer.jsx +6 -5
  272. package/src/scripts/uploader/upload-file-status.jsx +4 -4
  273. package/src/scripts/uploader/upload-issues.jsx +32 -29
  274. package/src/scripts/uploader/upload-metadata.jsx +18 -17
  275. package/src/scripts/uploader/upload-mutation.js +17 -20
  276. package/src/scripts/uploader/upload-progress-button.jsx +5 -4
  277. package/src/scripts/uploader/upload-progress.jsx +3 -3
  278. package/src/scripts/uploader/upload-rename.jsx +6 -5
  279. package/src/scripts/uploader/upload-resume.jsx +26 -24
  280. package/src/scripts/uploader/upload-select.jsx +10 -9
  281. package/src/scripts/uploader/upload-status.jsx +5 -5
  282. package/src/scripts/uploader/upload-step.jsx +9 -9
  283. package/src/scripts/uploader/uploader-context.js +1 -1
  284. package/src/scripts/uploader/uploader-location.js +1 -1
  285. package/src/scripts/uploader/uploader-modal.jsx +8 -7
  286. package/src/scripts/uploader/uploader-setup-routes.jsx +10 -10
  287. package/src/scripts/uploader/uploader-status-routes.jsx +6 -6
  288. package/src/scripts/uploader/uploader-view.jsx +4 -4
  289. package/src/scripts/uploader/uploader.jsx +50 -48
  290. package/src/scripts/users/username.tsx +3 -3
  291. package/src/scripts/utils/__tests__/csv.spec.ts +16 -16
  292. package/src/scripts/utils/__tests__/date.spec.js +4 -4
  293. package/src/scripts/utils/__tests__/json-ld.spec.js +12 -12
  294. package/src/scripts/utils/__tests__/newid.spec.js +9 -9
  295. package/src/scripts/utils/__tests__/userNotify.spec.js +10 -10
  296. package/src/scripts/utils/analytics.tsx +3 -3
  297. package/src/scripts/utils/cookies.js +1 -1
  298. package/src/scripts/utils/csv.ts +13 -15
  299. package/src/scripts/utils/datalad.js +1 -1
  300. package/src/scripts/utils/dataset-url.js +2 -2
  301. package/src/scripts/utils/date.js +2 -2
  302. package/src/scripts/utils/global-polyfill.ts +2 -2
  303. package/src/scripts/utils/gtag.js +6 -6
  304. package/src/scripts/utils/json-ld.js +13 -13
  305. package/src/scripts/utils/newid.js +1 -1
  306. package/src/scripts/utils/user-login-modal-ctx.tsx +4 -4
  307. package/src/scripts/utils/userNotify.js +2 -2
  308. package/src/scripts/validation/validation-panel.jsx +3 -3
  309. package/src/scripts/validation/validation-results.issues.issue.jsx +9 -9
  310. package/src/scripts/validation/validation-results.issues.jsx +19 -17
  311. package/src/scripts/validation/validation-results.jsx +10 -10
  312. package/src/scripts/validation/validation-status.jsx +19 -17
  313. package/src/scripts/validation/validation.jsx +5 -5
  314. package/src/scripts/workers/schema.ts +2 -2
  315. package/src/scripts/workers/schema.worker.ts +4 -4
  316. package/src/scripts/workers/validate.ts +2 -2
  317. package/src/scripts/workers/validate.worker.ts +7 -5
  318. package/vite.config.js +17 -17
  319. package/src/dist/assets/activity-icon.9ab0c828.png +0 -0
  320. package/src/dist/assets/bids.da8810b3.jpg +0 -0
  321. package/src/dist/assets/brand_mark.28e7645d.png +0 -0
  322. package/src/dist/assets/close-button.21e700a6.png +0 -0
  323. package/src/dist/assets/cube-get.39ed5636.png +0 -0
  324. package/src/dist/assets/cube-share.9b558c29.png +0 -0
  325. package/src/dist/assets/cube-use.ccf2ddc5.png +0 -0
  326. package/src/dist/assets/datalad.a35b15b8.jpg +0 -0
  327. package/src/dist/assets/eeg.1dc1dc54.jpg +0 -0
  328. package/src/dist/assets/email-header.1cb8bf76.png +0 -0
  329. package/src/dist/assets/ieeg.f91deb0a.jpg +0 -0
  330. package/src/dist/assets/index.3db805fb.js +0 -23127
  331. package/src/dist/assets/index.3db805fb.js.map +0 -1
  332. package/src/dist/assets/index.5eb79d2c.css +0 -1
  333. package/src/dist/assets/ljaf.567e9566.png +0 -0
  334. package/src/dist/assets/logo_app.8c986cf9.png +0 -0
  335. package/src/dist/assets/logo_cube.5224b745.png +0 -0
  336. package/src/dist/assets/logo_data.3e1d5743.png +0 -0
  337. package/src/dist/assets/logo_users.a84a265a.png +0 -0
  338. package/src/dist/assets/meg.1e1928f8.jpg +0 -0
  339. package/src/dist/assets/mri.b01e4f42.jpg +0 -0
  340. package/src/dist/assets/nih-bi-logo.80d76e1d.png +0 -0
  341. package/src/dist/assets/nih-stanford.2a7c496e.jpg +0 -0
  342. package/src/dist/assets/nih.78a64d38.png +0 -0
  343. package/src/dist/assets/nimh.0ec775d8.png +0 -0
  344. package/src/dist/assets/nru-logo.f3097dc5.png +0 -0
  345. package/src/dist/assets/nsf.eee1d3f7.png +0 -0
  346. package/src/dist/assets/nsf.f87e96e7.png +0 -0
  347. package/src/dist/assets/on-dark-horz.e1f213d0.svg +0 -1
  348. package/src/dist/assets/on-dark.12f4e2ce.svg +0 -1
  349. package/src/dist/assets/on-light-horz.23ff22c3.svg +0 -1
  350. package/src/dist/assets/on-light.50592f7f.svg +0 -1
  351. package/src/dist/assets/pet-scan.21d98a3d.jpg +0 -0
  352. package/src/dist/assets/revicons.4ca02b8a.ttf +0 -0
  353. package/src/dist/assets/revicons.9e4d4c68.eot +0 -0
  354. package/src/dist/assets/revicons.f7b9c306.woff +0 -0
  355. package/src/dist/assets/sqm-logo.9cd0cca5.png +0 -0
  356. package/src/dist/assets/squishymedia.fa3c5919.png +0 -0
  357. package/src/dist/assets/stanford.5f245936.png +0 -0
  358. package/src/dist/index.html +0 -25
@@ -1,5 +1,5 @@
1
- import React from 'react'
2
- import { Link } from 'react-router-dom'
1
+ import React from "react"
2
+ import { Link } from "react-router-dom"
3
3
 
4
4
  // See https://www.crossref.org/blog/dois-and-matching-regular-expressions/
5
5
  export const DOIPattern = /^10.\d{4,9}\/[-._;()/:A-Z0-9]+$/i
@@ -14,16 +14,16 @@ export const DOILink = ({ DOI, datasetId }) => {
14
14
  if (
15
15
  DOI &&
16
16
  (DOI.match(DOIPattern) ||
17
- DOI.startsWith('doi:') ||
18
- DOI.startsWith('https://doi.org'))
17
+ DOI.startsWith("doi:") ||
18
+ DOI.startsWith("https://doi.org"))
19
19
  ) {
20
20
  if (DOI.match(DOIPattern)) {
21
21
  return <a href={`https://doi.org/${DOI}`}>{`doi:${DOI}`}</a>
22
22
  }
23
- if (DOI.startsWith('doi:') && DOI.slice(4).match(DOIPattern)) {
23
+ if (DOI.startsWith("doi:") && DOI.slice(4).match(DOIPattern)) {
24
24
  return <a href={`https://doi.org/${DOI.slice(4)}`}>{DOI}</a>
25
25
  }
26
- if (DOI.startsWith('https://doi.org/')) {
26
+ if (DOI.startsWith("https://doi.org/")) {
27
27
  return <a href={DOI}>{`doi:${DOI.slice(16)}`}</a>
28
28
  }
29
29
  return <DOILinkFallback datasetId={datasetId} />
@@ -1,5 +1,5 @@
1
- import React, { FC } from 'react'
2
- import { Button } from '@openneuro/components/button'
1
+ import React, { FC } from "react"
2
+ import { Button } from "@openneuro/components/button"
3
3
 
4
4
  /**
5
5
  * An edit button, calls action when clicked
@@ -1,9 +1,9 @@
1
- import React, { useState } from 'react'
2
- import UpdateDescription from '../mutations/description.jsx'
3
- import UpdateReadme from '../mutations/readme.jsx'
1
+ import React, { useState } from "react"
2
+ import UpdateDescription from "../mutations/description.jsx"
3
+ import UpdateReadme from "../mutations/readme.jsx"
4
4
 
5
- import { CancelButton } from './cancel-button'
6
- import { EditButton } from './edit-button'
5
+ import { CancelButton } from "./cancel-button"
6
+ import { EditButton } from "./edit-button"
7
7
 
8
8
  /**
9
9
  * This is a hopefully less confusing click-to-edit component
@@ -19,31 +19,33 @@ const EditDescriptionField = ({
19
19
  rows = 1,
20
20
  }) => {
21
21
  const [editing, setEditing] = useState(false)
22
- const [value, setValue] = useState(description || '')
22
+ const [value, setValue] = useState(description || "")
23
23
  if (editing) {
24
24
  return (
25
25
  <>
26
26
  <textarea
27
27
  className="edit-description-field"
28
28
  rows={rows}
29
- onChange={e => setValue(e.target.value)}
29
+ onChange={(e) => setValue(e.target.value)}
30
30
  value={value}
31
31
  />
32
32
  <div className="update-field-save">
33
- {field == 'readme' ? (
34
- <UpdateReadme
35
- datasetId={datasetId}
36
- value={value}
37
- done={() => setEditing(false)}
38
- />
39
- ) : (
40
- <UpdateDescription
41
- datasetId={datasetId}
42
- field={field}
43
- value={value}
44
- done={() => setEditing(false)}
45
- />
46
- )}
33
+ {field == "readme"
34
+ ? (
35
+ <UpdateReadme
36
+ datasetId={datasetId}
37
+ value={value}
38
+ done={() => setEditing(false)}
39
+ />
40
+ )
41
+ : (
42
+ <UpdateDescription
43
+ datasetId={datasetId}
44
+ field={field}
45
+ value={value}
46
+ done={() => setEditing(false)}
47
+ />
48
+ )}
47
49
 
48
50
  <CancelButton action={() => setEditing(false)} />
49
51
  </div>
@@ -1,10 +1,10 @@
1
- import React, { useState } from 'react'
2
- import UpdateDescription from '../mutations/description.jsx'
3
- import { CancelButton } from './cancel-button'
4
- import { EditButton } from './edit-button'
5
- import Markdown from 'markdown-to-jsx'
1
+ import React, { useState } from "react"
2
+ import UpdateDescription from "../mutations/description.jsx"
3
+ import { CancelButton } from "./cancel-button"
4
+ import { EditButton } from "./edit-button"
5
+ import Markdown from "markdown-to-jsx"
6
6
 
7
- import EditList from './edit-list.jsx'
7
+ import EditList from "./edit-list.jsx"
8
8
 
9
9
  const EditDescriptionList = ({
10
10
  datasetId,
@@ -20,7 +20,7 @@ const EditDescriptionList = ({
20
20
 
21
21
  if (editing) {
22
22
  return (
23
- <div className={'dataset-meta-block ' + className}>
23
+ <div className={"dataset-meta-block " + className}>
24
24
  <h2 className="dmb-heading">{heading}</h2>
25
25
  <EditList
26
26
  placeholder="Add new item"
@@ -40,7 +40,7 @@ const EditDescriptionList = ({
40
40
  )
41
41
  } else {
42
42
  return (
43
- <div className={'dataset-meta-block ' + className}>
43
+ <div className={"dataset-meta-block " + className}>
44
44
  <h2 className="dmb-heading">{heading}</h2>
45
45
 
46
46
  <ul>
@@ -1,12 +1,12 @@
1
- import React, { useState } from 'react'
2
- import PropTypes from 'prop-types'
3
- import { Button } from '@openneuro/components/button'
1
+ import React, { useState } from "react"
2
+ import PropTypes from "prop-types"
3
+ import { Button } from "@openneuro/components/button"
4
4
 
5
5
  /**
6
6
  * Generic add/remove strings from an Array list
7
7
  */
8
8
  const EditList = ({ placeholder, elements = [], setElements }) => {
9
- const [newElement, updateNewElement] = useState('')
9
+ const [newElement, updateNewElement] = useState("")
10
10
 
11
11
  const [warnEmpty, updateWarnEmpty] = useState(false)
12
12
 
@@ -14,7 +14,7 @@ const EditList = ({ placeholder, elements = [], setElements }) => {
14
14
  * Remove one element from list
15
15
  * @param {number} index Which entry to remove
16
16
  */
17
- const removeElement = index => () => {
17
+ const removeElement = (index) => () => {
18
18
  // Avoid mutating elements array directly
19
19
  const newElements = [...elements]
20
20
  newElements.splice(index, 1)
@@ -22,12 +22,12 @@ const EditList = ({ placeholder, elements = [], setElements }) => {
22
22
  }
23
23
 
24
24
  const updateElements = () => {
25
- if (newElement === '') {
25
+ if (newElement === "") {
26
26
  updateWarnEmpty(true)
27
27
  } else {
28
28
  setElements([...elements, newElement])
29
29
  updateWarnEmpty(false)
30
- updateNewElement('')
30
+ updateNewElement("")
31
31
  }
32
32
  }
33
33
 
@@ -39,7 +39,7 @@ const EditList = ({ placeholder, elements = [], setElements }) => {
39
39
  className="form-control"
40
40
  placeholder={placeholder}
41
41
  value={newElement}
42
- onChange={e => updateNewElement(e.target.value)}
42
+ onChange={(e) => updateNewElement(e.target.value)}
43
43
  />
44
44
  <Button
45
45
  className="edit-list-add"
@@ -1,22 +1,22 @@
1
- import React, { useState, createRef } from 'react'
2
- import PropTypes from 'prop-types'
3
- import styled from '@emotion/styled'
1
+ import React, { createRef, useState } from "react"
2
+ import PropTypes from "prop-types"
3
+ import styled from "@emotion/styled"
4
4
 
5
5
  const Container = styled.div({
6
- position: 'relative',
7
- width: '100%',
8
- height: '3rem',
9
- marginTop: '30px',
10
- backgroundColor: 'white',
11
- borderRadius: '4px',
6
+ position: "relative",
7
+ width: "100%",
8
+ height: "3rem",
9
+ marginTop: "30px",
10
+ backgroundColor: "white",
11
+ borderRadius: "4px",
12
12
  })
13
13
  const centerLabelStyles = {
14
- top: '13px',
15
- fontSize: '1em',
14
+ top: "13px",
15
+ fontSize: "1em",
16
16
  }
17
17
  const pushedUpLabelStyles = {
18
- top: '-17px',
19
- fontSize: '0.75em',
18
+ top: "-17px",
19
+ fontSize: "0.75em",
20
20
  }
21
21
 
22
22
  interface NumberInputLabelProps {
@@ -26,36 +26,36 @@ interface NumberInputLabelProps {
26
26
 
27
27
  const Label = styled.label<NumberInputLabelProps>(
28
28
  {
29
- position: 'absolute',
30
- left: '1rem',
31
- right: '1rem',
32
- overflow: 'hidden',
33
- whiteSpace: 'nowrap',
34
- textOverflow: 'ellipsis',
35
- color: '#999',
36
- transition: 'top 100ms, font-size 100ms',
37
- transitionTimingFunction: 'ease-out',
38
- textAlign: 'left',
29
+ position: "absolute",
30
+ left: "1rem",
31
+ right: "1rem",
32
+ overflow: "hidden",
33
+ whiteSpace: "nowrap",
34
+ textOverflow: "ellipsis",
35
+ color: "#999",
36
+ transition: "top 100ms, font-size 100ms",
37
+ transitionTimingFunction: "ease-out",
38
+ textAlign: "left",
39
39
  },
40
40
  ({ hasValue, hasFocus }) => ({
41
41
  ...(hasValue || hasFocus ? pushedUpLabelStyles : centerLabelStyles),
42
- ':focus': pushedUpLabelStyles,
42
+ ":focus": pushedUpLabelStyles,
43
43
  }),
44
44
  )
45
45
  const DisabledIcon = styled.i({
46
- '&&': {
47
- position: 'absolute',
48
- top: '0.4rem',
49
- right: '0.4rem',
50
- color: '#5cb85c',
51
- fontSize: '8px',
46
+ "&&": {
47
+ position: "absolute",
48
+ top: "0.4rem",
49
+ right: "0.4rem",
50
+ color: "#5cb85c",
51
+ fontSize: "8px",
52
52
  },
53
53
  })
54
54
  const Input = styled.input({
55
- width: '100%',
56
- height: '100%',
57
- padding: '13px',
58
- textAlign: 'left',
55
+ width: "100%",
56
+ height: "100%",
57
+ padding: "13px",
58
+ textAlign: "left",
59
59
  })
60
60
 
61
61
  const NumberInput = ({
@@ -92,7 +92,8 @@ const NumberInput = ({
92
92
  htmlFor={name}
93
93
  hasValue={Boolean(value)}
94
94
  hasFocus={hasFocus}
95
- onClick={focusInput}>
95
+ onClick={focusInput}
96
+ >
96
97
  {label}
97
98
  </Label>
98
99
  {annotated && <DisabledIcon className="fa fa-asterisk" />}
@@ -1,5 +1,5 @@
1
- import React, { FC } from 'react'
2
- import { Button } from '@openneuro/components/button'
1
+ import React, { FC } from "react"
2
+ import { Button } from "@openneuro/components/button"
3
3
 
4
4
  /**
5
5
  * An Save button, calls action when clicked
@@ -1,26 +1,26 @@
1
- import React, { useState } from 'react'
2
- import TextInput from './text-input'
3
- import PropTypes from 'prop-types'
4
- import styled from '@emotion/styled'
1
+ import React, { useState } from "react"
2
+ import TextInput from "./text-input"
3
+ import PropTypes from "prop-types"
4
+ import styled from "@emotion/styled"
5
5
 
6
6
  const Container = styled.div({
7
- '&&': {
8
- position: 'relative',
9
- width: '100%',
10
- height: '3rem',
11
- marginTop: '30px',
12
- backgroundColor: 'white',
13
- borderRadius: '4px',
7
+ "&&": {
8
+ position: "relative",
9
+ width: "100%",
10
+ height: "3rem",
11
+ marginTop: "30px",
12
+ backgroundColor: "white",
13
+ borderRadius: "4px",
14
14
  },
15
15
  })
16
16
  const centerLabelStyles = {
17
- '&&': {
18
- top: '13px',
19
- fontSize: '1em',
17
+ "&&": {
18
+ top: "13px",
19
+ fontSize: "1em",
20
20
  },
21
21
  }
22
22
  const pushedUpLabelStyles = {
23
- '&&': { top: '-17px', fontSize: '0.75em' },
23
+ "&&": { top: "-17px", fontSize: "0.75em" },
24
24
  }
25
25
  interface SelectInputLabelProps {
26
26
  hasValue: boolean
@@ -28,31 +28,31 @@ interface SelectInputLabelProps {
28
28
 
29
29
  const Label = styled.label<SelectInputLabelProps>(
30
30
  {
31
- '&&': {
32
- position: 'absolute',
33
- left: '1rem',
34
- right: '1rem',
35
- overflow: 'hidden',
36
- whiteSpace: 'nowrap',
37
- textOverflow: 'ellipsis',
38
- color: '#999',
39
- transition: 'top 100ms, font-size 100ms',
40
- transitionTimingFunction: 'ease-out',
41
- textAlign: 'left',
31
+ "&&": {
32
+ position: "absolute",
33
+ left: "1rem",
34
+ right: "1rem",
35
+ overflow: "hidden",
36
+ whiteSpace: "nowrap",
37
+ textOverflow: "ellipsis",
38
+ color: "#999",
39
+ transition: "top 100ms, font-size 100ms",
40
+ transitionTimingFunction: "ease-out",
41
+ textAlign: "left",
42
42
  },
43
43
  },
44
44
  ({ hasValue }) => ({
45
45
  ...(hasValue ? pushedUpLabelStyles : centerLabelStyles),
46
- ':focus': pushedUpLabelStyles,
46
+ ":focus": pushedUpLabelStyles,
47
47
  }),
48
48
  )
49
49
  const DisabledIcon = styled.i({
50
- '&&': {
51
- position: 'absolute',
52
- top: '0.4rem',
53
- right: '0.4rem',
54
- color: '#5cb85c',
55
- fontSize: '8px',
50
+ "&&": {
51
+ position: "absolute",
52
+ top: "0.4rem",
53
+ right: "0.4rem",
54
+ color: "#5cb85c",
55
+ fontSize: "8px",
56
56
  },
57
57
  })
58
58
 
@@ -61,53 +61,53 @@ interface ShowOtherProps {
61
61
  }
62
62
  const Select = styled.select<ShowOtherProps>(
63
63
  {
64
- '&&': {
65
- position: 'absolute',
64
+ "&&": {
65
+ position: "absolute",
66
66
  top: 0,
67
67
  left: 0,
68
68
  right: 0,
69
- width: '100%',
70
- height: '100%',
71
- color: 'rgba(0,0,0,0)',
72
- backgroundColor: 'rgba(0,0,0,0)',
73
- MozAppearance: 'none',
69
+ width: "100%",
70
+ height: "100%",
71
+ color: "rgba(0,0,0,0)",
72
+ backgroundColor: "rgba(0,0,0,0)",
73
+ MozAppearance: "none",
74
74
  },
75
75
  },
76
76
  ({ showOther }) =>
77
77
  showOther
78
78
  ? {
79
- borderBottomRightRadius: 0,
80
- borderBottomLeftRadius: 0,
81
- }
79
+ borderBottomRightRadius: 0,
80
+ borderBottomLeftRadius: 0,
81
+ }
82
82
  : {},
83
83
  )
84
- Select.displayName = 'styledSelect'
84
+ Select.displayName = "styledSelect"
85
85
  const SelectValueDisplay = styled.div({
86
- '&&': {
87
- position: 'absolute',
86
+ "&&": {
87
+ position: "absolute",
88
88
  top: 0,
89
- width: '100%',
90
- height: '100%',
91
- padding: '13px',
92
- color: 'black',
93
- overflow: 'hidden',
94
- whiteSpace: 'nowrap',
95
- textOverflow: 'ellipsis',
96
- textAlign: 'left',
89
+ width: "100%",
90
+ height: "100%",
91
+ padding: "13px",
92
+ color: "black",
93
+ overflow: "hidden",
94
+ whiteSpace: "nowrap",
95
+ textOverflow: "ellipsis",
96
+ textAlign: "left",
97
97
  },
98
98
  })
99
99
  const SelectIconContainer = styled.div({
100
- '&&': {
101
- position: 'absolute',
100
+ "&&": {
101
+ position: "absolute",
102
102
  top: 0,
103
103
  right: 0,
104
- height: '100%',
105
- width: '3rem',
106
- display: 'flex',
107
- flexDirection: 'column',
108
- justifyContent: 'center',
109
- alignItems: 'center',
110
- color: '#999',
104
+ height: "100%",
105
+ width: "3rem",
106
+ display: "flex",
107
+ flexDirection: "column",
108
+ justifyContent: "center",
109
+ alignItems: "center",
110
+ color: "#999",
111
111
  },
112
112
  })
113
113
  const SelectIcon = (): React.ReactElement => (
@@ -117,15 +117,15 @@ const SelectIcon = (): React.ReactElement => (
117
117
  </SelectIconContainer>
118
118
  )
119
119
  const Option = styled.option({
120
- color: 'black',
120
+ color: "black",
121
121
  })
122
122
  const OtherInputContainer = styled.div<ShowOtherProps>(
123
123
  {
124
- '&&': {
125
- overflow: 'hidden',
126
- transition: 'opacity, transform, height',
127
- transitionDuration: '200ms',
128
- transitionTimingFunction: 'ease-out',
124
+ "&&": {
125
+ overflow: "hidden",
126
+ transition: "opacity, transform, height",
127
+ transitionDuration: "200ms",
128
+ transitionTimingFunction: "ease-out",
129
129
 
130
130
  input: {
131
131
  borderTopRightRadius: 0,
@@ -136,15 +136,15 @@ const OtherInputContainer = styled.div<ShowOtherProps>(
136
136
  ({ showOther }) =>
137
137
  showOther
138
138
  ? {
139
- '&&': {
140
- height: '5rem',
141
- opacity: 1,
142
- transform: 'translateY(0)',
143
- },
144
- }
145
- : {
146
- '&&': { height: 0, opacity: 0, transform: 'translateY(-4rem)' },
139
+ "&&": {
140
+ height: "5rem",
141
+ opacity: 1,
142
+ transform: "translateY(0)",
147
143
  },
144
+ }
145
+ : {
146
+ "&&": { height: 0, opacity: 0, transform: "translateY(-4rem)" },
147
+ },
148
148
  )
149
149
  const SelectInput = ({
150
150
  name,
@@ -155,19 +155,19 @@ const SelectInput = ({
155
155
  disabled,
156
156
  annotated,
157
157
  required,
158
- warningOnChange = '',
158
+ warningOnChange = "",
159
159
  onChange,
160
160
  hasBooleanValues,
161
161
  }): React.ReactElement => {
162
- if (hasBooleanValues && typeof value === 'boolean') {
162
+ if (hasBooleanValues && typeof value === "boolean") {
163
163
  value = value.toString()
164
164
  }
165
165
  const nothingSelected = !value
166
- const otherOptionSelected = showOptionOther && value === 'Other'
166
+ const otherOptionSelected = showOptionOther && value === "Other"
167
167
 
168
168
  let selectValue
169
- if (nothingSelected) selectValue = ''
170
- else if (otherOptionSelected) selectValue = 'Other'
169
+ if (nothingSelected) selectValue = ""
170
+ else if (otherOptionSelected) selectValue = "Other"
171
171
  else selectValue = value
172
172
 
173
173
  const [changed, setChanged] = useState(false)
@@ -176,8 +176,8 @@ const SelectInput = ({
176
176
  const prevValue = value
177
177
  let newValue = e.target.value
178
178
  if (hasBooleanValues) {
179
- if (newValue === 'true') newValue = true
180
- else if (newValue === 'false') newValue = false
179
+ if (newValue === "true") newValue = true
180
+ else if (newValue === "false") newValue = false
181
181
  }
182
182
  if (prevValue != newValue) setChanged(true)
183
183
  onChange(e.target.name, newValue)
@@ -204,7 +204,8 @@ const SelectInput = ({
204
204
  disabled={disabled}
205
205
  onChange={handleChange}
206
206
  showOther={showOptionOther && otherOptionSelected}
207
- required={required}>
207
+ required={required}
208
+ >
208
209
  <Option value="" disabled hidden />
209
210
  {options &&
210
211
  options.map((option, i) => (
@@ -219,7 +220,7 @@ const SelectInput = ({
219
220
  <TextInput
220
221
  name={name}
221
222
  label={`Other ${labelString}`}
222
- value={value === 'Other' ? '' : value}
223
+ value={value === "Other" ? "" : value}
223
224
  disabled={disabled}
224
225
  onChange={onChange}
225
226
  />