Do not extend standard CSS classes

This commit is contained in:
Christopher C. Wells 2021-11-13 05:38:25 -08:00
parent 13a81f6336
commit 9371b1a100
16 changed files with 427 additions and 304 deletions

View File

@ -1,18 +1,24 @@
%card-header-text {
font-size: $h4-font-size;
font-weight: $headings-font-weight;
line-height: $headings-line-height;
}
.card-dashboard {
@extend .mb-3;
margin-bottom: $spacer;
.card-header {
@extend .h4;
@extend %card-header-text;
margin-bottom: 0;
}
.card-body {
.card-title {
@extend .h4;
@extend %card-header-text;
}
.card-text {
@extend .text-muted;
color: $text-muted;
}
// Offset horizontal padding in dashboard cards with a carousel.
@ -26,14 +32,15 @@
}
.card-diaperchange {
@extend .border-danger;
border-color: theme-color('danger');
.card-header, .card-header a {
@extend .text-white, .bg-danger;
background-color: theme-color('danger');
color: theme-color('light');
}
.card-body {
@extend .text-danger;
color: theme-color('danger');
}
.progress {
@ -42,14 +49,15 @@
}
.card-feeding {
@extend .border-primary;
border-color: theme-color('primary');
.card-header, .card-header a {
@extend .text-white, .bg-primary;
background-color: theme-color('primary');
color: theme-color('light');
}
.card-body {
@extend .text-primary;
color: theme-color('primary');
// Last feeding method header in card.
.last-feeding-method {
@ -59,22 +67,28 @@
}
.card-sleep {
@extend .border-secondary;
border-color: theme-color('secondary');
.card-header, .card-header a {
@extend .text-white, .bg-secondary;
background-color: theme-color('secondary');
color: theme-color('light');
}
}
.card-statistics {
@extend .border-light;
.card-statistics, .card-timer {
border-color: theme-color('light');
.card-header {
@extend .text-dark, .bg-light;
background-color: theme-color('light');
color: theme-color('dark');
a {
color: theme-color('dark');
}
}
.card-body {
@extend .text-light;
color: theme-color('light');
.container {
padding: 0;
@ -82,26 +96,15 @@
}
}
.card-timer {
@extend .border-light;
.card-header, .card-header a {
@extend .text-dark, .bg-light;
}
.card-body {
@extend .text-light;
}
}
.card-tummytime {
@extend .border-success;
border-color: theme-color('success');
.card-header, .card-header a {
@extend .text-white, .bg-success;
background-color: theme-color('success');
color: theme-color('light');
}
.card-body {
@extend .text-success;
color: theme-color('success');
}
}

Binary file not shown.

View File

@ -353,7 +353,7 @@ template {
}
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .card-dashboard .card-body .card-title, .card-dashboard .card-header, .h5, .h6 {
.h1, .h2, .h3, .h4, .h5, .h6 {
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
@ -371,7 +371,7 @@ h3, .h3 {
font-size: 1.75rem;
}
h4, .h4, .card-dashboard .card-body .card-title, .card-dashboard .card-header {
h4, .h4 {
font-size: 1.5rem;
}
@ -6283,39 +6283,33 @@ a.close.disabled {
vertical-align: text-top !important;
}
.bg-primary, .card-feeding .card-header, .card-feeding .card-header a {
.bg-primary {
background-color: #37abe9 !important;
}
a.bg-primary:hover, .card-feeding a.card-header:hover, .card-feeding .card-header a:hover, a.bg-primary:focus, .card-feeding a.card-header:focus, .card-feeding .card-header a:focus,
a.bg-primary:hover, a.bg-primary:focus,
button.bg-primary:hover,
.card-feeding button.card-header:hover,
button.bg-primary:focus,
.card-feeding button.card-header:focus {
button.bg-primary:focus {
background-color: #1793d6 !important;
}
.bg-secondary, .card-sleep .card-header, .card-sleep .card-header a {
.bg-secondary {
background-color: #ff8f00 !important;
}
a.bg-secondary:hover, .card-sleep a.card-header:hover, .card-sleep .card-header a:hover, a.bg-secondary:focus, .card-sleep a.card-header:focus, .card-sleep .card-header a:focus,
a.bg-secondary:hover, a.bg-secondary:focus,
button.bg-secondary:hover,
.card-sleep button.card-header:hover,
button.bg-secondary:focus,
.card-sleep button.card-header:focus {
button.bg-secondary:focus {
background-color: #cc7200 !important;
}
.bg-success, .card-tummytime .card-header, .card-tummytime .card-header a {
.bg-success {
background-color: #239556 !important;
}
a.bg-success:hover, .card-tummytime a.card-header:hover, .card-tummytime .card-header a:hover, a.bg-success:focus, .card-tummytime a.card-header:focus, .card-tummytime .card-header a:focus,
a.bg-success:hover, a.bg-success:focus,
button.bg-success:hover,
.card-tummytime button.card-header:hover,
button.bg-success:focus,
.card-tummytime button.card-header:focus {
button.bg-success:focus {
background-color: #196c3e !important;
}
@ -6339,29 +6333,23 @@ button.bg-warning:focus {
background-color: #ffac0f !important;
}
.bg-danger, .card-diaperchange .card-header, .card-diaperchange .card-header a {
.bg-danger {
background-color: #a72431 !important;
}
a.bg-danger:hover, .card-diaperchange a.card-header:hover, .card-diaperchange .card-header a:hover, a.bg-danger:focus, .card-diaperchange a.card-header:focus, .card-diaperchange .card-header a:focus,
a.bg-danger:hover, a.bg-danger:focus,
button.bg-danger:hover,
.card-diaperchange button.card-header:hover,
button.bg-danger:focus,
.card-diaperchange button.card-header:focus {
button.bg-danger:focus {
background-color: #7d1b25 !important;
}
.bg-light, .card-timer .card-header, .card-timer .card-header a, .card-statistics .card-header {
.bg-light {
background-color: #f8f9fa !important;
}
a.bg-light:hover, .card-timer a.card-header:hover, .card-timer .card-header a:hover, .card-statistics a.card-header:hover, a.bg-light:focus, .card-timer a.card-header:focus, .card-timer .card-header a:focus, .card-statistics a.card-header:focus,
a.bg-light:hover, a.bg-light:focus,
button.bg-light:hover,
.card-timer button.card-header:hover,
.card-statistics button.card-header:hover,
button.bg-light:focus,
.card-timer button.card-header:focus,
.card-statistics button.card-header:focus {
button.bg-light:focus {
background-color: #dae0e5 !important;
}
@ -6443,15 +6431,15 @@ button.bg-error:focus {
border-left: 0 !important;
}
.border-primary, .card-feeding {
.border-primary {
border-color: #37abe9 !important;
}
.border-secondary, .card-sleep {
.border-secondary {
border-color: #ff8f00 !important;
}
.border-success, .card-tummytime {
.border-success {
border-color: #239556 !important;
}
@ -6463,11 +6451,11 @@ button.bg-error:focus {
border-color: #ffbe42 !important;
}
.border-danger, .card-diaperchange {
.border-danger {
border-color: #a72431 !important;
}
.border-light, .card-timer, .card-statistics {
.border-light {
border-color: #f8f9fa !important;
}
@ -7814,7 +7802,7 @@ button.bg-error:focus {
margin-right: 1rem !important;
}
.mb-3, .card-dashboard,
.mb-3,
.my-3 {
margin-bottom: 1rem !important;
}
@ -10026,15 +10014,15 @@ button.bg-error:focus {
font-style: italic !important;
}
.text-white, .card-tummytime .card-header, .card-tummytime .card-header a, .card-sleep .card-header, .card-sleep .card-header a, .card-feeding .card-header, .card-feeding .card-header a, .card-diaperchange .card-header, .card-diaperchange .card-header a {
.text-white {
color: #fff !important;
}
.text-primary, .card-feeding .card-body {
.text-primary {
color: #37abe9 !important;
}
a.text-primary:hover, .card-feeding a.card-body:hover, a.text-primary:focus, .card-feeding a.card-body:focus {
a.text-primary:hover, a.text-primary:focus {
color: #1583bf !important;
}
@ -10046,11 +10034,11 @@ a.text-secondary:hover, a.text-secondary:focus {
color: #b36400 !important;
}
.text-success, .card-tummytime .card-body {
.text-success {
color: #239556 !important;
}
a.text-success:hover, .card-tummytime a.card-body:hover, a.text-success:focus, .card-tummytime a.card-body:focus {
a.text-success:hover, a.text-success:focus {
color: #145732 !important;
}
@ -10070,27 +10058,27 @@ a.text-warning:hover, a.text-warning:focus {
color: #f5a000 !important;
}
.text-danger, .card-diaperchange .card-body {
.text-danger {
color: #a72431 !important;
}
a.text-danger:hover, .card-diaperchange a.card-body:hover, a.text-danger:focus, .card-diaperchange a.card-body:focus {
a.text-danger:hover, a.text-danger:focus {
color: #68161f !important;
}
.text-light, .card-timer .card-body, .card-statistics .card-body {
.text-light {
color: #f8f9fa !important;
}
a.text-light:hover, .card-timer a.card-body:hover, .card-statistics a.card-body:hover, a.text-light:focus, .card-timer a.card-body:focus, .card-statistics a.card-body:focus {
a.text-light:hover, a.text-light:focus {
color: #cbd3da !important;
}
.text-dark, .card-timer .card-header, .card-timer .card-header a, .card-statistics .card-header {
.text-dark {
color: #343a40 !important;
}
a.text-dark:hover, .card-timer a.card-header:hover, .card-timer .card-header a:hover, .card-statistics a.card-header:hover, a.text-dark:focus, .card-timer a.card-header:focus, .card-timer .card-header a:focus, .card-statistics a.card-header:focus {
a.text-dark:hover, a.text-dark:focus {
color: #121416 !important;
}
@ -10114,7 +10102,7 @@ a.text-error:hover, a.text-error:focus {
color: #ced4da !important;
}
.text-muted, .card-dashboard .card-body .card-text {
.text-muted {
color: #6c757d !important;
}
@ -10759,9 +10747,21 @@ h3 {
font-size: 6rem;
}
}
.card-dashboard .card-body .card-title, .card-dashboard .card-header {
font-size: 1.5rem;
font-weight: 500;
line-height: 1.2;
}
.card-dashboard {
margin-bottom: 1rem;
}
.card-dashboard .card-header {
margin-bottom: 0;
}
.card-dashboard .card-body .card-text {
color: #6c757d;
}
.card-dashboard .card-body .carousel {
margin-left: -1.25rem;
margin-right: -1.25rem;
@ -10769,18 +10769,70 @@ h3 {
padding-right: 1.25rem;
}
.card-diaperchange {
border-color: #a72431;
}
.card-diaperchange .card-header, .card-diaperchange .card-header a {
background-color: #a72431;
color: #f8f9fa;
}
.card-diaperchange .card-body {
color: #a72431;
}
.card-diaperchange .progress {
height: 2rem;
}
.card-feeding {
border-color: #37abe9;
}
.card-feeding .card-header, .card-feeding .card-header a {
background-color: #37abe9;
color: #f8f9fa;
}
.card-feeding .card-body {
color: #37abe9;
}
.card-feeding .card-body .last-feeding-method {
font-size: 2em;
}
.card-statistics .card-body .container {
.card-sleep {
border-color: #ff8f00;
}
.card-sleep .card-header, .card-sleep .card-header a {
background-color: #ff8f00;
color: #f8f9fa;
}
.card-statistics, .card-timer {
border-color: #f8f9fa;
}
.card-statistics .card-header, .card-timer .card-header {
background-color: #f8f9fa;
color: #343a40;
}
.card-statistics .card-header a, .card-timer .card-header a {
color: #343a40;
}
.card-statistics .card-body, .card-timer .card-body {
color: #f8f9fa;
}
.card-statistics .card-body .container, .card-timer .card-body .container {
padding: 0;
}
.card-tummytime {
border-color: #239556;
}
.card-tummytime .card-header, .card-tummytime .card-header a {
background-color: #239556;
color: #f8f9fa;
}
.card-tummytime .card-body {
color: #239556;
}
.child-actions {
flex-wrap: wrap;
}

Binary file not shown.

View File

@ -353,7 +353,7 @@ template {
}
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .card-dashboard .card-body .card-title, .card-dashboard .card-header, .h5, .h6 {
.h1, .h2, .h3, .h4, .h5, .h6 {
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
@ -371,7 +371,7 @@ h3, .h3 {
font-size: 1.75rem;
}
h4, .h4, .card-dashboard .card-body .card-title, .card-dashboard .card-header {
h4, .h4 {
font-size: 1.5rem;
}
@ -6283,39 +6283,33 @@ a.close.disabled {
vertical-align: text-top !important;
}
.bg-primary, .card-feeding .card-header, .card-feeding .card-header a {
.bg-primary {
background-color: #37abe9 !important;
}
a.bg-primary:hover, .card-feeding a.card-header:hover, .card-feeding .card-header a:hover, a.bg-primary:focus, .card-feeding a.card-header:focus, .card-feeding .card-header a:focus,
a.bg-primary:hover, a.bg-primary:focus,
button.bg-primary:hover,
.card-feeding button.card-header:hover,
button.bg-primary:focus,
.card-feeding button.card-header:focus {
button.bg-primary:focus {
background-color: #1793d6 !important;
}
.bg-secondary, .card-sleep .card-header, .card-sleep .card-header a {
.bg-secondary {
background-color: #ff8f00 !important;
}
a.bg-secondary:hover, .card-sleep a.card-header:hover, .card-sleep .card-header a:hover, a.bg-secondary:focus, .card-sleep a.card-header:focus, .card-sleep .card-header a:focus,
a.bg-secondary:hover, a.bg-secondary:focus,
button.bg-secondary:hover,
.card-sleep button.card-header:hover,
button.bg-secondary:focus,
.card-sleep button.card-header:focus {
button.bg-secondary:focus {
background-color: #cc7200 !important;
}
.bg-success, .card-tummytime .card-header, .card-tummytime .card-header a {
.bg-success {
background-color: #239556 !important;
}
a.bg-success:hover, .card-tummytime a.card-header:hover, .card-tummytime .card-header a:hover, a.bg-success:focus, .card-tummytime a.card-header:focus, .card-tummytime .card-header a:focus,
a.bg-success:hover, a.bg-success:focus,
button.bg-success:hover,
.card-tummytime button.card-header:hover,
button.bg-success:focus,
.card-tummytime button.card-header:focus {
button.bg-success:focus {
background-color: #196c3e !important;
}
@ -6339,29 +6333,23 @@ button.bg-warning:focus {
background-color: #ffac0f !important;
}
.bg-danger, .card-diaperchange .card-header, .card-diaperchange .card-header a {
.bg-danger {
background-color: #a72431 !important;
}
a.bg-danger:hover, .card-diaperchange a.card-header:hover, .card-diaperchange .card-header a:hover, a.bg-danger:focus, .card-diaperchange a.card-header:focus, .card-diaperchange .card-header a:focus,
a.bg-danger:hover, a.bg-danger:focus,
button.bg-danger:hover,
.card-diaperchange button.card-header:hover,
button.bg-danger:focus,
.card-diaperchange button.card-header:focus {
button.bg-danger:focus {
background-color: #7d1b25 !important;
}
.bg-light, .card-timer .card-header, .card-timer .card-header a, .card-statistics .card-header {
.bg-light {
background-color: #f8f9fa !important;
}
a.bg-light:hover, .card-timer a.card-header:hover, .card-timer .card-header a:hover, .card-statistics a.card-header:hover, a.bg-light:focus, .card-timer a.card-header:focus, .card-timer .card-header a:focus, .card-statistics a.card-header:focus,
a.bg-light:hover, a.bg-light:focus,
button.bg-light:hover,
.card-timer button.card-header:hover,
.card-statistics button.card-header:hover,
button.bg-light:focus,
.card-timer button.card-header:focus,
.card-statistics button.card-header:focus {
button.bg-light:focus {
background-color: #dae0e5 !important;
}
@ -6443,15 +6431,15 @@ button.bg-error:focus {
border-left: 0 !important;
}
.border-primary, .card-feeding {
.border-primary {
border-color: #37abe9 !important;
}
.border-secondary, .card-sleep {
.border-secondary {
border-color: #ff8f00 !important;
}
.border-success, .card-tummytime {
.border-success {
border-color: #239556 !important;
}
@ -6463,11 +6451,11 @@ button.bg-error:focus {
border-color: #ffbe42 !important;
}
.border-danger, .card-diaperchange {
.border-danger {
border-color: #a72431 !important;
}
.border-light, .card-timer, .card-statistics {
.border-light {
border-color: #f8f9fa !important;
}
@ -7814,7 +7802,7 @@ button.bg-error:focus {
margin-right: 1rem !important;
}
.mb-3, .card-dashboard,
.mb-3,
.my-3 {
margin-bottom: 1rem !important;
}
@ -10026,15 +10014,15 @@ button.bg-error:focus {
font-style: italic !important;
}
.text-white, .card-tummytime .card-header, .card-tummytime .card-header a, .card-sleep .card-header, .card-sleep .card-header a, .card-feeding .card-header, .card-feeding .card-header a, .card-diaperchange .card-header, .card-diaperchange .card-header a {
.text-white {
color: #fff !important;
}
.text-primary, .card-feeding .card-body {
.text-primary {
color: #37abe9 !important;
}
a.text-primary:hover, .card-feeding a.card-body:hover, a.text-primary:focus, .card-feeding a.card-body:focus {
a.text-primary:hover, a.text-primary:focus {
color: #1583bf !important;
}
@ -10046,11 +10034,11 @@ a.text-secondary:hover, a.text-secondary:focus {
color: #b36400 !important;
}
.text-success, .card-tummytime .card-body {
.text-success {
color: #239556 !important;
}
a.text-success:hover, .card-tummytime a.card-body:hover, a.text-success:focus, .card-tummytime a.card-body:focus {
a.text-success:hover, a.text-success:focus {
color: #145732 !important;
}
@ -10070,27 +10058,27 @@ a.text-warning:hover, a.text-warning:focus {
color: #f5a000 !important;
}
.text-danger, .card-diaperchange .card-body {
.text-danger {
color: #a72431 !important;
}
a.text-danger:hover, .card-diaperchange a.card-body:hover, a.text-danger:focus, .card-diaperchange a.card-body:focus {
a.text-danger:hover, a.text-danger:focus {
color: #68161f !important;
}
.text-light, .card-timer .card-body, .card-statistics .card-body {
.text-light {
color: #f8f9fa !important;
}
a.text-light:hover, .card-timer a.card-body:hover, .card-statistics a.card-body:hover, a.text-light:focus, .card-timer a.card-body:focus, .card-statistics a.card-body:focus {
a.text-light:hover, a.text-light:focus {
color: #cbd3da !important;
}
.text-dark, .card-timer .card-header, .card-timer .card-header a, .card-statistics .card-header {
.text-dark {
color: #343a40 !important;
}
a.text-dark:hover, .card-timer a.card-header:hover, .card-timer .card-header a:hover, .card-statistics a.card-header:hover, a.text-dark:focus, .card-timer a.card-header:focus, .card-timer .card-header a:focus, .card-statistics a.card-header:focus {
a.text-dark:hover, a.text-dark:focus {
color: #121416 !important;
}
@ -10114,7 +10102,7 @@ a.text-error:hover, a.text-error:focus {
color: #ced4da !important;
}
.text-muted, .card-dashboard .card-body .card-text {
.text-muted {
color: #6c757d !important;
}
@ -10759,9 +10747,21 @@ h3 {
font-size: 6rem;
}
}
.card-dashboard .card-body .card-title, .card-dashboard .card-header {
font-size: 1.5rem;
font-weight: 500;
line-height: 1.2;
}
.card-dashboard {
margin-bottom: 1rem;
}
.card-dashboard .card-header {
margin-bottom: 0;
}
.card-dashboard .card-body .card-text {
color: #6c757d;
}
.card-dashboard .card-body .carousel {
margin-left: -1.25rem;
margin-right: -1.25rem;
@ -10769,18 +10769,70 @@ h3 {
padding-right: 1.25rem;
}
.card-diaperchange {
border-color: #a72431;
}
.card-diaperchange .card-header, .card-diaperchange .card-header a {
background-color: #a72431;
color: #f8f9fa;
}
.card-diaperchange .card-body {
color: #a72431;
}
.card-diaperchange .progress {
height: 2rem;
}
.card-feeding {
border-color: #37abe9;
}
.card-feeding .card-header, .card-feeding .card-header a {
background-color: #37abe9;
color: #f8f9fa;
}
.card-feeding .card-body {
color: #37abe9;
}
.card-feeding .card-body .last-feeding-method {
font-size: 2em;
}
.card-statistics .card-body .container {
.card-sleep {
border-color: #ff8f00;
}
.card-sleep .card-header, .card-sleep .card-header a {
background-color: #ff8f00;
color: #f8f9fa;
}
.card-statistics, .card-timer {
border-color: #f8f9fa;
}
.card-statistics .card-header, .card-timer .card-header {
background-color: #f8f9fa;
color: #343a40;
}
.card-statistics .card-header a, .card-timer .card-header a {
color: #343a40;
}
.card-statistics .card-body, .card-timer .card-body {
color: #f8f9fa;
}
.card-statistics .card-body .container, .card-timer .card-body .container {
padding: 0;
}
.card-tummytime {
border-color: #239556;
}
.card-tummytime .card-header, .card-tummytime .card-header a {
background-color: #239556;
color: #f8f9fa;
}
.card-tummytime .card-body {
color: #239556;
}
.child-actions {
flex-wrap: wrap;
}

Binary file not shown.

View File

@ -1,5 +1,5 @@
/**
* plotly.js (cartesian) v2.6.0
* plotly.js (cartesian) v2.6.3
* Copyright 2012-2021, Plotly, Inc.
* All rights reserved.
* Licensed under the MIT license
@ -31122,6 +31122,19 @@ function makeColorBarData(gd) {
}
function drawColorBar(g, opts, gd) {
var len = opts.len;
var lenmode = opts.lenmode;
var thickness = opts.thickness;
var thicknessmode = opts.thicknessmode;
var outlinewidth = opts.outlinewidth;
var borderwidth = opts.borderwidth;
var xanchor = opts.xanchor;
var yanchor = opts.yanchor;
var xpad = opts.xpad;
var ypad = opts.ypad;
var optsX = opts.x;
var optsY = opts.y;
var fullLayout = gd._fullLayout;
var gs = fullLayout._size;
@ -31151,42 +31164,41 @@ function drawColorBar(g, opts, gd) {
// when the colorbar itself is pushing the margins.
// but then the fractional size is calculated based on the
// actual graph size, so that the axes will size correctly.
var thickPx = Math.round(opts.thickness * (opts.thicknessmode === 'fraction' ? gs.w : 1));
var thickPx = Math.round(thickness * (thicknessmode === 'fraction' ? gs.w : 1));
var thickFrac = thickPx / gs.w;
var lenPx = Math.round(opts.len * (opts.lenmode === 'fraction' ? gs.h : 1));
var lenPx = Math.round(len * (lenmode === 'fraction' ? gs.h : 1));
var lenFrac = lenPx / gs.h;
var xpadFrac = opts.xpad / gs.w;
var yExtraPx = (opts.borderwidth + opts.outlinewidth) / 2;
var ypadFrac = opts.ypad / gs.h;
var xpadFrac = xpad / gs.w;
var yExtraPx = (borderwidth + outlinewidth) / 2;
var ypadFrac = ypad / gs.h;
// x positioning: do it initially just for left anchor,
// then fix at the end (since we don't know the width yet)
var xLeft = Math.round(opts.x * gs.w + opts.xpad);
var uPx = Math.round(optsX * gs.w + xpad);
// for dragging... this is getting a little muddled...
var xLeftFrac = opts.x - thickFrac * ({center: 0.5, right: 1}[opts.xanchor] || 0);
var uFrac = optsX - thickFrac * ({center: 0.5, right: 1}[xanchor] || 0);
// y positioning we can do correctly from the start
var yBottomFrac = opts.y + lenFrac * (({top: -0.5, bottom: 0.5}[opts.yanchor] || 0) - 0.5);
var yBottomPx = Math.round(gs.h * (1 - yBottomFrac));
var yTopPx = yBottomPx - lenPx;
var vFrac = optsY + lenFrac * (({top: -0.5, bottom: 0.5}[yanchor] || 0) - 0.5);
var vPx = Math.round(gs.h * (1 - vFrac));
// stash a few things for makeEditable
opts._lenFrac = lenFrac;
opts._thickFrac = thickFrac;
opts._xLeftFrac = xLeftFrac;
opts._yBottomFrac = yBottomFrac;
opts._uFrac = uFrac;
opts._vFrac = vFrac;
// stash mocked axis for contour label formatting
var ax = opts._axis = mockColorBarAxis(gd, opts, zrange);
// position can't go in through supplyDefaults
// because that restricts it to [0,1]
ax.position = opts.x + xpadFrac + thickFrac;
ax.position = optsX + xpadFrac + thickFrac;
if(['top', 'bottom'].indexOf(titleSide) !== -1) {
ax.title.side = titleSide;
ax.titlex = opts.x + xpadFrac;
ax.titley = yBottomFrac + (title.side === 'top' ? lenFrac - ypadFrac : ypadFrac);
ax.titlex = optsX + xpadFrac;
ax.titley = vFrac + (title.side === 'top' ? lenFrac - ypadFrac : ypadFrac);
}
if(line.color && opts.tickmode === 'auto') {
@ -31194,7 +31206,7 @@ function drawColorBar(g, opts, gd) {
ax.tick0 = levelsIn.start;
var dtick = levelsIn.size;
// expand if too many contours, so we don't get too many ticks
var autoNtick = Lib.constrain((yBottomPx - yTopPx) / 50, 4, 15) + 1;
var autoNtick = Lib.constrain(lenPx / 50, 4, 15) + 1;
var dtFactor = (zrange[1] - zrange[0]) / ((opts.nticks || autoNtick) * dtick);
if(dtFactor > 1) {
var dtexp = Math.pow(10, Math.floor(Math.log(dtFactor) / Math.LN10));
@ -31212,8 +31224,8 @@ function drawColorBar(g, opts, gd) {
// set domain after init, because we may want to
// allow it outside [0,1]
ax.domain = [
yBottomFrac + ypadFrac,
yBottomFrac + lenFrac - ypadFrac
vFrac + ypadFrac,
vFrac + lenFrac - ypadFrac
];
ax.setScale();
@ -31254,15 +31266,15 @@ function drawColorBar(g, opts, gd) {
// draw the title so we know how much room it needs
// when we squish the axis. This one only applies to
// top or bottom titles, not right side.
var x = gs.l + (opts.x + xpadFrac) * gs.w;
var x = gs.l + (optsX + xpadFrac) * gs.w;
var fontSize = ax.title.font.size;
var y;
if(titleSide === 'top') {
y = (1 - (yBottomFrac + lenFrac - ypadFrac)) * gs.h +
y = (1 - (vFrac + lenFrac - ypadFrac)) * gs.h +
gs.t + 3 + fontSize * 0.75;
} else {
y = (1 - (yBottomFrac + ypadFrac)) * gs.h +
y = (1 - (vFrac + ypadFrac)) * gs.h +
gs.t - 3 - fontSize * 0.25;
}
drawTitle(ax._id + 'title', {
@ -31301,7 +31313,7 @@ function drawColorBar(g, opts, gd) {
// squish the axis top to make room for the title
var titleGroup = g.select('.' + cn.cbtitle);
var titleText = titleGroup.select('text');
var titleTrans = [-opts.outlinewidth / 2, opts.outlinewidth / 2];
var titleTrans = [-outlinewidth / 2, outlinewidth / 2];
var mathJaxNode = titleGroup
.select('.h' + ax._id + 'title-math-group')
.node();
@ -31373,7 +31385,7 @@ function drawColorBar(g, opts, gd) {
// Colorbar cannot currently support opacities so we
// use an opaque fill even when alpha channels present
var fillEl = d3.select(this).attr({
x: xLeft,
x: uPx,
width: Math.max(thickPx, 2),
y: d3.min(z),
height: Math.max(d3.max(z) - d3.min(z), 2),
@ -31397,7 +31409,7 @@ function drawColorBar(g, opts, gd) {
lines.exit().remove();
lines.each(function(d) {
d3.select(this)
.attr('d', 'M' + xLeft + ',' +
.attr('d', 'M' + uPx + ',' +
(Math.round(ax.c2p(d)) + (line.width / 2) % 1) + 'h' + thickPx)
.call(Drawing.lineGroupStyle, line.width, lineColormap(d), line.dash);
});
@ -31405,8 +31417,8 @@ function drawColorBar(g, opts, gd) {
// force full redraw of labels and ticks
axLayer.selectAll('g.' + ax._id + 'tick,path').remove();
var shift = xLeft + thickPx +
(opts.outlinewidth || 0) / 2 - (opts.ticks === 'outside' ? 1 : 0);
var shift = uPx + thickPx +
(outlinewidth || 0) / 2 - (opts.ticks === 'outside' ? 1 : 0);
var vals = Axes.calcTicks(ax);
var tickSign = Axes.getTickSigns(ax)[2];
@ -31431,9 +31443,9 @@ function drawColorBar(g, opts, gd) {
// TODO: why are we redrawing multiple times now with this?
// I guess autoMargin doesn't like being post-promise?
function positionCB() {
var innerWidth = thickPx + opts.outlinewidth / 2;
var innerThickness = thickPx + outlinewidth / 2;
if(ax.ticklabelposition.indexOf('inside') === -1) {
innerWidth += Drawing.bBox(axLayer.node()).width;
innerThickness += Drawing.bBox(axLayer.node()).width;
}
titleEl = titleCont.select('text');
@ -31448,66 +31460,65 @@ function drawColorBar(g, opts, gd) {
// (except for top/bottom mathjax, above)
// but the weird gs.l is because the titleunshift
// transform gets removed by Drawing.bBox
titleWidth = Drawing.bBox(titleCont.node()).right - xLeft - gs.l;
titleWidth = Drawing.bBox(titleCont.node()).right - uPx - gs.l;
}
innerWidth = Math.max(innerWidth, titleWidth);
innerThickness = Math.max(innerThickness, titleWidth);
}
var outerwidth = 2 * opts.xpad + innerWidth + opts.borderwidth + opts.outlinewidth / 2;
var outerheight = yBottomPx - yTopPx;
var outerThickness = 2 * xpad + innerThickness + borderwidth + outlinewidth / 2;
g.select('.' + cn.cbbg).attr({
x: xLeft - opts.xpad - (opts.borderwidth + opts.outlinewidth) / 2,
y: yTopPx - yExtraPx,
width: Math.max(outerwidth, 2),
height: Math.max(outerheight + 2 * yExtraPx, 2)
x: uPx - xpad - (borderwidth + outlinewidth) / 2,
y: vPx - lenPx - yExtraPx,
width: Math.max(outerThickness, 2),
height: Math.max(lenPx + 2 * yExtraPx, 2)
})
.call(Color.fill, opts.bgcolor)
.call(Color.stroke, opts.bordercolor)
.style('stroke-width', opts.borderwidth);
.style('stroke-width', borderwidth);
g.selectAll('.' + cn.cboutline).attr({
x: xLeft,
y: yTopPx + opts.ypad + (titleSide === 'top' ? titleHeight : 0),
x: uPx,
y: vPx - lenPx + ypad + (titleSide === 'top' ? titleHeight : 0),
width: Math.max(thickPx, 2),
height: Math.max(outerheight - 2 * opts.ypad - titleHeight, 2)
height: Math.max(lenPx - 2 * ypad - titleHeight, 2)
})
.call(Color.stroke, opts.outlinecolor)
.style({
fill: 'none',
'stroke-width': opts.outlinewidth
'stroke-width': outlinewidth
});
// fix positioning for xanchor!='left'
var xoffset = ({center: 0.5, right: 1}[opts.xanchor] || 0) * outerwidth;
var xoffset = ({center: 0.5, right: 1}[xanchor] || 0) * outerThickness;
g.attr('transform', strTranslate(gs.l - xoffset, gs.t));
// auto margin adjustment
var marginOpts = {};
var tFrac = FROM_TL[opts.yanchor];
var bFrac = FROM_BR[opts.yanchor];
if(opts.lenmode === 'pixels') {
marginOpts.y = opts.y;
marginOpts.t = outerheight * tFrac;
marginOpts.b = outerheight * bFrac;
var tFrac = FROM_TL[yanchor];
var bFrac = FROM_BR[yanchor];
if(lenmode === 'pixels') {
marginOpts.y = optsY;
marginOpts.t = lenPx * tFrac;
marginOpts.b = lenPx * bFrac;
} else {
marginOpts.t = marginOpts.b = 0;
marginOpts.yt = opts.y + opts.len * tFrac;
marginOpts.yb = opts.y - opts.len * bFrac;
marginOpts.yt = optsY + len * tFrac;
marginOpts.yb = optsY - len * bFrac;
}
var lFrac = FROM_TL[opts.xanchor];
var rFrac = FROM_BR[opts.xanchor];
if(opts.thicknessmode === 'pixels') {
marginOpts.x = opts.x;
marginOpts.l = outerwidth * lFrac;
marginOpts.r = outerwidth * rFrac;
var lFrac = FROM_TL[xanchor];
var rFrac = FROM_BR[xanchor];
if(thicknessmode === 'pixels') {
marginOpts.x = optsX;
marginOpts.l = outerThickness * lFrac;
marginOpts.r = outerThickness * rFrac;
} else {
var extraThickness = outerwidth - thickPx;
var extraThickness = outerThickness - thickPx;
marginOpts.l = extraThickness * lFrac;
marginOpts.r = extraThickness * rFrac;
marginOpts.xl = opts.x - opts.thickness * lFrac;
marginOpts.xr = opts.x + opts.thickness * rFrac;
marginOpts.xl = optsX - thickness * lFrac;
marginOpts.xr = optsX + thickness * rFrac;
}
Plots.autoMargin(gd, opts._id, marginOpts);
@ -31538,9 +31549,9 @@ function makeEditable(g, opts, gd) {
moveFn: function(dx, dy) {
g.attr('transform', t0 + strTranslate(dx, dy));
xf = dragElement.align(opts._xLeftFrac + (dx / gs.w), opts._thickFrac,
xf = dragElement.align(opts._uFrac + (dx / gs.w), opts._thickFrac,
0, 1, opts.xanchor);
yf = dragElement.align(opts._yBottomFrac - (dy / gs.h), opts._lenFrac,
yf = dragElement.align(opts._vFrac - (dy / gs.h), opts._lenFrac,
0, 1, opts.yanchor);
var csr = dragElement.getCursor(xf, yf, opts.xanchor, opts.yanchor);
@ -36242,11 +36253,13 @@ var cartesianScatterPoints = {
// The actual rendering is done by private function _hover.
exports.hover = function hover(gd, evt, subplot, noHoverEvent) {
gd = Lib.getGraphDiv(gd);
// The 'target' property changes when bubbling out of Shadow DOM.
// Throttling can delay reading the target, so we save the current value.
var eventTarget = evt.target;
Lib.throttle(
gd._fullLayout._uid + constants.HOVERID,
constants.HOVERMINTIME,
function() { _hover(gd, evt, subplot, noHoverEvent); }
function() { _hover(gd, evt, subplot, noHoverEvent, eventTarget); }
);
};
@ -36411,7 +36424,7 @@ exports.loneHover = function loneHover(hoverItems, opts) {
};
// The actual implementation is here:
function _hover(gd, evt, subplot, noHoverEvent) {
function _hover(gd, evt, subplot, noHoverEvent, eventTarget) {
if(!subplot) subplot = 'xy';
// if the user passed in an array of subplots,
@ -36530,7 +36543,7 @@ function _hover(gd, evt, subplot, noHoverEvent) {
// [x|y]px: the pixels (from top left) of the mouse location
// on the currently selected plot area
// add pointerX|Y property for drawing the spikes in spikesnap 'cursor' situation
var hasUserCalledHover = !evt.target;
var hasUserCalledHover = !eventTarget;
var xpx, ypx;
if(hasUserCalledHover) {
@ -36547,13 +36560,7 @@ function _hover(gd, evt, subplot, noHoverEvent) {
return;
}
// Discover event target, traversing open shadow roots.
var target = evt.composedPath && evt.composedPath()[0];
if(!target) {
// Fallback for browsers not supporting composedPath
target = evt.target;
}
var dbb = target.getBoundingClientRect();
var dbb = eventTarget.getBoundingClientRect();
xpx = evt.clientX - dbb.left;
ypx = evt.clientY - dbb.top;
@ -37001,15 +37008,15 @@ function _hover(gd, evt, subplot, noHoverEvent) {
if(!helpers.isUnifiedHover(hovermode)) {
hoverAvoidOverlaps(hoverLabels, rotateLabels ? 'xa' : 'ya', fullLayout);
alignHoverText(hoverLabels, rotateLabels, fullLayout._invScaleX, fullLayout._invScaleY);
} // TODO: tagName hack is needed to appease geo.js's hack of using evt.target=true
} // TODO: tagName hack is needed to appease geo.js's hack of using eventTarget=true
// we should improve the "fx" API so other plots can use it without these hack.
if(evt.target && evt.target.tagName) {
if(eventTarget && eventTarget.tagName) {
var hasClickToShow = Registry.getComponentMethod('annotations', 'hasClickToShow')(gd, newhoverdata);
overrideCursor(d3.select(evt.target), hasClickToShow ? 'pointer' : '');
overrideCursor(d3.select(eventTarget), hasClickToShow ? 'pointer' : '');
}
// don't emit events if called manually
if(!evt.target || noHoverEvent || !hoverChanged(gd, evt, oldhoverdata)) return;
if(!eventTarget || noHoverEvent || !hoverChanged(gd, evt, oldhoverdata)) return;
if(oldhoverdata) {
gd.emit('plotly_unhover', {
@ -102149,7 +102156,7 @@ function getSortFunc(opts, d2c) {
'use strict';
// package version injected by `npm run preprocess`
exports.version = '2.6.0';
exports.version = '2.6.3';
},{}]},{},[15])(15)
});

Binary file not shown.

Binary file not shown.

View File

@ -1,5 +1,5 @@
/**
* plotly.js (cartesian) v2.6.0
* plotly.js (cartesian) v2.6.3
* Copyright 2012-2021, Plotly, Inc.
* All rights reserved.
* Licensed under the MIT license
@ -31122,6 +31122,19 @@ function makeColorBarData(gd) {
}
function drawColorBar(g, opts, gd) {
var len = opts.len;
var lenmode = opts.lenmode;
var thickness = opts.thickness;
var thicknessmode = opts.thicknessmode;
var outlinewidth = opts.outlinewidth;
var borderwidth = opts.borderwidth;
var xanchor = opts.xanchor;
var yanchor = opts.yanchor;
var xpad = opts.xpad;
var ypad = opts.ypad;
var optsX = opts.x;
var optsY = opts.y;
var fullLayout = gd._fullLayout;
var gs = fullLayout._size;
@ -31151,42 +31164,41 @@ function drawColorBar(g, opts, gd) {
// when the colorbar itself is pushing the margins.
// but then the fractional size is calculated based on the
// actual graph size, so that the axes will size correctly.
var thickPx = Math.round(opts.thickness * (opts.thicknessmode === 'fraction' ? gs.w : 1));
var thickPx = Math.round(thickness * (thicknessmode === 'fraction' ? gs.w : 1));
var thickFrac = thickPx / gs.w;
var lenPx = Math.round(opts.len * (opts.lenmode === 'fraction' ? gs.h : 1));
var lenPx = Math.round(len * (lenmode === 'fraction' ? gs.h : 1));
var lenFrac = lenPx / gs.h;
var xpadFrac = opts.xpad / gs.w;
var yExtraPx = (opts.borderwidth + opts.outlinewidth) / 2;
var ypadFrac = opts.ypad / gs.h;
var xpadFrac = xpad / gs.w;
var yExtraPx = (borderwidth + outlinewidth) / 2;
var ypadFrac = ypad / gs.h;
// x positioning: do it initially just for left anchor,
// then fix at the end (since we don't know the width yet)
var xLeft = Math.round(opts.x * gs.w + opts.xpad);
var uPx = Math.round(optsX * gs.w + xpad);
// for dragging... this is getting a little muddled...
var xLeftFrac = opts.x - thickFrac * ({center: 0.5, right: 1}[opts.xanchor] || 0);
var uFrac = optsX - thickFrac * ({center: 0.5, right: 1}[xanchor] || 0);
// y positioning we can do correctly from the start
var yBottomFrac = opts.y + lenFrac * (({top: -0.5, bottom: 0.5}[opts.yanchor] || 0) - 0.5);
var yBottomPx = Math.round(gs.h * (1 - yBottomFrac));
var yTopPx = yBottomPx - lenPx;
var vFrac = optsY + lenFrac * (({top: -0.5, bottom: 0.5}[yanchor] || 0) - 0.5);
var vPx = Math.round(gs.h * (1 - vFrac));
// stash a few things for makeEditable
opts._lenFrac = lenFrac;
opts._thickFrac = thickFrac;
opts._xLeftFrac = xLeftFrac;
opts._yBottomFrac = yBottomFrac;
opts._uFrac = uFrac;
opts._vFrac = vFrac;
// stash mocked axis for contour label formatting
var ax = opts._axis = mockColorBarAxis(gd, opts, zrange);
// position can't go in through supplyDefaults
// because that restricts it to [0,1]
ax.position = opts.x + xpadFrac + thickFrac;
ax.position = optsX + xpadFrac + thickFrac;
if(['top', 'bottom'].indexOf(titleSide) !== -1) {
ax.title.side = titleSide;
ax.titlex = opts.x + xpadFrac;
ax.titley = yBottomFrac + (title.side === 'top' ? lenFrac - ypadFrac : ypadFrac);
ax.titlex = optsX + xpadFrac;
ax.titley = vFrac + (title.side === 'top' ? lenFrac - ypadFrac : ypadFrac);
}
if(line.color && opts.tickmode === 'auto') {
@ -31194,7 +31206,7 @@ function drawColorBar(g, opts, gd) {
ax.tick0 = levelsIn.start;
var dtick = levelsIn.size;
// expand if too many contours, so we don't get too many ticks
var autoNtick = Lib.constrain((yBottomPx - yTopPx) / 50, 4, 15) + 1;
var autoNtick = Lib.constrain(lenPx / 50, 4, 15) + 1;
var dtFactor = (zrange[1] - zrange[0]) / ((opts.nticks || autoNtick) * dtick);
if(dtFactor > 1) {
var dtexp = Math.pow(10, Math.floor(Math.log(dtFactor) / Math.LN10));
@ -31212,8 +31224,8 @@ function drawColorBar(g, opts, gd) {
// set domain after init, because we may want to
// allow it outside [0,1]
ax.domain = [
yBottomFrac + ypadFrac,
yBottomFrac + lenFrac - ypadFrac
vFrac + ypadFrac,
vFrac + lenFrac - ypadFrac
];
ax.setScale();
@ -31254,15 +31266,15 @@ function drawColorBar(g, opts, gd) {
// draw the title so we know how much room it needs
// when we squish the axis. This one only applies to
// top or bottom titles, not right side.
var x = gs.l + (opts.x + xpadFrac) * gs.w;
var x = gs.l + (optsX + xpadFrac) * gs.w;
var fontSize = ax.title.font.size;
var y;
if(titleSide === 'top') {
y = (1 - (yBottomFrac + lenFrac - ypadFrac)) * gs.h +
y = (1 - (vFrac + lenFrac - ypadFrac)) * gs.h +
gs.t + 3 + fontSize * 0.75;
} else {
y = (1 - (yBottomFrac + ypadFrac)) * gs.h +
y = (1 - (vFrac + ypadFrac)) * gs.h +
gs.t - 3 - fontSize * 0.25;
}
drawTitle(ax._id + 'title', {
@ -31301,7 +31313,7 @@ function drawColorBar(g, opts, gd) {
// squish the axis top to make room for the title
var titleGroup = g.select('.' + cn.cbtitle);
var titleText = titleGroup.select('text');
var titleTrans = [-opts.outlinewidth / 2, opts.outlinewidth / 2];
var titleTrans = [-outlinewidth / 2, outlinewidth / 2];
var mathJaxNode = titleGroup
.select('.h' + ax._id + 'title-math-group')
.node();
@ -31373,7 +31385,7 @@ function drawColorBar(g, opts, gd) {
// Colorbar cannot currently support opacities so we
// use an opaque fill even when alpha channels present
var fillEl = d3.select(this).attr({
x: xLeft,
x: uPx,
width: Math.max(thickPx, 2),
y: d3.min(z),
height: Math.max(d3.max(z) - d3.min(z), 2),
@ -31397,7 +31409,7 @@ function drawColorBar(g, opts, gd) {
lines.exit().remove();
lines.each(function(d) {
d3.select(this)
.attr('d', 'M' + xLeft + ',' +
.attr('d', 'M' + uPx + ',' +
(Math.round(ax.c2p(d)) + (line.width / 2) % 1) + 'h' + thickPx)
.call(Drawing.lineGroupStyle, line.width, lineColormap(d), line.dash);
});
@ -31405,8 +31417,8 @@ function drawColorBar(g, opts, gd) {
// force full redraw of labels and ticks
axLayer.selectAll('g.' + ax._id + 'tick,path').remove();
var shift = xLeft + thickPx +
(opts.outlinewidth || 0) / 2 - (opts.ticks === 'outside' ? 1 : 0);
var shift = uPx + thickPx +
(outlinewidth || 0) / 2 - (opts.ticks === 'outside' ? 1 : 0);
var vals = Axes.calcTicks(ax);
var tickSign = Axes.getTickSigns(ax)[2];
@ -31431,9 +31443,9 @@ function drawColorBar(g, opts, gd) {
// TODO: why are we redrawing multiple times now with this?
// I guess autoMargin doesn't like being post-promise?
function positionCB() {
var innerWidth = thickPx + opts.outlinewidth / 2;
var innerThickness = thickPx + outlinewidth / 2;
if(ax.ticklabelposition.indexOf('inside') === -1) {
innerWidth += Drawing.bBox(axLayer.node()).width;
innerThickness += Drawing.bBox(axLayer.node()).width;
}
titleEl = titleCont.select('text');
@ -31448,66 +31460,65 @@ function drawColorBar(g, opts, gd) {
// (except for top/bottom mathjax, above)
// but the weird gs.l is because the titleunshift
// transform gets removed by Drawing.bBox
titleWidth = Drawing.bBox(titleCont.node()).right - xLeft - gs.l;
titleWidth = Drawing.bBox(titleCont.node()).right - uPx - gs.l;
}
innerWidth = Math.max(innerWidth, titleWidth);
innerThickness = Math.max(innerThickness, titleWidth);
}
var outerwidth = 2 * opts.xpad + innerWidth + opts.borderwidth + opts.outlinewidth / 2;
var outerheight = yBottomPx - yTopPx;
var outerThickness = 2 * xpad + innerThickness + borderwidth + outlinewidth / 2;
g.select('.' + cn.cbbg).attr({
x: xLeft - opts.xpad - (opts.borderwidth + opts.outlinewidth) / 2,
y: yTopPx - yExtraPx,
width: Math.max(outerwidth, 2),
height: Math.max(outerheight + 2 * yExtraPx, 2)
x: uPx - xpad - (borderwidth + outlinewidth) / 2,
y: vPx - lenPx - yExtraPx,
width: Math.max(outerThickness, 2),
height: Math.max(lenPx + 2 * yExtraPx, 2)
})
.call(Color.fill, opts.bgcolor)
.call(Color.stroke, opts.bordercolor)
.style('stroke-width', opts.borderwidth);
.style('stroke-width', borderwidth);
g.selectAll('.' + cn.cboutline).attr({
x: xLeft,
y: yTopPx + opts.ypad + (titleSide === 'top' ? titleHeight : 0),
x: uPx,
y: vPx - lenPx + ypad + (titleSide === 'top' ? titleHeight : 0),
width: Math.max(thickPx, 2),
height: Math.max(outerheight - 2 * opts.ypad - titleHeight, 2)
height: Math.max(lenPx - 2 * ypad - titleHeight, 2)
})
.call(Color.stroke, opts.outlinecolor)
.style({
fill: 'none',
'stroke-width': opts.outlinewidth
'stroke-width': outlinewidth
});
// fix positioning for xanchor!='left'
var xoffset = ({center: 0.5, right: 1}[opts.xanchor] || 0) * outerwidth;
var xoffset = ({center: 0.5, right: 1}[xanchor] || 0) * outerThickness;
g.attr('transform', strTranslate(gs.l - xoffset, gs.t));
// auto margin adjustment
var marginOpts = {};
var tFrac = FROM_TL[opts.yanchor];
var bFrac = FROM_BR[opts.yanchor];
if(opts.lenmode === 'pixels') {
marginOpts.y = opts.y;
marginOpts.t = outerheight * tFrac;
marginOpts.b = outerheight * bFrac;
var tFrac = FROM_TL[yanchor];
var bFrac = FROM_BR[yanchor];
if(lenmode === 'pixels') {
marginOpts.y = optsY;
marginOpts.t = lenPx * tFrac;
marginOpts.b = lenPx * bFrac;
} else {
marginOpts.t = marginOpts.b = 0;
marginOpts.yt = opts.y + opts.len * tFrac;
marginOpts.yb = opts.y - opts.len * bFrac;
marginOpts.yt = optsY + len * tFrac;
marginOpts.yb = optsY - len * bFrac;
}
var lFrac = FROM_TL[opts.xanchor];
var rFrac = FROM_BR[opts.xanchor];
if(opts.thicknessmode === 'pixels') {
marginOpts.x = opts.x;
marginOpts.l = outerwidth * lFrac;
marginOpts.r = outerwidth * rFrac;
var lFrac = FROM_TL[xanchor];
var rFrac = FROM_BR[xanchor];
if(thicknessmode === 'pixels') {
marginOpts.x = optsX;
marginOpts.l = outerThickness * lFrac;
marginOpts.r = outerThickness * rFrac;
} else {
var extraThickness = outerwidth - thickPx;
var extraThickness = outerThickness - thickPx;
marginOpts.l = extraThickness * lFrac;
marginOpts.r = extraThickness * rFrac;
marginOpts.xl = opts.x - opts.thickness * lFrac;
marginOpts.xr = opts.x + opts.thickness * rFrac;
marginOpts.xl = optsX - thickness * lFrac;
marginOpts.xr = optsX + thickness * rFrac;
}
Plots.autoMargin(gd, opts._id, marginOpts);
@ -31538,9 +31549,9 @@ function makeEditable(g, opts, gd) {
moveFn: function(dx, dy) {
g.attr('transform', t0 + strTranslate(dx, dy));
xf = dragElement.align(opts._xLeftFrac + (dx / gs.w), opts._thickFrac,
xf = dragElement.align(opts._uFrac + (dx / gs.w), opts._thickFrac,
0, 1, opts.xanchor);
yf = dragElement.align(opts._yBottomFrac - (dy / gs.h), opts._lenFrac,
yf = dragElement.align(opts._vFrac - (dy / gs.h), opts._lenFrac,
0, 1, opts.yanchor);
var csr = dragElement.getCursor(xf, yf, opts.xanchor, opts.yanchor);
@ -36242,11 +36253,13 @@ var cartesianScatterPoints = {
// The actual rendering is done by private function _hover.
exports.hover = function hover(gd, evt, subplot, noHoverEvent) {
gd = Lib.getGraphDiv(gd);
// The 'target' property changes when bubbling out of Shadow DOM.
// Throttling can delay reading the target, so we save the current value.
var eventTarget = evt.target;
Lib.throttle(
gd._fullLayout._uid + constants.HOVERID,
constants.HOVERMINTIME,
function() { _hover(gd, evt, subplot, noHoverEvent); }
function() { _hover(gd, evt, subplot, noHoverEvent, eventTarget); }
);
};
@ -36411,7 +36424,7 @@ exports.loneHover = function loneHover(hoverItems, opts) {
};
// The actual implementation is here:
function _hover(gd, evt, subplot, noHoverEvent) {
function _hover(gd, evt, subplot, noHoverEvent, eventTarget) {
if(!subplot) subplot = 'xy';
// if the user passed in an array of subplots,
@ -36530,7 +36543,7 @@ function _hover(gd, evt, subplot, noHoverEvent) {
// [x|y]px: the pixels (from top left) of the mouse location
// on the currently selected plot area
// add pointerX|Y property for drawing the spikes in spikesnap 'cursor' situation
var hasUserCalledHover = !evt.target;
var hasUserCalledHover = !eventTarget;
var xpx, ypx;
if(hasUserCalledHover) {
@ -36547,13 +36560,7 @@ function _hover(gd, evt, subplot, noHoverEvent) {
return;
}
// Discover event target, traversing open shadow roots.
var target = evt.composedPath && evt.composedPath()[0];
if(!target) {
// Fallback for browsers not supporting composedPath
target = evt.target;
}
var dbb = target.getBoundingClientRect();
var dbb = eventTarget.getBoundingClientRect();
xpx = evt.clientX - dbb.left;
ypx = evt.clientY - dbb.top;
@ -37001,15 +37008,15 @@ function _hover(gd, evt, subplot, noHoverEvent) {
if(!helpers.isUnifiedHover(hovermode)) {
hoverAvoidOverlaps(hoverLabels, rotateLabels ? 'xa' : 'ya', fullLayout);
alignHoverText(hoverLabels, rotateLabels, fullLayout._invScaleX, fullLayout._invScaleY);
} // TODO: tagName hack is needed to appease geo.js's hack of using evt.target=true
} // TODO: tagName hack is needed to appease geo.js's hack of using eventTarget=true
// we should improve the "fx" API so other plots can use it without these hack.
if(evt.target && evt.target.tagName) {
if(eventTarget && eventTarget.tagName) {
var hasClickToShow = Registry.getComponentMethod('annotations', 'hasClickToShow')(gd, newhoverdata);
overrideCursor(d3.select(evt.target), hasClickToShow ? 'pointer' : '');
overrideCursor(d3.select(eventTarget), hasClickToShow ? 'pointer' : '');
}
// don't emit events if called manually
if(!evt.target || noHoverEvent || !hoverChanged(gd, evt, oldhoverdata)) return;
if(!eventTarget || noHoverEvent || !hoverChanged(gd, evt, oldhoverdata)) return;
if(oldhoverdata) {
gd.emit('plotly_unhover', {
@ -102149,7 +102156,7 @@ function getSortFunc(opts, d2c) {
'use strict';
// package version injected by `npm run preprocess`
exports.version = '2.6.0';
exports.version = '2.6.3';
},{}]},{},[15])(15)
});

Binary file not shown.

View File

@ -25144,7 +25144,7 @@ return Popper;
})));
//! moment-timezone.js
//! version : 0.5.33
//! version : 0.5.34
//! Copyright (c) JS Foundation and other contributors
//! license : MIT
//! github.com/moment/moment-timezone
@ -25174,7 +25174,7 @@ return Popper;
// return moment;
// }
var VERSION = "0.5.33",
var VERSION = "0.5.34",
zones = {},
links = {},
countries = {},
@ -25836,7 +25836,7 @@ return Popper;
}
loadData({
"version": "2021a",
"version": "2021e",
"zones": [
"Africa/Abidjan|GMT|0|0||48e5",
"Africa/Nairobi|EAT|-30|0||47e5",
@ -25892,7 +25892,7 @@ return Popper;
"Asia/Baghdad|+03|-30|0||66e5",
"Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|40",
"Asia/Dhaka|+06|-60|0||16e6",
"Asia/Amman|EET EEST|-20 -30|01010101010101010101010|1QAK0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5",
"Asia/Amman|EET EEST|-20 -30|01010101010101010101010|1QAK0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00 LA0 1C00 Oo0 1zc0 Oo0 1C00 LA0 1C00|25e5",
"Asia/Kamchatka|+12|-c0|0||18e4",
"Asia/Dubai|+04|-40|0||39e5",
"Asia/Barnaul|+06 +07|-60 -70|01|1QyI0|",
@ -25906,7 +25906,7 @@ return Popper;
"Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1QxW0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5",
"Asia/Yakutsk|+09|-90|0||28e4",
"Asia/Famagusta|EET EEST +03|-20 -30 -30|0120101010101010101010|1QyN0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|",
"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1Qyn0 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|18e5",
"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1Qyn0 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1nA0 1200 1qo0 Xc0 1qo0|18e5",
"Asia/Hong_Kong|HKT|-80|0||73e5",
"Asia/Hovd|+07 +08|-70 -80|010|1Qyj0 1cJ0|81e3",
"Europe/Istanbul|EET EEST +03|-20 -30 -30|012|1QyN0 15w0|13e6",
@ -25961,8 +25961,8 @@ return Popper;
"Pacific/Honolulu|HST|a0|0||37e4",
"MET|MET MEST|-10 -20|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|",
"Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1QBq0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00|600",
"Pacific/Apia|+14 +13|-e0 -d0|01010101010101010101010|1QBq0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00|37e3",
"Pacific/Fiji|+13 +12|-d0 -c0|01010101010101010101010|1Q6C0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0|88e4",
"Pacific/Apia|+14 +13|-e0 -d0|010101010101|1QBq0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3",
"Pacific/Fiji|+13 +12|-d0 -c0|010101010101010101010|1Q6C0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0 4q00 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0|88e4",
"Pacific/Guam|ChST|-a0|0||17e4",
"Pacific/Marquesas|-0930|9u|0||86e2",
"Pacific/Pago_Pago|SST|b0|0||37e2",
@ -26419,6 +26419,7 @@ return Popper;
"Pacific/Easter|Chile/EasterIsland",
"Pacific/Fakaofo|Etc/GMT-13",
"Pacific/Fakaofo|Pacific/Enderbury",
"Pacific/Fakaofo|Pacific/Kanton",
"Pacific/Galapagos|Etc/GMT+6",
"Pacific/Gambier|Etc/GMT+9",
"Pacific/Guam|Pacific/Saipan",
@ -26447,7 +26448,7 @@ return Popper;
"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
"AS|Pacific/Pago_Pago",
"AT|Europe/Vienna",
"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Currie Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla",
"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla",
"AW|America/Curacao America/Aruba",
"AX|Europe/Helsinki Europe/Mariehamn",
"AZ|Asia/Baku",
@ -26471,7 +26472,7 @@ return Popper;
"BW|Africa/Maputo Africa/Gaborone",
"BY|Europe/Minsk",
"BZ|America/Belize",
"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Vancouver America/Whitehorse America/Dawson",
"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver",
"CC|Indian/Cocos",
"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi",
"CF|Africa/Lagos Africa/Bangui",
@ -26623,7 +26624,7 @@ return Popper;
"RE|Indian/Reunion",
"RO|Europe/Bucharest",
"RS|Europe/Belgrade",
"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Astrakhan Europe/Volgograd Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
"RW|Africa/Maputo Africa/Kigali",
"SA|Asia/Riyadh",
"SB|Pacific/Guadalcanal",

View File

@ -25144,7 +25144,7 @@ return Popper;
})));
//! moment-timezone.js
//! version : 0.5.33
//! version : 0.5.34
//! Copyright (c) JS Foundation and other contributors
//! license : MIT
//! github.com/moment/moment-timezone
@ -25174,7 +25174,7 @@ return Popper;
// return moment;
// }
var VERSION = "0.5.33",
var VERSION = "0.5.34",
zones = {},
links = {},
countries = {},
@ -25836,7 +25836,7 @@ return Popper;
}
loadData({
"version": "2021a",
"version": "2021e",
"zones": [
"Africa/Abidjan|GMT|0|0||48e5",
"Africa/Nairobi|EAT|-30|0||47e5",
@ -25892,7 +25892,7 @@ return Popper;
"Asia/Baghdad|+03|-30|0||66e5",
"Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|40",
"Asia/Dhaka|+06|-60|0||16e6",
"Asia/Amman|EET EEST|-20 -30|01010101010101010101010|1QAK0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5",
"Asia/Amman|EET EEST|-20 -30|01010101010101010101010|1QAK0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00 LA0 1C00 Oo0 1zc0 Oo0 1C00 LA0 1C00|25e5",
"Asia/Kamchatka|+12|-c0|0||18e4",
"Asia/Dubai|+04|-40|0||39e5",
"Asia/Barnaul|+06 +07|-60 -70|01|1QyI0|",
@ -25906,7 +25906,7 @@ return Popper;
"Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1QxW0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5",
"Asia/Yakutsk|+09|-90|0||28e4",
"Asia/Famagusta|EET EEST +03|-20 -30 -30|0120101010101010101010|1QyN0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|",
"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1Qyn0 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|18e5",
"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1Qyn0 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1nA0 1200 1qo0 Xc0 1qo0|18e5",
"Asia/Hong_Kong|HKT|-80|0||73e5",
"Asia/Hovd|+07 +08|-70 -80|010|1Qyj0 1cJ0|81e3",
"Europe/Istanbul|EET EEST +03|-20 -30 -30|012|1QyN0 15w0|13e6",
@ -25961,8 +25961,8 @@ return Popper;
"Pacific/Honolulu|HST|a0|0||37e4",
"MET|MET MEST|-10 -20|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|",
"Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1QBq0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00|600",
"Pacific/Apia|+14 +13|-e0 -d0|01010101010101010101010|1QBq0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00|37e3",
"Pacific/Fiji|+13 +12|-d0 -c0|01010101010101010101010|1Q6C0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0|88e4",
"Pacific/Apia|+14 +13|-e0 -d0|010101010101|1QBq0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3",
"Pacific/Fiji|+13 +12|-d0 -c0|010101010101010101010|1Q6C0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0 4q00 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0|88e4",
"Pacific/Guam|ChST|-a0|0||17e4",
"Pacific/Marquesas|-0930|9u|0||86e2",
"Pacific/Pago_Pago|SST|b0|0||37e2",
@ -26419,6 +26419,7 @@ return Popper;
"Pacific/Easter|Chile/EasterIsland",
"Pacific/Fakaofo|Etc/GMT-13",
"Pacific/Fakaofo|Pacific/Enderbury",
"Pacific/Fakaofo|Pacific/Kanton",
"Pacific/Galapagos|Etc/GMT+6",
"Pacific/Gambier|Etc/GMT+9",
"Pacific/Guam|Pacific/Saipan",
@ -26447,7 +26448,7 @@ return Popper;
"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
"AS|Pacific/Pago_Pago",
"AT|Europe/Vienna",
"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Currie Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla",
"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla",
"AW|America/Curacao America/Aruba",
"AX|Europe/Helsinki Europe/Mariehamn",
"AZ|Asia/Baku",
@ -26471,7 +26472,7 @@ return Popper;
"BW|Africa/Maputo Africa/Gaborone",
"BY|Europe/Minsk",
"BZ|America/Belize",
"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Vancouver America/Whitehorse America/Dawson",
"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver",
"CC|Indian/Cocos",
"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi",
"CF|Africa/Lagos Africa/Bangui",
@ -26623,7 +26624,7 @@ return Popper;
"RE|Indian/Reunion",
"RO|Europe/Bucharest",
"RS|Europe/Belgrade",
"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Astrakhan Europe/Volgograd Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
"RW|Africa/Maputo Africa/Kigali",
"SA|Asia/Riyadh",
"SB|Pacific/Guadalcanal",

Binary file not shown.

File diff suppressed because one or more lines are too long