mirror of
https://github.com/anticensority/runet-censorship-bypass.git
synced 2024-11-27 20:03:45 +03:00
Add popup implemented in Inferno
This commit is contained in:
parent
20d11fb5d6
commit
94bbb92764
|
@ -3,594 +3,22 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Настройки</title>
|
||||
<style>
|
||||
:root {
|
||||
--ribbon-color: #4169e1;
|
||||
--blue-bg: dodgerblue;
|
||||
--default-grey: #bfbfbf;
|
||||
--cr-options-headline: #d3d3d3;
|
||||
--cr-icon-selected: #d7d7d7;
|
||||
--cr-popup-border: #bababa;
|
||||
--cr-grey-panel: #f2f2f2;
|
||||
max-width: 28em;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
a, a:visited {
|
||||
color: var(--ribbon-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
label {
|
||||
user-select: none;
|
||||
}
|
||||
div, section, header, ul, ol {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 0.3em
|
||||
}
|
||||
ul, ol {
|
||||
list-style-type: none;
|
||||
}
|
||||
:root:not(.if-options-page) ul,
|
||||
:root:not(.if-options-page) ol {
|
||||
/*Here is a flex bug:
|
||||
() antizapret [update] (i)
|
||||
() anticensority very_long_foobar [update] (i) <- Sic!
|
||||
Also: options page is wider, check it too.
|
||||
But: fixed 100% width conflicts with margins/paddings.
|
||||
So: use only when needed and avoid margins.
|
||||
FYI: setting left-margin fixes problem too, but margins are not wanted.
|
||||
Fix this problem below:
|
||||
*/
|
||||
display: inline-block;
|
||||
min-width: 100%;
|
||||
}
|
||||
:root.if-options-page ul,
|
||||
:root.if-options-page ol,
|
||||
#list-of-notifiers {
|
||||
margin-left: 0.4em;
|
||||
}
|
||||
li, .nowrap {
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
word-break: keep-all;
|
||||
}
|
||||
li, li > * {
|
||||
vertical-align: middle;
|
||||
}
|
||||
input[type="radio"], input[type="checkbox"] {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
input[type="radio"], label {
|
||||
cursor: pointer;
|
||||
}
|
||||
hr {
|
||||
border: none;
|
||||
border-top: 1px solid var(--cr-popup-border);
|
||||
margin: 0 0 0.6em 0;
|
||||
padding: 0;
|
||||
}
|
||||
em {
|
||||
font-style: normal;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* COMMON 1 */
|
||||
|
||||
.hor-padded {
|
||||
padding-left: 1.4em;
|
||||
padding-right: 1.4em;
|
||||
}
|
||||
.horizontal-list,
|
||||
.horizontal-list li {
|
||||
line-height: 100%;
|
||||
}
|
||||
.horizontal-list li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* NOT CONTROLLED */
|
||||
|
||||
.if-not-controlled {
|
||||
display: none;
|
||||
|
||||
background-color: red;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
|
||||
padding-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
|
||||
border-bottom: 1px solid var(--default-grey);
|
||||
}
|
||||
:root.if-options-page .if-not-controlled {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
.if-not-controlled a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* MINI VS FULL */
|
||||
|
||||
:root:not(.if-version-mini) .only-for-mini-version {
|
||||
display: none;
|
||||
}
|
||||
:root.if-version-mini .only-for-full-version {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* OPTIONS PAGE */
|
||||
|
||||
:root:not(.if-options-page) .only-for-options-page {
|
||||
display: none;
|
||||
}
|
||||
:root.if-options-page .hidden-for-options-page {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* ACCORDION (OR TABBED STATEFUL UI) */
|
||||
|
||||
.off {
|
||||
display: none;
|
||||
}
|
||||
|
||||
section[data-for] {
|
||||
padding: 0.6em 0 1em;
|
||||
}
|
||||
section[data-for] li label {
|
||||
display: inline-block; /* Needed for ::first-letter below. */
|
||||
}
|
||||
section[data-for] li label::first-letter {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
:root.if-options-page section[data-for] {
|
||||
padding-bottom: 0.6em;
|
||||
}
|
||||
:root.if-options-page section[data-for]:not(:last-child),
|
||||
.underlined {
|
||||
border-bottom: 1px solid var(--cr-options-headline);
|
||||
}
|
||||
|
||||
/* HIDE starts. */
|
||||
:root:not(.if-options-page) #acc-pac:not(:checked) ~ .main-nav section[data-for="acc-pac"],
|
||||
:root:not(.if-options-page) #acc-exc:not(:checked) ~ .main-nav section[data-for="acc-exc"],
|
||||
:root:not(.if-options-page) #acc-own-mods:not(:checked) ~ .main-nav section[data-for="acc-own-mods"],
|
||||
:root:not(.if-options-page) #acc-mods:not(:checked) ~ .main-nav section[data-for="acc-mods"],
|
||||
:root:not(.if-options-page) #acc-ntf:not(:checked) ~ .main-nav section[data-for="acc-ntf"],
|
||||
/* One button shared between two sections: */
|
||||
:root:not(.if-options-page) #acc-own-mods:not(:checked) + #acc-mods:not(:checked) ~ .main-nav #apply-mods-section
|
||||
{
|
||||
/* Hide, but preclude width resizes. */
|
||||
height: 0px !important;
|
||||
line-height: 0px !important;
|
||||
padding-top: 0 !important;
|
||||
padding-bottom: 0 !important;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
border: none !important;
|
||||
display: block;
|
||||
visibility: hidden;
|
||||
transform: scaleY(0) !important;
|
||||
}
|
||||
:root:not(.if-options-page) #acc-pac:not(:checked) ~ .main-nav section[data-for="acc-pac"] *,
|
||||
:root:not(.if-options-page) #acc-exc:not(:checked) ~ .main-nav section[data-for="acc-exc"] *,
|
||||
:root:not(.if-options-page) #acc-own-mods:not(:checked) ~ .main-nav section[data-for="acc-own-mods"] *,
|
||||
:root:not(.if-options-page) #acc-mods:not(:checked) ~ .main-nav section[data-for="acc-mods"] *,
|
||||
:root:not(.if-options-page) #acc-ntf:not(:checked) ~ .main-nav section[data-for="acc-ntf"] *,
|
||||
/* One button shared between two sections: */
|
||||
:root:not(.if-options-page) #acc-own-mods:not(:checked) + #acc-mods:not(:checked) ~ .main-nav #apply-mods-section *
|
||||
{
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
/* HIDE ends. */
|
||||
|
||||
.nav-labels {
|
||||
background-color: var(--cr-grey-panel);
|
||||
text-align: center;
|
||||
}
|
||||
.nav-labels li label {
|
||||
display: inline-block;
|
||||
|
||||
border: 1px solid var(--ribbon-color);
|
||||
border-radius: 0.2em;
|
||||
|
||||
background-color: white;
|
||||
color: var(--ribbon-color);
|
||||
|
||||
padding: 0.2em 0.3em 0.3em 0.2em;
|
||||
line-height: 0.8em;
|
||||
margin: 0.1em 0;
|
||||
}
|
||||
.nav-labels li label:hover {
|
||||
background-color: var(--blue-bg);
|
||||
color: white;
|
||||
|
||||
/*
|
||||
border-color: white;
|
||||
border-style: dotted;*/
|
||||
}
|
||||
|
||||
/* LABELS starts. */
|
||||
#acc-pac:checked ~ .nav-labels label[for="acc-pac"]:not(:hover),
|
||||
#acc-exc:checked ~ .nav-labels label[for="acc-exc"]:not(:hover),
|
||||
#acc-own-mods:checked ~ .nav-labels label[for="acc-own-mods"]:not(:hover),
|
||||
#acc-mods:checked ~ .nav-labels label[for="acc-mods"]:not(:hover),
|
||||
#acc-ntf:checked ~ .nav-labels label[for="acc-ntf"]:not(:hover)
|
||||
{
|
||||
background-color: var(--blue-bg);
|
||||
color: white;
|
||||
}
|
||||
/* ★★★★★ */
|
||||
.nav-labels label:before {
|
||||
content: '★';
|
||||
padding-right: 0.1em;
|
||||
visibility: hidden;
|
||||
}
|
||||
.nav-labels li label:hover:before,
|
||||
#acc-pac:checked ~ .nav-labels label[for="acc-pac"]:before,
|
||||
#acc-exc:checked ~ .nav-labels label[for="acc-exc"]:before,
|
||||
#acc-own-mods:checked ~ .nav-labels label[for="acc-own-mods"]:before,
|
||||
#acc-mods:checked ~ .nav-labels label[for="acc-mods"]:before,
|
||||
#acc-ntf:checked ~ .nav-labels label[for="acc-ntf"]:before
|
||||
{
|
||||
visibility: initial;
|
||||
}
|
||||
/* LABELS ends. */
|
||||
|
||||
/* COMMON 2 */
|
||||
|
||||
/* INFO SIGNS */
|
||||
|
||||
input:disabled + .label-container label {
|
||||
color: var(--default-grey);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.info-row {
|
||||
position: relative;
|
||||
}
|
||||
.right-bottom-icon {
|
||||
margin-left: 0.1em;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
.info-url, .info-url:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Source: https://jsfiddle.net/greypants/zgCb7/ */
|
||||
.desc {
|
||||
text-align: right;
|
||||
color: var(--ribbon-color);
|
||||
cursor: help;
|
||||
padding-left: 0.3em;
|
||||
}
|
||||
.tooltip {
|
||||
display: none;
|
||||
position: absolute;
|
||||
white-space: initial;
|
||||
word-break: initial;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
right: 1em;
|
||||
z-index: 1;
|
||||
background-color: var(--ribbon-color);
|
||||
padding: 1em;
|
||||
color: white;
|
||||
text-align: initial;
|
||||
}
|
||||
.desc:hover .tooltip {
|
||||
display: block;
|
||||
}
|
||||
.tooltip a,
|
||||
.tooltip em {
|
||||
color: white;
|
||||
}
|
||||
.desc .tooltip:after {
|
||||
border-left: solid transparent 0.5em;
|
||||
border-bottom: solid var(--ribbon-color) 0.5em;
|
||||
position: absolute;
|
||||
top: -0.5em;
|
||||
content: "";
|
||||
width: 0;
|
||||
right: 0;
|
||||
height: 0;
|
||||
}
|
||||
/* This bridges the gap so you can mouse into the tooltip without it disappearing. */
|
||||
.desc .tooltip:before {
|
||||
position: absolute;
|
||||
top: -1em;
|
||||
content: "";
|
||||
display: block;
|
||||
height: 1.2em;
|
||||
left: 75%;
|
||||
width: calc(25% + 0.6em);
|
||||
}
|
||||
|
||||
/* TAB_1: PAC PROVIDER */
|
||||
|
||||
.update-button {
|
||||
visibility: hidden;
|
||||
}
|
||||
input:checked ~ .label-container .update-button {
|
||||
visibility: inherit;
|
||||
}
|
||||
label[for="onlyOwnSites"] + .update-button {
|
||||
display: none;
|
||||
}
|
||||
#none:checked ~ .label-container label {
|
||||
color: red;
|
||||
}
|
||||
|
||||
|
||||
#update-message {
|
||||
white-space: nowrap;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
/* TAB_2: PAC MODS */
|
||||
|
||||
#mods-custom-proxy-string-raw ~ textarea {
|
||||
width: 100%;
|
||||
max-width: 38.5em; /* ~418px, layout breaks if more */
|
||||
height: 7em;
|
||||
margin-top: 0.3em;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
#mods-custom-proxy-string-raw:not(:checked) ~ textarea {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* TAB_3: EXCEPTIONS */
|
||||
|
||||
/* EXC-EDITOR starts. */
|
||||
#exc-address-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
#exc-address-container > a {
|
||||
border-bottom: 1px solid transparent;
|
||||
margin-left: 0.2em;
|
||||
}
|
||||
#exc-address {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
--exc-hieght: 1.6em;
|
||||
font-size: 1em;
|
||||
border-bottom: 1px solid var(--ribbon-color) !important;
|
||||
}
|
||||
input#exc-editor {
|
||||
border: none;
|
||||
width: 100%;
|
||||
background: inherit;
|
||||
/* The two below align '.' (dot) vertically. */
|
||||
max-height: var(--exc-hieght) !important;
|
||||
min-height: var(--exc-hieght) !important;
|
||||
}
|
||||
#exc-radio {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
[name="if-proxy-this-site"]:checked + label {
|
||||
font-weight: bold;
|
||||
}
|
||||
#exc-address.if-yes {
|
||||
background-color: lightgreen;
|
||||
}
|
||||
#exc-address.if-no {
|
||||
background-color: pink;
|
||||
}
|
||||
|
||||
option.if-proxied {
|
||||
color: var(--ribbon-color);
|
||||
}
|
||||
option:not(.if-proxied) {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* EXC-EDITOR ends. */
|
||||
#exc-mods {
|
||||
padding-top: 1em;
|
||||
}
|
||||
#exc-mods input#mods-if-mind-exceptions:not(:checked) + .label-container label {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* CONTROL RAW = BUTTON + LINK */
|
||||
|
||||
.hor-flex {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
}
|
||||
.control-row {
|
||||
margin: 1em 0 1em 0;
|
||||
}
|
||||
|
||||
.hor-flex input:not([type="button"]) {
|
||||
align-self: flex-end;
|
||||
}
|
||||
.label-container {
|
||||
flex-grow: 9;
|
||||
padding-left: 0.3em;
|
||||
}
|
||||
|
||||
/* STATUS */
|
||||
|
||||
#status-row {
|
||||
padding: 0 0.3em 1em;
|
||||
}
|
||||
#status {
|
||||
display: inline-block;
|
||||
}
|
||||
.other-version {
|
||||
font-size: 1.7em;
|
||||
color: var(--ribbon-color);
|
||||
margin-left: 0.1em;
|
||||
}
|
||||
.other-version:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.full-line-height,
|
||||
.full-line-height * {
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "emoji";
|
||||
src:url("../lib/fonts/emoji.woff") format("woff");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
.emoji {
|
||||
font-family: "emoji";
|
||||
}
|
||||
|
||||
svg.icon {
|
||||
display: inline-block;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
stroke-width: 0;
|
||||
stroke: currentColor;
|
||||
fill: currentColor;
|
||||
}
|
||||
</style>
|
||||
<style><!-- Don't delete this mount point! --></style>
|
||||
</head>
|
||||
<body>
|
||||
<section class="if-not-controlled hor-padded" id="which-extension"></section>
|
||||
|
||||
<input type="radio" name="accordion" class="off" id="acc-pac" checked/>
|
||||
<input type="radio" name="accordion" class="off" id="acc-exc"/>
|
||||
<input type="radio" name="accordion" class="off" id="acc-own-mods"/>
|
||||
<input type="radio" name="accordion" class="off" id="acc-mods"/>
|
||||
<input type="radio" name="accordion" class="off" id="acc-ntf"/>
|
||||
|
||||
<nav class="nav-labels hidden-for-options-page">
|
||||
<ul class='horizontal-list'>
|
||||
<li><label for="acc-pac" class="nav-label">PAC-скрипт</label></li>
|
||||
<li><label for="acc-exc" class="nav-label">Исключения</label></li>
|
||||
<li><label for="acc-own-mods" class="nav-label">Свои прокси</label></li>
|
||||
<li><label for="acc-mods" class="nav-label">Модификаторы</label></li>
|
||||
<li><label for="acc-ntf" class="nav-label">Уведомления</label></li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</nav>
|
||||
|
||||
<nav class="hor-padded main-nav">
|
||||
|
||||
<section data-for="acc-pac">
|
||||
|
||||
<header class="only-for-options-page">PAC-скрипт:</header>
|
||||
<ul id="list-of-providers">
|
||||
<li class="info-row hor-flex"><input type="radio" name="pacProvider" id="none" checked> <div class="label-container"><label for="none">Отключить</label></div></li>
|
||||
</ul>
|
||||
<div id="update-message" class="hor-flex" style="align-items: center">
|
||||
<div>Обновлялись: <span class="update-date">...</span></div>
|
||||
<div class="full-line-height">
|
||||
<a class="only-for-mini-version other-version emoji" href="https://rebrand.ly/ac-versions"
|
||||
title="Полная версия">🏋</a>
|
||||
<a class="only-for-full-version other-version emoji" href="https://rebrand.ly/ac-versions"
|
||||
title="Версия для слабых машин">🐌</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="only-for-options-page nowrap underlined">
|
||||
Редактор исключений доступен толко для <a href="chrome://newtab">вкладок</a>.
|
||||
</section>
|
||||
<section data-for="acc-exc" class="hidden-for-options-page">
|
||||
|
||||
<section class="exc-editor-section" style="padding-bottom: 1em;">
|
||||
<div>Проксировать указанный сайт?</div>
|
||||
<div id="exc-address-container">
|
||||
<div id="exc-address">
|
||||
<span>*.</span><input placeholder="navalny.com" list="exc-list" name="browser" id="exc-editor" style=""/>
|
||||
</div>
|
||||
<!--a href class="emoji">⇄</a-->
|
||||
<a href="../exceptions/index.html" title="импорт/экспорт"><svg
|
||||
class="icon"
|
||||
><use xlink:href="#icon-import-export"></use></svg>
|
||||
</a>
|
||||
</div>
|
||||
<datalist id="exc-list"></datalist>
|
||||
<ol class="horizontal-list" id="exc-radio">
|
||||
<li><input id="this-auto" type="radio" checked name="if-proxy-this-site"/>
|
||||
<label for="this-auto"><!--span class="emoji">🔄(looks fat)</span--><svg
|
||||
class="icon"
|
||||
style="position: relative; top: 0.15em;"><use xlink:href="#icon-loop-round"></use></svg> авто</label>
|
||||
</li>
|
||||
<li><input id="this-yes" type="radio" name="if-proxy-this-site"/> <label for="this-yes">✔ да</label></li>
|
||||
<li><input id="this-no" type="radio" name="if-proxy-this-site"/> <label for="this-no">✘ нет</label></li>
|
||||
</ol>
|
||||
</section>
|
||||
<ul id="exc-mods"></ul>
|
||||
|
||||
</section>
|
||||
|
||||
<section data-for="acc-own-mods">
|
||||
<ul id="own-mods"></ul>
|
||||
</section>
|
||||
|
||||
<section data-for="acc-mods">
|
||||
<ul id="pac-mods"></ul>
|
||||
</section>
|
||||
|
||||
<section id="apply-mods-section" class="control-row hor-flex" style="margin-top: 0.2em">
|
||||
<input type="button" value="Применить" id="apply-mods" disabled/>
|
||||
<a href id="reset-mods">К изначальным!</a>
|
||||
</section>
|
||||
|
||||
<section data-for="acc-ntf">
|
||||
<header>Я <span style="color: #f93a17">❤</span> yведомления:</header>
|
||||
<ul id="list-of-notifiers"></ul>
|
||||
|
||||
</section>
|
||||
|
||||
</nav>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div class="hor-padded">
|
||||
<section id="status-row">
|
||||
<div id="status" style="will-change: contents">Загрузка...</div>
|
||||
</section>
|
||||
|
||||
<footer class="control-row hor-flex nowrap">
|
||||
<input type="button" value="Готово" class="close-button">
|
||||
<a href="../troubleshoot/index.html">
|
||||
Проблемы?
|
||||
</a>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="./index.js"></script>
|
||||
<script src="../lib/keep-links-clickable.js"></script>
|
||||
<!-- ICONS -->
|
||||
<div id="app-root"></div>
|
||||
<svg style="display: none" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<symbol id="icon-info" viewBox="0 0 100 100">
|
||||
<symbol id="iconInfo" viewBox="0 0 100 100">
|
||||
<title>info</title>
|
||||
<circle shape-rendering="geometricPrecision" fill="none" stroke="currentColor" stroke-width="7" cx="50" cy="50" r="45"/>
|
||||
<path shape-rendering="crispEdges" d="M 55,40 V 80 H 45 V 40 z m 0,-20 V 35 H 45 V 20 Z"/>
|
||||
</symbol>
|
||||
<symbol id="icon-loop-round" viewBox="0 0 32 32">
|
||||
<symbol id="iconLoopRound" viewBox="0 0 32 32">
|
||||
<title>loop-round</title>
|
||||
<path d="M27.802 5.197c-2.925-3.194-7.13-5.197-11.803-5.197-8.837 0-16 7.163-16 16h3c0-7.18 5.82-13 13-13 3.844 0 7.298 1.669 9.678 4.322l-4.678 4.678h11v-11l-4.198 4.197z"/>
|
||||
<path d="M29 16c0 7.18-5.82 13-13 13-3.844 0-7.298-1.669-9.678-4.322l4.678-4.678h-11v11l4.197-4.197c2.925 3.194 7.13 5.197 11.803 5.197 8.837 0 16-7.163 16-16h-3z"/>
|
||||
</symbol>
|
||||
<symbol id="icon-import-export" viewBox="0 0 32 32">
|
||||
<symbol id="iconImportExport" viewBox="0 0 32 32">
|
||||
<title>import-export</title>
|
||||
<g transform="rotate(0 16 16)">
|
||||
<path d="M7 22 h 25 v 4 h -25 v 5 l -7-7 7-7 v5 z"/>
|
||||
|
@ -604,5 +32,7 @@
|
|||
<path d="M22 10 h-22 v-4 h 22 v -5 l 7 7 -7 7 z"></path-->
|
||||
</symbol>
|
||||
</svg>
|
||||
<script src="./dist/bundle.min.js"></script>
|
||||
<script src="../lib/keep-links-clickable.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
'use strict';
|
||||
|
||||
const loaderUtils = require('loader-utils');
|
||||
const concat = require('concat-stream');
|
||||
|
||||
module.exports = function(content) {
|
||||
|
||||
const cb = this.async();
|
||||
const Readable = require('stream').Readable;
|
||||
const src = new Readable();
|
||||
src._read = function noop() {};
|
||||
src.push(content);
|
||||
src.push(null);
|
||||
|
||||
const opts = loaderUtils.getOptions(this) || {};
|
||||
const readme = Object.keys(opts).reduce((readable, moduleName) => {
|
||||
|
||||
const newStream = require(moduleName)(/* No filename. */);
|
||||
return readable.pipe(newStream);
|
||||
|
||||
}, src);
|
||||
readme.pipe(concat ((buf) => cb(null, buf.toString()) ));
|
||||
|
||||
};
|
|
@ -0,0 +1,11 @@
|
|||
<!DOCTYPE html>
|
||||
<html style="display: none; will-change: contents, display">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Настройки</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app-mount-point">old info</div>
|
||||
<script src="./dist/bundle.min.js"></script>
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
|
@ -0,0 +1,608 @@
|
|||
<!DOCTYPE html>
|
||||
<html style="display: none; will-change: contents, display">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Настройки</title>
|
||||
<style>
|
||||
:root {
|
||||
--ribbon-color: #4169e1;
|
||||
--blue-bg: dodgerblue;
|
||||
--default-grey: #bfbfbf;
|
||||
--cr-options-headline: #d3d3d3;
|
||||
--cr-icon-selected: #d7d7d7;
|
||||
--cr-popup-border: #bababa;
|
||||
--cr-grey-panel: #f2f2f2;
|
||||
max-width: 28em;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
a, a:visited {
|
||||
color: var(--ribbon-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
label {
|
||||
user-select: none;
|
||||
}
|
||||
div, section, header, ul, ol {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 0.3em
|
||||
}
|
||||
ul, ol {
|
||||
list-style-type: none;
|
||||
}
|
||||
:root:not(.if-options-page) ul,
|
||||
:root:not(.if-options-page) ol {
|
||||
/*Here is a flex bug:
|
||||
() antizapret [update] (i)
|
||||
() anticensority very_long_foobar [update] (i) <- Sic!
|
||||
Also: options page is wider, check it too.
|
||||
But: fixed 100% width conflicts with margins/paddings.
|
||||
So: use only when needed and avoid margins.
|
||||
FYI: setting left-margin fixes problem too, but margins are not wanted.
|
||||
Fix this problem below:
|
||||
*/
|
||||
display: inline-block;
|
||||
min-width: 100%;
|
||||
}
|
||||
:root.if-options-page ul,
|
||||
:root.if-options-page ol,
|
||||
#list-of-notifiers {
|
||||
margin-left: 0.4em;
|
||||
}
|
||||
li, .nowrap {
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
word-break: keep-all;
|
||||
}
|
||||
li, li > * {
|
||||
vertical-align: middle;
|
||||
}
|
||||
input[type="radio"], input[type="checkbox"] {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
input[type="radio"], label {
|
||||
cursor: pointer;
|
||||
}
|
||||
hr {
|
||||
border: none;
|
||||
border-top: 1px solid var(--cr-popup-border);
|
||||
margin: 0 0 0.6em 0;
|
||||
padding: 0;
|
||||
}
|
||||
em {
|
||||
font-style: normal;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* COMMON 1 */
|
||||
|
||||
.hor-padded {
|
||||
padding-left: 1.4em;
|
||||
padding-right: 1.4em;
|
||||
}
|
||||
.horizontal-list,
|
||||
.horizontal-list li {
|
||||
line-height: 100%;
|
||||
}
|
||||
.horizontal-list li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* NOT CONTROLLED */
|
||||
|
||||
.if-not-controlled {
|
||||
display: none;
|
||||
|
||||
background-color: red;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
|
||||
padding-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
|
||||
border-bottom: 1px solid var(--default-grey);
|
||||
}
|
||||
:root.if-options-page .if-not-controlled {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
.if-not-controlled a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* MINI VS FULL */
|
||||
|
||||
:root:not(.if-version-mini) .only-for-mini-version {
|
||||
display: none;
|
||||
}
|
||||
:root.if-version-mini .only-for-full-version {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* OPTIONS PAGE */
|
||||
|
||||
:root:not(.if-options-page) .only-for-options-page {
|
||||
display: none;
|
||||
}
|
||||
:root.if-options-page .hidden-for-options-page {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* ACCORDION (OR TABBED STATEFUL UI) */
|
||||
|
||||
.off {
|
||||
display: none;
|
||||
}
|
||||
|
||||
section[data-for] {
|
||||
padding: 0.6em 0 1em;
|
||||
}
|
||||
section[data-for] li label {
|
||||
display: inline-block; /* Needed for ::first-letter below. */
|
||||
}
|
||||
section[data-for] li label::first-letter {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
:root.if-options-page section[data-for] {
|
||||
padding-bottom: 0.6em;
|
||||
}
|
||||
:root.if-options-page section[data-for]:not(:last-child),
|
||||
.underlined {
|
||||
border-bottom: 1px solid var(--cr-options-headline);
|
||||
}
|
||||
|
||||
/* HIDE starts. */
|
||||
:root:not(.if-options-page) #acc-pac:not(:checked) ~ .main-nav section[data-for="acc-pac"],
|
||||
:root:not(.if-options-page) #acc-exc:not(:checked) ~ .main-nav section[data-for="acc-exc"],
|
||||
:root:not(.if-options-page) #acc-own-mods:not(:checked) ~ .main-nav section[data-for="acc-own-mods"],
|
||||
:root:not(.if-options-page) #acc-mods:not(:checked) ~ .main-nav section[data-for="acc-mods"],
|
||||
:root:not(.if-options-page) #acc-ntf:not(:checked) ~ .main-nav section[data-for="acc-ntf"],
|
||||
/* One button shared between two sections: */
|
||||
:root:not(.if-options-page) #acc-own-mods:not(:checked) + #acc-mods:not(:checked) ~ .main-nav #apply-mods-section
|
||||
{
|
||||
/* Hide, but preclude width resizes. */
|
||||
height: 0px !important;
|
||||
line-height: 0px !important;
|
||||
padding-top: 0 !important;
|
||||
padding-bottom: 0 !important;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
border: none !important;
|
||||
display: block;
|
||||
visibility: hidden;
|
||||
transform: scaleY(0) !important;
|
||||
}
|
||||
:root:not(.if-options-page) #acc-pac:not(:checked) ~ .main-nav section[data-for="acc-pac"] *,
|
||||
:root:not(.if-options-page) #acc-exc:not(:checked) ~ .main-nav section[data-for="acc-exc"] *,
|
||||
:root:not(.if-options-page) #acc-own-mods:not(:checked) ~ .main-nav section[data-for="acc-own-mods"] *,
|
||||
:root:not(.if-options-page) #acc-mods:not(:checked) ~ .main-nav section[data-for="acc-mods"] *,
|
||||
:root:not(.if-options-page) #acc-ntf:not(:checked) ~ .main-nav section[data-for="acc-ntf"] *,
|
||||
/* One button shared between two sections: */
|
||||
:root:not(.if-options-page) #acc-own-mods:not(:checked) + #acc-mods:not(:checked) ~ .main-nav #apply-mods-section *
|
||||
{
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
/* HIDE ends. */
|
||||
|
||||
.nav-labels {
|
||||
background-color: var(--cr-grey-panel);
|
||||
text-align: center;
|
||||
}
|
||||
.nav-labels li label {
|
||||
display: inline-block;
|
||||
|
||||
border: 1px solid var(--ribbon-color);
|
||||
border-radius: 0.2em;
|
||||
|
||||
background-color: white;
|
||||
color: var(--ribbon-color);
|
||||
|
||||
padding: 0.2em 0.3em 0.3em 0.2em;
|
||||
line-height: 0.8em;
|
||||
margin: 0.1em 0;
|
||||
}
|
||||
.nav-labels li label:hover {
|
||||
background-color: var(--blue-bg);
|
||||
color: white;
|
||||
|
||||
/*
|
||||
border-color: white;
|
||||
border-style: dotted;*/
|
||||
}
|
||||
|
||||
/* LABELS starts. */
|
||||
#acc-pac:checked ~ .nav-labels label[for="acc-pac"]:not(:hover),
|
||||
#acc-exc:checked ~ .nav-labels label[for="acc-exc"]:not(:hover),
|
||||
#acc-own-mods:checked ~ .nav-labels label[for="acc-own-mods"]:not(:hover),
|
||||
#acc-mods:checked ~ .nav-labels label[for="acc-mods"]:not(:hover),
|
||||
#acc-ntf:checked ~ .nav-labels label[for="acc-ntf"]:not(:hover)
|
||||
{
|
||||
background-color: var(--blue-bg);
|
||||
color: white;
|
||||
}
|
||||
/* ★★★★★ */
|
||||
.nav-labels label:before {
|
||||
content: '★';
|
||||
padding-right: 0.1em;
|
||||
visibility: hidden;
|
||||
}
|
||||
.nav-labels li label:hover:before,
|
||||
#acc-pac:checked ~ .nav-labels label[for="acc-pac"]:before,
|
||||
#acc-exc:checked ~ .nav-labels label[for="acc-exc"]:before,
|
||||
#acc-own-mods:checked ~ .nav-labels label[for="acc-own-mods"]:before,
|
||||
#acc-mods:checked ~ .nav-labels label[for="acc-mods"]:before,
|
||||
#acc-ntf:checked ~ .nav-labels label[for="acc-ntf"]:before
|
||||
{
|
||||
visibility: initial;
|
||||
}
|
||||
/* LABELS ends. */
|
||||
|
||||
/* COMMON 2 */
|
||||
|
||||
/* INFO SIGNS */
|
||||
|
||||
input:disabled + .label-container label {
|
||||
color: var(--default-grey);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.info-row {
|
||||
position: relative;
|
||||
}
|
||||
.right-bottom-icon {
|
||||
margin-left: 0.1em;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
.info-url, .info-url:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Source: https://jsfiddle.net/greypants/zgCb7/ */
|
||||
.desc {
|
||||
text-align: right;
|
||||
color: var(--ribbon-color);
|
||||
cursor: help;
|
||||
padding-left: 0.3em;
|
||||
}
|
||||
.tooltip {
|
||||
display: none;
|
||||
position: absolute;
|
||||
white-space: initial;
|
||||
word-break: initial;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
right: 1em;
|
||||
z-index: 1;
|
||||
background-color: var(--ribbon-color);
|
||||
padding: 1em;
|
||||
color: white;
|
||||
text-align: initial;
|
||||
}
|
||||
.desc:hover .tooltip {
|
||||
display: block;
|
||||
}
|
||||
.tooltip a,
|
||||
.tooltip em {
|
||||
color: white;
|
||||
}
|
||||
.desc .tooltip:after {
|
||||
border-left: solid transparent 0.5em;
|
||||
border-bottom: solid var(--ribbon-color) 0.5em;
|
||||
position: absolute;
|
||||
top: -0.5em;
|
||||
content: "";
|
||||
width: 0;
|
||||
right: 0;
|
||||
height: 0;
|
||||
}
|
||||
/* This bridges the gap so you can mouse into the tooltip without it disappearing. */
|
||||
.desc .tooltip:before {
|
||||
position: absolute;
|
||||
top: -1em;
|
||||
content: "";
|
||||
display: block;
|
||||
height: 1.2em;
|
||||
left: 75%;
|
||||
width: calc(25% + 0.6em);
|
||||
}
|
||||
|
||||
/* TAB_1: PAC PROVIDER */
|
||||
|
||||
.update-button {
|
||||
visibility: hidden;
|
||||
}
|
||||
input:checked ~ .label-container .update-button {
|
||||
visibility: inherit;
|
||||
}
|
||||
label[for="onlyOwnSites"] + .update-button {
|
||||
display: none;
|
||||
}
|
||||
#none:checked ~ .label-container label {
|
||||
color: red;
|
||||
}
|
||||
|
||||
|
||||
#update-message {
|
||||
white-space: nowrap;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
/* TAB_2: PAC MODS */
|
||||
|
||||
#mods-custom-proxy-string-raw ~ textarea {
|
||||
width: 100%;
|
||||
max-width: 38.5em; /* ~418px, layout breaks if more */
|
||||
height: 7em;
|
||||
margin-top: 0.3em;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
#mods-custom-proxy-string-raw:not(:checked) ~ textarea {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* TAB_3: EXCEPTIONS */
|
||||
|
||||
/* EXC-EDITOR starts. */
|
||||
#exc-address-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
#exc-address-container > a {
|
||||
border-bottom: 1px solid transparent;
|
||||
margin-left: 0.2em;
|
||||
}
|
||||
#exc-address {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
--exc-hieght: 1.6em;
|
||||
font-size: 1em;
|
||||
border-bottom: 1px solid var(--ribbon-color) !important;
|
||||
}
|
||||
input#exc-editor {
|
||||
border: none;
|
||||
width: 100%;
|
||||
background: inherit;
|
||||
/* The two below align '.' (dot) vertically. */
|
||||
max-height: var(--exc-hieght) !important;
|
||||
min-height: var(--exc-hieght) !important;
|
||||
}
|
||||
#exc-radio {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
[name="if-proxy-this-site"]:checked + label {
|
||||
font-weight: bold;
|
||||
}
|
||||
#exc-address.if-yes {
|
||||
background-color: lightgreen;
|
||||
}
|
||||
#exc-address.if-no {
|
||||
background-color: pink;
|
||||
}
|
||||
|
||||
option.if-proxied {
|
||||
color: var(--ribbon-color);
|
||||
}
|
||||
option:not(.if-proxied) {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* EXC-EDITOR ends. */
|
||||
#exc-mods {
|
||||
padding-top: 1em;
|
||||
}
|
||||
#exc-mods input#mods-if-mind-exceptions:not(:checked) + .label-container label {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* CONTROL RAW = BUTTON + LINK */
|
||||
|
||||
.hor-flex {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
}
|
||||
.control-row {
|
||||
margin: 1em 0 1em 0;
|
||||
}
|
||||
|
||||
.hor-flex input:not([type="button"]) {
|
||||
align-self: flex-end;
|
||||
}
|
||||
.label-container {
|
||||
flex-grow: 9;
|
||||
padding-left: 0.3em;
|
||||
}
|
||||
|
||||
/* STATUS */
|
||||
|
||||
#status-row {
|
||||
padding: 0 0.3em 1em;
|
||||
}
|
||||
#status {
|
||||
display: inline-block;
|
||||
}
|
||||
.other-version {
|
||||
font-size: 1.7em;
|
||||
color: var(--ribbon-color);
|
||||
margin-left: 0.1em;
|
||||
}
|
||||
.other-version:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.full-line-height,
|
||||
.full-line-height * {
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "emoji";
|
||||
src:url("../lib/fonts/emoji.woff") format("woff");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
.emoji {
|
||||
font-family: "emoji";
|
||||
}
|
||||
|
||||
svg.icon {
|
||||
display: inline-block;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
stroke-width: 0;
|
||||
stroke: currentColor;
|
||||
fill: currentColor;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<section class="if-not-controlled hor-padded" id="which-extension"></section>
|
||||
|
||||
<input type="radio" name="accordion" class="off" id="acc-pac" checked/>
|
||||
<input type="radio" name="accordion" class="off" id="acc-exc"/>
|
||||
<input type="radio" name="accordion" class="off" id="acc-own-mods"/>
|
||||
<input type="radio" name="accordion" class="off" id="acc-mods"/>
|
||||
<input type="radio" name="accordion" class="off" id="acc-ntf"/>
|
||||
|
||||
<nav class="nav-labels hidden-for-options-page">
|
||||
<ul class='horizontal-list'>
|
||||
<li><label for="acc-pac" class="nav-label">PAC-скрипт</label></li>
|
||||
<li><label for="acc-exc" class="nav-label">Исключения</label></li>
|
||||
<li><label for="acc-own-mods" class="nav-label">Свои прокси</label></li>
|
||||
<li><label for="acc-mods" class="nav-label">Модификаторы</label></li>
|
||||
<li><label for="acc-ntf" class="nav-label">Уведомления</label></li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</nav>
|
||||
|
||||
<nav class="hor-padded main-nav">
|
||||
|
||||
<section data-for="acc-pac">
|
||||
|
||||
<header class="only-for-options-page">PAC-скрипт:</header>
|
||||
<ul id="list-of-providers">
|
||||
<li class="info-row hor-flex"><input type="radio" name="pacProvider" id="none" checked> <div class="label-container"><label for="none">Отключить</label></div></li>
|
||||
</ul>
|
||||
<div id="update-message" class="hor-flex" style="align-items: center">
|
||||
<div>Обновлялись: <span class="update-date">...</span></div>
|
||||
<div class="full-line-height">
|
||||
<a class="only-for-mini-version other-version emoji" href="https://rebrand.ly/ac-versions"
|
||||
title="Полная версия">🏋</a>
|
||||
<a class="only-for-full-version other-version emoji" href="https://rebrand.ly/ac-versions"
|
||||
title="Версия для слабых машин">🐌</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="only-for-options-page nowrap underlined">
|
||||
Редактор исключений доступен толко для <a href="chrome://newtab">вкладок</a>.
|
||||
</section>
|
||||
<section data-for="acc-exc" class="hidden-for-options-page">
|
||||
|
||||
<section class="exc-editor-section" style="padding-bottom: 1em;">
|
||||
<div>Проксировать указанный сайт?</div>
|
||||
<div id="exc-address-container">
|
||||
<div id="exc-address">
|
||||
<span>*.</span><input placeholder="navalny.com" list="exc-list" name="browser" id="exc-editor" style=""/>
|
||||
</div>
|
||||
<!--a href class="emoji">⇄</a-->
|
||||
<a href="../exceptions/index.html" title="импорт/экспорт"><svg
|
||||
class="icon"
|
||||
><use xlink:href="#icon-import-export"></use></svg>
|
||||
</a>
|
||||
</div>
|
||||
<datalist id="exc-list"></datalist>
|
||||
<ol class="horizontal-list" id="exc-radio">
|
||||
<li><input id="this-auto" type="radio" checked name="if-proxy-this-site"/>
|
||||
<label for="this-auto"><!--span class="emoji">🔄(looks fat)</span--><svg
|
||||
class="icon"
|
||||
style="position: relative; top: 0.15em;"><use xlink:href="#icon-loop-round"></use></svg> авто</label>
|
||||
</li>
|
||||
<li><input id="this-yes" type="radio" name="if-proxy-this-site"/> <label for="this-yes">✔ да</label></li>
|
||||
<li><input id="this-no" type="radio" name="if-proxy-this-site"/> <label for="this-no">✘ нет</label></li>
|
||||
</ol>
|
||||
</section>
|
||||
<ul id="exc-mods"></ul>
|
||||
|
||||
</section>
|
||||
|
||||
<section data-for="acc-own-mods">
|
||||
<ul id="own-mods"></ul>
|
||||
</section>
|
||||
|
||||
<section data-for="acc-mods">
|
||||
<ul id="pac-mods"></ul>
|
||||
</section>
|
||||
|
||||
<section id="apply-mods-section" class="control-row hor-flex" style="margin-top: 0.2em">
|
||||
<input type="button" value="Применить" id="apply-mods" disabled/>
|
||||
<a href id="reset-mods">К изначальным!</a>
|
||||
</section>
|
||||
|
||||
<section data-for="acc-ntf">
|
||||
<header>Я <span style="color: #f93a17">❤</span> yведомления:</header>
|
||||
<ul id="list-of-notifiers"></ul>
|
||||
|
||||
</section>
|
||||
|
||||
</nav>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div class="hor-padded">
|
||||
<section id="status-row">
|
||||
<div id="status" style="will-change: contents">Загрузка...</div>
|
||||
</section>
|
||||
|
||||
<footer class="control-row hor-flex nowrap">
|
||||
<input type="button" value="Готово" class="close-button">
|
||||
<a href="../troubleshoot/index.html">
|
||||
Проблемы?
|
||||
</a>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="./index.js"></script>
|
||||
<script src="../lib/keep-links-clickable.js"></script>
|
||||
<!-- ICONS -->
|
||||
<svg style="display: none" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<symbol id="icon-info" viewBox="0 0 100 100">
|
||||
<title>info</title>
|
||||
<circle shape-rendering="geometricPrecision" fill="none" stroke="currentColor" stroke-width="7" cx="50" cy="50" r="45"/>
|
||||
<path shape-rendering="crispEdges" d="M 55,40 V 80 H 45 V 40 z m 0,-20 V 35 H 45 V 20 Z"/>
|
||||
</symbol>
|
||||
<symbol id="icon-loop-round" viewBox="0 0 32 32">
|
||||
<title>loop-round</title>
|
||||
<path d="M27.802 5.197c-2.925-3.194-7.13-5.197-11.803-5.197-8.837 0-16 7.163-16 16h3c0-7.18 5.82-13 13-13 3.844 0 7.298 1.669 9.678 4.322l-4.678 4.678h11v-11l-4.198 4.197z"/>
|
||||
<path d="M29 16c0 7.18-5.82 13-13 13-3.844 0-7.298-1.669-9.678-4.322l4.678-4.678h-11v11l4.197-4.197c2.925 3.194 7.13 5.197 11.803 5.197 8.837 0 16-7.163 16-16h-3z"/>
|
||||
</symbol>
|
||||
<symbol id="icon-import-export" viewBox="0 0 32 32">
|
||||
<title>import-export</title>
|
||||
<g transform="rotate(0 16 16)">
|
||||
<path d="M7 22 h 25 v 4 h -25 v 5 l -7-7 7-7 v5 z"/>
|
||||
<path d="M25 10 h-25 v-4 h 25 v -5 l 7 7 -7 7 z"/>
|
||||
</g>
|
||||
|
||||
<!-- With bars on peaks.
|
||||
<path d="M30 0h2v16h-2v-16z"></path>
|
||||
<path d="M0 16h2v16h-2v-16z"></path>
|
||||
<path d="M10 22 h 22 v 4 h -22 v 5 l -7-7 7-7 v5 z"></path>
|
||||
<path d="M22 10 h-22 v-4 h 22 v -5 l 7 7 -7 7 z"></path-->
|
||||
</symbol>
|
||||
</svg>
|
||||
</body>
|
||||
</html>
|
|
@ -6,19 +6,36 @@
|
|||
"devDependencies": {
|
||||
"babel-cli": "^6.24.1",
|
||||
"babel-loader": "^7.0.0",
|
||||
"babel-plugin-dynamic-import-webpack": "^1.0.1",
|
||||
"babel-preset-flow": "^6.23.0",
|
||||
"babel-preset-react": "^6.24.1",
|
||||
"babili-webpack-plugin": "^0.0.11",
|
||||
"bel": "^4.6.1",
|
||||
"concat-stream": "^1.6.0",
|
||||
"csjs": "^1.1.0",
|
||||
"csjs-inject": "^1.0.1",
|
||||
"csjs-injectify": "^1.0.1",
|
||||
"flow-bin": "^0.45.0",
|
||||
"react": "^15.5.4",
|
||||
"react-dom": "^15.5.4",
|
||||
"inferno": "^3.1.2",
|
||||
"inferno-component": "^3.1.2",
|
||||
"inferno-create-element": "^3.1.2",
|
||||
"inferno-redux": "^3.1.2",
|
||||
"microcomponent": "^3.1.1",
|
||||
"nanomorph": "^4.0.5",
|
||||
"nanomount": "^1.0.1",
|
||||
"sheetify": "^6.0.2",
|
||||
"transform-loader": "^0.2.4",
|
||||
"webpack": "^2.5.1"
|
||||
},
|
||||
"scripts": {
|
||||
"check": "flow status",
|
||||
"build:prod": "webpack --define process.env.NODE_ENV=\"'production'\" --env=prod",
|
||||
"build:dev:nocomp": "webpack --define process.env.NODE_ENV=\"'production'\" --env=dev",
|
||||
"build:dev": "webpack --debug --devtool source-map --output-pathinfo --env=dev",
|
||||
"build": "npm run build:dev"
|
||||
"build:prod": "webpack --define process.env.NODE_ENV=\"'production'\" --env=prod",
|
||||
"build:dev:nocomp": "NODE_ENV=development webpack --define process.env.NODE_ENV=\"'development'\" --env=dev",
|
||||
"build:dev": "NODE_ENV=development webpack --debug --define process.env.NODE_ENV=\"'development'\" --output-pathinfo --env=dev",
|
||||
"gulp": "cd .. && npm run gulp",
|
||||
"start": "npm run build:dev && npm run gulp"
|
||||
},
|
||||
"dependencies": {
|
||||
"babel-plugin-inferno": "^3.2.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
import Inferno from 'inferno';
|
||||
import Component from 'inferno-component';
|
||||
import createElement from 'inferno-create-element';
|
||||
|
||||
import getNotControlledWarning from './NotControlledWarning';
|
||||
import getTabPannel from './TabPannel';
|
||||
import getPacChooser from './PacChooser';
|
||||
|
||||
import getFooter from './Footer';
|
||||
|
||||
export default function getApp(theState) {
|
||||
|
||||
return class App extends Component {
|
||||
|
||||
render(props) {
|
||||
|
||||
return createElement('div', {
|
||||
onClick: () => console.log('DDDDDCLICK'),
|
||||
onDick: () => console.log('DICK!'),
|
||||
ondick: () => console.log('dddDICK!'),
|
||||
}, [
|
||||
createElement(getNotControlledWarning(theState), props),
|
||||
createElement(getTabPannel(theState), {
|
||||
tabs:[
|
||||
{
|
||||
label: 'PAC-скрипт',
|
||||
content: createElement(getPacChooser(theState), props),
|
||||
},
|
||||
{
|
||||
label: 'Исключения',
|
||||
content: "Exceptions().render(this.props)",
|
||||
},
|
||||
{
|
||||
label: 'Свои прокси',
|
||||
content: "OwnProxies().render(this.props)",
|
||||
},
|
||||
{
|
||||
label: 'Модификаторы',
|
||||
content: "Modificators().render(this.props)",
|
||||
},
|
||||
{
|
||||
label: 'Уведомления',
|
||||
content: "Notifications().render(this.props)",
|
||||
}
|
||||
]
|
||||
}),
|
||||
createElement(getFooter(theState), props),
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};;
|
|
@ -0,0 +1,40 @@
|
|||
import Inferno from 'inferno';
|
||||
import css from 'csjs-inject';
|
||||
import Component from 'inferno-component';
|
||||
|
||||
export default function getFooter() {
|
||||
|
||||
const scopedCss = css`
|
||||
|
||||
#statusRow {
|
||||
padding: 0 0.3em 1em;
|
||||
}
|
||||
#status {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.controlRow {
|
||||
margin: 1em 0 1em 0;
|
||||
}
|
||||
`;
|
||||
|
||||
return function (props) {
|
||||
|
||||
return (
|
||||
<div class="horPadded">
|
||||
<section id="statusRow">
|
||||
<div id="status" style="will-change: contents">{props.status}</div>
|
||||
</section>
|
||||
|
||||
<footer class={scopedCss.controlRow + ' horFlex nowrap'}>
|
||||
<input type="button" value="Готово" onClick={() => window.close()} />
|
||||
<a href="../troubleshoot/index.html">
|
||||
Проблемы?
|
||||
</a>
|
||||
</footer>
|
||||
</div>
|
||||
);
|
||||
|
||||
};
|
||||
|
||||
};
|
|
@ -0,0 +1,133 @@
|
|||
import Inferno from 'inferno';
|
||||
import Component from 'inferno-component';
|
||||
import css from 'csjs-inject';
|
||||
|
||||
export default function getInfoRow() {
|
||||
|
||||
const scopedCss = css`
|
||||
/* CONTROL RAW = BUTTON + LINK */
|
||||
|
||||
.labelContainer {
|
||||
flex-grow: 9;
|
||||
padding-left: 0.3em;
|
||||
}
|
||||
|
||||
/* INFO SIGNS */
|
||||
|
||||
input:disabled + .labelContainer label {
|
||||
color: var(--default-grey);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.infoRow {
|
||||
position: relative;
|
||||
}
|
||||
.rightBottomIcon {
|
||||
margin-left: 0.1em;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
.infoUrl, .infoUrl:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Source: https://jsfiddle.net/greypants/zgCb7/ */
|
||||
.desc {
|
||||
text-align: right;
|
||||
color: var(--ribbon-color);
|
||||
cursor: help;
|
||||
padding-left: 0.3em;
|
||||
}
|
||||
.tooltip {
|
||||
display: none;
|
||||
position: absolute;
|
||||
white-space: initial;
|
||||
word-break: initial;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
right: 1em;
|
||||
z-index: 1;
|
||||
background-color: var(--ribbon-color);
|
||||
padding: 1em;
|
||||
color: white;
|
||||
text-align: initial;
|
||||
}
|
||||
.desc:hover .tooltip {
|
||||
display: block;
|
||||
}
|
||||
.tooltip a,
|
||||
.tooltip em {
|
||||
color: white;
|
||||
}
|
||||
.desc .tooltip:after {
|
||||
border-left: solid transparent 0.5em;
|
||||
border-bottom: solid var(--ribbon-color) 0.5em;
|
||||
position: absolute;
|
||||
top: -0.5em;
|
||||
content: "";
|
||||
width: 0;
|
||||
right: 0;
|
||||
height: 0;
|
||||
}
|
||||
/* This bridges the gap so you can mouse into the tooltip without it disappearing. */
|
||||
.desc .tooltip:before {
|
||||
position: absolute;
|
||||
top: -1em;
|
||||
content: "";
|
||||
display: block;
|
||||
height: 1.2em;
|
||||
left: 75%;
|
||||
width: calc(25% + 0.6em);
|
||||
}
|
||||
`;
|
||||
|
||||
const camelToDash = (name) => name.replace(/([A-Z])/g, (_, p1) => '-' + p1.toLowerCase());
|
||||
// const dashToCamel = (name) => name.replace(/-(.)/g, (_, p1) => p1.toUpperCase());
|
||||
|
||||
|
||||
const InfoIcon = function InfoIcom(props) {
|
||||
|
||||
return (
|
||||
<svg class="icon" style="position: relative; top: 0.08em">$
|
||||
<use xlink:href="#iconInfo"></use>$
|
||||
</svg>
|
||||
);
|
||||
|
||||
};
|
||||
|
||||
return class InfoRow extends Component {
|
||||
|
||||
render(props) {
|
||||
|
||||
// Object.assign is left-associative, let's make it right.
|
||||
Object.assign(props, Object.assign({
|
||||
idPrefix: '',
|
||||
ifDashify: false,
|
||||
htmlAfterLabel: '',
|
||||
}, props));
|
||||
|
||||
const iddy = props.idPrefix + ( props.ifDashify ? camelToDash(props.conf.key) : props.conf.key );
|
||||
return (
|
||||
<li class={scopedCss.infoRow + ' horFlex'}>
|
||||
<input type={props.type} name={props.name} checked={props.checked} id={iddy} />
|
||||
<div class={scopedCss.labelContainer}>
|
||||
<label for={iddy}>{props.conf.label}</label>
|
||||
{props.children}
|
||||
</div>
|
||||
{props.conf.desc
|
||||
? (
|
||||
<div class={scopedCss.desc}>
|
||||
<InfoIcon />
|
||||
<div class={scopedCss.tooltip} dangerouslySetInnerHTML={{__html: props.conf.desc}}/>
|
||||
</div>)
|
||||
: (props.conf.url
|
||||
&& (<a href={props.conf.url} class={[scopedCss.rightBottomIcon, scopedCss.infoUrl].join(' ')}><InfoIcon /></a>)
|
||||
)
|
||||
}
|
||||
</li>
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
};
|
|
@ -0,0 +1,55 @@
|
|||
// @flow
|
||||
|
||||
//import mComponent from 'microcomponent';
|
||||
//import html from 'bel';
|
||||
import css from 'csjs-inject';
|
||||
|
||||
import Inferno from 'inferno';
|
||||
import Component from 'inferno-component';
|
||||
|
||||
export default function getNotControlledWarning({ flags }) {
|
||||
|
||||
const cssClasses = css`
|
||||
|
||||
.warningContainer {
|
||||
background-color: red;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
|
||||
${ flags.ifInsideOptionsPage
|
||||
? `
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
` : `
|
||||
padding-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
`
|
||||
}
|
||||
|
||||
border-bottom: 1px solid var(--default-grey);
|
||||
}
|
||||
.warningContainer a {
|
||||
color: white;
|
||||
}
|
||||
`;
|
||||
|
||||
return class NotControlledWarning extends Component {
|
||||
|
||||
constructor(props) {
|
||||
|
||||
super(props);
|
||||
|
||||
}
|
||||
|
||||
render(props) {
|
||||
|
||||
return (
|
||||
<section class={cssClasses.warningContainer + " horPadded"} dangerouslySetInnerHTML={{ __html: props.utils.messages.whichExtensionHtml() }} />
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}
|
|
@ -0,0 +1,172 @@
|
|||
import Inferno from 'inferno';
|
||||
import Component from 'inferno-component';
|
||||
import css from 'csjs-inject';
|
||||
|
||||
import getInfoLi from './InfoLi';
|
||||
|
||||
export default function getPacChooser(...args) {
|
||||
|
||||
const scopedCss = css`
|
||||
/* OTHER VERSION */
|
||||
|
||||
.otherVersion {
|
||||
font-size: 1.7em;
|
||||
color: var(--ribbon-color);
|
||||
margin-left: 0.1em;
|
||||
}
|
||||
.otherVersion:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.fullLineHeight,
|
||||
.fullLineHeight * {
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
/* TAB_1: PAC PROVIDER */
|
||||
|
||||
.updateButton {
|
||||
visibility: hidden;
|
||||
}
|
||||
input:checked + div .updateButton {
|
||||
visibility: inherit;
|
||||
}
|
||||
label[for="onlyOwnSites"] + .updateButton {
|
||||
display: none;
|
||||
}
|
||||
#none:checked + div label[for="none"] {
|
||||
color: red;
|
||||
}
|
||||
|
||||
#updateMessage {
|
||||
white-space: nowrap;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
`;
|
||||
|
||||
// UTILS START.
|
||||
|
||||
const currentProviderRadio = () => {
|
||||
|
||||
const iddy = antiCensorRu.getCurrentPacProviderKey() || 'none';
|
||||
return document.getElementById(iddy);
|
||||
|
||||
};
|
||||
const checkChosenProvider = () => {
|
||||
|
||||
currentProviderRadio().checked = true;
|
||||
|
||||
};
|
||||
|
||||
// UTILS END.
|
||||
|
||||
class LastUpdateDate extends Component {
|
||||
|
||||
constructor(props) {
|
||||
|
||||
super(props);
|
||||
chrome.storage.onChanged.addListener(
|
||||
(changes) => changes.lastPacUpdateStamp.newValue && this.forceUpdate()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
getDate(antiCensorRu) {
|
||||
|
||||
let dateForUser = 'никогда';
|
||||
if( antiCensorRu.lastPacUpdateStamp ) {
|
||||
let diff = Date.now() - antiCensorRu.lastPacUpdateStamp;
|
||||
let units = 'мс';
|
||||
const gauges = [
|
||||
[1000, 'с'],
|
||||
[60, 'мин'],
|
||||
[60, 'ч'],
|
||||
[24, 'дн'],
|
||||
[7, ' недель'],
|
||||
[4, ' месяцев'],
|
||||
];
|
||||
for(const g of gauges) {
|
||||
const diffy = Math.floor(diff / g[0]);
|
||||
if (!diffy)
|
||||
break;
|
||||
diff = diffy;
|
||||
units = g[1];
|
||||
}
|
||||
dateForUser = diff + units + ' назад';
|
||||
}
|
||||
return {
|
||||
text: `${dateForUser} / ${antiCensorRu.pacUpdatePeriodInMinutes/60}ч`,
|
||||
title: new Date(antiCensorRu.lastPacUpdateStamp).toLocaleString('ru-RU'),
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
render(props) {
|
||||
|
||||
const date = this.getDate(props.antiCensorRu);
|
||||
return (<div>Обновлялись: <span class="updateDate" title={date.title}>{ date.text }</span></div>);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const updatePac = function updatePac() {
|
||||
conduct(
|
||||
'Обновляем...', (cb) => antiCensorRu.syncWithPacProviderAsync(cb),
|
||||
'Обновлено.'
|
||||
);
|
||||
return false;
|
||||
};
|
||||
|
||||
const InfoLi = getInfoLi(...args);
|
||||
|
||||
function emit(e) {
|
||||
|
||||
const event = new Event('dick');
|
||||
e.target.dispatchEvent(event);
|
||||
|
||||
}
|
||||
|
||||
return class PacChooser extends Component {
|
||||
|
||||
render(props) {
|
||||
|
||||
const checkedIddy = props.antiCensorRu.getCurrentPacProviderKey() || 'none';
|
||||
return (
|
||||
<div>
|
||||
{props.flags.ifInsideOptionsPage && (<header>PAC-скрипт:</header>)}
|
||||
<ul>
|
||||
{
|
||||
props.antiCensorRu.getSortedEntriesForProviders().map((provConf) =>
|
||||
(<InfoLi
|
||||
conf={provConf}
|
||||
type="radio"
|
||||
name="pacProvider"
|
||||
checked={checkedIddy === provConf.key}
|
||||
>
|
||||
<a href="" class={scopedCss.updateButton} onClick={(evt) => { evt.preventDefault(); emit(evt) }}>[обновить]</a>
|
||||
</InfoLi>)
|
||||
)
|
||||
}
|
||||
<InfoLi type="radio" name="pacProvider" conf={{key: 'none', label: 'Отключить'}} checked={checkedIddy === 'none'}/>
|
||||
</ul>
|
||||
<div id="updateMessage" class="horFlex" style="align-items: center">
|
||||
<LastUpdateDate antiCensorRu={props.antiCensorRu}/>
|
||||
<div class={scopedCss.fullLineHeight}>
|
||||
{
|
||||
props.flags.ifMini
|
||||
? (<a class={scopedCss.otherVersion + ' emoji'} href="https://rebrand.ly/ac-versions"
|
||||
title="Полная версия">🏋</a>)
|
||||
: (<a class={scopedCss.otherVersion + ' emoji'} href="https://rebrand.ly/ac-versions"
|
||||
title="Версия для слабых машин">🐌</a>)
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
};
|
|
@ -0,0 +1,171 @@
|
|||
//import mComponent from 'microcomponent';
|
||||
//import html from 'bel';
|
||||
|
||||
import Inferno, { linkEvent } from 'inferno';
|
||||
import Component from 'inferno-component';
|
||||
import css from 'csjs-inject';
|
||||
|
||||
export default function getTabsPannel({ flags }) {
|
||||
|
||||
const scopedCss = css`
|
||||
|
||||
.tabContainer {
|
||||
padding: 0.6em 0 1em;
|
||||
}
|
||||
.tabContainer li label {
|
||||
display: inline-block; /* Needed for ::first-letter below. */
|
||||
}
|
||||
.tabContainer li label::first-letter {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
:root.ifInsideOptionsPage .tabContainer {
|
||||
padding-bottom: 0.6em;
|
||||
}
|
||||
:root.ifInsideOptionsPage .tabContainer:not(:last-child),
|
||||
.underlined {
|
||||
border-bottom: 1px solid var(--cr-options-headline);
|
||||
}
|
||||
|
||||
/* HIDE starts. */
|
||||
|
||||
:root:not(.ifInsideOptionsPage) .mainNav input:not(:checked) + section,
|
||||
/* One button shared between two sections: */
|
||||
:root:not(.ifInsideOptionsPage) .mainNav input:not(:checked) + #apply-mods-section
|
||||
{
|
||||
/* Hide, but preclude width resizes. */
|
||||
height: 0px !important;
|
||||
line-height: 0px !important;
|
||||
padding-top: 0 !important;
|
||||
padding-bottom: 0 !important;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
border: none !important;
|
||||
display: block;
|
||||
visibility: hidden;
|
||||
transform: scaleY(0) !important;
|
||||
}
|
||||
|
||||
:root:not(.ifInsideOptionsPage) .mainNav input:not(:checked) + section *,
|
||||
/* One button shared between two sections: */
|
||||
:root:not(.ifInsideOptionsPage) .mainNav #apply-mods-section * // TODO
|
||||
{
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
/* HIDE ends. */
|
||||
|
||||
.navLabels {
|
||||
background-color: var(--cr-grey-panel);
|
||||
text-align: center;
|
||||
min-width: 24em;
|
||||
}
|
||||
.navLabels li label {
|
||||
display: inline-block;
|
||||
|
||||
border: 1px solid var(--ribbon-color);
|
||||
border-radius: 0.2em;
|
||||
|
||||
background-color: white;
|
||||
color: var(--ribbon-color);
|
||||
|
||||
padding: 0.2em 0.3em 0.3em 0.2em;
|
||||
line-height: 0.8em;
|
||||
margin: 0.1em 0;
|
||||
}
|
||||
.navLabels li label:hover {
|
||||
background-color: var(--blue-bg);
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* LABELS starts. */
|
||||
|
||||
input[name="selectedTabLabel"]:checked + label:not(:hover)
|
||||
{
|
||||
background-color: var(--blue-bg);
|
||||
color: white;
|
||||
}
|
||||
/* ★★★★★ */
|
||||
.navLabels label:before {
|
||||
content: '★';
|
||||
padding-right: 0.1em;
|
||||
visibility: hidden;
|
||||
}
|
||||
.navLabels li label:hover:before,
|
||||
input[name="selectedTabLabel"]:checked + label:before
|
||||
{
|
||||
visibility: initial;
|
||||
}
|
||||
.navLabels li:after {
|
||||
content: '\\a0';
|
||||
}
|
||||
|
||||
/* LABELS ends. */
|
||||
|
||||
`;
|
||||
|
||||
if (flags.ifInsideOptionsPage) {
|
||||
document.documentElement.classList.add(scopedCss.ifInsideOptionsPage);
|
||||
}
|
||||
|
||||
return class TabPannel extends Component {
|
||||
|
||||
constructor(props) {
|
||||
|
||||
super(props);
|
||||
console.log('CONSTRUCTOR');
|
||||
this.state = {
|
||||
chosenTabIndex: 0,
|
||||
};
|
||||
|
||||
}
|
||||
componentDidMount() {
|
||||
|
||||
window.addEventListener('hashchange', () => {
|
||||
|
||||
if (/^#tab(\d+)$/.test(window.location.hash)) {
|
||||
const inputIndex = RegExp.$1;
|
||||
if (inputIndex < this.props.tabs.length) {
|
||||
console.log('SET STATE');
|
||||
this.setState({chosenTabIndex: inputIndex});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
render(props) {
|
||||
|
||||
return (<div ref={(dom) => {
|
||||
|
||||
const target = dom.querySelector(`.${scopedCss.mainNav} *:target`);
|
||||
if (target) {
|
||||
const tabIndex = parseInt(target.id.replace('tab', ''));
|
||||
dom.querySelector(`#radioLabel${tabIndex}`).checked = true;
|
||||
dom.querySelector(`#radioTab${tabIndex}`).checked = true;
|
||||
}
|
||||
|
||||
}}>
|
||||
<nav class={scopedCss.navLabels + ' hiddenForOptionsPage'}>
|
||||
<ul class='horizontalList'>
|
||||
{
|
||||
props.tabs.map((tab, index) =>
|
||||
(<li><input type="radio" name="selectedTabLabel" id={'radioLabel' + index} checked={this.state.chosenTabIndex === index} class="off"/><label onClick={() => (window.location.hash = `tab${index}`)} for={'radioLabel' + index} class={scopedCss.navLabel}>{tab.label}</label></li>)
|
||||
)
|
||||
}
|
||||
</ul>
|
||||
<hr/>
|
||||
</nav>
|
||||
|
||||
<nav class={'horPadded ' + scopedCss.mainNav}>
|
||||
{
|
||||
props.tabs.map((tab, index) => (<div><input type="radio" name="selectedTab" id={'radioTab' + index} checked={this.state.chosenTabIndex === index} class="off"/><section id={'tab' + index} class={scopedCss.tabContainer}>{tab.content}</section></div>))
|
||||
}
|
||||
</nav>
|
||||
<hr/>
|
||||
</div>);
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
};
|
|
@ -0,0 +1,149 @@
|
|||
export default function append(document, props) {
|
||||
|
||||
// innerText converts \n to <br>, so:
|
||||
document.head.querySelector('style').innerHTML = `
|
||||
/* GLOBAL VARIABLES */
|
||||
|
||||
:root {
|
||||
--ribbon-color: #4169e1;
|
||||
--blue-bg: dodgerblue;
|
||||
--default-grey: #bfbfbf;
|
||||
--cr-options-headline: #d3d3d3;
|
||||
--cr-icon-selected: #d7d7d7;
|
||||
--cr-popup-border: #bababa;
|
||||
--cr-grey-panel: #f2f2f2;
|
||||
max-width: 28em;
|
||||
}
|
||||
|
||||
/* BASE ELEMENTS */
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
a, a:visited {
|
||||
color: var(--ribbon-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
label {
|
||||
user-select: none;
|
||||
}
|
||||
div, section, header, ul, ol {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 0.3em
|
||||
}
|
||||
ul, ol {
|
||||
list-style-type: none;
|
||||
}
|
||||
li, .nowrap {
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
word-break: keep-all;
|
||||
}
|
||||
li, li > * {
|
||||
vertical-align: middle;
|
||||
}
|
||||
input[type="radio"], input[type="checkbox"] {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
input[type="radio"], label {
|
||||
cursor: pointer;
|
||||
}
|
||||
hr {
|
||||
border: none;
|
||||
border-top: 1px solid var(--cr-popup-border);
|
||||
margin: 0 0 0.6em 0;
|
||||
padding: 0;
|
||||
}
|
||||
em {
|
||||
font-style: normal;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
/* IF INSIDE OPTIONS */
|
||||
${
|
||||
props.flags.ifInsideOptionsPage
|
||||
? `
|
||||
|
||||
ul, ol {
|
||||
margin-left: 0.4em;
|
||||
}
|
||||
|
||||
` : `
|
||||
|
||||
ul, ol {
|
||||
/*Here is a flex bug:
|
||||
() antizapret [update] (i)
|
||||
() anticensority very_long_foobar [update] (i) <- Sic!
|
||||
Also: options page is wider, check it too.
|
||||
But: fixed 100% width conflicts with margins/paddings.
|
||||
So: use only when needed and avoid margins.
|
||||
FYI: setting left-margin fixes problem too, but margins are not wanted.
|
||||
Fix this problem below:
|
||||
*/
|
||||
display: inline-block;
|
||||
min-width: 100%;
|
||||
}
|
||||
`
|
||||
}
|
||||
|
||||
|
||||
/* COMMON CLASSES */
|
||||
|
||||
.off {
|
||||
display: none;
|
||||
}
|
||||
.horPadded {
|
||||
padding-left: 1.4em;
|
||||
padding-right: 1.4em;
|
||||
}
|
||||
.horizontalList,
|
||||
.horizontalList li {
|
||||
line-height: 100%;
|
||||
}
|
||||
.horizontalList li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* Flexes */
|
||||
|
||||
.horFlex {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
}
|
||||
.horFlex input:not([type="button"]) {
|
||||
align-self: flex-end;
|
||||
}
|
||||
|
||||
/* Fonts/Icons */
|
||||
|
||||
@font-face {
|
||||
font-family: "emoji";
|
||||
src:url("../lib/fonts/emoji.woff") format("woff");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
.emoji {
|
||||
font-family: "emoji";
|
||||
}
|
||||
|
||||
svg.icon {
|
||||
display: inline-block;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
stroke-width: 0;
|
||||
stroke: currentColor;
|
||||
fill: currentColor;
|
||||
}
|
||||
|
||||
`;
|
||||
|
||||
};
|
|
@ -1,15 +1,70 @@
|
|||
// @flow
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
|
||||
let x:string; // webpack/babel must remove type here!
|
||||
x = 'Search me in the compiled bundle!';
|
||||
import Inferno from 'inferno';
|
||||
import Component from 'inferno-component';
|
||||
import createElement from 'inferno-create-element';
|
||||
|
||||
let t:string;
|
||||
t = 12345; // Flow must detect error here!
|
||||
import { createStore } from 'redux';
|
||||
|
||||
// webpack/babel must transpile JSX to JS below:
|
||||
ReactDOM.render(
|
||||
<h1>Hello from React WITH BABEL</h1>,
|
||||
document.getElementById('root')
|
||||
import css from 'csjs-inject';
|
||||
import appendGlobalCss from './globalCss';
|
||||
|
||||
import getApp from './components/App';
|
||||
/*
|
||||
#list-of-notifiers {
|
||||
margin-left: 0.4em;
|
||||
}
|
||||
*/
|
||||
|
||||
chrome.runtime.getBackgroundPage( (backgroundPage) =>
|
||||
backgroundPage.apis.errorHandlers.installListenersOn(
|
||||
window, 'PUP', async() => {
|
||||
|
||||
let theState;
|
||||
{
|
||||
const apis = backgroundPage.apis;
|
||||
|
||||
theState = {
|
||||
utils: backgroundPage.utils,
|
||||
antiCensorRu: backgroundPage.apis.antiCensorRu,
|
||||
errorHandlers: apis.errorHandlers,
|
||||
flags: {
|
||||
/* Shortcuts to boolean values. */
|
||||
ifNotControlled: !apis.errorHandlers.ifControllable,
|
||||
ifMini: apis.version.ifMini,
|
||||
},
|
||||
status: 'Хорошего настроения Вам!',
|
||||
};
|
||||
}
|
||||
|
||||
if (theState.flags.ifMini) {
|
||||
document.documentElement.classList.add('ifVersionMini');
|
||||
}
|
||||
|
||||
// IF INSIDE OPTIONS TAB
|
||||
|
||||
const currentTab = await new Promise(
|
||||
(resolve) => chrome.tabs.query(
|
||||
{active: true, currentWindow: true},
|
||||
([tab]) => resolve(tab)
|
||||
)
|
||||
);
|
||||
|
||||
theState.flags.ifInsideOptionsPage = !currentTab || currentTab.url.startsWith('chrome://extensions/?options=');
|
||||
|
||||
// STATE DEFINED, COMPOSE.
|
||||
|
||||
appendGlobalCss(document, theState);
|
||||
|
||||
Inferno.render(
|
||||
createElement(getApp(theState), theState),
|
||||
document.getElementById('app-root'),
|
||||
);
|
||||
// READY TO RENDER
|
||||
|
||||
document.documentElement.style.display = 'initial';
|
||||
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
|
|
|
@ -7,24 +7,39 @@ module.exports = (env, ...flags) => ({
|
|||
entry: './src/index.js',
|
||||
output: {
|
||||
path: path.join(__dirname, 'dist'),
|
||||
filename: `bundle${env === 'prod' ? '.min' : ''}.js`,
|
||||
filename: `bundle.min.js`,
|
||||
publicPath: './dist/',
|
||||
},
|
||||
devtool: 'source-map',
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.jsx?$/,
|
||||
include: path.join(__dirname, 'src'),
|
||||
use: [{
|
||||
loader: 'babel-loader',
|
||||
options: { presets: ['react', 'flow'] },
|
||||
}],
|
||||
use: [
|
||||
{
|
||||
loader: 'babel-loader',
|
||||
options: {
|
||||
presets: ['flow'],
|
||||
plugins: ['dynamic-import-webpack', 'inferno'],
|
||||
},
|
||||
},
|
||||
/*{
|
||||
loader: './lib/transform-loader?csjs-injectify',
|
||||
},*/
|
||||
],
|
||||
}
|
||||
],
|
||||
},
|
||||
|
||||
resolve: {
|
||||
aliasFields: [],
|
||||
},
|
||||
|
||||
plugins: env === 'prod' ?
|
||||
[
|
||||
/* Production */
|
||||
new BabiliPlugin(),
|
||||
//new BabiliPlugin(),
|
||||
] : [
|
||||
/* Development */
|
||||
],
|
||||
|
|
|
@ -12,6 +12,14 @@ acorn-dynamic-import@^2.0.0:
|
|||
dependencies:
|
||||
acorn "^4.0.3"
|
||||
|
||||
acorn@^1.0.3:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014"
|
||||
|
||||
acorn@^2.4.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
|
||||
|
||||
acorn@^4.0.3:
|
||||
version "4.0.11"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0"
|
||||
|
@ -39,6 +47,10 @@ align-text@^0.1.1, align-text@^0.1.3:
|
|||
longest "^1.0.1"
|
||||
repeat-string "^1.5.2"
|
||||
|
||||
amdefine@>=0.0.4:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
|
||||
|
||||
ansi-regex@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
||||
|
@ -83,10 +95,6 @@ arrify@^1.0.0:
|
|||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
|
||||
|
||||
asap@~2.0.3:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f"
|
||||
|
||||
asn1.js@^4.0.0:
|
||||
version "4.9.1"
|
||||
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
|
||||
|
@ -258,6 +266,20 @@ babel-messages@^6.23.0:
|
|||
dependencies:
|
||||
babel-runtime "^6.22.0"
|
||||
|
||||
babel-plugin-dynamic-import-webpack@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-webpack/-/babel-plugin-dynamic-import-webpack-1.0.1.tgz#26c24a1c1c9bf49184b30d5867562a4cbfa530d1"
|
||||
dependencies:
|
||||
babel-plugin-syntax-dynamic-import "^6.18.0"
|
||||
babel-template "^6.16.0"
|
||||
|
||||
babel-plugin-inferno@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-inferno/-/babel-plugin-inferno-3.2.0.tgz#62ae1ac223e74e0d54f29fb196e06e358250d82a"
|
||||
dependencies:
|
||||
babel-plugin-syntax-jsx "^6.18.0"
|
||||
inferno-vnode-flags "3.0.0"
|
||||
|
||||
babel-plugin-minify-builtins@^0.0.2:
|
||||
version "0.0.2"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.0.2.tgz#f3be6121763c0c518d5ef82067cef4b615c9498c"
|
||||
|
@ -323,11 +345,15 @@ babel-plugin-minify-type-constructors@^0.0.4:
|
|||
dependencies:
|
||||
babel-helper-is-void-0 "^0.0.1"
|
||||
|
||||
babel-plugin-syntax-dynamic-import@^6.18.0:
|
||||
version "6.18.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
|
||||
|
||||
babel-plugin-syntax-flow@^6.18.0:
|
||||
version "6.18.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
|
||||
|
||||
babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
|
||||
babel-plugin-syntax-jsx@^6.18.0, babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
|
||||
version "6.18.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
|
||||
|
||||
|
@ -486,7 +512,7 @@ babel-runtime@^6.0.0, babel-runtime@^6.22.0:
|
|||
core-js "^2.4.0"
|
||||
regenerator-runtime "^0.10.0"
|
||||
|
||||
babel-template@^6.24.1:
|
||||
babel-template@^6.16.0, babel-template@^6.24.1:
|
||||
version "6.24.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333"
|
||||
dependencies:
|
||||
|
@ -545,6 +571,14 @@ bcrypt-pbkdf@^1.0.0:
|
|||
dependencies:
|
||||
tweetnacl "^0.14.3"
|
||||
|
||||
bel@^4.6.1:
|
||||
version "4.6.1"
|
||||
resolved "https://registry.yarnpkg.com/bel/-/bel-4.6.1.tgz#fd3a445914e90ff32b08e92192f557f15845cd34"
|
||||
dependencies:
|
||||
global "^4.3.0"
|
||||
hyperx "^2.3.0"
|
||||
on-load "^3.2.0"
|
||||
|
||||
big.js@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
|
||||
|
@ -682,7 +716,7 @@ center-align@^0.1.1:
|
|||
align-text "^0.1.3"
|
||||
lazy-cache "^1.0.3"
|
||||
|
||||
chalk@^1.1.0:
|
||||
chalk@^1.1.0, chalk@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
|
||||
dependencies:
|
||||
|
@ -757,6 +791,14 @@ concat-map@0.0.1:
|
|||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
|
||||
concat-stream@^1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
|
||||
dependencies:
|
||||
inherits "^2.0.3"
|
||||
readable-stream "^2.2.2"
|
||||
typedarray "^0.0.6"
|
||||
|
||||
console-browserify@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
|
||||
|
@ -775,10 +817,6 @@ convert-source-map@^1.1.0:
|
|||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
|
||||
|
||||
core-js@^1.0.0:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
|
||||
|
||||
core-js@^2.4.0:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
|
||||
|
@ -831,6 +869,26 @@ crypto-browserify@^3.11.0:
|
|||
public-encrypt "^4.0.0"
|
||||
randombytes "^2.0.0"
|
||||
|
||||
csjs-inject@^1.0.0, csjs-inject@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/csjs-inject/-/csjs-inject-1.0.1.tgz#de22113c40b46cfe17d3d62a00c77c9d7da7527c"
|
||||
dependencies:
|
||||
csjs "^1.0.0"
|
||||
insert-css "^0.2.0"
|
||||
|
||||
csjs-injectify@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/csjs-injectify/-/csjs-injectify-1.0.1.tgz#526da892b87346badb16bd5fbe7b20245dbf247b"
|
||||
dependencies:
|
||||
acorn "^2.4.0"
|
||||
csjs-inject "^1.0.0"
|
||||
falafel "^1.2.0"
|
||||
through2 "^2.0.0"
|
||||
|
||||
csjs@^1.0.0, csjs@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/csjs/-/csjs-1.1.0.tgz#1b5753c6bd902da269deb369215585a5d8f1f380"
|
||||
|
||||
dashdash@^1.12.0:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
|
||||
|
@ -855,6 +913,10 @@ deep-extend@~0.4.0:
|
|||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
|
||||
|
||||
deep-is@~0.1.3:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
||||
|
||||
delayed-stream@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||
|
@ -884,6 +946,10 @@ diffie-hellman@^5.0.0:
|
|||
miller-rabin "^4.0.0"
|
||||
randombytes "^2.0.0"
|
||||
|
||||
dom-walk@^0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018"
|
||||
|
||||
domain-browser@^1.1.1:
|
||||
version "1.1.7"
|
||||
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
|
||||
|
@ -910,12 +976,6 @@ emojis-list@^2.0.0:
|
|||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
|
||||
|
||||
encoding@^0.1.11:
|
||||
version "0.1.12"
|
||||
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
|
||||
dependencies:
|
||||
iconv-lite "~0.4.13"
|
||||
|
||||
enhanced-resolve@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec"
|
||||
|
@ -941,6 +1001,25 @@ escape-string-regexp@^1.0.2:
|
|||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
|
||||
escodegen@^1.8.1:
|
||||
version "1.8.1"
|
||||
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
|
||||
dependencies:
|
||||
esprima "^2.7.1"
|
||||
estraverse "^1.9.1"
|
||||
esutils "^2.0.2"
|
||||
optionator "^0.8.1"
|
||||
optionalDependencies:
|
||||
source-map "~0.2.0"
|
||||
|
||||
esprima@^2.7.1:
|
||||
version "2.7.3"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
|
||||
|
||||
estraverse@^1.9.1:
|
||||
version "1.9.3"
|
||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
|
||||
|
||||
esutils@^2.0.0, esutils@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
|
||||
|
@ -981,17 +1060,18 @@ extsprintf@1.0.2:
|
|||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
|
||||
|
||||
fbjs@^0.8.9:
|
||||
version "0.8.12"
|
||||
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04"
|
||||
falafel@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/falafel/-/falafel-1.2.0.tgz#c18d24ef5091174a497f318cd24b026a25cddab4"
|
||||
dependencies:
|
||||
core-js "^1.0.0"
|
||||
isomorphic-fetch "^2.1.1"
|
||||
loose-envify "^1.0.0"
|
||||
object-assign "^4.1.0"
|
||||
promise "^7.1.1"
|
||||
setimmediate "^1.0.5"
|
||||
ua-parser-js "^0.7.9"
|
||||
acorn "^1.0.3"
|
||||
foreach "^2.0.5"
|
||||
isarray "0.0.1"
|
||||
object-keys "^1.0.6"
|
||||
|
||||
fast-levenshtein@~2.0.4:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
|
||||
|
||||
filename-regex@^2.0.0:
|
||||
version "2.0.1"
|
||||
|
@ -1022,6 +1102,10 @@ find-up@^1.0.0:
|
|||
path-exists "^2.0.0"
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
flatten@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
|
||||
|
||||
flow-bin@^0.45.0:
|
||||
version "0.45.0"
|
||||
resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.45.0.tgz#009dd0f577a3f665c74ca8be827ae8c2dd8fd6b5"
|
||||
|
@ -1036,6 +1120,10 @@ for-own@^0.1.4:
|
|||
dependencies:
|
||||
for-in "^1.0.1"
|
||||
|
||||
foreach@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
|
||||
|
||||
forever-agent@~0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
|
||||
|
@ -1127,6 +1215,13 @@ glob@^7.0.0, glob@^7.0.5:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
global@^4.3.0:
|
||||
version "4.3.2"
|
||||
resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f"
|
||||
dependencies:
|
||||
min-document "^2.19.0"
|
||||
process "~0.5.1"
|
||||
|
||||
globals@^9.0.0:
|
||||
version "9.17.0"
|
||||
resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286"
|
||||
|
@ -1214,18 +1309,60 @@ https-browserify@0.0.1:
|
|||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
|
||||
|
||||
iconv-lite@~0.4.13:
|
||||
version "0.4.17"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.17.tgz#4fdaa3b38acbc2c031b045d0edcdfe1ecab18c8d"
|
||||
hyperscript-attribute-to-property@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/hyperscript-attribute-to-property/-/hyperscript-attribute-to-property-1.0.0.tgz#825308d49bb8e2957923f731981bcc811cad7aff"
|
||||
|
||||
hyperx@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/hyperx/-/hyperx-2.3.0.tgz#70f473d66d4ad550ddd1c83e4be2651276bbf1e2"
|
||||
dependencies:
|
||||
hyperscript-attribute-to-property "^1.0.0"
|
||||
|
||||
ieee754@^1.1.4:
|
||||
version "1.1.8"
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
|
||||
|
||||
indexes-of@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
|
||||
|
||||
indexof@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
|
||||
|
||||
inferno-component@3.1.2, inferno-component@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/inferno-component/-/inferno-component-3.1.2.tgz#c31f36a93b16c7649255240271bfcd6478775449"
|
||||
dependencies:
|
||||
inferno "3.1.2"
|
||||
inferno-shared "3.1.1"
|
||||
inferno-vnode-flags "^3.0.0"
|
||||
|
||||
inferno-create-element@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/inferno-create-element/-/inferno-create-element-3.1.2.tgz#c5a33f25a51f09dac21cd0bd031398d963b5ad5b"
|
||||
dependencies:
|
||||
inferno "3.1.2"
|
||||
inferno-component "3.1.2"
|
||||
inferno-shared "3.1.1"
|
||||
inferno-vnode-flags "^3.0.0"
|
||||
|
||||
inferno-shared@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/inferno-shared/-/inferno-shared-3.1.1.tgz#70376e29a56c53f6ba1e942191fe5cb710654f73"
|
||||
|
||||
inferno-vnode-flags@3.0.0, inferno-vnode-flags@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/inferno-vnode-flags/-/inferno-vnode-flags-3.0.0.tgz#f396390f3dafae3b76eea04d04eed6cf2004473b"
|
||||
|
||||
inferno@3.1.2, inferno@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/inferno/-/inferno-3.1.2.tgz#37ae33ef6ed75a05b1a4b7b4b24b99fe0a120b9e"
|
||||
dependencies:
|
||||
inferno-shared "3.1.1"
|
||||
inferno-vnode-flags "^3.0.0"
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
|
@ -1233,7 +1370,7 @@ inflight@^1.0.4:
|
|||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
||||
inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1:
|
||||
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
|
||||
|
@ -1245,6 +1382,14 @@ ini@~1.3.0:
|
|||
version "1.3.4"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
|
||||
|
||||
insert-css@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-0.2.0.tgz#d15789971662d9899c28977fb6220d5381d2451a"
|
||||
|
||||
insert-css@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4"
|
||||
|
||||
interpret@^1.0.0:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
|
||||
|
@ -1329,10 +1474,6 @@ is-primitive@^2.0.0:
|
|||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
|
||||
|
||||
is-stream@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
||||
|
||||
is-typedarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
||||
|
@ -1341,6 +1482,10 @@ is-utf8@^0.2.0:
|
|||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
|
||||
|
||||
isarray@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
|
||||
|
||||
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||
|
@ -1351,13 +1496,6 @@ isobject@^2.0.0:
|
|||
dependencies:
|
||||
isarray "1.0.0"
|
||||
|
||||
isomorphic-fetch@^2.1.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
|
||||
dependencies:
|
||||
node-fetch "^1.0.1"
|
||||
whatwg-fetch ">=0.10.0"
|
||||
|
||||
isstream@~0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
||||
|
@ -1368,6 +1506,10 @@ jodid25519@^1.0.0:
|
|||
dependencies:
|
||||
jsbn "~0.1.0"
|
||||
|
||||
js-base64@^2.1.9:
|
||||
version "2.1.9"
|
||||
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
|
||||
|
||||
js-tokens@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
|
||||
|
@ -1435,6 +1577,13 @@ lcid@^1.0.0:
|
|||
dependencies:
|
||||
invert-kv "^1.0.0"
|
||||
|
||||
levn@~0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
|
||||
dependencies:
|
||||
prelude-ls "~1.1.2"
|
||||
type-check "~0.3.2"
|
||||
|
||||
load-json-file@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
|
||||
|
@ -1482,12 +1631,18 @@ longest@^1.0.1:
|
|||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
|
||||
|
||||
loose-envify@^1.0.0, loose-envify@^1.1.0:
|
||||
loose-envify@^1.0.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
|
||||
dependencies:
|
||||
js-tokens "^3.0.0"
|
||||
|
||||
map-limit@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/map-limit/-/map-limit-0.0.1.tgz#eb7961031c0f0e8d001bf2d56fab685d58822f38"
|
||||
dependencies:
|
||||
once "~1.3.0"
|
||||
|
||||
memory-fs@^0.4.0, memory-fs@~0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
|
||||
|
@ -1495,6 +1650,16 @@ memory-fs@^0.4.0, memory-fs@~0.4.1:
|
|||
errno "^0.1.3"
|
||||
readable-stream "^2.0.1"
|
||||
|
||||
microcomponent@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/microcomponent/-/microcomponent-3.1.1.tgz#c08d7cccd09863c016e4a09db0098b4457df8d9b"
|
||||
dependencies:
|
||||
nanocomponent "^4.0.1"
|
||||
nanologger "^1.0.2"
|
||||
nanomorph "^4.0.3"
|
||||
nanotiming "^1.0.0"
|
||||
shallow-equal "^1.0.0"
|
||||
|
||||
micromatch@^2.1.5:
|
||||
version "2.3.11"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
|
||||
|
@ -1530,6 +1695,12 @@ mime-types@^2.1.12, mime-types@~2.1.7:
|
|||
dependencies:
|
||||
mime-db "~1.27.0"
|
||||
|
||||
min-document@^2.19.0:
|
||||
version "2.19.0"
|
||||
resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
|
||||
dependencies:
|
||||
dom-walk "^0.1.0"
|
||||
|
||||
minimalistic-assert@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
|
||||
|
@ -1566,12 +1737,29 @@ nan@^2.3.0:
|
|||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
|
||||
|
||||
node-fetch@^1.0.1:
|
||||
version "1.6.3"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04"
|
||||
nanocomponent@^4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/nanocomponent/-/nanocomponent-4.0.2.tgz#786d5ff60dbf97727ccd41879688c07f462c973c"
|
||||
dependencies:
|
||||
encoding "^0.1.11"
|
||||
is-stream "^1.0.1"
|
||||
on-load "^3.2.0"
|
||||
|
||||
nanologger@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/nanologger/-/nanologger-1.0.3.tgz#673f29456ae16abe839abc0feeb64a6a135c557e"
|
||||
|
||||
nanomorph@^4.0.0, nanomorph@^4.0.3, nanomorph@^4.0.5:
|
||||
version "4.0.5"
|
||||
resolved "https://registry.yarnpkg.com/nanomorph/-/nanomorph-4.0.5.tgz#7e27cc5e28a05df0c278f53ba430f253f3ac3fac"
|
||||
|
||||
nanomount@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/nanomount/-/nanomount-1.0.1.tgz#da6e4c446f046a20d5a87bfc3a6152be29890d35"
|
||||
dependencies:
|
||||
nanomorph "^4.0.0"
|
||||
|
||||
nanotiming@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/nanotiming/-/nanotiming-1.0.1.tgz#13e7a2e2767967974fedfff071edd39327f44ec3"
|
||||
|
||||
node-libs-browser@^2.0.0:
|
||||
version "2.0.0"
|
||||
|
@ -1658,6 +1846,10 @@ object-assign@^4.0.1, object-assign@^4.1.0:
|
|||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
|
||||
object-keys@^1.0.6:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
|
||||
|
||||
object.omit@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
|
||||
|
@ -1665,12 +1857,35 @@ object.omit@^2.0.0:
|
|||
for-own "^0.1.4"
|
||||
is-extendable "^0.1.1"
|
||||
|
||||
on-load@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/on-load/-/on-load-3.2.0.tgz#dd3145d3a5c2faa5666920d1df674b69f0c2f66f"
|
||||
dependencies:
|
||||
global "^4.3.0"
|
||||
|
||||
once@^1.3.0, once@^1.3.3:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
dependencies:
|
||||
wrappy "1"
|
||||
|
||||
once@~1.3.0:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
|
||||
dependencies:
|
||||
wrappy "1"
|
||||
|
||||
optionator@^0.8.1:
|
||||
version "0.8.2"
|
||||
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
|
||||
dependencies:
|
||||
deep-is "~0.1.3"
|
||||
fast-levenshtein "~2.0.4"
|
||||
levn "~0.3.0"
|
||||
prelude-ls "~1.1.2"
|
||||
type-check "~0.3.2"
|
||||
wordwrap "~1.0.0"
|
||||
|
||||
os-browserify@^0.2.0:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
|
||||
|
@ -1747,6 +1962,10 @@ path-is-absolute@^1.0.0:
|
|||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
|
||||
path-parse@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
|
||||
|
||||
path-type@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
|
||||
|
@ -1785,6 +2004,34 @@ pkg-dir@^1.0.0:
|
|||
dependencies:
|
||||
find-up "^1.0.0"
|
||||
|
||||
postcss-prefix@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-prefix/-/postcss-prefix-2.0.0.tgz#2139e8fba64ed71b93e3a8b1d4c5976e2a949c6f"
|
||||
dependencies:
|
||||
postcss "^5.0.8"
|
||||
postcss-selector-parser "^1.3.0"
|
||||
|
||||
postcss-selector-parser@^1.3.0:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-1.3.3.tgz#d2ee19df7a64f8ef21c1a71c86f7d4835c88c281"
|
||||
dependencies:
|
||||
flatten "^1.0.2"
|
||||
indexes-of "^1.0.1"
|
||||
uniq "^1.0.1"
|
||||
|
||||
postcss@^5.0.10, postcss@^5.0.8:
|
||||
version "5.2.17"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b"
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
js-base64 "^2.1.9"
|
||||
source-map "^0.5.6"
|
||||
supports-color "^3.2.3"
|
||||
|
||||
prelude-ls@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
||||
|
||||
preserve@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
|
||||
|
@ -1801,17 +2048,9 @@ process@^0.11.0:
|
|||
version "0.11.10"
|
||||
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
|
||||
|
||||
promise@^7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf"
|
||||
dependencies:
|
||||
asap "~2.0.3"
|
||||
|
||||
prop-types@^15.5.7, prop-types@~15.5.7:
|
||||
version "15.5.8"
|
||||
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.8.tgz#6b7b2e141083be38c8595aa51fc55775c7199394"
|
||||
dependencies:
|
||||
fbjs "^0.8.9"
|
||||
process@~0.5.1:
|
||||
version "0.5.2"
|
||||
resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
|
||||
|
||||
prr@~0.0.0:
|
||||
version "0.0.0"
|
||||
|
@ -1867,24 +2106,6 @@ rc@^1.1.7:
|
|||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
react-dom@^15.5.4:
|
||||
version "15.5.4"
|
||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.5.4.tgz#ba0c28786fd52ed7e4f2135fe0288d462aef93da"
|
||||
dependencies:
|
||||
fbjs "^0.8.9"
|
||||
loose-envify "^1.1.0"
|
||||
object-assign "^4.1.0"
|
||||
prop-types "~15.5.7"
|
||||
|
||||
react@^15.5.4:
|
||||
version "15.5.4"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047"
|
||||
dependencies:
|
||||
fbjs "^0.8.9"
|
||||
loose-envify "^1.1.0"
|
||||
object-assign "^4.1.0"
|
||||
prop-types "^15.5.7"
|
||||
|
||||
read-pkg-up@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
||||
|
@ -1900,7 +2121,7 @@ read-pkg@^1.0.0:
|
|||
normalize-package-data "^2.3.2"
|
||||
path-type "^1.0.0"
|
||||
|
||||
readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.6:
|
||||
readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6:
|
||||
version "2.2.9"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8"
|
||||
dependencies:
|
||||
|
@ -1985,6 +2206,12 @@ require-main-filename@^1.0.1:
|
|||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
|
||||
|
||||
resolve@^1.1.7:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
|
||||
dependencies:
|
||||
path-parse "^1.0.5"
|
||||
|
||||
right-align@^0.1.1:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
|
||||
|
@ -2017,7 +2244,7 @@ set-immediate-shim@^1.0.1:
|
|||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
|
||||
|
||||
setimmediate@^1.0.4, setimmediate@^1.0.5:
|
||||
setimmediate@^1.0.4:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
|
||||
|
||||
|
@ -2027,6 +2254,26 @@ sha.js@^2.3.6:
|
|||
dependencies:
|
||||
inherits "^2.0.1"
|
||||
|
||||
shallow-equal@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.0.0.tgz#508d1838b3de590ab8757b011b25e430900945f7"
|
||||
|
||||
sheetify@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/sheetify/-/sheetify-6.0.2.tgz#f494161e1cafc1bc02276e930e148acdd3344fd2"
|
||||
dependencies:
|
||||
falafel "^1.2.0"
|
||||
insert-css "^2.0.0"
|
||||
map-limit "0.0.1"
|
||||
postcss "^5.0.10"
|
||||
postcss-prefix "^2.0.0"
|
||||
resolve "^1.1.7"
|
||||
stack-trace "0.0.9"
|
||||
static-eval "^1.1.0"
|
||||
style-resolve "^1.0.0"
|
||||
through2 "^2.0.0"
|
||||
xtend "^4.0.1"
|
||||
|
||||
signal-exit@^3.0.0:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||
|
@ -2059,6 +2306,12 @@ source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, sour
|
|||
version "0.5.6"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
|
||||
|
||||
source-map@~0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
|
||||
dependencies:
|
||||
amdefine ">=0.0.4"
|
||||
|
||||
spdx-correct@~1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
|
||||
|
@ -2088,6 +2341,16 @@ sshpk@^1.7.0:
|
|||
jsbn "~0.1.0"
|
||||
tweetnacl "~0.14.0"
|
||||
|
||||
stack-trace@0.0.9:
|
||||
version "0.0.9"
|
||||
resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.9.tgz#a8f6eaeca90674c333e7c43953f275b451510695"
|
||||
|
||||
static-eval@^1.1.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-1.1.1.tgz#ca8130210354cf13d9a722bc7e923778457bb192"
|
||||
dependencies:
|
||||
escodegen "^1.8.1"
|
||||
|
||||
stream-browserify@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
|
||||
|
@ -2143,11 +2406,18 @@ strip-json-comments@~2.0.1:
|
|||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
|
||||
style-resolve@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/style-resolve/-/style-resolve-1.0.1.tgz#2d2067c944d5fb7f553ca75c4e7947df43796fae"
|
||||
dependencies:
|
||||
resolve "^1.1.7"
|
||||
xtend "^4.0.1"
|
||||
|
||||
supports-color@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
||||
|
||||
supports-color@^3.1.0:
|
||||
supports-color@^3.1.0, supports-color@^3.2.3:
|
||||
version "3.2.3"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
|
||||
dependencies:
|
||||
|
@ -2178,6 +2448,13 @@ tar@^2.2.1:
|
|||
fstream "^1.0.2"
|
||||
inherits "2"
|
||||
|
||||
through2@^2.0.0:
|
||||
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"
|
||||
|
||||
timers-browserify@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86"
|
||||
|
@ -2198,6 +2475,12 @@ tough-cookie@~2.3.0:
|
|||
dependencies:
|
||||
punycode "^1.4.1"
|
||||
|
||||
transform-loader@^0.2.4:
|
||||
version "0.2.4"
|
||||
resolved "https://registry.yarnpkg.com/transform-loader/-/transform-loader-0.2.4.tgz#e5c87877ba96d51d3f225368587b46e226d1cec9"
|
||||
dependencies:
|
||||
loader-utils "^1.0.2"
|
||||
|
||||
trim-right@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
|
||||
|
@ -2216,9 +2499,15 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
|
|||
version "0.14.5"
|
||||
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
|
||||
|
||||
ua-parser-js@^0.7.9:
|
||||
version "0.7.12"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb"
|
||||
type-check@~0.3.2:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
|
||||
dependencies:
|
||||
prelude-ls "~1.1.2"
|
||||
|
||||
typedarray@^0.0.6:
|
||||
version "0.0.6"
|
||||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||
|
||||
uglify-js@^2.8.5:
|
||||
version "2.8.23"
|
||||
|
@ -2237,6 +2526,10 @@ uid-number@^0.0.6:
|
|||
version "0.0.6"
|
||||
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
|
||||
|
||||
uniq@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
|
||||
|
||||
url@^0.11.0:
|
||||
version "0.11.0"
|
||||
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
|
||||
|
@ -2335,10 +2628,6 @@ webpack@^2.5.1:
|
|||
webpack-sources "^0.2.3"
|
||||
yargs "^6.0.0"
|
||||
|
||||
whatwg-fetch@>=0.10.0:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
|
||||
|
||||
which-module@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
|
||||
|
@ -2357,6 +2646,10 @@ wordwrap@0.0.2:
|
|||
version "0.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
|
||||
|
||||
wordwrap@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
||||
|
||||
wrap-ansi@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
|
||||
|
@ -2368,7 +2661,7 @@ wrappy@1:
|
|||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
|
||||
xtend@^4.0.0:
|
||||
xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user