Bug 20168: (follow-up) Add automatic creation of RTL CSS
authorOwen Leonard <oleonard@myacpl.org>
Fri, 4 Sep 2020 14:32:04 +0000 (14:32 +0000)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 9 Sep 2020 12:13:09 +0000 (14:13 +0200)
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
gulpfile.js
koha-tmpl/opac-tmpl/bootstrap/css/right-to-left.css [deleted file]
koha-tmpl/opac-tmpl/bootstrap/css/src/right-to-left.scss [deleted file]
koha-tmpl/opac-tmpl/bootstrap/en/includes/doc-head-close.inc
koha-tmpl/opac-tmpl/bootstrap/en/modules/sci/sci-main.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/printslip.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt
package.json
yarn.lock

index 5b8d6e6..d2164c9 100644 (file)
@@ -5,9 +5,11 @@ const { dest, series, src, watch } = require('gulp');
 
 const sass = require("gulp-sass");
 const cssnano = require("gulp-cssnano");
+const rtlcss = require('gulp-rtlcss');
 const sourcemaps = require('gulp-sourcemaps');
 const autoprefixer = require('gulp-autoprefixer');
 const args = require('minimist')(process.argv.slice(2));
+const rename = require('gulp-rename');
 
 const STAFF_JS_BASE = "koha-tmpl/intranet-tmpl/prog/js";
 const STAFF_CSS_BASE = "koha-tmpl/intranet-tmpl/prog/css";
@@ -34,6 +36,12 @@ function css() {
         .pipe(sass(sassOptions).on('error', sass.logError))
         .pipe(autoprefixer())
         .pipe(sourcemaps.write('./maps'))
+        .pipe(dest(css_base))
+
+        .pipe(rtlcss())
+        .pipe(rename({
+            suffix: '-rtl'
+        })) // Append "-rtl" to the filename.
         .pipe(dest(css_base));
 }
 
@@ -42,7 +50,15 @@ function build() {
     return src(css_base + "/src/**/*.scss")
         .pipe(sass(sassOptions).on('error', sass.logError))
         .pipe(autoprefixer())
-        .pipe(cssnano({ zindex: false }))
+        .pipe(cssnano({
+            zindex: false
+        }))
+        .pipe(dest(css_base))
+
+        .pipe(rtlcss())
+        .pipe(rename({
+            suffix: '-rtl'
+        })) // Append "-rtl" to the filename.
         .pipe(dest(css_base));
 }
 
diff --git a/koha-tmpl/opac-tmpl/bootstrap/css/right-to-left.css b/koha-tmpl/opac-tmpl/bootstrap/css/right-to-left.css
deleted file mode 100644 (file)
index 5c33005..0000000
+++ /dev/null
@@ -1 +0,0 @@
-.popup{padding-left:0;padding-right:0}a.cancel{padding-right:1em}a.addtocart,a.addtoshelf,a.highlight_toggle,a.incart,a.print-large,a.reserve{padding-right:35px}a.brief,a.detail,a.tag_add{padding-right:27px}a.download{padding-right:20px}a.editshelf,a.hide{padding-right:26px}a.empty,a.print-small{padding-right:30px}a.hold,a.new{padding-right:23px}a.deleteshelf,a.removeitems{padding-right:25px}a.send{padding-right:28px}h1#libraryname{float:right!important}input.hold{padding-right:23px}caption{text-align:right}#basketcount span{margin:0 .9em 0 0}#koha_url p{float:left}.actions a.hold{margin-left:1em;padding-right:21px}.actions a.addtocart,.actions a.addtolist,.actions a.addtoshelf,.actions a.tag_add{margin-left:1em;padding-right:20px}.actions a.removefromlist{margin-left:1em;padding-right:15px}.statictabs li,.ui-tabs .ui-tabs-nav li{margin-left:.4em}#bookcover,.statictabs li,.statictabs li a{float:right}#bookcover img{margin:0 0 1em 1em}#bookcover .no-image{margin-left:10px}th.sum,th[scope=row]{text-align:left}fieldset.rows{clear:right;float:right}fieldset.rows .label,fieldset.rows label{float:right;margin-left:1em;text-align:left}fieldset.rows ol.lradio label{margin-left:0}fieldset.rows ol.lradio label.lradio{float:right;margin-left:1em}fieldset.rows li{clear:right;float:right}fieldset.rows li.lradio{padding-right:8.5em}fieldset.rows li.lradio label{margin:0 1em 0 0}div.rows{float:right;clear:right}div.rows .label{float:right;margin-left:1em;text-align:right}div.rows ol{margin-right:0;padding:.5em 0 0 1em}div.rows li{clear:right;float:right}div.rows ul li{margin-right:7.3em}div.rows ul li:first-child{margin-right:0}.toolbar{padding:3px 5px 5px 3px}.toolbar label{margin-right:.5em}.toolbar #tagsel_tag,.toolbar .hold{padding-right:28px}.toolbar li a{border-right:1px solid #e8e8e8}.toolbar li:first-child a{border-right:0}.toolbar ul{padding-right:0}#basket .toolbar{padding:7px 9px 9px 5px}#selections-toolbar{padding-right:10px}#tagsel_span input.submit,#tagsel_tag{padding-right:25px}#selections-toolbar a.disabled,#selections-toolbar a.disabled:hover,#selections-toolbar input.hold.disabled,#selections-toolbar input.hold.disabled:hover,#tagsel_span input.disabled,#tagsel_span input.disabled:hover,#tagsel_span input.hold.disabled,#tagsel_span input.hold.disabled:hover{padding-right:23px}#views{padding:0 .2em .2em 2em}#bibliodescriptions,#isbdcontents{clear:right}.results-pagination{right:-1px}.back{float:left}.pagination_list li a,.pagination_list ul{padding-right:0}.pagination_list .li_pag_index{float:right;padding-left:10px;text-align:left}.pg_menu li.back_results a{border-left:1px solid #d0d0d0;border-right:1px solid #d0d0d0}.pg_menu li a,.pg_menu li span{float:right}#listResults li{margin-left:1px}.nav_pages .close_pagination{left:3px;padding-left:10px}.nav_pages li,.nav_pages li ul{float:right}#format,#furthersearches{padding-right:35px}.highlight_controls{float:right}input.editshelf{padding-right:29px}.newshelf{padding-right:28px}.deleteshelf{padding-right:25px}#login4tags{padding-right:20px}.tag_results_input{margin-right:1em}#social_networks span{float:right;margin:.5em .5em .5em 0!important}#social_networks div{float:right!important;margin:.5em .2em .5em 0!important}#marc td,#marc th{text-align:right}#marc .results_summary{clear:right}#plainmarc th{text-align:right}#renewcontrols{float:left}.authstanza li{margin-right:.5em}#didyoumean{text-align:right}.authlink{padding-right:.25em}#menu h4 a,#search-facets h4 a{border-radius:8px 0 0 8px}#menu{border:0 solid #d8d8d8;border-left-width:1px}#menu li a{border-radius:0 5px 5px 0;margin-left:-1px}#menu li.active a{border-left-width:0;border-right-width:1px}.addto a.addtocart{padding-right:33px}.searchresults a.highlight_toggle{padding:0 21px 0 10px}.commentline .avatar{float:left;padding-right:.5em}span.sep{padding:0 .5em 0 .2em}.pages a:first-child,.pages span:first-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.pages a:last-child,.pages span:last-child{border-bottom-left-radius:3px;border-top-left-radius:3px;border-width:1px 0 1px 1px}.pages .currentPage,.pages .inactive,.pages a{border-width:1px 0 1px 1px;float:right}.pages a[rel=last]{border-bottom-left-radius:3px;border-top-left-radius:3px}.close{left:auto}.alert .closebtn{left:-21px}.closebtn{float:left}#logo{float:right!important}.floating{box-shadow:0 0 2px 3px rgba(0,0,0,.4)}.table .sorting_asc{background:url(../images/asc.gif) no-repeat scroll 0 #ecede6;padding-left:19px}.table .sorting_desc{padding-left:19px;background:url(../images/desc.gif) no-repeat scroll 0 #ecede6}.table .sorting{background:url(../images/ascdesc.gif) no-repeat scroll 0 #ecede6}.table .nosort,.table .nosort.sorting,.table .nosort.sorting_asc,.table .nosort.sorting_desc,.table .sorting{padding-left:19px}.tags ul{margin-right:0}.coverimages{float:left}#i18nMenu{margin-right:1em}#overdrive-results{padding-right:1em}.navbar .pull-right{float:left}
\ No newline at end of file
diff --git a/koha-tmpl/opac-tmpl/bootstrap/css/src/right-to-left.scss b/koha-tmpl/opac-tmpl/bootstrap/css/src/right-to-left.scss
deleted file mode 100644 (file)
index fba7f5b..0000000
+++ /dev/null
@@ -1,569 +0,0 @@
-.popup {
-    padding-left: 0;
-    padding-right: 0;
-}
-
-a {
-    &.cancel {
-        padding-right: 1em;
-    }
-
-    &.addtocart,
-    &.addtoshelf,
-    &.highlight_toggle,
-    &.incart,
-    &.print-large,
-    &.reserve {
-        padding-right: 35px;
-    }
-
-    &.brief,
-    &.tag_add,
-    &.detail {
-        padding-right: 27px;
-    }
-
-    &.download {
-        padding-right: 20px;
-    }
-
-    &.editshelf {
-        padding-right: 26px;
-    }
-
-    &.hide {
-        padding-right: 26px;
-    }
-
-    &.empty,
-    &.print-small {
-        padding-right: 30px;
-    }
-
-    &.hold,
-    &.new {
-        padding-right: 23px;
-    }
-
-    &.removeitems,
-    &.deleteshelf {
-        padding-right: 25px;
-    }
-
-    &.send {
-        padding-right: 28px;
-    }
-}
-
-h1 {
-    &#libraryname {
-        float: right !important;
-    }
-}
-
-input.hold {
-    padding-right: 23px;
-}
-
-caption {
-    text-align: right;
-}
-
-#basketcount {
-    span {
-        margin: 0 .9em 0 0;
-    }
-}
-
-#koha_url p {
-    float: left;
-}
-
-.actions {
-    a {
-        &.hold {
-            margin-left: 1em;
-            padding-right: 21px;
-        }
-
-        &.addtocart {
-            margin-left: 1em;
-            padding-right: 20px;
-        }
-
-        &.addtoshelf {
-            margin-left: 1em;
-            padding-right: 20px;
-        }
-
-        &.addtolist {
-            margin-left: 1em;
-            padding-right: 20px;
-        }
-
-        &.tag_add {
-            margin-left: 1em;
-            padding-right: 20px;
-        }
-
-        /* List contents remove from list link */
-        &.removefromlist {
-            margin-left: 1em;
-            padding-right: 15px;
-        }
-    }
-}
-
-.ui-tabs .ui-tabs-nav li {
-    margin-left: .4em;
-}
-
-.statictabs {
-    li {
-        float: right;
-        margin-left: .4em;
-
-        a {
-            float: right;
-        }
-    }
-}
-
-#bookcover {
-    float: right;
-
-    img {
-        margin: 0 0 1em 1em;
-    }
-
-     .no-image {
-        margin-left: 10px;
-    }
-}
-
-th.sum {
-    text-align: left;
-}
-
-th[scope=row] {
-    text-align: left;
-}
-
-fieldset {
-    &.rows {
-        clear: right;
-        float: right;
-
-        label,
-        .label {
-            float: right;
-            margin-left: 1em;
-            text-align: left;
-        }
-
-        ol {
-            &.lradio {
-                label {
-                    margin-left: 0;
-
-                    &.lradio {
-                        float: right;
-                        margin-left: 1em;
-                    }
-                }
-            }
-        }
-
-        li {
-            clear: right;
-            float: right;
-
-            &.lradio {
-                padding-right: 8.5em;
-
-                label {
-                    margin: 0 1em 0 0;
-                }
-            }
-        }
-    }
-}
-
-div.rows {
-    float: right;
-    clear: right;
-
-    .label {
-        float: right;
-        margin-left: 1em;
-        text-align: right;
-    }
-
-    ol {
-        margin-right: 0;
-        padding: .5em 0 0 1em;
-    }
-
-    li {
-
-        clear: right;
-        float: right;
-    }
-
-    ul {
-        li {
-            margin-right: 7.3em;
-
-            &:first-child {
-                margin-right: 0;
-            }
-        }
-    }
-}
-
-.toolbar {
-    padding: 3px 5px 5px 3px;
-
-    label {
-        margin-right: .5em;
-    }
-
-    .hold,
-    #tagsel_tag {
-        padding-right: 28px;
-    }
-
-    li {
-        a {
-            border-right: 1px solid #E8E8E8;
-        }
-
-        &:first-child {
-            a {
-                border-right: 0;
-            }
-        }
-    }
-
-    ul {
-        padding-right: 0;
-    }
-}
-
-#basket .toolbar {
-    padding: 7px 9px 9px 5px;
-}
-
-#selections-toolbar {
-    padding-right: 10px;
-}
-
-#tagsel_span input.submit,
-#tagsel_tag {
-    padding-right: 25px;
-}
-
-#tagsel_span input.disabled,
-#tagsel_span input.disabled:hover,
-#tagsel_span input.hold.disabled,
-#tagsel_span input.hold.disabled:hover,
-#selections-toolbar input.hold.disabled,
-#selections-toolbar input.hold.disabled:hover,
-#selections-toolbar a.disabled,
-#selections-toolbar a.disabled:hover {
-    padding-right: 23px;
-}
-
-#views {
-    padding: 0 .2em .2em 2em;
-}
-
-#bibliodescriptions,
-#isbdcontents {
-    clear: right;
-}
-
-/* pagination */
-.results-pagination {
-    right: -1px;
-}
-
-
-.back {
-    float: left;
-}
-
-.pagination_list {
-    ul {
-        padding-right: 0;
-    }
-
-    li {
-        a {
-            padding-right: 0;
-        }
-    }
-
-    .li_pag_index {
-        float: right;
-        padding-left: 10px;
-        text-align: left;
-    }
-}
-
-.pg_menu {
-    li {
-        &.back_results {
-            a {
-                border-left: 1px solid #D0D0D0;
-                border-right: 1px solid #D0D0D0;
-            }
-        }
-
-        a,
-        span {
-            float: right;
-        }
-    }
-}
-
-#listResults{
-    li {
-        margin-left: 1px;
-    }
-}
-
-/* nav */
-.nav_pages {
-    .close_pagination {
-        left: 3px;
-        padding-left: 10px;
-    }
-
-    li {
-        float: right;
-
-        ul {
-            float: right;
-        }
-    }
-}
-
-#format,
-#furthersearches {
-    padding-right: 35px;
-}
-
-.highlight_controls {
-    float: right;
-}
-
-input.editshelf {
-    padding-right: 29px;
-}
-
-.newshelf {
-    padding-right: 28px;
-}
-
-.deleteshelf {
-    padding-right: 25px;
-}
-
-#login4tags {
-    padding-right: 20px;
-}
-
-.tag_results_input {
-    margin-right: 1em;
-}
-
-#social_networks {
-    span {
-        float: right;
-        margin: .5em .5em .5em 0 !important;
-    }
-    div {
-        float: right !important;
-        margin: .5em .2em .5em 0 !important;
-    }
-}
-
-#marc {
-    td,
-    th {
-        text-align: right;
-    }
-    .results_summary {
-        clear:  right;
-    }
-}
-
-#plainmarc th {
-    text-align: right;
-}
-
-#renewcontrols {
-     float: left;
-}
-
-.authstanza li {
-    margin-right: 0.5em;
-}
-
-#didyoumean {
-    text-align: right;
-}
-
-.authlink {
-    padding-right: 0.25em;
-}
-
-#search-facets,
-#menu {
-    h4 {
-        a {
-            border-radius: 8px 0 0 8px;
-        }
-    }
-}
-
-#menu {
-    border: 0 solid #D8D8D8;
-    border-left-width: 1px;
-
-    li {
-        a {
-            border-radius: 0 5px 5px 0;
-            margin-left: -1px;
-        }
-
-        &.active {
-            a {
-                border-left-width: 0;
-                border-right-width: 1px;
-            }
-        }
-    }
-}
-
-/* Search results add to cart (lists disabled) */
-.addto a.addtocart {
-    padding-right: 33px;
-}
-
-.searchresults {
-    a {
-        &.highlight_toggle {
-            padding: 0 21px 0 10px;
-        }
-    }
-}
-
-.commentline .avatar {
-    float: left;
-    padding-right: .5em;
-}
-
-span.sep {
-    padding: 0 .5em 0 .2em;
-}
-
-/* style for PM-generated pagination bar */
-
-.pages span:first-child,
-.pages a:first-child {
-    border-bottom-right-radius: 3px;
-    border-top-right-radius: 3px;
-}
-
-.pages span:last-child,
-.pages a:last-child {
-    border-bottom-left-radius: 3px;
-    border-top-left-radius: 3px;
-    border-width: 1px 0 1px 1px;
-}
-
-.pages .inactive,
-.pages .currentPage,
-.pages a {
-    border-width: 1px 0 1px 1px;
-    float: right;
-}
-
-.pages a[rel='last'] {
-    border-bottom-left-radius: 3px;
-    border-top-left-radius: 3px;
-}
-
-.close {
-    left: auto;
-}
-
-/* Redefine a new style for Bootstrap's class "close" since we use that already */
-/* Use <a class="closebtn" href="#">&times;</a> */
-.alert .closebtn {
-    left:-21px;
-}
-
-.closebtn {
-    float: left;
-}
-
-#logo {
-    float: right !important;
-}
-
-/* Class to be added to toolbar when it starts being fixed at the top of the screen*/
-.floating {
-    box-shadow: 0 0 2px 3px rgba( 0, 0, 0, .4 );
-}
-
-
-.table {
-    .sorting_asc {
-        background: url("../images/asc.gif") no-repeat scroll left center #ECEDE6;
-        padding-left: 19px;
-    }
-
-    .sorting_desc {
-        padding-left: 19px;
-        background: url("../images/desc.gif") no-repeat scroll left center #ECEDE6;
-    }
-
-    .sorting {
-        padding-left: 19px;
-        background: url("../images/ascdesc.gif") no-repeat scroll left center #ECEDE6;
-    }
-
-    .nosort,
-    .nosort.sorting_asc,
-    .nosort.sorting_desc,
-    .nosort.sorting {
-        padding-left: 19px;
-    }
-}
-
-.tags {
-    ul {
-        margin-right: 0;
-    }
-}
-
-.coverimages {
-    float: left;
-}
-
-#i18nMenu {
-    margin-right: 1em;
-}
-
-#overdrive-results {
-    padding-right: 1em;
-}
-
-.navbar {
-    .pull-right {
-        float: left;
-    }
-}
index a85e600..f0e4203 100644 (file)
@@ -7,16 +7,18 @@
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <link rel="shortcut icon" href="[% IF ( Koha.Preference('OpacFavicon') ) %][% Koha.Preference('OpacFavicon') | url %][% ELSE %][% interface | url %]/[% theme | url %]/images/favicon.ico[% END %]" type="image/x-icon" />
 [% IF ( bidi ) %]
-    [% Asset.css("lib/bootstrap/css/bootstrap-rtl.min.css") | $raw %]
     [% Asset.css("lib/jquery/jquery-ui-rtl-1.12.1.min.css") | $raw %]
-    [% Asset.css("css/right-to-left.css") | $raw %]
 [% ELSE %]
     [% Asset.css("lib/jquery/jquery-ui-1.12.1.min.css") | $raw %]
 [% END %]
 [% IF ( Koha.Preference('opaclayoutstylesheet') ) %]
     [% SET opaclayoutstylesheet = Koha.Preference('opaclayoutstylesheet') %]
 [% ELSE %]
-    [% SET opaclayoutstylesheet = 'opac.css' %]
+    [% IF ( bidi ) %]
+        [% SET opaclayoutstylesheet = 'opac-rtl.css' %]
+    [% ELSE %]
+        [% SET opaclayoutstylesheet = 'opac.css' %]
+    [% END %]
 [% END %]
 [% IF (opaclayoutstylesheet.match('^https?:|^\/')) %]
     <link rel="stylesheet" type="text/css" href="[% opaclayoutstylesheet | url %]" />
 [% IF ( opac_css_override ) %]
     <link rel="stylesheet" type="text/css" href="[% interface | url %]/[% theme | url %]/css/[% opac_css_override | url %]" />
 [% END %]
-[% Asset.css("css/print.css", { media = "print" }) | $raw %]
+[% IF ( bidi ) %]
+    [% Asset.css("css/print-rtl.css", { media = "print" }) | $raw %]
+[% ELSE %]
+    [% Asset.css("css/print.css", { media = "print" }) | $raw %]
+[% END %]
 [% IF ( Koha.Preference('OPACUserCSS') ) %]
     <style>[% Koha.Preference('OPACUserCSS') | $raw %]</style>
 [% END %]
index fe552a9..d719cc0 100644 (file)
 [% ELSE %]
     <link rel="shortcut icon" href="[% interface | html %]/[% theme | html %]/images/favicon.ico" type="image/x-icon" />
 [% END %]
-[% Asset.css("lib/jquery/jquery-ui-1.12.1.css") | $raw %]
-[% Asset.css("lib/font-awesome/css/font-awesome.min.css") | $raw %]
-[% Asset.css("css/sco.css") | $raw %]
+[% IF ( bidi ) %]
+    [% Asset.css("lib/jquery/jquery-ui-rtl-1.12.1.min.css") | $raw %]
+    [% Asset.css("css/sco-rtl.css") | $raw %]
+[% ELSE %]
+    [% Asset.css("lib/jquery/jquery-ui-1.12.1.css") | $raw %]
+    [% Asset.css("css/sco.css") | $raw %]
+[% END %]
 [% IF ( Koha.Preference('OPACUserCSS') ) %]<style>[% Koha.Preference('OPACUserCSS') | $raw %]</style>[% END %]
 [% IF ( Koha.Preference('SelfCheckInUserCSS') ) %]<style>[% Koha.Preference('SelfCheckInUserCSS') | $raw %]</style>[% END %]
 <script>
index 8ffb3f4..90a376d 100644 (file)
@@ -5,7 +5,11 @@
 <title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha [% END %] &rsaquo; Self checkout &rsaquo; Print Receipt for [% borrowernumber | html %]</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <link rel="shortcut icon" href="[% IF ( OpacFavicon  ) %][% OpacFavicon | url %][% ELSE %][% interface | html %]/[% theme | html %]/images/favicon.ico[% END %]" type="image/x-icon" />
-[% Asset.css("css/print.css") | $raw %]
+[% IF ( bidi ) %]
+    [% Asset.css("css/print-rtl.css", { media = "print" }) | $raw %]
+[% ELSE %]
+    [% Asset.css("css/print.css", { media = "print" }) | $raw %]
+[% END %]
 [% IF stylesheet %]
 <link rel="stylesheet" type="text/css" href="[% stylesheet | $raw %]" />
 [% END %]
index 73deb2f..8020d5e 100644 (file)
 [% ELSE %]
 <link rel="shortcut icon" href="[% interface | html %]/[% theme | html %]/images/favicon.ico" type="image/x-icon" />
 [% END %]
-[% Asset.css("lib/jquery/jquery-ui-1.12.1.css") | $raw %]
 [% Asset.css("lib/font-awesome/css/font-awesome.min.css") | $raw %]
-[% Asset.css("css/sco.css") | $raw %]
+[% IF ( bidi ) %]
+    [% Asset.css("lib/jquery/jquery-ui-rtl-1.12.1.min.css") | $raw %]
+    [% Asset.css("css/sco-rtl.css") | $raw %]
+[% ELSE %]
+    [% Asset.css("lib/jquery/jquery-ui-1.12.1.css") | $raw %]
+    [% Asset.css("css/sco.css") | $raw %]
+[% END %]
 [% IF ( Koha.Preference('OPACUserCSS') ) %]<style>[% Koha.Preference('OPACUserCSS') | $raw %]</style>[% END %]
 [% IF ( Koha.Preference('SCOUserCSS') ) %]<style>[% Koha.Preference('SCOUserCSS') | $raw %]</style>[% END %]
 <script>
index 4bc65e6..da53cab 100644 (file)
     "gulp": "^4.0.2",
     "gulp-autoprefixer": "^4.0.0",
     "gulp-cssnano": "^2.1.2",
+    "gulp-rename": "^2.0.0",
+    "gulp-rtlcss": "^1.4.1",
     "gulp-sass": "^3.1.0",
     "gulp-sourcemaps": "^2.6.1",
     "minimist": "^1.2.5"
   },
-  "devDependencies": {},
   "scripts": {
     "build": "node_modules/.bin/gulp build",
     "css": "node_modules/.bin/gulp css",
index 6a16c7e..f8cb615 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
@@ -32,9 +32,9 @@ acorn@5.X, acorn@^5.0.3:
   integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==
 
 ajv@^6.12.3:
-  version "6.12.3"
-  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706"
-  integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==
+  version "6.12.4"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234"
+  integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==
   dependencies:
     fast-deep-equal "^3.1.1"
     fast-json-stable-stringify "^2.0.0"
@@ -336,9 +336,9 @@ aws-sign2@~0.7.0:
   integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
 
 aws4@^1.8.0:
-  version "1.10.0"
-  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2"
-  integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==
+  version "1.10.1"
+  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428"
+  integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==
 
 bach@^1.0.0:
   version "1.2.0"
@@ -513,14 +513,14 @@ caniuse-api@^1.5.2:
     lodash.uniq "^4.5.0"
 
 caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
-  version "1.0.30001111"
-  resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001111.tgz#b2f40ef5cdfbd6cdf3d3980bc5b0cb5ec22a2856"
-  integrity sha512-efsNw7RIZ3rto/DcqYxTGAOXeWP11h15WC9Il5UcFUcMtoF5MoKJ74zHau4PRI5+NpfVnbGmatXJFRmlqZPMAA==
+  version "1.0.30001124"
+  resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001124.tgz#b8bcd26a3a482ef633f9b8d934d9414ef0cf0e57"
+  integrity sha512-IlMKWAmKcQkx7QDelzH/yl+vMgXBhhQXxN4awbWSAuGgSbU3AuxTrHqOPA5Wsu1N1wRLzkpwgIa33AiVEPpDZQ==
 
 caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805:
-  version "1.0.30001111"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001111.tgz#dd0ce822c70eb6c7c068e4a55c22e19ec1501298"
-  integrity sha512-xnDje2wchd/8mlJu8sXvWxOGvMgv+uT3iZ3bkIAynKOzToCssWCmkz/ZIkQBs/2pUB4uwnJKVORWQ31UkbVjOg==
+  version "1.0.30001124"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001124.tgz#5d9998190258e11630d674fc50ea8e579ae0ced2"
+  integrity sha512-zQW8V3CdND7GHRH6rxm6s59Ww4g/qGWTheoboW9nfeMg7sUoopIfKCcNZUjwYRCOrvereh3kwDpZj4VLQ7zGtA==
 
 caseless@~0.12.0:
   version "0.12.0"
@@ -538,7 +538,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
     strip-ansi "^3.0.0"
     supports-color "^2.0.0"
 
-chalk@^2.4.1:
+chalk@^2.4.1, chalk@^2.4.2:
   version "2.4.2"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
   integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -711,6 +711,11 @@ colormin@^1.0.5:
     css-color-names "0.0.4"
     has "^1.0.1"
 
+colors@~0.6.0-1:
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc"
+  integrity sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=
+
 colors@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
@@ -723,6 +728,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
   dependencies:
     delayed-stream "~1.0.0"
 
+commander@~2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.1.0.tgz#d121bbae860d9992a3d517ba96f56588e47c6781"
+  integrity sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=
+
 component-emitter@^1.2.1:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
@@ -1002,9 +1012,9 @@ ecc-jsbn@~0.1.1:
     safer-buffer "^2.1.0"
 
 electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30:
-  version "1.3.523"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.523.tgz#494080b318ba929614eebd04405b94c359ea9333"
-  integrity sha512-D4/3l5DpciddD92IDRtpLearQSGzly8FwBJv+nITvLH8YJrFabpDFe4yuiOJh2MS4/EsXqyQTXyw1toeYPtshQ==
+  version "1.3.562"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.562.tgz#79c20277ee1c8d0173a22af00e38433b752bc70f"
+  integrity sha512-WhRe6liQ2q/w1MZc8mD8INkenHivuHdrr4r5EQHNomy3NJux+incP6M6lDMd0paShP3MD0WGe5R1TWmEClf+Bg==
 
 emoji-regex@^7.0.1:
   version "7.0.3"
@@ -1177,6 +1187,11 @@ fast-json-stable-stringify@^2.0.0:
   resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
   integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
 
+fast-levenshtein@^1.0.0:
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz#e6a754cc8f15e58987aa9cbd27af66fd6f4e5af9"
+  integrity sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=
+
 file-uri-to-path@1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
@@ -1227,6 +1242,14 @@ findup-sync@^3.0.0:
     micromatch "^3.0.4"
     resolve-dir "^1.0.1"
 
+findup@^0.1.5:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/findup/-/findup-0.1.5.tgz#8ad929a3393bac627957a7e5de4623b06b0e2ceb"
+  integrity sha1-itkpozk7rGJ5V6fl3kYjsGsOLOs=
+  dependencies:
+    colors "~0.6.0-1"
+    commander "~2.1.0"
+
 fined@^1.0.1:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b"
@@ -1510,6 +1533,21 @@ gulp-cssnano@^2.1.2:
     plugin-error "^1.0.1"
     vinyl-sourcemaps-apply "^0.2.1"
 
+gulp-rename@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-2.0.0.tgz#9bbc3962b0c0f52fc67cd5eaff6c223ec5b9cf6c"
+  integrity sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==
+
+gulp-rtlcss@^1.4.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/gulp-rtlcss/-/gulp-rtlcss-1.4.1.tgz#c772dd1e4c8b16b7238c846e52371e3defb5e0ef"
+  integrity sha512-xXqTnmNbcjA6K9ogR36i2SaN8E5CWTCtRQGSY2k0W3cOISGnNkBTAt0GNThlq9iJT0ttR759kopDGn5PZTH4kg==
+  dependencies:
+    plugin-error "^1.0.1"
+    rtlcss "^2.4.0"
+    through2 "^2.0.5"
+    vinyl-sourcemaps-apply "^0.2.1"
+
 gulp-sass@^3.1.0:
   version "3.2.1"
   resolved "https://registry.yarnpkg.com/gulp-sass/-/gulp-sass-3.2.1.tgz#2e3688a96fd8be1c0c01340750c191b2e79fab94"
@@ -2225,9 +2263,9 @@ lodash.uniq@^4.5.0:
   integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
 
 lodash@^4.0.0, lodash@^4.17.12, lodash@^4.17.15, lodash@~4.17.10:
-  version "4.17.19"
-  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
-  integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
+  version "4.17.20"
+  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
+  integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
 
 loud-rejection@^1.0.0:
   version "1.6.0"
@@ -3048,7 +3086,7 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
     source-map "^0.5.6"
     supports-color "^3.2.3"
 
-postcss@^6.0.1, postcss@^6.0.17:
+postcss@^6.0.1, postcss@^6.0.17, postcss@^6.0.23:
   version "6.0.23"
   resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
   integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
@@ -3348,6 +3386,17 @@ rimraf@2:
   dependencies:
     glob "^7.1.3"
 
+rtlcss@^2.4.0:
+  version "2.6.0"
+  resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-2.6.0.tgz#2c4fa65bb02d23479c291cad51fc07accd9242e5"
+  integrity sha512-eRctJtYmVFgCUeGMm6uzrJE0P/1ipuaKHY9TaksDt+UZ7SLMVoatQZePPFAJeSNJ8eh3QJ/ROb44bl0wgaXksQ==
+  dependencies:
+    chalk "^2.4.2"
+    findup "^0.1.5"
+    mkdirp "^0.5.1"
+    postcss "^6.0.23"
+    strip-json-comments "^2.0.0"
+
 safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2:
   version "5.2.1"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
@@ -3671,6 +3720,11 @@ strip-indent@^1.0.1:
   dependencies:
     get-stdin "^4.0.1"
 
+strip-json-comments@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+  integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
 supports-color@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
@@ -3728,7 +3782,7 @@ through2-filter@^3.0.0:
     through2 "~2.0.0"
     xtend "~4.0.0"
 
-through2@2.X, through2@^2.0.0, through2@^2.0.3, through2@~2.0.0:
+through2@2.X, through2@^2.0.0, through2@^2.0.3, through2@^2.0.5, through2@~2.0.0:
   version "2.0.5"
   resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
   integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
@@ -3827,9 +3881,9 @@ type@^1.0.1:
   integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
 
 type@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3"
-  integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f"
+  integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==
 
 typedarray@^0.0.6:
   version "0.0.6"
@@ -3847,15 +3901,16 @@ undertaker-registry@^1.0.0:
   integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=
 
 undertaker@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b"
-  integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.3.0.tgz#363a6e541f27954d5791d6fa3c1d321666f86d18"
+  integrity sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==
   dependencies:
     arr-flatten "^1.0.1"
     arr-map "^2.0.0"
     bach "^1.0.0"
     collection-map "^1.0.0"
     es6-weak-map "^2.0.1"
+    fast-levenshtein "^1.0.0"
     last-run "^1.1.0"
     object.defaults "^1.0.0"
     object.reduce "^1.0.0"
@@ -3903,9 +3958,9 @@ upath@^1.1.1:
   integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
 
 uri-js@^4.2.2:
-  version "4.2.2"
-  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
-  integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602"
+  integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==
   dependencies:
     punycode "^2.1.0"