Dashboard.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. // The @uppy/ dependencies are resolved using aliasify
  2. /* eslint-disable import/no-extraneous-dependencies */
  3. const Uppy = require('@uppy/core/src')
  4. const Dashboard = require('@uppy/dashboard/src')
  5. const Instagram = require('@uppy/instagram/src')
  6. const Facebook = require('@uppy/facebook/src')
  7. const OneDrive = require('@uppy/onedrive/src')
  8. const Dropbox = require('@uppy/dropbox/src')
  9. const Box = require('@uppy/box/src')
  10. const GoogleDrive = require('@uppy/google-drive/src')
  11. const Unsplash = require('@uppy/unsplash/src')
  12. const Zoom = require('@uppy/zoom/src')
  13. const Url = require('@uppy/url/src')
  14. const Webcam = require('@uppy/webcam/src')
  15. const ScreenCapture = require('@uppy/screen-capture/src')
  16. const GoldenRetriever = require('@uppy/golden-retriever/src')
  17. const Tus = require('@uppy/tus/src')
  18. const AwsS3 = require('@uppy/aws-s3/src')
  19. const AwsS3Multipart = require('@uppy/aws-s3-multipart/src')
  20. const XHRUpload = require('@uppy/xhr-upload/src')
  21. const Transloadit = require('@uppy/transloadit/src')
  22. const Form = require('@uppy/form/src')
  23. const ImageEditor = require('@uppy/image-editor/src')
  24. const DropTarget = require('@uppy/drop-target/src')
  25. /* eslint-enable import/no-extraneous-dependencies */
  26. // DEV CONFIG: pick an uploader
  27. const UPLOADER = 'tus'
  28. // const UPLOADER = 's3'
  29. // const UPLOADER = 's3-multipart'
  30. // const UPLOADER = 'xhr'
  31. // const UPLOADER = 'transloadit'
  32. // const UPLOADER = 'transloadit-s3'
  33. // const UPLOADER = 'transloadit-xhr'
  34. // DEV CONFIG: Endpoint URLs
  35. const COMPANION_URL = 'http://localhost:3020'
  36. const TUS_ENDPOINT = 'https://tusd.tusdemo.net/files/'
  37. const XHR_ENDPOINT = 'https://xhr-server.herokuapp.com/upload'
  38. // DEV CONFIG: Transloadit keys
  39. const TRANSLOADIT_KEY = '...'
  40. const TRANSLOADIT_TEMPLATE = '...'
  41. // DEV CONFIG: enable or disable Golden Retriever
  42. const RESTORE = false
  43. // Rest is implementation! Obviously edit as necessary...
  44. module.exports = () => {
  45. const uppyDashboard = new Uppy({
  46. logger: Uppy.debugLogger,
  47. meta: {
  48. username: 'John',
  49. license: 'Creative Commons',
  50. },
  51. restrictions: { requiredMetaFields: ['caption'] },
  52. })
  53. .use(Dashboard, {
  54. trigger: '#pick-files',
  55. // inline: true,
  56. target: '.foo',
  57. metaFields: [
  58. { id: 'license', name: 'License', placeholder: 'specify license' },
  59. { id: 'caption', name: 'Caption', placeholder: 'add caption' },
  60. ],
  61. showProgressDetails: true,
  62. proudlyDisplayPoweredByUppy: true,
  63. note: '2 files, images and video only',
  64. })
  65. .use(GoogleDrive, { target: Dashboard, companionUrl: COMPANION_URL })
  66. .use(Instagram, { target: Dashboard, companionUrl: COMPANION_URL })
  67. .use(Dropbox, { target: Dashboard, companionUrl: COMPANION_URL })
  68. .use(Box, { target: Dashboard, companionUrl: COMPANION_URL })
  69. .use(Facebook, { target: Dashboard, companionUrl: COMPANION_URL })
  70. .use(OneDrive, { target: Dashboard, companionUrl: COMPANION_URL })
  71. .use(Zoom, { target: Dashboard, companionUrl: COMPANION_URL })
  72. .use(Url, { target: Dashboard, companionUrl: COMPANION_URL })
  73. .use(Unsplash, { target: Dashboard, companionUrl: COMPANION_URL })
  74. .use(Webcam, {
  75. target: Dashboard,
  76. showVideoSourceDropdown: true,
  77. showRecordingLength: true,
  78. })
  79. .use(ScreenCapture, { target: Dashboard })
  80. .use(Form, { target: '#upload-form' })
  81. .use(ImageEditor, { target: Dashboard })
  82. .use(DropTarget, {
  83. target: document.body,
  84. })
  85. switch (UPLOADER) {
  86. case 'tus':
  87. uppyDashboard.use(Tus, { endpoint: TUS_ENDPOINT, limit: 6 })
  88. break
  89. case 's3':
  90. uppyDashboard.use(AwsS3, { companionUrl: COMPANION_URL, limit: 6 })
  91. break
  92. case 's3-multipart':
  93. uppyDashboard.use(AwsS3Multipart, { companionUrl: COMPANION_URL, limit: 6 })
  94. break
  95. case 'xhr':
  96. uppyDashboard.use(XHRUpload, { endpoint: XHR_ENDPOINT, limit: 6, bundle: true })
  97. break
  98. case 'transloadit':
  99. uppyDashboard.use(Transloadit, {
  100. waitForEncoding: true,
  101. params: {
  102. auth: { key: TRANSLOADIT_KEY },
  103. template_id: TRANSLOADIT_TEMPLATE,
  104. },
  105. })
  106. break
  107. case 'transloadit-s3':
  108. uppyDashboard.use(AwsS3, { companionUrl: COMPANION_URL })
  109. uppyDashboard.use(Transloadit, {
  110. waitForEncoding: true,
  111. importFromUploadURLs: true,
  112. params: {
  113. auth: { key: TRANSLOADIT_KEY },
  114. template_id: TRANSLOADIT_TEMPLATE,
  115. },
  116. })
  117. break
  118. case 'transloadit-xhr':
  119. uppyDashboard.setMeta({
  120. params: JSON.stringify({
  121. auth: { key: TRANSLOADIT_KEY },
  122. template_id: TRANSLOADIT_TEMPLATE,
  123. }),
  124. })
  125. uppyDashboard.use(XHRUpload, {
  126. method: 'POST',
  127. endpoint: 'https://api2.transloadit.com/assemblies',
  128. metaFields: ['params'],
  129. bundle: true,
  130. })
  131. break
  132. }
  133. if (RESTORE) {
  134. uppyDashboard.use(GoldenRetriever, { serviceWorker: true })
  135. }
  136. window.uppy = uppyDashboard
  137. uppyDashboard.on('complete', (result) => {
  138. if (result.failed.length === 0) {
  139. console.log('Upload successful 😀')
  140. } else {
  141. console.warn('Upload failed 😞')
  142. }
  143. console.log('successful files:', result.successful)
  144. console.log('failed files:', result.failed)
  145. if (UPLOADER === 'transloadit') {
  146. console.log('Transloadit result:', result.transloadit)
  147. }
  148. })
  149. const modalTrigger = document.querySelector('#pick-files')
  150. if (modalTrigger) modalTrigger.click()
  151. }