index.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const { h } = require('preact')
  2. const classNames = require('classnames')
  3. const ItemIcon = require('./components/ItemIcon')
  4. const GridListItem = require('./components/GridLi')
  5. const ListItem = require('./components/ListLi')
  6. module.exports = (props) => {
  7. const { author } = props
  8. const itemIconString = props.getItemIcon()
  9. const className = classNames(
  10. 'uppy-ProviderBrowserItem',
  11. { 'uppy-ProviderBrowserItem--selected': props.isChecked },
  12. { 'uppy-ProviderBrowserItem--disabled': props.isDisabled },
  13. { 'uppy-ProviderBrowserItem--noPreview': itemIconString === 'video' },
  14. )
  15. const itemIconEl = <ItemIcon itemIconString={itemIconString} />
  16. switch (props.viewType) {
  17. case 'grid':
  18. return (
  19. <GridListItem
  20. {...props}
  21. className={className}
  22. itemIconEl={itemIconEl}
  23. />
  24. )
  25. case 'list':
  26. return (
  27. <ListItem {...props} className={className} itemIconEl={itemIconEl} />
  28. )
  29. case 'unsplash':
  30. return (
  31. <GridListItem {...props} className={className} itemIconEl={itemIconEl}>
  32. <a
  33. href={`${author.url}?utm_source=Companion&utm_medium=referral`}
  34. target="_blank"
  35. rel="noopener noreferrer"
  36. className="uppy-ProviderBrowserItem-author"
  37. >
  38. {author.name}
  39. </a>
  40. </GridListItem>
  41. )
  42. default:
  43. throw new Error(`There is no such type ${props.viewType}`)
  44. }
  45. }