diff --git a/docs/companion.md b/docs/companion.md
index 83aa31c90..da36f4187 100644
--- a/docs/companion.md
+++ b/docs/companion.md
@@ -22,9 +22,10 @@ OAuth.
## When should I use it?
If you want to let users download files from [Box][], [Dropbox][], [Facebook][],
-[Google Drive][googledrive], [Google Photos][googlephotos], [Instagram][],
-[OneDrive][], [Unsplash][], [Import from URL][url], or [Zoom][] — you need
-Companion.
+[Google Drive][googledrive], [Google Photos][googlephotos], [Google Drive
+Picker][googledrivepicker], [Google Photos Picker][googlephotospicker],
+[Instagram][], [OneDrive][], [Unsplash][], [Import from URL][url], or [Zoom][] —
+you need Companion.
Companion supports the same [uploaders](/docs/guides/choosing-uploader) as Uppy:
[Tus](/docs/tus), [AWS S3](/docs/aws-s3), and [regular multipart](/docs/tus).
@@ -721,6 +722,11 @@ as well as
Set this to `true` to enable the [URL functionalily](https://uppy.io/docs/url/).
Default: `false`.
+#### `enableGooglePickerEndpoint` `COMPANION_ENABLE_GOOGLE_PICKER_ENDPOINT`
+
+Set this to `true` to enable the Google Picker (Photos / Drive) functionality.
+Default: `false`.
+
### Events
The object returned by `companion.app()` also has a property `companionEmitter`
@@ -981,6 +987,8 @@ automatically restart when files are changed.
[facebook]: /docs/facebook
[googledrive]: /docs/google-drive
[googlephotos]: /docs/google-photos
+[googledrivepicker]: /docs/google-drive-picker
+[googlephotospicker]: /docs/google-photos-picker
[instagram]: /docs/instagram
[onedrive]: /docs/onedrive
[unsplash]: /docs/unsplash
diff --git a/docs/sources/companion-plugins/_companion-options.mdx b/docs/sources/companion-plugins/_companion-options.mdx
new file mode 100644
index 000000000..8974688d5
--- /dev/null
+++ b/docs/sources/companion-plugins/_companion-options.mdx
@@ -0,0 +1,61 @@
+#### `id`
+
+A unique identifier for this plugin (`string`, default is a unique ID for each
+plugin).
+
+#### `title`
+
+Title / name shown in the UI, such as Dashboard tabs (`string`, default is the
+name of the plugin).
+
+#### `target`
+
+DOM element, CSS selector, or plugin to place the drag and drop area into
+(`string`, `Element`, `Function`, or `UIPlugin`, default:
+[`Dashboard`](/docs/dashboard)).
+
+#### `companionUrl`
+
+URL to a [Companion](/docs/companion) instance (`string`, default: `null`).
+
+#### `companionHeaders`
+
+Custom headers that should be sent along to [Companion](/docs/companion) on
+every request (`Object`, default: `{}`).
+
+#### `companionAllowedHosts`
+
+The valid and authorised URL(s) from which OAuth responses should be accepted
+(`string` or `RegExp` or `Array`, default: `companionUrl`).
+
+This value can be a `string`, a `RegExp` pattern, or an `Array` of both. This is
+useful when you have your [Companion](/docs/companion) running on several hosts.
+Otherwise, the default value should do fine.
+
+#### `companionCookiesRule`
+
+This option correlates to the
+[RequestCredentials value](https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials)
+(`string`, default: `'same-origin'`).
+
+This tells the plugin whether to send cookies to [Companion](/docs/companion).
+
+#### `locale`
+
+An object with `strings` property containing additional i18n strings. The key is
+the i18n key and the value is the English string.
+
+Example:
+
+```js
+{
+ strings: {
+ someKey: 'Some English string',
+ },
+}
+```
+
+#### `storage`
+
+A custom storage to be used for the plugin’s persistent data. Type `AsyncStore`,
+default is `LocalStorage`.
diff --git a/docs/sources/companion-plugins/box.mdx b/docs/sources/companion-plugins/box.mdx
index 9312bbdbd..cbdb2828c 100644
--- a/docs/sources/companion-plugins/box.mdx
+++ b/docs/sources/companion-plugins/box.mdx
@@ -6,6 +6,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import UppyCdnExample from '/src/components/UppyCdnExample';
+import CompanionOptions from './_companion-options.mdx';
# Box
@@ -171,56 +172,7 @@ companion.app({
### Options
-#### `id`
-
-A unique identifier for this plugin (`string`, default: `'Box'`).
-
-#### `title`
-
-Title / name shown in the UI, such as Dashboard tabs (`string`, default:
-`'Box'`).
-
-#### `target`
-
-DOM element, CSS selector, or plugin to place the drag and drop area into
-(`string`, `Element`, `Function`, or `UIPlugin`, default:
-[`Dashboard`](/docs/dashboard)).
-
-#### `companionUrl`
-
-URL to a [Companion](/docs/companion) instance (`string`, default: `null`).
-
-#### `companionHeaders`
-
-Custom headers that should be sent along to [Companion](/docs/companion) on
-every request (`Object`, default: `{}`).
-
-#### `companionAllowedHosts`
-
-The valid and authorised URL(s) from which OAuth responses should be accepted
-(`string` or `RegExp` or `Array`, default: `companionUrl`).
-
-This value can be a `string`, a `RegExp` pattern, or an `Array` of both. This is
-useful when you have your [Companion](/docs/companion) running on several hosts.
-Otherwise, the default value should do fine.
-
-#### `companionCookiesRule`
-
-This option correlates to the
-[RequestCredentials value](https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials)
-(`string`, default: `'same-origin'`).
-
-This tells the plugin whether to send cookies to [Companion](/docs/companion).
-
-#### `locale`
-
-```js
-export default {
- strings: {
- pluginNameBox: 'Box',
- },
-};
-```
+
[template-credentials]:
https://transloadit.com/docs/#how-to-create-template-credentials
diff --git a/docs/sources/companion-plugins/dropbox.mdx b/docs/sources/companion-plugins/dropbox.mdx
index 4a111f35d..d187161d9 100644
--- a/docs/sources/companion-plugins/dropbox.mdx
+++ b/docs/sources/companion-plugins/dropbox.mdx
@@ -6,6 +6,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import UppyCdnExample from '/src/components/UppyCdnExample';
+import CompanionOptions from './_companion-options.mdx';
# Dropbox
@@ -171,56 +172,7 @@ companion.app({
### Options
-#### `id`
-
-A unique identifier for this plugin (`string`, default: `'Dropbox'`).
-
-#### `title`
-
-Title / name shown in the UI, such as Dashboard tabs (`string`, default:
-`'Dropbox'`).
-
-#### `target`
-
-DOM element, CSS selector, or plugin to place the drag and drop area into
-(`string`, `Element`, `Function`, or `UIPlugin`, default:
-[`Dashboard`](/docs/dashboard)).
-
-#### `companionUrl`
-
-URL to a [Companion](/docs/companion) instance (`string`, default: `null`).
-
-#### `companionHeaders`
-
-Custom headers that should be sent along to [Companion](/docs/companion) on
-every request (`Object`, default: `{}`).
-
-#### `companionAllowedHosts`
-
-The valid and authorised URL(s) from which OAuth responses should be accepted
-(`string` or `RegExp` or `Array`, default: `companionUrl`).
-
-This value can be a `string`, a `RegExp` pattern, or an `Array` of both. This is
-useful when you have your [Companion](/docs/companion) running on several hosts.
-Otherwise, the default value should do fine.
-
-#### `companionCookiesRule`
-
-This option correlates to the
-[RequestCredentials value](https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials)
-(`string`, default: `'same-origin'`).
-
-This tells the plugin whether to send cookies to [Companion](/docs/companion).
-
-#### `locale`
-
-```js
-export default {
- strings: {
- pluginNameDropbox: 'Dropbox',
- },
-};
-```
+
[template-credentials]:
https://transloadit.com/docs/#how-to-create-template-credentials
diff --git a/docs/sources/companion-plugins/facebook.mdx b/docs/sources/companion-plugins/facebook.mdx
index dcc496809..41b76f3c0 100644
--- a/docs/sources/companion-plugins/facebook.mdx
+++ b/docs/sources/companion-plugins/facebook.mdx
@@ -6,6 +6,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import UppyCdnExample from '/src/components/UppyCdnExample';
+import CompanionOptions from './_companion-options.mdx';
# Facebook
@@ -168,56 +169,7 @@ companion.app({
### Options
-#### `id`
-
-A unique identifier for this plugin (`string`, default: `'Facebook'`).
-
-#### `title`
-
-Title / name shown in the UI, such as Dashboard tabs (`string`, default:
-`'Facebook'`).
-
-#### `target`
-
-DOM element, CSS selector, or plugin to place the drag and drop area into
-(`string`, `Element`, `Function`, or `UIPlugin`, default:
-[`Dashboard`](/docs/dashboard)).
-
-#### `companionUrl`
-
-URL to a [Companion](/docs/companion) instance (`string`, default: `null`).
-
-#### `companionHeaders`
-
-Custom headers that should be sent along to [Companion](/docs/companion) on
-every request (`Object`, default: `{}`).
-
-#### `companionAllowedHosts`
-
-The valid and authorised URL(s) from which OAuth responses should be accepted
-(`string` or `RegExp` or `Array`, default: `companionUrl`).
-
-This value can be a `string`, a `RegExp` pattern, or an `Array` of both. This is
-useful when you have your [Companion](/docs/companion) running on several hosts.
-Otherwise, the default value should do fine.
-
-#### `companionCookiesRule`
-
-This option correlates to the
-[RequestCredentials value](https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials)
-(`string`, default: `'same-origin'`).
-
-This tells the plugin whether to send cookies to [Companion](/docs/companion).
-
-#### `locale`
-
-```js
-export default {
- strings: {
- pluginNameFacebook: 'Facebook',
- },
-};
-```
+
[template-credentials]:
https://transloadit.com/docs/#how-to-create-template-credentials
diff --git a/docs/sources/companion-plugins/google-drive-picker.mdx b/docs/sources/companion-plugins/google-drive-picker.mdx
new file mode 100644
index 000000000..6f01b8553
--- /dev/null
+++ b/docs/sources/companion-plugins/google-drive-picker.mdx
@@ -0,0 +1,148 @@
+---
+slug: /google-drive-picker
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+import UppyCdnExample from '/src/components/UppyCdnExample';
+import CompanionOptions from './_companion-options.mdx';
+
+# Google Drive Picker
+
+The `@uppy/google-drive-picker` plugin lets users import files from their
+[Google Drive](https://drive.google.com) account using the new
+[Picker API](https://developers.google.com/drive/picker).
+
+A [Companion](/docs/companion) instance is required for the Google Drive Picker
+plugin to work. Companion downloads the files from Google Drive, and uploads
+them to the destination. This saves the user bandwidth, especially helpful if
+they are on a mobile connection.
+
+You can self-host Companion or get a hosted version with any
+[Transloadit plan](https://transloadit.com/pricing/).
+
+See also [Google Photos Picker](./google-photos-picker.mdx).
+
+## When should I use this?
+
+When you want to let users import files from their
+[Google Drive](https://drive.google.com) account.
+
+You should use this plugin over our other
+[Google Drive plugin](/docs/google-drive) if you want to avoid using a
+restricted API scope, which requires CASA Tier 2 compliance.
+
+The downside of using the Picker UI made by Google is less controls, inability
+to select folders, downloading an additional bundle, and a less consistent user
+experience.
+
+
+
+
+```shell
+npm install @uppy/google-drive-picker
+```
+
+
+
+
+
+```shell
+yarn add @uppy/google-drive-picker
+```
+
+
+
+
+
+ {`
+ import { Uppy, GoogleDrivePicker } from "{{UPPY_JS_URL}}"
+ const uppy = new Uppy()
+ uppy.use(GoogleDrivePicker, {
+ // Options
+ })
+ `}
+
+
+
+
+## Use
+
+Using Google Drive Picker requires setup in both Uppy and Companion.
+
+### Initial setup
+
+To sign up for API keys, go to the
+[Google Developer Console](https://console.developers.google.com/).
+
+Create a project for your app if you don’t have one yet.
+
+- On the project’s dashboard, enable the
+ [Google Picker API](https://console.cloud.google.com/apis/library/picker.googleapis.com)
+ (for Google Drive).
+- Create an API key.
+- Create an OAuth 2.0 Client ID of type Web application with the correct
+ Authorized JavaScript origins.
+
+### Use in Uppy
+
+```js {10-13} showLineNumbers
+import Uppy from '@uppy/core';
+import Dashboard from '@uppy/dashboard';
+import GoogleDrivePicker from '@uppy/google-drive-picker';
+
+import '@uppy/core/dist/style.min.css';
+import '@uppy/dashboard/dist/style.min.css';
+
+new Uppy()
+ .use(Dashboard, { inline: true, target: '#dashboard' })
+ .use(GoogleDrivePicker, {
+ companionUrl: 'https://your-companion.com',
+ clientId: 'From Google Developer Console',
+ apiKey: 'From Google Developer Console',
+ appId: 'From Google Developer Console',
+ });
+```
+
+### Use with Transloadit
+
+```js
+import { COMPANION_URL, COMPANION_ALLOWED_HOSTS } from '@uppy/transloadit';
+import GoogleDrivePicker from '@uppy/google-drive-picker';
+
+uppy.use(GoogleDrivePicker, {
+ companionUrl: COMPANION_URL,
+ companionAllowedHosts: COMPANION_ALLOWED_HOSTS,
+ clientId: 'From Google Developer Console',
+ apiKey: 'From Google Developer Console',
+ appId: 'From Google Developer Console',
+});
+```
+
+### Use in Companion
+
+Companion is used to download/upload the picked files. Companion supports this
+plugin out-of-the-box, however it must be enabled in Companion with the
+`enableGooglePickerEndpoint` / `COMPANION_ENABLE_GOOGLE_PICKER_ENDPOINT` option.
+For this plugin, all credentials are public (non-secret) and provided in the
+frontend.
+
+## API
+
+### Options
+
+
+
+#### `clientId`
+
+The client ID from the [Initial setup](#initial-setup) (`string`).
+
+#### `apiKey`
+
+The API key from the [Initial setup](#initial-setup) (`string`).
+
+#### `appId`
+
+The App ID is the project ID which can be found in the URL in the Google
+Developer Console (`string`).
diff --git a/docs/sources/companion-plugins/google-drive.mdx b/docs/sources/companion-plugins/google-drive.mdx
index c682464ec..649cf9636 100644
--- a/docs/sources/companion-plugins/google-drive.mdx
+++ b/docs/sources/companion-plugins/google-drive.mdx
@@ -6,12 +6,21 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import UppyCdnExample from '/src/components/UppyCdnExample';
+import CompanionOptions from './_companion-options.mdx';
# Google Drive
The `@uppy/google-drive` plugin lets users import files from their
[Google Drive](https://drive.google.com) account.
+A [Companion](/docs/companion) instance is required for the Google Drive plugin
+to work. Companion handles authentication with Google Drive, downloads the
+files, and uploads them to the destination. This saves the user bandwidth,
+especially helpful if they are on a mobile connection.
+
+You can self-host Companion or get a hosted version with any
+[Transloadit plan](https://transloadit.com/pricing/).
+
:::tip
[Try out the live example](/examples) or take it for a spin in
@@ -24,13 +33,14 @@ The `@uppy/google-drive` plugin lets users import files from their
When you want to let users import files from their
[Google Drive](https://drive.google.com) account.
-A [Companion](/docs/companion) instance is required for the Google Drive plugin
-to work. Companion handles authentication with Google Drive, downloads the
-files, and uploads them to the destination. This saves the user bandwidth,
-especially helpful if they are on a mobile connection.
+You should use this plugin over the
+[Google Drive Picker plugin](/docs/google-drive-picker) if you prefer a UI with
+more controls, the ability to select folders, a leaner bundle size, and a more
+consistent user experience.
-You can self-host Companion or get a hosted version with any
-[Transloadit plan](https://transloadit.com/pricing/).
+The downside is it needs a restricted API scope, which requires CASA Tier 2
+compliance. This could take months to obtain and potentially a third-party
+security audit.
@@ -172,56 +182,7 @@ companion.app({
### Options
-#### `id`
-
-A unique identifier for this plugin (`string`, default: `'GoogleDrive'`).
-
-#### `title`
-
-Title / name shown in the UI, such as Dashboard tabs (`string`, default:
-`'GoogleDrive'`).
-
-#### `target`
-
-DOM element, CSS selector, or plugin to place the drag and drop area into
-(`string`, `Element`, `Function`, or `UIPlugin`, default:
-[`Dashboard`](/docs/dashboard)).
-
-#### `companionUrl`
-
-URL to a [Companion](/docs/companion) instance (`string`, default: `null`).
-
-#### `companionHeaders`
-
-Custom headers that should be sent along to [Companion](/docs/companion) on
-every request (`Object`, default: `{}`).
-
-#### `companionAllowedHosts`
-
-The valid and authorised URL(s) from which OAuth responses should be accepted
-(`string` or `RegExp` or `Array`, default: `companionUrl`).
-
-This value can be a `string`, a `RegExp` pattern, or an `Array` of both. This is
-useful when you have your [Companion](/docs/companion) running on several hosts.
-Otherwise, the default value should do fine.
-
-#### `companionCookiesRule`
-
-This option correlates to the
-[RequestCredentials value](https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials)
-(`string`, default: `'same-origin'`).
-
-This tells the plugin whether to send cookies to [Companion](/docs/companion).
-
-#### `locale`
-
-```js
-export default {
- strings: {
- pluginNameGoogleDrive: 'GoogleDrive',
- },
-};
-```
+
[template-credentials]:
https://transloadit.com/docs/#how-to-create-template-credentials
diff --git a/docs/sources/companion-plugins/google-photos-picker.mdx b/docs/sources/companion-plugins/google-photos-picker.mdx
new file mode 100644
index 000000000..31b5b4ffb
--- /dev/null
+++ b/docs/sources/companion-plugins/google-photos-picker.mdx
@@ -0,0 +1,133 @@
+---
+slug: /google-photos-picker
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+import UppyCdnExample from '/src/components/UppyCdnExample';
+import CompanionOptions from './_companion-options.mdx';
+
+# Google Photos Picker
+
+The `@uppy/google-photos-picker` plugin lets users import files from their
+[Google Drive](https://drive.google.com) account using the new
+[Picker API](https://developers.google.com/photos/picker).
+
+A [Companion](/docs/companion) instance is required for the Google Drive Picker
+plugin to work. Companion downloads the files from Google Drive, and uploads
+them to the destination. This saves the user bandwidth, especially helpful if
+they are on a mobile connection.
+
+You can self-host Companion or get a hosted version with any
+[Transloadit plan](https://transloadit.com/pricing/).
+
+See also [Google Drive Picker](./google-drive-picker.mdx).
+
+## When should I use this?
+
+When you want to let users import files from their
+[Google Photos](https://photos.google.com) account.
+
+You should use this plugin over our other
+[Google Photos plugin](/docs/google-photos) if you want to avoid using a
+restricted API scope, which requires CASA Tier 2 compliance.
+
+The downside of using the Picker UI made by Google is less controls, inability
+to select folders, downloading an additional bundle, and a less consistent user
+experience.
+
+
+
+
+```shell
+npm install @uppy/google-photos-picker
+```
+
+
+
+
+
+```shell
+yarn add @uppy/google-photos-picker
+```
+
+
+
+
+
+ {`
+ import { Uppy, GooglePhotosPicker } from "{{UPPY_JS_URL}}"
+ const uppy = new Uppy()
+ uppy.use(GooglePhotosPicker, {
+ // Options
+ })
+ `}
+
+
+
+
+## Use
+
+Using Google Photos Picker requires setup in both Uppy and Companion.
+
+### Initial setup
+
+To sign up for API keys, go to the
+[Google Developer Console](https://console.developers.google.com/).
+
+Create a project for your app if you don’t have one yet.
+
+- On the project’s dashboard, enable the
+ [Google Photos Picker API](https://console.cloud.google.com/apis/library/photospicker.googleapis.com).
+- Create an OAuth 2.0 Client ID of type Web application with the correct
+ Authorized JavaScript origins.
+
+### Use in Uppy
+
+```js {10-13} showLineNumbers
+import Uppy from '@uppy/core';
+import Dashboard from '@uppy/dashboard';
+import GooglePhotosPicker from '@uppy/google-photos-picker';
+
+import '@uppy/core/dist/style.min.css';
+import '@uppy/dashboard/dist/style.min.css';
+
+new Uppy()
+ .use(Dashboard, { inline: true, target: '#dashboard' })
+ .use(GooglePhotosPicker, {
+ companionUrl: 'https://your-companion.com',
+ clientId: 'From Google Developer Console',
+ });
+```
+
+### Use with Transloadit
+
+```js
+import { COMPANION_URL, COMPANION_ALLOWED_HOSTS } from '@uppy/transloadit';
+import GooglePhotosPicker from '@uppy/google-photos-picker';
+
+uppy.use(GooglePhotosPicker, {
+ companionUrl: COMPANION_URL,
+ companionAllowedHosts: COMPANION_ALLOWED_HOSTS,
+ clientId: 'From Google Developer Console',
+});
+```
+
+### Use in Companion
+
+Companion is used to download/upload the picked files. Companion supports this
+plugin out-of-the-box, however it must be enabled in Companion with the
+`enableGooglePickerEndpoint` / `COMPANION_ENABLE_GOOGLE_PICKER_ENDPOINT` option.
+For this plugin, all credentials are public (non-secret) and provided in the
+frontend.
+
+## API
+
+### Options
+
+
+
+#### `clientId`
+
+The client ID from the [Initial setup](#initial-setup) (`string`).
diff --git a/docs/sources/companion-plugins/google-photos.mdx b/docs/sources/companion-plugins/google-photos.mdx
index e90cfb6e6..6cfc14bd0 100644
--- a/docs/sources/companion-plugins/google-photos.mdx
+++ b/docs/sources/companion-plugins/google-photos.mdx
@@ -6,11 +6,20 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import UppyCdnExample from '/src/components/UppyCdnExample';
+import CompanionOptions from './_companion-options.mdx';
# Google Photos
The `@uppy/google-photos` plugin lets users import files from their
-[Google Photos](https://photos.google.com) account.
+[Google Drive](https://photos.google.com) account.
+
+A [Companion](/docs/companion) instance is required for the Google Drive plugin
+to work. Companion handles authentication with Google Drive, downloads the
+files, and uploads them to the destination. This saves the user bandwidth,
+especially helpful if they are on a mobile connection.
+
+You can self-host Companion or get a hosted version with any
+[Transloadit plan](https://transloadit.com/pricing/).
:::tip
@@ -24,13 +33,14 @@ The `@uppy/google-photos` plugin lets users import files from their
When you want to let users import files from their
[Google Photos](https://photos.google.com) account.
-A [Companion](/docs/companion) instance is required for the Google Photos plugin
-to work. Companion handles authentication with Google Photos, downloads the
-photos/videos, and uploads them to the destination. This saves the user
-bandwidth, especially helpful if they are on a mobile connection.
+You should use this plugin over the
+[Google Photos Picker plugin](/docs/google-photos-picker) if you prefer a UI
+with more controls, the ability to select folders, a leaner bundle size, and a
+more consistent user experience.
-You can self-host Companion or get a hosted version with any
-[Transloadit plan](https://transloadit.com/pricing/).
+The downside is it needs a restricted API scope, which requires CASA Tier 2
+compliance. This could take months to obtain and potentially a third-party
+security audit.
@@ -169,55 +179,7 @@ companion.app({
### Options
-#### `id`
-
-A unique identifier for this plugin (`string`, default: `'GooglePhotos'`).
-
-#### `title`
-
-Title / name shown in the UI, such as Dashboard tabs (`string`, default:
-`'GooglePhotos'`).
-
-#### `target`
-
-DOM element, CSS selector, or plugin to place the drag and drop area into
-(`string` or `Element`, default: `null`).
-
-#### `companionUrl`
-
-URL to a [Companion](/docs/companion) instance (`string`, default: `null`).
-
-#### `companionHeaders`
-
-Custom headers that should be sent along to [Companion](/docs/companion) on
-every request (`Object`, default: `{}`).
-
-#### `companionAllowedHosts`
-
-The valid and authorised URL(s) from which OAuth responses should be accepted
-(`string` or `RegExp` or `Array`, default: `companionUrl`).
-
-This value can be a `string`, a `RegExp` pattern, or an `Array` of both. This is
-useful when you have your [Companion](/docs/companion) running on several hosts.
-Otherwise, the default value should do fine.
-
-#### `companionCookiesRule`
-
-This option correlates to the
-[RequestCredentials value](https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials)
-(`string`, default: `'same-origin'`).
-
-This tells the plugin whether to send cookies to [Companion](/docs/companion).
-
-#### `locale`
-
-```js
-export default {
- strings: {
- pluginNameGooglePhotos: 'GooglePhotos',
- },
-};
-```
+
[template-credentials]:
https://transloadit.com/docs/#how-to-create-template-credentials
diff --git a/docs/sources/companion-plugins/instagram.mdx b/docs/sources/companion-plugins/instagram.mdx
index ca920d86c..cdfec7098 100644
--- a/docs/sources/companion-plugins/instagram.mdx
+++ b/docs/sources/companion-plugins/instagram.mdx
@@ -6,6 +6,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import UppyCdnExample from '/src/components/UppyCdnExample';
+import CompanionOptions from './_companion-options.mdx';
# Instagram
@@ -181,56 +182,7 @@ page, in the “Valid OAuth Redirect URIs” field, add
### Options
-#### `id`
-
-A unique identifier for this plugin (`string`, default: `'Instagram'`).
-
-#### `title`
-
-Title / name shown in the UI, such as Dashboard tabs (`string`, default:
-`'Instagram'`).
-
-#### `target`
-
-DOM element, CSS selector, or plugin to place the drag and drop area into
-(`string`, `Element`, `Function`, or `UIPlugin`, default:
-[`Dashboard`](/docs/dashboard)).
-
-#### `companionUrl`
-
-URL to a [Companion](/docs/companion) instance (`string`, default: `null`).
-
-#### `companionHeaders`
-
-Custom headers that should be sent along to [Companion](/docs/companion) on
-every request (`Object`, default: `{}`).
-
-#### `companionAllowedHosts`
-
-The valid and authorised URL(s) from which OAuth responses should be accepted
-(`string` or `RegExp` or `Array`, default: `companionUrl`).
-
-This value can be a `string`, a `RegExp` pattern, or an `Array` of both. This is
-useful when you have your [Companion](/docs/companion) running on several hosts.
-Otherwise, the default value should do fine.
-
-#### `companionCookiesRule`
-
-This option correlates to the
-[RequestCredentials value](https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials)
-(`string`, default: `'same-origin'`).
-
-This tells the plugin whether to send cookies to [Companion](/docs/companion).
-
-#### `locale`
-
-```js
-export default {
- strings: {
- pluginNameInstagram: 'Instagram',
- },
-};
-```
+
[template-credentials]:
https://transloadit.com/docs/#how-to-create-template-credentials
diff --git a/docs/sources/companion-plugins/onedrive.mdx b/docs/sources/companion-plugins/onedrive.mdx
index b91c3931e..9cd7c8c2a 100644
--- a/docs/sources/companion-plugins/onedrive.mdx
+++ b/docs/sources/companion-plugins/onedrive.mdx
@@ -6,6 +6,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import UppyCdnExample from '/src/components/UppyCdnExample';
+import CompanionOptions from './_companion-options.mdx';
# OneDrive
@@ -169,56 +170,7 @@ companion.app({
### Options
-#### `id`
-
-A unique identifier for this plugin (`string`, default: `'OneDrive'`).
-
-#### `title`
-
-Title / name shown in the UI, such as Dashboard tabs (`string`, default:
-`'OneDrive'`).
-
-#### `target`
-
-DOM element, CSS selector, or plugin to place the drag and drop area into
-(`string`, `Element`, `Function`, or `UIPlugin`, default:
-[`Dashboard`](/docs/dashboard)).
-
-#### `companionUrl`
-
-URL to a [Companion](/docs/companion) instance (`string`, default: `null`).
-
-#### `companionHeaders`
-
-Custom headers that should be sent along to [Companion](/docs/companion) on
-every request (`Object`, default: `{}`).
-
-#### `companionAllowedHosts`
-
-The valid and authorised URL(s) from which OAuth responses should be accepted
-(`string` or `RegExp` or `Array`, default: `companionUrl`).
-
-This value can be a `string`, a `RegExp` pattern, or an `Array` of both. This is
-useful when you have your [Companion](/docs/companion) running on several hosts.
-Otherwise, the default value should do fine.
-
-#### `companionCookiesRule`
-
-This option correlates to the
-[RequestCredentials value](https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials)
-(`string`, default: `'same-origin'`).
-
-This tells the plugin whether to send cookies to [Companion](/docs/companion).
-
-#### `locale`
-
-```js
-export default {
- strings: {
- pluginNameOneDrive: 'OneDrive',
- },
-};
-```
+
[template-credentials]:
https://transloadit.com/docs/#how-to-create-template-credentials
diff --git a/docs/sources/companion-plugins/unsplash.mdx b/docs/sources/companion-plugins/unsplash.mdx
index 1287729ae..08c4500d0 100644
--- a/docs/sources/companion-plugins/unsplash.mdx
+++ b/docs/sources/companion-plugins/unsplash.mdx
@@ -6,6 +6,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import UppyCdnExample from '/src/components/UppyCdnExample';
+import CompanionOptions from './_companion-options.mdx';
# Unsplash
@@ -147,56 +148,7 @@ companion.app({
### Options
-#### `id`
-
-A unique identifier for this plugin (`string`, default: `'Unsplash'`).
-
-#### `title`
-
-Title / name shown in the UI, such as Dashboard tabs (`string`, default:
-`'Unsplash'`).
-
-#### `target`
-
-DOM element, CSS selector, or plugin to place the drag and drop area into
-(`string`, `Element`, `Function`, or `UIPlugin`, default:
-[`Dashboard`](/docs/dashboard)).
-
-#### `companionUrl`
-
-URL to a [Companion](/docs/companion) instance (`string`, default: `null`).
-
-#### `companionHeaders`
-
-Custom headers that should be sent along to [Companion](/docs/companion) on
-every request (`Object`, default: `{}`).
-
-#### `companionAllowedHosts`
-
-The valid and authorised URL(s) from which OAuth responses should be accepted
-(`string` or `RegExp` or `Array`, default: `companionUrl`).
-
-This value can be a `string`, a `RegExp` pattern, or an `Array` of both. This is
-useful when you have your [Companion](/docs/companion) running on several hosts.
-Otherwise, the default value should do fine.
-
-#### `companionCookiesRule`
-
-This option correlates to the
-[RequestCredentials value](https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials)
-(`string`, default: `'same-origin'`).
-
-This tells the plugin whether to send cookies to [Companion](/docs/companion).
-
-#### `locale`
-
-```js
-export default {
- strings: {
- pluginNameUnsplash: 'Unsplash',
- },
-};
-```
+
[template-credentials]:
https://transloadit.com/docs/#how-to-create-template-credentials
diff --git a/docs/sources/companion-plugins/url.mdx b/docs/sources/companion-plugins/url.mdx
index 52892db58..fc72b037d 100644
--- a/docs/sources/companion-plugins/url.mdx
+++ b/docs/sources/companion-plugins/url.mdx
@@ -6,6 +6,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import UppyCdnExample from '/src/components/UppyCdnExample';
+import CompanionOptions from './_companion-options.mdx';
# Import from URL
@@ -133,56 +134,7 @@ Companion with the `enableUrlEndpoint` / `COMPANION_ENABLE_URL_ENDPOINT` option.
### Options
-#### `id`
-
-A unique identifier for this plugin (`string`, default: `'Url'`).
-
-#### `title`
-
-Title / name shown in the UI, such as Dashboard tabs (`string`, default:
-`'Url'`).
-
-#### `target`
-
-DOM element, CSS selector, or plugin to place the drag and drop area into
-(`string`, `Element`, `Function`, or `UIPlugin`, default:
-[`Dashboard`](/docs/dashboard)).
-
-#### `companionUrl`
-
-URL to a [Companion](/docs/companion) instance (`string`, default: `null`).
-
-#### `companionHeaders`
-
-Custom headers that should be sent along to [Companion](/docs/companion) on
-every request (`Object`, default: `{}`).
-
-#### `companionAllowedHosts`
-
-The valid and authorised URL(s) from which OAuth responses should be accepted
-(`string` or `RegExp` or `Array`, default: `companionUrl`).
-
-This value can be a `string`, a `RegExp` pattern, or an `Array` of both. This is
-useful when you have your [Companion](/docs/companion) running on several hosts.
-Otherwise, the default value should do fine.
-
-#### `companionCookiesRule`
-
-This option correlates to the
-[RequestCredentials value](https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials)
-(`string`, default: `'same-origin'`).
-
-This tells the plugin whether to send cookies to [Companion](/docs/companion).
-
-#### `locale`
-
-```js
-export default {
- strings: {
- pluginNameUrl: 'Url',
- },
-};
-```
+
[template-credentials]:
https://transloadit.com/docs/#how-to-create-template-credentials
diff --git a/docs/sources/companion-plugins/zoom.mdx b/docs/sources/companion-plugins/zoom.mdx
index 83dbbc7c0..ee0ec9ae8 100644
--- a/docs/sources/companion-plugins/zoom.mdx
+++ b/docs/sources/companion-plugins/zoom.mdx
@@ -6,6 +6,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import UppyCdnExample from '/src/components/UppyCdnExample';
+import CompanionOptions from './_companion-options.mdx';
# Zoom
@@ -172,56 +173,7 @@ To sign up for API keys, go through the following steps:
### Options
-#### `id`
-
-A unique identifier for this plugin (`string`, default: `'Zoom'`).
-
-#### `title`
-
-Title / name shown in the UI, such as Dashboard tabs (`string`, default:
-`'Zoom'`).
-
-#### `target`
-
-DOM element, CSS selector, or plugin to place the drag and drop area into
-(`string`, `Element`, `Function`, or `UIPlugin`, default:
-[`Dashboard`](/docs/dashboard)).
-
-#### `companionUrl`
-
-URL to a [Companion](/docs/companion) instance (`string`, default: `null`).
-
-#### `companionHeaders`
-
-Custom headers that should be sent along to [Companion](/docs/companion) on
-every request (`Object`, default: `{}`).
-
-#### `companionAllowedHosts`
-
-The valid and authorised URL(s) from which OAuth responses should be accepted
-(`string` or `RegExp` or `Array`, default: `companionUrl`).
-
-This value can be a `string`, a `RegExp` pattern, or an `Array` of both. This is
-useful when you have your [Companion](/docs/companion) running on several hosts.
-Otherwise, the default value should do fine.
-
-#### `companionCookiesRule`
-
-This option correlates to the
-[RequestCredentials value](https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials)
-(`string`, default: `'same-origin'`).
-
-This tells the plugin whether to send cookies to [Companion](/docs/companion).
-
-#### `locale`
-
-```js
-export default {
- strings: {
- pluginNameZoom: 'Zoom',
- },
-};
-```
+
[template-credentials]:
https://transloadit.com/docs/#how-to-create-template-credentials
diff --git a/docs/user-interfaces/dashboard.mdx b/docs/user-interfaces/dashboard.mdx
index 340efbd4e..07d6d4fbd 100644
--- a/docs/user-interfaces/dashboard.mdx
+++ b/docs/user-interfaces/dashboard.mdx
@@ -716,6 +716,10 @@ all Uppy plugins.
[Google Drive](https://drive.google.com).
- [`@uppy/google-photos`](/docs/google-photos) — import from
[Google Photos](https://photos.google.com).
+- [`@uppy/google-drive-picker`](/docs/google-drive-picker) — import from
+ [Google Drive](https://drive.google.com) using the new Picker API.
+- [`@uppy/google-photos-picker`](/docs/google-photos-picker) — import from
+ [Google Photos](https://drive.google.com) using the new Picker API.
- [`@uppy/instagram`](/docs/instagram) — import from
[Instagram](https://instagram.com).
- [`@uppy/onedrive`](/docs/onedrive) — import from