diff --git a/add-on/_locales/de_DE/messages.json b/add-on/_locales/de_DE/messages.json
index 95a89ed78..56bd5776b 100644
--- a/add-on/_locales/de_DE/messages.json
+++ b/add-on/_locales/de_DE/messages.json
@@ -3,6 +3,14 @@
"message": "IPFS Begleiter",
"description": "A pop-up title when user hovers on Browser Action button"
},
+ "panel_headerIpfsNodeEmbedded": {
+ "message": "Embedded",
+ "description": "Label for an embedded IPFS node"
+ },
+ "panel_headerIpfsNodeExternal": {
+ "message": "External",
+ "description": "Label for an external IPFS node"
+ },
"panel_statusGatewayRedirect": {
"message": "Weiterleitung",
"description": "A label in Node status section of Browser Action pop-up"
@@ -264,4 +272,4 @@
"message": "Browser-Erweiterung, die den Zugriff auf IPFS-Ressourcen vereinfacht",
"description": "Extension description in the Manifest file"
}
-}
\ No newline at end of file
+}
diff --git a/add-on/_locales/en/messages.json b/add-on/_locales/en/messages.json
index 8da28d39a..b4301c218 100644
--- a/add-on/_locales/en/messages.json
+++ b/add-on/_locales/en/messages.json
@@ -3,6 +3,14 @@
"message": "IPFS Companion",
"description": "A pop-up title when user hovers on Browser Action button"
},
+ "panel_headerIpfsNodeEmbedded": {
+ "message": "Embedded",
+ "description": "Label for an embedded IPFS node"
+ },
+ "panel_headerIpfsNodeExternal": {
+ "message": "External",
+ "description": "Label for an external IPFS node"
+ },
"panel_statusGatewayRedirect": {
"message": "redirect",
"description": "A label in Node status section of Browser Action pop-up"
@@ -16,7 +24,7 @@
"description": "Redirect state in Node status section of Browser Action pop-up"
},
"panel_statusGatewayAddress": {
- "message": "gateway",
+ "message": "HTTP Gateway",
"description": "A label in Node status section of Browser Action pop-up"
},
"panel_statusGatewayVersion": {
diff --git a/add-on/_locales/fr_FR/messages.json b/add-on/_locales/fr_FR/messages.json
index 25de8ac27..97caf0e87 100644
--- a/add-on/_locales/fr_FR/messages.json
+++ b/add-on/_locales/fr_FR/messages.json
@@ -3,6 +3,14 @@
"message": "Compagnon IPFS",
"description": "A pop-up title when user hovers on Browser Action button"
},
+ "panel_headerIpfsNodeEmbedded": {
+ "message": "Embedded",
+ "description": "Label for an embedded IPFS node"
+ },
+ "panel_headerIpfsNodeExternal": {
+ "message": "External",
+ "description": "Label for an external IPFS node"
+ },
"panel_statusGatewayRedirect": {
"message": "rediréger",
"description": "A label in Node status section of Browser Action pop-up"
@@ -264,4 +272,4 @@
"message": "Extension de navigateur qui simplifie l’accès aux ressources de IPFS",
"description": "Extension description in the Manifest file"
}
-}
\ No newline at end of file
+}
diff --git a/add-on/_locales/it_IT/messages.json b/add-on/_locales/it_IT/messages.json
index fed80a557..3c8e006cb 100644
--- a/add-on/_locales/it_IT/messages.json
+++ b/add-on/_locales/it_IT/messages.json
@@ -3,6 +3,14 @@
"message": "IPFS Companion",
"description": "A pop-up title when user hovers on Browser Action button"
},
+ "panel_headerIpfsNodeEmbedded": {
+ "message": "Embedded",
+ "description": "Label for an embedded IPFS node"
+ },
+ "panel_headerIpfsNodeExternal": {
+ "message": "External",
+ "description": "Label for an external IPFS node"
+ },
"panel_statusGatewayRedirect": {
"message": "reindirizza",
"description": "A label in Node status section of Browser Action pop-up"
@@ -264,4 +272,4 @@
"message": "Estensione per il browser che semplifica l'accesso alle risorse IPFS",
"description": "Extension description in the Manifest file"
}
-}
\ No newline at end of file
+}
diff --git a/add-on/_locales/pl_PL/messages.json b/add-on/_locales/pl_PL/messages.json
index 52dfafc24..c934b61d0 100644
--- a/add-on/_locales/pl_PL/messages.json
+++ b/add-on/_locales/pl_PL/messages.json
@@ -3,6 +3,14 @@
"message": "Asystent IPFS",
"description": "A pop-up title when user hovers on Browser Action button"
},
+ "panel_headerIpfsNodeEmbedded": {
+ "message": "Embedded",
+ "description": "Label for an embedded IPFS node"
+ },
+ "panel_headerIpfsNodeExternal": {
+ "message": "External",
+ "description": "Label for an external IPFS node"
+ },
"panel_statusGatewayRedirect": {
"message": "przekierowanie",
"description": "A label in Node status section of Browser Action pop-up"
@@ -264,4 +272,4 @@
"message": "Rozszerzenie przeglądarki ułatwiające dostęp do zasobów IPFS",
"description": "Extension description in the Manifest file"
}
-}
\ No newline at end of file
+}
diff --git a/add-on/_locales/ro_RO/messages.json b/add-on/_locales/ro_RO/messages.json
index 7350560bf..caeaa0993 100644
--- a/add-on/_locales/ro_RO/messages.json
+++ b/add-on/_locales/ro_RO/messages.json
@@ -3,6 +3,14 @@
"message": "Companionul IPFS",
"description": "A pop-up title when user hovers on Browser Action button"
},
+ "panel_headerIpfsNodeEmbedded": {
+ "message": "Embedded",
+ "description": "Label for an embedded IPFS node"
+ },
+ "panel_headerIpfsNodeExternal": {
+ "message": "External",
+ "description": "Label for an external IPFS node"
+ },
"panel_statusGatewayRedirect": {
"message": "redirecționat",
"description": "A label in Node status section of Browser Action pop-up"
@@ -264,4 +272,4 @@
"message": "Extensie a browserului care simplifică accesul la resursele IPFS",
"description": "Extension description in the Manifest file"
}
-}
\ No newline at end of file
+}
diff --git a/add-on/_locales/zh_CN/messages.json b/add-on/_locales/zh_CN/messages.json
index ecb3e1012..fffb570c1 100644
--- a/add-on/_locales/zh_CN/messages.json
+++ b/add-on/_locales/zh_CN/messages.json
@@ -3,6 +3,14 @@
"message": "IPFS 伙伴",
"description": "A pop-up title when user hovers on Browser Action button"
},
+ "panel_headerIpfsNodeEmbedded": {
+ "message": "Embedded",
+ "description": "Label for an embedded IPFS node"
+ },
+ "panel_headerIpfsNodeExternal": {
+ "message": "External",
+ "description": "Label for an external IPFS node"
+ },
"panel_statusGatewayRedirect": {
"message": "重定向",
"description": "A label in Node status section of Browser Action pop-up"
@@ -264,4 +272,4 @@
"message": "简化IPFS资源访问的浏览器扩展",
"description": "Extension description in the Manifest file"
}
-}
\ No newline at end of file
+}
diff --git a/add-on/src/popup/browser-action/context-actions.js b/add-on/src/popup/browser-action/context-actions.js
index 35f1e93d4..86981b547 100644
--- a/add-on/src/popup/browser-action/context-actions.js
+++ b/add-on/src/popup/browser-action/context-actions.js
@@ -3,6 +3,7 @@
const browser = require('webextension-polyfill')
const html = require('choo/html')
+const navItem = require('./nav-item')
module.exports = function contextActions ({
isIpfsContext,
@@ -18,32 +19,29 @@ module.exports = function contextActions ({
if (!isIpfsContext) return null
return html`
-
-
-
-
${browser.i18n.getMessage('panelCopy_currentIpfsAddress')}
-
-
-
-
-
${browser.i18n.getMessage('panel_copyCurrentPublicGwUrl')}
-
-
- ${isIpfsOnline && isPinned ? null : html`
-
-
-
${browser.i18n.getMessage('panel_pinCurrentIpfsAddress')}
-
-
- `}
- ${isIpfsOnline && isPinned ? html`
-
-
-
${browser.i18n.getMessage('panel_unpinCurrentIpfsAddress')}
-
-
- ` : null}
-
+
+ ${navItem({
+ text: browser.i18n.getMessage('panelCopy_currentIpfsAddress'),
+ onClick: onCopyIpfsAddr
+ })}
+ ${navItem({
+ text: browser.i18n.getMessage('panel_copyCurrentPublicGwUrl'),
+ onClick: onCopyPublicGwAddr
+ })}
+ ${isIpfsOnline && isPinned ? null : (
+ navItem({
+ text: browser.i18n.getMessage('panel_pinCurrentIpfsAddress'),
+ disabled: isPinning,
+ onClick: onPin
+ })
+ )}
+ ${isIpfsOnline && isPinned ? (
+ navItem({
+ text: browser.i18n.getMessage('panel_unpinCurrentIpfsAddress'),
+ disabled: isUnPinning,
+ onClick: onUnPin
+ })
+ ) : null}
`
}
diff --git a/add-on/src/popup/browser-action/gateway-status.js b/add-on/src/popup/browser-action/gateway-status.js
index 85f12125a..2fa8ca3e4 100644
--- a/add-on/src/popup/browser-action/gateway-status.js
+++ b/add-on/src/popup/browser-action/gateway-status.js
@@ -12,35 +12,29 @@ module.exports = function gatewayStatus ({
redirectEnabled
}) {
return html`
-
-
-
-
- ${browser.i18n.getMessage('panel_statusGatewayAddress')}
- ${gatewayAddress == null ? 'unknown' : gatewayAddress}
-
-
- ${browser.i18n.getMessage('panel_statusGatewayVersion')}
- ${gatewayVersion == null ? 'offline' : gatewayVersion}
-
-
- ${browser.i18n.getMessage('panel_statusSwarmPeers')}
- ${swarmPeers == null ? 'offline' : swarmPeers}
-
-
- ${browser.i18n.getMessage('panel_statusGatewayRedirect')}
-
- ${browser.i18n.getMessage(
- redirectEnabled
- ? 'panel_statusGatewayRedirectEnabled'
- : 'panel_statusGatewayRedirectDisabled'
- )}
-
-
-
-
+
+
+ ${browser.i18n.getMessage('panel_statusGatewayAddress')}
+ ${gatewayAddress == null ? 'unknown' : gatewayAddress}
+
+
+ ${browser.i18n.getMessage('panel_statusGatewayVersion')}
+ ${gatewayVersion == null ? 'offline' : gatewayVersion}
+
+
+ ${browser.i18n.getMessage('panel_statusSwarmPeers')}
+ ${swarmPeers == null ? 'offline' : swarmPeers}
+
+
+ ${browser.i18n.getMessage('panel_statusGatewayRedirect')}
+
+ ${browser.i18n.getMessage(
+ redirectEnabled
+ ? 'panel_statusGatewayRedirectEnabled'
+ : 'panel_statusGatewayRedirectDisabled'
+ )}
+
+
+
`
}
diff --git a/add-on/src/popup/browser-action/header.js b/add-on/src/popup/browser-action/header.js
new file mode 100644
index 000000000..6127cc742
--- /dev/null
+++ b/add-on/src/popup/browser-action/header.js
@@ -0,0 +1,36 @@
+'use strict'
+/* eslint-env browser, webextensions */
+
+const browser = require('webextension-polyfill')
+const html = require('choo/html')
+
+module.exports = function header ({ isIpfsOnline }) {
+ return html`
+
+
+
+
+
IPFS node
+
+
+
+ ${browser.i18n.getMessage('panel_headerIpfsNodeEmbedded')}
+
+
+
+ ${browser.i18n.getMessage('panel_headerIpfsNodeExternal')}
+
+
+
+
+ `
+}
diff --git a/add-on/src/popup/browser-action/index.html b/add-on/src/popup/browser-action/index.html
index d3d18964d..fb8050224 100644
--- a/add-on/src/popup/browser-action/index.html
+++ b/add-on/src/popup/browser-action/index.html
@@ -1,177 +1,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/add-on/src/popup/browser-action/mdc.switch.css b/add-on/src/popup/browser-action/mdc.switch.css
new file mode 100644
index 000000000..13212b3cb
--- /dev/null
+++ b/add-on/src/popup/browser-action/mdc.switch.css
@@ -0,0 +1,172 @@
+/*!
+ Material Components for the web
+ Copyright (c) 2017 Google Inc.
+ License: Apache-2.0
+*/
+/**
+ * The css property used for elevation. In most cases this should not be changed. It is exposed
+ * as a variable for abstraction / easy use when needing to reference the property directly, for
+ * example in a `will-change` rule.
+ */
+/**
+ * The default duration value for elevation transitions.
+ */
+/**
+ * The default easing value for elevation transitions.
+ */
+/**
+ * Applies the correct CSS rules to an element to give it the elevation specified by $z-value.
+ * The $z-value must be between 0 and 24.
+ * If $color has an alpha channel, it will be ignored and overridden. To increase the opacity of the shadow, use
+ * $opacity-boost.
+ */
+/**
+ * Returns a string that can be used as the value for a `transition` property for elevation.
+ * Calling this function directly is useful in situations where a component needs to transition
+ * more than one property.
+ *
+ * ```scss
+ * .foo {
+ * transition: mdc-elevation-transition-rule(), opacity 100ms ease;
+ * will-change: $mdc-elevation-property, opacity;
+ * }
+ * ```
+ */
+/**
+ * Applies the correct css rules needed to have an element transition between elevations.
+ * This mixin should be applied to elements whose elevation values will change depending on their
+ * context (e.g. when active or disabled).
+ */
+.mdc-switch {
+ display: inline-block;
+ position: relative; }
+ .mdc-switch .mdc-switch__native-control:enabled:not(:checked) ~ .mdc-switch__background::before {
+ background-color: #469ea2; }
+ .mdc-switch .mdc-switch__native-control:enabled:not(:checked) ~ .mdc-switch__background .mdc-switch__knob {
+ background-color: #469ea2; }
+ .mdc-switch .mdc-switch__native-control:enabled:not(:checked) ~ .mdc-switch__background .mdc-switch__knob::before {
+ background-color: #9e9e9e; }
+ .mdc-switch--theme-dark .mdc-switch__native-control:enabled:not(:checked) ~ .mdc-switch__background::before,
+ .mdc-theme--dark .mdc-switch .mdc-switch__native-control:enabled:not(:checked) ~ .mdc-switch__background::before {
+ background-color: #fff; }
+ .mdc-switch--theme-dark .mdc-switch__native-control:enabled:not(:checked) ~ .mdc-switch__background .mdc-switch__knob,
+ .mdc-theme--dark .mdc-switch .mdc-switch__native-control:enabled:not(:checked) ~ .mdc-switch__background .mdc-switch__knob {
+ background-color: #bdbdbd; }
+ .mdc-switch--theme-dark .mdc-switch__native-control:enabled:not(:checked) ~ .mdc-switch__background .mdc-switch__knob::before,
+ .mdc-theme--dark .mdc-switch .mdc-switch__native-control:enabled:not(:checked) ~ .mdc-switch__background .mdc-switch__knob::before {
+ background-color: #f1f1f1; }
+ .mdc-switch .mdc-switch__native-control:enabled:checked ~ .mdc-switch__background::before {
+ /* @alternate */
+ background-color: #469ea2; }
+ .mdc-switch .mdc-switch__native-control:enabled:checked ~ .mdc-switch__background .mdc-switch__knob {
+ /* @alternate */
+ background-color: #469ea2; }
+ .mdc-switch .mdc-switch__native-control:enabled:checked ~ .mdc-switch__background .mdc-switch__knob::before {
+ /* @alternate */
+ background-color: #469ea2; }
+ .mdc-switch__native-control {
+ position: absolute;
+ top: -14px;
+ left: -14px;
+ width: 48px;
+ height: 48px;
+ display: inline-block;
+ margin-top: -3px;
+ -webkit-transition: -webkit-transform 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: -webkit-transform 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: transform 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: transform 90ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ opacity: 0;
+ cursor: pointer;
+ z-index: 2; }
+ .mdc-switch__native-control:checked {
+ -webkit-transform: translateX(14px);
+ transform: translateX(14px); }
+ .mdc-switch__background {
+ display: block;
+ position: relative;
+ width: 34px;
+ height: 14px;
+ border-radius: 7px;
+ outline: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none; }
+ .mdc-switch__background::before {
+ display: block;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ -webkit-transition: opacity 90ms cubic-bezier(0.4, 0, 0.2, 1), background-color 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: opacity 90ms cubic-bezier(0.4, 0, 0.2, 1), background-color 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ border-radius: 7px;
+ opacity: .38;
+ content: ""; }
+ .mdc-switch--theme-dark .mdc-switch__background::before,
+ .mdc-theme--dark .mdc-switch__background::before {
+ opacity: .3; }
+ .mdc-switch__background .mdc-switch__knob {
+ -webkit-box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
+ box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
+ display: block;
+ position: absolute;
+ top: -3px;
+ left: 0;
+ width: 20px;
+ height: 20px;
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transition: background-color 90ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: background-color 90ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: transform 90ms cubic-bezier(0.4, 0, 0.2, 1), background-color 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: transform 90ms cubic-bezier(0.4, 0, 0.2, 1), background-color 90ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ border-radius: 10px;
+ z-index: 1; }
+ .mdc-switch__background .mdc-switch__knob::before {
+ position: absolute;
+ top: -14px;
+ left: -14px;
+ width: 48px;
+ height: 48px;
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ -webkit-transition: background-color 90ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: background-color 90ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: transform 90ms cubic-bezier(0.4, 0, 0.2, 1), background-color 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: transform 90ms cubic-bezier(0.4, 0, 0.2, 1), background-color 90ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ border-radius: 24px;
+ opacity: .2;
+ content: ""; }
+
+.mdc-switch__native-control:checked ~ .mdc-switch__background::before {
+ opacity: .5; }
+
+.mdc-switch__native-control:checked ~ .mdc-switch__background .mdc-switch__knob {
+ -webkit-transform: translateX(14px);
+ transform: translateX(14px);
+ -webkit-transition: background-color 90ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: background-color 90ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: transform 90ms cubic-bezier(0.4, 0, 0.2, 1), background-color 90ms cubic-bezier(0.4, 0, 0.2, 1);
+ transition: transform 90ms cubic-bezier(0.4, 0, 0.2, 1), background-color 90ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 90ms cubic-bezier(0.4, 0, 0.2, 1); }
+ .mdc-switch__native-control:checked ~ .mdc-switch__background .mdc-switch__knob::before {
+ opacity: .15; }
+
+.mdc-switch__native-control:disabled {
+ cursor: initial; }
+
+.mdc-switch__native-control:disabled ~ .mdc-switch__background::before {
+ background-color: #000;
+ opacity: .12; }
+ .mdc-switch--theme-dark .mdc-switch__native-control:disabled ~ .mdc-switch__background::before,
+ .mdc-theme--dark .mdc-switch__native-control:disabled ~ .mdc-switch__background::before {
+ background-color: #fff;
+ opacity: .1; }
+
+.mdc-switch__native-control:disabled ~ .mdc-switch__background .mdc-switch__knob {
+ background-color: #bdbdbd; }
+ .mdc-switch--theme-dark .mdc-switch__native-control:disabled ~ .mdc-switch__background .mdc-switch__knob,
+ .mdc-theme--dark .mdc-switch__native-control:disabled ~ .mdc-switch__background .mdc-switch__knob {
+ background-color: #424242; }
diff --git a/add-on/src/popup/browser-action/nav-item.js b/add-on/src/popup/browser-action/nav-item.js
new file mode 100644
index 000000000..56a35ffc4
--- /dev/null
+++ b/add-on/src/popup/browser-action/nav-item.js
@@ -0,0 +1,17 @@
+'use strict'
+/* eslint-env browser, webextensions */
+
+const html = require('choo/html')
+
+function navItem ({ icon, text, bold, disabled, onClick }) {
+ let className = 'button-reset db w-100 bg-white bg-near-white--hover b--none outline-0--focus pointer pv2 ph3 f5 tl'
+ if (bold) className += ' b'
+
+ return html`
+
+ ${text}
+
+ `
+}
+
+module.exports = navItem
diff --git a/add-on/src/popup/browser-action/operations.js b/add-on/src/popup/browser-action/operations.js
index 1fc0cb771..461baf850 100644
--- a/add-on/src/popup/browser-action/operations.js
+++ b/add-on/src/popup/browser-action/operations.js
@@ -3,6 +3,7 @@
const browser = require('webextension-polyfill')
const html = require('choo/html')
+const navItem = require('./nav-item')
module.exports = function operations ({
isIpfsOnline,
@@ -13,38 +14,32 @@ module.exports = function operations ({
onToggleRedirect
}) {
return html`
-
- ${isIpfsOnline ? html`
-
-
-
${browser.i18n.getMessage('panel_quickUpload')}
-
-
- ` : null}
- ${isIpfsOnline ? html`
-
-
-
${browser.i18n.getMessage('panel_openWebui')}
-
-
- ` : null}
-
-
-
${browser.i18n.getMessage('panel_openPreferences')}
-
-
-
-
-
- ${browser.i18n.getMessage(
- redirectEnabled
- ? 'panel_toggleGatewayRedirectDisable'
- : 'panel_toggleGatewayRedirectEnable'
- )}
-
-
-
-
+
+ ${isIpfsOnline ? (
+ navItem({
+ text: browser.i18n.getMessage('panel_quickUpload'),
+ bold: true,
+ onClick: onQuickUpload
+ })
+ ) : null}
+ ${isIpfsOnline ? (
+ navItem({
+ text: browser.i18n.getMessage('panel_openWebui'),
+ onClick: onOpenWebUi
+ })
+ ) : null}
+ ${navItem({
+ text: browser.i18n.getMessage('panel_openPreferences'),
+ onClick: onOpenPrefs
+ })}
+ ${navItem({
+ text: browser.i18n.getMessage(
+ redirectEnabled
+ ? 'panel_toggleGatewayRedirectDisable'
+ : 'panel_toggleGatewayRedirectEnable'
+ ),
+ onClick: onToggleRedirect
+ })}
`
}
diff --git a/add-on/src/popup/browser-action/page.css b/add-on/src/popup/browser-action/page.css
new file mode 100644
index 000000000..1f94c366e
--- /dev/null
+++ b/add-on/src/popup/browser-action/page.css
@@ -0,0 +1,40 @@
+@import url('node_modules/tachyons/css/tachyons.css');
+@import url('./mdc.switch.css');
+
+.bg-near-white--hover:hover {
+ background-color: #F4F4F4;
+}
+
+.outline-0--focus:focus {
+ outline: 0;
+}
+
+@keyframes heart-beat {
+ 0% {
+ transform: scale(1);
+ }
+ 5% {
+ transform: scale(1.05);
+ filter: drop-shadow(0 0 1.05em rgba(95, 203, 207, 0.5));
+ }
+ 10% {
+ transform: scale(1.025);
+ filter: drop-shadow(0 0 1.025em rgba(95, 203, 207, 0.25));
+ }
+ 15% {
+ transform: scale(1.075);
+ filter: drop-shadow(0 0 1.075em rgba(95, 203, 207, 0.5));
+ }
+ 50% {
+ transform: scale(1);
+ }
+ 100% {
+ transform: scale(1);
+ }
+}
+
+#ipfs-logo.online {
+ animation-name: heart-beat;
+ animation-iteration-count: infinite;
+ animation-duration: 2.5s;
+}
diff --git a/add-on/src/popup/browser-action/page.js b/add-on/src/popup/browser-action/page.js
index 00d57a850..e14fc34d9 100644
--- a/add-on/src/popup/browser-action/page.js
+++ b/add-on/src/popup/browser-action/page.js
@@ -2,10 +2,13 @@
/* eslint-env browser, webextensions */
const html = require('choo/html')
+const header = require('./header')
const contextActions = require('./context-actions')
const operations = require('./operations')
const gatewayStatus = require('./gateway-status')
+require('./page.css')
+
// Render the browser action page:
// Passed current app `state` from the store and `emit`, a function to create
// events, allowing views to signal back to the store that something happened.
@@ -20,12 +23,14 @@ module.exports = function browserActionPage (state, emit) {
const onOpenPrefs = () => emit('openPrefs')
const onToggleRedirect = () => emit('toggleRedirect')
+ const headerProps = Object.assign({}, state)
const contextActionsProps = Object.assign({ onCopyIpfsAddr, onCopyPublicGwAddr, onPin, onUnPin }, state)
const opsProps = Object.assign({ onQuickUpload, onOpenWebUi, onOpenPrefs, onToggleRedirect }, state)
const gwStatusProps = Object.assign({}, state)
return html`
-
+
+ ${header(headerProps)}
${contextActions(contextActionsProps)}
${operations(opsProps)}
${gatewayStatus(gwStatusProps)}
diff --git a/package.json b/package.json
index bcf109488..cb5115dd2 100644
--- a/package.json
+++ b/package.json
@@ -15,11 +15,11 @@
"build:copy": "run-s build:copy:*",
"build:copy:src": "shx mkdir -p add-on/dist && shx cp -R add-on/src/* add-on/dist",
"build:copy:wx-polyfill-lib": "shx cp node_modules/webextension-polyfill/dist/browser-polyfill.min.js add-on/dist/contentScripts/browser-polyfill.min.js",
- "build:js": "browserify -t [ browserify-package-json --global ] add-on/src/background/background.js add-on/src/options/options.js add-on/src/popup/browser-action/index.js add-on/src/popup/quick-upload.js -p [ factor-bundle -o add-on/dist/background/background.js -o add-on/dist/options/options.js -o add-on/dist/popup/browser-action/browser-action.js -o add-on/dist/popup/quick-upload.js ] -o add-on/dist/ipfs-companion-common.js",
+ "build:js": "browserify -t [ browserify-package-json --global ] -t browserify-css add-on/src/background/background.js add-on/src/options/options.js add-on/src/popup/browser-action/index.js add-on/src/popup/quick-upload.js -p [ factor-bundle -o add-on/dist/background/background.js -o add-on/dist/options/options.js -o add-on/dist/popup/browser-action/browser-action.js -o add-on/dist/popup/quick-upload.js ] -o add-on/dist/ipfs-companion-common.js",
"build:minimize-dist": "shx rm -rf add-on/dist/lib",
"build:bundle-extension": "web-ext build -s add-on/ -i src/ -a build/",
"watch": "run-p watch:*",
- "watch:js": "watchify add-on/src/background/background.js add-on/src/options/options.js add-on/src/popup/browser-action/index.js add-on/src/popup/quick-upload.js -p [ factor-bundle -o add-on/dist/background/background.js -o add-on/dist/options/options.js -o add-on/dist/popup/browser-action/browser-action.js -o add-on/dist/popup/quick-upload.js ] -o add-on/dist/ipfs-companion-common.js -v",
+ "watch:js": "watchify -t browserify-css add-on/src/background/background.js add-on/src/options/options.js add-on/src/popup/browser-action/index.js add-on/src/popup/quick-upload.js -p [ factor-bundle -o add-on/dist/background/background.js -o add-on/dist/options/options.js -o add-on/dist/popup/browser-action/browser-action.js -o add-on/dist/popup/quick-upload.js ] -o add-on/dist/ipfs-companion-common.js -v",
"test": "run-s test:*",
"test:functional": "mocha test/functional/**/*.test.js",
"lint": "run-s lint:*",
@@ -38,6 +38,7 @@
"devDependencies": {
"babel-preset-es2017": "6.24.1",
"browserify": "14.5.0",
+ "browserify-css": "0.14.0",
"browserify-package-json": "1.0.1",
"chai": "4.1.2",
"cross-env": "5.1.1",
@@ -71,6 +72,7 @@
"ipfs-api": "17.1.3",
"is-ipfs": "0.3.2",
"lru_map": "0.3.3",
+ "tachyons": "4.9.0",
"webextension-polyfill": "0.1.2"
}
}
diff --git a/yarn.lock b/yarn.lock
index 84b1fe2fe..909818b8b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -370,6 +370,10 @@ asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+atob@~1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773"
+
aws-sign2@~0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
@@ -813,6 +817,19 @@ browserify-cipher@^1.0.0:
browserify-des "^1.0.0"
evp_bytestokey "^1.0.0"
+browserify-css@0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/browserify-css/-/browserify-css-0.14.0.tgz#5ece581aa6f8c9aab262956fd06d57c526c9a334"
+ dependencies:
+ clean-css "^4.1.5"
+ concat-stream "^1.6.0"
+ css "^2.2.1"
+ find-node-modules "^1.0.4"
+ lodash "^4.17.4"
+ mime "^1.3.6"
+ strip-css-comments "^3.0.0"
+ through2 "2.0.x"
+
browserify-des@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
@@ -1151,6 +1168,12 @@ circular-json@^0.3.1:
version "0.3.3"
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
+clean-css@^4.1.5:
+ version "4.1.9"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301"
+ dependencies:
+ source-map "0.5.x"
+
cli-boxes@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
@@ -1503,6 +1526,15 @@ css-what@2.1:
version "2.1.0"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
+css@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc"
+ dependencies:
+ inherits "^2.0.1"
+ source-map "^0.1.38"
+ source-map-resolve "^0.3.0"
+ urix "^0.1.0"
+
currently-unhandled@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@@ -1670,6 +1702,12 @@ des.js@^1.0.0:
inherits "^2.0.1"
minimalistic-assert "^1.0.0"
+detect-file@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63"
+ dependencies:
+ fs-exists-sync "^0.1.0"
+
detect-indent@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
@@ -2401,6 +2439,12 @@ expand-template@^1.0.2:
version "1.1.0"
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.0.tgz#e09efba977bf98f9ee0ed25abd0c692e02aec3fc"
+expand-tilde@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449"
+ dependencies:
+ os-homedir "^1.0.1"
+
extend@^3.0.0, extend@~3.0.0, extend@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
@@ -2529,6 +2573,13 @@ finalhandler@1.0.6:
statuses "~1.3.1"
unpipe "~1.0.0"
+find-node-modules@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-1.0.4.tgz#b6deb3cccb699c87037677bcede2c5f5862b2550"
+ dependencies:
+ findup-sync "0.4.2"
+ merge "^1.2.0"
+
find-root@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
@@ -2546,6 +2597,15 @@ find-up@^2.0.0:
dependencies:
locate-path "^2.0.0"
+findup-sync@0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.2.tgz#a8117d0f73124f5a4546839579fe52d7129fb5e5"
+ dependencies:
+ detect-file "^0.1.0"
+ is-glob "^2.0.1"
+ micromatch "^2.3.7"
+ resolve-dir "^0.1.0"
+
firefox-client@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/firefox-client/-/firefox-client-0.3.0.tgz#3794460f6eb6afcf41376addcbc7462e24a4cd8b"
@@ -2636,6 +2696,10 @@ from@~0:
version "0.1.7"
resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
+fs-exists-sync@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
+
fs-extra@0.26.5:
version "0.26.5"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.5.tgz#53ac74667ca083fd2dc1712c813039ca32d69a7f"
@@ -2828,6 +2892,22 @@ glob@^6.0.1:
once "^1.3.0"
path-is-absolute "^1.0.0"
+global-modules@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d"
+ dependencies:
+ global-prefix "^0.1.4"
+ is-windows "^0.2.0"
+
+global-prefix@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f"
+ dependencies:
+ homedir-polyfill "^1.0.0"
+ ini "^1.3.4"
+ is-windows "^0.2.0"
+ which "^1.2.12"
+
globals@^9.14.0, globals@^9.17.0, globals@^9.18.0:
version "9.18.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
@@ -3036,6 +3116,12 @@ home-or-tmp@^2.0.0:
os-homedir "^1.0.0"
os-tmpdir "^1.0.1"
+homedir-polyfill@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
+ dependencies:
+ parse-passwd "^1.0.0"
+
hosted-git-info@^2.1.4:
version "2.5.0"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
@@ -3158,6 +3244,10 @@ inherits@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ini@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
+
ini@~1.3.0, ini@~1.3.3:
version "1.3.4"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
@@ -3500,6 +3590,10 @@ is-regex@^1.0.4:
dependencies:
has "^1.0.1"
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+
is-relative@^0.1.0:
version "0.1.3"
resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82"
@@ -3530,6 +3624,10 @@ is-utf8@^0.2.0, is-utf8@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+is-windows@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c"
+
is-windows@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9"
@@ -4154,7 +4252,11 @@ meow@^3.3.0:
redent "^1.0.0"
trim-newlines "^1.0.0"
-micromatch@^2.1.5:
+merge@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
+
+micromatch@^2.1.5, micromatch@^2.3.7:
version "2.3.11"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
dependencies:
@@ -4193,6 +4295,10 @@ mime@^1.3.4:
version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
+mime@^1.3.6:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+
mimic-fn@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
@@ -4831,6 +4937,10 @@ parse-json@^4.0.0:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"
+parse-passwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+
parse5@^3.0.1:
version "3.0.3"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
@@ -5593,10 +5703,21 @@ requires-port@1.x.x:
version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+resolve-dir@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e"
+ dependencies:
+ expand-tilde "^1.2.2"
+ global-modules "^0.2.3"
+
resolve-from@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
+resolve-url@~0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+
resolve@1.1.7, resolve@1.1.x:
version "1.1.7"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
@@ -5967,6 +6088,15 @@ socket.io@1.7.3:
socket.io-client "1.7.3"
socket.io-parser "2.3.1"
+source-map-resolve@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761"
+ dependencies:
+ atob "~1.1.0"
+ resolve-url "~0.2.1"
+ source-map-url "~0.3.0"
+ urix "~0.1.0"
+
source-map-support@0.4.6:
version "0.4.6"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.6.tgz#32552aa64b458392a85eab3b0b5ee61527167aeb"
@@ -5985,23 +6115,27 @@ source-map-support@^0.4.15:
dependencies:
source-map "^0.5.6"
+source-map-url@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9"
+
+source-map@0.5.x, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1, source-map@~0.5.3:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+
"source-map@>= 0.1.2", source-map@^0.6.0:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-source-map@^0.4.4, source-map@~0.4.0, source-map@~0.4.2:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
+source-map@^0.1.38, source-map@~0.1.33:
+ version "0.1.43"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
dependencies:
amdefine ">=0.0.4"
-source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1, source-map@~0.5.3:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-
-source-map@~0.1.33:
- version "0.1.43"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
+source-map@^0.4.4, source-map@~0.4.0, source-map@~0.4.2:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
dependencies:
amdefine ">=0.0.4"
@@ -6280,6 +6414,12 @@ strip-bom@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+strip-css-comments@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-css-comments/-/strip-css-comments-3.0.0.tgz#7a5625eff8a2b226cf8947a11254da96e13dae89"
+ dependencies:
+ is-regexp "^1.0.0"
+
strip-eof@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
@@ -6360,6 +6500,10 @@ table@^4.0.1:
slice-ansi "1.0.0"
string-width "^2.1.1"
+tachyons@4.9.0:
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/tachyons/-/tachyons-4.9.0.tgz#2df058ea6b6eb3d2be12d62a69fecb0f6b1e0534"
+
tar-fs@^1.13.0:
version "1.16.0"
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.0.tgz#e877a25acbcc51d8c790da1c57c9cf439817b896"
@@ -6435,6 +6579,13 @@ thenify-all@^1.0.0, thenify-all@^1.6.0:
dependencies:
any-promise "^1.0.0"
+through2@2.0.x, through2@^2.0.0, through2@^2.0.2, through2@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
+ dependencies:
+ readable-stream "^2.1.5"
+ xtend "~4.0.1"
+
through2@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz#dfdd012eb9c700e2323fd334f38ac622ab372da7"
@@ -6449,13 +6600,6 @@ through2@^1.0.0:
readable-stream ">=1.1.13-1 <1.2.0-0"
xtend ">=4.0.0 <4.1.0-0"
-through2@^2.0.0, through2@^2.0.2, through2@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
- dependencies:
- readable-stream "^2.1.5"
- xtend "~4.0.1"
-
through2@~0.4.1:
version "0.4.2"
resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b"
@@ -6710,6 +6854,10 @@ urijs@^1.18.2:
version "1.19.0"
resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.0.tgz#d8aa284d0e7469703a6988ad045c4cbfdf08ada0"
+urix@^0.1.0, urix@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+
url-parse-lax@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"