Merge branch 'master' into master
|
@ -17,6 +17,10 @@ values =
|
|||
production
|
||||
|
||||
[bumpversion:file:app/package.json]
|
||||
search = "version": "{current_version}"
|
||||
replace = "version": "{new_version}"
|
||||
|
||||
[bumpversion:file:ui/package.json]
|
||||
search = "version": "{current_version}"
|
||||
replace = "version": "{new_version}"
|
||||
|
||||
|
|
2
.github/ISSUE_TEMPLATE.md
vendored
|
@ -31,7 +31,7 @@ Tell us what happens instead
|
|||
You can include a screenshot instead of typing it out -->
|
||||
|
||||
<!-- For the daemon, run:
|
||||
curl 'http://localhost:5279/lbryapi' --data '{"method":"version"}'
|
||||
curl 'http://localhost:5279' --data '{"method":"version"}'
|
||||
and include the full output -->
|
||||
|
||||
- LBRY Daemon version:
|
||||
|
|
13
CHANGELOG.md
|
@ -11,17 +11,25 @@ Web UI version numbers should always match the corresponding version of LBRY App
|
|||
* Added a new component, `FormFieldPrice` which is now used in Publish and Settings
|
||||
* Added a theme system to select different themes in Settings.
|
||||
* New Dark theme.
|
||||
* Added wallet backup guide reference
|
||||
*
|
||||
|
||||
### Changed
|
||||
* Updated to daemon [0.15](https://github.com/lbryio/lbry/releases). Most relevant changes for app are improved announcing of content and a fix for the daemon getting stuck running.
|
||||
* Some form field refactoring as we progress towards form sanity.
|
||||
* When an "Open" button is clicked on a show page, if the file fails to open, the app will try to open the file's folder.
|
||||
*
|
||||
* Removed confusing placeholder text from email input
|
||||
* Updated several packages and fixed warnings in build process (all but the [fsevents warning](https://github.com/yarnpkg/yarn/issues/3738), which is rather dramatic)
|
||||
|
||||
### Fixed
|
||||
* Tiles will no longer be blurry on hover (Windows only bug)
|
||||
* Removed placeholder values from price selection form fields, which was causing confusion that these were real values (#426)
|
||||
*
|
||||
* Fixed showing "other currency" help tip in publish form, which was caused due to not "setting" state for price
|
||||
* Now using setState in formFieldPrice
|
||||
* Public page now properly checks for all required fields are filled
|
||||
* Fixed pagination styling for pages > 5 (#416)
|
||||
* Fixed sizing on squat videos (#419)
|
||||
* Support claims no longer show up on Published page (#384)
|
||||
|
||||
### Deprecated
|
||||
*
|
||||
|
@ -29,6 +37,7 @@ Web UI version numbers should always match the corresponding version of LBRY App
|
|||
|
||||
### Removed
|
||||
* Removed the label "Max Purchase Price" from settings page. It was redundant.
|
||||
* Unused old files from previous commit(9c3d633)
|
||||
*
|
||||
|
||||
## [0.14.3] - 2017-08-03
|
||||
|
|
|
@ -32,7 +32,7 @@ const DAEMON_PATH = process.env.LBRY_DAEMON || path.join(__dirname, 'dist', 'lbr
|
|||
let client = jayson.client.http({
|
||||
host: 'localhost',
|
||||
port: 5279,
|
||||
path: '/lbryapi',
|
||||
path: '/',
|
||||
timeout: 1000
|
||||
});
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
"electron-rebuild": "^1.5.11"
|
||||
},
|
||||
"lbrySettings": {
|
||||
"lbrynetDaemonVersion": "0.14.2"
|
||||
}
|
||||
"lbrynetDaemonVersion": "0.15.0",
|
||||
"lbrynetDaemonUrlTemplate": "https://github.com/lbryio/lbry/releases/download/vDAEMONVER/lbrynet-daemon-vDAEMONVER-OSNAME.zip"
|
||||
},
|
||||
"license": "MIT"
|
||||
}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
https://github.com/lbryio/lbry/releases/download/v0.14.2/lbrynet-daemon-v0.14.2-OSNAME.zip
|
|
@ -29,7 +29,10 @@ cd ..
|
|||
|
||||
|
||||
# get daemon and cli executable
|
||||
$daemon_url = (Get-Content build\DAEMON_URL -Raw).replace("OSNAME", "windows")
|
||||
$package_settings = (Get-Content app\package.json -Raw | ConvertFrom-Json).lbrySettings
|
||||
$daemon_ver = $package_settings.lbrynetDaemonVersion
|
||||
$daemon_url_template = $package_settings.lbrynetDaemonUrlTemplate
|
||||
$daemon_url = $daemon_url_template.Replace('OSNAME', 'windows').Replace('DAEMONVER', $daemon_ver)
|
||||
Invoke-WebRequest -Uri $daemon_url -OutFile daemon.zip
|
||||
Expand-Archive daemon.zip -DestinationPath app\dist\
|
||||
dir app\dist\ # verify that daemon binary is there
|
||||
|
|
|
@ -5,6 +5,7 @@ This script should be run locally, not on a build server.
|
|||
import argparse
|
||||
import contextlib
|
||||
import os
|
||||
import json
|
||||
import re
|
||||
import requests
|
||||
import subprocess
|
||||
|
@ -16,7 +17,7 @@ import github
|
|||
import changelog
|
||||
|
||||
ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
||||
DAEMON_URL_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'DAEMON_URL')
|
||||
APP_PACKAGE_JSON_FILE = os.path.join(ROOT, 'app', 'package.json')
|
||||
|
||||
|
||||
def main():
|
||||
|
@ -38,11 +39,11 @@ def main():
|
|||
|
||||
print 'Current version: {}'.format(repo.current_version)
|
||||
print 'New version: {}'.format(repo.new_version)
|
||||
with open(DAEMON_URL_FILE, 'r') as f:
|
||||
daemon_url_template = f.read().strip()
|
||||
daemon_version = re.search('/(?P<version>v[^/]+)', daemon_url_template)
|
||||
print 'Daemon version: {} ({})'.format(
|
||||
daemon_version.group('version'), daemon_url_template)
|
||||
with open(APP_PACKAGE_JSON_FILE, 'r') as f:
|
||||
package_settings = json.load(f)['lbrySettings']
|
||||
daemon_url_template = package_settings['lbrynetDaemonUrlTemplate']
|
||||
daemon_version = package_settings['lbrynetDaemonVersion']
|
||||
print 'Daemon version: {} ({})'.format(daemon_version, daemon_url_template.replace('DAEMONVER', daemon_version))
|
||||
|
||||
if not args.confirm and not confirm():
|
||||
print "Aborting"
|
||||
|
@ -190,18 +191,25 @@ def run_sanity_checks(repo, branch):
|
|||
|
||||
|
||||
def check_daemon_urls():
|
||||
success = True
|
||||
with open(DAEMON_URL_FILE, 'r') as f:
|
||||
daemon_url_template = f.read().strip()
|
||||
if "OSNAME" not in daemon_url_template:
|
||||
print "Daemon URL must include the string 'OSNAME'"
|
||||
return False
|
||||
for osname in ('linux', 'macos', 'windows'):
|
||||
if not check_url(daemon_url_template.replace('OSNAME', osname)):
|
||||
success = False
|
||||
print "Daemon URL for " + osname + " does not work"
|
||||
return success
|
||||
with open(APP_PACKAGE_JSON_FILE, 'r') as f:
|
||||
package_settings = json.load(f)['lbrySettings']
|
||||
|
||||
daemon_url_template = package_settings['lbrynetDaemonUrlTemplate']
|
||||
daemon_version = package_settings['lbrynetDaemonVersion']
|
||||
|
||||
if "OSNAME" not in daemon_url_template:
|
||||
print "Daemon URL must include the string \"OSNAME\""
|
||||
return False
|
||||
elif "DAEMONVER" not in daemon_url_template:
|
||||
print "Daemon URL must include the string \"DAEMONVER\""
|
||||
return False
|
||||
|
||||
for osname in ('linux', 'macos', 'windows'):
|
||||
if not check_url(daemon_url_template.replace('DAEMONVER', daemon_version).replace('OSNAME', osname)):
|
||||
print "Daemon URL for", osname, " does not work"
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def check_url(url):
|
||||
url = url.strip()
|
||||
|
|
|
@ -60,5 +60,6 @@
|
|||
"electron": "^1.7.5",
|
||||
"electron-builder": "^11.7.0",
|
||||
"electron-debug": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"license": "MIT"
|
||||
}
|
||||
|
|
3
ui/dist/index.html
vendored
|
@ -4,7 +4,6 @@
|
|||
<meta name="viewport" content="width=device-width">
|
||||
<title>LBRY</title>
|
||||
|
||||
<link href='https://fonts.googleapis.com/css?family=Raleway:600,300' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400italic,600italic,600' rel='stylesheet' type='text/css'>
|
||||
<link href="./css/all.css" rel="stylesheet" type="text/css" media="screen,print" />
|
||||
<link rel="icon" type="image/png" href="./img/fav/favicon-32x32.png" sizes="32x32">
|
||||
|
@ -19,8 +18,6 @@
|
|||
</head>
|
||||
<body>
|
||||
<div id="canvas"></div>
|
||||
<script src="./js/mediaelement/jquery.js"></script>
|
||||
<script src="./js/mediaelement/mediaelement-and-player.js"></script>
|
||||
<script src="./js/bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
BIN
ui/dist/js/mediaelement/background.png
vendored
Before Width: | Height: | Size: 166 B |
BIN
ui/dist/js/mediaelement/bigplay.fw.png
vendored
Before Width: | Height: | Size: 78 KiB |
BIN
ui/dist/js/mediaelement/bigplay.png
vendored
Before Width: | Height: | Size: 2.9 KiB |
14
ui/dist/js/mediaelement/bigplay.svg
vendored
|
@ -1,14 +0,0 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<svg id="bigplay" viewBox="0 0 100 200" style="background-color:#ffffff00" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
|
||||
x="0px" y="0px" width="100px" height="200px"
|
||||
>
|
||||
<g id="dark">
|
||||
<path id="Polygon" d="M 72.5 49.5 L 38.75 68.9856 L 38.75 30.0144 L 72.5 49.5 Z" fill="#ffffff" opacity="0.75" />
|
||||
<path id="Ellipse" d="M 13 50.5 C 13 29.7891 29.7891 13 50.5 13 C 71.2109 13 88 29.7891 88 50.5 C 88 71.2109 71.2109 88 50.5 88 C 29.7891 88 13 71.2109 13 50.5 Z" stroke="#ffffff" stroke-width="5" fill="none" opacity="0.75"/>
|
||||
</g>
|
||||
<g id="light">
|
||||
<path id="Polygon2" d="M 72.5 149.5 L 38.75 168.9856 L 38.75 130.0144 L 72.5 149.5 Z" fill="#ffffff" opacity="1.0" />
|
||||
<path id="Ellipse2" d="M 13 150.5 C 13 129.7891 29.7891 113 50.5 113 C 71.2109 113 88 129.7891 88 150.5 C 88 171.211 71.2109 188 50.5 188 C 29.7891 188 13 171.211 13 150.5 Z" stroke="#ffffff" stroke-width="5" fill="none" opacity="1.0"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1 KiB |
BIN
ui/dist/js/mediaelement/controls-ted.png
vendored
Before Width: | Height: | Size: 1.5 KiB |
BIN
ui/dist/js/mediaelement/controls-wmp-bg.png
vendored
Before Width: | Height: | Size: 1.9 KiB |
BIN
ui/dist/js/mediaelement/controls-wmp.png
vendored
Before Width: | Height: | Size: 5.4 KiB |
BIN
ui/dist/js/mediaelement/controls.fw.png
vendored
Before Width: | Height: | Size: 79 KiB |
BIN
ui/dist/js/mediaelement/controls.png
vendored
Before Width: | Height: | Size: 1.8 KiB |
1
ui/dist/js/mediaelement/controls.svg
vendored
Before Width: | Height: | Size: 10 KiB |
BIN
ui/dist/js/mediaelement/flashmediaelement-cdn.swf
vendored
BIN
ui/dist/js/mediaelement/flashmediaelement-debug.swf
vendored
BIN
ui/dist/js/mediaelement/flashmediaelement.swf
vendored
9597
ui/dist/js/mediaelement/jquery.js
vendored
BIN
ui/dist/js/mediaelement/jumpforward.png
vendored
Before Width: | Height: | Size: 1.5 KiB |
BIN
ui/dist/js/mediaelement/loading.gif
vendored
Before Width: | Height: | Size: 6.1 KiB |
5816
ui/dist/js/mediaelement/mediaelement-and-player.js
vendored
2063
ui/dist/js/mediaelement/mediaelement.js
vendored
15
ui/dist/js/mediaelement/mediaelement.min.js
vendored
1000
ui/dist/js/mediaelement/mediaelementplayer.css
vendored
3736
ui/dist/js/mediaelement/mediaelementplayer.js
vendored
289
ui/dist/js/mediaelement/mejs-skins.css
vendored
|
@ -1,289 +0,0 @@
|
|||
/* TED player */
|
||||
.mejs-container.mejs-ted {
|
||||
|
||||
}
|
||||
.mejs-ted .mejs-controls {
|
||||
background: #eee;
|
||||
height: 65px;
|
||||
}
|
||||
|
||||
.mejs-ted .mejs-button,
|
||||
.mejs-ted .mejs-time {
|
||||
position: absolute;
|
||||
background: #ddd;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-total {
|
||||
background-color: none;
|
||||
background: url(controls-ted.png) repeat-x 0 -52px;
|
||||
height: 6px;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-buffering {
|
||||
height: 6px;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-loaded {
|
||||
background-color: none;
|
||||
background: url(controls-ted.png) repeat-x 0 -52px;
|
||||
width: 0;
|
||||
height: 6px;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-current {
|
||||
width: 0;
|
||||
height: 6px;
|
||||
background-color: none;
|
||||
background: url(controls-ted.png) repeat-x 0 -59px;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-handle {
|
||||
display: block;
|
||||
margin: 0;
|
||||
width: 14px;
|
||||
height: 21px;
|
||||
top: -7px;
|
||||
border: 0;
|
||||
background: url(controls-ted.png) no-repeat 0 0;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-float {
|
||||
display: none;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-playpause-button {
|
||||
top: 29px;
|
||||
left: 9px;
|
||||
width: 49px;
|
||||
height: 28px;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-playpause-button button {
|
||||
width: 49px;
|
||||
height: 28px;
|
||||
background: url(controls-ted.png) no-repeat -50px -23px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-pause button {
|
||||
background-position: 0 -23px;
|
||||
}
|
||||
|
||||
.mejs-ted .mejs-controls .mejs-fullscreen-button {
|
||||
top: 34px;
|
||||
right: 9px;
|
||||
width: 17px;
|
||||
height: 15px;
|
||||
background : none;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-fullscreen-button button {
|
||||
width: 19px;
|
||||
height: 17px;
|
||||
background: transparent url(controls-ted.png) no-repeat 0 -66px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-unfullscreen button {
|
||||
background: transparent url(controls-ted.png) no-repeat -21px -66px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-volume-button {
|
||||
top: 30px;
|
||||
right: 35px;
|
||||
width: 24px;
|
||||
height: 22px;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-mute button {
|
||||
background: url(controls-ted.png) no-repeat -15px 0;
|
||||
width: 24px;
|
||||
height: 22px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-unmute button {
|
||||
background: url(controls-ted.png) no-repeat -40px 0;
|
||||
width: 24px;
|
||||
height: 22px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-volume-button .mejs-volume-slider {
|
||||
background: #fff;
|
||||
border: solid 1px #aaa;
|
||||
border-width: 1px 1px 0 1px;
|
||||
width: 22px;
|
||||
height: 65px;
|
||||
top: -65px;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-volume-button .mejs-volume-total {
|
||||
background: url(controls-ted.png) repeat-y -41px -66px;
|
||||
left: 8px;
|
||||
width: 6px;
|
||||
height: 50px;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-volume-button .mejs-volume-current {
|
||||
left: 8px;
|
||||
width: 6px;
|
||||
background: url(controls-ted.png) repeat-y -48px -66px;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.mejs-ted .mejs-controls .mejs-volume-button .mejs-volume-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.mejs-ted .mejs-controls .mejs-time span {
|
||||
color: #333;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-currenttime-container {
|
||||
position: absolute;
|
||||
top: 32px;
|
||||
right: 100px;
|
||||
border: solid 1px #999;
|
||||
background: #fff;
|
||||
color: #333;
|
||||
padding-top: 2px;
|
||||
border-radius: 3px;
|
||||
color: #333;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-duration-container {
|
||||
|
||||
position: absolute;
|
||||
top: 32px;
|
||||
right: 65px;
|
||||
border: solid 1px #999;
|
||||
background: #fff;
|
||||
color: #333;
|
||||
padding-top: 2px;
|
||||
border-radius: 3px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.mejs-ted .mejs-controls .mejs-time button{
|
||||
color: #333;
|
||||
}
|
||||
.mejs-ted .mejs-controls .mejs-captions-button {
|
||||
display: none;
|
||||
}
|
||||
/* END: TED player */
|
||||
|
||||
|
||||
/* WMP player */
|
||||
.mejs-container.mejs-wmp {
|
||||
|
||||
}
|
||||
.mejs-wmp .mejs-controls {
|
||||
background: transparent url(controls-wmp-bg.png) center 16px no-repeat;
|
||||
height: 65px;
|
||||
}
|
||||
|
||||
.mejs-wmp .mejs-button,
|
||||
.mejs-wmp .mejs-time {
|
||||
position: absolute;
|
||||
background: transparent;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-total {
|
||||
background-color: transparent;
|
||||
border: solid 1px #ccc;
|
||||
height: 3px;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-buffering {
|
||||
height: 3px;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-loaded {
|
||||
background-color: rgba(255,255,255,0.3);
|
||||
width: 0;
|
||||
height: 3px;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-current {
|
||||
width: 0;
|
||||
height: 1px;
|
||||
background-color: #014CB6;
|
||||
border: solid 1px #7FC9FA;
|
||||
border-width: 1px 0;
|
||||
border-color: #7FC9FA #fff #619FF2 #fff;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-handle {
|
||||
display: block;
|
||||
margin: 0;
|
||||
width: 16px;
|
||||
height: 9px;
|
||||
top: -3px;
|
||||
border: 0;
|
||||
background: url(controls-wmp.png) no-repeat 0 -80px;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-float {
|
||||
display: none;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-playpause-button {
|
||||
top: 10px;
|
||||
left: 50%;
|
||||
margin: 10px 0 0 -20px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-playpause-button button {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
background: url(controls-wmp.png) no-repeat 0 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-pause button {
|
||||
background-position: 0 -40px;
|
||||
}
|
||||
|
||||
.mejs-wmp .mejs-controls .mejs-currenttime-container {
|
||||
position: absolute;
|
||||
top: 25px;
|
||||
left: 50%;
|
||||
margin-left: -93px;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-duration-container {
|
||||
position: absolute;
|
||||
top: 25px;
|
||||
left: 50%;
|
||||
margin-left: -58px;
|
||||
}
|
||||
|
||||
|
||||
.mejs-wmp .mejs-controls .mejs-volume-button {
|
||||
top: 32px;
|
||||
right: 50%;
|
||||
margin-right: -55px;
|
||||
width: 20px;
|
||||
height: 15px;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-volume-button button {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: url(controls-wmp.png) no-repeat -42px -17px;
|
||||
width: 20px;
|
||||
height: 15px;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-unmute button {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: url(controls-wmp.png) no-repeat -42px 0;
|
||||
width: 20px;
|
||||
height: 15px;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-volume-button .mejs-volume-slider {
|
||||
background: rgba(102,102,102,0.6);
|
||||
}
|
||||
|
||||
.mejs-wmp .mejs-controls .mejs-fullscreen-button {
|
||||
top: 32px;
|
||||
right: 50%;
|
||||
margin-right: -82px;
|
||||
width: 15px;
|
||||
height: 14px;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-fullscreen-button button {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: url(controls-wmp.png) no-repeat -63px 0;
|
||||
width: 15px;
|
||||
height: 14px;
|
||||
}
|
||||
.mejs-wmp .mejs-controls .mejs-captions-button {
|
||||
display: none;
|
||||
}
|
||||
/* END: WMP player */
|
||||
|
||||
|
||||
|
BIN
ui/dist/js/mediaelement/silverlightmediaelement.xap
vendored
BIN
ui/dist/js/mediaelement/skipback.png
vendored
Before Width: | Height: | Size: 4.1 KiB |
3
ui/dist/quit.html
vendored
|
@ -3,8 +3,7 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<title>LBRY</title>
|
||||
|
||||
<link href='https://fonts.googleapis.com/css?family=Raleway:600,300' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400italic,600italic,600' rel='stylesheet' type='text/css'>
|
||||
<link href="./css/all.css" rel="stylesheet" type="text/css" media="screen,print" />
|
||||
<link href="./js/mediaelement/mediaelementplayer.css" rel="stylesheet" type="text/css" />
|
||||
|
|
4
ui/dist/upgrade.html
vendored
|
@ -3,11 +3,9 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<title>LBRY</title>
|
||||
|
||||
<link href='https://fonts.googleapis.com/css?family=Raleway:600,300' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400italic,600italic,600' rel='stylesheet' type='text/css'>
|
||||
<link href="./css/all.css" rel="stylesheet" type="text/css" media="screen,print" />
|
||||
<link href="./js/mediaelement/mediaelementplayer.css" rel="stylesheet" type="text/css" />
|
||||
<link rel="icon" type="image/png" href="./img/fav/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="./img/fav/favicon-194x194.png" sizes="194x194">
|
||||
<link rel="icon" type="image/png" href="./img/fav/favicon-96x96.png" sizes="96x96">
|
||||
|
|
4
ui/dist/warning.html
vendored
|
@ -3,11 +3,9 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<title>LBRY</title>
|
||||
|
||||
<link href='https://fonts.googleapis.com/css?family=Raleway:600,300' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400italic,600italic,600' rel='stylesheet' type='text/css'>
|
||||
<link href="./css/all.css" rel="stylesheet" type="text/css" media="screen,print" />
|
||||
<link href="./js/mediaelement/mediaelementplayer.css" rel="stylesheet" type="text/css" />
|
||||
<link rel="icon" type="image/png" href="./img/fav/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="./img/fav/favicon-194x194.png" sizes="194x194">
|
||||
<link rel="icon" type="image/png" href="./img/fav/favicon-96x96.png" sizes="96x96">
|
||||
|
|
|
@ -104,7 +104,7 @@ export function doSendDraftTransaction() {
|
|||
};
|
||||
|
||||
lbry
|
||||
.send_amount_to_address({
|
||||
.wallet_send({
|
||||
amount: draftTx.amount,
|
||||
address: draftTx.address,
|
||||
})
|
||||
|
|
|
@ -72,25 +72,28 @@ export class CreditAmount extends React.PureComponent {
|
|||
};
|
||||
|
||||
static defaultProps = {
|
||||
precision: 1,
|
||||
precision: 2,
|
||||
label: true,
|
||||
showFree: false,
|
||||
look: "indicator",
|
||||
};
|
||||
|
||||
render() {
|
||||
const formattedAmount = formatCredits(
|
||||
this.props.amount,
|
||||
this.props.precision
|
||||
);
|
||||
const minimumRenderableAmount = Math.pow(10, -1 * this.props.precision);
|
||||
const { amount, precision } = this.props;
|
||||
|
||||
let formattedAmount = amount > 0 && amount < minimumRenderableAmount
|
||||
? "<" + minimumRenderableAmount
|
||||
: formatCredits(amount, precision);
|
||||
|
||||
let amountText;
|
||||
if (this.props.showFree && parseFloat(formattedAmount) == 0) {
|
||||
if (this.props.showFree && parseFloat(this.props.amount) === 0) {
|
||||
amountText = __("free");
|
||||
} else if (this.props.label) {
|
||||
amountText =
|
||||
formattedAmount +
|
||||
" " +
|
||||
(parseFloat(formattedAmount) == 1 ? __("credit") : __("credits"));
|
||||
(parseFloat(amount) == 1 ? __("credit") : __("credits"));
|
||||
} else {
|
||||
amountText = formattedAmount;
|
||||
}
|
||||
|
|
|
@ -14,21 +14,23 @@ class FormFieldPrice extends React.PureComponent {
|
|||
};
|
||||
}
|
||||
|
||||
dispatchChange() {
|
||||
handleChange(newValues) {
|
||||
const newState = Object.assign({}, this.state, newValues);
|
||||
this.setState(newState);
|
||||
this.props.onChange({
|
||||
amount: this.state.amount,
|
||||
currency: this.state.currency,
|
||||
amount: newState.amount,
|
||||
currency: newState.currency,
|
||||
});
|
||||
}
|
||||
|
||||
handleFeeAmountChange(event) {
|
||||
this.state.amount = event.target.value ? Number(event.target.value) : null;
|
||||
this.dispatchChange();
|
||||
this.handleChange({
|
||||
amount: event.target.value ? Number(event.target.value) : null,
|
||||
});
|
||||
}
|
||||
|
||||
handleFeeCurrencyChange(event) {
|
||||
this.state.currency = event.target.value;
|
||||
this.dispatchChange();
|
||||
this.handleChange({ currency: event.target.value });
|
||||
}
|
||||
|
||||
render() {
|
||||
|
|
|
@ -17,11 +17,9 @@ const Link = props => {
|
|||
|
||||
const className =
|
||||
(props.className || "") +
|
||||
(!props.className && !props.button ? "button-text" : "") + // Non-button links get the same look as text buttons
|
||||
(props.button
|
||||
? " button-block button-" + props.button + " button-set-item"
|
||||
: "") +
|
||||
(props.disabled ? " disabled" : "");
|
||||
(!props.className && !button ? "button-text" : "") + // Non-button links get the same look as text buttons
|
||||
(button ? " button-block button-" + button + " button-set-item" : "") +
|
||||
(disabled ? " disabled" : "");
|
||||
|
||||
let content;
|
||||
if (children) {
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
import React from "react";
|
||||
import { connect } from "react-redux";
|
||||
import FormFieldPrice from "./view";
|
||||
|
||||
export default connect(null, null)(FormFieldPrice);
|
|
@ -1,71 +0,0 @@
|
|||
import React from "react";
|
||||
import FormField from "component/formField";
|
||||
|
||||
class FormFieldPrice extends React.PureComponent {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
price: {
|
||||
feeAmount: "",
|
||||
feeCurrency: "LBC",
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
handleFeeAmountChange(event) {
|
||||
this.setState({
|
||||
price: {
|
||||
...this.state.price,
|
||||
feeAmount: event.target.value,
|
||||
},
|
||||
});
|
||||
this.props.onChange(event.target.name, this.state.price);
|
||||
}
|
||||
|
||||
handleFeeCurrencyChange(event) {
|
||||
this.setState({
|
||||
price: {
|
||||
...this.state.price,
|
||||
feeCurrency: event.target.value,
|
||||
},
|
||||
});
|
||||
this.props.onChange(event.target.name, this.state.price);
|
||||
}
|
||||
|
||||
render() {
|
||||
const {
|
||||
defaultAmount,
|
||||
defaultCurrency,
|
||||
placeholder,
|
||||
min,
|
||||
step,
|
||||
} = this.props;
|
||||
|
||||
return (
|
||||
<span className={"form-field "}>
|
||||
<FormField
|
||||
type="number"
|
||||
name="amount"
|
||||
min={min}
|
||||
placeholder={placeholder || null}
|
||||
step={step}
|
||||
onChange={event => this.handleFeeAmountChange(event)}
|
||||
defaultValue={defaultAmount}
|
||||
className="form-field__input--inline"
|
||||
/>
|
||||
<FormField
|
||||
type="select"
|
||||
name="currency"
|
||||
onChange={event => this.handleFeeCurrencyChange(event)}
|
||||
defaultValue={defaultCurrency}
|
||||
className="form-field__input--inline"
|
||||
>
|
||||
<option value="LBC">{__("LBRY credits")}</option>
|
||||
<option value="USD">{__("US Dollars")}</option>
|
||||
</FormField>
|
||||
</span>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default FormFieldPrice;
|
|
@ -55,7 +55,7 @@ class ChannelSection extends React.PureComponent {
|
|||
handleCreateChannelClick(event) {
|
||||
if (this.state.newChannelName.length < 5) {
|
||||
this.refs.newChannelName.showError(
|
||||
__("LBRY channel names must be at least 4 characters in length.")
|
||||
__("LBRY channel names must be at least 5 characters in length.")
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -309,8 +309,10 @@ class PublishForm extends React.PureComponent {
|
|||
}
|
||||
|
||||
handleFeeChange(newValue) {
|
||||
this.state.feeAmount = newValue.amount;
|
||||
this.state.feeCurrency = newValue.currency;
|
||||
this.setState({
|
||||
feeAmount: newValue.amount,
|
||||
feeCurrency: newValue.currency,
|
||||
});
|
||||
}
|
||||
|
||||
handleFeePrefChange(feeEnabled) {
|
||||
|
@ -375,46 +377,6 @@ class PublishForm extends React.PureComponent {
|
|||
});
|
||||
}
|
||||
|
||||
handleCreateChannelClick(event) {
|
||||
if (this.state.newChannelName.length < 5) {
|
||||
this.refs.newChannelName.showError(
|
||||
__("LBRY channel names must be at least 4 characters in length.")
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
this.setState({
|
||||
creatingChannel: true,
|
||||
});
|
||||
|
||||
const newChannelName = this.state.newChannelName;
|
||||
lbry
|
||||
.channel_new({
|
||||
channel_name: newChannelName,
|
||||
amount: parseFloat(this.state.newChannelBid),
|
||||
})
|
||||
.then(
|
||||
() => {
|
||||
setTimeout(() => {
|
||||
this.setState({
|
||||
creatingChannel: false,
|
||||
});
|
||||
|
||||
this._updateChannelList(newChannelName);
|
||||
}, 10000);
|
||||
},
|
||||
error => {
|
||||
// TODO: better error handling
|
||||
this.refs.newChannelName.showError(
|
||||
__("Unable to create channel due to an internal error.")
|
||||
);
|
||||
this.setState({
|
||||
creatingChannel: false,
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
getLicense() {
|
||||
switch (this.state.licenseType) {
|
||||
case "copyright":
|
||||
|
@ -562,6 +524,7 @@ class PublishForm extends React.PureComponent {
|
|||
: <div>
|
||||
<div className="card__content">
|
||||
<FormRow
|
||||
ref="meta_title"
|
||||
label={__("Title")}
|
||||
type="text"
|
||||
name="title"
|
||||
|
@ -670,12 +633,7 @@ class PublishForm extends React.PureComponent {
|
|||
onChange={val => this.handleFeeChange(val)}
|
||||
/>
|
||||
</span>
|
||||
{/*
|
||||
&& this.state.feeCurrency.toUpperCase() != "LBC"
|
||||
for some reason, react does not trigger a re-render on currency change (despite trigger a state change), so
|
||||
the above logic cannot be added to the below check
|
||||
*/}
|
||||
{this.state.isFee
|
||||
{this.state.isFee && this.state.feeCurrency.toUpperCase() != "LBC"
|
||||
? <div className="form-field__helper">
|
||||
{__(
|
||||
"All content fees are charged in LBC. For non-LBC payment methods, the number of credits charged will be adjusted based on the value of LBRY credits at the time of purchase."
|
||||
|
@ -828,6 +786,7 @@ class PublishForm extends React.PureComponent {
|
|||
ref="bid"
|
||||
type="number"
|
||||
step="0.01"
|
||||
min="0"
|
||||
label={__("Deposit")}
|
||||
postfix="LBC"
|
||||
onChange={event => {
|
||||
|
@ -836,6 +795,7 @@ class PublishForm extends React.PureComponent {
|
|||
value={this.state.bid}
|
||||
placeholder={this.claim() ? this.topClaimValue() + 10 : 100}
|
||||
helper={lbcInputHelp}
|
||||
min="0"
|
||||
/>
|
||||
</div>
|
||||
: ""}
|
||||
|
@ -847,6 +807,7 @@ class PublishForm extends React.PureComponent {
|
|||
</div>
|
||||
<div className="card__content">
|
||||
<FormRow
|
||||
ref="tosAgree"
|
||||
label={
|
||||
<span>
|
||||
{__("I agree to the")}
|
||||
|
|
|
@ -14,6 +14,7 @@ import FileListPublished from "page/fileListPublished";
|
|||
import ChannelPage from "page/channel";
|
||||
import SearchPage from "page/search";
|
||||
import AuthPage from "page/auth";
|
||||
import BackupPage from "page/backup";
|
||||
|
||||
const route = (page, routesMap) => {
|
||||
const component = routesMap[page];
|
||||
|
@ -26,6 +27,7 @@ const Router = props => {
|
|||
|
||||
return route(currentPage, {
|
||||
auth: <AuthPage params={params} />,
|
||||
backup: <BackupPage params={params} />,
|
||||
channel: <ChannelPage params={params} />,
|
||||
developer: <DeveloperPage params={params} />,
|
||||
discover: <DiscoverPage params={params} />,
|
||||
|
|
|
@ -34,7 +34,7 @@ class UserEmailNew extends React.PureComponent {
|
|||
<FormRow
|
||||
type="text"
|
||||
label="Email"
|
||||
placeholder="scrwvwls@lbry.io"
|
||||
placeholder="youremail@example.org"
|
||||
name="email"
|
||||
value={this.state.email}
|
||||
errorMessage={errorMessage}
|
||||
|
|
|
@ -25,6 +25,7 @@ const WalletSend = props => {
|
|||
label={__("Amount")}
|
||||
postfix={__("LBC")}
|
||||
step="0.01"
|
||||
min="0"
|
||||
type="number"
|
||||
placeholder="1.23"
|
||||
size="10"
|
||||
|
|
|
@ -9,7 +9,7 @@ const menu = remote.require("./menu/main-menu");
|
|||
|
||||
let lbry = {
|
||||
isConnected: false,
|
||||
daemonConnectionString: "http://localhost:5279/lbryapi",
|
||||
daemonConnectionString: "http://localhost:5279",
|
||||
pendingPublishTimeout: 20 * 60 * 1000,
|
||||
defaultClientSettings: {
|
||||
showNsfw: false,
|
||||
|
|
|
@ -35,7 +35,7 @@ window.addEventListener("popstate", (event, param) => {
|
|||
let action;
|
||||
|
||||
if (hash !== "") {
|
||||
const url = hash.split("#")[1];
|
||||
const url = hash.replace(/^#/, "");
|
||||
const { params, scrollY } = event.state || {};
|
||||
const queryString = toQueryString(params);
|
||||
|
||||
|
|
10
ui/js/page/backup/index.js
Normal file
|
@ -0,0 +1,10 @@
|
|||
import React from "react";
|
||||
import { connect } from "react-redux";
|
||||
import { selectDaemonSettings } from "selectors/settings";
|
||||
import BackupPage from "./view";
|
||||
|
||||
const select = state => ({
|
||||
daemonSettings: selectDaemonSettings(state),
|
||||
});
|
||||
|
||||
export default connect(select, null)(BackupPage);
|
55
ui/js/page/backup/view.jsx
Normal file
|
@ -0,0 +1,55 @@
|
|||
import React from "react";
|
||||
import SubHeader from "component/subHeader";
|
||||
import Link from "component/link";
|
||||
|
||||
class BackupPage extends React.PureComponent {
|
||||
render() {
|
||||
const { daemonSettings } = this.props;
|
||||
|
||||
if (!daemonSettings || Object.keys(daemonSettings).length === 0) {
|
||||
return (
|
||||
<main className="main--single-column">
|
||||
<SubHeader />
|
||||
<span className="empty">{__("Failed to load settings.")}</span>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<main className="main--single-column">
|
||||
<SubHeader />
|
||||
<section className="card">
|
||||
<div className="card__title-primary">
|
||||
<h3>{__("Backup Wallet")}</h3>
|
||||
</div>
|
||||
<div className="card__content">
|
||||
<p>
|
||||
{__(
|
||||
"Currently, there is no automatic wallet backup, but it is fairly easy to back up manually."
|
||||
)}
|
||||
</p>
|
||||
<p>
|
||||
{__(
|
||||
"To backup your wallet, make a copy of the folder listed below:"
|
||||
)}
|
||||
</p>
|
||||
<p>
|
||||
<code>
|
||||
{__(`${daemonSettings.lbryum_wallet_dir}`)}
|
||||
</code>
|
||||
</p>
|
||||
<p>
|
||||
<strong>
|
||||
{__(
|
||||
"Access to these files are equivalent to having access to your credits. Keep any copies you make of your wallet in a secure place."
|
||||
)}
|
||||
</strong>
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default BackupPage;
|
|
@ -83,6 +83,7 @@ class ChannelPage extends React.PureComponent {
|
|||
pageClassName="pagination__item"
|
||||
previousClassName="pagination__item pagination__item--previous"
|
||||
nextClassName="pagination__item pagination__item--next"
|
||||
breakClassName="pagination__item pagination__item--break"
|
||||
marginPagesDisplayed={2}
|
||||
onPageChange={e => this.changePage(e.selected + 1)}
|
||||
initialPage={parseInt(page - 1)}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import React from "react";
|
||||
import { connect } from "react-redux";
|
||||
import { doNavigate } from "actions/app";
|
||||
import { selectCurrentPage } from "selectors/app";
|
||||
import { selectBalance } from "selectors/wallet";
|
||||
import WalletPage from "./view";
|
||||
|
@ -9,4 +10,8 @@ const select = state => ({
|
|||
balance: selectBalance(state),
|
||||
});
|
||||
|
||||
export default connect(select, null)(WalletPage);
|
||||
const perform = dispatch => ({
|
||||
navigate: path => dispatch(doNavigate(path)),
|
||||
});
|
||||
|
||||
export default connect(select, perform)(WalletPage);
|
||||
|
|
|
@ -3,11 +3,11 @@ import SubHeader from "component/subHeader";
|
|||
import TransactionList from "component/transactionList";
|
||||
import WalletAddress from "component/walletAddress";
|
||||
import WalletSend from "component/walletSend";
|
||||
|
||||
import Link from "component/link";
|
||||
import { CreditAmount } from "component/common";
|
||||
|
||||
const WalletPage = props => {
|
||||
const { balance, currentPage } = props;
|
||||
const { balance, currentPage, navigate } = props;
|
||||
|
||||
return (
|
||||
<main className="main--single-column">
|
||||
|
@ -19,6 +19,14 @@ const WalletPage = props => {
|
|||
<div className="card__content">
|
||||
<CreditAmount amount={balance} precision={8} />
|
||||
</div>
|
||||
<div className="card__content">
|
||||
<div className="help">
|
||||
<Link
|
||||
onClick={() => navigate("/backup")}
|
||||
label={__("Backup Your Wallet")}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{currentPage === "wallet" ? <TransactionList {...props} /> : ""}
|
||||
{currentPage === "send" ? <WalletSend {...props} /> : ""}
|
||||
|
|
|
@ -50,7 +50,7 @@ reducers[types.FETCH_CLAIM_LIST_MINE_COMPLETED] = function(state, action) {
|
|||
.filter(claimId => Object.keys(abandoningById).indexOf(claimId) === -1)
|
||||
);
|
||||
|
||||
claims.forEach(claim => {
|
||||
claims.filter(claim => claim.category.match(/claim/)).forEach(claim => {
|
||||
byId[claim.claim_id] = claim;
|
||||
|
||||
const pending = Object.values(pendingById).find(pendingClaim => {
|
||||
|
|
|
@ -41,6 +41,8 @@ export const selectPageTitle = createSelector(
|
|||
return __("Send");
|
||||
case "receive":
|
||||
return __("Receive");
|
||||
case "backup":
|
||||
return __("Backup");
|
||||
case "rewards":
|
||||
return __("Rewards");
|
||||
case "start":
|
||||
|
@ -130,11 +132,13 @@ export const selectDownloadComplete = createSelector(
|
|||
);
|
||||
|
||||
export const selectHeaderLinks = createSelector(selectCurrentPage, page => {
|
||||
// This contains intentional fall throughs
|
||||
switch (page) {
|
||||
case "wallet":
|
||||
case "send":
|
||||
case "receive":
|
||||
case "rewards":
|
||||
case "backup":
|
||||
return {
|
||||
wallet: __("Overview"),
|
||||
send: __("Send"),
|
||||
|
|
|
@ -57,6 +57,7 @@ export const selectWunderBarIcon = createSelector(selectCurrentPage, page => {
|
|||
case "wallet":
|
||||
case "send":
|
||||
case "receive":
|
||||
case "backup":
|
||||
return "icon-bank";
|
||||
case "show":
|
||||
return "icon-file";
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
"homepage": "https://github.com/lbryio/lbry-app",
|
||||
"dependencies": {
|
||||
"from2": "^2.3.0",
|
||||
"jshashes": "^1.0.6",
|
||||
"jshashes": "^1.0.7",
|
||||
"localforage": "^1.5.0",
|
||||
"node-sass": "^4.5.3",
|
||||
"rc-progress": "^2.0.6",
|
||||
|
@ -49,7 +49,7 @@
|
|||
"babel": "^6.5.2",
|
||||
"babel-cli": "^6.24.1",
|
||||
"babel-core": "^6.18.2",
|
||||
"babel-loader": "^6.4.1",
|
||||
"babel-loader": "^7.1.1",
|
||||
"babel-plugin-react-require": "^3.0.0",
|
||||
"babel-polyfill": "^6.20.0",
|
||||
"babel-preset-es2015": "^6.24.1",
|
||||
|
|
|
@ -26,6 +26,10 @@
|
|||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.pagination__item--break {
|
||||
padding: 0 $spacing-vertical * 2 / 3;
|
||||
}
|
||||
|
||||
.pagination__item--selected {
|
||||
color: white;
|
||||
background: $color-primary;
|
||||
|
|
|
@ -20,9 +20,10 @@ video {
|
|||
position: relative;
|
||||
video {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
&.video--hidden {
|
||||
height: $height-video-embedded;
|
||||
|
|
|
@ -2,6 +2,8 @@ const path = require("path");
|
|||
const webpack = require("webpack")
|
||||
const appPath = path.resolve(__dirname, "js");
|
||||
|
||||
process.traceDeprecation = true;
|
||||
|
||||
const PATHS = {
|
||||
app: path.join(__dirname, "app"),
|
||||
dist: path.join(__dirname, "dist")
|
||||
|
|
75
ui/yarn.lock
|
@ -455,14 +455,13 @@ babel-helpers@^6.24.1:
|
|||
babel-runtime "^6.22.0"
|
||||
babel-template "^6.24.1"
|
||||
|
||||
babel-loader@^6.4.1:
|
||||
version "6.4.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca"
|
||||
babel-loader@^7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.1.tgz#b87134c8b12e3e4c2a94e0546085bc680a2b8488"
|
||||
dependencies:
|
||||
find-cache-dir "^0.1.1"
|
||||
loader-utils "^0.2.16"
|
||||
find-cache-dir "^1.0.0"
|
||||
loader-utils "^1.0.2"
|
||||
mkdirp "^0.5.1"
|
||||
object-assign "^4.0.1"
|
||||
|
||||
babel-messages@^6.23.0:
|
||||
version "6.23.0"
|
||||
|
@ -2333,14 +2332,6 @@ faye-websocket@~0.11.0:
|
|||
dependencies:
|
||||
websocket-driver ">=0.5.1"
|
||||
|
||||
fbjs@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.2.1.tgz#622061630a43e11f845017b9044aaa648ed3f731"
|
||||
dependencies:
|
||||
core-js "^1.0.0"
|
||||
promise "^7.0.3"
|
||||
whatwg-fetch "^0.9.0"
|
||||
|
||||
fbjs@^0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.6.1.tgz#9636b7705f5ba9684d44b72f78321254afc860f7"
|
||||
|
@ -2411,6 +2402,14 @@ find-cache-dir@^0.1.1:
|
|||
mkdirp "^0.5.1"
|
||||
pkg-dir "^1.0.0"
|
||||
|
||||
find-cache-dir@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
|
||||
dependencies:
|
||||
commondir "^1.0.1"
|
||||
make-dir "^1.0.0"
|
||||
pkg-dir "^2.0.0"
|
||||
|
||||
find-parent-dir@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54"
|
||||
|
@ -2422,7 +2421,7 @@ find-up@^1.0.0:
|
|||
path-exists "^2.0.0"
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
find-up@^2.0.0:
|
||||
find-up@^2.0.0, find-up@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
|
||||
dependencies:
|
||||
|
@ -3204,9 +3203,9 @@ jsesc@~0.5.0:
|
|||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
|
||||
|
||||
jshashes@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/jshashes/-/jshashes-1.0.6.tgz#b04eb4ae8f9987b2d3ce00a6337c120543949bfd"
|
||||
jshashes@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/jshashes/-/jshashes-1.0.7.tgz#bed8c97a0e9632fd0513916f55f76dd5486be59f"
|
||||
|
||||
json-loader@^0.5.4:
|
||||
version "0.5.4"
|
||||
|
@ -3571,10 +3570,6 @@ lodash.unset@^4.5.2:
|
|||
version "4.5.2"
|
||||
resolved "https://registry.yarnpkg.com/lodash.unset/-/lodash.unset-4.5.2.tgz#370d1d3e85b72a7e1b0cdf2d272121306f23e4ed"
|
||||
|
||||
lodash@4.12.0:
|
||||
version "4.12.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.12.0.tgz#2bd6dc46a040f59e686c972ed21d93dc59053258"
|
||||
|
||||
lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.4:
|
||||
version "4.17.4"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
|
||||
|
@ -3624,6 +3619,12 @@ macaddress@^0.2.8:
|
|||
version "0.2.8"
|
||||
resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
|
||||
|
||||
make-dir@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978"
|
||||
dependencies:
|
||||
pify "^2.3.0"
|
||||
|
||||
map-obj@^1.0.0, map-obj@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
|
||||
|
@ -4345,7 +4346,7 @@ performance-now@^0.2.0:
|
|||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
|
||||
|
||||
pify@^2.0.0:
|
||||
pify@^2.0.0, pify@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
|
||||
|
@ -4369,6 +4370,12 @@ pkg-dir@^1.0.0:
|
|||
dependencies:
|
||||
find-up "^1.0.0"
|
||||
|
||||
pkg-dir@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
|
||||
dependencies:
|
||||
find-up "^2.1.0"
|
||||
|
||||
pluralize@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
|
||||
|
@ -4783,10 +4790,6 @@ rc@^1.1.7:
|
|||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
react-addons-create-fragment@^0.14.7:
|
||||
version "0.14.8"
|
||||
resolved "https://registry.yarnpkg.com/react-addons-create-fragment/-/react-addons-create-fragment-0.14.8.tgz#e83240d1cba49249690fcc6f148710baa11d2b7a"
|
||||
|
||||
react-addons-create-fragment@^15.0.0:
|
||||
version "15.6.0"
|
||||
resolved "https://registry.yarnpkg.com/react-addons-create-fragment/-/react-addons-create-fragment-15.6.0.tgz#af91a22b1fb095dd01f1afba43bfd0ef589d8b20"
|
||||
|
@ -4799,10 +4802,6 @@ react-dom-factories@^1.0.0:
|
|||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/react-dom-factories/-/react-dom-factories-1.0.0.tgz#f43c05e5051b304f33251618d5bc859b29e46b6d"
|
||||
|
||||
react-dom@^0.14.7:
|
||||
version "0.14.9"
|
||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.14.9.tgz#05064a3dcf0fb1880a3b2bfc9d58c55d8d9f6293"
|
||||
|
||||
react-dom@^15.4.0:
|
||||
version "15.6.1"
|
||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.1.tgz#2cb0ed4191038e53c209eb3a79a23e2a4cf99470"
|
||||
|
@ -4860,13 +4859,7 @@ react-simplemde-editor@^3.6.11:
|
|||
react "^0.14.2"
|
||||
simplemde "^1.11.2"
|
||||
|
||||
react-tap-event-plugin@^0.2.2:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/react-tap-event-plugin/-/react-tap-event-plugin-0.2.2.tgz#4f6f257851654f6c2b1c213a1d3ff21b353ae4e1"
|
||||
dependencies:
|
||||
fbjs "^0.2.1"
|
||||
|
||||
react@^0.14.2, react@^0.14.7:
|
||||
react@^0.14.2:
|
||||
version "0.14.9"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-0.14.9.tgz#9110a6497c49d44ba1c0edd317aec29c2e0d91d1"
|
||||
dependencies:
|
||||
|
@ -6136,12 +6129,6 @@ which@1, which@^1.0.5, which@^1.2.10, which@^1.2.9:
|
|||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
why-did-you-update@0.0.8:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/why-did-you-update/-/why-did-you-update-0.0.8.tgz#389d97dd6c147e1edbc9f5d5470d44d985c8ae38"
|
||||
dependencies:
|
||||
lodash "4.12.0"
|
||||
|
||||
wide-align@^1.1.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
|
||||
|
|