diff --git a/lib/gui/app/components/image-selector/image-selector.tsx b/lib/gui/app/components/image-selector/image-selector.tsx index 10ab240c..a95795e2 100644 --- a/lib/gui/app/components/image-selector/image-selector.tsx +++ b/lib/gui/app/components/image-selector/image-selector.tsx @@ -19,7 +19,6 @@ import * as _ from 'lodash'; import { GPTPartition, MBRPartition } from 'partitioninfo'; import * as path from 'path'; import * as React from 'react'; -import { default as Dropzone } from 'react-dropzone'; import { Modal } from 'rendition'; import { default as styled } from 'styled-components'; @@ -102,7 +101,7 @@ export class ImageSelector extends React.Component< this.openImageSelector = this.openImageSelector.bind(this); this.reselectImage = this.reselectImage.bind(this); - this.handleOnDrop = this.handleOnDrop.bind(this); + this.onDrop = this.onDrop.bind(this); this.showSelectedImageDetails = this.showSelectedImageDetails.bind(this); } @@ -286,14 +285,23 @@ export class ImageSelector extends React.Component< } } - private handleOnDrop(acceptedFiles: Array<{ path: string }>) { - const [file] = acceptedFiles; - + private onDrop(event: React.DragEvent) { + const [file] = event.dataTransfer.files; if (file) { this.selectImageByPath(file.path); } } + private onDragOver(event: React.DragEvent) { + // Needed to get onDrop events on div elements + event.preventDefault(); + } + + private onDragEnter(event: React.DragEvent) { + // Needed to get onDrop events on div elements + event.preventDefault(); + } + private showSelectedImageDetails() { analytics.logEvent('Show selected image tooltip', { imagePath: selectionState.getImagePath(), @@ -321,18 +329,18 @@ export class ImageSelector extends React.Component< return ( <> -
- - {({ getRootProps, getInputProps }) => ( -
- - -
- )} -
+
+
+ +
{hasImage ? ( diff --git a/lib/shared/permissions.ts b/lib/shared/permissions.ts index 7468ab5b..3329f403 100755 --- a/lib/shared/permissions.ts +++ b/lib/shared/permissions.ts @@ -161,7 +161,10 @@ export async function elevateCommand( options.environment, ); return Bluebird.using( - tmpFileDisposer({ postfix: '.cmd' }), + tmpFileDisposer({ + prefix: 'balena-etcher-electron-', + postfix: '.cmd', + }), async ({ path }) => { await fs.writeFile(path, launchScript); if (isWindows) { diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 141ab928..e12c1428 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1578,11 +1578,6 @@ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, - "attr-accept": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.0.0.tgz", - "integrity": "sha512-I9SDP4Wvh2ItYYoafEg8hFpsBe96pfQ+eabceShXt3sw2fbIP96+Aoj9zZE0vkZNAkXXzHJATVRuWz+h9FxJxQ==" - }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -1852,9 +1847,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", + "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -5406,9 +5401,9 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "etcher-sdk": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/etcher-sdk/-/etcher-sdk-2.0.15.tgz", - "integrity": "sha512-VpG00MMrv+Hx8Qz3hO4OlTkUV1kTeJECuSQn/Yv7TE9y/MCe8mJy6/XTa9q76yyJixIS1oKPoaDHNL9JawgTBw==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/etcher-sdk/-/etcher-sdk-2.0.17.tgz", + "integrity": "sha512-9RgYlugEFLFo+nMuXeBNPT9ODg89CmEsjjJW597MKx4WNIZWoCQXQJR1qw2uu3ZT5JuqPq82xz1/9PaiW2mSng==", "requires": { "@types/node": "^6.0.112", "axios": "^0.18.0", @@ -5864,14 +5859,6 @@ "bluebird": "^3.5.3" } }, - "file-selector": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.1.12.tgz", - "integrity": "sha512-Kx7RTzxyQipHuiqyZGf+Nz4vY9R1XGxuQl/hLoJwq+J4avk/9wxxgZyHKtbyIPJmbD4A66DWGYfyykWNpcYutQ==", - "requires": { - "tslib": "^1.9.0" - } - }, "file-type": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", @@ -9289,9 +9276,9 @@ "integrity": "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==" }, "needle": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.2.tgz", + "integrity": "sha512-DUzITvPVDUy6vczKKYTnWc/pBZ0EnjMJnQ3y+Jo5zfKFimJs7S3HFCxCRZYB9FUZcrzUQr3WsmvZgddMEIZv6w==", "requires": { "debug": "^3.2.6", "iconv-lite": "^0.4.4", @@ -9338,9 +9325,9 @@ } }, "node-abi": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.12.0.tgz", - "integrity": "sha512-VhPBXCIcvmo/5K8HPmnWJyyhvgKxnHTUMXR/XwGHV68+wrgkzST4UmQrY/XszSWA5dtnXpNp528zkcyJ/pzVcw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.14.0.tgz", + "integrity": "sha512-y54KGgEOHnRHlGQi7E5UiryRkH8bmksmQLj/9iLAjoje743YS+KaKB/sDYXgqtT0J16JT3c3AYJZNI98aU/kYg==", "requires": { "semver": "^5.4.1" } @@ -9601,9 +9588,12 @@ "dev": true }, "npm-bundled": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", - "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } }, "npm-conf": { "version": "1.1.3", @@ -9631,13 +9621,19 @@ "integrity": "sha1-1+/jz816sAYUuJbqUxGdyaslkSU=", "dev": true }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, "npm-packlist": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.6.tgz", - "integrity": "sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg==", + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", "requires": { "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" } }, "npm-run-path": { @@ -10576,28 +10572,6 @@ "scheduler": "^0.17.0" } }, - "react-dropzone": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-10.2.1.tgz", - "integrity": "sha512-Me5nOu8hK9/Xyg5easpdfJ6SajwUquqYR/2YTdMotsCUgJ1pHIIwNsv0n+qcIno0tWR2V2rVQtj2r/hXYs2TnQ==", - "requires": { - "attr-accept": "^2.0.0", - "file-selector": "^0.1.12", - "prop-types": "^15.7.2" - }, - "dependencies": { - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - } - } - }, "react-google-recaptcha": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/react-google-recaptcha/-/react-google-recaptcha-2.0.1.tgz", @@ -12764,9 +12738,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", + "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -13255,9 +13229,9 @@ "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==" }, "typed-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/typed-error/-/typed-error-3.1.0.tgz", - "integrity": "sha512-QLHUCS9Bjw4SjikzFmwt4rtCxXd/7NQtKVcDugGzcjhMg+dy9M/NKgKzW6jv3n5RMzHY6ujEDC66PCTWbu+fYw==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/typed-error/-/typed-error-3.2.0.tgz", + "integrity": "sha512-n0NojMTp7jD2MMgJxtjzS1it/sKIlDfQwqOECSPAGwsIU2jns3G0R6alnakRelQzxz7t8PhjYrlqYoQKUVGOsQ==" }, "typedarray": { "version": "0.0.6", @@ -14244,9 +14218,9 @@ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" }, "xmlhttprequest": { "version": "1.8.0", @@ -14483,4 +14457,4 @@ } } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index af3eb06e..05c74718 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "d3": "^4.13.0", "debug": "^3.1.0", "electron-updater": "4.0.6", - "etcher-sdk": "^2.0.15", + "etcher-sdk": "^2.0.17", "flexboxgrid": "^6.3.0", "immutable": "^3.8.1", "inactivity-timer": "^1.0.0", @@ -75,7 +75,6 @@ "pretty-bytes": "^5.3.0", "react": "^16.8.5", "react-dom": "^16.8.5", - "react-dropzone": "^10.2.1", "redux": "^3.5.2", "rendition": "^11.24.0", "request": "^2.81.0",