diff --git a/dist/engrid.css b/dist/engrid.css
index 8803f51f..43327e06 100644
--- a/dist/engrid.css
+++ b/dist/engrid.css
@@ -19,10 +19,10 @@
*
* ENGRID PAGE TEMPLATE ASSETS
*
- * Date: Thursday, September 4, 2025 @ 00:27:03 ET
- * By: fernando
- * ENGrid styles: v0.22.11
- * ENGrid scripts: v0.22.17
+ * Date: Thursday, February 19, 2026 @ 13:39:39 ET
+ * By: nick
+ * ENGrid styles: v0.23.4
+ * ENGrid scripts: v0.23.11
*
* Created by 4Site Studios
* Come work with us or join our team, we would love to hear from you
@@ -1732,8 +1732,7 @@ template{
}
[data-engrid-theme]{
- --native-fonts__sans-serif:-apple-system, BlinkMacSystemFont, "Segoe UI",
- Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
+ --native-fonts__sans-serif:-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
--default_font-family:var(--native-fonts__sans-serif);
--default_font-size:16px;
--default_font-weight:initial;
@@ -2015,7 +2014,6 @@ a:focus,a:hover{
max-width:100%;
width:fit-content;
}
-
.en__component--formblock.inline-other .en__field--checkbox.en__field--withOther--active .en__field__element,.en__component--formblock.inline-other .en__field--radio.en__field--withOther--active .en__field__element,.en__component--svblock.inline-other .en__field--checkbox.en__field--withOther--active .en__field__element,.en__component--svblock.inline-other .en__field--radio.en__field--withOther--active .en__field__element,.en__registrants__registrantDetails.inline-other .en__field--checkbox.en__field--withOther--active .en__field__element,.en__registrants__registrantDetails.inline-other .en__field--radio.en__field--withOther--active .en__field__element{
grid-template-columns:min-content;
}
@@ -2076,8 +2074,10 @@ label a.label-tooltip:last-child{
}
input,input.en__field__input{
background-color:var(--input_background-color);
- border:var(--input_border-width) solid var(--input_border-color);
+ border-color:var(--input_border-color);
border-radius:var(--input_border-radius);
+ border-style:solid;
+ border-width:var(--input_border-width);
box-sizing:border-box;
color:var(--input_color);
display:block;
@@ -2095,8 +2095,8 @@ input,input.en__field__input{
}
input.en__field__input:focus,input.en__field__input:hover,input:focus,input:hover{
background-color:var(--input_background-color_hover);
- border-bottom-color:var(--input_border-color_hover);
- border-color:var(--input_border-color_hover) var(--input_border-color_hover) var(--input_border-bottom-color_hover);
+ border-color:var(--input_border-color_hover);
+ border-bottom-color:var(--input_border-bottom-color_hover);
color:var(--input_color_hover);
}
@@ -2113,8 +2113,8 @@ input.en__field__input:focus,input.en__field__input:hover,input:focus,input:hove
}
.en__field__input--vgs.vgs-collect-container__focused,.en__field__input--vgs:hover{
background-color:var(--input_background-color_hover);
- border-bottom-color:var(--input_border-color_hover);
- border-color:var(--input_border-color_hover) var(--input_border-color_hover) var(--input_border-bottom-color_hover);
+ border-color:var(--input_border-color_hover);
+ border-bottom-color:var(--input_border-bottom-color_hover);
}
.en__field__input--vgs.vgs-collect-container__focused{
outline-color:-webkit-focus-ring-color;
@@ -2160,8 +2160,10 @@ input[type=radio]+label{
input[type=radio]+label:before{
align-items:center;
background-color:var(--radio_background-color);
- border:var(--radio_border-width) solid var(--radio_border-color);
+ border-color:var(--radio_border-color);
border-radius:var(--radio_border-radius);
+ border-style:solid;
+ border-width:var(--radio_border-width);
box-shadow:var(--radio_box-shadow);
color:var(--radio_color);
content:var(--radio_content);
@@ -2204,8 +2206,10 @@ input[type=checkbox]+label{
input[type=checkbox]+label:before{
align-items:center;
background-color:var(--checkbox_background-color);
- border:var(--checkbox_border-width) solid var(--checkbox_border-color);
+ border-color:var(--checkbox_border-color);
border-radius:var(--checkbox_border-radius);
+ border-style:solid;
+ border-width:var(--checkbox_border-width);
color:var(--checkbox_color);
content:"";
display:flex;
@@ -2244,8 +2248,10 @@ input[type=checkbox]:checked+label:before{
.en__twitterTarget__select:before{
align-items:center;
background-color:var(--checkbox_background-color);
- border:var(--checkbox_border-width) solid var(--checkbox_border-color);
+ border-color:var(--checkbox_border-color);
border-radius:var(--checkbox_border-radius);
+ border-style:solid;
+ border-width:var(--checkbox_border-width);
color:var(--checkbox_color);
content:"";
display:flex;
@@ -2284,8 +2290,10 @@ input[type=checkbox]:checked+label:before{
.en__pg__select input:before{
align-items:center;
background-color:var(--radio_background-color);
- border:var(--radio_border-width) solid var(--radio_border-color);
+ border-color:var(--radio_border-color);
border-radius:var(--radio_border-radius);
+ border-style:solid;
+ border-width:var(--radio_border-width);
box-shadow:var(--radio_box-shadow);
color:var(--radio_color);
content:var(--radio_content);
@@ -2320,7 +2328,7 @@ input[type=checkbox]:checked+label:before{
@-moz-document url-prefix(){
.en__pg__select input[type=radio]{
accent-color:var(--radio_color_selected);
- appearance:auto;
+ appearance:none;
background:#0000;
border:none;
outline:none;
@@ -2362,8 +2370,10 @@ select,select.en__field__input--select,select.en__field__input--splitselect,sele
background-position:calc(100% + 1.2ch + .1875rem);
background-repeat:no-repeat;
background-size:.5625rem .375rem;
- border:var(--select_border-width) solid var(--select_border-color);
+ border-color:var(--select_border-color);
border-radius:var(--select_border-radius);
+ border-style:solid;
+ border-width:var(--select_border-width);
box-shadow:var(--select_box-shadow);
box-sizing:border-box;
color:var(--select_color);
@@ -2385,15 +2395,17 @@ select,select.en__field__input--select,select.en__field__input--splitselect,sele
select.en__field__input--select:focus,select.en__field__input--select:hover,select.en__field__input--splitselect:focus,select.en__field__input--splitselect:hover,select.en__field__input--tripleselect:focus,select.en__field__input--tripleselect:hover,select:focus,select:hover{
background-color:var(--select_background-color_hover);
background-image:url("data:image/svg+xml;utf8,");
- border-bottom-color:var(--select_border-color_hover);
- border-color:var(--select_border-color_hover) var(--select_border-color_hover) var(--select_border-bottom-color_hover);
+ border-color:var(--select_border-color_hover);
+ border-bottom-color:var(--select_border-bottom-color_hover);
box-shadow:var(--select_box-shadow_hover);
color:var(--select_color_hover);
}
.en__contactMessage__plainText,.en__field__input--textarea,textarea{
background-color:var(--textarea_background-color);
- border:var(--textarea_border-width) solid var(--textarea_border-color);
+ border-color:var(--textarea_border-color);
border-radius:var(--textarea_border-radius);
+ border-style:solid;
+ border-width:var(--textarea_border-width);
box-shadow:var(--textarea_box-shadow);
box-sizing:border-box;
color:var(--textarea_color);
@@ -2414,8 +2426,8 @@ select.en__field__input--select:focus,select.en__field__input--select:hover,sele
}
.en__contactMessage__plainText:focus,.en__contactMessage__plainText:hover,.en__field__input--textarea:focus,.en__field__input--textarea:hover,textarea:focus,textarea:hover{
background-color:var(--textarea_background-color_hover);
- border-bottom-color:var(--textarea_border-color_hover);
- border-color:var(--textarea_border-color_hover) var(--textarea_border-color_hover) var(--textarea_border-bottom-color_hover);
+ border-color:var(--textarea_border-color_hover);
+ border-bottom-color:var(--textarea_border-bottom-color_hover);
box-shadow:var(--textarea_box-shadow_hover);
color:var(--textarea_color_hover);
}
@@ -2563,11 +2575,9 @@ body[data-engrid-live-currency=active] .en__field--donationAmt .en__field__item:
-webkit-appearance:-apple-pay-button;
display:inline-block;
}
-
.apple-pay-button,.apple-pay-button-white-with-line{
-apple-pay-button-style:white-outline;
}
-
.en__field__input.en__field__input--radio[value=applepay]+label{
border-width:0 !important;
}
@@ -2579,7 +2589,6 @@ body[data-engrid-live-currency=active] .en__field--donationAmt .en__field__item:
}
}
@supports not (-webkit-appearance:-apple-pay-button){
-
.apple-pay-button,.apple-pay-container,.en__field__input.en__field__input--radio[value=applepay]+label{
display:none;
}
@@ -2711,8 +2720,10 @@ body{
.button,.en__button,.pseduo__en__submit_button,button,button.en__eventOccurrence__select,button.en__ticketRecurring__select,button.en__ticketSummary__checkout{
appearance:none;
background-color:var(--button_background-color);
- border:var(--button_border-width) solid var(--button_border-color);
+ border-color:var(--button_border-color);
border-radius:var(--button_border-radius);
+ border-style:solid;
+ border-width:var(--button_border-width);
color:var(--button_color);
cursor:pointer;
display:block;
@@ -3130,11 +3141,12 @@ body:not(#en__pagebuilder) .click-to-expand.expanded .click-to-expand-text-wrapp
flex-direction:column;
}
#en__pagebuilder .en__field--plaid,#en__pagebuilder .hide,#en__pagebuilder .hide-labels .en__field>label,#en__pagebuilder .hide-until-client-js-loading-finished,#en__pagebuilder .hide-until-engrid-js-loading-finished,#en__pagebuilder .i1-hide .en__field:first-of-type,#en__pagebuilder .i1-hide-label .en__field:first-of-type>label,#en__pagebuilder .i10-hide .en__field:nth-of-type(10),#en__pagebuilder .i10-hide-label .en__field:nth-of-type(10)>label,#en__pagebuilder .i11-hide .en__field:nth-of-type(11),#en__pagebuilder .i11-hide-label .en__field:nth-of-type(11)>label,#en__pagebuilder .i2-hide .en__field:nth-of-type(2),#en__pagebuilder .i2-hide-label .en__field:nth-of-type(2)>label,#en__pagebuilder .i3-hide .en__field:nth-of-type(3),#en__pagebuilder .i3-hide-label .en__field:nth-of-type(3)>label,#en__pagebuilder .i4-hide .en__field:nth-of-type(4),#en__pagebuilder .i4-hide-label .en__field:nth-of-type(4)>label,#en__pagebuilder .i5-hide .en__field:nth-of-type(5),#en__pagebuilder .i5-hide-label .en__field:nth-of-type(5)>label,#en__pagebuilder .i6-hide .en__field:nth-of-type(6),#en__pagebuilder .i6-hide-label .en__field:nth-of-type(6)>label,#en__pagebuilder .i7-hide .en__field:nth-of-type(7),#en__pagebuilder .i7-hide-label .en__field:nth-of-type(7)>label,#en__pagebuilder .i8-hide .en__field:nth-of-type(8),#en__pagebuilder .i8-hide-label .en__field:nth-of-type(8)>label,#en__pagebuilder .i9-hide .en__field:nth-of-type(9),#en__pagebuilder .i9-hide-label .en__field:nth-of-type(9)>label,#en__pagebuilder [hidden-via-url-argument],#en__pagebuilder label.hide-label,[data-engrid-debug] .en__field--plaid,[data-engrid-debug] .hide,[data-engrid-debug] .hide-labels .en__field>label,[data-engrid-debug] .hide-until-client-js-loading-finished,[data-engrid-debug] .hide-until-engrid-js-loading-finished,[data-engrid-debug] .i1-hide .en__field:first-of-type,[data-engrid-debug] .i1-hide-label .en__field:first-of-type>label,[data-engrid-debug] .i10-hide .en__field:nth-of-type(10),[data-engrid-debug] .i10-hide-label .en__field:nth-of-type(10)>label,[data-engrid-debug] .i11-hide .en__field:nth-of-type(11),[data-engrid-debug] .i11-hide-label .en__field:nth-of-type(11)>label,[data-engrid-debug] .i2-hide .en__field:nth-of-type(2),[data-engrid-debug] .i2-hide-label .en__field:nth-of-type(2)>label,[data-engrid-debug] .i3-hide .en__field:nth-of-type(3),[data-engrid-debug] .i3-hide-label .en__field:nth-of-type(3)>label,[data-engrid-debug] .i4-hide .en__field:nth-of-type(4),[data-engrid-debug] .i4-hide-label .en__field:nth-of-type(4)>label,[data-engrid-debug] .i5-hide .en__field:nth-of-type(5),[data-engrid-debug] .i5-hide-label .en__field:nth-of-type(5)>label,[data-engrid-debug] .i6-hide .en__field:nth-of-type(6),[data-engrid-debug] .i6-hide-label .en__field:nth-of-type(6)>label,[data-engrid-debug] .i7-hide .en__field:nth-of-type(7),[data-engrid-debug] .i7-hide-label .en__field:nth-of-type(7)>label,[data-engrid-debug] .i8-hide .en__field:nth-of-type(8),[data-engrid-debug] .i8-hide-label .en__field:nth-of-type(8)>label,[data-engrid-debug] .i9-hide .en__field:nth-of-type(9),[data-engrid-debug] .i9-hide-label .en__field:nth-of-type(9)>label,[data-engrid-debug] [hidden-via-url-argument],[data-engrid-debug] label.hide-label{
- background-color:#ff00001a !important;
+ background-color:rgba(255,0,0,.102) !important;
}
body:not(#en__pagebuilder):not([data-engrid-debug]) .hide:not(.en__field--validationFailed):not(:has(.en__field.en__field--validationFailed)),body:not(#en__pagebuilder):not([data-engrid-debug]) div:not(.en__field--validationFailed) .hide:not(.en__field--validationFailed):not(:has(.en__field.en__field--validationFailed)){
display:none;
}
+
body:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-js-loading=finished]) .en__field--donationAmt .en__field__item label{
color:#0000 !important;
}
@@ -3174,7 +3186,6 @@ body:not(#en__pagebuilder):not([data-engrid-debug]) .hide-labels .en__field:not(
.i1-m50 .en__field:first-of-type,.i10-m50 .en__field:nth-of-type(10),.i11-m50 .en__field:nth-of-type(11),.i2-m50 .en__field:nth-of-type(2),.i3-m50 .en__field:nth-of-type(3),.i4-m50 .en__field:nth-of-type(4),.i5-m50 .en__field:nth-of-type(5),.i6-m50 .en__field:nth-of-type(6),.i7-m50 .en__field:nth-of-type(7),.i8-m50 .en__field:nth-of-type(8),.i9-m50 .en__field:nth-of-type(9){
flex-basis:50%;
}
-
.i1-m100 .en__field:first-of-type,.i10-m100 .en__field:nth-of-type(10),.i11-m100 .en__field:nth-of-type(11),.i2-m100 .en__field:nth-of-type(2),.i3-m100 .en__field:nth-of-type(3),.i4-m100 .en__field:nth-of-type(4),.i5-m100 .en__field:nth-of-type(5),.i6-m100 .en__field:nth-of-type(6),.i7-m100 .en__field:nth-of-type(7),.i8-m100 .en__field:nth-of-type(8),.i9-m100 .en__field:nth-of-type(9){
flex-basis:100%;
}
@@ -3190,6 +3201,7 @@ body:not(#en__pagebuilder):not([data-engrid-debug]) .hide-labels .en__field:not(
--engrid__body-side_padding:var(--engrid__body-main_padding);
--root_font-size:16px;
}
+
[data-engrid-theme] #en__digitalWallet,[data-engrid-theme] .en__digitalWallet__container{
max-width:100% !important;
}
@@ -3226,7 +3238,7 @@ body:not(#en__pagebuilder):not([data-engrid-debug]) .hide-labels .en__field:not(
padding-right:var(--fields_spacing-inline);
padding-top:0;
}
-[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type-option-apple-pay=true]) .showif-apple-pay-available,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type-option-daf=true]) .showif-daf-available,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type-option-google-pay=true]) .showif-google-pay-available,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type-option-paypal-one-touch=true]) .showif-paypal-one-touch-available,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type-option-venmo=true]) .showif-venmo-available,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type=daf]) .showif-daf-selected,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type=paypaltouch]) .showif-paypaltouch-selected,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type=stripedigitalwallet]) .showif-stripedigitalwallet-selected{
+[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type-option-apple-pay=true]) .showif-apple-pay-available,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type-option-daf=true]) .showif-daf-available,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type-option-google-pay=true]) .showif-google-pay-available,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type-option-paypal-one-touch=true]) .showif-paypal-one-touch-available,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type-option-stripedigitalwallet=true]) .showif-stripedigitalwallet-available,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type-option-venmo=true]) .showif-venmo-available,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type=daf]) .showif-daf-selected,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type=paypaltouch]) .showif-paypaltouch-selected,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements]:not([data-engrid-payment-type=stripedigitalwallet]) .showif-stripedigitalwallet-selected{
display:none;
}
[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements][data-engrid-payment-type=daf] .hideif-daf-selected,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements][data-engrid-payment-type=daf] .hideif-daf-selected_hide-vanilla-submit-button .en__submit,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements][data-engrid-payment-type=paypaltouch] .hideif-paypaltouch-selected,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements][data-engrid-payment-type=stripedigitalwallet] .hideif-stripedigitalwallet-selected,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements][data-engrid-transaction-recurring=n][data-engrid-payment-type-option-paypal-one-touch=true] .en__field--giveBySelect.paypal,[data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements][data-engrid-transaction-recurring=y] .en__field--giveBySelect.paypaltouch{
@@ -3326,8 +3338,10 @@ body:not(#en__pagebuilder):not([data-engrid-debug]) .hide-labels .en__field:not(
.radio-to-buttons .en__field--radio input[type=radio]+label{
background-color:var(--button_background-color);
background-position-x:40px;
- border:var(--button_border-width) solid var(--button_border-color);
+ border-color:var(--button_border-color);
border-radius:var(--button_border-radius);
+ border-style:solid;
+ border-width:var(--button_border-width);
color:var(--button_color);
flex-flow:wrap;
font-family:var(--button_font-family);
@@ -3366,8 +3380,10 @@ body:not(#en__pagebuilder):not([data-engrid-debug]) .hide-labels .en__field:not(
.en__field--give-by-select.en__field--radio input[type=radio]+label{
background-color:var(--give-by-select__button_background-color);
background-position-x:40px;
- border:var(--give-by-select__button_border-width) solid var(--give-by-select__button_border-color);
+ border-color:var(--give-by-select__button_border-color);
border-radius:var(--give-by-select__button_border-radius);
+ border-style:solid;
+ border-width:var(--give-by-select__button_border-width);
color:var(--give-by-select__button_color);
flex-flow:wrap;
font-family:var(--give-by-select__button_font-family);
@@ -3407,8 +3423,10 @@ body:not(#en__pagebuilder):not([data-engrid-debug]) .hide-labels .en__field:not(
.radio-to-buttons_donationAmt .en__field--donationAmt.en__field--radio input[type=radio]+label{
background-color:var(--donation-amount__button_background-color);
background-position-x:40px;
- border:var(--donation-amount__button_border-width) solid var(--donation-amount__button_border-color);
+ border-color:var(--donation-amount__button_border-color);
border-radius:var(--donation-amount__button_border-radius);
+ border-style:solid;
+ border-width:var(--donation-amount__button_border-width);
color:var(--donation-amount__button_color);
flex-flow:wrap;
font-family:var(--donation-amount__button_font-family);
@@ -3448,8 +3466,10 @@ body:not(#en__pagebuilder):not([data-engrid-debug]) .hide-labels .en__field:not(
.radio-to-buttons_recurrfreq .en__field--recurrfreq.en__field--radio input[type=radio]+label{
background-color:var(--recurring-frequency__button_background-color);
background-position-x:40px;
- border:var(--recurring-frequency__button_border-width) solid var(--recurring-frequency__button_border-color);
+ border-color:var(--recurring-frequency__button_border-color);
border-radius:var(--recurring-frequency__button_border-radius);
+ border-style:solid;
+ border-width:var(--recurring-frequency__button_border-width);
color:var(--recurring-frequency__button_color);
flex-flow:wrap;
font-family:var(--recurring-frequency__button_font-family);
@@ -3489,8 +3509,10 @@ body:not(#en__pagebuilder):not([data-engrid-debug]) .hide-labels .en__field:not(
.radio-to-buttons_recurrpay .en__field--recurrpay.en__field--radio input[type=radio]+label{
background-color:var(--recurring-payment__button_background-color);
background-position-x:40px;
- border:var(--recurring-payment__button_border-width) solid var(--recurring-payment__button_border-color);
+ border-color:var(--recurring-payment__button_border-color);
border-radius:var(--recurring-payment__button_border-radius);
+ border-style:solid;
+ border-width:var(--recurring-payment__button_border-width);
color:var(--recurring-payment__button_color);
flex-flow:wrap;
font-family:var(--recurring-payment__button_font-family);
@@ -3622,8 +3644,9 @@ body:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-transaction
}
#en__pagebuilder .recurring-frequency-annual-hide,#en__pagebuilder .recurring-frequency-annual-show,#en__pagebuilder .recurring-frequency-monthly-hide,#en__pagebuilder .recurring-frequency-monthly-show,#en__pagebuilder .recurring-frequency-n-hide,#en__pagebuilder .recurring-frequency-n-show,#en__pagebuilder .recurring-frequency-onetime-hide,#en__pagebuilder .recurring-frequency-onetime-show,#en__pagebuilder .recurring-frequency-quarterly-hide,#en__pagebuilder .recurring-frequency-quarterly-show,#en__pagebuilder .recurring-frequency-semi-annual-hide,#en__pagebuilder .recurring-frequency-semi-annual-show,#en__pagebuilder .recurring-frequency-y-hide,#en__pagebuilder .recurring-frequency-y-show,[data-engrid-debug] .recurring-frequency-annual-hide,[data-engrid-debug] .recurring-frequency-annual-show,[data-engrid-debug] .recurring-frequency-monthly-hide,[data-engrid-debug] .recurring-frequency-monthly-show,[data-engrid-debug] .recurring-frequency-n-hide,[data-engrid-debug] .recurring-frequency-n-show,[data-engrid-debug] .recurring-frequency-onetime-hide,[data-engrid-debug] .recurring-frequency-onetime-show,[data-engrid-debug] .recurring-frequency-quarterly-hide,[data-engrid-debug] .recurring-frequency-quarterly-show,[data-engrid-debug] .recurring-frequency-semi-annual-hide,[data-engrid-debug] .recurring-frequency-semi-annual-show,[data-engrid-debug] .recurring-frequency-y-hide,[data-engrid-debug] .recurring-frequency-y-show{
- background-color:#0000ff1a !important;
+ background-color:rgba(0,0,255,.102) !important;
}
+
[data-engrid-theme] #dd-container .dtd-callout,[data-engrid-theme] .dtd-plugin .dtd-callout{
background-color:initial;
border:none;
@@ -3684,8 +3707,10 @@ body:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-transaction
}
[data-engrid-theme] #dd-container .dtd-search-input,[data-engrid-theme] .dtd-plugin .dtd-search-input{
background-color:var(--input_background-color) !important;
- border:var(--input_border-width) solid var(--input_border-color) !important;
+ border-color:var(--input_border-color) !important;
border-radius:var(--input_border-radius) !important;
+ border-style:solid !important;
+ border-width:var(--input_border-width) !important;
box-sizing:border-box;
color:var(--input_color) !important;
display:block !important;
@@ -3703,8 +3728,8 @@ body:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-transaction
}
[data-engrid-theme] #dd-container .dtd-search-input:focus,[data-engrid-theme] #dd-container .dtd-search-input:hover,[data-engrid-theme] .dtd-plugin .dtd-search-input:focus,[data-engrid-theme] .dtd-plugin .dtd-search-input:hover{
background-color:var(--input_background-color_hover) !important;
- border-bottom-color:var(--input_border-color_hover) !important;
- border-color:var(--input_border-color_hover) var(--input_border-color_hover) var(--input_border-bottom-color_hover) !important;
+ border-color:var(--input_border-color_hover) !important;
+ border-bottom-color:var(--input_border-bottom-color_hover) !important;
color:var(--input_color_hover) !important;
}
[data-engrid-theme] #dd-container .dtd-search-input,[data-engrid-theme] .dtd-plugin .dtd-search-input{
@@ -3713,9 +3738,10 @@ body:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-transaction
[data-engrid-theme] #dd-container .button,[data-engrid-theme] #dd-container a[class*=mg-][class*=-button],[data-engrid-theme] #dd-container button,[data-engrid-theme] .dtd-plugin .button,[data-engrid-theme] .dtd-plugin a[class*=mg-][class*=-button],[data-engrid-theme] .dtd-plugin button{
-webkit-appearance:none;
background-color:var(--submit__button_background-color);
- border-color:var(--button_border-color);
- border:var(--button_border-width) solid var(--submit__button_border-color);
+ border-color:var(--submit__button_border-color);
border-radius:var(--button_border-radius);
+ border-style:solid;
+ border-width:var(--button_border-width);
color:var(--submit__button_color);
cursor:pointer;
font-family:var(--button_font-family);
@@ -3742,8 +3768,10 @@ body:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-transaction
}
[data-engrid-theme] #dd-company-name-input .dtd-search-input,[data-engrid-theme] .dtd-streamlined-plugin .dtd-search-input{
background-color:var(--input_background-color) !important;
- border:var(--input_border-width) solid var(--input_border-color) !important;
+ border-color:var(--input_border-color) !important;
border-radius:var(--input_border-radius) !important;
+ border-style:solid !important;
+ border-width:var(--input_border-width) !important;
box-sizing:border-box;
color:var(--input_color) !important;
display:block !important;
@@ -3761,15 +3789,17 @@ body:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-transaction
}
[data-engrid-theme] #dd-company-name-input .dtd-search-input:focus,[data-engrid-theme] #dd-company-name-input .dtd-search-input:hover,[data-engrid-theme] .dtd-streamlined-plugin .dtd-search-input:focus,[data-engrid-theme] .dtd-streamlined-plugin .dtd-search-input:hover{
background-color:var(--input_background-color_hover) !important;
- border-bottom-color:var(--input_border-color_hover) !important;
- border-color:var(--input_border-color_hover) var(--input_border-color_hover) var(--input_border-bottom-color_hover) !important;
+ border-color:var(--input_border-color_hover) !important;
+ border-bottom-color:var(--input_border-bottom-color_hover) !important;
color:var(--input_color_hover) !important;
}
[data-engrid-theme] .dtd-company-selected .wrongcompany a{
-webkit-appearance:none;
background-color:var(--button_background-color);
- border:var(--button_border-width) solid var(--button_border-color);
+ border-color:var(--button_border-color);
border-radius:var(--button_border-radius);
+ border-style:solid;
+ border-width:var(--button_border-width);
color:var(--button_color);
cursor:pointer;
display:block;
@@ -4275,24 +4305,19 @@ button.en__eventOccurrence__select>label{
margin-bottom:2rem;
padding-bottom:2rem;
}
-
.en__ticket__desc,.en__ticket__field--cost,.en__ticket__name{
text-align:center;
}
-
.en__ticket__field--cost{
width:100%;
}
-
.en__ticket__selector{
margin-right:auto;
}
-
.en__ticket__remaining{
justify-self:center;
padding-top:.5rem;
}
-
.en__additional{
display:flex;
flex-direction:column;
@@ -4300,15 +4325,12 @@ button.en__eventOccurrence__select>label{
margin-bottom:2rem;
padding-bottom:2rem;
}
-
.en__additional__amount,.en__additional__promo{
align-self:center;
}
-
.en__additional__promo{
flex-direction:column;
}
-
.en__additional__promo:before{
content:"Promo Code";
display:block;
@@ -4316,7 +4338,6 @@ button.en__eventOccurrence__select>label{
margin-bottom:1ch;
margin-top:1rem;
}
-
.en__ticket__plus{
margin-right:2rem;
}
@@ -5634,8 +5655,10 @@ body[data-engrid-exit-intent-lightbox=open]{
.ExitIntent__button{
background-color:var(--exit-intent__button_background-color);
- border:var(--exit-intent__button_border-width) solid var(--exit-intent__button_border-color);
+ border-color:var(--exit-intent__button_border-color);
border-radius:var(--exit-intent__button_border-radius);
+ border-style:solid;
+ border-width:var(--exit-intent__button_border-width);
color:var(--exit-intent__button_color);
display:block;
font-family:var(--exit-intent__button_font-family);
@@ -5721,7 +5744,7 @@ body:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-embedded-ec
}
#en__pagebuilder .checkbox-label{
- background-color:#0000ff1a;
+ background-color:rgba(0,0,255,.102);
display:block;
position:relative;
}
@@ -5740,6 +5763,17 @@ body:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-embedded-ec
body:not(#en__pagebuilder) .checkbox-label{
display:none;
}
+
+.engrid-custom-checkbox-label{
+ box-sizing:border-box;
+ width:100%;
+}
+.engrid-custom-checkbox-label p:first-child{
+ margin-top:0;
+}
+.engrid-custom-checkbox-label p:last-child{
+ margin-bottom:0;
+}
[data-engrid-theme]{
--engrid__page_padding:0px;
--engrid__page_margin:0px;
@@ -6180,7 +6214,6 @@ body[data-engrid-embedded]:not(#en__pagebuilder) .hideif-iframe{
[data-engrid-layout=centercenter1col][data-replace-banner-with-background=if-background-image][data-engrid-page-background=image] [class*=page-backgroundImage]:before,[data-engrid-layout=centercenter1col][data-replace-banner-with-background=if-banner-empty][data-engrid-body-banner=empty][data-engrid-page-background=image] [class*=page-backgroundImage]:before{
content:none !important;
}
-
[data-engrid-layout=centercenter1col] body[data-engrid-has-body-title] .en__component--advrow .body-bannerOverlay{
display:none;
}
@@ -6286,7 +6319,6 @@ body[data-engrid-embedded]:not(#en__pagebuilder) .hideif-iframe{
[data-engrid-layout=centercenter2col][data-replace-banner-with-background=if-background-image][data-engrid-page-background=image] [class*=page-backgroundImage]:before,[data-engrid-layout=centercenter2col][data-replace-banner-with-background=if-banner-empty][data-engrid-body-banner=empty][data-engrid-page-background=image] [class*=page-backgroundImage]:before{
content:none !important;
}
-
[data-engrid-layout=centercenter2col] body[data-engrid-has-body-title] .en__component--advrow .body-bannerOverlay{
display:none;
}
@@ -6362,7 +6394,6 @@ body[data-engrid-embedded]:not(#en__pagebuilder) .hideif-iframe{
[data-engrid-layout=centerleft1col][data-replace-banner-with-background=if-background-image][data-engrid-page-background=image] [class*=page-backgroundImage]:before,[data-engrid-layout=centerleft1col][data-replace-banner-with-background=if-banner-empty][data-engrid-body-banner=empty][data-engrid-page-background=image] [class*=page-backgroundImage]:before{
content:none !important;
}
-
[data-engrid-layout=centerleft1col] body[data-engrid-has-body-title] .en__component--advrow .body-bannerOverlay{
display:none;
}
@@ -6417,7 +6448,6 @@ body[data-engrid-embedded]:not(#en__pagebuilder) .hideif-iframe{
}
}
@media screen and (min-width:500px) and (max-width:499px){
-
.page-backgroundImage,.page-backgroundImage:before,[data-engrid-layout=centerright1col][data-replace-banner-with-background=if-background-image][data-engrid-page-background=image] [class*=body-banner],[data-engrid-layout=centerright1col][data-replace-banner-with-background=if-banner-empty][data-engrid-body-banner=empty][data-engrid-page-background=image] [class*=body-banner]{
display:none;
}
@@ -6442,11 +6472,9 @@ body[data-engrid-embedded]:not(#en__pagebuilder) .hideif-iframe{
[data-engrid-layout=centerright1col][data-replace-banner-with-background=if-background-image][data-engrid-page-background=image] [class*=page-backgroundImage]:before,[data-engrid-layout=centerright1col][data-replace-banner-with-background=if-banner-empty][data-engrid-body-banner=empty][data-engrid-page-background=image] [class*=page-backgroundImage]:before{
content:none !important;
}
-
body[data-engrid-has-body-title] .en__component--advrow .body-bannerOverlay{
display:none;
}
-
body:not([data-engrid-has-body-title]) .en__component--advrow .body-bannerOverlay{
grid-row:body-title;
}
@@ -6454,7 +6482,6 @@ body[data-engrid-embedded]:not(#en__pagebuilder) .hideif-iframe{
padding:var(--engrid__body-top_padding);
width:100%;
}
-
[data-engrid-layout=centerright1col]{
--engrid__body_box-shadow:none;
}
@@ -6498,7 +6525,6 @@ body[data-engrid-embedded]:not(#en__pagebuilder) .hideif-iframe{
[data-engrid-layout=leftleft1col][data-replace-banner-with-background=if-background-image][data-engrid-page-background=image] [class*=page-backgroundImage]:before,[data-engrid-layout=leftleft1col][data-replace-banner-with-background=if-banner-empty][data-engrid-body-banner=empty][data-engrid-page-background=image] [class*=page-backgroundImage]:before{
content:none !important;
}
-
[data-engrid-layout=leftleft1col] body[data-engrid-has-body-title] .en__component--advrow .body-bannerOverlay{
display:none;
}
@@ -6577,7 +6603,6 @@ body[data-engrid-embedded]:not(#en__pagebuilder) .hideif-iframe{
[data-engrid-layout=rightright1col][data-replace-banner-with-background=if-background-image][data-engrid-page-background=image] [class*=page-backgroundImage]:before,[data-engrid-layout=rightright1col][data-replace-banner-with-background=if-banner-empty][data-engrid-body-banner=empty][data-engrid-page-background=image] [class*=page-backgroundImage]:before{
content:none !important;
}
-
[data-engrid-layout=rightright1col] body[data-engrid-has-body-title] .en__component--advrow .body-bannerOverlay{
display:none;
}
@@ -7469,18 +7494,18 @@ body[data-engrid-debug]:before{
outline-style:solid;
z-index:1000;
}
-#en__pagebuilder [class*=engrid__supporter i],#en__pagebuilder [class*=giveBySelect-ach i],#en__pagebuilder [class*=giveBySelect-card i],#en__pagebuilder [class*=giveBySelect-check i],#en__pagebuilder [class*=giveBySelect-digitalwallet i],#en__pagebuilder [class*=giveBySelect-paypal i],#en__pagebuilder [class*=giveBySelect-paypaltouch i],#en__pagebuilder [class*=giveBySelect-stripedigitalwallet i],#en__pagebuilder [class*=inmem-n i],#en__pagebuilder [class*=inmem-y i]{
- background-color:#0000ff1a !important;
+#en__pagebuilder [class*=engrid__supporter i],#en__pagebuilder [class*=giveBySelect-ach i],#en__pagebuilder [class*=giveBySelect-card i],#en__pagebuilder [class*=giveBySelect-check i],#en__pagebuilder [class*=giveBySelect-digitalwallet i],#en__pagebuilder [class*=giveBySelect-paypal i],#en__pagebuilder [class*=giveBySelect-paypaltouch i],#en__pagebuilder [class*=giveBySelect-stripedigitalwallet i],#en__pagebuilder [class*=inmem-n i],#en__pagebuilder [class*=inmem-y i],#en__pagebuilder [class*=shipenabled-n i],#en__pagebuilder [class*=shipenabled-y i]{
+ background-color:rgba(0,0,255,.102) !important;
}
-#en__pagebuilder [class*=engrid__supporter i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-ach i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-card i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-check i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-digitalwallet i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-paypal i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-paypaltouch i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-stripedigitalwallet i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=inmem-n i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=inmem-y i].pboAdvancedRow__preview .en__component--column{
+#en__pagebuilder [class*=engrid__supporter i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-ach i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-card i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-check i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-digitalwallet i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-paypal i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-paypaltouch i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=giveBySelect-stripedigitalwallet i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=inmem-n i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=inmem-y i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=shipenabled-n i].pboAdvancedRow__preview .en__component--column,#en__pagebuilder [class*=shipenabled-y i].pboAdvancedRow__preview .en__component--column{
outline-color:#00f !important;
z-index:1;
}
-#en__pagebuilder [class*=engrid__supporter i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-ach i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-card i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-check i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-digitalwallet i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-paypal i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-paypaltouch i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-stripedigitalwallet i] .en__mandatory,#en__pagebuilder [class*=inmem-n i] .en__mandatory,#en__pagebuilder [class*=inmem-y i] .en__mandatory{
+#en__pagebuilder [class*=engrid__supporter i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-ach i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-card i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-check i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-digitalwallet i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-paypal i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-paypaltouch i] .en__mandatory,#en__pagebuilder [class*=giveBySelect-stripedigitalwallet i] .en__mandatory,#en__pagebuilder [class*=inmem-n i] .en__mandatory,#en__pagebuilder [class*=inmem-y i] .en__mandatory,#en__pagebuilder [class*=shipenabled-n i] .en__mandatory,#en__pagebuilder [class*=shipenabled-y i] .en__mandatory{
outline:5px solid #f12222;
}
#en__pagebuilder .live-giving-amount,#en__pagebuilder .live-giving-frequency,#en__pagebuilder .live-giving-upsell-amount,#en__pagebuilder .live-giving-upsell-amount-raw{
- background-color:#00ff001a !important;
+ background-color:rgba(0,255,0,.102) !important;
}
#en__pagebuilder .live-giving-amount.pboAdvancedRow__preview .en__component--column,#en__pagebuilder .live-giving-frequency.pboAdvancedRow__preview .en__component--column,#en__pagebuilder .live-giving-upsell-amount-raw.pboAdvancedRow__preview .en__component--column,#en__pagebuilder .live-giving-upsell-amount.pboAdvancedRow__preview .en__component--column{
outline-color:#0f0 !important;
@@ -7649,7 +7674,7 @@ body[data-engrid-debug]:before{
}
#en__pagebuilder .fast-address-details,#en__pagebuilder .fast-personal-details,#en__pagebuilder [class*=engrid__],#en__pagebuilder [class*=hideif],#en__pagebuilder [class*=showif],[data-engrid-debug] .fast-address-details,[data-engrid-debug] .fast-personal-details,[data-engrid-debug] [class*=engrid__],[data-engrid-debug] [class*=hideif],[data-engrid-debug] [class*=showif]{
- background-color:#0000ff1a !important;
+ background-color:rgba(0,0,255,.102) !important;
}
#en__pagebuilder .showif-iframe:after,[data-engrid-debug] .showif-iframe:after{
color:#00f;
@@ -7673,7 +7698,7 @@ body[data-engrid-debug]:before{
}
#en__pagebuilder [class*=setattr],[data-engrid-debug] [class*=setattr]{
- background-color:#ffff001a !important;
+ background-color:rgba(255,255,0,.102) !important;
}
#en__pagebuilder .messageOverlay{
@@ -7760,8 +7785,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6FxZCJgvAQ.woff2) format("woff2");
- unicode-range:u+0460-052f, u+1c80-1c88, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0460-052f, u+1c80-1c8a, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
}
@font-face{
font-display:swap;
@@ -7769,7 +7794,7 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6FxZCJgvAQ.woff2) format("woff2");
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6FxZCJgvAQ.woff2) format("woff2");
unicode-range:u+0301, u+0400-045f, u+0490-0491, u+04b0-04b1, u+2116;
}
@font-face{
@@ -7778,7 +7803,7 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6FxZCJgvAQ.woff2) format("woff2");
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6FxZCJgvAQ.woff2) format("woff2");
unicode-range:u+1f??;
}
@font-face{
@@ -7787,8 +7812,26 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6FxZCJgvAQ.woff2) format("woff2");
- unicode-range:u+0370-03ff;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0370-0377, u+037a-037f, u+0384-038a, u+038c, u+038e-03a1, u+03a3-03ff;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:400;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0307-0308, u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:400;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0302-0303, u+0305, u+0307-0308, u+0310, u+0312, u+0315, u+031a, u+0326-0327, u+032c, u+032f-0330, u+0332-0333, u+0338, u+033a, u+0346, u+034d, u+0391-03a1, u+03a3-03a9, u+03b1-03c9, u+03d1, u+03d5-03d6, u+03f0-03f1, u+03f4-03f5, u+2016-2017, u+2034-2038, u+203c, u+2040, u+2043, u+2047, u+2050, u+2057, u+205f, u+2070-2071, u+2074-208e, u+2090-209c, u+20d0-20dc, u+20e1, u+20e5-20ef, u+2100-2112, u+2114-2115, u+2117-2121, u+2123-214f, u+2190, u+2192, u+2194-21ae, u+21b0-21e5, u+21f1-21f2, u+21f4-2211, u+2213-2214, u+2216-22ff, u+2308-230b, u+2310, u+2319, u+231c-2321, u+2336-237a, u+237c, u+2395, u+239b-23b7, u+23d0, u+23dc-23e1, u+2474-2475, u+25af, u+25b3, u+25b7, u+25bd, u+25c1, u+25ca, u+25cc, u+25fb, u+266d-266f, u+27c0-27ff, u+2900-2aff, u+2b0e-2b11, u+2b30-2b4c, u+2bfe, u+3030, u+ff5b, u+ff5d, u+1d400-1d7ff, u+1ee??;
}
@font-face{
font-display:swap;
@@ -7796,8 +7839,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06FxZCJgvAQ.woff2) format("woff2");
- unicode-range:u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0001-000c, u+000e-001f, u+007f-009f, u+20dd-20e0, u+20e2-20e4, u+2150-218f, u+2190, u+2192, u+2194-2199, u+21af, u+21e6-21f0, u+21f3, u+2218-2219, u+2299, u+22c4-22c6, u+2300-243f, u+2440-244a, u+2460-24ff, u+25a0-27bf, u+28??, u+2921-2922, u+2981, u+29bf, u+29eb, u+2b??, u+4dc0-4dff, u+fff9-fffb, u+10140-1018e, u+10190-1019c, u+101a0, u+101d0-101fd, u+102e0-102fb, u+10e60-10e7e, u+1d2c0-1d2d3, u+1d2e0-1d37f, u+1f0??, u+1f100-1f1ad, u+1f1e6-1f1ff, u+1f30d-1f30f, u+1f315, u+1f31c, u+1f31e, u+1f320-1f32c, u+1f336, u+1f378, u+1f37d, u+1f382, u+1f393-1f39f, u+1f3a7-1f3a8, u+1f3ac-1f3af, u+1f3c2, u+1f3c4-1f3c6, u+1f3ca-1f3ce, u+1f3d4-1f3e0, u+1f3ed, u+1f3f1-1f3f3, u+1f3f5-1f3f7, u+1f408, u+1f415, u+1f41f, u+1f426, u+1f43f, u+1f441-1f442, u+1f444, u+1f446-1f449, u+1f44c-1f44e, u+1f453, u+1f46a, u+1f47d, u+1f4a3, u+1f4b0, u+1f4b3, u+1f4b9, u+1f4bb, u+1f4bf, u+1f4c8-1f4cb, u+1f4d6, u+1f4da, u+1f4df, u+1f4e3-1f4e6, u+1f4ea-1f4ed, u+1f4f7, u+1f4f9-1f4fb, u+1f4fd-1f4fe, u+1f503, u+1f507-1f50b, u+1f50d, u+1f512-1f513, u+1f53e-1f54a, u+1f54f-1f5fa, u+1f610, u+1f650-1f67f, u+1f687, u+1f68d, u+1f691, u+1f694, u+1f698, u+1f6ad, u+1f6b2, u+1f6b9-1f6ba, u+1f6bc, u+1f6c6-1f6cf, u+1f6d3-1f6d7, u+1f6e0-1f6ea, u+1f6f0-1f6f3, u+1f6f7-1f6fc, u+1f7??, u+1f800-1f80b, u+1f810-1f847, u+1f850-1f859, u+1f860-1f887, u+1f890-1f8ad, u+1f8b0-1f8bb, u+1f8c0-1f8c1, u+1f900-1f90b, u+1f93b, u+1f946, u+1f984, u+1f996, u+1f9e9, u+1fa00-1fa6f, u+1fa70-1fa7c, u+1fa80-1fa89, u+1fa8f-1fac6, u+1face-1fadc, u+1fadf-1fae9, u+1faf0-1faf8, u+1fb??;
}
@font-face{
font-display:swap;
@@ -7805,8 +7848,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6FxZCJgvAQ.woff2) format("woff2");
- unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+1ea0-1ef9, u+20ab;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+0300-0301, u+0303-0304, u+0308-0309, u+0323, u+0329, u+1ea0-1ef9, u+20ab;
}
@font-face{
font-display:swap;
@@ -7814,8 +7857,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06FxZCJgvAQ.woff2) format("woff2");
- unicode-range:u+0100-02af, u+1e??, u+2020, u+20a0-20ab, u+20ad-20cf, u+2113, u+2c60-2c7f, u+a720-a7ff;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0100-02ba, u+02bd-02c5, u+02c7-02cc, u+02ce-02d7, u+02dd-02ff, u+0304, u+0308, u+0329, u+1d00-1dbf, u+1e00-1e9f, u+1ef2-1eff, u+2020, u+20a0-20ab, u+20ad-20c0, u+2113, u+2c60-2c7f, u+a720-a7ff;
}
@font-face{
font-display:swap;
@@ -7823,8 +7866,98 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:400;
- src:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6FxZCJgg.woff2) format("woff2");
- unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+2000-206f, u+2074, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6FxZCJgg.woff2) format("woff2");
+ unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+0304, u+0308, u+0329, u+2000-206f, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0460-052f, u+1c80-1c8a, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0301, u+0400-045f, u+0490-0491, u+04b0-04b1, u+2116;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+1f??;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0370-0377, u+037a-037f, u+0384-038a, u+038c, u+038e-03a1, u+03a3-03ff;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0307-0308, u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0302-0303, u+0305, u+0307-0308, u+0310, u+0312, u+0315, u+031a, u+0326-0327, u+032c, u+032f-0330, u+0332-0333, u+0338, u+033a, u+0346, u+034d, u+0391-03a1, u+03a3-03a9, u+03b1-03c9, u+03d1, u+03d5-03d6, u+03f0-03f1, u+03f4-03f5, u+2016-2017, u+2034-2038, u+203c, u+2040, u+2043, u+2047, u+2050, u+2057, u+205f, u+2070-2071, u+2074-208e, u+2090-209c, u+20d0-20dc, u+20e1, u+20e5-20ef, u+2100-2112, u+2114-2115, u+2117-2121, u+2123-214f, u+2190, u+2192, u+2194-21ae, u+21b0-21e5, u+21f1-21f2, u+21f4-2211, u+2213-2214, u+2216-22ff, u+2308-230b, u+2310, u+2319, u+231c-2321, u+2336-237a, u+237c, u+2395, u+239b-23b7, u+23d0, u+23dc-23e1, u+2474-2475, u+25af, u+25b3, u+25b7, u+25bd, u+25c1, u+25ca, u+25cc, u+25fb, u+266d-266f, u+27c0-27ff, u+2900-2aff, u+2b0e-2b11, u+2b30-2b4c, u+2bfe, u+3030, u+ff5b, u+ff5d, u+1d400-1d7ff, u+1ee??;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0001-000c, u+000e-001f, u+007f-009f, u+20dd-20e0, u+20e2-20e4, u+2150-218f, u+2190, u+2192, u+2194-2199, u+21af, u+21e6-21f0, u+21f3, u+2218-2219, u+2299, u+22c4-22c6, u+2300-243f, u+2440-244a, u+2460-24ff, u+25a0-27bf, u+28??, u+2921-2922, u+2981, u+29bf, u+29eb, u+2b??, u+4dc0-4dff, u+fff9-fffb, u+10140-1018e, u+10190-1019c, u+101a0, u+101d0-101fd, u+102e0-102fb, u+10e60-10e7e, u+1d2c0-1d2d3, u+1d2e0-1d37f, u+1f0??, u+1f100-1f1ad, u+1f1e6-1f1ff, u+1f30d-1f30f, u+1f315, u+1f31c, u+1f31e, u+1f320-1f32c, u+1f336, u+1f378, u+1f37d, u+1f382, u+1f393-1f39f, u+1f3a7-1f3a8, u+1f3ac-1f3af, u+1f3c2, u+1f3c4-1f3c6, u+1f3ca-1f3ce, u+1f3d4-1f3e0, u+1f3ed, u+1f3f1-1f3f3, u+1f3f5-1f3f7, u+1f408, u+1f415, u+1f41f, u+1f426, u+1f43f, u+1f441-1f442, u+1f444, u+1f446-1f449, u+1f44c-1f44e, u+1f453, u+1f46a, u+1f47d, u+1f4a3, u+1f4b0, u+1f4b3, u+1f4b9, u+1f4bb, u+1f4bf, u+1f4c8-1f4cb, u+1f4d6, u+1f4da, u+1f4df, u+1f4e3-1f4e6, u+1f4ea-1f4ed, u+1f4f7, u+1f4f9-1f4fb, u+1f4fd-1f4fe, u+1f503, u+1f507-1f50b, u+1f50d, u+1f512-1f513, u+1f53e-1f54a, u+1f54f-1f5fa, u+1f610, u+1f650-1f67f, u+1f687, u+1f68d, u+1f691, u+1f694, u+1f698, u+1f6ad, u+1f6b2, u+1f6b9-1f6ba, u+1f6bc, u+1f6c6-1f6cf, u+1f6d3-1f6d7, u+1f6e0-1f6ea, u+1f6f0-1f6f3, u+1f6f7-1f6fc, u+1f7??, u+1f800-1f80b, u+1f810-1f847, u+1f850-1f859, u+1f860-1f887, u+1f890-1f8ad, u+1f8b0-1f8bb, u+1f8c0-1f8c1, u+1f900-1f90b, u+1f93b, u+1f946, u+1f984, u+1f996, u+1f9e9, u+1fa00-1fa6f, u+1fa70-1fa7c, u+1fa80-1fa89, u+1fa8f-1fac6, u+1face-1fadc, u+1fadf-1fae9, u+1faf0-1faf8, u+1fb??;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+0300-0301, u+0303-0304, u+0308-0309, u+0323, u+0329, u+1ea0-1ef9, u+20ab;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0100-02ba, u+02bd-02c5, u+02c7-02cc, u+02ce-02d7, u+02dd-02ff, u+0304, u+0308, u+0329, u+1d00-1dbf, u+1e00-1e9f, u+1ef2-1eff, u+2020, u+20a0-20ab, u+20ad-20c0, u+2113, u+2c60-2c7f, u+a720-a7ff;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6FxZCJgg.woff2) format("woff2");
+ unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+0304, u+0308, u+0329, u+2000-206f, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
}
@font-face{
font-display:swap;
@@ -7832,8 +7965,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6FxZCJgvAQ.woff2) format("woff2");
- unicode-range:u+0460-052f, u+1c80-1c88, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0460-052f, u+1c80-1c8a, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
}
@font-face{
font-display:swap;
@@ -7841,7 +7974,7 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6FxZCJgvAQ.woff2) format("woff2");
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6FxZCJgvAQ.woff2) format("woff2");
unicode-range:u+0301, u+0400-045f, u+0490-0491, u+04b0-04b1, u+2116;
}
@font-face{
@@ -7850,7 +7983,7 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6FxZCJgvAQ.woff2) format("woff2");
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6FxZCJgvAQ.woff2) format("woff2");
unicode-range:u+1f??;
}
@font-face{
@@ -7859,8 +7992,26 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6FxZCJgvAQ.woff2) format("woff2");
- unicode-range:u+0370-03ff;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0370-0377, u+037a-037f, u+0384-038a, u+038c, u+038e-03a1, u+03a3-03ff;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0307-0308, u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:italic;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0302-0303, u+0305, u+0307-0308, u+0310, u+0312, u+0315, u+031a, u+0326-0327, u+032c, u+032f-0330, u+0332-0333, u+0338, u+033a, u+0346, u+034d, u+0391-03a1, u+03a3-03a9, u+03b1-03c9, u+03d1, u+03d5-03d6, u+03f0-03f1, u+03f4-03f5, u+2016-2017, u+2034-2038, u+203c, u+2040, u+2043, u+2047, u+2050, u+2057, u+205f, u+2070-2071, u+2074-208e, u+2090-209c, u+20d0-20dc, u+20e1, u+20e5-20ef, u+2100-2112, u+2114-2115, u+2117-2121, u+2123-214f, u+2190, u+2192, u+2194-21ae, u+21b0-21e5, u+21f1-21f2, u+21f4-2211, u+2213-2214, u+2216-22ff, u+2308-230b, u+2310, u+2319, u+231c-2321, u+2336-237a, u+237c, u+2395, u+239b-23b7, u+23d0, u+23dc-23e1, u+2474-2475, u+25af, u+25b3, u+25b7, u+25bd, u+25c1, u+25ca, u+25cc, u+25fb, u+266d-266f, u+27c0-27ff, u+2900-2aff, u+2b0e-2b11, u+2b30-2b4c, u+2bfe, u+3030, u+ff5b, u+ff5d, u+1d400-1d7ff, u+1ee??;
}
@font-face{
font-display:swap;
@@ -7868,8 +8019,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06FxZCJgvAQ.woff2) format("woff2");
- unicode-range:u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0001-000c, u+000e-001f, u+007f-009f, u+20dd-20e0, u+20e2-20e4, u+2150-218f, u+2190, u+2192, u+2194-2199, u+21af, u+21e6-21f0, u+21f3, u+2218-2219, u+2299, u+22c4-22c6, u+2300-243f, u+2440-244a, u+2460-24ff, u+25a0-27bf, u+28??, u+2921-2922, u+2981, u+29bf, u+29eb, u+2b??, u+4dc0-4dff, u+fff9-fffb, u+10140-1018e, u+10190-1019c, u+101a0, u+101d0-101fd, u+102e0-102fb, u+10e60-10e7e, u+1d2c0-1d2d3, u+1d2e0-1d37f, u+1f0??, u+1f100-1f1ad, u+1f1e6-1f1ff, u+1f30d-1f30f, u+1f315, u+1f31c, u+1f31e, u+1f320-1f32c, u+1f336, u+1f378, u+1f37d, u+1f382, u+1f393-1f39f, u+1f3a7-1f3a8, u+1f3ac-1f3af, u+1f3c2, u+1f3c4-1f3c6, u+1f3ca-1f3ce, u+1f3d4-1f3e0, u+1f3ed, u+1f3f1-1f3f3, u+1f3f5-1f3f7, u+1f408, u+1f415, u+1f41f, u+1f426, u+1f43f, u+1f441-1f442, u+1f444, u+1f446-1f449, u+1f44c-1f44e, u+1f453, u+1f46a, u+1f47d, u+1f4a3, u+1f4b0, u+1f4b3, u+1f4b9, u+1f4bb, u+1f4bf, u+1f4c8-1f4cb, u+1f4d6, u+1f4da, u+1f4df, u+1f4e3-1f4e6, u+1f4ea-1f4ed, u+1f4f7, u+1f4f9-1f4fb, u+1f4fd-1f4fe, u+1f503, u+1f507-1f50b, u+1f50d, u+1f512-1f513, u+1f53e-1f54a, u+1f54f-1f5fa, u+1f610, u+1f650-1f67f, u+1f687, u+1f68d, u+1f691, u+1f694, u+1f698, u+1f6ad, u+1f6b2, u+1f6b9-1f6ba, u+1f6bc, u+1f6c6-1f6cf, u+1f6d3-1f6d7, u+1f6e0-1f6ea, u+1f6f0-1f6f3, u+1f6f7-1f6fc, u+1f7??, u+1f800-1f80b, u+1f810-1f847, u+1f850-1f859, u+1f860-1f887, u+1f890-1f8ad, u+1f8b0-1f8bb, u+1f8c0-1f8c1, u+1f900-1f90b, u+1f93b, u+1f946, u+1f984, u+1f996, u+1f9e9, u+1fa00-1fa6f, u+1fa70-1fa7c, u+1fa80-1fa89, u+1fa8f-1fac6, u+1face-1fadc, u+1fadf-1fae9, u+1faf0-1faf8, u+1fb??;
}
@font-face{
font-display:swap;
@@ -7877,8 +8028,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6FxZCJgvAQ.woff2) format("woff2");
- unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+1ea0-1ef9, u+20ab;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+0300-0301, u+0303-0304, u+0308-0309, u+0323, u+0329, u+1ea0-1ef9, u+20ab;
}
@font-face{
font-display:swap;
@@ -7886,8 +8037,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06FxZCJgvAQ.woff2) format("woff2");
- unicode-range:u+0100-02af, u+1e??, u+2020, u+20a0-20ab, u+20ad-20cf, u+2113, u+2c60-2c7f, u+a720-a7ff;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06FxZCJgvAQ.woff2) format("woff2");
+ unicode-range:u+0100-02ba, u+02bd-02c5, u+02c7-02cc, u+02ce-02d7, u+02dd-02ff, u+0304, u+0308, u+0329, u+1d00-1dbf, u+1e00-1e9f, u+1ef2-1eff, u+2020, u+20a0-20ab, u+20ad-20c0, u+2113, u+2c60-2c7f, u+a720-a7ff;
}
@font-face{
font-display:swap;
@@ -7895,25 +8046,25 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:italic;
font-weight:700;
- src:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6FxZCJgg.woff2) format("woff2");
- unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+2000-206f, u+2074, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6FxZCJgg.woff2) format("woff2");
+ unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+0304, u+0308, u+0329, u+2000-206f, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
}
@font-face{
font-display:swap;
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:300;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0460-052f, u+1c80-1c88, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
+ font-weight:400;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0460-052f, u+1c80-1c8a, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
}
@font-face{
font-display:swap;
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:300;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu0SC55K5gw.woff2) format("woff2");
+ font-weight:400;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu0SC55K5gw.woff2) format("woff2");
unicode-range:u+0301, u+0400-045f, u+0490-0491, u+04b0-04b1, u+2116;
}
@font-face{
@@ -7921,8 +8072,8 @@ body[data-engrid-debug]:before{
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:300;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu0SC55K5gw.woff2) format("woff2");
+ font-weight:400;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu0SC55K5gw.woff2) format("woff2");
unicode-range:u+1f??;
}
@font-face{
@@ -7930,45 +8081,45 @@ body[data-engrid-debug]:before{
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:300;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0370-03ff;
+ font-weight:400;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0370-0377, u+037a-037f, u+0384-038a, u+038c, u+038e-03a1, u+03a3-03ff;
}
@font-face{
font-display:swap;
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:300;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
+ font-weight:400;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0307-0308, u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
}
@font-face{
font-display:swap;
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:300;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+1ea0-1ef9, u+20ab;
+ font-weight:400;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0302-0303, u+0305, u+0307-0308, u+0310, u+0312, u+0315, u+031a, u+0326-0327, u+032c, u+032f-0330, u+0332-0333, u+0338, u+033a, u+0346, u+034d, u+0391-03a1, u+03a3-03a9, u+03b1-03c9, u+03d1, u+03d5-03d6, u+03f0-03f1, u+03f4-03f5, u+2016-2017, u+2034-2038, u+203c, u+2040, u+2043, u+2047, u+2050, u+2057, u+205f, u+2070-2071, u+2074-208e, u+2090-209c, u+20d0-20dc, u+20e1, u+20e5-20ef, u+2100-2112, u+2114-2115, u+2117-2121, u+2123-214f, u+2190, u+2192, u+2194-21ae, u+21b0-21e5, u+21f1-21f2, u+21f4-2211, u+2213-2214, u+2216-22ff, u+2308-230b, u+2310, u+2319, u+231c-2321, u+2336-237a, u+237c, u+2395, u+239b-23b7, u+23d0, u+23dc-23e1, u+2474-2475, u+25af, u+25b3, u+25b7, u+25bd, u+25c1, u+25ca, u+25cc, u+25fb, u+266d-266f, u+27c0-27ff, u+2900-2aff, u+2b0e-2b11, u+2b30-2b4c, u+2bfe, u+3030, u+ff5b, u+ff5d, u+1d400-1d7ff, u+1ee??;
}
@font-face{
font-display:swap;
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:300;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0100-02af, u+1e??, u+2020, u+20a0-20ab, u+20ad-20cf, u+2113, u+2c60-2c7f, u+a720-a7ff;
+ font-weight:400;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0001-000c, u+000e-001f, u+007f-009f, u+20dd-20e0, u+20e2-20e4, u+2150-218f, u+2190, u+2192, u+2194-2199, u+21af, u+21e6-21f0, u+21f3, u+2218-2219, u+2299, u+22c4-22c6, u+2300-243f, u+2440-244a, u+2460-24ff, u+25a0-27bf, u+28??, u+2921-2922, u+2981, u+29bf, u+29eb, u+2b??, u+4dc0-4dff, u+fff9-fffb, u+10140-1018e, u+10190-1019c, u+101a0, u+101d0-101fd, u+102e0-102fb, u+10e60-10e7e, u+1d2c0-1d2d3, u+1d2e0-1d37f, u+1f0??, u+1f100-1f1ad, u+1f1e6-1f1ff, u+1f30d-1f30f, u+1f315, u+1f31c, u+1f31e, u+1f320-1f32c, u+1f336, u+1f378, u+1f37d, u+1f382, u+1f393-1f39f, u+1f3a7-1f3a8, u+1f3ac-1f3af, u+1f3c2, u+1f3c4-1f3c6, u+1f3ca-1f3ce, u+1f3d4-1f3e0, u+1f3ed, u+1f3f1-1f3f3, u+1f3f5-1f3f7, u+1f408, u+1f415, u+1f41f, u+1f426, u+1f43f, u+1f441-1f442, u+1f444, u+1f446-1f449, u+1f44c-1f44e, u+1f453, u+1f46a, u+1f47d, u+1f4a3, u+1f4b0, u+1f4b3, u+1f4b9, u+1f4bb, u+1f4bf, u+1f4c8-1f4cb, u+1f4d6, u+1f4da, u+1f4df, u+1f4e3-1f4e6, u+1f4ea-1f4ed, u+1f4f7, u+1f4f9-1f4fb, u+1f4fd-1f4fe, u+1f503, u+1f507-1f50b, u+1f50d, u+1f512-1f513, u+1f53e-1f54a, u+1f54f-1f5fa, u+1f610, u+1f650-1f67f, u+1f687, u+1f68d, u+1f691, u+1f694, u+1f698, u+1f6ad, u+1f6b2, u+1f6b9-1f6ba, u+1f6bc, u+1f6c6-1f6cf, u+1f6d3-1f6d7, u+1f6e0-1f6ea, u+1f6f0-1f6f3, u+1f6f7-1f6fc, u+1f7??, u+1f800-1f80b, u+1f810-1f847, u+1f850-1f859, u+1f860-1f887, u+1f890-1f8ad, u+1f8b0-1f8bb, u+1f8c0-1f8c1, u+1f900-1f90b, u+1f93b, u+1f946, u+1f984, u+1f996, u+1f9e9, u+1fa00-1fa6f, u+1fa70-1fa7c, u+1fa80-1fa89, u+1fa8f-1fac6, u+1face-1fadc, u+1fadf-1fae9, u+1faf0-1faf8, u+1fb??;
}
@font-face{
font-display:swap;
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:300;
- src:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-mu0SC55I.woff2) format("woff2");
- unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+2000-206f, u+2074, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
+ font-weight:400;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+0300-0301, u+0303-0304, u+0308-0309, u+0323, u+0329, u+1ea0-1ef9, u+20ab;
}
@font-face{
font-display:swap;
@@ -7976,8 +8127,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:normal;
font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0460-052f, u+1c80-1c88, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0100-02ba, u+02bd-02c5, u+02c7-02cc, u+02ce-02d7, u+02dd-02ff, u+0304, u+0308, u+0329, u+1d00-1dbf, u+1e00-1e9f, u+1ef2-1eff, u+2020, u+20a0-20ab, u+20ad-20c0, u+2113, u+2c60-2c7f, u+a720-a7ff;
}
@font-face{
font-display:swap;
@@ -7985,7 +8136,25 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:normal;
font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu0SC55K5gw.woff2) format("woff2");
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-mu0SC55I.woff2) format("woff2");
+ unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+0304, u+0308, u+0329, u+2000-206f, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:normal;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0460-052f, u+1c80-1c8a, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:normal;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu0SC55K5gw.woff2) format("woff2");
unicode-range:u+0301, u+0400-045f, u+0490-0491, u+04b0-04b1, u+2116;
}
@font-face{
@@ -7993,8 +8162,8 @@ body[data-engrid-debug]:before{
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu0SC55K5gw.woff2) format("woff2");
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu0SC55K5gw.woff2) format("woff2");
unicode-range:u+1f??;
}
@font-face{
@@ -8002,45 +8171,63 @@ body[data-engrid-debug]:before{
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0370-03ff;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0370-0377, u+037a-037f, u+0384-038a, u+038c, u+038e-03a1, u+03a3-03ff;
}
@font-face{
font-display:swap;
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0307-0308, u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
}
@font-face{
font-display:swap;
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+1ea0-1ef9, u+20ab;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0302-0303, u+0305, u+0307-0308, u+0310, u+0312, u+0315, u+031a, u+0326-0327, u+032c, u+032f-0330, u+0332-0333, u+0338, u+033a, u+0346, u+034d, u+0391-03a1, u+03a3-03a9, u+03b1-03c9, u+03d1, u+03d5-03d6, u+03f0-03f1, u+03f4-03f5, u+2016-2017, u+2034-2038, u+203c, u+2040, u+2043, u+2047, u+2050, u+2057, u+205f, u+2070-2071, u+2074-208e, u+2090-209c, u+20d0-20dc, u+20e1, u+20e5-20ef, u+2100-2112, u+2114-2115, u+2117-2121, u+2123-214f, u+2190, u+2192, u+2194-21ae, u+21b0-21e5, u+21f1-21f2, u+21f4-2211, u+2213-2214, u+2216-22ff, u+2308-230b, u+2310, u+2319, u+231c-2321, u+2336-237a, u+237c, u+2395, u+239b-23b7, u+23d0, u+23dc-23e1, u+2474-2475, u+25af, u+25b3, u+25b7, u+25bd, u+25c1, u+25ca, u+25cc, u+25fb, u+266d-266f, u+27c0-27ff, u+2900-2aff, u+2b0e-2b11, u+2b30-2b4c, u+2bfe, u+3030, u+ff5b, u+ff5d, u+1d400-1d7ff, u+1ee??;
}
@font-face{
font-display:swap;
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:400;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0100-02af, u+1e??, u+2020, u+20a0-20ab, u+20ad-20cf, u+2113, u+2c60-2c7f, u+a720-a7ff;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0001-000c, u+000e-001f, u+007f-009f, u+20dd-20e0, u+20e2-20e4, u+2150-218f, u+2190, u+2192, u+2194-2199, u+21af, u+21e6-21f0, u+21f3, u+2218-2219, u+2299, u+22c4-22c6, u+2300-243f, u+2440-244a, u+2460-24ff, u+25a0-27bf, u+28??, u+2921-2922, u+2981, u+29bf, u+29eb, u+2b??, u+4dc0-4dff, u+fff9-fffb, u+10140-1018e, u+10190-1019c, u+101a0, u+101d0-101fd, u+102e0-102fb, u+10e60-10e7e, u+1d2c0-1d2d3, u+1d2e0-1d37f, u+1f0??, u+1f100-1f1ad, u+1f1e6-1f1ff, u+1f30d-1f30f, u+1f315, u+1f31c, u+1f31e, u+1f320-1f32c, u+1f336, u+1f378, u+1f37d, u+1f382, u+1f393-1f39f, u+1f3a7-1f3a8, u+1f3ac-1f3af, u+1f3c2, u+1f3c4-1f3c6, u+1f3ca-1f3ce, u+1f3d4-1f3e0, u+1f3ed, u+1f3f1-1f3f3, u+1f3f5-1f3f7, u+1f408, u+1f415, u+1f41f, u+1f426, u+1f43f, u+1f441-1f442, u+1f444, u+1f446-1f449, u+1f44c-1f44e, u+1f453, u+1f46a, u+1f47d, u+1f4a3, u+1f4b0, u+1f4b3, u+1f4b9, u+1f4bb, u+1f4bf, u+1f4c8-1f4cb, u+1f4d6, u+1f4da, u+1f4df, u+1f4e3-1f4e6, u+1f4ea-1f4ed, u+1f4f7, u+1f4f9-1f4fb, u+1f4fd-1f4fe, u+1f503, u+1f507-1f50b, u+1f50d, u+1f512-1f513, u+1f53e-1f54a, u+1f54f-1f5fa, u+1f610, u+1f650-1f67f, u+1f687, u+1f68d, u+1f691, u+1f694, u+1f698, u+1f6ad, u+1f6b2, u+1f6b9-1f6ba, u+1f6bc, u+1f6c6-1f6cf, u+1f6d3-1f6d7, u+1f6e0-1f6ea, u+1f6f0-1f6f3, u+1f6f7-1f6fc, u+1f7??, u+1f800-1f80b, u+1f810-1f847, u+1f850-1f859, u+1f860-1f887, u+1f890-1f8ad, u+1f8b0-1f8bb, u+1f8c0-1f8c1, u+1f900-1f90b, u+1f93b, u+1f946, u+1f984, u+1f996, u+1f9e9, u+1fa00-1fa6f, u+1fa70-1fa7c, u+1fa80-1fa89, u+1fa8f-1fac6, u+1face-1fadc, u+1fadf-1fae9, u+1faf0-1faf8, u+1fb??;
}
@font-face{
font-display:swap;
font-family:Open Sans;
font-stretch:100%;
font-style:normal;
- font-weight:400;
- src:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-mu0SC55I.woff2) format("woff2");
- unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+2000-206f, u+2074, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+0300-0301, u+0303-0304, u+0308-0309, u+0323, u+0329, u+1ea0-1ef9, u+20ab;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:normal;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0100-02ba, u+02bd-02c5, u+02c7-02cc, u+02ce-02d7, u+02dd-02ff, u+0304, u+0308, u+0329, u+1d00-1dbf, u+1e00-1e9f, u+1ef2-1eff, u+2020, u+20a0-20ab, u+20ad-20c0, u+2113, u+2c60-2c7f, u+a720-a7ff;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:normal;
+ font-weight:600;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-mu0SC55I.woff2) format("woff2");
+ unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+0304, u+0308, u+0329, u+2000-206f, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
}
@font-face{
font-display:swap;
@@ -8048,8 +8235,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:normal;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0460-052f, u+1c80-1c88, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0460-052f, u+1c80-1c8a, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
}
@font-face{
font-display:swap;
@@ -8057,7 +8244,7 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:normal;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu0SC55K5gw.woff2) format("woff2");
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu0SC55K5gw.woff2) format("woff2");
unicode-range:u+0301, u+0400-045f, u+0490-0491, u+04b0-04b1, u+2116;
}
@font-face{
@@ -8066,7 +8253,7 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:normal;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu0SC55K5gw.woff2) format("woff2");
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu0SC55K5gw.woff2) format("woff2");
unicode-range:u+1f??;
}
@font-face{
@@ -8075,8 +8262,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:normal;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0370-03ff;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0370-0377, u+037a-037f, u+0384-038a, u+038c, u+038e-03a1, u+03a3-03ff;
}
@font-face{
font-display:swap;
@@ -8084,8 +8271,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:normal;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0307-0308, u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
}
@font-face{
font-display:swap;
@@ -8093,8 +8280,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:normal;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+1ea0-1ef9, u+20ab;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0302-0303, u+0305, u+0307-0308, u+0310, u+0312, u+0315, u+031a, u+0326-0327, u+032c, u+032f-0330, u+0332-0333, u+0338, u+033a, u+0346, u+034d, u+0391-03a1, u+03a3-03a9, u+03b1-03c9, u+03d1, u+03d5-03d6, u+03f0-03f1, u+03f4-03f5, u+2016-2017, u+2034-2038, u+203c, u+2040, u+2043, u+2047, u+2050, u+2057, u+205f, u+2070-2071, u+2074-208e, u+2090-209c, u+20d0-20dc, u+20e1, u+20e5-20ef, u+2100-2112, u+2114-2115, u+2117-2121, u+2123-214f, u+2190, u+2192, u+2194-21ae, u+21b0-21e5, u+21f1-21f2, u+21f4-2211, u+2213-2214, u+2216-22ff, u+2308-230b, u+2310, u+2319, u+231c-2321, u+2336-237a, u+237c, u+2395, u+239b-23b7, u+23d0, u+23dc-23e1, u+2474-2475, u+25af, u+25b3, u+25b7, u+25bd, u+25c1, u+25ca, u+25cc, u+25fb, u+266d-266f, u+27c0-27ff, u+2900-2aff, u+2b0e-2b11, u+2b30-2b4c, u+2bfe, u+3030, u+ff5b, u+ff5d, u+1d400-1d7ff, u+1ee??;
}
@font-face{
font-display:swap;
@@ -8102,8 +8289,8 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:normal;
font-weight:700;
- src:url(https://fonts.gstatic.com/s/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu0SC55K5gw.woff2) format("woff2");
- unicode-range:u+0100-02af, u+1e??, u+2020, u+20a0-20ab, u+20ad-20cf, u+2113, u+2c60-2c7f, u+a720-a7ff;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0001-000c, u+000e-001f, u+007f-009f, u+20dd-20e0, u+20e2-20e4, u+2150-218f, u+2190, u+2192, u+2194-2199, u+21af, u+21e6-21f0, u+21f3, u+2218-2219, u+2299, u+22c4-22c6, u+2300-243f, u+2440-244a, u+2460-24ff, u+25a0-27bf, u+28??, u+2921-2922, u+2981, u+29bf, u+29eb, u+2b??, u+4dc0-4dff, u+fff9-fffb, u+10140-1018e, u+10190-1019c, u+101a0, u+101d0-101fd, u+102e0-102fb, u+10e60-10e7e, u+1d2c0-1d2d3, u+1d2e0-1d37f, u+1f0??, u+1f100-1f1ad, u+1f1e6-1f1ff, u+1f30d-1f30f, u+1f315, u+1f31c, u+1f31e, u+1f320-1f32c, u+1f336, u+1f378, u+1f37d, u+1f382, u+1f393-1f39f, u+1f3a7-1f3a8, u+1f3ac-1f3af, u+1f3c2, u+1f3c4-1f3c6, u+1f3ca-1f3ce, u+1f3d4-1f3e0, u+1f3ed, u+1f3f1-1f3f3, u+1f3f5-1f3f7, u+1f408, u+1f415, u+1f41f, u+1f426, u+1f43f, u+1f441-1f442, u+1f444, u+1f446-1f449, u+1f44c-1f44e, u+1f453, u+1f46a, u+1f47d, u+1f4a3, u+1f4b0, u+1f4b3, u+1f4b9, u+1f4bb, u+1f4bf, u+1f4c8-1f4cb, u+1f4d6, u+1f4da, u+1f4df, u+1f4e3-1f4e6, u+1f4ea-1f4ed, u+1f4f7, u+1f4f9-1f4fb, u+1f4fd-1f4fe, u+1f503, u+1f507-1f50b, u+1f50d, u+1f512-1f513, u+1f53e-1f54a, u+1f54f-1f5fa, u+1f610, u+1f650-1f67f, u+1f687, u+1f68d, u+1f691, u+1f694, u+1f698, u+1f6ad, u+1f6b2, u+1f6b9-1f6ba, u+1f6bc, u+1f6c6-1f6cf, u+1f6d3-1f6d7, u+1f6e0-1f6ea, u+1f6f0-1f6f3, u+1f6f7-1f6fc, u+1f7??, u+1f800-1f80b, u+1f810-1f847, u+1f850-1f859, u+1f860-1f887, u+1f890-1f8ad, u+1f8b0-1f8bb, u+1f8c0-1f8c1, u+1f900-1f90b, u+1f93b, u+1f946, u+1f984, u+1f996, u+1f9e9, u+1fa00-1fa6f, u+1fa70-1fa7c, u+1fa80-1fa89, u+1fa8f-1fac6, u+1face-1fadc, u+1fadf-1fae9, u+1faf0-1faf8, u+1fb??;
}
@font-face{
font-display:swap;
@@ -8111,98 +8298,325 @@ body[data-engrid-debug]:before{
font-stretch:100%;
font-style:normal;
font-weight:700;
- src:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-mu0SC55I.woff2) format("woff2");
- unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+2000-206f, u+2074, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+0300-0301, u+0303-0304, u+0308-0309, u+0323, u+0329, u+1ea0-1ef9, u+20ab;
}
@font-face{
font-display:swap;
- font-family:Architects Daughter;
+ font-family:Open Sans;
+ font-stretch:100%;
font-style:normal;
- font-weight:400;
- src:url(https://fonts.gstatic.com/s/architectsdaughter/v18/KtkxAKiDZI_td1Lkx62xHZHDtgO_Y-bvTYlg4-7jA-U.woff2) format("woff2");
- unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+0304, u+0308, u+0329, u+2000-206f, u+2074, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu0SC55K5gw.woff2) format("woff2");
+ unicode-range:u+0100-02ba, u+02bd-02c5, u+02c7-02cc, u+02ce-02d7, u+02dd-02ff, u+0304, u+0308, u+0329, u+1d00-1dbf, u+1e00-1e9f, u+1ef2-1eff, u+2020, u+20a0-20ab, u+20ad-20c0, u+2113, u+2c60-2c7f, u+a720-a7ff;
}
-[data-engrid-theme=wwf]{
- --engrid__body_margin:0 22px;
- --engrid__body-main_padding:26px 29px 20px 29px;
- --engrid__body-title_padding:0px 0px 28px 0px;
- --engrid__body-top_padding:0px;
- --engrid__page_background-color:#f3f7ed;
- --engrid__body-title_background-color:#0000;
- --engrid__body-banner_background-color:#0000;
- --engrid__body-top_background-color:#0000;
- --engrid__content-header_background-color:#000;
- --engrid__content-footer_background-color:#fff;
- --engrid__body_box-shadow:none;
- --default_font-family:"Open Sans", sans-serif;
- --default_color:##1f2937;
- --default_font-size:20px;
- --default_line-height:32px;
- --h1_font-size:46px;
- --h1_font-weight:700;
- --h1_line-height:55.2px;
- --h2_font-size:20px;
- --h2_font-weight:700;
- --h2_line-height:32px;
- --a_color:#006ea5;
- --a_text-decoration:none;
- --a_text-decoration_hover:underline;
- --input_background-color:#fff;
- --input_border-color:grey;
- --input_border-radius:2px;
- --input_padding:1.3ch 1.2ch;
- --color_primary:#e5621a;
- --button_color:#006ea3;
- --button_font-size:24px;
- --button_font-weight:700;
- --button_line-height:36px;
- --button_background-color:#fff;
- --button_border-color:#006ea3;
- --button_border-radius:2px;
- --button_color_hover:#fff;
- --button_background-color_hover:#016da3;
- --button_border-color_hover:#006ea3;
- --button_color_checked:#fff;
- --button_background-color_checked:#006ea3;
- --button_border-color_checked:#006ea3;
- --recurring-frequency__button_font-size:24px;
- --recurring-frequency__button_font-weight:700;
- --recurring-frequency__button_line-height:36px;
- --submit__button_color:#fff;
- --submit__button_border-color:#e5621a;
- --submit__button_background-color:#e5621a;
- --submit__button_color_hover:#fff;
- --submit__button_background-color_hover:#b54000;
- --submit__button_border-color_hover:#b54000;
- --submit__button_color_checked:#fff;
- --submit__button_background-color_checked:#000;
- --submit__button_border-color_checked:#000;
- --give-quarterly-donation-amount-appended-label:"/qtr";
- --recurring-frequency__button_count:2;
- --recurring-frequency__button_color_checked:#fff;
- --donation-amount__button_count:3;
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:100%;
+ font-style:normal;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-mu0SC55I.woff2) format("woff2");
+ unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+0304, u+0308, u+0329, u+2000-206f, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:italic;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXy2q8tWZ0Pw86hd0RkyFjWV0exoMUdjFXmSU_.woff) format("woff");
+ unicode-range:u+0460-052f, u+1c80-1c8a, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:italic;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXy2q8tWZ0Pw86hd0RkyFjWVQexoMUdjFXmSU_.woff) format("woff");
+ unicode-range:u+0301, u+0400-045f, u+0490-0491, u+04b0-04b1, u+2116;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:italic;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXy2q8tWZ0Pw86hd0RkyFjWVwexoMUdjFXmSU_.woff) format("woff");
+ unicode-range:u+1f??;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:italic;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXy2q8tWZ0Pw86hd0RkyFjWVMexoMUdjFXmSU_.woff) format("woff");
+ unicode-range:u+0370-0377, u+037a-037f, u+0384-038a, u+038c, u+038e-03a1, u+03a3-03ff;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:italic;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXy2q8tWZ0Pw86hd0RkyFjWVIexoMUdjFXmSU_.woff) format("woff");
+ unicode-range:u+0307-0308, u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:italic;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXy2q8tWZ0Pw86hd0RkyFjWSwexoMUdjFXmSU_.woff) format("woff");
+ unicode-range:u+0302-0303, u+0305, u+0307-0308, u+0310, u+0312, u+0315, u+031a, u+0326-0327, u+032c, u+032f-0330, u+0332-0333, u+0338, u+033a, u+0346, u+034d, u+0391-03a1, u+03a3-03a9, u+03b1-03c9, u+03d1, u+03d5-03d6, u+03f0-03f1, u+03f4-03f5, u+2016-2017, u+2034-2038, u+203c, u+2040, u+2043, u+2047, u+2050, u+2057, u+205f, u+2070-2071, u+2074-208e, u+2090-209c, u+20d0-20dc, u+20e1, u+20e5-20ef, u+2100-2112, u+2114-2115, u+2117-2121, u+2123-214f, u+2190, u+2192, u+2194-21ae, u+21b0-21e5, u+21f1-21f2, u+21f4-2211, u+2213-2214, u+2216-22ff, u+2308-230b, u+2310, u+2319, u+231c-2321, u+2336-237a, u+237c, u+2395, u+239b-23b7, u+23d0, u+23dc-23e1, u+2474-2475, u+25af, u+25b3, u+25b7, u+25bd, u+25c1, u+25ca, u+25cc, u+25fb, u+266d-266f, u+27c0-27ff, u+2900-2aff, u+2b0e-2b11, u+2b30-2b4c, u+2bfe, u+3030, u+ff5b, u+ff5d, u+1d400-1d7ff, u+1ee??;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:italic;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXy2q8tWZ0Pw86hd0RkyFjWT4exoMUdjFXmSU_.woff) format("woff");
+ unicode-range:u+0001-000c, u+000e-001f, u+007f-009f, u+20dd-20e0, u+20e2-20e4, u+2150-218f, u+2190, u+2192, u+2194-2199, u+21af, u+21e6-21f0, u+21f3, u+2218-2219, u+2299, u+22c4-22c6, u+2300-243f, u+2440-244a, u+2460-24ff, u+25a0-27bf, u+28??, u+2921-2922, u+2981, u+29bf, u+29eb, u+2b??, u+4dc0-4dff, u+fff9-fffb, u+10140-1018e, u+10190-1019c, u+101a0, u+101d0-101fd, u+102e0-102fb, u+10e60-10e7e, u+1d2c0-1d2d3, u+1d2e0-1d37f, u+1f0??, u+1f100-1f1ad, u+1f1e6-1f1ff, u+1f30d-1f30f, u+1f315, u+1f31c, u+1f31e, u+1f320-1f32c, u+1f336, u+1f378, u+1f37d, u+1f382, u+1f393-1f39f, u+1f3a7-1f3a8, u+1f3ac-1f3af, u+1f3c2, u+1f3c4-1f3c6, u+1f3ca-1f3ce, u+1f3d4-1f3e0, u+1f3ed, u+1f3f1-1f3f3, u+1f3f5-1f3f7, u+1f408, u+1f415, u+1f41f, u+1f426, u+1f43f, u+1f441-1f442, u+1f444, u+1f446-1f449, u+1f44c-1f44e, u+1f453, u+1f46a, u+1f47d, u+1f4a3, u+1f4b0, u+1f4b3, u+1f4b9, u+1f4bb, u+1f4bf, u+1f4c8-1f4cb, u+1f4d6, u+1f4da, u+1f4df, u+1f4e3-1f4e6, u+1f4ea-1f4ed, u+1f4f7, u+1f4f9-1f4fb, u+1f4fd-1f4fe, u+1f503, u+1f507-1f50b, u+1f50d, u+1f512-1f513, u+1f53e-1f54a, u+1f54f-1f5fa, u+1f610, u+1f650-1f67f, u+1f687, u+1f68d, u+1f691, u+1f694, u+1f698, u+1f6ad, u+1f6b2, u+1f6b9-1f6ba, u+1f6bc, u+1f6c6-1f6cf, u+1f6d3-1f6d7, u+1f6e0-1f6ea, u+1f6f0-1f6f3, u+1f6f7-1f6fc, u+1f7??, u+1f800-1f80b, u+1f810-1f847, u+1f850-1f859, u+1f860-1f887, u+1f890-1f8ad, u+1f8b0-1f8bb, u+1f8c0-1f8c1, u+1f900-1f90b, u+1f93b, u+1f946, u+1f984, u+1f996, u+1f9e9, u+1fa00-1fa6f, u+1fa70-1fa7c, u+1fa80-1fa89, u+1fa8f-1fac6, u+1face-1fadc, u+1fadf-1fae9, u+1faf0-1faf8, u+1fb??;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:italic;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXy2q8tWZ0Pw86hd0RkyFjWV8exoMUdjFXmSU_.woff) format("woff");
+ unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+0300-0301, u+0303-0304, u+0308-0309, u+0323, u+0329, u+1ea0-1ef9, u+20ab;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:italic;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXy2q8tWZ0Pw86hd0RkyFjWV4exoMUdjFXmSU_.woff) format("woff");
+ unicode-range:u+0100-02ba, u+02bd-02c5, u+02c7-02cc, u+02ce-02d7, u+02dd-02ff, u+0304, u+0308, u+0329, u+1d00-1dbf, u+1e00-1e9f, u+1ef2-1eff, u+2020, u+20a0-20ab, u+20ad-20c0, u+2113, u+2c60-2c7f, u+a720-a7ff;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:italic;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXy2q8tWZ0Pw86hd0RkyFjWVAexoMUdjFXmQ.woff) format("woff");
+ unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+0304, u+0308, u+0329, u+2000-206f, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:normal;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObjz2VZyOOSr4dVJWUgsg-1x4taVQUwaEQbjB_mQ.woff) format("woff");
+ unicode-range:u+0460-052f, u+1c80-1c8a, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:normal;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObjz2VZyOOSr4dVJWUgsg-1x4kaVQUwaEQbjB_mQ.woff) format("woff");
+ unicode-range:u+0301, u+0400-045f, u+0490-0491, u+04b0-04b1, u+2116;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:normal;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObjz2VZyOOSr4dVJWUgsg-1x4saVQUwaEQbjB_mQ.woff) format("woff");
+ unicode-range:u+1f??;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:normal;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObjz2VZyOOSr4dVJWUgsg-1x4jaVQUwaEQbjB_mQ.woff) format("woff");
+ unicode-range:u+0370-0377, u+037a-037f, u+0384-038a, u+038c, u+038e-03a1, u+03a3-03ff;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:normal;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObjz2VZyOOSr4dVJWUgsg-1x4iaVQUwaEQbjB_mQ.woff) format("woff");
+ unicode-range:u+0307-0308, u+0590-05ff, u+200c-2010, u+20aa, u+25cc, u+fb1d-fb4f;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:normal;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObjz2VZyOOSr4dVJWUgsg-1x5caVQUwaEQbjB_mQ.woff) format("woff");
+ unicode-range:u+0302-0303, u+0305, u+0307-0308, u+0310, u+0312, u+0315, u+031a, u+0326-0327, u+032c, u+032f-0330, u+0332-0333, u+0338, u+033a, u+0346, u+034d, u+0391-03a1, u+03a3-03a9, u+03b1-03c9, u+03d1, u+03d5-03d6, u+03f0-03f1, u+03f4-03f5, u+2016-2017, u+2034-2038, u+203c, u+2040, u+2043, u+2047, u+2050, u+2057, u+205f, u+2070-2071, u+2074-208e, u+2090-209c, u+20d0-20dc, u+20e1, u+20e5-20ef, u+2100-2112, u+2114-2115, u+2117-2121, u+2123-214f, u+2190, u+2192, u+2194-21ae, u+21b0-21e5, u+21f1-21f2, u+21f4-2211, u+2213-2214, u+2216-22ff, u+2308-230b, u+2310, u+2319, u+231c-2321, u+2336-237a, u+237c, u+2395, u+239b-23b7, u+23d0, u+23dc-23e1, u+2474-2475, u+25af, u+25b3, u+25b7, u+25bd, u+25c1, u+25ca, u+25cc, u+25fb, u+266d-266f, u+27c0-27ff, u+2900-2aff, u+2b0e-2b11, u+2b30-2b4c, u+2bfe, u+3030, u+ff5b, u+ff5d, u+1d400-1d7ff, u+1ee??;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:normal;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObjz2VZyOOSr4dVJWUgsg-1x5OaVQUwaEQbjB_mQ.woff) format("woff");
+ unicode-range:u+0001-000c, u+000e-001f, u+007f-009f, u+20dd-20e0, u+20e2-20e4, u+2150-218f, u+2190, u+2192, u+2194-2199, u+21af, u+21e6-21f0, u+21f3, u+2218-2219, u+2299, u+22c4-22c6, u+2300-243f, u+2440-244a, u+2460-24ff, u+25a0-27bf, u+28??, u+2921-2922, u+2981, u+29bf, u+29eb, u+2b??, u+4dc0-4dff, u+fff9-fffb, u+10140-1018e, u+10190-1019c, u+101a0, u+101d0-101fd, u+102e0-102fb, u+10e60-10e7e, u+1d2c0-1d2d3, u+1d2e0-1d37f, u+1f0??, u+1f100-1f1ad, u+1f1e6-1f1ff, u+1f30d-1f30f, u+1f315, u+1f31c, u+1f31e, u+1f320-1f32c, u+1f336, u+1f378, u+1f37d, u+1f382, u+1f393-1f39f, u+1f3a7-1f3a8, u+1f3ac-1f3af, u+1f3c2, u+1f3c4-1f3c6, u+1f3ca-1f3ce, u+1f3d4-1f3e0, u+1f3ed, u+1f3f1-1f3f3, u+1f3f5-1f3f7, u+1f408, u+1f415, u+1f41f, u+1f426, u+1f43f, u+1f441-1f442, u+1f444, u+1f446-1f449, u+1f44c-1f44e, u+1f453, u+1f46a, u+1f47d, u+1f4a3, u+1f4b0, u+1f4b3, u+1f4b9, u+1f4bb, u+1f4bf, u+1f4c8-1f4cb, u+1f4d6, u+1f4da, u+1f4df, u+1f4e3-1f4e6, u+1f4ea-1f4ed, u+1f4f7, u+1f4f9-1f4fb, u+1f4fd-1f4fe, u+1f503, u+1f507-1f50b, u+1f50d, u+1f512-1f513, u+1f53e-1f54a, u+1f54f-1f5fa, u+1f610, u+1f650-1f67f, u+1f687, u+1f68d, u+1f691, u+1f694, u+1f698, u+1f6ad, u+1f6b2, u+1f6b9-1f6ba, u+1f6bc, u+1f6c6-1f6cf, u+1f6d3-1f6d7, u+1f6e0-1f6ea, u+1f6f0-1f6f3, u+1f6f7-1f6fc, u+1f7??, u+1f800-1f80b, u+1f810-1f847, u+1f850-1f859, u+1f860-1f887, u+1f890-1f8ad, u+1f8b0-1f8bb, u+1f8c0-1f8c1, u+1f900-1f90b, u+1f93b, u+1f946, u+1f984, u+1f996, u+1f9e9, u+1fa00-1fa6f, u+1fa70-1fa7c, u+1fa80-1fa89, u+1fa8f-1fac6, u+1face-1fadc, u+1fadf-1fae9, u+1faf0-1faf8, u+1fb??;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:normal;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObjz2VZyOOSr4dVJWUgsg-1x4vaVQUwaEQbjB_mQ.woff) format("woff");
+ unicode-range:u+0102-0103, u+0110-0111, u+0128-0129, u+0168-0169, u+01a0-01a1, u+01af-01b0, u+0300-0301, u+0303-0304, u+0308-0309, u+0323, u+0329, u+1ea0-1ef9, u+20ab;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:normal;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObjz2VZyOOSr4dVJWUgsg-1x4uaVQUwaEQbjB_mQ.woff) format("woff");
+ unicode-range:u+0100-02ba, u+02bd-02c5, u+02c7-02cc, u+02ce-02d7, u+02dd-02ff, u+0304, u+0308, u+0329, u+1d00-1dbf, u+1e00-1e9f, u+1ef2-1eff, u+2020, u+20a0-20ab, u+20ad-20c0, u+2113, u+2c60-2c7f, u+a720-a7ff;
+}
+@font-face{
+ font-display:swap;
+ font-family:Open Sans;
+ font-stretch:75%;
+ font-style:normal;
+ font-weight:700;
+ src:url(https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObjz2VZyOOSr4dVJWUgsg-1x4gaVQUwaEQbjA.woff) format("woff");
+ unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+0304, u+0308, u+0329, u+2000-206f, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
+}
+@font-face{
+ font-display:swap;
+ font-family:Architects Daughter;
+ font-style:normal;
+ font-weight:400;
+ src:url(https://fonts.gstatic.com/s/architectsdaughter/v18/KtkxAKiDZI_td1Lkx62xHZHDtgO_Y-bvTYlg4-7jA-U.woff2) format("woff2");
+ unicode-range:u+00??, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+0304, u+0308, u+0329, u+2000-206f, u+2074, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd;
+}
+[data-engrid-theme=wwf]{
+ --engrid__body_margin:0 22px;
+ --engrid__body-main_padding:40px 32px;
+ --engrid__body-title_padding:0px 0px 32px 0px;
+ --engrid__body-top_padding:0px;
+ --engrid__page_background-color:#fefcf9;
+ --engrid__body-title_background-color:#0000;
+ --engrid__body-banner_background-color:#0000;
+ --engrid__body-top_background-color:#0000;
+ --engrid__body-main_background-color:#f9f3eb;
+ --engrid__content-header_background-color:#000;
+ --engrid__content-footer_background-color:#fff;
+ --engrid__body_box-shadow:none;
+ --default_font-family:"Open Sans", sans-serif;
+ --default_color:#1f2937;
+ --default_font-size:18px;
+ --default_line-height:26.28px;
+ --h1_color:#060606;
+ --h1_font-size:80px;
+ --h1_font-weight:700;
+ --h1_line-height:110%;
+ --h2_font-size:24px;
+ --h2_font-weight:700;
+ --h2_line-height:140%;
+ --p_font-size:var(--default_font-size);
+ --a_color:var(--color_acadia_400);
+ --a_text-decoration:underline;
+ --a_font-size:var(--default_font-size);
+ --a_font-weight:600;
+ --fields_spacing-block:1rem;
+ --error__color:#cb4328;
+ --error__color_faded:#ffefe9;
+ --a_text-decoration_hover:underline;
+ --a_color_hover:var(--color_acadia_500);
+ --input_color:var(--color_punaluu_500);
+ --input_font-size:16px;
+ --input_line-height:23px;
+ --input_letter-spacing:0.16px;
+ --input_background-color:var(--color_punaluu_50);
+ --input_border-color:var(--color_punaluu_300);
+ --input_border-radius:4px;
+ --input_placeholder-color:var(--color_punaluu_300);
+ --input_padding:11.5px 15px;
+ --color_primary:#cb4328;
+ --color_acadia_400:#1f648c;
+ --color_acadia_500:#0f3d57;
+ --color_punaluu_50:#fcfcfc;
+ --color_punaluu_300:#727272;
+ --color_punaluu_400:#4b4b4b;
+ --color_punaluu_500:#0f0f0f;
+ --color_yellowstone:#fc6;
+ --button_color:var(--color_acadia_400);
+ --button_font-size:18px;
+ --button_font-weight:700;
+ --button_line-height:100%;
+ --button_background-color:#fff;
+ --button_border-color:var(--color_acadia_400);
+ --button_border-radius:32px;
+ --button_border-width:2px;
+ --button_color_hover:#fff;
+ --button_background-color_hover:var(--color_acadia_400);
+ --button_border-color_hover:var(--color_acadia_400);
+ --button_color_checked:#fff;
+ --button_background-color_checked:var(--color_acadia_400);
+ --button_border-color_checked:var(--color_acadia_400);
+ --recurring-frequency__button_padding:14px 0px;
+ --recurring-frequency__button_font-size:18px;
+ --recurring-frequency__button_font-weight:600;
+ --submit__button_color:#fff;
+ --submit__button_border-color:var(--color_primary);
+ --submit__button_background-color:var(--color_primary);
+ --submit__button_color_hover:#fff;
+ --submit__button_background-color_hover:#b54000;
+ --submit__button_border-color_hover:#b54000;
+ --submit__button_color_checked:#fff;
+ --submit__button_background-color_checked:#000;
+ --submit__button_border-color_checked:#000;
+ --submit__button_padding-top:1rem;
+ --submit__button_padding-bottom:1rem;
+ --submit__button_font-size:24px;
+ --premium__image_max-width:134px;
+ --give-quarterly-donation-amount-appended-label:"/qtr";
+ --recurring-frequency__button_count:2;
+ --recurring-frequency__button_color_checked:#fff;
+ --donation-amount__button_count:3;
--give-by-select__button_count:2;
--label_font-size:16px;
- --label_line-height:24px;
+ --label_line-height:146%;
+ --lebel_letter-spacing:0.16px;
--label_font-weight:700;
--label_color:#222;
--input_placeholder-color:#989b97;
--radio_height:30px;
--radio_width:30px;
--radio_border-width:2px;
- --radio_color:#006ea3;
+ --radio_color:var(--color_acadia_400);
--radio_background-color_hover:#bababa;
--radio_box-shadow_hover:inset 0 0 0 4px #fff;
- --radio_background-color_selected:#006ea3;
- --radio_border-color_selected:#006ea3;
+ --radio_background-color_selected:var(--color_acadia_400);
+ --radio_border-color_selected:var(--color_acadia_400);
--radio_box-shadow_selected:inset 0 0 0 4px #fff;
+ --donation-amount__button_font-weight:600;
--donation-amount__button_color_checked:#fff;
- --donation-amount__button_background-color_checked:#016da3;
+ --donation-amount__button_background-color_checked:var(--color_acadia_400);
+ --donation-amount__button_border-color_checked:var(--color_acadia_400);
--checkbox_content_checked:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='21' height='15' viewBox='0 0 20 15'%3E%3Cpath style='stroke:none;fill-rule:nonzero;fill:%23fff;fill-opacity:1' d='m12.75 6.117-5.914 6.117-5.5-5.687L0 7.93l3.418 3.535 3.418 3.539 6.582-6.813L20 1.383 18.664 0Zm0 0'/%3E%3C/svg%3E");
--checkbox_border-width:2px;
--checkbox_background-color_hover:#fff;
- --checkbox_border-color_checked:#006ea3;
- --checkbox_background-color_checked:#006ea3;
+ --checkbox_border-color_checked:var(--color_acadia_400);
+ --checkbox_background-color_checked:var(--color_acadia_400);
--checkbox_color_checked:#fff;
--select_padding-right:3.75ch;
--premium__image_max-height:100px;
@@ -8212,32 +8626,49 @@ body[data-engrid-debug]:before{
--textarea_line-height:24px;
--inline-upsell-box_margin-left:8px;
--inline-upsell-box_margin-right:8px;
- --inline-upsell-box_font-size:15px;
- --inline-upsell-box_line-height:24px;
+ --inline-upsell-box_font-size:16px;
+ --inline-upsell-box_line-height:150%;
--inline-upsell-box-svg_margin-left:53px;
--inline-upsell-box_strong_font-size:20px;
--inline-upsell-box_strong_line-height:28px;
- --en-vgs-height:64px;
+ --en-vgs-height:48px;
--maximize_my_donation_image:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/2401_Premiums_NoPremTiger_1050.jpg-250x250.jpg?v=1682005678000);
- --click-to-expand__copy-area_height:210px;
- --click-to-expand__cta-image_url:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='138' height='18' fill='none'%3E%3Cpath fill='%23006DA4' stroke='%23006DA4' d='m137 9-1.5-1.4-5.6 5.6V1h-2v12.2l-5.6-5.6L121 9l8 8 8-8Z'/%3E%3Cpath fill='%23006DA4' d='M10.2 12.2a4 4 0 0 1-.6 2.2A4 4 0 0 1 7.8 16c-.8.3-1.7.5-2.8.5a10.7 10.7 0 0 1-3-.5l-1-.5v-2.8l2.1.8c.8.3 1.5.4 2.2.4.5 0 .9 0 1.2-.2.3-.1.5-.3.6-.5.2-.3.3-.5.3-.8 0-.4-.2-.7-.4-1l-1-.7a40.3 40.3 0 0 0-2.5-1.2c-.4-.3-.8-.5-1.1-.9a4 4 0 0 1-.9-1.1c-.2-.5-.3-1-.3-1.7a3.7 3.7 0 0 1 2.3-3.6c.7-.3 1.5-.5 2.5-.5a13.1 13.1 0 0 1 4.2 1l-1 2.4-1.7-.6c-.5-.2-1-.3-1.6-.3-.4 0-.7 0-1 .2A1.3 1.3 0 0 0 4 5.7c0 .3.1.6.3.8A40 40 0 0 0 6.7 8l1.9 1c.5.4 1 .8 1.2 1.4.3.5.4 1 .4 1.8ZM15.6 1v3.1a19.4 19.4 0 0 1-.2 2.6h.2a3.2 3.2 0 0 1 1.9-1.5l1.2-.1c.8 0 1.5.1 2.1.4.6.3 1 .7 1.4 1.3.3.6.5 1.3.5 2.3v7.1h-3V9.8a3 3 0 0 0-.5-1.7c-.2-.4-.7-.6-1.3-.6-.6 0-1 .1-1.4.4-.3.2-.6.7-.7 1.2-.2.5-.2 1.2-.2 2v5.1h-3V1h3Zm20 9.7c0 1 0 1.7-.3 2.4s-.6 1.3-1.1 1.8c-.5.5-1 .9-1.7 1.1-.6.3-1.4.4-2.2.4-.8 0-1.5-.1-2.1-.4a4.7 4.7 0 0 1-2.8-2.9c-.2-.7-.3-1.5-.3-2.4 0-1.2.2-2.2.6-3 .4-.9 1-1.5 1.8-2 .8-.4 1.8-.6 2.9-.6 1 0 1.9.2 2.7.6.8.5 1.4 1.1 1.9 2 .4.8.6 1.8.6 3Zm-7.5 0c0 .7 0 1.3.2 1.8s.4.9.8 1.1c.3.3.7.4 1.3.4.5 0 1-.1 1.2-.4.4-.2.6-.6.8-1l.2-1.9c0-.7 0-1.3-.2-1.8a2 2 0 0 0-.8-1c-.3-.3-.7-.4-1.3-.4-.8 0-1.3.2-1.7.8-.3.5-.5 1.3-.5 2.4ZM47 16.2l-.8-3.8a33.2 33.2 0 0 0-.9-3.9l-.2-1a789 789 0 0 0-1.2 5l-.9 3.7h-3.2l-3-11h2.9l1.3 5a15.8 15.8 0 0 1 .4 2.5l.2 1a14.3 14.3 0 0 1 .4-2.6l.1-.6 1.4-5.2h3.3l1.2 5.2a15.9 15.9 0 0 1 .4 2.2l.1 1h.1a35.1 35.1 0 0 1 .6-3.6l1.3-4.8h3l-3.2 10.9h-3.2ZM73.2 5c1.3 0 2.2.4 2.8 1 .7.7 1 1.7 1 3v7.2h-3V9.8c0-.8-.1-1.4-.4-1.7-.3-.4-.7-.6-1.2-.6-.8 0-1.4.2-1.7.8-.3.6-.5 1.4-.5 2.4v5.5h-3V9.8c0-.5 0-1-.2-1.3 0-.3-.3-.6-.5-.8-.2-.2-.5-.2-1-.2a2 2 0 0 0-1.2.4c-.3.2-.6.7-.7 1.2l-.2 2v5.1h-3v-11h2.3l.4 1.5h.2l.8-1 1.1-.5 1.2-.1c.8 0 1.5.1 2 .4.6.2 1 .6 1.4 1.2h.2c.3-.6.8-1 1.4-1.2.6-.3 1.2-.4 1.8-.4ZM90 10.7c0 1-.1 1.7-.4 2.4-.2.7-.6 1.3-1 1.8-.5.5-1 .9-1.7 1.1-.7.3-1.4.4-2.2.4-.8 0-1.5-.1-2.2-.4a4.7 4.7 0 0 1-2.7-2.9c-.3-.7-.4-1.5-.4-2.4 0-1.2.2-2.2.6-3 .5-.9 1-1.5 1.9-2 .8-.4 1.7-.6 2.8-.6 1 0 2 .2 2.7.6.8.5 1.5 1.1 1.9 2 .5.8.7 1.8.7 3Zm-7.6 0c0 .7.1 1.3.3 1.8.1.5.4.9.7 1.1.3.3.8.4 1.3.4s1-.1 1.3-.4c.3-.2.6-.6.7-1 .2-.6.2-1.2.2-1.9s0-1.3-.2-1.8a2 2 0 0 0-.7-1c-.4-.3-.8-.4-1.3-.4-.8 0-1.4.2-1.7.8-.4.5-.6 1.3-.6 2.4ZM98.5 5a5.3 5.3 0 0 1 1 .2L99.3 8l-.4-.1a4.2 4.2 0 0 0-1.6.1l-1 .5c-.2.2-.5.5-.6.8a3 3 0 0 0-.3 1.3v5.6h-3v-11h2.3l.4 2h.2c.2-.5.5-.8.8-1.1l1-.7 1.4-.3Zm7.5 0c1 0 1.9.3 2.6.7a4 4 0 0 1 1.7 1.6c.4.8.6 1.7.6 2.7v1.5h-7c0 .8.3 1.5.7 2 .5.4 1.2.7 2 .7a8 8 0 0 0 3.7-.9v2.3a7 7 0 0 1-1.7.6l-2.1.2c-1.1 0-2.1-.2-3-.6-.8-.4-1.4-1-2-1.9-.4-.8-.6-1.8-.6-3a7 7 0 0 1 .6-3.3c.4-.8 1-1.5 1.8-1.9.8-.4 1.7-.6 2.7-.6Zm0 2.2a2 2 0 0 0-1.4.5c-.4.4-.6 1-.7 1.8h4.2c0-.4 0-.8-.2-1.2l-.7-.8a2 2 0 0 0-1.2-.3Z'/%3E%3C/svg%3E");
- --click-to-expand__cta-image_width:137px;
- --click-to-expand__cta-image_height:17px;
+ -webkit-text-decoration-skip-ink:none;
+ text-decoration-skip-ink:none;
+}
+[data-engrid-theme=wwf] .body-bannerOverlay,[data-engrid-theme=wwf] .body-bottom,[data-engrid-theme=wwf] .body-footer,[data-engrid-theme=wwf] .body-footerOutside,[data-engrid-theme=wwf] .body-header,[data-engrid-theme=wwf] .body-headerOutside,[data-engrid-theme=wwf] .content-footerSpacer,[data-engrid-theme=wwf] .content-preFooter,[data-engrid-theme=wwf] .page-alert,[data-engrid-theme=wwf] .page-backgroundImageOverlay{
+ display:none !important;
+}
+[data-engrid-theme=wwf]{
color:#1f2937;
font-family:Open Sans,sans-serif;
font-size:20px;
line-height:32px;
}
-[data-engrid-theme=wwf] .body-bannerOverlay,[data-engrid-theme=wwf] .body-bottom,[data-engrid-theme=wwf] .body-footer,[data-engrid-theme=wwf] .body-footerOutside,[data-engrid-theme=wwf] .body-header,[data-engrid-theme=wwf] .body-headerOutside,[data-engrid-theme=wwf] .content-footerSpacer,[data-engrid-theme=wwf] .content-preFooter,[data-engrid-theme=wwf] .page-alert,[data-engrid-theme=wwf] .page-backgroundImageOverlay{
- display:none !important;
-}
[data-engrid-theme=wwf] .body-main{
- --p_font-size:17px;
- --p_line-height:27.2px;
+ --p_font-size:var(--default_font-size);
+ --p_line-height:var(--default_line-height);
+}
+[data-engrid-theme=wwf] a{
+ font-size:var(--a_font-size);
+ font-weight:600;
+ -webkit-text-decoration:underline;
+ text-decoration:underline;
+}
+[data-engrid-theme=wwf] .body-main a{
+ text-decoration-thickness:2px;
+ text-underline-offset:8px;
+}
+[data-engrid-theme=wwf] .en__pgHeader,[data-engrid-theme=wwf] .section-header{
+ margin-bottom:24px;
+ margin-top:40px;
+}
+[data-engrid-theme=wwf] h1{
+ margin-top:1rem;
}
[data-engrid-theme=wwf] .radio-to-buttons_recurrfreq .en__field--recurrfreq.en__field--radio input[type=radio][value=ANNUAL]+label:before,[data-engrid-theme=wwf] .radio-to-buttons_recurrfreq .en__field--recurrfreq.en__field--radio input[type=radio][value=MONTHLY]+label:before{
background-color:initial;
- background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAsCAYAAAAjFjtnAAAAAXNSR0IArs4c6QAAB+ZJREFUeNrNWctvG0UYX17iITgiceSCQNCWMxyAe4WACg5IICHBAcE/AEhIgQMcEKIUhChUPaV52FnbebRpnMTP3U3tpAlt1aYQP7PetZuStqilreL1DvPtzPjbzXTVWElLR/o0m3183+/3vWY8UTYPQsh9kXciD4i/17JLz6yq2pfW0ULcjGv11UjuhhnNXzdHtMut4/Mpe2Lu0IXsmX2kSh7p6kinH0SN8j1490L69Jv2eOH35mRxtqFqlxrR/A0qG/aoYTePF8cbo8bXLf3cru43kcgDgC2oVQZ/v7i+oC+/tDo2N1yP5q7UI1lSH6YSyREKnqyO5EmDihmFWSNWzCB2Yq7USi59QXU8joARPNf/WGt68TM7YZQaMd2vg4nK5yjVqeqg93rr6Hx8nWLp6uoDjNKAB33dB+Zkoa8WzbrVoTSpecCzzmo0RyXvmiN+g3qHGnLsEc21gAiV5kThz4vG8qtCp9C7VvzrlebEiWX4jotLv3cspoN+rxMQm15T6VCdjtBpxw3Smlr8JoQE3iCEPFGPaROVwTTh4NsUvAuepwSYt6Jd8MQGoyr3FhhV9Q1hEKIh9Lemlj63YwYDM6JtMIA6YQLf+0XnwsnE9LZ4Zo+dmKIYHwmQ8OdVPZ6frgykSG0o3a4NZ1zufcII5EnX+6oWAG/HmDQpSArUsVV2vZZc/HEteXI/gOfvOghQFht1gR7QIXQCEXAOkEj661URBWseK35XHpgl1Ptt5v2MSB/wPhXwvp8Agm+qBhedCRikYJsCBLt2EZwEFMWny0bx7nkkVA3S6VtR2AqM5tyZ1yqRDKEE3MpQ2kUCwvv+CPAw8xmMoiEOCu93PGHXAhwKkpZ04Gz4dbpQL5Ci68byy4oY9VF9vHwEvJ9yIP/DCWiMAKYPEvCuQfAe9yqCCRUAyb4VM0owChbUBMXQOlpIsAJLn9pVHkpdZ+mTggiQrUQA8x+8iIbvhNgiUtQW61ga2P13XTv7glIeTPcBeCoOJUBYBMJrADvQJgJ3hgQ2CG7LYrYdmM2E8ZVSH9PHS/0zpDyY6gABEIkALGC3KWLM050Ww1/Eolt1vMWOrthKOZJplo54BNwyEqCS8UhgG83dqo0KAli4OwcePY+1BjZhdr1UThhNhYK/XhqYISyNbkPAiwDWgZxGxs5GIRBhI2ATnAh7J6U0MHuVkmAEBmdJaB2EL2YAWgr1NsGjLt9scZtiz2RGtRsKbZ/XgEAJCHjgtxIFLRgFTCWctwNe1uX3vrAPm8qbSm1UX1rp9yLg8m7ESAz1EAVMJcnwNsBj6sjed81InliTxdNKVc0dXmERcDCNwqOALTV8X9T0zz2DD85i1UfwnjjgTGts7jC00fdLFDQl4crFLEcBSJg8CnJBU8HWh8XdE3jsaFYMPe9LHbDf8exPFj9Qrq40nywNpv7mUXBDawFJSCuzqW7qSkgCU6En8HLem8z7YNP1UlnVLq9Vq08pMCqx7M+cQBsKOrQW5IIGCY+EejsSwWey56moInXywl4b7DfG535RxGgtLO8uD6c6IgqMAEYiJJXECk2FGWD1gF5jJOTCtsPBwxwCHroO935Mcy+dPL9H8e+pK/H8oZUj00BgA6KwhVTCovYiIJHASCBQ3OtL94TndQl8g4GHtN0AuyY9SBDYuz/km0vLT1eimSsr/R6JTpfEQA8kpEjoggS2WNz4IXg6Y9qEgu/AwcJqXL9ymWINHEKk+anB6lTxE96RHAYeuxLWQzgJE0lIkcDiBiIodmjOU2GNAnSDDadOZ3t28eNbHt0QRbkP5loiH1/px1TiteDfZkjrA+5YJRJY2KIu0PscOIK3Ap6nwBl4kI0atWdNzMUQa8iZEFkjj1dimfOcRNtHQupMVUpAXqlBfDXBgeGKjcKBs2eb0sZE8G3Qb47qy3DmhFilgQXdMk7vLkfS1zgJB4sa22sVN3y3qQlcsS08SsEaESus6PNBzztUL3Sdf9ZPnH0eMYYOrAdz+uQ+WJl5a+34I1ERJMJqQv4dzUkI0ZkgcN4qATgDT/O9U+f6mtNLexHbFka6j71oJeff9ZFwJRKYTqGRAFBYFyHC3zFl8MROFt5CTGz0RGI1Of8pdiYgMetLp9RWI4FEcDuOuY6eB3Ep+A58byUXPgIMCwcPPtQDdDz1Igo716yN6QcgEkgCIiJFIpwEEgkR7x14F8A78F3jaOF7sI0n5b0N6dixNqr9xEl0OAm5Ow3KJGQiKAjckw59t8PAF/cHMGxjBFpWfUz7IaywyyGRwLUCifhE3O/Ae+h52fa2SYjFw5wsvreZRCk0EljcckTYdS2Sdfhz15qa/3Cnwcv/uZG7kxMkAQRCilsWp8afWcfn3xA532va9Nid+oItth9JyDWB0UDJCHFEhKxjxddDus2dJdGYmX/7Fis2EgECKH4ijkdsOHOzcbywF9v2XRtosJFffLEczawDiRWxAQxJKV7kbe+fKCO5NXPm5B7UddcHhHzBC7mZXdhdjqYv+TeAIPjLrhuRNhzj19TsxWbqjxdQx/82EIClnXq2omYKPBJtiABLKR4NTqway52zjdPP3RPgN28ACSEPVUYy6ZUjQGKmTYkQRoSDH8mlCSGPdn+Q3EvDR+Jhmk5JIAGrNhdSjman4Nk9CZ6N4F69Gs/vh/QBqSW0A4F37uXh/yd0PZH/tZbI/+Z/ttP2/gPVb/BS0AIj1wAAAABJRU5ErkJggg==);
+ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEoSURBVHgBxZQ9TsMwFMf/z2nTNSsS6scNWJAqpnCDDlRi7A2qnID2BuEEwAaUoZwAJoLEQG5QQBwgK5T4YQchgnDSkFrqT7L07Gf9/PEsA5ah72Bx2O860hkz5IAYXTWUqPS86cjp1vn902Lgew33fSzBo588YjXnrD27O/0lfB3u7kg0blTomZcVYW4h07bC9mUUZGG2s5QeC2UVYYGgcxGF9DLcO1HdEdYnSZetnmBiH3bwHPfNF4X3UgcmT+CrWnYgTtSRcQ1LNAXHwuGPEBZgiWP9XsX27CFmRoA1YFAs09ZEx/oO0bmKQmaeogaZbOnu9+a3WS0on3w+6E+I6Kiu7I/wP1KTzCisIi2SFQrLpGWyUqFJukq2UpiXVpFVRn+uumETfAIO45CXeq10WAAAAABJRU5ErkJggg==);
background-position:50%;
background-repeat:no-repeat;
background-size:contain;
@@ -8250,20 +8681,45 @@ body[data-engrid-debug]:before{
height:auto;
margin-right:.5rem;
min-width:0;
- transform:scale(1.2);
- width:21px;
+ width:20px;
}
-[data-engrid-theme=wwf] .radio-to-buttons_recurrfreq .en__field--recurrfreq.en__field--radio .en__field__item input[type=radio][value=ANNUAL]:checked+label:before,[data-engrid-theme=wwf] .radio-to-buttons_recurrfreq .en__field--recurrfreq.en__field--radio .en__field__item input[type=radio][value=MONTHLY]:checked+label:before,[data-engrid-theme=wwf] .radio-to-buttons_recurrfreq .en__field--recurrfreq.en__field--radio .en__field__item:hover input[type=radio][value=ANNUAL]+label:before,[data-engrid-theme=wwf] .radio-to-buttons_recurrfreq .en__field--recurrfreq.en__field--radio .en__field__item:hover input[type=radio][value=MONTHLY]+label:before{
- background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAsCAMAAAAUyMtVAAAAAXNSR0IArs4c6QAAAsFQTFRFAAAA/////wD/AAAA/4CAgAAAAAAAqlVVqgBVqgAAVQAAv4CAv0BAvwAAgAAAzDNmzAAzmQAA////5pmz6KK5/+r//+vr/9vt7rvM77/P8MPS8cbV5KSt0niP1YCOzmd3yWd3zmJ3ymV6y15y0WF614eWzmJ71IeVylJvy1VtzF10yFJp0XiD0XaF0nSDyFhtyVdsynB+yGt2yXJ9yW99yW96yW55w09hyHB6yG16x2t4wE5gyGVzyGR0x2Nzx2VyyGRxxVJkxVhqxFNluSxEuSxDui9DuitDxEtfwktfwkpfwzxWwTxWvjxSwD9XvT9SwTxXvzlTwDpTwj1XwjxWwDtVvkNYv0NWvkBUvTxQvT1RwDlTwTtUv0JVv0FWv0FVv0BUwUtdwUtcvUBRvEFRwk1gwk5gwk5gvEBRvEBQvT5RvENTwlBhwk9hvD9QwUVZwUZavTtPvTpPvjtPvTtQvTtPuytEuylEvCpEuylDuylDuSpBuzBIuSpBvDBIuylFuylEuR06uylEuB46txY2txY1uB47uB06thQ1uylEthM0twwytxQ1txQ0txM0thI0uypEuylDtxU1txQ1txM0thAztg0xtgwxtwsxtgkwtxU1txQ1txQ0txM0txI0thIztxEzthEzthAztg8ytgwxtxU1txQ1txM0thAztgwxtgoxtxQ1txQ0txM0txI0tgwxtgoxtgkwtgcwtgQvtgMvui5EuSlBuSlAuShBuShAuCA7uB87tx45tx44uB05tx05tx04txk4txk3txg4txY2txU2txU1txM2txM0txI1txI0thI0thIztxE1txE0txEzthE0thEztg4ytg0ytg0xtgwytgwxtgkwtggwtggvtgcwtgYwtgYvtgUwtgUvtgQwtgQvtgMvtgEutQEutQEttgAvtgAutgAttQAttQAstQArv6q4sgAAALV0Uk5TAAEBAQICAgMDAwMEBAQEBQUFCgoLDA0ODxAREhwiJC8vLzAxMjM0NTU2NzhCQ0RUVVtdXl5eX2FiYmRlb3BxcnN/gIGEhoiIjo6OmJiYm5ucnJ2enp+go6Slp62utre3t7i6vL2/wMHCw8THzMzQ2drc3N7f4ODt7u/w8fPz9PT19vf39/f4+Pj5+fn6+vr6+/v7+/v7+/v7+/z8/Pz8/Pz8/Pz8/f39/f39/v7+/v7+/v7+/r58BGEAAAL/SURBVHjajZGFdxNZFMa/sM2y3d0WLe5uxd3d3d3d3d2lLVJKYaB4sDCB4l4kLeFOaHoLlBIIVtqE/BW85JQeAmnyfmfOOzP3/r4z774HD7pQoFK36asundw6b2SDYsB/gHcp3nDk3G2nrq6e3qMiEKpDLiFA5PhNKe4M0tideX9551IIg3hKd15+P9PNRK/dKTsm1vOIXvRAz1vO9NMGC9vIkHDl7avFkdDrUX/Rm7dXEgzEbDHEpTvv9vKqnljE1OxExURMzGKh83udtzsBXW47956nn1WTkpg9s4SQoQOm5ESrQmT2QpyqfH7Rp+/L60oq5xWJ1eicmR49FD2zo8lKnAdpfPmM2XzmMmu/VplisnsLHZG3ElX2dHyaFy7QH0U18U49AOOciqf1e4L8FBXnBKDSlnSTxlKQKX17FXRNOUUkGaC4lO6Y4TawNAb3NKzMUIklIdPrFThCLE0aUzx22zSWRrPtxGHNxrJYbdoeLHQZ5WcwuhZgdI7C0hz9Ogpt7l2Uv4eL91qg3Dq7ypKo9jXlgAH2g0wsAfHBzH4Aat68YZEJpJHly83qQChGfIxikvlB1MfhQg9BhfXfjEzB/XPf1pYXOsLQ7nkcEQXxieKetxWy4C9Mdh/gYAE+4J4kVA8hKLvMpQRMpAnftaSMUL38gxr7s0QikK9k7aqGgsglDE2SPp1jCjCwI6mR0PIIR8uH1/I9KmKj/UFzIeHXRMdn8RYm/74a/6S9rw/d3xiSfEhl8udbDpkHQq+DDwWAYclnjUx+9hNvHuoVfAkB+j+1/z55mpjX/mSgt+0n0TrJYfBNEBscDzr49QHdv2iV5FCYKE+3es6zGfQF4BddOFo9zjoqxFyf6dh74YfrkB/haLrvQ0IqU65/PONRY1EEAiTqbHwXZdNI+MSx7zbURRgCUgS1N7ti2SZ0jnVtrIXCCEIhVJ7viiKrlWK/L60qPhE8UXSOM4YoxjmnJP4HZBIRsxwnTryfHSHnAwWBwcnmQd4X6cTYMfn4PwC3d3FHKpEYWgAAAABJRU5ErkJggg==);
+[data-engrid-theme=wwf] .en__component--dd360search p{
+ color:var(--label_color);
+ font-size:var(--label_font-size);
+ font-weight:var(--label_font-weight);
+ letter-spacing:var(--label_letter-spacing);
+ line-height:var(--label_line-height);
+ margin-bottom:.5rem;
}
[data-engrid-theme=wwf] .payment-method{
- align-items:center;
+ align-items:flex-end;
display:flex;
justify-content:space-between;
}
-[data-engrid-theme=wwf] .payment-method img{
- margin-bottom:calc(1rem*var(--scale-down_20pct));
- margin-top:calc(2rem*var(--scale-down_20pct));
+[data-engrid-theme=wwf] .payment-method .secure-padlock{
+ color:var(--color_punaluu_400);
+ font-size:14px;
+ font-style:normal;
+ font-weight:600;
+ letter-spacing:.245px;
+ line-height:140%;
+ margin-bottom:28px;
+}
+[data-engrid-theme=wwf] .payment-method .secure-padlock:before{
+ background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIiBzdHJva2U9IiM0QjRCNEIiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMTUuODMzIDkuNDE3SDQuMTY3Yy0uOTIgMC0xLjY2Ny43NDYtMS42NjcgMS42Njd2NS44MzNjMCAuOTIuNzQ2IDEuNjY3IDEuNjY3IDEuNjY3aDExLjY2NmMuOTIgMCAxLjY2Ny0uNzQ3IDEuNjY3LTEuNjY3di01LjgzM2MwLS45Mi0uNzQ2LTEuNjY3LTEuNjY3LTEuNjY3Wk01LjgzNCA5LjQxN1Y2LjA4NGE0LjE2NyA0LjE2NyAwIDAgMSA4LjMzMyAwdjMuMzMzIi8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAuMjUpIiBkPSJNMCAwaDIwdjIwSDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+");
+ content:" ";
+ display:inline-block;
+ height:20px;
+ margin-right:4px;
+ position:relative;
+ top:4px;
+ width:20px;
+}
+[data-engrid-theme=wwf]{
+ --click-to-expand__copy-area_height:210px;
+ --click-to-expand__cta-image_url:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='138' height='18' fill='none'%3E%3Cpath fill='%23006DA4' stroke='%23006DA4' d='m137 9-1.5-1.4-5.6 5.6V1h-2v12.2l-5.6-5.6L121 9l8 8 8-8Z'/%3E%3Cpath fill='%23006DA4' d='M10.2 12.2a4 4 0 0 1-.6 2.2A4 4 0 0 1 7.8 16c-.8.3-1.7.5-2.8.5a10.7 10.7 0 0 1-3-.5l-1-.5v-2.8l2.1.8c.8.3 1.5.4 2.2.4.5 0 .9 0 1.2-.2.3-.1.5-.3.6-.5.2-.3.3-.5.3-.8 0-.4-.2-.7-.4-1l-1-.7a40.3 40.3 0 0 0-2.5-1.2c-.4-.3-.8-.5-1.1-.9a4 4 0 0 1-.9-1.1c-.2-.5-.3-1-.3-1.7a3.7 3.7 0 0 1 2.3-3.6c.7-.3 1.5-.5 2.5-.5a13.1 13.1 0 0 1 4.2 1l-1 2.4-1.7-.6c-.5-.2-1-.3-1.6-.3-.4 0-.7 0-1 .2A1.3 1.3 0 0 0 4 5.7c0 .3.1.6.3.8A40 40 0 0 0 6.7 8l1.9 1c.5.4 1 .8 1.2 1.4.3.5.4 1 .4 1.8ZM15.6 1v3.1a19.4 19.4 0 0 1-.2 2.6h.2a3.2 3.2 0 0 1 1.9-1.5l1.2-.1c.8 0 1.5.1 2.1.4.6.3 1 .7 1.4 1.3.3.6.5 1.3.5 2.3v7.1h-3V9.8a3 3 0 0 0-.5-1.7c-.2-.4-.7-.6-1.3-.6-.6 0-1 .1-1.4.4-.3.2-.6.7-.7 1.2-.2.5-.2 1.2-.2 2v5.1h-3V1h3Zm20 9.7c0 1 0 1.7-.3 2.4s-.6 1.3-1.1 1.8c-.5.5-1 .9-1.7 1.1-.6.3-1.4.4-2.2.4-.8 0-1.5-.1-2.1-.4a4.7 4.7 0 0 1-2.8-2.9c-.2-.7-.3-1.5-.3-2.4 0-1.2.2-2.2.6-3 .4-.9 1-1.5 1.8-2 .8-.4 1.8-.6 2.9-.6 1 0 1.9.2 2.7.6.8.5 1.4 1.1 1.9 2 .4.8.6 1.8.6 3Zm-7.5 0c0 .7 0 1.3.2 1.8s.4.9.8 1.1c.3.3.7.4 1.3.4.5 0 1-.1 1.2-.4.4-.2.6-.6.8-1l.2-1.9c0-.7 0-1.3-.2-1.8a2 2 0 0 0-.8-1c-.3-.3-.7-.4-1.3-.4-.8 0-1.3.2-1.7.8-.3.5-.5 1.3-.5 2.4ZM47 16.2l-.8-3.8a33.2 33.2 0 0 0-.9-3.9l-.2-1a789 789 0 0 0-1.2 5l-.9 3.7h-3.2l-3-11h2.9l1.3 5a15.8 15.8 0 0 1 .4 2.5l.2 1a14.3 14.3 0 0 1 .4-2.6l.1-.6 1.4-5.2h3.3l1.2 5.2a15.9 15.9 0 0 1 .4 2.2l.1 1h.1a35.1 35.1 0 0 1 .6-3.6l1.3-4.8h3l-3.2 10.9h-3.2ZM73.2 5c1.3 0 2.2.4 2.8 1 .7.7 1 1.7 1 3v7.2h-3V9.8c0-.8-.1-1.4-.4-1.7-.3-.4-.7-.6-1.2-.6-.8 0-1.4.2-1.7.8-.3.6-.5 1.4-.5 2.4v5.5h-3V9.8c0-.5 0-1-.2-1.3 0-.3-.3-.6-.5-.8-.2-.2-.5-.2-1-.2a2 2 0 0 0-1.2.4c-.3.2-.6.7-.7 1.2l-.2 2v5.1h-3v-11h2.3l.4 1.5h.2l.8-1 1.1-.5 1.2-.1c.8 0 1.5.1 2 .4.6.2 1 .6 1.4 1.2h.2c.3-.6.8-1 1.4-1.2.6-.3 1.2-.4 1.8-.4ZM90 10.7c0 1-.1 1.7-.4 2.4-.2.7-.6 1.3-1 1.8-.5.5-1 .9-1.7 1.1-.7.3-1.4.4-2.2.4-.8 0-1.5-.1-2.2-.4a4.7 4.7 0 0 1-2.7-2.9c-.3-.7-.4-1.5-.4-2.4 0-1.2.2-2.2.6-3 .5-.9 1-1.5 1.9-2 .8-.4 1.7-.6 2.8-.6 1 0 2 .2 2.7.6.8.5 1.5 1.1 1.9 2 .5.8.7 1.8.7 3Zm-7.6 0c0 .7.1 1.3.3 1.8.1.5.4.9.7 1.1.3.3.8.4 1.3.4s1-.1 1.3-.4c.3-.2.6-.6.7-1 .2-.6.2-1.2.2-1.9s0-1.3-.2-1.8a2 2 0 0 0-.7-1c-.4-.3-.8-.4-1.3-.4-.8 0-1.4.2-1.7.8-.4.5-.6 1.3-.6 2.4ZM98.5 5a5.3 5.3 0 0 1 1 .2L99.3 8l-.4-.1a4.2 4.2 0 0 0-1.6.1l-1 .5c-.2.2-.5.5-.6.8a3 3 0 0 0-.3 1.3v5.6h-3v-11h2.3l.4 2h.2c.2-.5.5-.8.8-1.1l1-.7 1.4-.3Zm7.5 0c1 0 1.9.3 2.6.7a4 4 0 0 1 1.7 1.6c.4.8.6 1.7.6 2.7v1.5h-7c0 .8.3 1.5.7 2 .5.4 1.2.7 2 .7a8 8 0 0 0 3.7-.9v2.3a7 7 0 0 1-1.7.6l-2.1.2c-1.1 0-2.1-.2-3-.6-.8-.4-1.4-1-2-1.9-.4-.8-.6-1.8-.6-3a7 7 0 0 1 .6-3.3c.4-.8 1-1.5 1.8-1.9.8-.4 1.7-.6 2.7-.6Zm0 2.2a2 2 0 0 0-1.4.5c-.4.4-.6 1-.7 1.8h4.2c0-.4 0-.8-.2-1.2l-.7-.8a2 2 0 0 0-1.2-.3Z'/%3E%3C/svg%3E");
+ --click-to-expand__cta-image_width:137px;
+ --click-to-expand__cta-image_height:17px;
}
[data-engrid-theme=wwf]:not(#en__pagebuilder) .click-to-expand:not(.expanded){
margin-block-end:1em;
@@ -8294,15 +8750,61 @@ body[data-engrid-debug]:before{
[data-engrid-theme=wwf][data-ecard-preview=visible]:not(#en__pagebuilder):not(.freeze) .content-footer,[data-engrid-theme=wwf][data-ecard-preview=visible]:not(#en__pagebuilder):not(.freeze) .content-footerSpacer,[data-engrid-theme=wwf][data-ecard-preview=visible]:not(#en__pagebuilder):not(.freeze) .content-header,[data-engrid-theme=wwf][data-ecard-preview=visible]:not(#en__pagebuilder):not(.freeze) .content-preFooter{
z-index:3;
}
-[data-engrid-theme=wwf]:not(#en__pagebuilder):not([data-engrid-debug]) .en__field--donationAmt.en__field--validationFailed>.en__field__label{
+[data-engrid-theme=wwf] .minimal-header-logo,[data-engrid-theme=wwf] .minimal-header-logo+header,[data-engrid-theme=wwf]:not(#en__pagebuilder):not([data-engrid-debug]) .en__field--donationAmt.en__field--validationFailed>.en__field__label{
display:none;
}
+@media screen and (min-width:601px){
+ [data-engrid-theme=wwf][data-header-footer-layout=none] .body-title{
+ align-items:center;
+ display:flex;
+ gap:1rem;
+ }
+ [data-engrid-theme=wwf][data-header-footer-layout=none] .body-title h1{
+ font-size:3.25rem;
+ }
+ [data-engrid-theme=wwf][data-header-footer-layout=none] .body-title:before{
+ align-items:center;
+ background:#fff url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/logo-standalone.png?1) no-repeat;
+ background-position:50%;
+ background-position-x:0;
+ background-position-y:0;
+ background-size:auto;
+ background-size:contain;
+ content:"WWF Logo";
+ display:inline-block;
+ flex-shrink:0;
+ height:100px;
+ justify-content:center;
+ margin:0;
+ max-width:80px;
+ text-indent:-9999px;
+ width:80px;
+ z-index:3;
+ }
+}
+@media screen and (min-width:1200px){
+ [data-engrid-theme=wwf][data-engrid-page-background=image] .body-title .desktop h1{
+ color:#fff;
+ }
+ [data-engrid-theme=wwf][data-engrid-page-background=image] .body-top{
+ background-color:var(--engrid__body-main_background-color);
+ border:1px solid var(--color_punaluu_500);
+ border-radius:4px;
+ margin:var(--engrid__body-main_margin);
+ margin-bottom:var(--fields_spacing-block);
+ padding:5px 32px;
+ }
+}
[data-engrid-theme=wwf] .content-header{
color:#fff;
- margin-bottom:114px;
+ margin-bottom:40px;
}
[data-engrid-theme=wwf] .content-footer{
- margin-top:120px;
+ margin-top:40px;
+}
+[data-engrid-theme=wwf] .body-title>.en__component>*{
+ font-stretch:75%;
+ font-variation-settings:"wdth" 75;
}
[data-engrid-theme=wwf] .body-title>.en__component>:first-child{
margin-top:0;
@@ -8311,7 +8813,8 @@ body[data-engrid-debug]:before{
margin-bottom:0;
}
[data-engrid-theme=wwf] .body-main{
- border:1px solid #ccc;
+ border:1px solid var(--color_punaluu_500);
+ border-radius:4px;
}
[data-engrid-theme=wwf] .en__component--socialshareblock{
align-items:center;
@@ -8353,18 +8856,46 @@ body[data-engrid-debug]:before{
align-items:self-start;
flex-direction:column;
}
+[data-engrid-theme=wwf] .en__field--question{
+ --fields_spacing-block:24px;
+}
+[data-engrid-theme=wwf] .en__field--question .en__field--radio label,[data-engrid-theme=wwf] .en__field--question label{
+ --fields_spacing-block:0.5rem;
+}
+[data-engrid-theme=wwf] .en__field--question .en__field__element--radio{
+ --fields_spacing-block:0rem;
+ display:grid;
+ gap:.5rem;
+ grid-template-columns:auto auto;
+}
+[data-engrid-theme=wwf] .en__field--make_annual{
+ background-color:var(--color_yellowstone);
+ border:0;
+ border-radius:4px;
+ color:var(--color_punaluu_500);
+ margin:0;
+ padding:10px 16px;
+}
+[data-engrid-theme=wwf] .en__field--feeCover{
+ margin:0;
+}
+[data-engrid-theme=wwf] .en__field--feeCover .en__field__element--checkbox{
+ padding:8px 16px 0;
+}
[data-engrid-theme=wwf] input[type=checkbox]+label{
--checkbox_top:2px;
align-items:flex-start;
}
+[data-engrid-theme=wwf] input[type=radio]+label{
+ align-items:flex-start;
+}
[data-engrid-theme=wwf] .en__component--copyblock li{
font-size:var(--p_font-size);
margin-bottom:var(--fields_spacing-block);
}
-@media screen and (max-width:600px){
- [data-engrid-theme=wwf] .give-by-select{
- --give-by-select__button_count:1;
- }
+[data-engrid-theme=wwf] .give-by-select{
+ --give-by-select__button_count:1;
+ --fields_spacing-block:0.5rem;
}
[data-engrid-theme=wwf] .give-by-select.en__field__item:nth-child(odd of :not([data-engrid-hidden=true])):last-child{
flex-basis:100%;
@@ -8373,22 +8904,26 @@ body[data-engrid-debug]:before{
align-items:stretch;
}
[data-engrid-theme=wwf] .give-by-select input[type=radio]+label{
- height:65px;
- max-height:65px;
- padding:12px 22px;
+ align-items:center;
+ height:48px;
+ max-height:48px;
+ padding:11px 32px;
}
[data-engrid-theme=wwf] .give-by-select .en__field__label{
flex-direction:column !important;
}
[data-engrid-theme=wwf] .give-by-select .en__field__label img{
height:auto;
- max-height:70%;
+ max-height:83%;
width:auto;
}
[data-engrid-theme=wwf] .give-by-select .venmo label>img:last-of-type{
height:20px;
margin-top:5px;
}
+[data-engrid-theme=wwf] .giveBySelect{
+ text-align:center;
+}
[data-engrid-theme=wwf] .divider-top{
border-top:1px solid #ccc;
padding-top:1rem;
@@ -8403,6 +8938,16 @@ body[data-engrid-debug]:before{
[data-engrid-theme=wwf] .your-information h2:first-child{
margin-top:20px;
}
+[data-engrid-theme=wwf] .be-a-part-of-our-community :first-child p{
+ margin-bottom:24px;
+ margin-top:-4px;
+}
+[data-engrid-theme=wwf] .be-a-part-of-our-community :nth-child(2) p{
+ font-size:var(--label_font-size);
+ font-weight:var(--label_font-weight);
+ line-height:var(--label_line-height);
+ margin-bottom:8px;
+}
[data-engrid-theme=wwf] .countdown{
margin-block-end:1em;
}
@@ -8410,6 +8955,10 @@ body[data-engrid-debug]:before{
margin-top:-27px;
padding-top:26px;
}
+[data-engrid-theme=wwf] .en__field input:invalid{
+ background-color:var(--error__color_faded);
+ border-color:var(--error__color);
+}
[data-engrid-theme=wwf][data-engrid-page-type=supporterhub] .en__captcha,[data-engrid-theme=wwf][data-engrid-page-type=supporterhub] .en__field{
margin:0 auto !important;
width:100%;
@@ -8776,27 +9325,49 @@ body[data-engrid-debug]:before{
padding-right:1rem;
}
[data-engrid-theme=wwf] .donation-summary{
- --p_font-size:17px;
- --p_line-height:27.2px;
+ --p_font-size:16px;
+ --p_line-height:146%;
--p_font-weight:700;
- margin-top:14px;
+ border-bottom:1px solid var(--color_punaluu_500);
+ border-top:1px solid var(--color_punaluu_500);
+ letter-spacing:.16px;
+ margin-top:8px;
}
[data-engrid-theme=wwf] .donation-summary p{
+ margin:0 auto;
padding-bottom:22px;
padding-top:22px;
}
[data-engrid-theme=wwf] .alternative-donation-methods{
- --p_font-size:17px;
- --p_line-height:27.2px;
+ --p_font-size:14px;
+ --p_line-height:144%;
}
[data-engrid-theme=wwf] .alternative-donation-methods p:first-child{
- margin-top:31px;
+ font-weight:400;
+ letter-spacing:.245px;
+ line-height:144%;
+ margin:1rem 3rem 2rem;
}
[data-engrid-theme=wwf] .alternative-donation-methods a{
- color:#006da4;
- font-weight:700;
- -webkit-text-decoration:none;
- text-decoration:none;
+ --a_font-size:14px;
+ --a_line-height:144%;
+ color:var(--color_punaluu_500);
+ font-weight:400;
+ text-underline-offset:20%;
+}
+[data-engrid-theme=wwf] .alternative-donation-methods p:last-child:after,[data-engrid-theme=wwf] .alternative-donation-methods p:last-child:before{
+ content:"";
+}
+[data-engrid-theme=wwf] .alternative-donation-methods p:last-child{
+ display:grid;
+ gap:1rem;
+ grid-template-columns:1fr 101px 190px 101px 1fr;
+ height:101px;
+ place-items:center;
+}
+[data-engrid-theme=wwf] .alternative-donation-methods p:last-child a,[data-engrid-theme=wwf] .alternative-donation-methods p:last-child img{
+ height:auto;
+ width:100%;
}
[data-engrid-theme=wwf] .cn-bbb-badges{
margin-top:13px;
@@ -8805,82 +9376,79 @@ body[data-engrid-debug]:before{
margin-bottom:var(--fields_spacing-block);
}
[data-engrid-theme=wwf] .grey-box{
- --p_font-size:17px;
- --p_line-height:27.2px;
- background-color:#f6f5f3;
- margin-left:0;
- margin-right:0;
- padding:12px 16px;
+ --p_font-size:16px;
+ --p_line-height:146%;
+ background-color:#f3e7d9;
+ color:var(--color_punaluu_400);
+ letter-spacing:.16px;
+ margin-top:24px;
+ padding:1rem;
}
[data-engrid-theme=wwf] .grey-box p{
margin:0;
}
[data-engrid-theme=wwf] .grey-box a{
--p_font-weight:400;
- color:#006da4;
+ font-size:var(--p_font-size);
font-weight:700;
- -webkit-text-decoration:none;
- text-decoration:none;
+ text-underline-offset:20%;
}
-[data-engrid-theme=wwf] .white-box{
- background-color:#fff;
- border:1px solid #ccc;
+[data-engrid-theme=wwf] .body-top>.showif-desktop{
display:flex;
flex-direction:column;
- margin:2rem 0;
- padding:0 3rem 1.75rem;
+ margin-left:0;
+ margin-right:0;
}
-[data-engrid-theme=wwf] .white-box.align-items_center{
+[data-engrid-theme=wwf] .body-top>.showif-desktop.align-items_center{
align-items:center;
}
-[data-engrid-theme=wwf] .white-box.align-items_flex-start{
+[data-engrid-theme=wwf] .body-top>.showif-desktop.align-items_flex-start{
align-items:flex-start;
}
-[data-engrid-theme=wwf] .white-box>:first-child{
+[data-engrid-theme=wwf] .body-top>.showif-desktop>:first-child{
margin-top:1.75rem;
}
-[data-engrid-theme=wwf] .white-box>:last-child{
+[data-engrid-theme=wwf] .body-top>.showif-desktop>:last-child{
margin-bottom:1.75rem;
}
-[data-engrid-theme=wwf] .white-box h1{
+[data-engrid-theme=wwf] .body-top>.showif-desktop h1{
font-size:24px;
line-height:150%;
}
-[data-engrid-theme=wwf] .white-box h2{
+[data-engrid-theme=wwf] .body-top>.showif-desktop h2{
margin-bottom:1.5rem;
- margin-left:auto;
- margin-right:auto;
}
-[data-engrid-theme=wwf] .white-box>p{
+[data-engrid-theme=wwf] .body-top>.showif-desktop>p{
margin-top:0;
}
-[data-engrid-theme=wwf] .white-box>p:last-child{
+[data-engrid-theme=wwf] .body-top>.showif-desktop>p:last-child{
margin-bottom:0;
}
-[data-engrid-theme=wwf] .white-box .icon-next-label{
+[data-engrid-theme=wwf] .body-top>.showif-desktop{
+ margin-bottom:2rem;
+ margin-top:2rem;
+}
+[data-engrid-theme=wwf] .body-top>.showif-desktop .icon-next-label{
align-items:center;
display:flex;
- margin-bottom:1rem;
- max-width:350px;
+ margin-bottom:24px;
+ max-width:445px;
width:100%;
}
-[data-engrid-theme=wwf] .white-box .icon-next-label p{
- border-bottom:1px solid #e9e8da;
+[data-engrid-theme=wwf] .body-top>.showif-desktop .icon-next-label p{
flex-basis:calc(100% - 60px);
- margin-top:.5rem;
- padding-bottom:1rem;
+ margin:0;
position:relative;
- top:.5rem;
}
-[data-engrid-theme=wwf] .white-box .icon-next-label img{
+[data-engrid-theme=wwf] .body-top>.showif-desktop .icon-next-label img{
flex-basis:60px;
height:60px;
- margin-bottom:2rem;
- margin-right:1rem;
+ margin-right:20px;
width:60px;
}
[data-engrid-theme=wwf] .email-subscription-nudge{
margin-bottom:calc(2rem*var(--scale-down_20pct));
+ margin-top:0;
}
[data-engrid-theme=wwf] .email-subscription-nudge p:after{
color:#b71234;
@@ -8890,27 +9458,33 @@ body[data-engrid-debug]:before{
[data-engrid-theme=wwf] .en__field--emailAddress.en__field--validationFailed:not([data-freshaddress-safetosendstatus=invalid])>label{
color:var(--label_color);
}
+[data-engrid-theme=wwf] .inline-upsell-box :before{
+ background-color:var(--color_yellowstone);
+ border-radius:2px;
+ content:" ";
+ display:inline-block;
+ height:10px;
+ position:absolute;
+ right:20%;
+ top:0;
+ transform:rotate(45deg);
+ width:10px;
+}
[data-engrid-theme=wwf] .inline-upsell-box{
--p_font-size:var(--inline-upsell-box_font-size);
--p_line-height:var(--inline-upsell-box_line-height);
- --p_font-weight:400;
+ --p_font-weight:700;
align-items:center;
- background-color:#f7e6ed;
+ background-color:var(--color_yellowstone);
border-radius:4px;
- color:#c60060;
+ color:var(--color_punaluu_500);
display:flex;
- font-style:italic;
justify-content:center;
- margin-top:1.75rem;
- min-height:88px;
- padding:1rem 1ch;
+ margin-top:5px;
+ min-height:48px;
+ padding:.75rem 1rem;
text-align:center;
}
-[data-engrid-theme=wwf] .inline-upsell-box strong{
- font-size:var(--inline-upsell-box_strong_font-size);
- font-weight:700;
- line-height:var(--inline-upsell-box_strong_line-height);
-}
[data-engrid-theme=wwf] .inline-upsell-box>:first-child{
margin-top:0;
}
@@ -8931,25 +9505,32 @@ body[data-engrid-debug]:before{
--media-attribution__margin:0.25rem 0 0 0;
--media-attribution__background-color:#0000;
--media-attribution__padding:0;
- --media-attribution__color:#444;
+ --media-attribution__color:var(--color_punaluu_500);
--media-attribution__font-weight:400;
- --media-attribution__font-style:italic;
- --media-attribution__font-size:12px;
+ --media-attribution__font-style:normal;
+ --media-attribution__font-size:14px;
--media-attribution__line-height:110%;
left:0;
right:auto;
top:100%;
}
+[data-engrid-theme=wwf] .en__field--recurrfreq .en__field__element--radio{
+ --fields_spacing-inline:0.25rem;
+ --fields_spacing-block:0.25rem;
+}
[data-engrid-theme=wwf] .radio-to-buttons_donationAmt .en__field--donationAmt .en__field__element--radio{
- --fields_spacing-inline:0.9rem;
- --fields_spacing-block:1.2rem;
- --donation-amount__button_padding:1ch calc(1.2ch - 38px);
+ --fields_spacing-inline:0.25rem;
+ --fields_spacing-block:0.25rem;
+ --donation-amount__button_padding:14px 0;
}
[data-engrid-theme=wwf] .radio-to-buttons_donationAmt .en__field--donationAmt input[type=radio]+label{
outline:none;
}
+[data-engrid-theme=wwf] .radio-to-buttons_donationAmt .en__field--donationAmt .en__field__input--other :before{
+ color:red;
+}
[data-engrid-theme=wwf] .radio-to-buttons_donationAmt .en__field--donationAmt .en__field__input--other{
- --input_padding:var(--donation-amount__button_padding);
+ --input_padding:12.5px 0;
font-size:var(--donation-amount__button_font-size);
font-weight:700;
justify-content:center;
@@ -8975,7 +9556,7 @@ body[data-engrid-debug]:before{
left:2.25ch;
line-height:0;
position:absolute;
- top:calc(50% - 5px);
+ top:calc(50% - 2px);
}
[data-engrid-theme=wwf] .radio-to-buttons_donationAmt .en__field--donationAmt.en__field--radio.en__field--withOther--active .en__field__item:before{
--donation-amount__button_color:#fff;
@@ -8983,21 +9564,35 @@ body[data-engrid-debug]:before{
}
[data-engrid-theme=wwf] .body-banner img,[data-engrid-theme=wwf] .body-banner video{
background-color:#ccc;
+ border-radius:4px;
+}
+[data-engrid-theme=wwf] .sms-disclosure{
+ margin-top:-20px;
}
[data-engrid-theme=wwf] .en__field__notice,[data-engrid-theme=wwf] .sms-disclosure p{
color:#444;
font-size:14px;
font-weight:400;
line-height:130%;
+ margin-bottom:0;
margin-top:0;
}
[data-engrid-theme=wwf] .en__field__notice{
order:3;
}
-@-moz-document url-prefix(){
- [data-engrid-theme=wwf] .en__pg__select input{
- transform:scale(1.5);
- }
+[data-engrid-theme=wwf] .en__field__input{
+ --fields_spacing-block:0.5rem;
+}
+[data-engrid-theme=wwf] #ccv-tooltip{
+ color:var(--color_punaluu_400);
+ font-size:14px;
+ font-weight:600;
+ letter-spacing:.245px;
+ line-height:144%;
+ margin-top:2px;
+ -webkit-text-decoration:underline;
+ text-decoration:underline;
+ text-underline-offset:1px;
}
[data-engrid-theme=wwf]:not([data-engrid-demo])[data-engrid-page-type=premiumgift]:not([data-engrid-country=US]) .en__pgList[data-nogift] .en__pg__select input:before{
background-color:var(--radio_background-color_selected);
@@ -9012,8 +9607,8 @@ body[data-engrid-debug]:before{
display:none;
}
[data-engrid-theme=wwf] .en__pgList{
- --radio_height:20px;
- --radio_width:20px;
+ --radio_height:32px;
+ --radio_width:32px;
--radio_box-shadow_selected:inset 0 0 0 3px #fff;
--radio_border-width:1px;
}
@@ -9027,7 +9622,7 @@ body[data-engrid-debug]:before{
background-image:var(--maximize_my_donation_image);
background-position:50%;
background-repeat:no-repeat;
- background-size:contain;
+ background-size:cover;
height:100px;
}
@media screen and (max-width:628px){
@@ -9035,15 +9630,20 @@ body[data-engrid-debug]:before{
background-position:0;
}
}
-[data-engrid-theme=wwf] .en__pgList .en__pg--selected{
- --premium__item_background-color:#e9f7f6;
+[data-engrid-theme=wwf] .en__pgList .en__pg{
+ border:1px solid #0000;
}
-[data-engrid-theme=wwf] .en__pgList .en__pg__body{
+[data-engrid-theme=wwf] .en__pgList .en__pg .en__pg__body{
gap:0 max(var(--fields_spacing-inline) * 2, .5rem);
grid-template-areas:"en__pg__select en__pg__detail en__pg__display" ". en__pg__detail-mobile .";
grid-template-columns:min-content auto var(--premium__image_max-width);
padding:calc(var(--fields_spacing-block)) calc(var(--fields_spacing-inline)*2);
}
+[data-engrid-theme=wwf] .en__pgList .en__pg--selected{
+ --premium__item_background-color:var(--engrid__page_background-color);
+ border-color:var(--color_punaluu_500);
+ border-radius:4px;
+}
@media screen and (max-width:628px){
[data-engrid-theme=wwf] .en__pgList .en__pg__display{
grid-area:en__pg__detail-mobile;
@@ -9053,13 +9653,6 @@ body[data-engrid-debug]:before{
margin-top:.5rem;
min-width:auto;
}
- [data-engrid-theme=wwf] .en__pgList .en__pg:not(.en__pg--selected) .en__pg__body{
- --premium__image_max-width:0px;
- grid-template-columns:min-content auto 0;
- }
- [data-engrid-theme=wwf] .en__pgList .en__pg:not(.en__pg--selected) .en__pg__display{
- display:none;
- }
}
[data-engrid-theme=wwf] .en__pgList .en__pg__detail{
margin-bottom:4px;
@@ -9107,15 +9700,15 @@ body[data-engrid-debug]:before{
pointer-events:none;
}
[data-engrid-theme=wwf] .en__component--premiumgiftblock{
- --h2_font-size:20px;
- --h2_line-height:30px;
border-bottom:0;
border-left:0;
border-right:0;
margin-bottom:0;
}
[data-engrid-theme=wwf] .en__component--premiumgiftblock .en__pgList{
- --h2_font-weight:400;
+ --h2_font-weight:700;
+ --h2_font-size:var(--default_font-size);
+ --h2_line-height:160%;
}
[data-engrid-theme=wwf] .en__component--premiumgiftblock .en__pgList[data-non-us-donor][data-nogift] .en__pg:not(:last-child):not(.en__pg--selected){
filter:grayscale(1);
@@ -9156,8 +9749,10 @@ body[data-engrid-debug]:before{
}
[data-engrid-theme=wwf] .en__component--premiumgiftblock .en__pg__description{
--p_font-size:14px;
- --p_line-height:18.2px;
- max-width:238px;
+ --p_line-height:144%;
+ --p_font-weight:400;
+ margin-top:4px;
+ max-width:314px;
}
[data-engrid-theme=wwf] .en__component--premiumgiftblock [data-nogift] .en__pg:last-child .en__pg__description{
font-size:var(--h2_font-size);
@@ -9175,12 +9770,21 @@ body[data-engrid-debug]:before{
[data-engrid-theme=wwf]:not([data-engrid-country=US]) .en__pg:last-child .en__pg__description:after{
content:"We are unable to mail thank-you gifts to donors outside the United States and its territories and have selected the 'Maximize my donation' option for you.";
}
+[data-engrid-theme=wwf] .en__pgHeader{
+ font-size:var(--h2_font-size);
+ font-weight:var(--h2_font-weight);
+ line-height:var(--h2_line-height);
+}
[data-engrid-theme=wwf] .en__pgHeader .en__submit button:hover{
box-shadow:0 4px 12px #00000026;
}
[data-engrid-theme=wwf] .body-top>.en__component--copyblock:not([class*=box])>p:first-child{
margin-top:0;
}
+[data-engrid-theme=wwf] .body-top>.en__component--copyblock:not([class*=box])>p{
+ margin-block-end:1rem;
+ margin-block-start:1rem;
+}
[data-engrid-theme=wwf] .ecard-next-page-copy{
padding-left:min(var(--fields_spacing-inline) * 12, 10vw);
padding-right:min(var(--fields_spacing-inline) * 12, 10vw);
@@ -9204,18 +9808,22 @@ body[data-engrid-debug]:before{
}
[data-engrid-theme=wwf] .en__component--tweetcontactblock .en__tweetButton .en__tweetButton__sent a{
--button_color:#fff;
- --button_background-color:#006ea3;
+ --button_background-color:var(--color_acadia_400);
border:var(--button_border-width) solid var(--button_border-color);
cursor:default;
}
[data-engrid-theme=wwf] .en__component--tweetcontactblock .en__tweetButton .en__tweetButton__sent a:active,[data-engrid-theme=wwf] .en__component--tweetcontactblock .en__tweetButton .en__tweetButton__sent a:hover{
- background-color:#006ea3;
+ background-color:var(--color_acadia_400);
color:#fff;
}
[data-engrid-theme=wwf] .en__component--tweetcontactblock .en__twitterTarget__details span{
color:var(--label_color);
font-weight:var(--label_font-weight);
}
+[data-engrid-theme=wwf] .wrongcompany a{
+ -webkit-text-decoration:none;
+ text-decoration:none;
+}
[data-engrid-theme=wwf] .involved-action{
display:flex;
flex-flow:row nowrap;
@@ -9255,6 +9863,9 @@ body[data-engrid-debug]:before{
margin-bottom:0;
padding-bottom:0;
}
+[data-engrid-theme=wwf] .involved-action .involved-action__header a{
+ text-decoration-line:none;
+}
[data-engrid-theme=wwf] .involved-action__image{
align-items:center;
display:flex;
@@ -9368,6 +9979,15 @@ body[data-engrid-debug]:before{
position:absolute;
text-transform:uppercase;
}
+[data-engrid-theme=wwf] h2 a{
+ font-size:inherit;
+ font-weight:inherit;
+ line-height:inherit;
+}
+[data-engrid-theme=wwf] h1.small{
+ font-size:48px;
+ line-height:var(--h2_line-height);
+}
@media (hover:none){
[data-engrid-theme=wwf] .tippy-box:after{
content:"x";
@@ -9455,63 +10075,104 @@ body[data-engrid-debug]:before{
}
@media screen and (max-width:600px){
[data-engrid-theme=wwf]{
- --default_font-size:15px;
+ --default_font-size:16px;
+ --a_font-size:18px;
--input_font-size:16px;
--default_line-height:24px;
- --h1_font-size:24px;
- --h1_line-height:33.6px;
+ --h1_font-size:52px;
+ --h2_font-size:21px;
--engrid__body_margin:0px;
- --engrid__page_background-color:#fff;
+ --engrid__page_background-color:var(--engrid__body-main_background-color);
--engrid__content-footer_background-color:#0000;
- --engrid__body-main_padding:13px 20px;
- --engrid__body-banner_padding:0 20px;
- --engrid__body-title_padding:0 20px;
- --engrid__body-top_padding:0 20px;
- --media-attribution__padding:0 20px;
- --button_font-size:20px;
- --button_line-height:30px;
+ --engrid__body-main_padding:13px;
+ --engrid__body-banner_padding:0 0;
+ --engrid__body-title_padding:0 24px;
+ --engrid__body-title_margin:0 0 16px 0;
+ --engrid__body-top_padding:0 13px;
+ --button_font-size:18px;
+ --submit__button_font-size:18px;
+ --button_line-height:140%;
+ --donation-amount__button_font-size:18px;
--recurring-frequency__button_font-size:16px;
--recurring-frequency__button_line-height:24px;
--click-to-expand__cta-image_width:96px;
--click-to-expand__cta-image_height:13px;
- --p_line-height:24px;
- --label_font-size:14px;
- --label_line-height:18.2px;
- --radio_height:20px;
- --radio_width:20px;
+ --p_line-height:160%;
+ --radio_height:32px;
+ --radio_width:32px;
--radio_box-shadow_selected:inset 0 0 0 3px #fff;
--radio_border-width:1px;
- --checkbox_content_checked:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='11' viewBox='0 0 20 15'%3E%3Cpath style='stroke:none;fill-rule:nonzero;fill:%23fff;fill-opacity:1' d='m12.75 6.117-5.914 6.117-5.5-5.687L0 7.93l3.418 3.535 3.418 3.539 6.582-6.813L20 1.383 18.664 0Zm0 0'/%3E%3C/svg%3E");
+ }
+ [data-engrid-theme=wwf] .minimal-header-logo{
+ background:#fff;
+ display:block;
+ }
+ [data-engrid-theme=wwf] .minimal-header-logo .no-header-wwf-logo{
+ height:100px;
+ max-width:80px;
+ width:80px;
+ }
+ [data-engrid-theme=wwf] .minimal-header-logo+header{
+ display:none;
+ }
+ [data-engrid-theme=wwf] .body-main a{
+ text-underline-offset:4px;
+ }
+ [data-engrid-theme=wwf] .body-banner img,[data-engrid-theme=wwf] .body-banner video{
+ border-radius:0;
+ }
+ [data-engrid-theme=wwf] figure.media-with-attribution figattribution{
+ --media-attribution__padding:0 24px;
}
[data-engrid-theme=wwf] .en__contacts:not(.en__contacts--hideCheck) .en__contactDetails__select:checked+.en__contactDetails__rows:after{
left:3px;
top:6.5px;
}
+ [data-engrid-theme=wwf]{
+ --checkbox_content_checked:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='11' viewBox='0 0 20 15'%3E%3Cpath style='stroke:none;fill-rule:nonzero;fill:%23fff;fill-opacity:1' d='m12.75 6.117-5.914 6.117-5.5-5.687L0 7.93l3.418 3.535 3.418 3.539 6.582-6.813L20 1.383 18.664 0Zm0 0'/%3E%3C/svg%3E");
+ }
[data-engrid-theme=wwf] #engrid>.en__component--advrow,[data-engrid-theme=wwf] form>.en__component--advrow{
grid-template-rows:[page-start page-alert-start] min-content [page-alert-end content-header-start] min-content [content-header-end body-headerOutside-start] min-content [body-headerOutside-end body-header-start] min-content [body-header-end body-banner-start] min-content [body-banner-end body-bannerOverlay-start] min-content [body-bannerOverlay-end body-title-start] min-content [body-title-end body-top-start] min-content [body-top-end body-side-start] min-content [body-side-end body-main-start] min-content [body-main-end body-bottom-start] min-content [body-bottom-end body-footer-start] min-content [body-footer-end body-footerOutside-start] min-content [body-footerOutside-end content-footerSpacer-start] minmax(0, 1fr) [content-footerSpacer-end content-preFooter-start] min-content [content-preFooter-end content-footer-start] min-content [content-footer-end page-backgroundImage-start] min-content [page-backgroundImage-end page-backgroundImageOverlay-start] min-content [page-backgroundImageOverlay-end page-end page-customCode-start] min-content [page-customCode-end];
}
[data-engrid-theme=wwf][data-engrid-layout] .content-header{
- margin-bottom:20px;
+ margin-bottom:0;
}
[data-engrid-theme=wwf] .radio-to-buttons_donationAmt .en__field--donationAmt .en__field__element--radio{
- --fields_spacing-inline:0.62rem;
- --fields_spacing-block:0.9rem;
+ --fields_spacing-inline:0.25rem;
+ --fields_spacing-block:5.33px;
}
[data-engrid-theme=wwf][data-engrid-transaction-recurring-frequency] .radio-to-buttons_donationAmt .en__field--donationAmt div:not(.en__field__item--other) .en__field__label--item:after{
- font-size:15px;
+ font-size:15px !important;
}
[data-engrid-theme=wwf] .radio-to-buttons_recurrfreq .en__field--recurrfreq.en__field--radio input[type=radio][value=MONTHLY]+label:before{
width:16px;
}
[data-engrid-theme=wwf] .give-by-select-wrapper{
--radio-to-buttons__button_count:1;
- }
- [data-engrid-theme=wwf] .en__component--premiumgiftblock .en__pg__description{
- max-width:100%;
+ margin:8px 0;
}
[data-engrid-theme=wwf] .en__component--premiumgiftblock{
+ --fields_spacing-block:8px;
+ --fields_spacing-inline:4px;
+ }
+ [data-engrid-theme=wwf] .en__component--premiumgiftblock .en__pgList .en__pg .en__pg__body{
--h2_font-size:16px;
- --h2_line-height:24px;
+ --h2_line-height:160%;
+ gap:0 8px;
+ }
+ [data-engrid-theme=wwf] .en__component--premiumgiftblock .en__pg__detail{
+ margin-bottom:0;
+ margin-left:4px;
+ }
+ [data-engrid-theme=wwf] .en__component--premiumgiftblock h2+.en__pg__description{
+ display:none;
+ }
+ [data-engrid-theme=wwf] .en__component--premiumgiftblock .en__pg--selected{
+ --premium__item_background-color:#fefcf9;
+ }
+ [data-engrid-theme=wwf] .en__component--premiumgiftblock .en__pg__image:hover{
+ position:static;
+ transform:none;
}
[data-engrid-theme=wwf] .inline-upsell-box{
border-radius:0;
@@ -9524,16 +10185,8 @@ body[data-engrid-debug]:before{
[data-engrid-theme=wwf] .inline-upsell-box svg{
--inline-upsell-box-svg_margin-left:30px;
}
- [data-engrid-theme=wwf] .grey-box p{
- --p_font-size:12px;
- --p_line-height:19px;
- }
- [data-engrid-theme=wwf] .white-box{
- padding-left:1.5rem;
- padding-right:1.5rem;
- }
- [data-engrid-theme=wwf] .body-title{
- margin-bottom:1rem;
+ [data-engrid-theme=wwf] .grey-box{
+ --p_font-size:14px;
}
[data-engrid-theme=wwf] .body-main{
border:none;
@@ -9548,15 +10201,27 @@ body[data-engrid-debug]:before{
width:100%;
}
}
-@media screen and (max-width:400px){
- [data-engrid-theme=wwf]{
- --h2_font-size:16px;
- --h2_line-height:24px;
+@media screen and (max-width:500px){
+ [data-engrid-theme=wwf] .alternative-donation-methods p:first-child{
+ margin:1rem 0 2rem;
+ }
+ [data-engrid-theme=wwf] .alternative-donation-methods p:last-child{
+ gap:12.34px;
+ grid-template-columns:1fr 77px 146.5px 77px 1fr;
}
}
[data-engrid-theme=wwf][data-engrid-theme]:not(#en__pagebuilder):not([data-engrid-debug])[data-conditonally-hide-show-digital-wallet-elements][data-engrid-transaction-recurring=n][data-engrid-payment-type-option-paypal-one-touch=true] .en__field--giveBySelect.paypal.force-paypal-visibility{
display:inline-block !important;
}
+[data-engrid-theme=wwf] .giveBySelect-card{
+ margin-bottom:-.5rem;
+}
+[data-engrid-theme=wwf] .giveBySelect-card label{
+ margin-bottom:4px;
+}
+[data-engrid-theme=wwf] .giveBySelect-card .en__field:not(:first-child){
+ flex-basis:50%;
+}
[data-engrid-theme=wwf] .en__tweetContact[disabled]{
filter:grayscale(1);
opacity:.5;
@@ -9691,9 +10356,9 @@ body[data-engrid-debug]:before{
position:relative;
}
[data-engrid-theme=wwf] button[data-balloon]:after{
- background:#f6f5f3;
+ background:#f3e7d9;
border-radius:3px;
- color:#1f2937;
+ color:var(--color_punaluu_400);
content:attr(data-balloon);
display:none;
font-size:14px;
@@ -9729,6 +10394,9 @@ body[data-engrid-debug]:before{
width:0;
z-index:10;
}
+[data-engrid-theme=wwf][data-engrid-payment-type=ach] .multistep-submit{
+ padding-top:60px;
+}
[data-engrid-theme=wwf][data-engrid-payment-type=ach] button[data-balloon]{
margin-top:90px;
}
@@ -9755,7 +10423,6 @@ body[data-engrid-debug]:before{
margin:0;
}
[data-engrid-theme=wwf][data-engrid-layout=leftleft1col]{
- --engrid__page_background-color:#fff;
--engrid__body-title_background-color:#fff;
--engrid__body-top_background-color:#fff;
--engrid__body_margin:0;
@@ -9814,11 +10481,6 @@ body[data-engrid-debug]:before{
width:100%;
}
}
-@media screen and (min-width:700px) and (max-width:1023px){
- [data-engrid-theme=wwf][data-engrid-layout=leftleft1col]{
- --engrid__page_background-color:#f3f7ed;
- }
-}
@media screen and (min-width:1024px){
[data-engrid-theme=wwf]:not(#en__pagebuilder)[data-engrid-layout=leftleft1col] .page-backgroundImage{
grid-column:rpc / pc;
@@ -9873,6 +10535,24 @@ body[data-engrid-debug]:before{
[data-engrid-theme=wwf][data-engrid-venmo-enabled=true] .en__field--giveBySelect.venmo{
display:block;
}
+[data-engrid-theme=wwf] .showif-ach-selected,[data-engrid-theme=wwf] .showif-card-selected,[data-engrid-theme=wwf] .showif-paypal-selected,[data-engrid-theme=wwf][data-engrid-payment-type=paypal] .hideif-paypal-selected{
+ display:none;
+}
+[data-engrid-theme=wwf][data-engrid-payment-type=paypal] .showif-paypal-selected{
+ display:block !important;
+}
+[data-engrid-theme=wwf][data-engrid-payment-type=card] .hideif-card-selected,[data-engrid-theme=wwf][data-engrid-payment-type=visa] .hideif-card-selected{
+ display:none;
+}
+[data-engrid-theme=wwf][data-engrid-payment-type=card] .showif-card-selected,[data-engrid-theme=wwf][data-engrid-payment-type=visa] .showif-card-selected{
+ display:block !important;
+}
+[data-engrid-theme=wwf][data-engrid-payment-type=ach] .hideif-ach-selected{
+ display:none;
+}
+[data-engrid-theme=wwf][data-engrid-payment-type=ach] .showif-ach-selected{
+ display:block !important;
+}
[data-engrid-theme=wwf][data-engrid-subtheme=multistep]{
--fields_spacing-inline:5px;
--fields_spacing-block:4px;
@@ -10243,12 +10923,12 @@ body[data-engrid-debug]:before{
[data-engrid-theme=wwf][data-engrid-subtheme=multistep] .en__component--copyblock a{
color:var(--color_primary);
}
-[data-engrid-theme=wwf][data-engrid-subtheme=multistep][data-engrid-embedded]{
- height:100vh;
-}
[data-engrid-theme=wwf][data-engrid-subtheme=multistep][data-engrid-embedded] #launcher{
display:none;
}
+[data-engrid-theme=wwf][data-engrid-subtheme=multistep][data-engrid-embedded]{
+ height:100vh;
+}
[data-engrid-theme=wwf][data-engrid-subtheme=multistep][data-engrid-embedded] form.en__component{
display:grid;
grid-auto-flow:column;
@@ -10391,13 +11071,15 @@ body[data-engrid-debug]:before{
text-align-last:left;
}
[data-engrid-theme=wwf][data-engrid-subtheme=multistep] .padlock-icon{
- align-items:center;
- display:flex;
margin-bottom:20px;
}
[data-engrid-theme=wwf][data-engrid-subtheme=multistep] .padlock-icon h2{
margin:0;
}
+[data-engrid-theme=wwf][data-engrid-subtheme=multistep] .padlock-icon{
+ align-items:center;
+ display:flex;
+}
[data-engrid-theme=wwf][data-engrid-subtheme=multistep] .padlock-icon img{
margin:0 !important;
}
@@ -10595,7 +11277,7 @@ body[data-engrid-debug]:before{
position:relative;
}
[data-engrid-theme=wwf]:not([data-engrid-subtheme]) .en__component--formblock.give-by-select-wrapper .en__field .en__field__element.en__field__element--radio .en__field__item.give-by-select{
- --fields_spacing-block:0.9rem;
+ --fields_spacing-block:0.25rem;
}
@media screen and (min-width:601px){
[data-engrid-theme=wwf]:not([data-engrid-subtheme]):not(#en__pagebuilder):not([data-engrid-debug]) .radio-to-buttons_recurrfreq.radio-to-buttons_recurrfreq_to-tabs .en__field--recurrfreq{
@@ -10700,1556 +11382,426 @@ body[data-engrid-debug]:before{
[data-engrid-theme=wwf][data-engrid-page-type=p2pcheckout] .grey-box,[data-engrid-theme=wwf][data-engrid-page-type=p2pdonation] .grey-box{
margin-bottom:10px;
}
-#footer,#footer a,#footer abbr,#footer acronym,#footer address,#footer applet,#footer b,#footer big,#footer blockquote,#footer caption,#footer center,#footer cite,#footer code,#footer dd,#footer del,#footer dfn,#footer div,#footer dl,#footer dt,#footer em,#footer fieldset,#footer form,#footer h1,#footer h2,#footer h3,#footer h4,#footer h5,#footer h6,#footer i,#footer iframe,#footer img,#footer ins,#footer kbd,#footer label,#footer legend,#footer li,#footer object,#footer ol,#footer p,#footer pre,#footer q,#footer s,#footer samp,#footer small,#footer span,#footer strike,#footer strong,#footer sub,#footer sup,#footer table,#footer tbody,#footer td,#footer tfoot,#footer th,#footer thead,#footer tr,#footer tt,#footer u,#footer ul,#footer var,#header,#header a,#header abbr,#header acronym,#header address,#header applet,#header b,#header big,#header blockquote,#header caption,#header center,#header cite,#header code,#header dd,#header del,#header dfn,#header div,#header dl,#header dt,#header em,#header fieldset,#header form,#header h1,#header h2,#header h3,#header h4,#header h5,#header h6,#header i,#header iframe,#header img,#header ins,#header kbd,#header label,#header legend,#header li,#header object,#header ol,#header p,#header pre,#header q,#header s,#header samp,#header small,#header span,#header strike,#header strong,#header sub,#header sup,#header table,#header tbody,#header td,#header tfoot,#header th,#header thead,#header tr,#header tt,#header u,#header ul,#header var,body,html{
- border:0;
- font:inherit;
- font-size:100%;
- margin:0;
- padding:0;
- vertical-align:initial;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug]) .quiz-error,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-quiz-answer=correct]) .showif-correct,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-quiz-answer=incorrect]) .showif-incorrect,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-quiz-answer]) .showif-answered,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-quiz-answer]):has(.en__component--svblock) .en__submit,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-quiz-score="0-25"]) .showif-score0-25,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-quiz-score="25-50"]) .showif-score25-50,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-quiz-score="50-75"]) .showif-score50-75,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-quiz-score="75-100"]) .showif-score75-100,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug])[data-engrid-quiz-answer=correct] .hideif-correct,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug])[data-engrid-quiz-answer=incorrect] .hideif-incorrect,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug])[data-engrid-quiz-answer] .button-quiz-answer,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug])[data-engrid-quiz-answer] .hideif-answered{
+ display:none;
}
-
-#footer ol,#footer ul,#header ol,#header ul{
- list-style:none;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz]:not(#en__pagebuilder):not([data-engrid-debug]):not([data-engrid-show-form]):has(.quiz-signup-form){
+ opacity:0;
+ visibility:hidden;
}
-
-#footer blockquote,#footer q,#header blockquote,#header q{
- quotes:none;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .quiz-input-disabled,[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .quiz-input-disabled+label,[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .quiz-input-disabled+span.en__imageSelectField__label{
+ cursor:not-allowed;
+ opacity:.7;
+ pointer-events:none;
}
-
-#footer blockquote:after,#footer blockquote:before,#footer q:after,#footer q:before,#header blockquote:after,#header blockquote:before,#header q:after,#header q:before{
- content:none;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz]{
+ --engrid__body_margin:0;
+ --engrid__body-main_padding:60px 15%;
+ --engrid__body-main_background-color:#f8f8f8;
}
-
-#footer table,#header table{
- border-collapse:collapse;
- border-spacing:0;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz]#en__pagebuilder .body-title,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]#en__pagebuilder .body-top,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]#en__pagebuilder .content-footer,[data-engrid-theme=wwf][data-engrid-subtheme=quiz]#en__pagebuilder .content-header{
+ display:none !important;
}
-@font-face{
- font-display:swap;
- font-family:opensansregular;
- font-style:normal;
- font-weight:400;
- src:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/opensans-regular-webfont.woff2) format("woff2"), url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/opensans-regular-webfont.woff) format("woff");
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__component--imageblock:has(+.en__component--svblock) img{
+ margin:0 0 16px;
}
-@font-face{
- font-display:swap;
- font-family:opensansregular;
- font-style:italic;
- font-weight:400;
- src:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/opensans-italic-webfont.woff2) format("woff2"), url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/opensans-italic-webfont.woff) format("woff");
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__component--svblock{
+ align-self:stretch;
}
-@font-face{
- font-display:swap;
- font-family:opensansregular;
- font-style:normal;
- font-weight:700;
- src:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/opensans-bold-webfont.woff2) format("woff2"), url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/opensans-bold-webfont.woff) format("woff");
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__submit button{
+ min-width:200px;
}
-@font-face{
- font-display:swap;
- font-family:opensansregular;
- font-style:normal;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--survey h3,[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--survey>label{
+ align-items:flex-start;
+ display:flex;
+ font-size:26px;
font-weight:600;
- src:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/opensans-semibold-webfont.woff2) format("woff2"), url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/opensans-semibold-webfont.woff) format("woff");
+ line-height:1.375;
+ margin:0;
+ text-align:left;
}
-@font-face{
- font-display:swap;
- font-family:wwfregular;
- font-style:normal;
- font-weight:400;
- src:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/wwf-webfont.woff2) format("woff2"), url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/wwf-webfont.woff) format("woff");
+@media screen and (max-width:1024px){
+ [data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--survey h3,[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--survey>label{
+ font-size:20px;
+ }
}
-#footer *,#header *{
- *behavior:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/boxsizing.htc);
- word-wrap:break-word;
- box-sizing:border-box;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect{
+ padding:0;
}
-
-#footer,#header{
- -webkit-font-smoothing:antialiased;
- background:#fff;
- color:#444;
- font:15px/1.6 OpenSansRegular,Helvetica,Arial,sans-serif;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .en__field__element{
+ align-items:normal;
+ display:grid;
+ gap:10px;
+ grid-template-columns:repeat(2, 1fr);
+ margin-left:0;
+ margin-top:10px;
+ max-width:380px;
}
-
-#footer a,#header a{
- color:#006ea5;
- transition:all .25s ease-in-out;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .en__field__item{
+ border:2px solid #000;
+ padding:.5rem;
}
-
-#footer .screen-reader,#header .screen-reader{
- display:block !important;
- left:-9999px !important;
- position:absolute !important;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .en__field__item :not(:has(.quiz-input-disabled)) img{
+ padding:.5rem;
+ transition:all .5s cubic-bezier(.545, .03, .395, .965);
}
-
-#footer button,#footer label,#header button,#header label{
- cursor:pointer;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .en__field__item :not(:has(.quiz-input-disabled)):hover img{
+ transform:scale(1.05);
}
-
-#footer button,#footer input,#footer select,#footer textarea,#header button,#header input,#header select,#header textarea{
- font:inherit;
- margin:0;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .en__field__item:has(.quiz-input-disabled),[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .en__field__item:has(.quiz-input-disabled) img{
+ cursor:not-allowed;
}
-
-#footer button,#header button{
- border:none;
- overflow:visible;
- padding:0;
- width:auto;
-}
-
-#header .h3,#header h3{
- font:700 15px/1.33333333 OpenSansRegular,Helvetica,Arial,sans-serif;
- margin-bottom:2px;
-}
-
-#header .svg-icon{
- fill:currentColor;
- display:inline-block;
- height:24px;
- vertical-align:middle;
- width:24px;
-}
-
-#header .wrapper{
- margin:0 auto;
- max-width:1000px;
-}
-
-#footer .alt,#header .alt{
- display:block;
- overflow:hidden;
- text-indent:-9999px;
-}
-
-#header .form-inline{
- position:relative;
-}
-
-#header .form-inline input{
- background-color:#fff;
- border:1px solid #ccc;
- border-radius:5px;
- box-shadow:inset 0 1px 4px #00000026;
- height:38px;
- padding:0 40px 0 9px;
- transition:all .25s ease-in-out;
- width:100%;
-}
-
-#header .form-inline input:focus{
- box-shadow:inset 0 1px 4px #00000026,0 0 5px #006ea5;
- outline:none;
-}
-
-#header .form-inline ::-webkit-input-placeholder{
- color:#777;
- font-style:italic;
-}
-
-#header .form-inline :-moz-placeholder{
- color:#777;
- font-style:italic;
-}
-
-#header .form-inline .placeholder{
- color:#777;
- font-style:italic;
-}
-
-#header .form-inline button{
- background-color:#312626;
- border-radius:50%;
- height:32px;
- margin-top:-16px;
- position:absolute;
- right:5px;
- top:50%;
- width:32px;
-}
-
-#header .form-inline button .ico{
- color:#fff;
- display:block;
- font-size:16px;
- padding-left:2px;
- text-align:center;
-}
-
-#header .form-inline button .ico-search{
- padding-left:0;
-}
-
-#header .form-inline button .svg-icon{
- color:#fff;
- height:28px;
- left:50%;
- position:absolute;
- top:50%;
- transform:translate(-50%, -50%);
- width:28px;
-}
-
-#header .form-inline button .svg-icon.icon-arrow{
- height:20px;
- width:20px;
-}
-
-#header .gutter-left-4{
- margin-left:4%;
-}
-
-#header .gutter-right-4{
- margin-right:4%;
-}
-
-#footer .contain:after{
- clear:both;
- content:".";
- display:block;
- height:0;
- visibility:hidden;
-}
-
-#footer .gutter-top-in-fixed-3{
- padding-top:30px;
-}
-@media screen and (max-width:600px){
- #footer .gutter-top-in-fixed-3{
- padding-top:0;
- }
-}
-
-#footer .gutter-bottom-in-fixed-4{
- padding-bottom:40px;
-}
-
-#footer .gutter-horiz-in{
- padding-left:1.53061225%;
- padding-right:1.53061225%;
-}
-
-@media only screen and (max-width:767px){
- #footer .gutter-horiz-in{
- padding-left:3.06122449%;
- padding-right:3.06122449%;
- }
-}
-#footer .gutter-top-in-2{
- padding-top:2%;
-}
-
-#footer .gutter-top-in-3{
- padding-top:3%;
-}
-
-#footer .gutter-bottom-3{
- margin-bottom:3%;
-}
-
-#footer .gutter-left-2{
- margin-left:2%;
-}
-
-#footer .gutter-right-2{
- margin-right:2%;
-}
-
-#footer strong{
- font-weight:700;
-}
-#header{
- background:#fff;
- margin-bottom:55px;
- position:relative;
- z-index:11;
-}
-
-#header #header-skip-navigation{
- clip:rect(1px, 1px, 1px, 1px);
- height:1px;
- left:100px;
- overflow:hidden;
- position:absolute;
- white-space:nowrap;
- width:1px;
-}
-
-#header #header-skip-navigation:focus{
- clip:auto;
- background-color:#0000004d;
- height:auto;
- left:25vw;
- overflow:auto;
- position:absolute;
- top:16vh;
- width:auto;
-}
-
-@media screen and (max-width:1199px) and (min-width:768px){
- #header #header-skip-navigation:focus{
- left:13.5vw;
- top:.5vh;
- }
-}
-@media screen and (min-width:1200px){
- #header #header-skip-navigation:focus{
- left:9vw;
- }
-}
-#header .logo-header{
- background:#fff;
- margin:0;
- padding:12px 0 15px;
- position:relative;
- transform:translateZ(0);
- z-index:3;
-}
-
-#header .logo-header .control{
- color:#444;
-}
-
-#header .logo{
- background:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/logo-mobile.png) no-repeat;
- height:76px;
- margin:0 0 0 15px;
- width:51px;
-}
-
-@media only screen and (-webkit-min-device-pixel-ratio:2){
- #header .logo{
- background-image:url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/logo-mobile-x2.png);
- background-size:51px 76px;
- }
-}
-#header .control{
- background-color:initial;
- color:#fff;
- cursor:default;
- display:block;
-}
-
-#header .control .ico{
- display:block;
- font-size:41px;
-}
-
-#header .control .svg-icon.-open{
- display:block;
-}
-
-#header .control .svg-icon.-close{
- display:none;
-}
-
-#header .control:hover{
- -webkit-text-decoration:none;
- text-decoration:none;
-}
-
-#header .control.control-accordion:focus{
- outline:2px solid Highlight;
-}
-
-#header .control-expand{
- bottom:0;
- margin:auto 0;
- position:absolute;
- right:33px;
- top:0;
-}
-
-#header .control-expand,#header .control-expand .svg-icon{
- height:40px;
- width:40px;
-}
-
-#header .expanded .svg-icon.-open{
- display:none;
-}
-
-#header .expanded .svg-icon.-close{
- display:block;
-}
-
-#header .dropdown{
- background-color:#000;
- bottom:100%;
- max-width:425px;
- overflow:auto;
- padding-bottom:55px;
- position:fixed;
- top:-200%;
- transition:all .25s ease-in-out;
- width:100%;
- z-index:3;
-}
-
-@media screen and (min-width:425px){
- #header .dropdown{
- bottom:0;
- right:-525px;
- top:0;
- }
-}
-#header .dropdown-expanded{
- bottom:0;
- top:0;
-}
-
-@media screen and (min-width:412px){
- #header .dropdown-expanded{
- right:0;
- }
-}
-#header .dropdown-header{
- background-color:#222;
- padding:25px 0 24px;
- position:relative;
- text-align:center;
-}
-
-#header .dropdown-header .control-expand{
- right:16px;
-}
-
-#header .dropdown-title{
- color:#fff;
- font-size:14px;
- font-weight:700;
- text-transform:uppercase;
-}
-
-#header .nav-items{
- border-top:1px solid #222;
- margin-top:15px;
-}
-
-#header .nav{
- overflow:hidden;
- width:100%;
-}
-
-#header .nav.-tablet{
- display:none;
-}
-
-#header .nav-item-title,#header a{
- color:#fff;
- display:block;
- font-size:16px;
- margin:0;
-}
-#header .primary-nav .control,#header .utility-nav .control{
- width:100%;
-}
-
-#header .primary-nav .control .svg-icon,#header .utility-nav .control .svg-icon{
- height:15px;
- width:15px;
-}
-
-#header .nav-group,#header .nav-item,#header .nav-view-all{
- border-bottom:1px solid #222;
-}
-
-#header .nav-item{
- padding:0 30px;
-}
-
-#header .nav-item-title-group{
- align-items:center;
- display:flex;
- justify-content:space-between;
-}
-
-#header .nav-item-title{
- font-weight:700;
- padding:20px 0;
- text-transform:uppercase;
-}
-
-#header .utility-nav .nav-item-title{
- color:#ccc;
- font-size:19px;
- text-transform:none;
-}
-
-#header .nav-group{
- padding:10px 0;
-}
-
-#header .nav-group:last-child{
- border:none;
-}
-
-#header .nav-group.nav-more-info{
- max-width:20vw;
-}
-
-@media screen and (max-width:767px){
- #header .nav-group.nav-more-info{
- display:none;
- }
-}
-#header .nav-group .nav-header{
- font-size:18px;
- font-weight:700;
- padding-bottom:10px;
-}
-
-@media screen and (max-width:767px){
- #header .nav-group .nav-header{
- color:#fff;
- -webkit-text-decoration:underline;
- text-decoration:underline;
- }
-}
-#header .nav-view-all{
- color:#fff;
- font-style:italic;
- padding-bottom:20px;
- text-transform:capitalize;
-}
-
-#header .nav-view-all .svg-icon{
- height:15px;
- margin-left:5px;
- width:15px;
-}
-
-#header .view-all{
- display:none;
-}
-
-#header .nav-link:not(.nav-view-all){
- padding:10px 0 10px 10px;
-}
-
-#header .utility-search-ctas .nav-actions,#header .utility-search-ctas .search{
- display:none;
-}
-
-#header .search-ctas form{
- padding:15px 30px;
-}
-
-#header .search-ctas .search .form-inline button{
- margin-top:-7px;
-}
-
-#header .search-ctas .search label{
- color:#fff;
-}
-
-#header #nav-search .form-inline input{
- border-radius:3px;
- font-size:15px;
- height:44px;
-}
-
-#header #nav-search .form-inline input::placeholder{
- color:#000;
-}
-
-#header #nav-search .form-inline button{
- background:0 0;
- margin-top:-7px;
- right:0;
- width:44px;
-}
-
-#header #nav-search .form-inline button .ico,#header #nav-search .form-inline button .svg-icon{
- color:#000;
-}
-
-#header #nav-search .form-inline button .svg-icon{
- height:36px;
- width:36px;
-}
-
-#header .nav-actions{
- display:flex;
-}
-
-#header .nav-actions.-full-width{
- bottom:-55px;
- left:0;
- position:absolute;
- z-index:1;
-}
-
-#header .nav-actions.-full-width .nav-item{
- padding:0;
-}
-
-#header .nav-actions.-full-width .action{
- line-height:55px;
- text-align:center;
-}
-
-#header .nav-actions.-split .nav-item:first-child{
- padding-right:5px;
-}
-
-#header .nav-actions.-split .nav-item:last-child{
- padding-left:5px;
-}
-
-#header .nav-actions.-split .action{
- border-radius:2px;
- display:flex;
- flex-wrap:wrap;
- justify-content:space-between;
- line-height:44px;
-}
-
-#header .nav-actions.-split .action .control-accordion:after{
- border-radius:2px 2px 0 0;
- bottom:-5px;
- content:"";
- left:0;
- position:absolute;
- top:0;
- width:100%;
- z-index:-1;
-}
-
-#header .nav-actions.-split .action-link{
- font-size:19px;
- padding-left:15px;
-}
-
-@media screen and (max-width:346px){
- #header .nav-actions.-split .action-link{
- padding-left:10px;
- }
-}
-#header .nav-actions .nav-item{
- border:none;
- width:50%;
-}
-
-#header .nav-actions .action{
- font-size:19px;
- position:relative;
-}
-
-#header .nav-actions .action.action-primary,#header .nav-actions .action.action-primary .control-accordion.expanded:after,#header .nav-actions .action.action-primary .nav-item-dropdown{
- background:#de3831;
-}
-
-#header .nav-actions .action.action-primary .nav-item-dropdown{
- background-color:#000;
- border:5px solid #de3831;
-}
-
-#header .nav-actions .action.action-secondary,#header .nav-actions .action.action-secondary .control-accordion.expanded:after,#header .nav-actions .action.action-secondary .nav-item-dropdown{
- background:#d55c19;
-}
-
-#header .nav-actions .action.action-secondary .nav-item-dropdown{
- background-color:#000;
- border:5px solid #d55c19;
- transform:translateX(-50vw) translateX(24px);
-}
-
-@media screen and (min-width:412px){
- #header .nav-actions .action.action-secondary .nav-item-dropdown{
- transform:translateX(-175px);
- }
-}
-#header .nav-actions .action-link{
- flex-grow:1;
- font-weight:700;
- text-transform:uppercase;
-}
-
-#header .nav-actions .control .svg-icon{
- border-left:1px solid #fff6;
- height:20px;
- padding:2px 0;
- width:44px;
-}
-
-@media screen and (max-width:346px){
- #header .nav-actions .control .svg-icon{
- height:20px;
- width:25px;
- }
-}
-#header .nav-actions .nav-item-accordion-panel{
- margin-top:10px;
- width:100%;
-}
-
-#header .nav-actions .nav-item-dropdown{
- font-size:15px;
- line-height:1.5;
- padding:12px 23px;
- width:calc(100vw - 60px);
- z-index:3;
-}
-
-@media screen and (min-width:412px){
- #header .nav-actions .nav-item-dropdown{
- width:352px;
- }
-}
-#header .nav-actions .nav-item-dropdown a{
- font-weight:400;
- padding:10px 0;
- position:relative;
-}
-
-.no-js #header .nav-actions .control-accordion:hover+.nav-item-accordion-panel[hidden]{
- display:block;
-}
-
-.no-js #header .nav-actions .control-accordion:hover+.nav-item-accordion-panel .nav-item-dropdown{
- opacity:1;
- visibility:visible;
-}
-
-@media only screen and (max-width:767px){
- #header .nav-item-accordion-panel{
- max-height:0;
- }
-
- body.freeze #header .logo-header:before,body.freeze #header .nav-actions.-full-width:before,body.freeze:before{
- background-color:#000;
- bottom:0;
- content:"";
- left:0;
- opacity:.5;
- position:absolute;
- right:0;
- top:0;
- z-index:5;
- }
-
- body.freeze{
- overflow:hidden;
- }
-
- #header .utility-nav .nav-item-title,#header .utility-nav a{
- font-size:15px;
- }
-}
-@media only screen and (min-width:768px){
- #header{
- background:#000 url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/bg-header-pattern.png) 50% 0;
- margin:0;
- padding:20px 10px 7px;
- }
-}
-@media only screen and (min-width:768px) and (min-width:1200px){
- #header{
- padding:20px 10px 12px;
- }
-}
-@media only screen and (min-width:768px){
-
- #header .control-expand,#header .logo-header .control .svg-icon,#header .primary-nav .control .svg-icon,#header .utility-nav .control .svg-icon{
- display:none;
- }
-
- #header .control-accordion:after{
- bottom:-5px;
- content:"";
- left:0;
- position:absolute;
- top:100%;
- width:100%;
- z-index:-1;
- }
-
- #header .wrapper{
- display:flex;
- max-width:1200px;
- position:relative;
- }
-
- #header .nav-content{
- width:100%;
- }
-}
-@media only screen and (min-width:768px) and (min-width:1200px){
- #header .nav-content{
- display:flex;
- flex-direction:row-reverse;
- }
-}
-@media only screen and (min-width:768px){
- #header .logo-header{
- background-color:initial;
- flex-shrink:0;
- width:100px;
- }
-
- #header .logo{
- background:#fff url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/logo.png?1) no-repeat;
- background-size:cover;
- box-shadow:0 1px 3px #00000014;
- height:120px;
- margin:0;
- position:absolute;
- top:-20px;
- width:100px;
- z-index:3;
- }
-
- #header .logo a{
- display:block;
- height:100%;
- width:100%;
- }
-
- #header .dropdown{
- background-color:initial;
- display:flex;
- flex-direction:column;
- flex-grow:1;
- max-width:none;
- overflow:visible;
- padding:0;
- position:static;
- width:auto;
- }
-
- #header .dropdown-header{
- display:none;
- }
-
- #header .nav-items{
- border:none;
- display:flex;
- flex-direction:column-reverse;
- margin:0;
- width:100%;
- }
-}
-@media only screen and (min-width:768px) and (min-width:1200px){
- #header .nav-items{
- align-items:center;
- flex-direction:row;
- justify-content:flex-end;
- }
-}
-@media only screen and (min-width:768px){
- #header .nav{
- display:flex;
- overflow:visible;
- width:auto;
- }
-
- #header .nav a:hover{
- -webkit-text-decoration:none;
- text-decoration:none;
- }
-
- #header .primary-nav{
- line-height:1.5;
- padding-left:20px;
- padding-top:13px;
- }
-}
-@media only screen and (min-width:768px) and (min-width:1200px){
- #header .primary-nav{
- flex-grow:1;
- padding-top:0;
- }
-}
-@media only screen and (min-width:768px) and (min-width:768px){
- #header .primary-nav{
- padding-left:16px;
- }
-}
-@media only screen and (min-width:768px){
- #header .primary-nav .nav-item-title{
- font-family:WWFRegular,Impact,sans-serif;
- font-size:30px;
- font-weight:400;
- letter-spacing:1px;
- padding:0 10px;
- }
-
- #header .primary-nav .control-accordion{
- position:relative;
- }
-
- #header .primary-nav .control-accordion.expanded:after{
- background-color:#fff;
- }
-
- #header .primary-nav .control-accordion.expanded .nav-item-title,.no-js #header .primary-nav .control-accordion:hover .nav-item-title{
- background:#fff;
- color:#006983;
- }
-
- #header .primary-nav .nav-item-dropdown{
- background:#fff;
- left:130px;
- }
-}
-@media only screen and (min-width:768px) and (min-width:1200px){
- #header .primary-nav .nav-item-dropdown{
- left:auto;
- }
-}
-@media only screen and (min-width:768px){
- #header .primary-nav .nav-item-dropdown .list-linked{
- font-size:12px;
- }
-
- #header .primary-nav .nav-item-dropdown .list-linked>li>a{
- padding:8px 0;
- }
-
- #header .utility-nav{
- display:flex;
- }
-
- #header .utility-nav .nav-item-title{
- display:block;
- padding:0 10px;
- }
-
- #header .utility-nav .control-accordion{
- position:relative;
- }
-
- #header .utility-nav .control-accordion.expanded:after{
- background-color:#222;
- }
-
- #header .utility-nav .control-accordion.expanded .nav-item-title,.no-js #header .utility-nav .control-accordion:hover .nav-item-title{
- background:#222;
- color:#fff;
- }
-
- #header .primary-nav,#header .utility-nav{
- flex-shrink:0;
- }
-
- #header .utility-nav a{
- color:#ccc;
- font-size:16px;
- }
-
- #header .utility-nav .nav-item-dropdown{
- background:#222;
- line-height:1.5;
- padding:12px 0;
- width:200px;
- z-index:3;
- }
-
- #header .utility-nav .nav-item-dropdown a{
- padding:6px 25px 5px;
- position:relative;
- }
-
- #header .utility-nav .nav-item-dropdown a span{
- border-bottom:1px dotted #0000;
- display:inline-block;
- }
-
- #header .utility-nav .nav-item-dropdown a:hover{
- color:#fff;
- }
-
- #header .utility-nav .nav-item-dropdown a:hover span{
- border-bottom:1px dotted #4e4e4e;
- }
-
- #header .nav-group{
- border-bottom:none;
- padding:0;
- }
-
- #header .nav-item{
- border:none;
- padding:0;
- }
-
- #header .primary-nav-item{
- display:flex;
- flex-direction:column;
- padding:0 10px;
- }
-}
-@media only screen and (min-width:768px) and (min-width:768px){
- #header .primary-nav-item{
- padding:0 8px 6px;
- }
-}
-@media only screen and (min-width:768px){
- #header .nav-view-all{
- border:inherit;
- color:inherit;
- font-style:inherit;
- padding:inherit;
- text-transform:inherit;
- }
-
- #header .nav-view-all .svg-icon,#header .nav-view-all:not(.nav-link){
- display:none;
- }
-
- #header .nav-item-title{
- line-height:38px;
- transition:all .25s ease-in-out;
- }
-
- #header .nav-item-dropdown{
- box-shadow:0 2px 3px #0003;
- font-size:12px;
- margin-top:5px;
- position:absolute;
- }
-
- #header .nav-item-dropdown a{
- font-weight:400;
- }
-
- #header .nav-item-dropdown a.view-all{
- border-top:1px solid #f0eeeb;
- clear:both;
- color:#006ea5;
- display:block;
- font-weight:700;
- padding:24px 56px 24px 24px;
- position:relative;
- text-transform:uppercase;
- }
-
- #header .nav-item-dropdown a.view-all .ico{
- font-size:11px;
- line-height:1.5;
- position:relative;
- text-indent:4px;
- transition:color .25s ease-in-out;
- }
-
- #header .nav-item-dropdown a.view-all .svg-icon{
- height:30px;
- padding-left:4px;
- position:absolute;
- top:50%;
- transform:translateY(-50%);
- transition:color .25s ease-in-out;
- width:30px;
- }
-
- #header .nav-item-dropdown a.view-all:hover .ico,#header .nav-item-dropdown a.view-all:hover .svg-icon{
- color:#006983;
- }
-
- #header .nav-item-dropdown .nav-group-wrapper{
- display:flex;
- }
-
- #header .nav-item-dropdown .primary,#header .nav-item-dropdown .secondary{
- flex-grow:1;
- min-width:185px;
- padding:18px 0;
- }
-
- #header .nav-item-dropdown .primary li,#header .nav-item-dropdown .secondary li{
- padding:0 24px;
- transition:all .25s ease-in-out;
- }
-
- #header .nav-item-dropdown .primary a,#header .nav-item-dropdown .secondary a{
- padding:6px 0;
- }
-
- #header .nav-item-dropdown .primary a{
- color:#444;
- }
-
- #header .nav-item-dropdown .primary a:hover{
- color:#006983;
- }
-
- #header .nav-item-dropdown .secondary{
- background:#f6f5f3;
- border-left:1px solid #f0eeeb;
- }
-
- #header .nav-item-dropdown .secondary li:hover{
- background:#006983;
- }
-
- #header .nav-item-dropdown .secondary li:hover a{
- color:#fff;
- }
-
- #header .nav-item-dropdown .secondary a{
- color:#006ea5;
- }
-
- #header .utility-search-ctas{
- align-items:center;
- align-self:flex-end;
- display:flex;
- }
-
- #header .utility-search-ctas .search{
- display:block;
- height:38px;
- margin-right:10px;
- position:relative;
- width:50px;
- }
-
- #header .utility-search-ctas .search label{
- color:#fff;
- }
-
- #header .utility-search-ctas .search-btn{
- background-color:initial;
- height:100%;
- outline:none;
- position:relative;
- transition:all .25s ease-in-out;
- width:100%;
- }
-
- #header .utility-search-ctas .search-btn.expanded,#header .utility-search-ctas .search-btn.expanded:after{
- background-color:#222;
- }
-
- #header .utility-search-ctas .search-btn .svg-icon{
- background-color:#fff;
- border-radius:50%;
- color:#000;
- height:28px;
- left:50%;
- position:absolute;
- top:50%;
- transform:translate(-50%, -50%);
- width:28px;
- }
-
- #header .utility-search-ctas form{
- background-color:#222;
- display:block;
- left:50%;
- margin:0;
- padding:10px;
- transform:translateX(-50%);
- }
-
- #header .utility-search-ctas .form-inline{
- width:350px;
- }
-
- #header .utility-search-ctas .form-inline input{
- border:none;
- box-shadow:none;
- }
-
- #header .utility-search-ctas .nav-actions{
- display:flex;
- }
-
- #header .nav-actions.-mobile,#header .search-ctas{
- display:none;
- }
-
- #header .nav-actions.-split .nav-item{
- width:131px;
- }
-
- #header .nav-actions.-split .nav-item:first-child{
- margin-right:10px;
- padding:0;
- }
-
- #header .nav-actions.-split .nav-item:last-child{
- padding:0;
- }
-
- #header .nav-actions.-split .action{
- line-height:38px;
- }
-
- #header .nav-actions .action.action-secondary .nav-item-dropdown{
- transform:none;
- }
-
- #header .nav-actions .control .svg-icon{
- width:30px;
- }
-
- #header .nav-actions .nav-item-accordion-panel{
- margin:0;
- }
-
- #header .nav-actions .nav-item-dropdown{
- padding:12px 0;
- right:0;
- width:300px;
- }
-
- #header .nav-actions .nav-item-dropdown a{
- padding:6px 25px 5px;
- }
-
- .nav-item-accordion-panel,.search-dropdown{
- display:block;
- }
-
- .nav-item-dropdown{
- opacity:0;
- visibility:hidden;
- }
-
- .expanded+.nav-item-accordion-panel .nav-item-dropdown,.expanded+.search-dropdown .nav-item-dropdown{
- opacity:1;
- visibility:visible;
- }
-
- .no-js .control-accordion:hover+.nav-item-accordion-panel[hidden]{
- display:block;
- }
-
- .no-js .control-accordion:hover+.nav-item-accordion-panel .nav-item-dropdown{
- opacity:1;
- visibility:visible;
- }
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .en__imageSelectField__control input[type=radio]{
+ display:none;
}
-#header,.card,.card-species,.group-cta-items .cta-item .content,.index-feature .call-out,.list-social a,.nav-tabs,.slider .items .description{
- font-size:13px;
- line-height:1.5;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .en__imageSelectField{
+ display:flex;
+ flex-direction:column;
+ height:100%;
+ justify-content:space-between;
}
-#footer .logo{
- background:#fff url(https://acb0a5d73b67fccd4bbe-c2d8138f0ea10a18dd4c43ec3aa4240a.ssl.cf5.rackcdn.com/10114/logo-footer.png) no-repeat 50% 14px;
- height:110px;
- margin-bottom:-9px;
- margin-right:1rem;
- width:84px;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .en__imageSelectField__label{
+ font-size:18px;
}
-
-@media only screen and (max-width:769px){
- #footer .logo{
- display:block;
- }
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .quiz-incorrect-answer{
+ background-color:#f8e0e0;
+ border:2px solid #9e1919;
+ color:red;
+ opacity:1;
}
-#footer .footer-nav-social{
- display:flex;
- flex-direction:row;
- float:none;
- justify-content:space-around;
- margin:0 0 15px;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .quiz-incorrect-answer .en__imageSelectField__label{
+ color:red;
position:relative;
- top:15px;
- width:100%;
}
-
-#footer .footer-nav-social svg{
- height:40px;
- width:40px;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .quiz-incorrect-answer .en__imageSelectField__label:after{
+ background:url('data:image/svg+xml;charset=utf-8,') 50% no-repeat !important;
+ content:"";
+ height:16px;
+ margin-left:3px;
+ position:absolute;
+ top:calc(50% - 8px);
+ width:16px;
}
-
-#footer .footer-nav-social li a{
- display:block;
- height:40px;
- margin:-10px 0;
- overflow:hidden;
- width:40px;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .quiz-correct-answer{
+ background-color:#d4f0d5;
+ border:2px solid green;
+ color:green;
+ font-weight:700;
+ opacity:1;
}
-
-#footer .address{
- margin:10px 0;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .quiz-correct-answer .en__imageSelectField__label{
+ color:green;
+ position:relative;
}
-
-#footer .footer-wrapper{
- margin:0 auto;
- max-width:1200px;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--imgselect .quiz-correct-answer .en__imageSelectField__label:after{
+ background:url('data:image/svg+xml;charset=utf-8,') 50% no-repeat !important;
+ content:"";
+ height:16px;
+ margin-left:3px;
+ position:absolute;
+ top:calc(50% - 8px);
+ width:16px;
}
-
-@media only screen and (max-width:1024px){
- #footer .footer-wrapper{
- padding-left:1rem;
- padding-right:1rem;
- }
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--radio.en__field--survey{
+ --radio_box-shadow_selected:none;
+ --radio_box-shadow_hover:none;
+ --radio_border-radius:0;
+ --radio_font-size:18px;
+ --radio_background-color_hover:#fff;
}
-#footer .footer-flex-container{
- display:flex;
- flex-direction:row;
- justify-content:space-between;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--radio.en__field--survey input[type=checkbox]:checked+label:before,[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--radio.en__field--survey input[type=radio]:checked+label:before{
+ background:#1a1a1a url('data:image/svg+xml;charset=utf-8,') 50% no-repeat;
}
-
-#footer .footer-flex-container .footer-btn{
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--radio.en__field--survey .en__field__item{
+ padding-left:0;
+ padding-right:0;
+}
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--radio.en__field--survey .en__field__element--radio{
+ margin-left:0;
+ margin-right:0;
+ margin-top:20px;
+ width:100%;
+}
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--radio.en__field--survey .en__field__label--item{
align-items:center;
- background-color:#d55c19;
+ background-color:#fff;
+ border:2px solid #000;
display:flex;
- justify-content:center;
+ outline:none;
+ padding:1rem 1.25rem;
+ text-align:left;
}
-
-@media only screen and (max-width:769px){
- #footer .footer-flex-container{
- flex-direction:column;
- }
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--radio.en__field--survey .quiz-incorrect-answer .en__field__label--item{
+ background-color:#f8e0e0;
+ border:2px solid #9e1919;
+ color:red;
+ opacity:1;
}
-#footer .footer-flex-container__align-center{
- align-items:center;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--radio.en__field--survey .quiz-incorrect-answer .en__field__label--item:before{
+ background:#9e1919 url('data:image/svg+xml;charset=utf-8,') 50% no-repeat !important;
+ border-color:#9e1919 !important;
}
-
-#footer .footer-list-category{
- width:100%;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--radio.en__field--survey .quiz-correct-answer .en__field__label--item{
+ background-color:#d4f0d5;
+ border:2px solid green;
+ color:green;
+ font-weight:700;
+ opacity:1;
}
-
-@media only screen and (max-width:767px){
- #footer .footer-list-category{
- margin-bottom:20px;
- }
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz] .en__field--radio.en__field--survey .quiz-correct-answer .en__field__label--item:before{
+ background:green url('data:image/svg+xml;charset=utf-8,') 50% no-repeat !important;
+ border-color:green !important;
}
-#footer .footer-list-category.footer-br-bottom__mobile{
- max-width:30%;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col]#en__pagebuilder .page-backgroundImage{
+ display:none !important;
}
-
-@media only screen and (max-width:769px){
- #footer .footer-list-category.footer-br-bottom__mobile{
- max-width:100%;
- }
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] form>.en__component--advrow{
+ grid-template-columns:[pc-start lpc-start] minmax(0, 1fr) [lpc-end cc-start lcc-start] minmax(0, 0) [lcc-end bc-start lbc-start] minmax(0, 1fr) [lbc-end rbc-start] minmax(0, 1fr) [rbc-end bc-end rcc-start] minmax(0, 0) [rcc-end cc-end rpc-start] minmax(0, 1fr) [rpc-end pc-end];
+ grid-template-rows:[page-start page-alert-start] min-content [page-alert-end content-header-start] min-content [content-header-end body-headerOutside-start] min-content [body-headerOutside-end body-header-start] min-content [body-header-end body-title-start] min-content [body-title-end body-banner-start] min-content [body-banner-end body-bannerOverlay-start] min-content [body-bannerOverlay-end body-top-start] min-content [body-top-end body-side-start] min-content [body-side-end body-main-start] minmax(700px, 1fr) [body-main-end body-bottom-start] min-content [body-bottom-end body-footer-start] min-content [body-footer-end body-footerOutside-start] min-content [body-footerOutside-end content-footerSpacer-start] max-content [content-footerSpacer-end content-preFooter-start] min-content [content-preFooter-end content-footer-start] min-content [content-footer-end page-backgroundImage-start] min-content [page-backgroundImage-end page-backgroundImageOverlay-start] min-content [page-backgroundImageOverlay-end page-end page-customCode-start] min-content [page-customCode-end];
}
-#footer .footer-list-category li{
- margin-bottom:5px;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] .content-header{
+ margin-bottom:0;
}
-
-#footer .footer-list-category li.category{
- padding:3px 0;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] .content-footer{
+ margin-top:0;
}
-
-#footer .footer-list-category li:first-child{
- font-weight:700;
- text-transform:uppercase;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] .body-banner{
+ grid-column:lpc-start / lbc-end;
}
-
-#footer .footer-list-category li:not(:first-child) a{
- color:#fff;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] .body-bottom,[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] .body-main{
+ grid-column:rbc-start / rpc-end;
}
-
-#footer .social-category{
- padding-bottom:3%;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] .body-banner{
+ background-image:var(--quiz-bg-image);
+ background-position:50%;
+ background-repeat:no-repeat;
+ background-size:cover;
+ grid-row:body-main;
}
-
-@media only screen and (max-width:769px){
- #footer .social-category{
- padding-bottom:9%;
- }
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col]:not(#en__pagebuilder) .body-banner .en__component--imageblock{
+ display:none;
}
-#footer .footer-tax{
- max-width:45%;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] .body-main{
+ align-items:stretch;
+ border:none;
+ display:flex;
+ flex-direction:column;
+ grid-row:body-main;
+ justify-content:flex-start;
}
-
-@media only screen and (max-width:769px){
- #footer .footer-tax{
- max-width:100%;
- padding:8% 0 5%;
+@media screen and (max-width:1024px){
+ [data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col]{
+ --engrid__body-main_padding:40px 20px;
+ }
+ [data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] form>.en__component--advrow{
+ grid-template-columns:[pc-start lpc-start] minmax(0, 1fr) [lpc-end cc-start lcc-start] minmax(0, 0) [lcc-end bc-start lbc-start] minmax(0, 1fr) [lbc-end rbc-start] minmax(0, 1fr) [rbc-end bc-end rcc-start] minmax(0, 0) [rcc-end cc-end rpc-start] minmax(0, 1fr) [rpc-end pc-end];
+ grid-template-rows:[page-start page-alert-start] min-content [page-alert-end content-header-start] min-content [content-header-end body-headerOutside-start] min-content [body-headerOutside-end body-header-start] min-content [body-header-end body-title-start] min-content [body-title-end body-banner-start] min-content [body-banner-end body-bannerOverlay-start] min-content [body-bannerOverlay-end body-top-start] min-content [body-top-end body-side-start] min-content [body-side-end body-main-start] 1fr [body-main-end body-bottom-start] min-content [body-bottom-end body-footer-start] min-content [body-footer-end body-footerOutside-start] min-content [body-footerOutside-end content-footerSpacer-start] max-content [content-footerSpacer-end content-preFooter-start] min-content [content-preFooter-end content-footer-start] min-content [content-footer-end page-backgroundImage-start] min-content [page-backgroundImage-end page-backgroundImageOverlay-start] min-content [page-backgroundImageOverlay-end page-end page-customCode-start] min-content [page-customCode-end];
+ }
+ [data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] .body-banner{
+ display:none;
+ grid-column:pc;
+ grid-row:body-banner;
+ }
+ [data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] .body-banner:has(img){
+ height:300px;
+ }
+ [data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] .body-banner{
+ background-image:var(--quiz-mobile-bg-image);
+ }
+ [data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter2col] .body-main{
+ grid-column:pc;
}
}
-#footer .footer-links{
- justify-content:center;
- position:relative;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter1col]{
+ --engrid__body_box-shadow:2px 2px 10px #00000026;
+ --engrid__body-main_padding:60px 60px;
}
-
-@media only screen and (max-width:769px){
- #footer .footer-links{
- padding:5% 0;
- text-align:center;
- }
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter1col]#en__pagebuilder .body-banner{
+ display:none !important;
+}
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter1col] .content-header{
+ margin-bottom:30px;
}
-#footer .footer-links li{
- margin:0 20px;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter1col] .content-footer{
+ margin-top:30px;
}
-
-#footer #footer-copyright-line{
- text-align:center;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter1col] .body-main{
+ border:none;
+ grid-column:pc;
+ margin:0 auto;
+ max-width:650px;
+ width:100%;
}
-
-#footer .footer-logo-address,#footer .footer-tax{
- position:relative;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter1col] .body-main h1{
+ margin-top:0;
}
-
-@media only screen and (max-width:769px){
- #footer .footer-light .footer-wrapper .footer-logo-address{
- flex-direction:row;
- justify-content:center;
- margin-top:30px;
- order:2;
- padding:5% 0;
- width:100%;
- }
-
- #footer .footer-light .footer-wrapper .footer-list-category{
- order:1;
- position:relative;
- }
-
- #footer .footer-light .footer-wrapper .footer-tax{
- order:3;
- }
-
- #footer .footer-br-bottom__mobile:after{
- bottom:0;
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter1col] .en__field--imgselect{
+ padding:0;
+}
+[data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter1col] .en__field--imgselect .en__field__element{
+ grid-template-columns:repeat(2, 1fr);
+ margin-left:auto;
+ margin-right:auto;
+ max-width:100%;
+ width:90%;
+}
+@media screen and (max-width:600px){
+ [data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter1col]{
+ --engrid__body-main_padding:30px 20px;
+ --engrid__body_box-shadow:none;
}
-
- #footer .footer-br-bottom__mobile:after,#footer .footer-br-top__mobile:after{
- background-color:#d3d3d3;
- content:"";
- display:block;
- height:1px;
- position:absolute;
- width:100%;
+ [data-engrid-theme=wwf][data-engrid-subtheme=quiz][data-engrid-layout=centercenter1col] .content-header{
+ margin-bottom:0;
}
+}
- #footer .footer-br-top__mobile:after{
- top:0;
+#header{
+ background:#fff;
+ border-bottom:1px solid #f3f3f3;
+ padding:12px 24px;
+}
+@media (min-width:40rem){
+ #header{
+ padding:12px 48px;
}
-
- #footer .footer-light .footer-wrapper .footer-list-category.footer-br-bottom__mobile:after{
- bottom:-25px;
+}
+@media (min-width:64rem){
+ #header{
+ padding:12px 80px;
}
}
-.shaded-light-pattern{
- background-color:#e9e8d8;
+#header .container{
+ align-items:center;
+ display:flex;
+ justify-content:space-between;
+ margin:0 auto;
+ max-width:1440px;
}
-.shaded-light-pattern .section-parts{
- margin:auto;
- max-width:1200px;
+#header .logo img{
+ display:block;
+ height:60px;
+ width:41px;
}
-.shaded-light-pattern #panda-nation-title{
- align-items:center;
+#header .cta{
display:flex;
- margin:10px 0 10px 135px;
- min-height:30px;
- min-width:395px;
+ gap:16px;
}
-.shaded-light-pattern #panda-nation-title h2{
- -webkit-font-smoothing:antialiased;
- color:#222;
- font-family:OpenSansRegular,sans-serif;
- font-size:20px;
- font-weight:700;
+#header .cta .btn{
+ border-radius:32px;
+ color:#fff;
+ font-family:Open Sans,sans-serif;
+ font-size:18px;
+ font-weight:600;
+ letter-spacing:.18px;
line-height:1;
- margin:0;
+ min-width:120px;
+ padding:16px 20px;
+ text-align:center;
+ -webkit-text-decoration:none;
+ text-decoration:none;
+ transition:background .2s ease;
}
-.shaded-light-pattern #panda-nation-title h2 .h2-orange{
- color:#f05a2b;
+#header .cta .btn.gifts{
+ background:#6f190b;
}
-.shaded-light-pattern.panda-nation #panda-nation-title{
- margin:10px 0 10px 130px;
- min-height:50px;
+#header .cta .btn.gifts:active,#header .cta .btn.gifts:hover{
+ background:#b02f1a;
}
-.shaded-light-pattern.panda-nation #panda-nation-title h2{
- color:#444;
- font-size:48px;
- font-weight:700;
- letter-spacing:-5px;
- text-shadow:.5px .5px 0 #444, -.5px -.5px 0 #444, .5px -.5px 0 #444, -.5px .5px 0 #444;
+#header .cta .btn.donate{
+ background:#cb4328;
}
-.shaded-light-pattern.panda-nation #panda-nation-title h2 .h2-orange{
- text-shadow:.5px .5px 0 #f05a2b, -.5px -.5px 0 #f05a2b, .5px -.5px 0 #f05a2b, -.5px .5px 0 #f05a2b;
+#header .cta .btn.donate:active,#header .cta .btn.donate:hover{
+ background:#b02f1a;
}
-
-@media screen and (min-width:767px){
- [data-header-footer-layout=limited] #header .nav.primary-nav{
+@media (max-width:800px){
+ #header .cta{
display:none;
}
}
-[data-header-footer-layout=limited] #header .utility-search-ctas .search{
- display:none;
-}
-[data-header-footer-layout=none] .content-header{
- margin-bottom:50px;
+#footer{
+ background:#fefcf9;
+ padding:64px 0;
}
-[data-header-footer-layout=none] form>.en__component--row.en__component--advrow>.content-header>*{
- display:none;
+#footer .container{
+ display:grid;
+ gap:24px 40px;
+ grid-template-columns:62px auto 168px;
+ margin:0 auto;
+ max-width:1200px;
+ padding:0 80px;
+ width:100%;
}
-[data-header-footer-layout=none] .no-header-wwf-logo{
- height:100px;
- max-width:80px;
- width:80px;
+#footer .container .footer-copy,#footer .container .footer-links{
+ grid-column:1 / -1;
+ max-width:1063px;
}
-[data-header-footer-layout=none] .minimal-header-logo{
- display:none;
+#footer .footer-logo img{
+ height:91px;
+ width:62px;
}
-[data-header-footer-layout=none] .body-title .en__component .minimal-header-logo+h1{
- margin-bottom:0;
- margin-top:0;
+#footer .footer-address{
+ font-size:16px;
+ line-height:146%;
+ margin:auto 0;
}
-@media screen and (min-width:600px){
- [data-header-footer-layout=none] .body-title .en__component{
- align-items:center;
- display:flex;
- gap:1rem;
- }
- [data-header-footer-layout=none] .body-title .en__component .minimal-header-logo{
- display:block;
- }
+#footer .footer-address address{
+ font-style:normal;
}
-@media screen and (max-width:599px){
- [data-header-footer-layout=none] .content-header{
- --engrid__content-header_background-color:#fff;
- justify-items:center;
- margin-top:10px;
- }
- [data-header-footer-layout=none] .content-header .minimal-header-logo{
- display:block !important;
- }
+#footer .footer-social{
+ align-items:center;
+ display:flex;
+ gap:24px;
}
-
-@media only screen and (max-width:1015px){
- .shaded-light-pattern #panda-nation-title{
- margin-left:20px;
- min-width:309px;
- }
+#footer .footer-copy{
+ margin-top:4px;
}
-@media only screen and (min-width:768px){
- .shaded-light-pattern #panda-nation-title{
- margin-left:135px;
- }
-
- .shaded-light-pattern.panda-nation #panda-nation-title{
- margin-left:130px;
- }
+#footer .footer-copy p{
+ font-size:16px;
+ font-weight:400;
+ letter-spacing:1%;
+ line-height:146%;
+ margin:0 0 24px;
}
-@media only screen and (max-width:767px){
- .shaded-light-pattern #panda-nation-title{
- margin:0 !important;
- min-width:inherit;
- padding-bottom:10px;
- padding-top:10px;
- width:100%;
- }
- .shaded-light-pattern #panda-nation-title h2{
- margin:0 20px;
+#footer .footer-copy p:last-child{
+ margin-bottom:0;
+}
+#footer .footer-links>ul{
+ display:flex;
+ gap:16px;
+ margin:0;
+}
+#footer .footer-links>ul li>a{
+ color:var(--label_color);
+ font-size:18px;
+ font-weight:600;
+ -webkit-text-decoration:underline;
+ text-decoration:underline;
+ text-decoration-thickness:2px;
+ text-underline-offset:8px;
+}
+@media screen and (max-width:1200px){
+ #footer .footer-links>ul{
+ display:flex;
+ flex-direction:column;
}
-
- .shaded-light-pattern.panda-nation #panda-nation-title{
- margin:0 !important;
- padding-bottom:10px;
- padding-top:10px;
+}
+@media screen and (max-width:767px){
+ #footer .container{
+ gap:32px;
+ grid-template-columns:62px auto;
+ max-width:unset;
+ padding:0 24px;
}
- .shaded-light-pattern.panda-nation #panda-nation-title h2{
- font-size:30px;
- letter-spacing:-2px;
- margin:0 20px;
- text-shadow:none;
+ #footer .container .footer-copy,#footer .container .footer-links,#footer .container .footer-social{
+ grid-column:1 / -1;
+ max-width:100%;
}
- .shaded-light-pattern.panda-nation #panda-nation-title h2 .h2-orange{
- text-shadow:none;
+ #footer .footer-copy{
+ margin-top:0;
}
}
+
[data-engrid-theme=wwf][data-engrid-multistep]{
--color-gray:#f2f4f7;
--body-side-padding:29px;
diff --git a/dist/engrid.js b/dist/engrid.js
index bb6d5c57..e11f41a0 100644
--- a/dist/engrid.js
+++ b/dist/engrid.js
@@ -17,10 +17,10 @@
*
* ENGRID PAGE TEMPLATE ASSETS
*
- * Date: Thursday, September 4, 2025 @ 00:27:03 ET
- * By: fernando
- * ENGrid styles: v0.22.11
- * ENGrid scripts: v0.22.17
+ * Date: Thursday, February 19, 2026 @ 13:39:39 ET
+ * By: nick
+ * ENGrid styles: v0.23.4
+ * ENGrid scripts: v0.23.11
*
* Created by 4Site Studios
* Come work with us or join our team, we would love to hear from you
@@ -30,287 +30,351 @@
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
-/***/ 371:
-/***/ ((__unused_webpack_module, exports) => {
+/***/ 71:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.DispatchError = void 0;
+exports.EventDispatcher = void 0;
+const ste_core_1 = __webpack_require__(4604);
/**
- * Indicates an error with dispatching.
+ * Dispatcher implementation for events. Can be used to subscribe, unsubscribe
+ * or dispatch events. Use the ToEvent() method to expose the event.
*
* @export
- * @class DispatchError
- * @extends {Error}
+ * @class EventDispatcher
+ * @extends {DispatcherBase>}
+ * @implements {IEvent}
+ * @template TSender The sender type.
+ * @template TArgs The event arguments type.
*/
-class DispatchError extends Error {
+class EventDispatcher extends ste_core_1.DispatcherBase {
/**
- * Creates an instance of DispatchError.
- * @param {string} message The message.
+ * Creates an instance of EventDispatcher.
*
- * @memberOf DispatchError
+ * @memberOf EventDispatcher
*/
- constructor(message) {
- super(message);
+ constructor() {
+ super();
+ }
+ /**
+ * Dispatches the event.
+ *
+ * @param {TSender} sender The sender.
+ * @param {TArgs} args The arguments.
+ * @returns {IPropagationStatus} The propagation status to interact with the event
+ *
+ * @memberOf EventDispatcher
+ */
+ dispatch(sender, args) {
+ const result = this._dispatch(false, this, arguments);
+ if (result == null) {
+ throw new ste_core_1.DispatchError("Got `null` back from dispatch.");
+ }
+ return result;
+ }
+ /**
+ * Dispatches the event in an async way. Does not support event interaction.
+ *
+ * @param {TSender} sender The sender.
+ * @param {TArgs} args The arguments.
+ *
+ * @memberOf EventDispatcher
+ */
+ dispatchAsync(sender, args) {
+ this._dispatch(true, this, arguments);
+ }
+ /**
+ * Creates an event from the dispatcher. Will return the dispatcher
+ * in a wrapper. This will prevent exposure of any dispatcher methods.
+ *
+ * @returns {IEvent} The event.
+ *
+ * @memberOf EventDispatcher
+ */
+ asEvent() {
+ return super.asEvent();
}
}
-exports.DispatchError = DispatchError;
+exports.EventDispatcher = EventDispatcher;
/***/ }),
-/***/ 7015:
+/***/ 131:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.DispatcherBase = void 0;
-const __1 = __webpack_require__(782);
+exports.PromiseSignalList = void 0;
+const ste_core_1 = __webpack_require__(7852);
+const _1 = __webpack_require__(6042);
/**
- * Base class for implementation of the dispatcher. It facilitates the subscribe
- * and unsubscribe methods based on generic handlers. The TEventType specifies
- * the type of event that should be exposed. Use the asEvent to expose the
- * dispatcher as event.
- *
- * @export
- * @abstract
- * @class DispatcherBase
- * @implements {ISubscribable}
- * @template TEventHandler The type of event handler.
+ * Storage class for multiple signal events that are accessible by name.
+ * Events dispatchers are automatically created.
*/
-class DispatcherBase {
+class PromiseSignalList extends ste_core_1.EventListBase {
+ /**
+ * Creates a new SignalList instance.
+ */
constructor() {
- /**
- * The subscriptions.
- *
- * @protected
- *
- * @memberOf DispatcherBase
- */
- this._subscriptions = new Array();
+ super();
}
/**
- * Returns the number of subscriptions.
- *
- * @readonly
- * @type {number}
- * @memberOf DispatcherBase
+ * Creates a new dispatcher instance.
*/
- get count() {
- return this._subscriptions.length;
+ createDispatcher() {
+ return new _1.PromiseSignalDispatcher();
}
+}
+exports.PromiseSignalList = PromiseSignalList;
+
+
+/***/ }),
+
+/***/ 278:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.HandlingBase = void 0;
+/**
+ * Base class that implements event handling. With a an
+ * event list this base class will expose events that can be
+ * subscribed to. This will give your class generic events.
+ *
+ * @export
+ * @abstract
+ * @class HandlingBase
+ * @template TEventHandler The type of event handler.
+ * @template TDispatcher The type of dispatcher.
+ * @template TList The type of event list.
+ */
+class HandlingBase {
/**
- * Triggered when subscriptions are changed (added or removed).
+ * Creates an instance of HandlingBase.
+ * @param {TList} events The event list. Used for event management.
*
- * @readonly
- * @type {ISubscribable}
- * @memberOf DispatcherBase
+ * @memberOf HandlingBase
*/
- get onSubscriptionChange() {
- if (this._onSubscriptionChange == null) {
- this._onSubscriptionChange = new __1.SubscriptionChangeEventDispatcher();
- }
- return this._onSubscriptionChange.asEvent();
+ constructor(events) {
+ this.events = events;
}
/**
- * Subscribe to the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- * @returns A function that unsubscribes the event handler from the event.
+ * Subscribes once to the event with the specified name.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
*
- * @memberOf DispatcherBase
+ * @memberOf HandlingBase
*/
- subscribe(fn) {
- if (fn) {
- this._subscriptions.push(this.createSubscription(fn, false));
- this.triggerSubscriptionChange();
- }
- return () => {
- this.unsubscribe(fn);
- };
+ one(name, fn) {
+ this.events.get(name).one(fn);
}
/**
- * Subscribe to the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- * @returns A function that unsubscribes the event handler from the event.
+ * Checks it the event has a subscription for the specified handler.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
*
- * @memberOf DispatcherBase
+ * @memberOf HandlingBase
*/
- sub(fn) {
- return this.subscribe(fn);
+ has(name, fn) {
+ return this.events.get(name).has(fn);
}
/**
- * Subscribe once to the event with the specified name.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- * @returns A function that unsubscribes the event handler from the event.
+ * Subscribes to the event with the specified name.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
*
- * @memberOf DispatcherBase
+ * @memberOf HandlingBase
*/
- one(fn) {
- if (fn) {
- this._subscriptions.push(this.createSubscription(fn, true));
- this.triggerSubscriptionChange();
- }
- return () => {
- this.unsubscribe(fn);
- };
+ subscribe(name, fn) {
+ this.events.get(name).subscribe(fn);
}
/**
- * Checks it the event has a subscription for the specified handler.
- *
+ * Subscribes to the event with the specified name.
+ * @param {string} name The name of the event.
* @param {TEventHandler} fn The event handler.
*
- * @memberOf DispatcherBase
+ * @memberOf HandlingBase
*/
- has(fn) {
- if (!fn)
- return false;
- return this._subscriptions.some((sub) => sub.handler == fn);
+ sub(name, fn) {
+ this.subscribe(name, fn);
}
/**
- * Unsubscribes the handler from the dispatcher.
- *
+ * Unsubscribes from the event with the specified name.
+ * @param {string} name The name of the event.
* @param {TEventHandler} fn The event handler.
*
- * @memberOf DispatcherBase
+ * @memberOf HandlingBase
*/
- unsubscribe(fn) {
- if (!fn)
- return;
- let changes = false;
- for (let i = 0; i < this._subscriptions.length; i++) {
- if (this._subscriptions[i].handler == fn) {
- this._subscriptions.splice(i, 1);
- changes = true;
- break;
- }
- }
- if (changes) {
- this.triggerSubscriptionChange();
- }
+ unsubscribe(name, fn) {
+ this.events.get(name).unsubscribe(fn);
}
/**
- * Unsubscribes the handler from the dispatcher.
- *
+ * Unsubscribes from the event with the specified name.
+ * @param {string} name The name of the event.
* @param {TEventHandler} fn The event handler.
*
- * @memberOf DispatcherBase
+ * @memberOf HandlingBase
*/
- unsub(fn) {
- this.unsubscribe(fn);
+ unsub(name, fn) {
+ this.unsubscribe(name, fn);
}
+}
+exports.HandlingBase = HandlingBase;
+
+
+/***/ }),
+
+/***/ 338:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.EventList = void 0;
+const ste_core_1 = __webpack_require__(4604);
+const EventDispatcher_1 = __webpack_require__(71);
+/**
+ * Storage class for multiple events that are accessible by name.
+ * Events dispatchers are automatically created.
+ */
+class EventList extends ste_core_1.EventListBase {
/**
- * Generic dispatch will dispatch the handlers with the given arguments.
- *
- * @protected
- * @param {boolean} executeAsync `True` if the even should be executed async.
- * @param {*} scope The scope of the event. The scope becomes the `this` for handler.
- * @param {IArguments} args The arguments for the event.
- * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.
- *
- * @memberOf DispatcherBase
- */
- _dispatch(executeAsync, scope, args) {
- //execute on a copy because of bug #9
- for (let sub of [...this._subscriptions]) {
- let ev = new __1.EventManagement(() => this.unsub(sub.handler));
- let nargs = Array.prototype.slice.call(args);
- nargs.push(ev);
- let s = sub;
- s.execute(executeAsync, scope, nargs);
- //cleanup subs that are no longer needed
- this.cleanup(sub);
- if (!executeAsync && ev.propagationStopped) {
- return { propagationStopped: true };
- }
- }
- if (executeAsync) {
- return null;
- }
- return { propagationStopped: false };
- }
- /**
- * Creates a subscription.
- *
- * @protected
- * @param {TEventHandler} handler The handler.
- * @param {boolean} isOnce True if the handler should run only one.
- * @returns {ISubscription} The subscription.
- *
- * @memberOf DispatcherBase
+ * Creates a new EventList instance.
*/
- createSubscription(handler, isOnce) {
- return new __1.Subscription(handler, isOnce);
+ constructor() {
+ super();
}
/**
- * Cleans up subs that ran and should run only once.
- *
- * @protected
- * @param {ISubscription} sub The subscription.
- *
- * @memberOf DispatcherBase
+ * Creates a new dispatcher instance.
*/
- cleanup(sub) {
- let changes = false;
- if (sub.isOnce && sub.isExecuted) {
- let i = this._subscriptions.indexOf(sub);
- if (i > -1) {
- this._subscriptions.splice(i, 1);
- changes = true;
- }
- }
- if (changes) {
- this.triggerSubscriptionChange();
- }
+ createDispatcher() {
+ return new EventDispatcher_1.EventDispatcher();
}
+}
+exports.EventList = EventList;
+
+
+/***/ }),
+
+/***/ 455:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.Subscription = void 0;
+/**
+ * Stores a handler. Manages execution meta data.
+ * @class Subscription
+ * @template TEventHandler
+ */
+class Subscription {
/**
- * Creates an event from the dispatcher. Will return the dispatcher
- * in a wrapper. This will prevent exposure of any dispatcher methods.
- *
- * @returns {ISubscribable}
+ * Creates an instance of Subscription.
*
- * @memberOf DispatcherBase
+ * @param {TEventHandler} handler The handler for the subscription.
+ * @param {boolean} isOnce Indicates if the handler should only be executed once.
*/
- asEvent() {
- if (this._wrap == null) {
- this._wrap = new __1.DispatcherWrapper(this);
- }
- return this._wrap;
+ constructor(handler, isOnce) {
+ this.handler = handler;
+ this.isOnce = isOnce;
+ /**
+ * Indicates if the subscription has been executed before.
+ */
+ this.isExecuted = false;
}
/**
- * Clears the subscriptions.
+ * Executes the handler.
*
- * @memberOf DispatcherBase
+ * @param {boolean} executeAsync True if the even should be executed async.
+ * @param {*} scope The scope the scope of the event.
+ * @param {IArguments} args The arguments for the event.
*/
- clear() {
- if (this._subscriptions.length != 0) {
- this._subscriptions.splice(0, this._subscriptions.length);
- this.triggerSubscriptionChange();
+ execute(executeAsync, scope, args) {
+ if (!this.isOnce || !this.isExecuted) {
+ this.isExecuted = true;
+ var fn = this.handler;
+ if (executeAsync) {
+ setTimeout(() => {
+ fn.apply(scope, args);
+ }, 1);
+ }
+ else {
+ fn.apply(scope, args);
+ }
}
}
+}
+exports.Subscription = Subscription;
+
+
+/***/ }),
+
+/***/ 606:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+/*!
+ * Strongly Typed Events for TypeScript - Core
+ * https://github.com/KeesCBakker/StronlyTypedEvents/
+ * http://keestalkstech.com
+ *
+ * Copyright Kees C. Bakker / KeesTalksTech
+ * Released under the MIT license
+ */
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.NonUniformPromiseEventList = exports.PromiseEventList = exports.PromiseEventHandlingBase = exports.PromiseEventDispatcher = void 0;
+const PromiseEventDispatcher_1 = __webpack_require__(2330);
+Object.defineProperty(exports, "PromiseEventDispatcher", ({ enumerable: true, get: function () { return PromiseEventDispatcher_1.PromiseEventDispatcher; } }));
+const PromiseEventHandlingBase_1 = __webpack_require__(3351);
+Object.defineProperty(exports, "PromiseEventHandlingBase", ({ enumerable: true, get: function () { return PromiseEventHandlingBase_1.PromiseEventHandlingBase; } }));
+const PromiseEventList_1 = __webpack_require__(4283);
+Object.defineProperty(exports, "PromiseEventList", ({ enumerable: true, get: function () { return PromiseEventList_1.PromiseEventList; } }));
+const NonUniformPromiseEventList_1 = __webpack_require__(1246);
+Object.defineProperty(exports, "NonUniformPromiseEventList", ({ enumerable: true, get: function () { return NonUniformPromiseEventList_1.NonUniformPromiseEventList; } }));
+
+
+/***/ }),
+
+/***/ 956:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.SubscriptionChangeEventDispatcher = void 0;
+const __1 = __webpack_require__(4604);
+/**
+ * Dispatcher for subscription changes.
+ *
+ * @export
+ * @class SubscriptionChangeEventDispatcher
+ * @extends {DispatcherBase}
+ */
+class SubscriptionChangeEventDispatcher extends __1.DispatcherBase {
/**
- * Triggers the subscription change event.
+ * Dispatches the event.
*
- * @private
+ * @param {number} count The currrent number of subscriptions.
*
- * @memberOf DispatcherBase
+ * @memberOf SubscriptionChangeEventDispatcher
*/
- triggerSubscriptionChange() {
- if (this._onSubscriptionChange != null) {
- this._onSubscriptionChange.dispatch(this.count);
- }
+ dispatch(count) {
+ this._dispatch(false, this, arguments);
}
}
-exports.DispatcherBase = DispatcherBase;
+exports.SubscriptionChangeEventDispatcher = SubscriptionChangeEventDispatcher;
/***/ }),
-/***/ 7327:
+/***/ 1050:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
@@ -438,834 +502,506 @@ exports.DispatcherWrapper = DispatcherWrapper;
/***/ }),
-/***/ 3704:
-/***/ ((__unused_webpack_module, exports) => {
+/***/ 1064:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.EventListBase = void 0;
+exports.SignalList = void 0;
+const ste_core_1 = __webpack_require__(4604);
+const _1 = __webpack_require__(5010);
/**
- * Base class for event lists classes. Implements the get and remove.
+ * Storage class for multiple signal events that are accessible by name.
+ * Events dispatchers are automatically created.
*
* @export
- * @abstract
- * @class EventListBaset
- * @template TEventDispatcher The type of event dispatcher.
+ * @class SignalList
+ * @extends {EventListBase}
*/
-class EventListBase {
- constructor() {
- this._events = {};
- }
+class SignalList extends ste_core_1.EventListBase {
/**
- * Gets the dispatcher associated with the name.
- *
- * @param {string} name The name of the event.
- * @returns {TEventDispatcher} The disptacher.
+ * Creates an instance of SignalList.
*
- * @memberOf EventListBase
+ * @memberOf SignalList
*/
- get(name) {
- let event = this._events[name];
- if (event) {
- return event;
- }
- event = this.createDispatcher();
- this._events[name] = event;
- return event;
+ constructor() {
+ super();
}
/**
- * Removes the dispatcher associated with the name.
+ * Creates a new dispatcher instance.
*
- * @param {string} name
+ * @protected
+ * @returns {SignalDispatcher}
*
- * @memberOf EventListBase
+ * @memberOf SignalList
*/
- remove(name) {
- delete this._events[name];
+ createDispatcher() {
+ return new _1.SignalDispatcher();
}
}
-exports.EventListBase = EventListBase;
+exports.SignalList = SignalList;
/***/ }),
-/***/ 7451:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+/***/ 1196:
+/***/ ((module) => {
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseDispatcherBase = void 0;
-const __1 = __webpack_require__(782);
-/**
- * Dispatcher base for dispatchers that use promises. Each promise
- * is awaited before the next is dispatched, unless the event is
- * dispatched with the executeAsync flag.
- *
- * @export
- * @abstract
- * @class PromiseDispatcherBase
- * @extends {DispatcherBase}
- * @template TEventHandler The type of event handler.
- */
-class PromiseDispatcherBase extends __1.DispatcherBase {
- /**
- * The normal dispatch cannot be used in this class.
- *
- * @protected
- * @param {boolean} executeAsync `True` if the even should be executed async.
- * @param {*} scope The scope of the event. The scope becomes the `this` for handler.
- * @param {IArguments} args The arguments for the event.
- * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.
- *
- * @memberOf DispatcherBase
- */
- _dispatch(executeAsync, scope, args) {
- throw new __1.DispatchError("_dispatch not supported. Use _dispatchAsPromise.");
- }
- /**
- * Crates a new subscription.
- *
- * @protected
- * @param {TEventHandler} handler The handler.
- * @param {boolean} isOnce Indicates if the handler should only run once.
- * @returns {ISubscription} The subscription.
- *
- * @memberOf PromiseDispatcherBase
- */
- createSubscription(handler, isOnce) {
- return new __1.PromiseSubscription(handler, isOnce);
- }
- /**
- * Generic dispatch will dispatch the handlers with the given arguments.
- *
- * @protected
- * @param {boolean} executeAsync `True` if the even should be executed async.
- * @param {*} scope The scope of the event. The scope becomes the `this` for handler.
- * @param {IArguments} args The arguments for the event.
- * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.
- *
- * @memberOf DispatcherBase
- */
- async _dispatchAsPromise(executeAsync, scope, args) {
- //execute on a copy because of bug #9
- for (let sub of [...this._subscriptions]) {
- let ev = new __1.EventManagement(() => this.unsub(sub.handler));
- let nargs = Array.prototype.slice.call(args);
- nargs.push(ev);
- let ps = sub;
- await ps.execute(executeAsync, scope, nargs);
- //cleanup subs that are no longer needed
- this.cleanup(sub);
- if (!executeAsync && ev.propagationStopped) {
- return { propagationStopped: true };
- }
- }
- if (executeAsync) {
- return null;
- }
- return { propagationStopped: false };
- }
-}
-exports.PromiseDispatcherBase = PromiseDispatcherBase;
+/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */
+(function () {
+ 'use strict';
+ // polyfill
+ function polyfill() {
+ // aliases
+ var w = window;
+ var d = document;
-/***/ }),
+ // return if scroll behavior is supported and polyfill is not forced
+ if (
+ 'scrollBehavior' in d.documentElement.style &&
+ w.__forceSmoothScrollPolyfill__ !== true
+ ) {
+ return;
+ }
-/***/ 5519:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+ // globals
+ var Element = w.HTMLElement || w.Element;
+ var SCROLL_TIME = 468;
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.SubscriptionChangeEventDispatcher = void 0;
-const __1 = __webpack_require__(782);
-/**
- * Dispatcher for subscription changes.
- *
- * @export
- * @class SubscriptionChangeEventDispatcher
- * @extends {DispatcherBase}
- */
-class SubscriptionChangeEventDispatcher extends __1.DispatcherBase {
- /**
- * Dispatches the event.
- *
- * @param {number} count The currrent number of subscriptions.
- *
- * @memberOf SubscriptionChangeEventDispatcher
- */
- dispatch(count) {
- this._dispatch(false, this, arguments);
- }
-}
-exports.SubscriptionChangeEventDispatcher = SubscriptionChangeEventDispatcher;
+ // object gathering original scroll methods
+ var original = {
+ scroll: w.scroll || w.scrollTo,
+ scrollBy: w.scrollBy,
+ elementScroll: Element.prototype.scroll || scrollElement,
+ scrollIntoView: Element.prototype.scrollIntoView
+ };
+ // define timing method
+ var now =
+ w.performance && w.performance.now
+ ? w.performance.now.bind(w.performance)
+ : Date.now;
-/***/ }),
+ /**
+ * indicates if a the current browser is made by Microsoft
+ * @method isMicrosoftBrowser
+ * @param {String} userAgent
+ * @returns {Boolean}
+ */
+ function isMicrosoftBrowser(userAgent) {
+ var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];
-/***/ 893:
-/***/ ((__unused_webpack_module, exports) => {
+ return new RegExp(userAgentPatterns.join('|')).test(userAgent);
+ }
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseSubscription = void 0;
-/**
- * Subscription implementation for events with promises.
- *
- * @export
- * @class PromiseSubscription
- * @implements {ISubscription}
- * @template TEventHandler The type of event handler.
- */
-class PromiseSubscription {
- /**
- * Creates an instance of PromiseSubscription.
- * @param {TEventHandler} handler The handler for the subscription.
- * @param {boolean} isOnce Indicates if the handler should only be executed once.
- *
- * @memberOf PromiseSubscription
- */
- constructor(handler, isOnce) {
- this.handler = handler;
- this.isOnce = isOnce;
- /**
- * Indicates if the subscription has been executed before.
- *
- * @memberOf PromiseSubscription
- */
- this.isExecuted = false;
- }
- /**
- * Executes the handler.
- *
- * @param {boolean} executeAsync True if the even should be executed async.
- * @param {*} scope The scope the scope of the event.
- * @param {IArguments} args The arguments for the event.
- *
- * @memberOf PromiseSubscription
- */
- async execute(executeAsync, scope, args) {
- if (!this.isOnce || !this.isExecuted) {
- this.isExecuted = true;
- //TODO: do we need to cast to any -- seems yuck
- var fn = this.handler;
- if (executeAsync) {
- setTimeout(() => {
- fn.apply(scope, args);
- }, 1);
- return;
- }
- let result = fn.apply(scope, args);
- await result;
- }
- }
-}
-exports.PromiseSubscription = PromiseSubscription;
+ /*
+ * IE has rounding bug rounding down clientHeight and clientWidth and
+ * rounding up scrollHeight and scrollWidth causing false positives
+ * on hasScrollableSpace
+ */
+ var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;
+ /**
+ * changes scroll position inside an element
+ * @method scrollElement
+ * @param {Number} x
+ * @param {Number} y
+ * @returns {undefined}
+ */
+ function scrollElement(x, y) {
+ this.scrollLeft = x;
+ this.scrollTop = y;
+ }
-/***/ }),
+ /**
+ * returns result of applying ease math function to a number
+ * @method ease
+ * @param {Number} k
+ * @returns {Number}
+ */
+ function ease(k) {
+ return 0.5 * (1 - Math.cos(Math.PI * k));
+ }
-/***/ 5171:
-/***/ ((__unused_webpack_module, exports) => {
+ /**
+ * indicates if a smooth behavior should be applied
+ * @method shouldBailOut
+ * @param {Number|Object} firstArg
+ * @returns {Boolean}
+ */
+ function shouldBailOut(firstArg) {
+ if (
+ firstArg === null ||
+ typeof firstArg !== 'object' ||
+ firstArg.behavior === undefined ||
+ firstArg.behavior === 'auto' ||
+ firstArg.behavior === 'instant'
+ ) {
+ // first argument is not an object/null
+ // or behavior is auto, instant or undefined
+ return true;
+ }
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.Subscription = void 0;
-/**
- * Stores a handler. Manages execution meta data.
- * @class Subscription
- * @template TEventHandler
- */
-class Subscription {
- /**
- * Creates an instance of Subscription.
- *
- * @param {TEventHandler} handler The handler for the subscription.
- * @param {boolean} isOnce Indicates if the handler should only be executed once.
- */
- constructor(handler, isOnce) {
- this.handler = handler;
- this.isOnce = isOnce;
- /**
- * Indicates if the subscription has been executed before.
- */
- this.isExecuted = false;
- }
- /**
- * Executes the handler.
- *
- * @param {boolean} executeAsync True if the even should be executed async.
- * @param {*} scope The scope the scope of the event.
- * @param {IArguments} args The arguments for the event.
- */
- execute(executeAsync, scope, args) {
- if (!this.isOnce || !this.isExecuted) {
- this.isExecuted = true;
- var fn = this.handler;
- if (executeAsync) {
- setTimeout(() => {
- fn.apply(scope, args);
- }, 1);
- }
- else {
- fn.apply(scope, args);
- }
- }
- }
-}
-exports.Subscription = Subscription;
+ if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {
+ // first argument is an object and behavior is smooth
+ return false;
+ }
+ // throw error when behavior is not supported
+ throw new TypeError(
+ 'behavior member of ScrollOptions ' +
+ firstArg.behavior +
+ ' is not a valid value for enumeration ScrollBehavior.'
+ );
+ }
-/***/ }),
+ /**
+ * indicates if an element has scrollable space in the provided axis
+ * @method hasScrollableSpace
+ * @param {Node} el
+ * @param {String} axis
+ * @returns {Boolean}
+ */
+ function hasScrollableSpace(el, axis) {
+ if (axis === 'Y') {
+ return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;
+ }
-/***/ 6285:
-/***/ ((__unused_webpack_module, exports) => {
+ if (axis === 'X') {
+ return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;
+ }
+ }
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.HandlingBase = void 0;
-/**
- * Base class that implements event handling. With a an
- * event list this base class will expose events that can be
- * subscribed to. This will give your class generic events.
- *
- * @export
- * @abstract
- * @class HandlingBase
- * @template TEventHandler The type of event handler.
- * @template TDispatcher The type of dispatcher.
- * @template TList The type of event list.
- */
-class HandlingBase {
- /**
- * Creates an instance of HandlingBase.
- * @param {TList} events The event list. Used for event management.
- *
- * @memberOf HandlingBase
- */
- constructor(events) {
- this.events = events;
- }
- /**
- * Subscribes once to the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf HandlingBase
- */
- one(name, fn) {
- this.events.get(name).one(fn);
- }
- /**
- * Checks it the event has a subscription for the specified handler.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf HandlingBase
- */
- has(name, fn) {
- return this.events.get(name).has(fn);
- }
- /**
- * Subscribes to the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf HandlingBase
- */
- subscribe(name, fn) {
- this.events.get(name).subscribe(fn);
- }
- /**
- * Subscribes to the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf HandlingBase
- */
- sub(name, fn) {
- this.subscribe(name, fn);
- }
- /**
- * Unsubscribes from the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf HandlingBase
- */
- unsubscribe(name, fn) {
- this.events.get(name).unsubscribe(fn);
- }
- /**
- * Unsubscribes from the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf HandlingBase
- */
- unsub(name, fn) {
- this.unsubscribe(name, fn);
- }
-}
-exports.HandlingBase = HandlingBase;
+ /**
+ * indicates if an element has a scrollable overflow property in the axis
+ * @method canOverflow
+ * @param {Node} el
+ * @param {String} axis
+ * @returns {Boolean}
+ */
+ function canOverflow(el, axis) {
+ var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];
+ return overflowValue === 'auto' || overflowValue === 'scroll';
+ }
-/***/ }),
+ /**
+ * indicates if an element can be scrolled in either axis
+ * @method isScrollable
+ * @param {Node} el
+ * @param {String} axis
+ * @returns {Boolean}
+ */
+ function isScrollable(el) {
+ var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');
+ var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');
-/***/ 782:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+ return isScrollableY || isScrollableX;
+ }
-"use strict";
-
-/*!
- * Strongly Typed Events for TypeScript - Core
- * https://github.com/KeesCBakker/StronlyTypedEvents/
- * http://keestalkstech.com
- *
- * Copyright Kees C. Bakker / KeesTalksTech
- * Released under the MIT license
- */
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.SubscriptionChangeEventDispatcher = exports.HandlingBase = exports.PromiseDispatcherBase = exports.PromiseSubscription = exports.DispatchError = exports.EventManagement = exports.EventListBase = exports.DispatcherWrapper = exports.DispatcherBase = exports.Subscription = void 0;
-const DispatcherBase_1 = __webpack_require__(7015);
-Object.defineProperty(exports, "DispatcherBase", ({ enumerable: true, get: function () { return DispatcherBase_1.DispatcherBase; } }));
-const DispatchError_1 = __webpack_require__(371);
-Object.defineProperty(exports, "DispatchError", ({ enumerable: true, get: function () { return DispatchError_1.DispatchError; } }));
-const DispatcherWrapper_1 = __webpack_require__(7327);
-Object.defineProperty(exports, "DispatcherWrapper", ({ enumerable: true, get: function () { return DispatcherWrapper_1.DispatcherWrapper; } }));
-const EventListBase_1 = __webpack_require__(3704);
-Object.defineProperty(exports, "EventListBase", ({ enumerable: true, get: function () { return EventListBase_1.EventListBase; } }));
-const EventManagement_1 = __webpack_require__(1672);
-Object.defineProperty(exports, "EventManagement", ({ enumerable: true, get: function () { return EventManagement_1.EventManagement; } }));
-const HandlingBase_1 = __webpack_require__(6285);
-Object.defineProperty(exports, "HandlingBase", ({ enumerable: true, get: function () { return HandlingBase_1.HandlingBase; } }));
-const PromiseDispatcherBase_1 = __webpack_require__(7451);
-Object.defineProperty(exports, "PromiseDispatcherBase", ({ enumerable: true, get: function () { return PromiseDispatcherBase_1.PromiseDispatcherBase; } }));
-const PromiseSubscription_1 = __webpack_require__(893);
-Object.defineProperty(exports, "PromiseSubscription", ({ enumerable: true, get: function () { return PromiseSubscription_1.PromiseSubscription; } }));
-const Subscription_1 = __webpack_require__(5171);
-Object.defineProperty(exports, "Subscription", ({ enumerable: true, get: function () { return Subscription_1.Subscription; } }));
-const SubscriptionChangeEventHandler_1 = __webpack_require__(5519);
-Object.defineProperty(exports, "SubscriptionChangeEventDispatcher", ({ enumerable: true, get: function () { return SubscriptionChangeEventHandler_1.SubscriptionChangeEventDispatcher; } }));
+ /**
+ * finds scrollable parent of an element
+ * @method findScrollableParent
+ * @param {Node} el
+ * @returns {Node} el
+ */
+ function findScrollableParent(el) {
+ while (el !== d.body && isScrollable(el) === false) {
+ el = el.parentNode || el.host;
+ }
+ return el;
+ }
-/***/ }),
+ /**
+ * self invoked function that, given a context, steps through scrolling
+ * @method step
+ * @param {Object} context
+ * @returns {undefined}
+ */
+ function step(context) {
+ var time = now();
+ var value;
+ var currentX;
+ var currentY;
+ var elapsed = (time - context.startTime) / SCROLL_TIME;
-/***/ 1672:
-/***/ ((__unused_webpack_module, exports) => {
+ // avoid elapsed times higher than one
+ elapsed = elapsed > 1 ? 1 : elapsed;
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.EventManagement = void 0;
-/**
- * Allows the user to interact with the event.
- *
- * @export
- * @class EventManagement
- * @implements {IEventManagement}
- */
-class EventManagement {
- /**
- * Creates an instance of EventManagement.
- * @param {() => void} unsub An unsubscribe handler.
- *
- * @memberOf EventManagement
- */
- constructor(unsub) {
- this.unsub = unsub;
- this.propagationStopped = false;
- }
- /**
- * Stops the propagation of the event.
- * Cannot be used when async dispatch is done.
- *
- * @memberOf EventManagement
- */
- stopPropagation() {
- this.propagationStopped = true;
- }
-}
-exports.EventManagement = EventManagement;
+ // apply easing to elapsed time
+ value = ease(elapsed);
+ currentX = context.startX + (context.x - context.startX) * value;
+ currentY = context.startY + (context.y - context.startY) * value;
-/***/ }),
+ context.method.call(context.scrollable, currentX, currentY);
-/***/ 8165:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+ // scroll more if we have not reached our destination
+ if (currentX !== context.x || currentY !== context.y) {
+ w.requestAnimationFrame(step.bind(w, context));
+ }
+ }
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.EventDispatcher = void 0;
-const ste_core_1 = __webpack_require__(782);
-/**
- * Dispatcher implementation for events. Can be used to subscribe, unsubscribe
- * or dispatch events. Use the ToEvent() method to expose the event.
- *
- * @export
- * @class EventDispatcher
- * @extends {DispatcherBase>}
- * @implements {IEvent}
- * @template TSender The sender type.
- * @template TArgs The event arguments type.
- */
-class EventDispatcher extends ste_core_1.DispatcherBase {
- /**
- * Creates an instance of EventDispatcher.
- *
- * @memberOf EventDispatcher
- */
- constructor() {
- super();
- }
- /**
- * Dispatches the event.
- *
- * @param {TSender} sender The sender.
- * @param {TArgs} args The arguments.
- * @returns {IPropagationStatus} The propagation status to interact with the event
- *
- * @memberOf EventDispatcher
- */
- dispatch(sender, args) {
- const result = this._dispatch(false, this, arguments);
- if (result == null) {
- throw new ste_core_1.DispatchError("Got `null` back from dispatch.");
- }
- return result;
- }
- /**
- * Dispatches the event in an async way. Does not support event interaction.
- *
- * @param {TSender} sender The sender.
- * @param {TArgs} args The arguments.
- *
- * @memberOf EventDispatcher
- */
- dispatchAsync(sender, args) {
- this._dispatch(true, this, arguments);
- }
- /**
- * Creates an event from the dispatcher. Will return the dispatcher
- * in a wrapper. This will prevent exposure of any dispatcher methods.
- *
- * @returns {IEvent} The event.
- *
- * @memberOf EventDispatcher
- */
- asEvent() {
- return super.asEvent();
- }
-}
-exports.EventDispatcher = EventDispatcher;
+ /**
+ * scrolls window or element with a smooth behavior
+ * @method smoothScroll
+ * @param {Object|Node} el
+ * @param {Number} x
+ * @param {Number} y
+ * @returns {undefined}
+ */
+ function smoothScroll(el, x, y) {
+ var scrollable;
+ var startX;
+ var startY;
+ var method;
+ var startTime = now();
+ // define scroll context
+ if (el === d.body) {
+ scrollable = w;
+ startX = w.scrollX || w.pageXOffset;
+ startY = w.scrollY || w.pageYOffset;
+ method = original.scroll;
+ } else {
+ scrollable = el;
+ startX = el.scrollLeft;
+ startY = el.scrollTop;
+ method = scrollElement;
+ }
-/***/ }),
+ // scroll looping over a frame
+ step({
+ scrollable: scrollable,
+ method: method,
+ startTime: startTime,
+ startX: startX,
+ startY: startY,
+ x: x,
+ y: y
+ });
+ }
-/***/ 6846:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+ // ORIGINAL METHODS OVERRIDES
+ // w.scroll and w.scrollTo
+ w.scroll = w.scrollTo = function() {
+ // avoid action when no arguments are passed
+ if (arguments[0] === undefined) {
+ return;
+ }
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.EventHandlingBase = void 0;
-const ste_core_1 = __webpack_require__(782);
-const EventList_1 = __webpack_require__(3738);
-/**
- * Extends objects with signal event handling capabilities.
- */
-class EventHandlingBase extends ste_core_1.HandlingBase {
- constructor() {
- super(new EventList_1.EventList());
- }
-}
-exports.EventHandlingBase = EventHandlingBase;
+ // avoid smooth behavior if not required
+ if (shouldBailOut(arguments[0]) === true) {
+ original.scroll.call(
+ w,
+ arguments[0].left !== undefined
+ ? arguments[0].left
+ : typeof arguments[0] !== 'object'
+ ? arguments[0]
+ : w.scrollX || w.pageXOffset,
+ // use top prop, second argument if present or fallback to scrollY
+ arguments[0].top !== undefined
+ ? arguments[0].top
+ : arguments[1] !== undefined
+ ? arguments[1]
+ : w.scrollY || w.pageYOffset
+ );
+ return;
+ }
-/***/ }),
+ // LET THE SMOOTHNESS BEGIN!
+ smoothScroll.call(
+ w,
+ d.body,
+ arguments[0].left !== undefined
+ ? ~~arguments[0].left
+ : w.scrollX || w.pageXOffset,
+ arguments[0].top !== undefined
+ ? ~~arguments[0].top
+ : w.scrollY || w.pageYOffset
+ );
+ };
-/***/ 3738:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+ // w.scrollBy
+ w.scrollBy = function() {
+ // avoid action when no arguments are passed
+ if (arguments[0] === undefined) {
+ return;
+ }
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.EventList = void 0;
-const ste_core_1 = __webpack_require__(782);
-const EventDispatcher_1 = __webpack_require__(8165);
-/**
- * Storage class for multiple events that are accessible by name.
- * Events dispatchers are automatically created.
- */
-class EventList extends ste_core_1.EventListBase {
- /**
- * Creates a new EventList instance.
- */
- constructor() {
- super();
- }
- /**
- * Creates a new dispatcher instance.
- */
- createDispatcher() {
- return new EventDispatcher_1.EventDispatcher();
- }
-}
-exports.EventList = EventList;
+ // avoid smooth behavior if not required
+ if (shouldBailOut(arguments[0])) {
+ original.scrollBy.call(
+ w,
+ arguments[0].left !== undefined
+ ? arguments[0].left
+ : typeof arguments[0] !== 'object' ? arguments[0] : 0,
+ arguments[0].top !== undefined
+ ? arguments[0].top
+ : arguments[1] !== undefined ? arguments[1] : 0
+ );
+ return;
+ }
-/***/ }),
+ // LET THE SMOOTHNESS BEGIN!
+ smoothScroll.call(
+ w,
+ d.body,
+ ~~arguments[0].left + (w.scrollX || w.pageXOffset),
+ ~~arguments[0].top + (w.scrollY || w.pageYOffset)
+ );
+ };
-/***/ 198:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+ // Element.prototype.scroll and Element.prototype.scrollTo
+ Element.prototype.scroll = Element.prototype.scrollTo = function() {
+ // avoid action when no arguments are passed
+ if (arguments[0] === undefined) {
+ return;
+ }
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.NonUniformEventList = void 0;
-const EventDispatcher_1 = __webpack_require__(8165);
-/**
- * Similar to EventList, but instead of TArgs, a map of event names ang argument types is provided with TArgsMap.
- */
-class NonUniformEventList {
- constructor() {
- this._events = {};
- }
- /**
- * Gets the dispatcher associated with the name.
- * @param name The name of the event.
- */
- get(name) {
- if (this._events[name]) {
- // @TODO avoid typecasting. Not sure why TS thinks this._events[name] could still be undefined.
- return this._events[name];
- }
- const event = this.createDispatcher();
- this._events[name] = event;
- return event;
- }
- /**
- * Removes the dispatcher associated with the name.
- * @param name The name of the event.
- */
- remove(name) {
- delete this._events[name];
- }
- /**
- * Creates a new dispatcher instance.
- */
- createDispatcher() {
- return new EventDispatcher_1.EventDispatcher();
- }
-}
-exports.NonUniformEventList = NonUniformEventList;
+ // avoid smooth behavior if not required
+ if (shouldBailOut(arguments[0]) === true) {
+ // if one number is passed, throw error to match Firefox implementation
+ if (typeof arguments[0] === 'number' && arguments[1] === undefined) {
+ throw new SyntaxError('Value could not be converted');
+ }
+ original.elementScroll.call(
+ this,
+ // use left prop, first number argument or fallback to scrollLeft
+ arguments[0].left !== undefined
+ ? ~~arguments[0].left
+ : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,
+ // use top prop, second argument or fallback to scrollTop
+ arguments[0].top !== undefined
+ ? ~~arguments[0].top
+ : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop
+ );
-/***/ }),
-
-/***/ 8756:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+ return;
+ }
-"use strict";
-
-/*!
- * Strongly Typed Events for TypeScript - Core
- * https://github.com/KeesCBakker/StronlyTypedEvents/
- * http://keestalkstech.com
- *
- * Copyright Kees C. Bakker / KeesTalksTech
- * Released under the MIT license
- */
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.NonUniformEventList = exports.EventList = exports.EventHandlingBase = exports.EventDispatcher = void 0;
-const EventDispatcher_1 = __webpack_require__(8165);
-Object.defineProperty(exports, "EventDispatcher", ({ enumerable: true, get: function () { return EventDispatcher_1.EventDispatcher; } }));
-const EventHandlingBase_1 = __webpack_require__(6846);
-Object.defineProperty(exports, "EventHandlingBase", ({ enumerable: true, get: function () { return EventHandlingBase_1.EventHandlingBase; } }));
-const EventList_1 = __webpack_require__(3738);
-Object.defineProperty(exports, "EventList", ({ enumerable: true, get: function () { return EventList_1.EventList; } }));
-const NonUniformEventList_1 = __webpack_require__(198);
-Object.defineProperty(exports, "NonUniformEventList", ({ enumerable: true, get: function () { return NonUniformEventList_1.NonUniformEventList; } }));
+ var left = arguments[0].left;
+ var top = arguments[0].top;
+ // LET THE SMOOTHNESS BEGIN!
+ smoothScroll.call(
+ this,
+ this,
+ typeof left === 'undefined' ? this.scrollLeft : ~~left,
+ typeof top === 'undefined' ? this.scrollTop : ~~top
+ );
+ };
-/***/ }),
+ // Element.prototype.scrollBy
+ Element.prototype.scrollBy = function() {
+ // avoid action when no arguments are passed
+ if (arguments[0] === undefined) {
+ return;
+ }
-/***/ 7092:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+ // avoid smooth behavior if not required
+ if (shouldBailOut(arguments[0]) === true) {
+ original.elementScroll.call(
+ this,
+ arguments[0].left !== undefined
+ ? ~~arguments[0].left + this.scrollLeft
+ : ~~arguments[0] + this.scrollLeft,
+ arguments[0].top !== undefined
+ ? ~~arguments[0].top + this.scrollTop
+ : ~~arguments[1] + this.scrollTop
+ );
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.SignalDispatcher = void 0;
-const ste_core_1 = __webpack_require__(782);
-/**
- * The dispatcher handles the storage of subsciptions and facilitates
- * subscription, unsubscription and dispatching of a signal event.
- *
- * @export
- * @class SignalDispatcher
- * @extends {DispatcherBase}
- * @implements {ISignal}
- */
-class SignalDispatcher extends ste_core_1.DispatcherBase {
- /**
- * Dispatches the signal.
- *
- * @returns {IPropagationStatus} The status of the signal.
- *
- * @memberOf SignalDispatcher
- */
- dispatch() {
- const result = this._dispatch(false, this, arguments);
- if (result == null) {
- throw new ste_core_1.DispatchError("Got `null` back from dispatch.");
- }
- return result;
- }
- /**
- * Dispatches the signal without waiting for the result.
- *
- * @memberOf SignalDispatcher
- */
- dispatchAsync() {
- this._dispatch(true, this, arguments);
- }
- /**
- * Creates an event from the dispatcher. Will return the dispatcher
- * in a wrapper. This will prevent exposure of any dispatcher methods.
- *
- * @returns {ISignal} The signal.
- *
- * @memberOf SignalDispatcher
- */
- asEvent() {
- return super.asEvent();
- }
-}
-exports.SignalDispatcher = SignalDispatcher;
+ return;
+ }
+ this.scroll({
+ left: ~~arguments[0].left + this.scrollLeft,
+ top: ~~arguments[0].top + this.scrollTop,
+ behavior: arguments[0].behavior
+ });
+ };
-/***/ }),
+ // Element.prototype.scrollIntoView
+ Element.prototype.scrollIntoView = function() {
+ // avoid smooth behavior if not required
+ if (shouldBailOut(arguments[0]) === true) {
+ original.scrollIntoView.call(
+ this,
+ arguments[0] === undefined ? true : arguments[0]
+ );
-/***/ 4274:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+ return;
+ }
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.SignalHandlingBase = void 0;
-const ste_core_1 = __webpack_require__(782);
-const _1 = __webpack_require__(7046);
-/**
- * Extends objects with signal event handling capabilities.
- *
- * @export
- * @abstract
- * @class SignalHandlingBase
- * @extends {HandlingBase}
- * @implements {ISignalHandling}
- */
-class SignalHandlingBase extends ste_core_1.HandlingBase {
- /**
- * Creates an instance of SignalHandlingBase.
- *
- * @memberOf SignalHandlingBase
- */
- constructor() {
- super(new _1.SignalList());
- }
-}
-exports.SignalHandlingBase = SignalHandlingBase;
+ // LET THE SMOOTHNESS BEGIN!
+ var scrollableParent = findScrollableParent(this);
+ var parentRects = scrollableParent.getBoundingClientRect();
+ var clientRects = this.getBoundingClientRect();
+ if (scrollableParent !== d.body) {
+ // reveal element inside parent
+ smoothScroll.call(
+ this,
+ scrollableParent,
+ scrollableParent.scrollLeft + clientRects.left - parentRects.left,
+ scrollableParent.scrollTop + clientRects.top - parentRects.top
+ );
-/***/ }),
+ // reveal parent in viewport unless is fixed
+ if (w.getComputedStyle(scrollableParent).position !== 'fixed') {
+ w.scrollBy({
+ left: parentRects.left,
+ top: parentRects.top,
+ behavior: 'smooth'
+ });
+ }
+ } else {
+ // reveal element in viewport
+ w.scrollBy({
+ left: clientRects.left,
+ top: clientRects.top,
+ behavior: 'smooth'
+ });
+ }
+ };
+ }
-/***/ 831:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+ if (true) {
+ // commonjs
+ module.exports = { polyfill: polyfill };
+ } else // removed by dead control flow
+{}
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.SignalList = void 0;
-const ste_core_1 = __webpack_require__(782);
-const _1 = __webpack_require__(7046);
-/**
- * Storage class for multiple signal events that are accessible by name.
- * Events dispatchers are automatically created.
- *
- * @export
- * @class SignalList
- * @extends {EventListBase}
- */
-class SignalList extends ste_core_1.EventListBase {
- /**
- * Creates an instance of SignalList.
- *
- * @memberOf SignalList
- */
- constructor() {
- super();
- }
- /**
- * Creates a new dispatcher instance.
- *
- * @protected
- * @returns {SignalDispatcher}
- *
- * @memberOf SignalList
- */
- createDispatcher() {
- return new _1.SignalDispatcher();
- }
-}
-exports.SignalList = SignalList;
+}());
/***/ }),
-/***/ 7046:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-"use strict";
-
-/*!
- * Strongly Typed Events for TypeScript - Promise Signals
- * https://github.com/KeesCBakker/StronlyTypedEvents/
- * http://keestalkstech.com
- *
- * Copyright Kees C. Bakker / KeesTalksTech
- * Released under the MIT license
- */
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.SignalList = exports.SignalHandlingBase = exports.SignalDispatcher = void 0;
-const SignalDispatcher_1 = __webpack_require__(7092);
-Object.defineProperty(exports, "SignalDispatcher", ({ enumerable: true, get: function () { return SignalDispatcher_1.SignalDispatcher; } }));
-const SignalHandlingBase_1 = __webpack_require__(4274);
-Object.defineProperty(exports, "SignalHandlingBase", ({ enumerable: true, get: function () { return SignalHandlingBase_1.SignalHandlingBase; } }));
-const SignalList_1 = __webpack_require__(831);
-Object.defineProperty(exports, "SignalList", ({ enumerable: true, get: function () { return SignalList_1.SignalList; } }));
+/***/ 1234:
+/***/ (() => {
+/* (ignored) */
/***/ }),
-/***/ 2508:
+/***/ 1246:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.NonUniformSimpleEventList = void 0;
-const SimpleEventDispatcher_1 = __webpack_require__(5632);
+exports.NonUniformPromiseEventList = void 0;
+const PromiseEventDispatcher_1 = __webpack_require__(2330);
/**
* Similar to EventList, but instead of TArgs, a map of event names ang argument types is provided with TArgsMap.
*/
-class NonUniformSimpleEventList {
+class NonUniformPromiseEventList {
constructor() {
this._events = {};
}
@@ -1293,114 +1029,157 @@ class NonUniformSimpleEventList {
* Creates a new dispatcher instance.
*/
createDispatcher() {
- return new SimpleEventDispatcher_1.SimpleEventDispatcher();
+ return new PromiseEventDispatcher_1.PromiseEventDispatcher();
}
}
-exports.NonUniformSimpleEventList = NonUniformSimpleEventList;
+exports.NonUniformPromiseEventList = NonUniformPromiseEventList;
/***/ }),
-/***/ 5632:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+/***/ 1289:
+/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.SimpleEventDispatcher = void 0;
-const ste_core_1 = __webpack_require__(782);
+exports.EventManagement = void 0;
/**
- * The dispatcher handles the storage of subsciptions and facilitates
- * subscription, unsubscription and dispatching of a simple event
+ * Allows the user to interact with the event.
*
* @export
- * @class SimpleEventDispatcher
- * @extends {DispatcherBase>}
- * @implements {ISimpleEvent}
- * @template TArgs
+ * @class EventManagement
+ * @implements {IEventManagement}
*/
-class SimpleEventDispatcher extends ste_core_1.DispatcherBase {
+class EventManagement {
/**
- * Creates an instance of SimpleEventDispatcher.
+ * Creates an instance of EventManagement.
+ * @param {() => void} unsub An unsubscribe handler.
*
- * @memberOf SimpleEventDispatcher
+ * @memberOf EventManagement
*/
- constructor() {
- super();
+ constructor(unsub) {
+ this.unsub = unsub;
+ this.propagationStopped = false;
}
/**
- * Dispatches the event.
- *
- * @param {TArgs} args The arguments object.
- * @returns {IPropagationStatus} The status of the event.
+ * Stops the propagation of the event.
+ * Cannot be used when async dispatch is done.
*
- * @memberOf SimpleEventDispatcher
+ * @memberOf EventManagement
*/
- dispatch(args) {
- const result = this._dispatch(false, this, arguments);
- if (result == null) {
- throw new ste_core_1.DispatchError("Got `null` back from dispatch.");
- }
- return result;
+ stopPropagation() {
+ this.propagationStopped = true;
}
+}
+exports.EventManagement = EventManagement;
+
+
+/***/ }),
+
+/***/ 1385:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.EventManagement = void 0;
+/**
+ * Allows the user to interact with the event.
+ *
+ * @export
+ * @class EventManagement
+ * @implements {IEventManagement}
+ */
+class EventManagement {
/**
- * Dispatches the event without waiting for the result.
+ * Creates an instance of EventManagement.
+ * @param {() => void} unsub An unsubscribe handler.
*
- * @param {TArgs} args The arguments object.
+ * @memberOf EventManagement
+ */
+ constructor(unsub) {
+ this.unsub = unsub;
+ this.propagationStopped = false;
+ }
+ /**
+ * Stops the propagation of the event.
+ * Cannot be used when async dispatch is done.
*
- * @memberOf SimpleEventDispatcher
+ * @memberOf EventManagement
*/
- dispatchAsync(args) {
- this._dispatch(true, this, arguments);
+ stopPropagation() {
+ this.propagationStopped = true;
}
+}
+exports.EventManagement = EventManagement;
+
+
+/***/ }),
+
+/***/ 1789:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.SubscriptionChangeEventDispatcher = void 0;
+const __1 = __webpack_require__(5575);
+/**
+ * Dispatcher for subscription changes.
+ *
+ * @export
+ * @class SubscriptionChangeEventDispatcher
+ * @extends {DispatcherBase}
+ */
+class SubscriptionChangeEventDispatcher extends __1.DispatcherBase {
/**
- * Creates an event from the dispatcher. Will return the dispatcher
- * in a wrapper. This will prevent exposure of any dispatcher methods.
+ * Dispatches the event.
*
- * @returns {ISimpleEvent} The event.
+ * @param {number} count The currrent number of subscriptions.
*
- * @memberOf SimpleEventDispatcher
+ * @memberOf SubscriptionChangeEventDispatcher
*/
- asEvent() {
- return super.asEvent();
+ dispatch(count) {
+ this._dispatch(false, this, arguments);
}
}
-exports.SimpleEventDispatcher = SimpleEventDispatcher;
+exports.SubscriptionChangeEventDispatcher = SubscriptionChangeEventDispatcher;
/***/ }),
-/***/ 2781:
+/***/ 2162:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.SimpleEventHandlingBase = void 0;
-const ste_core_1 = __webpack_require__(782);
-const SimpleEventList_1 = __webpack_require__(5596);
+exports.EventHandlingBase = void 0;
+const ste_core_1 = __webpack_require__(4604);
+const EventList_1 = __webpack_require__(338);
/**
* Extends objects with signal event handling capabilities.
*/
-class SimpleEventHandlingBase extends ste_core_1.HandlingBase {
+class EventHandlingBase extends ste_core_1.HandlingBase {
constructor() {
- super(new SimpleEventList_1.SimpleEventList());
+ super(new EventList_1.EventList());
}
}
-exports.SimpleEventHandlingBase = SimpleEventHandlingBase;
+exports.EventHandlingBase = EventHandlingBase;
/***/ }),
-/***/ 5596:
+/***/ 2175:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.SimpleEventList = void 0;
-const ste_core_1 = __webpack_require__(782);
-const SimpleEventDispatcher_1 = __webpack_require__(5632);
+const ste_core_1 = __webpack_require__(4604);
+const SimpleEventDispatcher_1 = __webpack_require__(9606);
/**
* Storage class for multiple simple events that are accessible by name.
* Events dispatchers are automatically created.
@@ -1424,147 +1203,342 @@ exports.SimpleEventList = SimpleEventList;
/***/ }),
-/***/ 7959:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+/***/ 2210:
+/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.NonUniformSimpleEventList = exports.SimpleEventList = exports.SimpleEventHandlingBase = exports.SimpleEventDispatcher = void 0;
-const SimpleEventDispatcher_1 = __webpack_require__(5632);
-Object.defineProperty(exports, "SimpleEventDispatcher", ({ enumerable: true, get: function () { return SimpleEventDispatcher_1.SimpleEventDispatcher; } }));
-const SimpleEventHandlingBase_1 = __webpack_require__(2781);
-Object.defineProperty(exports, "SimpleEventHandlingBase", ({ enumerable: true, get: function () { return SimpleEventHandlingBase_1.SimpleEventHandlingBase; } }));
-const NonUniformSimpleEventList_1 = __webpack_require__(2508);
-Object.defineProperty(exports, "NonUniformSimpleEventList", ({ enumerable: true, get: function () { return NonUniformSimpleEventList_1.NonUniformSimpleEventList; } }));
-const SimpleEventList_1 = __webpack_require__(5596);
-Object.defineProperty(exports, "SimpleEventList", ({ enumerable: true, get: function () { return SimpleEventList_1.SimpleEventList; } }));
-
-
-/***/ }),
-
-/***/ 291:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-"use strict";
-var __webpack_unused_export__;
-
-/*!
- * Strongly Typed Events for TypeScript
- * https://github.com/KeesCBakker/StronlyTypedEvents/
- * http://keestalkstech.com
+exports.DispatchError = void 0;
+/**
+ * Indicates an error with dispatching.
*
- * Copyright Kees C. Bakker / KeesTalksTech
- * Released under the MIT license
+ * @export
+ * @class DispatchError
+ * @extends {Error}
*/
-__webpack_unused_export__ = ({ value: true });
-__webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = exports.nz = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = exports.FK = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = void 0;
-var ste_core_1 = __webpack_require__(782);
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.Subscription; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.DispatcherBase; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.DispatcherWrapper; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.EventListBase; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.EventManagement; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.DispatchError; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.PromiseSubscription; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.PromiseDispatcherBase; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.HandlingBase; } });
-var ste_events_1 = __webpack_require__(8756);
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_events_1.EventDispatcher; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_events_1.EventHandlingBase; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_events_1.EventList; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_events_1.NonUniformEventList; } });
-var ste_simple_events_1 = __webpack_require__(7959);
-Object.defineProperty(exports, "FK", ({ enumerable: true, get: function () { return ste_simple_events_1.SimpleEventDispatcher; } }));
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_simple_events_1.SimpleEventHandlingBase; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_simple_events_1.SimpleEventList; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_simple_events_1.NonUniformSimpleEventList; } });
-var ste_signals_1 = __webpack_require__(7046);
-Object.defineProperty(exports, "nz", ({ enumerable: true, get: function () { return ste_signals_1.SignalDispatcher; } }));
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_signals_1.SignalHandlingBase; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_signals_1.SignalList; } });
-var ste_promise_events_1 = __webpack_require__(6586);
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_events_1.PromiseEventDispatcher; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_events_1.PromiseEventHandlingBase; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_events_1.PromiseEventList; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_events_1.NonUniformPromiseEventList; } });
-var ste_promise_signals_1 = __webpack_require__(6838);
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_signals_1.PromiseSignalDispatcher; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_signals_1.PromiseSignalHandlingBase; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_signals_1.PromiseSignalList; } });
-var ste_promise_simple_events_1 = __webpack_require__(9176);
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_simple_events_1.PromiseSimpleEventDispatcher; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_simple_events_1.PromiseSimpleEventHandlingBase; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_simple_events_1.PromiseSimpleEventList; } });
-__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_simple_events_1.NonUniformPromiseSimpleEventList; } });
+class DispatchError extends Error {
+ /**
+ * Creates an instance of DispatchError.
+ * @param {string} message The message.
+ *
+ * @memberOf DispatchError
+ */
+ constructor(message) {
+ super(message);
+ }
+}
+exports.DispatchError = DispatchError;
/***/ }),
-/***/ 5481:
-/***/ (() => {
+/***/ 2287:
+/***/ (function(module) {
-!function (window, module) {
- // source content
- (function main(global, module, isWorker, workerSize) {
- function noop() {} // create a promise if it exists, otherwise, just
- // call the function directly
+;(function() {
+ var self = {};
+ if(Math.seedrandom) seedrandom = Math.seedrandom;
- function promise(func) {
- var ModulePromise = module.exports.Promise;
- var Prom = ModulePromise !== void 0 ? ModulePromise : global.Promise;
+ var isArray = function($){
+ return Object.prototype.toString.call( $ ) === '[object Array]'
+ }
- if (typeof Prom === "function") {
- return new Prom(func);
- }
+ var extend = function(obj) {
+ for (var i = 1; i < arguments.length; i++) for (var key in arguments[i]) obj[key] = arguments[i][key];
+ return obj;
+ }
- func(noop, noop);
- return null;
- }
+ var seedify = function(seed){
+ if (/(number|string)/i.test(Object.prototype.toString.call(seed).match(/^\[object (.*)\]$/)[1])) return seed;
+ if (isNaN(seed)) return Number(String((this.strSeed = seed)).split('').map(function(x){return x.charCodeAt(0)}).join(''));
+ return seed;
+ }
- var raf = function () {
- var TIME = Math.floor(1000 / 60);
- var frame, cancel;
- var frames = {};
- var lastFrameTime = 0;
+ var seedRand = function(func,min,max){
+ return Math.floor(func() * (max - min + 1)) + min;
+ }
- if (typeof requestAnimationFrame === "function" && typeof cancelAnimationFrame === "function") {
- frame = function (cb) {
- var id = Math.random();
- frames[id] = requestAnimationFrame(function onFrame(time) {
- if (lastFrameTime === time || lastFrameTime + TIME - 1 < time) {
- lastFrameTime = time;
- delete frames[id];
- cb();
- } else {
- frames[id] = requestAnimationFrame(onFrame);
- }
- });
- return id;
- };
+ self.shuffle = function(arr,seed){
+ if (!isArray(arr)) return null;
+ seed = seedify(seed) || 'none';
- cancel = function (id) {
- if (frames[id]) {
- cancelAnimationFrame(frames[id]);
- }
- };
- } else {
- frame = function (cb) {
- return setTimeout(cb, TIME);
- };
+ var size = arr.length;
+ var rng = seedrandom(seed);
+ var resp = [];
+ var keys = [];
- cancel = function (timer) {
- return clearTimeout(timer);
- };
- }
+ for(var i=0;i {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.NonUniformEventList = void 0;
+const EventDispatcher_1 = __webpack_require__(71);
+/**
+ * Similar to EventList, but instead of TArgs, a map of event names ang argument types is provided with TArgsMap.
+ */
+class NonUniformEventList {
+ constructor() {
+ this._events = {};
+ }
+ /**
+ * Gets the dispatcher associated with the name.
+ * @param name The name of the event.
+ */
+ get(name) {
+ if (this._events[name]) {
+ // @TODO avoid typecasting. Not sure why TS thinks this._events[name] could still be undefined.
+ return this._events[name];
+ }
+ const event = this.createDispatcher();
+ this._events[name] = event;
+ return event;
+ }
+ /**
+ * Removes the dispatcher associated with the name.
+ * @param name The name of the event.
+ */
+ remove(name) {
+ delete this._events[name];
+ }
+ /**
+ * Creates a new dispatcher instance.
+ */
+ createDispatcher() {
+ return new EventDispatcher_1.EventDispatcher();
+ }
+}
+exports.NonUniformEventList = NonUniformEventList;
+
+
+/***/ }),
+
+/***/ 2330:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.PromiseEventDispatcher = void 0;
+const ste_core_1 = __webpack_require__(9184);
+/**
+ * Dispatcher implementation for events. Can be used to subscribe, unsubscribe
+ * or dispatch events. Use the ToEvent() method to expose the event.
+ *
+ * @export
+ * @class PromiseEventDispatcher
+ * @extends {PromiseDispatcherBase>}
+ * @implements {IPromiseEvent}
+ * @template TSender
+ * @template TArgs
+ */
+class PromiseEventDispatcher extends ste_core_1.PromiseDispatcherBase {
+ /**
+ * Creates a new EventDispatcher instance.
+ */
+ constructor() {
+ super();
+ }
+ /**
+ * Dispatches the event.
+ *
+ * @param {TSender} sender The sender object.
+ * @param {TArgs} args The argument object.
+ * @returns {Promise} The status.
+ *
+ * @memberOf PromiseEventDispatcher
+ */
+ async dispatch(sender, args) {
+ const result = await this._dispatchAsPromise(false, this, arguments);
+ if (result == null) {
+ throw new ste_core_1.DispatchError("Got `null` back from dispatch.");
+ }
+ return result;
+ }
+ /**
+ * Dispatches the event without waiting for the result.
+ *
+ * @param {TSender} sender The sender object.
+ * @param {TArgs} args The argument object.
+ *
+ * @memberOf PromiseEventDispatcher
+ */
+ dispatchAsync(sender, args) {
+ this._dispatchAsPromise(true, this, arguments);
+ }
+ /**
+ * Creates an event from the dispatcher. Will return the dispatcher
+ * in a wrapper. This will prevent exposure of any dispatcher methods.
+ */
+ asEvent() {
+ return super.asEvent();
+ }
+}
+exports.PromiseEventDispatcher = PromiseEventDispatcher;
+
+
+/***/ }),
+
+/***/ 2725:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.SignalDispatcher = void 0;
+const ste_core_1 = __webpack_require__(4604);
+/**
+ * The dispatcher handles the storage of subsciptions and facilitates
+ * subscription, unsubscription and dispatching of a signal event.
+ *
+ * @export
+ * @class SignalDispatcher
+ * @extends {DispatcherBase}
+ * @implements {ISignal}
+ */
+class SignalDispatcher extends ste_core_1.DispatcherBase {
+ /**
+ * Dispatches the signal.
+ *
+ * @returns {IPropagationStatus} The status of the signal.
+ *
+ * @memberOf SignalDispatcher
+ */
+ dispatch() {
+ const result = this._dispatch(false, this, arguments);
+ if (result == null) {
+ throw new ste_core_1.DispatchError("Got `null` back from dispatch.");
+ }
+ return result;
+ }
+ /**
+ * Dispatches the signal without waiting for the result.
+ *
+ * @memberOf SignalDispatcher
+ */
+ dispatchAsync() {
+ this._dispatch(true, this, arguments);
+ }
+ /**
+ * Creates an event from the dispatcher. Will return the dispatcher
+ * in a wrapper. This will prevent exposure of any dispatcher methods.
+ *
+ * @returns {ISignal} The signal.
+ *
+ * @memberOf SignalDispatcher
+ */
+ asEvent() {
+ return super.asEvent();
+ }
+}
+exports.SignalDispatcher = SignalDispatcher;
+
+
+/***/ }),
+
+/***/ 2995:
+/***/ (() => {
+
+!function (window, module) {
+ // source content
+ (function main(global, module, isWorker, workerSize) {
+ function noop() {}
+
+ // create a promise if it exists, otherwise, just
+ // call the function directly
+ function promise(func) {
+ var ModulePromise = module.exports.Promise;
+ var Prom = ModulePromise !== void 0 ? ModulePromise : global.Promise;
+ if (typeof Prom === "function") {
+ return new Prom(func);
+ }
+ func(noop, noop);
+ return null;
+ }
+ var raf = function () {
+ var TIME = Math.floor(1000 / 60);
+ var frame, cancel;
+ var frames = {};
+ var lastFrameTime = 0;
+ if (typeof requestAnimationFrame === "function" && typeof cancelAnimationFrame === "function") {
+ frame = function (cb) {
+ var id = Math.random();
+ frames[id] = requestAnimationFrame(function onFrame(time) {
+ if (lastFrameTime === time || lastFrameTime + TIME - 1 < time) {
+ lastFrameTime = time;
+ delete frames[id];
+ cb();
+ } else {
+ frames[id] = requestAnimationFrame(onFrame);
+ }
+ });
+ return id;
+ };
+ cancel = function (id) {
+ if (frames[id]) {
+ cancelAnimationFrame(frames[id]);
+ }
+ };
+ } else {
+ frame = function (cb) {
+ return setTimeout(cb, TIME);
+ };
+ cancel = function (timer) {
+ return clearTimeout(timer);
+ };
+ }
return {
frame: frame,
cancel: cancel
};
}();
-
var defaults = {
particleCount: 50,
angle: 90,
@@ -1583,68 +1557,54 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
disableForReducedMotion: false,
scalar: 1
};
-
function convert(val, transform) {
return transform ? transform(val) : val;
}
-
function isOk(val) {
return !(val === null || val === undefined);
}
-
function prop(options, name, transform) {
return convert(options && isOk(options[name]) ? options[name] : defaults[name], transform);
}
-
function onlyPositiveInt(number) {
return number < 0 ? 0 : Math.floor(number);
}
-
function randomInt(min, max) {
// [min, max)
return Math.floor(Math.random() * (max - min)) + min;
}
-
function toDecimal(str) {
return parseInt(str, 16);
}
-
function colorsToRgb(colors) {
return colors.map(hexToRgb);
}
-
function hexToRgb(str) {
var val = String(str).replace(/[^0-9a-f]/gi, "");
-
if (val.length < 6) {
val = val[0] + val[0] + val[1] + val[1] + val[2] + val[2];
}
-
return {
r: toDecimal(val.substring(0, 2)),
g: toDecimal(val.substring(2, 4)),
b: toDecimal(val.substring(4, 6))
};
}
-
function getOrigin(options) {
var origin = prop(options, "origin", Object);
origin.x = prop(origin, "x", Number);
origin.y = prop(origin, "y", Number);
return origin;
}
-
function setCanvasWindowSize(canvas) {
canvas.width = document.documentElement.clientWidth;
canvas.height = document.documentElement.clientHeight;
}
-
function setCanvasRectSize(canvas) {
var rect = canvas.getBoundingClientRect();
canvas.width = rect.width;
canvas.height = rect.height;
}
-
function getCanvas(zIndex) {
var canvas = document.createElement("canvas");
canvas.style.position = "fixed";
@@ -1654,7 +1614,6 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
canvas.style.zIndex = zIndex;
return canvas;
}
-
function ellipse(context, x, y, radiusX, radiusY, rotation, startAngle, endAngle, antiClockwise) {
context.save();
context.translate(x, y);
@@ -1663,7 +1622,6 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
context.arc(0, 0, 1, startAngle, endAngle, antiClockwise);
context.restore();
}
-
function randomPhysics(opts) {
var radAngle = opts.angle * (Math.PI / 180);
var radSpread = opts.spread * (Math.PI / 180);
@@ -1690,7 +1648,6 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
scalar: opts.scalar
};
}
-
function updateFetti(context, fetti) {
fetti.x += Math.cos(fetti.angle2D) * fetti.velocity + fetti.drift;
fetti.y += Math.sin(fetti.angle2D) * fetti.velocity + fetti.gravity;
@@ -1709,7 +1666,6 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
var y2 = fetti.wobbleY + fetti.random * fetti.tiltSin;
context.fillStyle = "rgba(" + fetti.color.r + ", " + fetti.color.g + ", " + fetti.color.b + ", " + (1 - progress) + ")";
context.beginPath();
-
if (fetti.shape === "circle") {
context.ellipse ? context.ellipse(fetti.x, fetti.y, Math.abs(x2 - x1) * fetti.ovalScalar, Math.abs(y2 - y1) * fetti.ovalScalar, Math.PI / 10 * fetti.wobble, 0, 2 * Math.PI) : ellipse(context, fetti.x, fetti.y, Math.abs(x2 - x1) * fetti.ovalScalar, Math.abs(y2 - y1) * fetti.ovalScalar, Math.PI / 10 * fetti.wobble, 0, 2 * Math.PI);
} else {
@@ -1718,12 +1674,10 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
context.lineTo(Math.floor(x2), Math.floor(y2));
context.lineTo(Math.floor(x1), Math.floor(fetti.wobbleY));
}
-
context.closePath();
context.fill();
return fetti.tick < fetti.totalTicks;
}
-
function animate(canvas, fettis, resizer, size, done) {
var animatingFettis = fettis.slice();
var context = canvas.getContext("2d");
@@ -1736,31 +1690,26 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
done();
resolve();
}
-
function update() {
if (isWorker && !(size.width === workerSize.width && size.height === workerSize.height)) {
size.width = canvas.width = workerSize.width;
size.height = canvas.height = workerSize.height;
}
-
if (!size.width && !size.height) {
resizer(canvas);
size.width = canvas.width;
size.height = canvas.height;
}
-
context.clearRect(0, 0, size.width, size.height);
animatingFettis = animatingFettis.filter(function (fetti) {
return updateFetti(context, fetti);
});
-
if (animatingFettis.length) {
animationFrame = raf.frame(update);
} else {
onDone();
}
}
-
animationFrame = raf.frame(update);
destroy = onDone;
});
@@ -1775,14 +1724,12 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
if (animationFrame) {
raf.cancel(animationFrame);
}
-
if (destroy) {
destroy();
}
}
};
}
-
function confettiCannon(canvas, globalOpts) {
var isLibCanvas = !canvas;
var allowResize = !!prop(globalOpts || {}, "resize");
@@ -1792,7 +1739,6 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
var initialized = canvas && worker ? !!canvas.__confetti_initialized : false;
var preferLessMotion = typeof matchMedia === "function" && matchMedia("(prefers-reduced-motion)").matches;
var animationObj;
-
function fireLocal(options, size, done) {
var particleCount = prop(options, "particleCount", onlyPositiveInt);
var angle = prop(options, "angle", Number);
@@ -1810,7 +1756,6 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
var fettis = [];
var startX = canvas.width * origin.x;
var startY = canvas.height * origin.y;
-
while (temp--) {
fettis.push(randomPhysics({
x: startX,
@@ -1826,28 +1771,24 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
drift: drift,
scalar: scalar
}));
- } // if we have a previous canvas already animating,
- // add to it
-
+ }
+ // if we have a previous canvas already animating,
+ // add to it
if (animationObj) {
return animationObj.addFettis(fettis);
}
-
animationObj = animate(canvas, fettis, resizer, size, done);
return animationObj.promise;
}
-
function fire(options) {
var disableForReducedMotion = globalDisableForReducedMotion || prop(options, "disableForReducedMotion", Boolean);
var zIndex = prop(options, "zIndex", Number);
-
if (disableForReducedMotion && preferLessMotion) {
return promise(function (resolve) {
resolve();
});
}
-
if (isLibCanvas && animationObj) {
// use existing canvas from in-progress animation
canvas = animationObj.canvas;
@@ -1856,54 +1797,43 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
canvas = getCanvas(zIndex);
document.body.appendChild(canvas);
}
-
if (allowResize && !initialized) {
// initialize the size of a user-supplied canvas
resizer(canvas);
}
-
var size = {
width: canvas.width,
height: canvas.height
};
initialized = true;
-
function onResize() {
// don't actually query the size here, since this
// can execute frequently and rapidly
size.width = size.height = null;
}
-
function done() {
animationObj = null;
-
if (allowResize) {
global.removeEventListener("resize", onResize);
}
-
if (isLibCanvas && canvas) {
document.body.removeChild(canvas);
canvas = null;
initialized = false;
}
}
-
if (allowResize) {
global.addEventListener("resize", onResize, false);
}
-
return fireLocal(options, size, done);
}
-
fire.reset = function () {
if (animationObj) {
animationObj.reset();
}
};
-
return fire;
}
-
module.exports = confettiCannon(null, {
useWorker: true,
resize: true
@@ -1913,160 +1843,86 @@ __webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_p
if (typeof window !== "undefined") {
return window;
}
-
if (typeof self !== "undefined") {
return self;
}
-
return this || {};
- }(), module, false); // end source content
+ }(), module, false);
+ // end source content
window.confetti = module.exports;
}(window, {});
/***/ }),
-/***/ 6377:
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-// A library of seedable RNGs implemented in Javascript.
-//
-// Usage:
-//
-// var seedrandom = require('seedrandom');
-// var random = seedrandom(1); // or any seed.
-// var x = random(); // 0 <= x < 1. Every bit is random.
-// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.
-
-// alea, a 53-bit multiply-with-carry generator by Johannes Baagøe.
-// Period: ~2^116
-// Reported to pass all BigCrush tests.
-var alea = __webpack_require__(4832);
-
-// xor128, a pure xor-shift generator by George Marsaglia.
-// Period: 2^128-1.
-// Reported to fail: MatrixRank and LinearComp.
-var xor128 = __webpack_require__(8652);
-
-// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.
-// Period: 2^192-2^32
-// Reported to fail: CollisionOver, SimpPoker, and LinearComp.
-var xorwow = __webpack_require__(801);
-
-// xorshift7, by François Panneton and Pierre L'ecuyer, takes
-// a different approach: it adds robustness by allowing more shifts
-// than Marsaglia's original three. It is a 7-shift generator
-// with 256 bits, that passes BigCrush with no systmatic failures.
-// Period 2^256-1.
-// No systematic BigCrush failures reported.
-var xorshift7 = __webpack_require__(2030);
-
-// xor4096, by Richard Brent, is a 4096-bit xor-shift with a
-// very long period that also adds a Weyl generator. It also passes
-// BigCrush with no systematic failures. Its long period may
-// be useful if you have many generators and need to avoid
-// collisions.
-// Period: 2^4128-2^32.
-// No systematic BigCrush failures reported.
-var xor4096 = __webpack_require__(3618);
-
-// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random
-// number generator derived from ChaCha, a modern stream cipher.
-// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf
-// Period: ~2^127
-// No systematic BigCrush failures reported.
-var tychei = __webpack_require__(9049);
-
-// The original ARC4-based prng included in this library.
-// Period: ~2^1600
-var sr = __webpack_require__(1971);
-
-sr.alea = alea;
-sr.xor128 = xor128;
-sr.xorwow = xorwow;
-sr.xorshift7 = xorshift7;
-sr.xor4096 = xor4096;
-sr.tychei = tychei;
-
-module.exports = sr;
-
-
-/***/ }),
-
-/***/ 4832:
+/***/ 3031:
/***/ (function(module, exports, __webpack_require__) {
/* module decorator */ module = __webpack_require__.nmd(module);
-var __WEBPACK_AMD_DEFINE_RESULT__;// A port of an algorithm by Johannes Baagøe , 2010
-// http://baagoe.com/en/RandomMusings/javascript/
-// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror
-// Original work is under MIT license -
-
-// Copyright (C) 2010 by Johannes Baagøe
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-
+var __WEBPACK_AMD_DEFINE_RESULT__;// A Javascript implementaion of the "xorwow" prng algorithm by
+// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper
(function(global, module, define) {
-function Alea(seed) {
- var me = this, mash = Mash();
+function XorGen(seed) {
+ var me = this, strseed = '';
+ // Set up generator function.
me.next = function() {
- var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32
- me.s0 = me.s1;
- me.s1 = me.s2;
- return me.s2 = t - (me.c = t | 0);
+ var t = (me.x ^ (me.x >>> 2));
+ me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;
+ return (me.d = (me.d + 362437 | 0)) +
+ (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;
};
- // Apply the seeding algorithm from Baagoe.
- me.c = 1;
- me.s0 = mash(' ');
- me.s1 = mash(' ');
- me.s2 = mash(' ');
- me.s0 -= mash(seed);
- if (me.s0 < 0) { me.s0 += 1; }
- me.s1 -= mash(seed);
- if (me.s1 < 0) { me.s1 += 1; }
- me.s2 -= mash(seed);
- if (me.s2 < 0) { me.s2 += 1; }
- mash = null;
+ me.x = 0;
+ me.y = 0;
+ me.z = 0;
+ me.w = 0;
+ me.v = 0;
+
+ if (seed === (seed | 0)) {
+ // Integer seed.
+ me.x = seed;
+ } else {
+ // String seed.
+ strseed += seed;
+ }
+
+ // Mix in string seed, then discard an initial batch of 64 values.
+ for (var k = 0; k < strseed.length + 64; k++) {
+ me.x ^= strseed.charCodeAt(k) | 0;
+ if (k == strseed.length) {
+ me.d = me.x << 10 ^ me.x >>> 4;
+ }
+ me.next();
+ }
}
function copy(f, t) {
- t.c = f.c;
- t.s0 = f.s0;
- t.s1 = f.s1;
- t.s2 = f.s2;
+ t.x = f.x;
+ t.y = f.y;
+ t.z = f.z;
+ t.w = f.w;
+ t.v = f.v;
+ t.d = f.d;
return t;
}
function impl(seed, opts) {
- var xg = new Alea(seed),
+ var xg = new XorGen(seed),
state = opts && opts.state,
- prng = xg.next;
- prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }
+ prng = function() { return (xg.next() >>> 0) / 0x100000000; };
prng.double = function() {
- return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53
+ do {
+ var top = xg.next() >>> 11,
+ bot = (xg.next() >>> 0) / 0x100000000,
+ result = (top + bot) / (1 << 21);
+ } while (result === 0);
+ return result;
};
+ prng.int32 = xg.next;
prng.quick = prng;
if (state) {
if (typeof(state) == 'object') copy(state, xg);
@@ -2075,35 +1931,13 @@ function impl(seed, opts) {
return prng;
}
-function Mash() {
- var n = 0xefc8249d;
-
- var mash = function(data) {
- data = data.toString();
- for (var i = 0; i < data.length; i++) {
- n += data.charCodeAt(i);
- var h = 0.02519603282416938 * n;
- n = h >>> 0;
- h -= n;
- h *= n;
- n = h >>> 0;
- h -= n;
- n += h * 0x100000000; // 2^32
- }
- return (n >>> 0) * 2.3283064365386963e-10; // 2^-32
- };
-
- return mash;
-}
-
-
if (module && module.exports) {
module.exports = impl;
} else if (__webpack_require__.amdD && __webpack_require__.amdO) {
!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { return impl; }).call(exports, __webpack_require__, exports, module),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else {
- this.alea = impl;
+ this.xorwow = impl;
}
})(
@@ -2117,76 +1951,54 @@ if (module && module.exports) {
/***/ }),
-/***/ 9049:
+/***/ 3181:
/***/ (function(module, exports, __webpack_require__) {
/* module decorator */ module = __webpack_require__.nmd(module);
-var __WEBPACK_AMD_DEFINE_RESULT__;// A Javascript implementaion of the "Tyche-i" prng algorithm by
-// Samuel Neves and Filipe Araujo.
-// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf
+var __WEBPACK_AMD_DEFINE_RESULT__;// A Javascript implementaion of the "xor128" prng algorithm by
+// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper
(function(global, module, define) {
function XorGen(seed) {
var me = this, strseed = '';
+ me.x = 0;
+ me.y = 0;
+ me.z = 0;
+ me.w = 0;
+
// Set up generator function.
me.next = function() {
- var b = me.b, c = me.c, d = me.d, a = me.a;
- b = (b << 25) ^ (b >>> 7) ^ c;
- c = (c - d) | 0;
- d = (d << 24) ^ (d >>> 8) ^ a;
- a = (a - b) | 0;
- me.b = b = (b << 20) ^ (b >>> 12) ^ c;
- me.c = c = (c - d) | 0;
- me.d = (d << 16) ^ (c >>> 16) ^ a;
- return me.a = (a - b) | 0;
+ var t = me.x ^ (me.x << 11);
+ me.x = me.y;
+ me.y = me.z;
+ me.z = me.w;
+ return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);
};
- /* The following is non-inverted tyche, which has better internal
- * bit diffusion, but which is about 25% slower than tyche-i in JS.
- me.next = function() {
- var a = me.a, b = me.b, c = me.c, d = me.d;
- a = (me.a + me.b | 0) >>> 0;
- d = me.d ^ a; d = d << 16 ^ d >>> 16;
- c = me.c + d | 0;
- b = me.b ^ c; b = b << 12 ^ d >>> 20;
- me.a = a = a + b | 0;
- d = d ^ a; me.d = d = d << 8 ^ d >>> 24;
- me.c = c = c + d | 0;
- b = b ^ c;
- return me.b = (b << 7 ^ b >>> 25);
- }
- */
-
- me.a = 0;
- me.b = 0;
- me.c = 2654435769 | 0;
- me.d = 1367130551;
-
- if (seed === Math.floor(seed)) {
+ if (seed === (seed | 0)) {
// Integer seed.
- me.a = (seed / 0x100000000) | 0;
- me.b = seed | 0;
+ me.x = seed;
} else {
// String seed.
strseed += seed;
}
// Mix in string seed, then discard an initial batch of 64 values.
- for (var k = 0; k < strseed.length + 20; k++) {
- me.b ^= strseed.charCodeAt(k) | 0;
+ for (var k = 0; k < strseed.length + 64; k++) {
+ me.x ^= strseed.charCodeAt(k) | 0;
me.next();
}
}
function copy(f, t) {
- t.a = f.a;
- t.b = f.b;
- t.c = f.c;
- t.d = f.d;
+ t.x = f.x;
+ t.y = f.y;
+ t.z = f.z;
+ t.w = f.w;
return t;
-};
+}
function impl(seed, opts) {
var xg = new XorGen(seed),
@@ -2215,7 +2027,7 @@ if (module && module.exports) {
!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { return impl; }).call(exports, __webpack_require__, exports, module),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else {
- this.tychei = impl;
+ this.xor128 = impl;
}
})(
@@ -2229,363 +2041,352 @@ if (module && module.exports) {
/***/ }),
-/***/ 8652:
-/***/ (function(module, exports, __webpack_require__) {
+/***/ 3184:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-/* module decorator */ module = __webpack_require__.nmd(module);
-var __WEBPACK_AMD_DEFINE_RESULT__;// A Javascript implementaion of the "xor128" prng algorithm by
-// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper
+var seedrandom = __webpack_require__(7391);
+var self = __webpack_require__(2287);
-(function(global, module, define) {
+module.exports = self;
-function XorGen(seed) {
- var me = this, strseed = '';
- me.x = 0;
- me.y = 0;
- me.z = 0;
- me.w = 0;
- // Set up generator function.
- me.next = function() {
- var t = me.x ^ (me.x << 11);
- me.x = me.y;
- me.y = me.z;
- me.z = me.w;
- return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);
- };
+/***/ }),
- if (seed === (seed | 0)) {
- // Integer seed.
- me.x = seed;
- } else {
- // String seed.
- strseed += seed;
- }
+/***/ 3199:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- // Mix in string seed, then discard an initial batch of 64 values.
- for (var k = 0; k < strseed.length + 64; k++) {
- me.x ^= strseed.charCodeAt(k) | 0;
- me.next();
- }
-}
+"use strict";
+var __webpack_unused_export__;
+
+/*!
+ * Strongly Typed Events for TypeScript
+ * https://github.com/KeesCBakker/StronlyTypedEvents/
+ * http://keestalkstech.com
+ *
+ * Copyright Kees C. Bakker / KeesTalksTech
+ * Released under the MIT license
+ */
+__webpack_unused_export__ = ({ value: true });
+__webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = exports.UD = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = exports.IL = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = void 0;
+var ste_core_1 = __webpack_require__(4604);
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.Subscription; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.DispatcherBase; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.DispatcherWrapper; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.EventListBase; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.EventManagement; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.DispatchError; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.PromiseSubscription; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.PromiseDispatcherBase; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_core_1.HandlingBase; } });
+var ste_events_1 = __webpack_require__(4214);
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_events_1.EventDispatcher; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_events_1.EventHandlingBase; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_events_1.EventList; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_events_1.NonUniformEventList; } });
+var ste_simple_events_1 = __webpack_require__(6569);
+Object.defineProperty(exports, "IL", ({ enumerable: true, get: function () { return ste_simple_events_1.SimpleEventDispatcher; } }));
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_simple_events_1.SimpleEventHandlingBase; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_simple_events_1.SimpleEventList; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_simple_events_1.NonUniformSimpleEventList; } });
+var ste_signals_1 = __webpack_require__(5010);
+Object.defineProperty(exports, "UD", ({ enumerable: true, get: function () { return ste_signals_1.SignalDispatcher; } }));
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_signals_1.SignalHandlingBase; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_signals_1.SignalList; } });
+var ste_promise_events_1 = __webpack_require__(606);
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_events_1.PromiseEventDispatcher; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_events_1.PromiseEventHandlingBase; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_events_1.PromiseEventList; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_events_1.NonUniformPromiseEventList; } });
+var ste_promise_signals_1 = __webpack_require__(6042);
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_signals_1.PromiseSignalDispatcher; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_signals_1.PromiseSignalHandlingBase; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_signals_1.PromiseSignalList; } });
+var ste_promise_simple_events_1 = __webpack_require__(4225);
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_simple_events_1.PromiseSimpleEventDispatcher; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_simple_events_1.PromiseSimpleEventHandlingBase; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_simple_events_1.PromiseSimpleEventList; } });
+__webpack_unused_export__ = ({ enumerable: true, get: function () { return ste_promise_simple_events_1.NonUniformPromiseSimpleEventList; } });
-function copy(f, t) {
- t.x = f.x;
- t.y = f.y;
- t.z = f.z;
- t.w = f.w;
- return t;
-}
-function impl(seed, opts) {
- var xg = new XorGen(seed),
- state = opts && opts.state,
- prng = function() { return (xg.next() >>> 0) / 0x100000000; };
- prng.double = function() {
- do {
- var top = xg.next() >>> 11,
- bot = (xg.next() >>> 0) / 0x100000000,
- result = (top + bot) / (1 << 21);
- } while (result === 0);
- return result;
- };
- prng.int32 = xg.next;
- prng.quick = prng;
- if (state) {
- if (typeof(state) == 'object') copy(state, xg);
- prng.state = function() { return copy(xg, {}); }
- }
- return prng;
-}
+/***/ }),
-if (module && module.exports) {
- module.exports = impl;
-} else if (__webpack_require__.amdD && __webpack_require__.amdO) {
- !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { return impl; }).call(exports, __webpack_require__, exports, module),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
-} else {
- this.xor128 = impl;
-}
+/***/ 3309:
+/***/ ((__unused_webpack_module, exports) => {
-})(
- this,
- true && module, // present in node.js
- __webpack_require__.amdD // present with an AMD loader
-);
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.DispatchError = void 0;
+/**
+ * Indicates an error with dispatching.
+ *
+ * @export
+ * @class DispatchError
+ * @extends {Error}
+ */
+class DispatchError extends Error {
+ /**
+ * Creates an instance of DispatchError.
+ * @param {string} message The message.
+ *
+ * @memberOf DispatchError
+ */
+ constructor(message) {
+ super(message);
+ }
+}
+exports.DispatchError = DispatchError;
+/***/ }),
+
+/***/ 3324:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.SubscriptionChangeEventDispatcher = void 0;
+const __1 = __webpack_require__(7852);
+/**
+ * Dispatcher for subscription changes.
+ *
+ * @export
+ * @class SubscriptionChangeEventDispatcher
+ * @extends {DispatcherBase}
+ */
+class SubscriptionChangeEventDispatcher extends __1.DispatcherBase {
+ /**
+ * Dispatches the event.
+ *
+ * @param {number} count The currrent number of subscriptions.
+ *
+ * @memberOf SubscriptionChangeEventDispatcher
+ */
+ dispatch(count) {
+ this._dispatch(false, this, arguments);
+ }
+}
+exports.SubscriptionChangeEventDispatcher = SubscriptionChangeEventDispatcher;
/***/ }),
-/***/ 3618:
-/***/ (function(module, exports, __webpack_require__) {
+/***/ 3351:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-/* module decorator */ module = __webpack_require__.nmd(module);
-var __WEBPACK_AMD_DEFINE_RESULT__;// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.
-//
-// This fast non-cryptographic random number generator is designed for
-// use in Monte-Carlo algorithms. It combines a long-period xorshift
-// generator with a Weyl generator, and it passes all common batteries
-// of stasticial tests for randomness while consuming only a few nanoseconds
-// for each prng generated. For background on the generator, see Brent's
-// paper: "Some long-period random number generators using shifts and xors."
-// http://arxiv.org/pdf/1004.3115v1.pdf
-//
-// Usage:
-//
-// var xor4096 = require('xor4096');
-// random = xor4096(1); // Seed with int32 or string.
-// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.
-// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.
-//
-// For nonzero numeric keys, this impelementation provides a sequence
-// identical to that by Brent's xorgens 3 implementaion in C. This
-// implementation also provides for initalizing the generator with
-// string seeds, or for saving and restoring the state of the generator.
-//
-// On Chrome, this prng benchmarks about 2.1 times slower than
-// Javascript's built-in Math.random().
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.PromiseEventHandlingBase = void 0;
+const ste_core_1 = __webpack_require__(9184);
+const PromiseEventList_1 = __webpack_require__(4283);
+/**
+ * Extends objects with signal event handling capabilities.
+ */
+class PromiseEventHandlingBase extends ste_core_1.HandlingBase {
+ constructor() {
+ super(new PromiseEventList_1.PromiseEventList());
+ }
+}
+exports.PromiseEventHandlingBase = PromiseEventHandlingBase;
-(function(global, module, define) {
-function XorGen(seed) {
- var me = this;
+/***/ }),
- // Set up generator function.
- me.next = function() {
- var w = me.w,
- X = me.X, i = me.i, t, v;
- // Update Weyl generator.
- me.w = w = (w + 0x61c88647) | 0;
- // Update xor generator.
- v = X[(i + 34) & 127];
- t = X[i = ((i + 1) & 127)];
- v ^= v << 13;
- t ^= t << 17;
- v ^= v >>> 15;
- t ^= t >>> 12;
- // Update Xor generator array state.
- v = X[i] = v ^ t;
- me.i = i;
- // Result is the combination.
- return (v + (w ^ (w >>> 16))) | 0;
- };
-
- function init(me, seed) {
- var t, v, i, j, w, X = [], limit = 128;
- if (seed === (seed | 0)) {
- // Numeric seeds initialize v, which is used to generates X.
- v = seed;
- seed = null;
- } else {
- // String seeds are mixed into v and X one character at a time.
- seed = seed + '\0';
- v = 0;
- limit = Math.max(limit, seed.length);
- }
- // Initialize circular array and weyl value.
- for (i = 0, j = -32; j < limit; ++j) {
- // Put the unicode characters into the array, and shuffle them.
- if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);
- // After 32 shuffles, take v as the starting w value.
- if (j === 0) w = v;
- v ^= v << 10;
- v ^= v >>> 15;
- v ^= v << 4;
- v ^= v >>> 13;
- if (j >= 0) {
- w = (w + 0x61c88647) | 0; // Weyl.
- t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.
- i = (0 == t) ? i + 1 : 0; // Count zeroes.
- }
- }
- // We have detected all zeroes; make the key nonzero.
- if (i >= 128) {
- X[(seed && seed.length || 0) & 127] = -1;
- }
- // Run the generator 512 times to further mix the state before using it.
- // Factoring this as a function slows the main generator, so it is just
- // unrolled here. The weyl generator is not advanced while warming up.
- i = 127;
- for (j = 4 * 128; j > 0; --j) {
- v = X[(i + 34) & 127];
- t = X[i = ((i + 1) & 127)];
- v ^= v << 13;
- t ^= t << 17;
- v ^= v >>> 15;
- t ^= t >>> 12;
- X[i] = v ^ t;
- }
- // Storing state as object members is faster than using closure variables.
- me.w = w;
- me.X = X;
- me.i = i;
- }
+/***/ 3504:
+/***/ ((__unused_webpack_module, exports) => {
- init(me, seed);
-}
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.EventManagement = void 0;
+/**
+ * Allows the user to interact with the event.
+ *
+ * @export
+ * @class EventManagement
+ * @implements {IEventManagement}
+ */
+class EventManagement {
+ /**
+ * Creates an instance of EventManagement.
+ * @param {() => void} unsub An unsubscribe handler.
+ *
+ * @memberOf EventManagement
+ */
+ constructor(unsub) {
+ this.unsub = unsub;
+ this.propagationStopped = false;
+ }
+ /**
+ * Stops the propagation of the event.
+ * Cannot be used when async dispatch is done.
+ *
+ * @memberOf EventManagement
+ */
+ stopPropagation() {
+ this.propagationStopped = true;
+ }
+}
+exports.EventManagement = EventManagement;
-function copy(f, t) {
- t.i = f.i;
- t.w = f.w;
- t.X = f.X.slice();
- return t;
-};
-function impl(seed, opts) {
- if (seed == null) seed = +(new Date);
- var xg = new XorGen(seed),
- state = opts && opts.state,
- prng = function() { return (xg.next() >>> 0) / 0x100000000; };
- prng.double = function() {
- do {
- var top = xg.next() >>> 11,
- bot = (xg.next() >>> 0) / 0x100000000,
- result = (top + bot) / (1 << 21);
- } while (result === 0);
- return result;
- };
- prng.int32 = xg.next;
- prng.quick = prng;
- if (state) {
- if (state.X) copy(state, xg);
- prng.state = function() { return copy(xg, {}); }
- }
- return prng;
-}
+/***/ }),
-if (module && module.exports) {
- module.exports = impl;
-} else if (__webpack_require__.amdD && __webpack_require__.amdO) {
- !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { return impl; }).call(exports, __webpack_require__, exports, module),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
-} else {
- this.xor4096 = impl;
-}
+/***/ 3512:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-})(
- this, // window object or global
- true && module, // present in node.js
- __webpack_require__.amdD // present with an AMD loader
-);
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.SubscriptionChangeEventDispatcher = void 0;
+const __1 = __webpack_require__(9184);
+/**
+ * Dispatcher for subscription changes.
+ *
+ * @export
+ * @class SubscriptionChangeEventDispatcher
+ * @extends {DispatcherBase}
+ */
+class SubscriptionChangeEventDispatcher extends __1.DispatcherBase {
+ /**
+ * Dispatches the event.
+ *
+ * @param {number} count The currrent number of subscriptions.
+ *
+ * @memberOf SubscriptionChangeEventDispatcher
+ */
+ dispatch(count) {
+ this._dispatch(false, this, arguments);
+ }
+}
+exports.SubscriptionChangeEventDispatcher = SubscriptionChangeEventDispatcher;
/***/ }),
-/***/ 2030:
-/***/ (function(module, exports, __webpack_require__) {
-
-/* module decorator */ module = __webpack_require__.nmd(module);
-var __WEBPACK_AMD_DEFINE_RESULT__;// A Javascript implementaion of the "xorshift7" algorithm by
-// François Panneton and Pierre L'ecuyer:
-// "On the Xorgshift Random Number Generators"
-// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf
-
-(function(global, module, define) {
+/***/ 3677:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-function XorGen(seed) {
- var me = this;
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.PromiseSimpleEventDispatcher = void 0;
+const ste_core_1 = __webpack_require__(5575);
+/**
+ * The dispatcher handles the storage of subsciptions and facilitates
+ * subscription, unsubscription and dispatching of a simple event
+ *
+ * @export
+ * @class PromiseSimpleEventDispatcher
+ * @extends {PromiseDispatcherBase>}
+ * @implements {IPromiseSimpleEvent}
+ * @template TArgs
+ */
+class PromiseSimpleEventDispatcher extends ste_core_1.PromiseDispatcherBase {
+ /**
+ * Creates a new SimpleEventDispatcher instance.
+ */
+ constructor() {
+ super();
+ }
+ /**
+ * Dispatches the event.
+ * @param args The arguments object.
+ * @returns {IPropagationStatus} The status of the dispatch.
+ * @memberOf PromiseSimpleEventDispatcher
+ */
+ async dispatch(args) {
+ const result = await this._dispatchAsPromise(false, this, arguments);
+ if (result == null) {
+ throw new ste_core_1.DispatchError("Got `null` back from dispatch.");
+ }
+ return result;
+ }
+ /**
+ * Dispatches the event without waiting for it to complete.
+ * @param args The argument object.
+ * @memberOf PromiseSimpleEventDispatcher
+ */
+ dispatchAsync(args) {
+ this._dispatchAsPromise(true, this, arguments);
+ }
+ /**
+ * Creates an event from the dispatcher. Will return the dispatcher
+ * in a wrapper. This will prevent exposure of any dispatcher methods.
+ */
+ asEvent() {
+ return super.asEvent();
+ }
+}
+exports.PromiseSimpleEventDispatcher = PromiseSimpleEventDispatcher;
- // Set up generator function.
- me.next = function() {
- // Update xor generator.
- var X = me.x, i = me.i, t, v, w;
- t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);
- t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);
- t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);
- t = X[(i + 4) & 7]; v ^= t ^ (t << 7);
- t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);
- X[i] = v;
- me.i = (i + 1) & 7;
- return v;
- };
- function init(me, seed) {
- var j, w, X = [];
+/***/ }),
- if (seed === (seed | 0)) {
- // Seed state array using a 32-bit integer.
- w = X[0] = seed;
- } else {
- // Seed state using a string.
- seed = '' + seed;
- for (j = 0; j < seed.length; ++j) {
- X[j & 7] = (X[j & 7] << 15) ^
- (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);
- }
- }
- // Enforce an array length of 8, not all zeroes.
- while (X.length < 8) X.push(0);
- for (j = 0; j < 8 && X[j] === 0; ++j);
- if (j == 8) w = X[7] = -1; else w = X[j];
-
- me.x = X;
- me.i = 0;
-
- // Discard an initial 256 values.
- for (j = 256; j > 0; --j) {
- me.next();
- }
- }
-
- init(me, seed);
-}
-
-function copy(f, t) {
- t.x = f.x.slice();
- t.i = f.i;
- return t;
-}
-
-function impl(seed, opts) {
- if (seed == null) seed = +(new Date);
- var xg = new XorGen(seed),
- state = opts && opts.state,
- prng = function() { return (xg.next() >>> 0) / 0x100000000; };
- prng.double = function() {
- do {
- var top = xg.next() >>> 11,
- bot = (xg.next() >>> 0) / 0x100000000,
- result = (top + bot) / (1 << 21);
- } while (result === 0);
- return result;
- };
- prng.int32 = xg.next;
- prng.quick = prng;
- if (state) {
- if (state.x) copy(state, xg);
- prng.state = function() { return copy(xg, {}); }
- }
- return prng;
-}
-
-if (module && module.exports) {
- module.exports = impl;
-} else if (__webpack_require__.amdD && __webpack_require__.amdO) {
- !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { return impl; }).call(exports, __webpack_require__, exports, module),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
-} else {
- this.xorshift7 = impl;
-}
-
-})(
- this,
- true && module, // present in node.js
- __webpack_require__.amdD // present with an AMD loader
-);
+/***/ 3707:
+/***/ ((__unused_webpack_module, exports) => {
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.Subscription = void 0;
+/**
+ * Stores a handler. Manages execution meta data.
+ * @class Subscription
+ * @template TEventHandler
+ */
+class Subscription {
+ /**
+ * Creates an instance of Subscription.
+ *
+ * @param {TEventHandler} handler The handler for the subscription.
+ * @param {boolean} isOnce Indicates if the handler should only be executed once.
+ */
+ constructor(handler, isOnce) {
+ this.handler = handler;
+ this.isOnce = isOnce;
+ /**
+ * Indicates if the subscription has been executed before.
+ */
+ this.isExecuted = false;
+ }
+ /**
+ * Executes the handler.
+ *
+ * @param {boolean} executeAsync True if the even should be executed async.
+ * @param {*} scope The scope the scope of the event.
+ * @param {IArguments} args The arguments for the event.
+ */
+ execute(executeAsync, scope, args) {
+ if (!this.isOnce || !this.isExecuted) {
+ this.isExecuted = true;
+ var fn = this.handler;
+ if (executeAsync) {
+ setTimeout(() => {
+ fn.apply(scope, args);
+ }, 1);
+ }
+ else {
+ fn.apply(scope, args);
+ }
+ }
+ }
+}
+exports.Subscription = Subscription;
/***/ }),
-/***/ 801:
+/***/ 3717:
/***/ (function(module, exports, __webpack_require__) {
/* module decorator */ module = __webpack_require__.nmd(module);
-var __WEBPACK_AMD_DEFINE_RESULT__;// A Javascript implementaion of the "xorwow" prng algorithm by
-// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper
+var __WEBPACK_AMD_DEFINE_RESULT__;// A Javascript implementaion of the "Tyche-i" prng algorithm by
+// Samuel Neves and Filipe Araujo.
+// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf
(function(global, module, define) {
@@ -2594,45 +2395,61 @@ function XorGen(seed) {
// Set up generator function.
me.next = function() {
- var t = (me.x ^ (me.x >>> 2));
- me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;
- return (me.d = (me.d + 362437 | 0)) +
- (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;
+ var b = me.b, c = me.c, d = me.d, a = me.a;
+ b = (b << 25) ^ (b >>> 7) ^ c;
+ c = (c - d) | 0;
+ d = (d << 24) ^ (d >>> 8) ^ a;
+ a = (a - b) | 0;
+ me.b = b = (b << 20) ^ (b >>> 12) ^ c;
+ me.c = c = (c - d) | 0;
+ me.d = (d << 16) ^ (c >>> 16) ^ a;
+ return me.a = (a - b) | 0;
};
- me.x = 0;
- me.y = 0;
- me.z = 0;
- me.w = 0;
- me.v = 0;
+ /* The following is non-inverted tyche, which has better internal
+ * bit diffusion, but which is about 25% slower than tyche-i in JS.
+ me.next = function() {
+ var a = me.a, b = me.b, c = me.c, d = me.d;
+ a = (me.a + me.b | 0) >>> 0;
+ d = me.d ^ a; d = d << 16 ^ d >>> 16;
+ c = me.c + d | 0;
+ b = me.b ^ c; b = b << 12 ^ d >>> 20;
+ me.a = a = a + b | 0;
+ d = d ^ a; me.d = d = d << 8 ^ d >>> 24;
+ me.c = c = c + d | 0;
+ b = b ^ c;
+ return me.b = (b << 7 ^ b >>> 25);
+ }
+ */
- if (seed === (seed | 0)) {
+ me.a = 0;
+ me.b = 0;
+ me.c = 2654435769 | 0;
+ me.d = 1367130551;
+
+ if (seed === Math.floor(seed)) {
// Integer seed.
- me.x = seed;
+ me.a = (seed / 0x100000000) | 0;
+ me.b = seed | 0;
} else {
// String seed.
strseed += seed;
}
// Mix in string seed, then discard an initial batch of 64 values.
- for (var k = 0; k < strseed.length + 64; k++) {
- me.x ^= strseed.charCodeAt(k) | 0;
- if (k == strseed.length) {
- me.d = me.x << 10 ^ me.x >>> 4;
- }
+ for (var k = 0; k < strseed.length + 20; k++) {
+ me.b ^= strseed.charCodeAt(k) | 0;
me.next();
}
}
function copy(f, t) {
- t.x = f.x;
- t.y = f.y;
- t.z = f.z;
- t.w = f.w;
- t.v = f.v;
+ t.a = f.a;
+ t.b = f.b;
+ t.c = f.c;
t.d = f.d;
return t;
-}
+};
function impl(seed, opts) {
var xg = new XorGen(seed),
@@ -2661,7 +2478,7 @@ if (module && module.exports) {
!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { return impl; }).call(exports, __webpack_require__, exports, module),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else {
- this.xorwow = impl;
+ this.tychei = impl;
}
})(
@@ -2675,1024 +2492,408 @@ if (module && module.exports) {
/***/ }),
-/***/ 1971:
-/***/ ((module, exports, __webpack_require__) => {
-
-var __WEBPACK_AMD_DEFINE_RESULT__;/*
-Copyright 2014 David Bau.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-(function (pool, math) {
-//
-// The following constants are related to IEEE 754 limits.
-//
+/***/ 3729:
+/***/ ((__unused_webpack_module, exports) => {
-// Detect the global object, even if operating in strict mode.
-// http://stackoverflow.com/a/14387057/265298
-var global = (0, eval)('this'),
- width = 256, // each RC4 output is 0 <= x < 256
- chunks = 6, // at least six RC4 outputs for each double
- digits = 52, // there are 52 significant digits in a double
- rngname = 'random', // rngname: name for Math.random and Math.seedrandom
- startdenom = math.pow(width, chunks),
- significance = math.pow(2, digits),
- overflow = significance * 2,
- mask = width - 1,
- nodecrypto; // node.js crypto module, initialized at the bottom.
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.DispatchError = void 0;
+/**
+ * Indicates an error with dispatching.
+ *
+ * @export
+ * @class DispatchError
+ * @extends {Error}
+ */
+class DispatchError extends Error {
+ /**
+ * Creates an instance of DispatchError.
+ * @param {string} message The message.
+ *
+ * @memberOf DispatchError
+ */
+ constructor(message) {
+ super(message);
+ }
+}
+exports.DispatchError = DispatchError;
-//
-// seedrandom()
-// This is the seedrandom function described above.
-//
-function seedrandom(seed, options, callback) {
- var key = [];
- options = (options == true) ? { entropy: true } : (options || {});
- // Flatten the seed string or build one from local entropy if needed.
- var shortseed = mixkey(flatten(
- options.entropy ? [seed, tostring(pool)] :
- (seed == null) ? autoseed() : seed, 3), key);
+/***/ }),
- // Use the seed to initialize an ARC4 generator.
- var arc4 = new ARC4(key);
+/***/ 3787:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- // This function returns a random double in [0, 1) that contains
- // randomness in every bit of the mantissa of the IEEE 754 value.
- var prng = function() {
- var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48
- d = startdenom, // and denominator d = 2 ^ 48.
- x = 0; // and no 'extra last byte'.
- while (n < significance) { // Fill up all significant digits by
- n = (n + x) * width; // shifting numerator and
- d *= width; // denominator and generating a
- x = arc4.g(1); // new least-significant-byte.
- }
- while (n >= overflow) { // To avoid rounding up, before adding
- n /= 2; // last byte, shift everything
- d /= 2; // right using integer math until
- x >>>= 1; // we have exactly the desired bits.
- }
- return (n + x) / d; // Form the number within [0, 1).
- };
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.PromiseDispatcherBase = void 0;
+const __1 = __webpack_require__(5575);
+/**
+ * Dispatcher base for dispatchers that use promises. Each promise
+ * is awaited before the next is dispatched, unless the event is
+ * dispatched with the executeAsync flag.
+ *
+ * @export
+ * @abstract
+ * @class PromiseDispatcherBase
+ * @extends {DispatcherBase}
+ * @template TEventHandler The type of event handler.
+ */
+class PromiseDispatcherBase extends __1.DispatcherBase {
+ /**
+ * The normal dispatch cannot be used in this class.
+ *
+ * @protected
+ * @param {boolean} executeAsync `True` if the even should be executed async.
+ * @param {*} scope The scope of the event. The scope becomes the `this` for handler.
+ * @param {IArguments} args The arguments for the event.
+ * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.
+ *
+ * @memberOf DispatcherBase
+ */
+ _dispatch(executeAsync, scope, args) {
+ throw new __1.DispatchError("_dispatch not supported. Use _dispatchAsPromise.");
+ }
+ /**
+ * Crates a new subscription.
+ *
+ * @protected
+ * @param {TEventHandler} handler The handler.
+ * @param {boolean} isOnce Indicates if the handler should only run once.
+ * @returns {ISubscription} The subscription.
+ *
+ * @memberOf PromiseDispatcherBase
+ */
+ createSubscription(handler, isOnce) {
+ return new __1.PromiseSubscription(handler, isOnce);
+ }
+ /**
+ * Generic dispatch will dispatch the handlers with the given arguments.
+ *
+ * @protected
+ * @param {boolean} executeAsync `True` if the even should be executed async.
+ * @param {*} scope The scope of the event. The scope becomes the `this` for handler.
+ * @param {IArguments} args The arguments for the event.
+ * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.
+ *
+ * @memberOf DispatcherBase
+ */
+ async _dispatchAsPromise(executeAsync, scope, args) {
+ //execute on a copy because of bug #9
+ for (let sub of [...this._subscriptions]) {
+ let ev = new __1.EventManagement(() => this.unsub(sub.handler));
+ let nargs = Array.prototype.slice.call(args);
+ nargs.push(ev);
+ let ps = sub;
+ await ps.execute(executeAsync, scope, nargs);
+ //cleanup subs that are no longer needed
+ this.cleanup(sub);
+ if (!executeAsync && ev.propagationStopped) {
+ return { propagationStopped: true };
+ }
+ }
+ if (executeAsync) {
+ return null;
+ }
+ return { propagationStopped: false };
+ }
+}
+exports.PromiseDispatcherBase = PromiseDispatcherBase;
- prng.int32 = function() { return arc4.g(4) | 0; }
- prng.quick = function() { return arc4.g(4) / 0x100000000; }
- prng.double = prng;
- // Mix the randomness into accumulated entropy.
- mixkey(tostring(arc4.S), pool);
+/***/ }),
- // Calling convention: what to return as a function of prng, seed, is_math.
- return (options.pass || callback ||
- function(prng, seed, is_math_call, state) {
- if (state) {
- // Load the arc4 state from the given state if it has an S array.
- if (state.S) { copy(state, arc4); }
- // Only provide the .state method if requested via options.state.
- prng.state = function() { return copy(arc4, {}); }
- }
+/***/ 4004:
+/***/ ((__unused_webpack_module, exports) => {
- // If called as a method of Math (Math.seedrandom()), mutate
- // Math.random because that is how seedrandom.js has worked since v1.0.
- if (is_math_call) { math[rngname] = prng; return seed; }
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.EventListBase = void 0;
+/**
+ * Base class for event lists classes. Implements the get and remove.
+ *
+ * @export
+ * @abstract
+ * @class EventListBaset
+ * @template TEventDispatcher The type of event dispatcher.
+ */
+class EventListBase {
+ constructor() {
+ this._events = {};
+ }
+ /**
+ * Gets the dispatcher associated with the name.
+ *
+ * @param {string} name The name of the event.
+ * @returns {TEventDispatcher} The disptacher.
+ *
+ * @memberOf EventListBase
+ */
+ get(name) {
+ let event = this._events[name];
+ if (event) {
+ return event;
+ }
+ event = this.createDispatcher();
+ this._events[name] = event;
+ return event;
+ }
+ /**
+ * Removes the dispatcher associated with the name.
+ *
+ * @param {string} name
+ *
+ * @memberOf EventListBase
+ */
+ remove(name) {
+ delete this._events[name];
+ }
+}
+exports.EventListBase = EventListBase;
- // Otherwise, it is a newer calling convention, so return the
- // prng directly.
- else return prng;
- })(
- prng,
- shortseed,
- 'global' in options ? options.global : (this == math),
- options.state);
-}
-math['seed' + rngname] = seedrandom;
-//
-// ARC4
-//
-// An ARC4 implementation. The constructor takes a key in the form of
-// an array of at most (width) integers that should be 0 <= x < (width).
-//
-// The g(count) method returns a pseudorandom integer that concatenates
-// the next (count) outputs from ARC4. Its return value is a number x
-// that is in the range 0 <= x < (width ^ count).
-//
-function ARC4(key) {
- var t, keylen = key.length,
- me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];
+/***/ }),
- // The empty key [] is treated as [0].
- if (!keylen) { key = [keylen++]; }
+/***/ 4211:
+/***/ ((__unused_webpack_module, exports) => {
- // Set up S using the standard key scheduling algorithm.
- while (i < width) {
- s[i] = i++;
- }
- for (i = 0; i < width; i++) {
- s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];
- s[j] = t;
- }
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.EventListBase = void 0;
+/**
+ * Base class for event lists classes. Implements the get and remove.
+ *
+ * @export
+ * @abstract
+ * @class EventListBaset
+ * @template TEventDispatcher The type of event dispatcher.
+ */
+class EventListBase {
+ constructor() {
+ this._events = {};
+ }
+ /**
+ * Gets the dispatcher associated with the name.
+ *
+ * @param {string} name The name of the event.
+ * @returns {TEventDispatcher} The disptacher.
+ *
+ * @memberOf EventListBase
+ */
+ get(name) {
+ let event = this._events[name];
+ if (event) {
+ return event;
+ }
+ event = this.createDispatcher();
+ this._events[name] = event;
+ return event;
+ }
+ /**
+ * Removes the dispatcher associated with the name.
+ *
+ * @param {string} name
+ *
+ * @memberOf EventListBase
+ */
+ remove(name) {
+ delete this._events[name];
+ }
+}
+exports.EventListBase = EventListBase;
- // The "g" method returns the next (count) outputs as one number.
- (me.g = function(count) {
- // Using instance members instead of closure state nearly doubles speed.
- var t, r = 0,
- i = me.i, j = me.j, s = me.S;
- while (count--) {
- t = s[i = mask & (i + 1)];
- r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];
- }
- me.i = i; me.j = j;
- return r;
- // For robust unpredictability, the function call below automatically
- // discards an initial batch of values. This is called RC4-drop[256].
- // See http://google.com/search?q=rsa+fluhrer+response&btnI
- })(width);
-}
-//
-// copy()
-// Copies internal state of ARC4 to or from a plain object.
-//
-function copy(f, t) {
- t.i = f.i;
- t.j = f.j;
- t.S = f.S.slice();
- return t;
-};
-
-//
-// flatten()
-// Converts an object tree to nested arrays of strings.
-//
-function flatten(obj, depth) {
- var result = [], typ = (typeof obj), prop;
- if (depth && typ == 'object') {
- for (prop in obj) {
- try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}
- }
- }
- return (result.length ? result : typ == 'string' ? obj : obj + '\0');
-}
+/***/ }),
-//
-// mixkey()
-// Mixes a string seed into a key that is an array of integers, and
-// returns a shortened string seed that is equivalent to the result key.
-//
-function mixkey(seed, key) {
- var stringseed = seed + '', smear, j = 0;
- while (j < stringseed.length) {
- key[mask & j] =
- mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));
- }
- return tostring(key);
-}
+/***/ 4214:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-//
-// autoseed()
-// Returns an object for autoseeding, using window.crypto and Node crypto
-// module if available.
-//
-function autoseed() {
- try {
- var out;
- if (nodecrypto && (out = nodecrypto.randomBytes)) {
- // The use of 'out' to remember randomBytes makes tight minified code.
- out = out(width);
- } else {
- out = new Uint8Array(width);
- (global.crypto || global.msCrypto).getRandomValues(out);
- }
- return tostring(out);
- } catch (e) {
- var browser = global.navigator,
- plugins = browser && browser.plugins;
- return [+new Date, global, plugins, global.screen, tostring(pool)];
- }
-}
+"use strict";
+
+/*!
+ * Strongly Typed Events for TypeScript - Core
+ * https://github.com/KeesCBakker/StronlyTypedEvents/
+ * http://keestalkstech.com
+ *
+ * Copyright Kees C. Bakker / KeesTalksTech
+ * Released under the MIT license
+ */
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.NonUniformEventList = exports.EventList = exports.EventHandlingBase = exports.EventDispatcher = void 0;
+const EventDispatcher_1 = __webpack_require__(71);
+Object.defineProperty(exports, "EventDispatcher", ({ enumerable: true, get: function () { return EventDispatcher_1.EventDispatcher; } }));
+const EventHandlingBase_1 = __webpack_require__(2162);
+Object.defineProperty(exports, "EventHandlingBase", ({ enumerable: true, get: function () { return EventHandlingBase_1.EventHandlingBase; } }));
+const EventList_1 = __webpack_require__(338);
+Object.defineProperty(exports, "EventList", ({ enumerable: true, get: function () { return EventList_1.EventList; } }));
+const NonUniformEventList_1 = __webpack_require__(2293);
+Object.defineProperty(exports, "NonUniformEventList", ({ enumerable: true, get: function () { return NonUniformEventList_1.NonUniformEventList; } }));
-//
-// tostring()
-// Converts an array of charcodes to a string
-//
-function tostring(a) {
- return String.fromCharCode.apply(0, a);
-}
-//
-// When seedrandom.js is loaded, we immediately mix a few bits
-// from the built-in RNG into the entropy pool. Because we do
-// not want to interfere with deterministic PRNG state later,
-// seedrandom will not call math.random on its own again after
-// initialization.
-//
-mixkey(math.random(), pool);
+/***/ }),
-//
-// Nodejs and AMD support: export the implementation as a module using
-// either convention.
-//
-if ( true && module.exports) {
- module.exports = seedrandom;
- // When in node.js, try using crypto package for autoseeding.
- try {
- nodecrypto = __webpack_require__(5042);
- } catch (ex) {}
-} else if (true) {
- !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { return seedrandom; }).call(exports, __webpack_require__, exports, module),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
-}
+/***/ 4225:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-// End anonymous scope, and pass initial values.
-})(
- [], // pool: entropy pool starts empty
- Math // math: package containing random, pow, and seedrandom
-);
+"use strict";
+
+/*!
+ * Strongly Typed Events for TypeScript - Core
+ * https://github.com/KeesCBakker/StronlyTypedEvents/
+ * http://keestalkstech.com
+ *
+ * Copyright Kees C. Bakker / KeesTalksTech
+ * Released under the MIT license
+ */
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.NonUniformPromiseSimpleEventList = exports.PromiseSimpleEventList = exports.PromiseSimpleEventHandlingBase = exports.PromiseSimpleEventDispatcher = void 0;
+const NonUniformPromiseSimpleEventList_1 = __webpack_require__(5829);
+Object.defineProperty(exports, "NonUniformPromiseSimpleEventList", ({ enumerable: true, get: function () { return NonUniformPromiseSimpleEventList_1.NonUniformPromiseSimpleEventList; } }));
+const PromiseSimpleEventDispatcher_1 = __webpack_require__(3677);
+Object.defineProperty(exports, "PromiseSimpleEventDispatcher", ({ enumerable: true, get: function () { return PromiseSimpleEventDispatcher_1.PromiseSimpleEventDispatcher; } }));
+const PromiseSimpleEventHandlingBase_1 = __webpack_require__(8648);
+Object.defineProperty(exports, "PromiseSimpleEventHandlingBase", ({ enumerable: true, get: function () { return PromiseSimpleEventHandlingBase_1.PromiseSimpleEventHandlingBase; } }));
+const PromiseSimpleEventList_1 = __webpack_require__(5536);
+Object.defineProperty(exports, "PromiseSimpleEventList", ({ enumerable: true, get: function () { return PromiseSimpleEventList_1.PromiseSimpleEventList; } }));
/***/ }),
-/***/ 7650:
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-var seedrandom = __webpack_require__(6377);
-var self = __webpack_require__(1987);
-
-module.exports = self;
+/***/ 4283:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.PromiseEventList = void 0;
+const ste_core_1 = __webpack_require__(9184);
+const PromiseEventDispatcher_1 = __webpack_require__(2330);
+/**
+ * Storage class for multiple events that are accessible by name.
+ * Events dispatchers are automatically created.
+ */
+class PromiseEventList extends ste_core_1.EventListBase {
+ /**
+ * Creates a new EventList instance.
+ */
+ constructor() {
+ super();
+ }
+ /**
+ * Creates a new dispatcher instance.
+ */
+ createDispatcher() {
+ return new PromiseEventDispatcher_1.PromiseEventDispatcher();
+ }
+}
+exports.PromiseEventList = PromiseEventList;
/***/ }),
-/***/ 1987:
-/***/ (function(module) {
-
-;(function() {
- var self = {};
+/***/ 4450:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- if(Math.seedrandom) seedrandom = Math.seedrandom;
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.PromiseSignalDispatcher = void 0;
+const ste_core_1 = __webpack_require__(7852);
+/**
+ * The dispatcher handles the storage of subsciptions and facilitates
+ * subscription, unsubscription and dispatching of a signal event.
+ */
+class PromiseSignalDispatcher extends ste_core_1.PromiseDispatcherBase {
+ /**
+ * Creates a new SignalDispatcher instance.
+ */
+ constructor() {
+ super();
+ }
+ /**
+ * Dispatches the signal.
+ *
+ * @returns {IPropagationStatus} The status of the dispatch.
+ *
+ * @memberOf SignalDispatcher
+ */
+ async dispatch() {
+ const result = await this._dispatchAsPromise(false, this, arguments);
+ if (result == null) {
+ throw new ste_core_1.DispatchError("Got `null` back from dispatch.");
+ }
+ return result;
+ }
+ /**
+ * Dispatches the signal threaded.
+ */
+ dispatchAsync() {
+ this._dispatchAsPromise(true, this, arguments);
+ }
+ /**
+ * Creates an event from the dispatcher. Will return the dispatcher
+ * in a wrapper. This will prevent exposure of any dispatcher methods.
+ */
+ asEvent() {
+ return super.asEvent();
+ }
+}
+exports.PromiseSignalDispatcher = PromiseSignalDispatcher;
- var isArray = function($){
- return Object.prototype.toString.call( $ ) === '[object Array]'
- }
- var extend = function(obj) {
- for (var i = 1; i < arguments.length; i++) for (var key in arguments[i]) obj[key] = arguments[i][key];
- return obj;
- }
+/***/ }),
- var seedify = function(seed){
- if (/(number|string)/i.test(Object.prototype.toString.call(seed).match(/^\[object (.*)\]$/)[1])) return seed;
- if (isNaN(seed)) return Number(String((this.strSeed = seed)).split('').map(function(x){return x.charCodeAt(0)}).join(''));
- return seed;
- }
+/***/ 4604:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- var seedRand = function(func,min,max){
- return Math.floor(func() * (max - min + 1)) + min;
- }
+"use strict";
+
+/*!
+ * Strongly Typed Events for TypeScript - Core
+ * https://github.com/KeesCBakker/StronlyTypedEvents/
+ * http://keestalkstech.com
+ *
+ * Copyright Kees C. Bakker / KeesTalksTech
+ * Released under the MIT license
+ */
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.SubscriptionChangeEventDispatcher = exports.HandlingBase = exports.PromiseDispatcherBase = exports.PromiseSubscription = exports.DispatchError = exports.EventManagement = exports.EventListBase = exports.DispatcherWrapper = exports.DispatcherBase = exports.Subscription = void 0;
+const DispatcherBase_1 = __webpack_require__(8441);
+Object.defineProperty(exports, "DispatcherBase", ({ enumerable: true, get: function () { return DispatcherBase_1.DispatcherBase; } }));
+const DispatchError_1 = __webpack_require__(3309);
+Object.defineProperty(exports, "DispatchError", ({ enumerable: true, get: function () { return DispatchError_1.DispatchError; } }));
+const DispatcherWrapper_1 = __webpack_require__(8901);
+Object.defineProperty(exports, "DispatcherWrapper", ({ enumerable: true, get: function () { return DispatcherWrapper_1.DispatcherWrapper; } }));
+const EventListBase_1 = __webpack_require__(4004);
+Object.defineProperty(exports, "EventListBase", ({ enumerable: true, get: function () { return EventListBase_1.EventListBase; } }));
+const EventManagement_1 = __webpack_require__(1289);
+Object.defineProperty(exports, "EventManagement", ({ enumerable: true, get: function () { return EventManagement_1.EventManagement; } }));
+const HandlingBase_1 = __webpack_require__(6442);
+Object.defineProperty(exports, "HandlingBase", ({ enumerable: true, get: function () { return HandlingBase_1.HandlingBase; } }));
+const PromiseDispatcherBase_1 = __webpack_require__(6580);
+Object.defineProperty(exports, "PromiseDispatcherBase", ({ enumerable: true, get: function () { return PromiseDispatcherBase_1.PromiseDispatcherBase; } }));
+const PromiseSubscription_1 = __webpack_require__(6436);
+Object.defineProperty(exports, "PromiseSubscription", ({ enumerable: true, get: function () { return PromiseSubscription_1.PromiseSubscription; } }));
+const Subscription_1 = __webpack_require__(3707);
+Object.defineProperty(exports, "Subscription", ({ enumerable: true, get: function () { return Subscription_1.Subscription; } }));
+const SubscriptionChangeEventHandler_1 = __webpack_require__(956);
+Object.defineProperty(exports, "SubscriptionChangeEventDispatcher", ({ enumerable: true, get: function () { return SubscriptionChangeEventHandler_1.SubscriptionChangeEventDispatcher; } }));
- self.shuffle = function(arr,seed){
- if (!isArray(arr)) return null;
- seed = seedify(seed) || 'none';
- var size = arr.length;
- var rng = seedrandom(seed);
- var resp = [];
- var keys = [];
+/***/ }),
- for(var i=0;i {
-
-/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */
-(function () {
- 'use strict';
-
- // polyfill
- function polyfill() {
- // aliases
- var w = window;
- var d = document;
-
- // return if scroll behavior is supported and polyfill is not forced
- if (
- 'scrollBehavior' in d.documentElement.style &&
- w.__forceSmoothScrollPolyfill__ !== true
- ) {
- return;
- }
-
- // globals
- var Element = w.HTMLElement || w.Element;
- var SCROLL_TIME = 468;
-
- // object gathering original scroll methods
- var original = {
- scroll: w.scroll || w.scrollTo,
- scrollBy: w.scrollBy,
- elementScroll: Element.prototype.scroll || scrollElement,
- scrollIntoView: Element.prototype.scrollIntoView
- };
-
- // define timing method
- var now =
- w.performance && w.performance.now
- ? w.performance.now.bind(w.performance)
- : Date.now;
-
- /**
- * indicates if a the current browser is made by Microsoft
- * @method isMicrosoftBrowser
- * @param {String} userAgent
- * @returns {Boolean}
- */
- function isMicrosoftBrowser(userAgent) {
- var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];
-
- return new RegExp(userAgentPatterns.join('|')).test(userAgent);
- }
-
- /*
- * IE has rounding bug rounding down clientHeight and clientWidth and
- * rounding up scrollHeight and scrollWidth causing false positives
- * on hasScrollableSpace
- */
- var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;
-
- /**
- * changes scroll position inside an element
- * @method scrollElement
- * @param {Number} x
- * @param {Number} y
- * @returns {undefined}
- */
- function scrollElement(x, y) {
- this.scrollLeft = x;
- this.scrollTop = y;
- }
-
- /**
- * returns result of applying ease math function to a number
- * @method ease
- * @param {Number} k
- * @returns {Number}
- */
- function ease(k) {
- return 0.5 * (1 - Math.cos(Math.PI * k));
- }
-
- /**
- * indicates if a smooth behavior should be applied
- * @method shouldBailOut
- * @param {Number|Object} firstArg
- * @returns {Boolean}
- */
- function shouldBailOut(firstArg) {
- if (
- firstArg === null ||
- typeof firstArg !== 'object' ||
- firstArg.behavior === undefined ||
- firstArg.behavior === 'auto' ||
- firstArg.behavior === 'instant'
- ) {
- // first argument is not an object/null
- // or behavior is auto, instant or undefined
- return true;
- }
-
- if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {
- // first argument is an object and behavior is smooth
- return false;
- }
-
- // throw error when behavior is not supported
- throw new TypeError(
- 'behavior member of ScrollOptions ' +
- firstArg.behavior +
- ' is not a valid value for enumeration ScrollBehavior.'
- );
- }
-
- /**
- * indicates if an element has scrollable space in the provided axis
- * @method hasScrollableSpace
- * @param {Node} el
- * @param {String} axis
- * @returns {Boolean}
- */
- function hasScrollableSpace(el, axis) {
- if (axis === 'Y') {
- return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;
- }
-
- if (axis === 'X') {
- return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;
- }
- }
-
- /**
- * indicates if an element has a scrollable overflow property in the axis
- * @method canOverflow
- * @param {Node} el
- * @param {String} axis
- * @returns {Boolean}
- */
- function canOverflow(el, axis) {
- var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];
-
- return overflowValue === 'auto' || overflowValue === 'scroll';
- }
-
- /**
- * indicates if an element can be scrolled in either axis
- * @method isScrollable
- * @param {Node} el
- * @param {String} axis
- * @returns {Boolean}
- */
- function isScrollable(el) {
- var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');
- var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');
-
- return isScrollableY || isScrollableX;
- }
-
- /**
- * finds scrollable parent of an element
- * @method findScrollableParent
- * @param {Node} el
- * @returns {Node} el
- */
- function findScrollableParent(el) {
- while (el !== d.body && isScrollable(el) === false) {
- el = el.parentNode || el.host;
- }
-
- return el;
- }
-
- /**
- * self invoked function that, given a context, steps through scrolling
- * @method step
- * @param {Object} context
- * @returns {undefined}
- */
- function step(context) {
- var time = now();
- var value;
- var currentX;
- var currentY;
- var elapsed = (time - context.startTime) / SCROLL_TIME;
-
- // avoid elapsed times higher than one
- elapsed = elapsed > 1 ? 1 : elapsed;
-
- // apply easing to elapsed time
- value = ease(elapsed);
-
- currentX = context.startX + (context.x - context.startX) * value;
- currentY = context.startY + (context.y - context.startY) * value;
-
- context.method.call(context.scrollable, currentX, currentY);
-
- // scroll more if we have not reached our destination
- if (currentX !== context.x || currentY !== context.y) {
- w.requestAnimationFrame(step.bind(w, context));
- }
- }
-
- /**
- * scrolls window or element with a smooth behavior
- * @method smoothScroll
- * @param {Object|Node} el
- * @param {Number} x
- * @param {Number} y
- * @returns {undefined}
- */
- function smoothScroll(el, x, y) {
- var scrollable;
- var startX;
- var startY;
- var method;
- var startTime = now();
-
- // define scroll context
- if (el === d.body) {
- scrollable = w;
- startX = w.scrollX || w.pageXOffset;
- startY = w.scrollY || w.pageYOffset;
- method = original.scroll;
- } else {
- scrollable = el;
- startX = el.scrollLeft;
- startY = el.scrollTop;
- method = scrollElement;
- }
-
- // scroll looping over a frame
- step({
- scrollable: scrollable,
- method: method,
- startTime: startTime,
- startX: startX,
- startY: startY,
- x: x,
- y: y
- });
- }
-
- // ORIGINAL METHODS OVERRIDES
- // w.scroll and w.scrollTo
- w.scroll = w.scrollTo = function() {
- // avoid action when no arguments are passed
- if (arguments[0] === undefined) {
- return;
- }
-
- // avoid smooth behavior if not required
- if (shouldBailOut(arguments[0]) === true) {
- original.scroll.call(
- w,
- arguments[0].left !== undefined
- ? arguments[0].left
- : typeof arguments[0] !== 'object'
- ? arguments[0]
- : w.scrollX || w.pageXOffset,
- // use top prop, second argument if present or fallback to scrollY
- arguments[0].top !== undefined
- ? arguments[0].top
- : arguments[1] !== undefined
- ? arguments[1]
- : w.scrollY || w.pageYOffset
- );
-
- return;
- }
-
- // LET THE SMOOTHNESS BEGIN!
- smoothScroll.call(
- w,
- d.body,
- arguments[0].left !== undefined
- ? ~~arguments[0].left
- : w.scrollX || w.pageXOffset,
- arguments[0].top !== undefined
- ? ~~arguments[0].top
- : w.scrollY || w.pageYOffset
- );
- };
-
- // w.scrollBy
- w.scrollBy = function() {
- // avoid action when no arguments are passed
- if (arguments[0] === undefined) {
- return;
- }
-
- // avoid smooth behavior if not required
- if (shouldBailOut(arguments[0])) {
- original.scrollBy.call(
- w,
- arguments[0].left !== undefined
- ? arguments[0].left
- : typeof arguments[0] !== 'object' ? arguments[0] : 0,
- arguments[0].top !== undefined
- ? arguments[0].top
- : arguments[1] !== undefined ? arguments[1] : 0
- );
-
- return;
- }
-
- // LET THE SMOOTHNESS BEGIN!
- smoothScroll.call(
- w,
- d.body,
- ~~arguments[0].left + (w.scrollX || w.pageXOffset),
- ~~arguments[0].top + (w.scrollY || w.pageYOffset)
- );
- };
-
- // Element.prototype.scroll and Element.prototype.scrollTo
- Element.prototype.scroll = Element.prototype.scrollTo = function() {
- // avoid action when no arguments are passed
- if (arguments[0] === undefined) {
- return;
- }
-
- // avoid smooth behavior if not required
- if (shouldBailOut(arguments[0]) === true) {
- // if one number is passed, throw error to match Firefox implementation
- if (typeof arguments[0] === 'number' && arguments[1] === undefined) {
- throw new SyntaxError('Value could not be converted');
- }
-
- original.elementScroll.call(
- this,
- // use left prop, first number argument or fallback to scrollLeft
- arguments[0].left !== undefined
- ? ~~arguments[0].left
- : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,
- // use top prop, second argument or fallback to scrollTop
- arguments[0].top !== undefined
- ? ~~arguments[0].top
- : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop
- );
-
- return;
- }
-
- var left = arguments[0].left;
- var top = arguments[0].top;
-
- // LET THE SMOOTHNESS BEGIN!
- smoothScroll.call(
- this,
- this,
- typeof left === 'undefined' ? this.scrollLeft : ~~left,
- typeof top === 'undefined' ? this.scrollTop : ~~top
- );
- };
-
- // Element.prototype.scrollBy
- Element.prototype.scrollBy = function() {
- // avoid action when no arguments are passed
- if (arguments[0] === undefined) {
- return;
- }
-
- // avoid smooth behavior if not required
- if (shouldBailOut(arguments[0]) === true) {
- original.elementScroll.call(
- this,
- arguments[0].left !== undefined
- ? ~~arguments[0].left + this.scrollLeft
- : ~~arguments[0] + this.scrollLeft,
- arguments[0].top !== undefined
- ? ~~arguments[0].top + this.scrollTop
- : ~~arguments[1] + this.scrollTop
- );
-
- return;
- }
-
- this.scroll({
- left: ~~arguments[0].left + this.scrollLeft,
- top: ~~arguments[0].top + this.scrollTop,
- behavior: arguments[0].behavior
- });
- };
-
- // Element.prototype.scrollIntoView
- Element.prototype.scrollIntoView = function() {
- // avoid smooth behavior if not required
- if (shouldBailOut(arguments[0]) === true) {
- original.scrollIntoView.call(
- this,
- arguments[0] === undefined ? true : arguments[0]
- );
-
- return;
- }
-
- // LET THE SMOOTHNESS BEGIN!
- var scrollableParent = findScrollableParent(this);
- var parentRects = scrollableParent.getBoundingClientRect();
- var clientRects = this.getBoundingClientRect();
-
- if (scrollableParent !== d.body) {
- // reveal element inside parent
- smoothScroll.call(
- this,
- scrollableParent,
- scrollableParent.scrollLeft + clientRects.left - parentRects.left,
- scrollableParent.scrollTop + clientRects.top - parentRects.top
- );
-
- // reveal parent in viewport unless is fixed
- if (w.getComputedStyle(scrollableParent).position !== 'fixed') {
- w.scrollBy({
- left: parentRects.left,
- top: parentRects.top,
- behavior: 'smooth'
- });
- }
- } else {
- // reveal element in viewport
- w.scrollBy({
- left: clientRects.left,
- top: clientRects.top,
- behavior: 'smooth'
- });
- }
- };
- }
-
- if (true) {
- // commonjs
- module.exports = { polyfill: polyfill };
- } else {}
-
-}());
-
-
-/***/ }),
-
-/***/ 6357:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.NonUniformPromiseEventList = void 0;
-const PromiseEventDispatcher_1 = __webpack_require__(5072);
-/**
- * Similar to EventList, but instead of TArgs, a map of event names ang argument types is provided with TArgsMap.
- */
-class NonUniformPromiseEventList {
- constructor() {
- this._events = {};
- }
- /**
- * Gets the dispatcher associated with the name.
- * @param name The name of the event.
- */
- get(name) {
- if (this._events[name]) {
- // @TODO avoid typecasting. Not sure why TS thinks this._events[name] could still be undefined.
- return this._events[name];
- }
- const event = this.createDispatcher();
- this._events[name] = event;
- return event;
- }
- /**
- * Removes the dispatcher associated with the name.
- * @param name The name of the event.
- */
- remove(name) {
- delete this._events[name];
- }
- /**
- * Creates a new dispatcher instance.
- */
- createDispatcher() {
- return new PromiseEventDispatcher_1.PromiseEventDispatcher();
- }
-}
-exports.NonUniformPromiseEventList = NonUniformPromiseEventList;
-
-
-/***/ }),
-
-/***/ 5072:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseEventDispatcher = void 0;
-const ste_core_1 = __webpack_require__(2874);
-/**
- * Dispatcher implementation for events. Can be used to subscribe, unsubscribe
- * or dispatch events. Use the ToEvent() method to expose the event.
- *
- * @export
- * @class PromiseEventDispatcher
- * @extends {PromiseDispatcherBase>}
- * @implements {IPromiseEvent}
- * @template TSender
- * @template TArgs
- */
-class PromiseEventDispatcher extends ste_core_1.PromiseDispatcherBase {
- /**
- * Creates a new EventDispatcher instance.
- */
- constructor() {
- super();
- }
- /**
- * Dispatches the event.
- *
- * @param {TSender} sender The sender object.
- * @param {TArgs} args The argument object.
- * @returns {Promise} The status.
- *
- * @memberOf PromiseEventDispatcher
- */
- async dispatch(sender, args) {
- const result = await this._dispatchAsPromise(false, this, arguments);
- if (result == null) {
- throw new ste_core_1.DispatchError("Got `null` back from dispatch.");
- }
- return result;
- }
- /**
- * Dispatches the event without waiting for the result.
- *
- * @param {TSender} sender The sender object.
- * @param {TArgs} args The argument object.
- *
- * @memberOf PromiseEventDispatcher
- */
- dispatchAsync(sender, args) {
- this._dispatchAsPromise(true, this, arguments);
- }
- /**
- * Creates an event from the dispatcher. Will return the dispatcher
- * in a wrapper. This will prevent exposure of any dispatcher methods.
- */
- asEvent() {
- return super.asEvent();
- }
-}
-exports.PromiseEventDispatcher = PromiseEventDispatcher;
-
-
-/***/ }),
-
-/***/ 7873:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseEventHandlingBase = void 0;
-const ste_core_1 = __webpack_require__(2874);
-const PromiseEventList_1 = __webpack_require__(4414);
-/**
- * Extends objects with signal event handling capabilities.
- */
-class PromiseEventHandlingBase extends ste_core_1.HandlingBase {
- constructor() {
- super(new PromiseEventList_1.PromiseEventList());
- }
-}
-exports.PromiseEventHandlingBase = PromiseEventHandlingBase;
-
-
-/***/ }),
-
-/***/ 4414:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseEventList = void 0;
-const ste_core_1 = __webpack_require__(2874);
-const PromiseEventDispatcher_1 = __webpack_require__(5072);
-/**
- * Storage class for multiple events that are accessible by name.
- * Events dispatchers are automatically created.
- */
-class PromiseEventList extends ste_core_1.EventListBase {
- /**
- * Creates a new EventList instance.
- */
- constructor() {
- super();
- }
- /**
- * Creates a new dispatcher instance.
- */
- createDispatcher() {
- return new PromiseEventDispatcher_1.PromiseEventDispatcher();
- }
-}
-exports.PromiseEventList = PromiseEventList;
-
-
-/***/ }),
-
-/***/ 6586:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-"use strict";
-
-/*!
- * Strongly Typed Events for TypeScript - Core
- * https://github.com/KeesCBakker/StronlyTypedEvents/
- * http://keestalkstech.com
- *
- * Copyright Kees C. Bakker / KeesTalksTech
- * Released under the MIT license
- */
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.NonUniformPromiseEventList = exports.PromiseEventList = exports.PromiseEventHandlingBase = exports.PromiseEventDispatcher = void 0;
-const PromiseEventDispatcher_1 = __webpack_require__(5072);
-Object.defineProperty(exports, "PromiseEventDispatcher", ({ enumerable: true, get: function () { return PromiseEventDispatcher_1.PromiseEventDispatcher; } }));
-const PromiseEventHandlingBase_1 = __webpack_require__(7873);
-Object.defineProperty(exports, "PromiseEventHandlingBase", ({ enumerable: true, get: function () { return PromiseEventHandlingBase_1.PromiseEventHandlingBase; } }));
-const PromiseEventList_1 = __webpack_require__(4414);
-Object.defineProperty(exports, "PromiseEventList", ({ enumerable: true, get: function () { return PromiseEventList_1.PromiseEventList; } }));
-const NonUniformPromiseEventList_1 = __webpack_require__(6357);
-Object.defineProperty(exports, "NonUniformPromiseEventList", ({ enumerable: true, get: function () { return NonUniformPromiseEventList_1.NonUniformPromiseEventList; } }));
-
-
-/***/ }),
-
-/***/ 4383:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.DispatchError = void 0;
-/**
- * Indicates an error with dispatching.
- *
- * @export
- * @class DispatchError
- * @extends {Error}
- */
-class DispatchError extends Error {
- /**
- * Creates an instance of DispatchError.
- * @param {string} message The message.
- *
- * @memberOf DispatchError
- */
- constructor(message) {
- super(message);
- }
-}
-exports.DispatchError = DispatchError;
-
-
-/***/ }),
-
-/***/ 894:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+/***/ 4645:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.DispatcherBase = void 0;
-const __1 = __webpack_require__(2874);
+const __1 = __webpack_require__(9184);
/**
* Base class for implementation of the dispatcher. It facilitates the subscribe
* and unsubscribe methods based on generic handlers. The TEventType specifies
@@ -3935,194 +3136,294 @@ exports.DispatcherBase = DispatcherBase;
/***/ }),
-/***/ 9757:
-/***/ ((__unused_webpack_module, exports) => {
+/***/ 4763:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.SimpleEventHandlingBase = void 0;
+const ste_core_1 = __webpack_require__(4604);
+const SimpleEventList_1 = __webpack_require__(2175);
+/**
+ * Extends objects with signal event handling capabilities.
+ */
+class SimpleEventHandlingBase extends ste_core_1.HandlingBase {
+ constructor() {
+ super(new SimpleEventList_1.SimpleEventList());
+ }
+}
+exports.SimpleEventHandlingBase = SimpleEventHandlingBase;
+
+
+/***/ }),
+
+/***/ 4801:
+/***/ ((module, exports, __webpack_require__) => {
+
+var __WEBPACK_AMD_DEFINE_RESULT__;/*
+Copyright 2014 David Bau.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+*/
+
+(function (pool, math) {
+//
+// The following constants are related to IEEE 754 limits.
+//
+
+// Detect the global object, even if operating in strict mode.
+// http://stackoverflow.com/a/14387057/265298
+var global = (0, eval)('this'),
+ width = 256, // each RC4 output is 0 <= x < 256
+ chunks = 6, // at least six RC4 outputs for each double
+ digits = 52, // there are 52 significant digits in a double
+ rngname = 'random', // rngname: name for Math.random and Math.seedrandom
+ startdenom = math.pow(width, chunks),
+ significance = math.pow(2, digits),
+ overflow = significance * 2,
+ mask = width - 1,
+ nodecrypto; // node.js crypto module, initialized at the bottom.
+
+//
+// seedrandom()
+// This is the seedrandom function described above.
+//
+function seedrandom(seed, options, callback) {
+ var key = [];
+ options = (options == true) ? { entropy: true } : (options || {});
+
+ // Flatten the seed string or build one from local entropy if needed.
+ var shortseed = mixkey(flatten(
+ options.entropy ? [seed, tostring(pool)] :
+ (seed == null) ? autoseed() : seed, 3), key);
+
+ // Use the seed to initialize an ARC4 generator.
+ var arc4 = new ARC4(key);
+
+ // This function returns a random double in [0, 1) that contains
+ // randomness in every bit of the mantissa of the IEEE 754 value.
+ var prng = function() {
+ var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48
+ d = startdenom, // and denominator d = 2 ^ 48.
+ x = 0; // and no 'extra last byte'.
+ while (n < significance) { // Fill up all significant digits by
+ n = (n + x) * width; // shifting numerator and
+ d *= width; // denominator and generating a
+ x = arc4.g(1); // new least-significant-byte.
+ }
+ while (n >= overflow) { // To avoid rounding up, before adding
+ n /= 2; // last byte, shift everything
+ d /= 2; // right using integer math until
+ x >>>= 1; // we have exactly the desired bits.
+ }
+ return (n + x) / d; // Form the number within [0, 1).
+ };
+
+ prng.int32 = function() { return arc4.g(4) | 0; }
+ prng.quick = function() { return arc4.g(4) / 0x100000000; }
+ prng.double = prng;
+
+ // Mix the randomness into accumulated entropy.
+ mixkey(tostring(arc4.S), pool);
+
+ // Calling convention: what to return as a function of prng, seed, is_math.
+ return (options.pass || callback ||
+ function(prng, seed, is_math_call, state) {
+ if (state) {
+ // Load the arc4 state from the given state if it has an S array.
+ if (state.S) { copy(state, arc4); }
+ // Only provide the .state method if requested via options.state.
+ prng.state = function() { return copy(arc4, {}); }
+ }
+
+ // If called as a method of Math (Math.seedrandom()), mutate
+ // Math.random because that is how seedrandom.js has worked since v1.0.
+ if (is_math_call) { math[rngname] = prng; return seed; }
+
+ // Otherwise, it is a newer calling convention, so return the
+ // prng directly.
+ else return prng;
+ })(
+ prng,
+ shortseed,
+ 'global' in options ? options.global : (this == math),
+ options.state);
+}
+math['seed' + rngname] = seedrandom;
+
+//
+// ARC4
+//
+// An ARC4 implementation. The constructor takes a key in the form of
+// an array of at most (width) integers that should be 0 <= x < (width).
+//
+// The g(count) method returns a pseudorandom integer that concatenates
+// the next (count) outputs from ARC4. Its return value is a number x
+// that is in the range 0 <= x < (width ^ count).
+//
+function ARC4(key) {
+ var t, keylen = key.length,
+ me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];
+
+ // The empty key [] is treated as [0].
+ if (!keylen) { key = [keylen++]; }
+
+ // Set up S using the standard key scheduling algorithm.
+ while (i < width) {
+ s[i] = i++;
+ }
+ for (i = 0; i < width; i++) {
+ s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];
+ s[j] = t;
+ }
+
+ // The "g" method returns the next (count) outputs as one number.
+ (me.g = function(count) {
+ // Using instance members instead of closure state nearly doubles speed.
+ var t, r = 0,
+ i = me.i, j = me.j, s = me.S;
+ while (count--) {
+ t = s[i = mask & (i + 1)];
+ r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];
+ }
+ me.i = i; me.j = j;
+ return r;
+ // For robust unpredictability, the function call below automatically
+ // discards an initial batch of values. This is called RC4-drop[256].
+ // See http://google.com/search?q=rsa+fluhrer+response&btnI
+ })(width);
+}
+
+//
+// copy()
+// Copies internal state of ARC4 to or from a plain object.
+//
+function copy(f, t) {
+ t.i = f.i;
+ t.j = f.j;
+ t.S = f.S.slice();
+ return t;
+};
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.DispatcherWrapper = void 0;
-/**
- * Hides the implementation of the event dispatcher. Will expose methods that
- * are relevent to the event.
- *
- * @export
- * @class DispatcherWrapper
- * @implements {ISubscribable}
- * @template TEventHandler The type of event handler.
- */
-class DispatcherWrapper {
- /**
- * Creates an instance of DispatcherWrapper.
- * @param {ISubscribable} dispatcher
- *
- * @memberOf DispatcherWrapper
- */
- constructor(dispatcher) {
- this._subscribe = (fn) => dispatcher.subscribe(fn);
- this._unsubscribe = (fn) => dispatcher.unsubscribe(fn);
- this._one = (fn) => dispatcher.one(fn);
- this._has = (fn) => dispatcher.has(fn);
- this._clear = () => dispatcher.clear();
- this._count = () => dispatcher.count;
- this._onSubscriptionChange = () => dispatcher.onSubscriptionChange;
- }
- /**
- * Triggered when subscriptions are changed (added or removed).
- *
- * @readonly
- * @type {ISubscribable}
- * @memberOf DispatcherWrapper
- */
- get onSubscriptionChange() {
- return this._onSubscriptionChange();
- }
- /**
- * Returns the number of subscriptions.
- *
- * @readonly
- * @type {number}
- * @memberOf DispatcherWrapper
- */
- get count() {
- return this._count();
- }
- /**
- * Subscribe to the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- * @returns {() => void} A function that unsubscribes the event handler from the event.
- *
- * @memberOf DispatcherWrapper
- */
- subscribe(fn) {
- return this._subscribe(fn);
- }
- /**
- * Subscribe to the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- * @returns {() => void} A function that unsubscribes the event handler from the event.
- *
- * @memberOf DispatcherWrapper
- */
- sub(fn) {
- return this.subscribe(fn);
- }
- /**
- * Unsubscribe from the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- *
- * @memberOf DispatcherWrapper
- */
- unsubscribe(fn) {
- this._unsubscribe(fn);
- }
- /**
- * Unsubscribe from the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- *
- * @memberOf DispatcherWrapper
- */
- unsub(fn) {
- this.unsubscribe(fn);
- }
- /**
- * Subscribe once to the event with the specified name.
- *
- * @returns {() => void} A function that unsubscribes the event handler from the event.
- *
- * @memberOf DispatcherWrapper
- */
- one(fn) {
- return this._one(fn);
- }
- /**
- * Checks it the event has a subscription for the specified handler.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- *
- * @memberOf DispatcherWrapper
- */
- has(fn) {
- return this._has(fn);
- }
- /**
- * Clears all the subscriptions.
- *
- * @memberOf DispatcherWrapper
- */
- clear() {
- this._clear();
- }
-}
-exports.DispatcherWrapper = DispatcherWrapper;
+//
+// flatten()
+// Converts an object tree to nested arrays of strings.
+//
+function flatten(obj, depth) {
+ var result = [], typ = (typeof obj), prop;
+ if (depth && typ == 'object') {
+ for (prop in obj) {
+ try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}
+ }
+ }
+ return (result.length ? result : typ == 'string' ? obj : obj + '\0');
+}
+//
+// mixkey()
+// Mixes a string seed into a key that is an array of integers, and
+// returns a shortened string seed that is equivalent to the result key.
+//
+function mixkey(seed, key) {
+ var stringseed = seed + '', smear, j = 0;
+ while (j < stringseed.length) {
+ key[mask & j] =
+ mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));
+ }
+ return tostring(key);
+}
-/***/ }),
+//
+// autoseed()
+// Returns an object for autoseeding, using window.crypto and Node crypto
+// module if available.
+//
+function autoseed() {
+ try {
+ var out;
+ if (nodecrypto && (out = nodecrypto.randomBytes)) {
+ // The use of 'out' to remember randomBytes makes tight minified code.
+ out = out(width);
+ } else {
+ out = new Uint8Array(width);
+ (global.crypto || global.msCrypto).getRandomValues(out);
+ }
+ return tostring(out);
+ } catch (e) {
+ var browser = global.navigator,
+ plugins = browser && browser.plugins;
+ return [+new Date, global, plugins, global.screen, tostring(pool)];
+ }
+}
-/***/ 5930:
-/***/ ((__unused_webpack_module, exports) => {
+//
+// tostring()
+// Converts an array of charcodes to a string
+//
+function tostring(a) {
+ return String.fromCharCode.apply(0, a);
+}
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.EventListBase = void 0;
-/**
- * Base class for event lists classes. Implements the get and remove.
- *
- * @export
- * @abstract
- * @class EventListBaset
- * @template TEventDispatcher The type of event dispatcher.
- */
-class EventListBase {
- constructor() {
- this._events = {};
- }
- /**
- * Gets the dispatcher associated with the name.
- *
- * @param {string} name The name of the event.
- * @returns {TEventDispatcher} The disptacher.
- *
- * @memberOf EventListBase
- */
- get(name) {
- let event = this._events[name];
- if (event) {
- return event;
- }
- event = this.createDispatcher();
- this._events[name] = event;
- return event;
- }
- /**
- * Removes the dispatcher associated with the name.
- *
- * @param {string} name
- *
- * @memberOf EventListBase
- */
- remove(name) {
- delete this._events[name];
- }
-}
-exports.EventListBase = EventListBase;
+//
+// When seedrandom.js is loaded, we immediately mix a few bits
+// from the built-in RNG into the entropy pool. Because we do
+// not want to interfere with deterministic PRNG state later,
+// seedrandom will not call math.random on its own again after
+// initialization.
+//
+mixkey(math.random(), pool);
+
+//
+// Nodejs and AMD support: export the implementation as a module using
+// either convention.
+//
+if ( true && module.exports) {
+ module.exports = seedrandom;
+ // When in node.js, try using crypto package for autoseeding.
+ try {
+ nodecrypto = __webpack_require__(1234);
+ } catch (ex) {}
+} else if (true) {
+ !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { return seedrandom; }).call(exports, __webpack_require__, exports, module),
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+}
+
+// End anonymous scope, and pass initial values.
+})(
+ [], // pool: entropy pool starts empty
+ Math // math: package containing random, pow, and seedrandom
+);
/***/ }),
-/***/ 7541:
+/***/ 4995:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.PromiseDispatcherBase = void 0;
-const __1 = __webpack_require__(2874);
+const __1 = __webpack_require__(9184);
/**
* Dispatcher base for dispatchers that use promises. Each promise
* is awaited before the next is dispatched, unless the event is
@@ -4198,39 +3499,282 @@ exports.PromiseDispatcherBase = PromiseDispatcherBase;
/***/ }),
-/***/ 2545:
+/***/ 5010:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
+/*!
+ * Strongly Typed Events for TypeScript - Promise Signals
+ * https://github.com/KeesCBakker/StronlyTypedEvents/
+ * http://keestalkstech.com
+ *
+ * Copyright Kees C. Bakker / KeesTalksTech
+ * Released under the MIT license
+ */
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.SubscriptionChangeEventDispatcher = void 0;
-const __1 = __webpack_require__(2874);
+exports.SignalList = exports.SignalHandlingBase = exports.SignalDispatcher = void 0;
+const SignalDispatcher_1 = __webpack_require__(2725);
+Object.defineProperty(exports, "SignalDispatcher", ({ enumerable: true, get: function () { return SignalDispatcher_1.SignalDispatcher; } }));
+const SignalHandlingBase_1 = __webpack_require__(7936);
+Object.defineProperty(exports, "SignalHandlingBase", ({ enumerable: true, get: function () { return SignalHandlingBase_1.SignalHandlingBase; } }));
+const SignalList_1 = __webpack_require__(1064);
+Object.defineProperty(exports, "SignalList", ({ enumerable: true, get: function () { return SignalList_1.SignalList; } }));
+
+
+/***/ }),
+
+/***/ 5072:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.DispatcherBase = void 0;
+const __1 = __webpack_require__(5575);
/**
- * Dispatcher for subscription changes.
+ * Base class for implementation of the dispatcher. It facilitates the subscribe
+ * and unsubscribe methods based on generic handlers. The TEventType specifies
+ * the type of event that should be exposed. Use the asEvent to expose the
+ * dispatcher as event.
*
* @export
- * @class SubscriptionChangeEventDispatcher
- * @extends {DispatcherBase}
+ * @abstract
+ * @class DispatcherBase
+ * @implements {ISubscribable}
+ * @template TEventHandler The type of event handler.
*/
-class SubscriptionChangeEventDispatcher extends __1.DispatcherBase {
+class DispatcherBase {
+ constructor() {
+ /**
+ * The subscriptions.
+ *
+ * @protected
+ *
+ * @memberOf DispatcherBase
+ */
+ this._subscriptions = new Array();
+ }
+ /**
+ * Returns the number of subscriptions.
+ *
+ * @readonly
+ * @type {number}
+ * @memberOf DispatcherBase
+ */
+ get count() {
+ return this._subscriptions.length;
+ }
+ /**
+ * Triggered when subscriptions are changed (added or removed).
+ *
+ * @readonly
+ * @type {ISubscribable}
+ * @memberOf DispatcherBase
+ */
+ get onSubscriptionChange() {
+ if (this._onSubscriptionChange == null) {
+ this._onSubscriptionChange = new __1.SubscriptionChangeEventDispatcher();
+ }
+ return this._onSubscriptionChange.asEvent();
+ }
+ /**
+ * Subscribe to the event dispatcher.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * @returns A function that unsubscribes the event handler from the event.
+ *
+ * @memberOf DispatcherBase
+ */
+ subscribe(fn) {
+ if (fn) {
+ this._subscriptions.push(this.createSubscription(fn, false));
+ this.triggerSubscriptionChange();
+ }
+ return () => {
+ this.unsubscribe(fn);
+ };
+ }
+ /**
+ * Subscribe to the event dispatcher.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * @returns A function that unsubscribes the event handler from the event.
+ *
+ * @memberOf DispatcherBase
+ */
+ sub(fn) {
+ return this.subscribe(fn);
+ }
+ /**
+ * Subscribe once to the event with the specified name.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * @returns A function that unsubscribes the event handler from the event.
+ *
+ * @memberOf DispatcherBase
+ */
+ one(fn) {
+ if (fn) {
+ this._subscriptions.push(this.createSubscription(fn, true));
+ this.triggerSubscriptionChange();
+ }
+ return () => {
+ this.unsubscribe(fn);
+ };
+ }
+ /**
+ * Checks it the event has a subscription for the specified handler.
+ *
+ * @param {TEventHandler} fn The event handler.
+ *
+ * @memberOf DispatcherBase
+ */
+ has(fn) {
+ if (!fn)
+ return false;
+ return this._subscriptions.some((sub) => sub.handler == fn);
+ }
+ /**
+ * Unsubscribes the handler from the dispatcher.
+ *
+ * @param {TEventHandler} fn The event handler.
+ *
+ * @memberOf DispatcherBase
+ */
+ unsubscribe(fn) {
+ if (!fn)
+ return;
+ let changes = false;
+ for (let i = 0; i < this._subscriptions.length; i++) {
+ if (this._subscriptions[i].handler == fn) {
+ this._subscriptions.splice(i, 1);
+ changes = true;
+ break;
+ }
+ }
+ if (changes) {
+ this.triggerSubscriptionChange();
+ }
+ }
+ /**
+ * Unsubscribes the handler from the dispatcher.
+ *
+ * @param {TEventHandler} fn The event handler.
+ *
+ * @memberOf DispatcherBase
+ */
+ unsub(fn) {
+ this.unsubscribe(fn);
+ }
+ /**
+ * Generic dispatch will dispatch the handlers with the given arguments.
+ *
+ * @protected
+ * @param {boolean} executeAsync `True` if the even should be executed async.
+ * @param {*} scope The scope of the event. The scope becomes the `this` for handler.
+ * @param {IArguments} args The arguments for the event.
+ * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.
+ *
+ * @memberOf DispatcherBase
+ */
+ _dispatch(executeAsync, scope, args) {
+ //execute on a copy because of bug #9
+ for (let sub of [...this._subscriptions]) {
+ let ev = new __1.EventManagement(() => this.unsub(sub.handler));
+ let nargs = Array.prototype.slice.call(args);
+ nargs.push(ev);
+ let s = sub;
+ s.execute(executeAsync, scope, nargs);
+ //cleanup subs that are no longer needed
+ this.cleanup(sub);
+ if (!executeAsync && ev.propagationStopped) {
+ return { propagationStopped: true };
+ }
+ }
+ if (executeAsync) {
+ return null;
+ }
+ return { propagationStopped: false };
+ }
+ /**
+ * Creates a subscription.
+ *
+ * @protected
+ * @param {TEventHandler} handler The handler.
+ * @param {boolean} isOnce True if the handler should run only one.
+ * @returns {ISubscription} The subscription.
+ *
+ * @memberOf DispatcherBase
+ */
+ createSubscription(handler, isOnce) {
+ return new __1.Subscription(handler, isOnce);
+ }
+ /**
+ * Cleans up subs that ran and should run only once.
+ *
+ * @protected
+ * @param {ISubscription} sub The subscription.
+ *
+ * @memberOf DispatcherBase
+ */
+ cleanup(sub) {
+ let changes = false;
+ if (sub.isOnce && sub.isExecuted) {
+ let i = this._subscriptions.indexOf(sub);
+ if (i > -1) {
+ this._subscriptions.splice(i, 1);
+ changes = true;
+ }
+ }
+ if (changes) {
+ this.triggerSubscriptionChange();
+ }
+ }
+ /**
+ * Creates an event from the dispatcher. Will return the dispatcher
+ * in a wrapper. This will prevent exposure of any dispatcher methods.
+ *
+ * @returns {ISubscribable}
+ *
+ * @memberOf DispatcherBase
+ */
+ asEvent() {
+ if (this._wrap == null) {
+ this._wrap = new __1.DispatcherWrapper(this);
+ }
+ return this._wrap;
+ }
/**
- * Dispatches the event.
+ * Clears the subscriptions.
*
- * @param {number} count The currrent number of subscriptions.
+ * @memberOf DispatcherBase
+ */
+ clear() {
+ if (this._subscriptions.length != 0) {
+ this._subscriptions.splice(0, this._subscriptions.length);
+ this.triggerSubscriptionChange();
+ }
+ }
+ /**
+ * Triggers the subscription change event.
*
- * @memberOf SubscriptionChangeEventDispatcher
+ * @private
+ *
+ * @memberOf DispatcherBase
*/
- dispatch(count) {
- this._dispatch(false, this, arguments);
+ triggerSubscriptionChange() {
+ if (this._onSubscriptionChange != null) {
+ this._onSubscriptionChange.dispatch(this.count);
+ }
}
}
-exports.SubscriptionChangeEventDispatcher = SubscriptionChangeEventDispatcher;
+exports.DispatcherBase = DispatcherBase;
/***/ }),
-/***/ 8452:
+/***/ 5485:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
@@ -4293,61 +3837,39 @@ exports.PromiseSubscription = PromiseSubscription;
/***/ }),
-/***/ 365:
-/***/ ((__unused_webpack_module, exports) => {
+/***/ 5536:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.Subscription = void 0;
+exports.PromiseSimpleEventList = void 0;
+const ste_core_1 = __webpack_require__(5575);
+const PromiseSimpleEventDispatcher_1 = __webpack_require__(3677);
/**
- * Stores a handler. Manages execution meta data.
- * @class Subscription
- * @template TEventHandler
+ * Storage class for multiple simple events that are accessible by name.
+ * Events dispatchers are automatically created.
*/
-class Subscription {
+class PromiseSimpleEventList extends ste_core_1.EventListBase {
/**
- * Creates an instance of Subscription.
- *
- * @param {TEventHandler} handler The handler for the subscription.
- * @param {boolean} isOnce Indicates if the handler should only be executed once.
+ * Creates a new SimpleEventList instance.
*/
- constructor(handler, isOnce) {
- this.handler = handler;
- this.isOnce = isOnce;
- /**
- * Indicates if the subscription has been executed before.
- */
- this.isExecuted = false;
+ constructor() {
+ super();
}
/**
- * Executes the handler.
- *
- * @param {boolean} executeAsync True if the even should be executed async.
- * @param {*} scope The scope the scope of the event.
- * @param {IArguments} args The arguments for the event.
+ * Creates a new dispatcher instance.
*/
- execute(executeAsync, scope, args) {
- if (!this.isOnce || !this.isExecuted) {
- this.isExecuted = true;
- var fn = this.handler;
- if (executeAsync) {
- setTimeout(() => {
- fn.apply(scope, args);
- }, 1);
- }
- else {
- fn.apply(scope, args);
- }
- }
+ createDispatcher() {
+ return new PromiseSimpleEventDispatcher_1.PromiseSimpleEventDispatcher();
}
}
-exports.Subscription = Subscription;
+exports.PromiseSimpleEventList = PromiseSimpleEventList;
/***/ }),
-/***/ 954:
+/***/ 5537:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
@@ -4442,7 +3964,7 @@ exports.HandlingBase = HandlingBase;
/***/ }),
-/***/ 2874:
+/***/ 5575:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
@@ -4457,131 +3979,233 @@ exports.HandlingBase = HandlingBase;
*/
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.SubscriptionChangeEventDispatcher = exports.HandlingBase = exports.PromiseDispatcherBase = exports.PromiseSubscription = exports.DispatchError = exports.EventManagement = exports.EventListBase = exports.DispatcherWrapper = exports.DispatcherBase = exports.Subscription = void 0;
-const DispatcherBase_1 = __webpack_require__(894);
+const DispatcherBase_1 = __webpack_require__(5072);
Object.defineProperty(exports, "DispatcherBase", ({ enumerable: true, get: function () { return DispatcherBase_1.DispatcherBase; } }));
-const DispatchError_1 = __webpack_require__(4383);
+const DispatchError_1 = __webpack_require__(2210);
Object.defineProperty(exports, "DispatchError", ({ enumerable: true, get: function () { return DispatchError_1.DispatchError; } }));
-const DispatcherWrapper_1 = __webpack_require__(9757);
+const DispatcherWrapper_1 = __webpack_require__(1050);
Object.defineProperty(exports, "DispatcherWrapper", ({ enumerable: true, get: function () { return DispatcherWrapper_1.DispatcherWrapper; } }));
-const EventListBase_1 = __webpack_require__(5930);
+const EventListBase_1 = __webpack_require__(4211);
Object.defineProperty(exports, "EventListBase", ({ enumerable: true, get: function () { return EventListBase_1.EventListBase; } }));
-const EventManagement_1 = __webpack_require__(4796);
+const EventManagement_1 = __webpack_require__(3504);
Object.defineProperty(exports, "EventManagement", ({ enumerable: true, get: function () { return EventManagement_1.EventManagement; } }));
-const HandlingBase_1 = __webpack_require__(954);
+const HandlingBase_1 = __webpack_require__(5537);
Object.defineProperty(exports, "HandlingBase", ({ enumerable: true, get: function () { return HandlingBase_1.HandlingBase; } }));
-const PromiseDispatcherBase_1 = __webpack_require__(7541);
+const PromiseDispatcherBase_1 = __webpack_require__(3787);
Object.defineProperty(exports, "PromiseDispatcherBase", ({ enumerable: true, get: function () { return PromiseDispatcherBase_1.PromiseDispatcherBase; } }));
-const PromiseSubscription_1 = __webpack_require__(8452);
+const PromiseSubscription_1 = __webpack_require__(5485);
Object.defineProperty(exports, "PromiseSubscription", ({ enumerable: true, get: function () { return PromiseSubscription_1.PromiseSubscription; } }));
-const Subscription_1 = __webpack_require__(365);
+const Subscription_1 = __webpack_require__(8080);
Object.defineProperty(exports, "Subscription", ({ enumerable: true, get: function () { return Subscription_1.Subscription; } }));
-const SubscriptionChangeEventHandler_1 = __webpack_require__(2545);
+const SubscriptionChangeEventHandler_1 = __webpack_require__(1789);
Object.defineProperty(exports, "SubscriptionChangeEventDispatcher", ({ enumerable: true, get: function () { return SubscriptionChangeEventHandler_1.SubscriptionChangeEventDispatcher; } }));
/***/ }),
-/***/ 4796:
+/***/ 5636:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.EventManagement = void 0;
+exports.EventListBase = void 0;
/**
- * Allows the user to interact with the event.
+ * Base class for event lists classes. Implements the get and remove.
*
* @export
- * @class EventManagement
- * @implements {IEventManagement}
+ * @abstract
+ * @class EventListBaset
+ * @template TEventDispatcher The type of event dispatcher.
*/
-class EventManagement {
+class EventListBase {
+ constructor() {
+ this._events = {};
+ }
/**
- * Creates an instance of EventManagement.
- * @param {() => void} unsub An unsubscribe handler.
+ * Gets the dispatcher associated with the name.
*
- * @memberOf EventManagement
+ * @param {string} name The name of the event.
+ * @returns {TEventDispatcher} The disptacher.
+ *
+ * @memberOf EventListBase
*/
- constructor(unsub) {
- this.unsub = unsub;
- this.propagationStopped = false;
+ get(name) {
+ let event = this._events[name];
+ if (event) {
+ return event;
+ }
+ event = this.createDispatcher();
+ this._events[name] = event;
+ return event;
}
/**
- * Stops the propagation of the event.
- * Cannot be used when async dispatch is done.
+ * Removes the dispatcher associated with the name.
*
- * @memberOf EventManagement
+ * @param {string} name
+ *
+ * @memberOf EventListBase
*/
- stopPropagation() {
- this.propagationStopped = true;
+ remove(name) {
+ delete this._events[name];
}
}
-exports.EventManagement = EventManagement;
+exports.EventListBase = EventListBase;
/***/ }),
-/***/ 5890:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+/***/ 5722:
+/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseSignalDispatcher = void 0;
-const ste_core_1 = __webpack_require__(8486);
+exports.HandlingBase = void 0;
/**
- * The dispatcher handles the storage of subsciptions and facilitates
- * subscription, unsubscription and dispatching of a signal event.
+ * Base class that implements event handling. With a an
+ * event list this base class will expose events that can be
+ * subscribed to. This will give your class generic events.
+ *
+ * @export
+ * @abstract
+ * @class HandlingBase
+ * @template TEventHandler The type of event handler.
+ * @template TDispatcher The type of dispatcher.
+ * @template TList The type of event list.
*/
-class PromiseSignalDispatcher extends ste_core_1.PromiseDispatcherBase {
+class HandlingBase {
/**
- * Creates a new SignalDispatcher instance.
+ * Creates an instance of HandlingBase.
+ * @param {TList} events The event list. Used for event management.
+ *
+ * @memberOf HandlingBase
*/
- constructor() {
- super();
+ constructor(events) {
+ this.events = events;
}
/**
- * Dispatches the signal.
+ * Subscribes once to the event with the specified name.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
*
- * @returns {IPropagationStatus} The status of the dispatch.
+ * @memberOf HandlingBase
+ */
+ one(name, fn) {
+ this.events.get(name).one(fn);
+ }
+ /**
+ * Checks it the event has a subscription for the specified handler.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
*
- * @memberOf SignalDispatcher
+ * @memberOf HandlingBase
*/
- async dispatch() {
- const result = await this._dispatchAsPromise(false, this, arguments);
- if (result == null) {
- throw new ste_core_1.DispatchError("Got `null` back from dispatch.");
+ has(name, fn) {
+ return this.events.get(name).has(fn);
+ }
+ /**
+ * Subscribes to the event with the specified name.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
+ *
+ * @memberOf HandlingBase
+ */
+ subscribe(name, fn) {
+ this.events.get(name).subscribe(fn);
+ }
+ /**
+ * Subscribes to the event with the specified name.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
+ *
+ * @memberOf HandlingBase
+ */
+ sub(name, fn) {
+ this.subscribe(name, fn);
+ }
+ /**
+ * Unsubscribes from the event with the specified name.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
+ *
+ * @memberOf HandlingBase
+ */
+ unsubscribe(name, fn) {
+ this.events.get(name).unsubscribe(fn);
+ }
+ /**
+ * Unsubscribes from the event with the specified name.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
+ *
+ * @memberOf HandlingBase
+ */
+ unsub(name, fn) {
+ this.unsubscribe(name, fn);
+ }
+}
+exports.HandlingBase = HandlingBase;
+
+
+/***/ }),
+
+/***/ 5829:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.NonUniformPromiseSimpleEventList = void 0;
+const PromiseSimpleEventDispatcher_1 = __webpack_require__(3677);
+/**
+ * Similar to EventList, but instead of TArgs, a map of event names ang argument types is provided with TArgsMap.
+ */
+class NonUniformPromiseSimpleEventList {
+ constructor() {
+ this._events = {};
+ }
+ /**
+ * Gets the dispatcher associated with the name.
+ * @param name The name of the event.
+ */
+ get(name) {
+ if (this._events[name]) {
+ // @TODO avoid typecasting. Not sure why TS thinks this._events[name] could still be undefined.
+ return this._events[name];
}
- return result;
+ const event = this.createDispatcher();
+ this._events[name] = event;
+ return event;
}
/**
- * Dispatches the signal threaded.
+ * Removes the dispatcher associated with the name.
+ * @param name The name of the event.
*/
- dispatchAsync() {
- this._dispatchAsPromise(true, this, arguments);
+ remove(name) {
+ delete this._events[name];
}
/**
- * Creates an event from the dispatcher. Will return the dispatcher
- * in a wrapper. This will prevent exposure of any dispatcher methods.
+ * Creates a new dispatcher instance.
*/
- asEvent() {
- return super.asEvent();
+ createDispatcher() {
+ return new PromiseSimpleEventDispatcher_1.PromiseSimpleEventDispatcher();
}
}
-exports.PromiseSignalDispatcher = PromiseSignalDispatcher;
+exports.NonUniformPromiseSimpleEventList = NonUniformPromiseSimpleEventList;
/***/ }),
-/***/ 205:
+/***/ 5871:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.PromiseSignalHandlingBase = void 0;
-const ste_core_1 = __webpack_require__(8486);
-const PromiseSignalList_1 = __webpack_require__(3146);
+const ste_core_1 = __webpack_require__(7852);
+const PromiseSignalList_1 = __webpack_require__(131);
/**
* Extends objects with signal event handling capabilities.
*/
@@ -4595,39 +4219,7 @@ exports.PromiseSignalHandlingBase = PromiseSignalHandlingBase;
/***/ }),
-/***/ 3146:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseSignalList = void 0;
-const ste_core_1 = __webpack_require__(8486);
-const _1 = __webpack_require__(6838);
-/**
- * Storage class for multiple signal events that are accessible by name.
- * Events dispatchers are automatically created.
- */
-class PromiseSignalList extends ste_core_1.EventListBase {
- /**
- * Creates a new SignalList instance.
- */
- constructor() {
- super();
- }
- /**
- * Creates a new dispatcher instance.
- */
- createDispatcher() {
- return new _1.PromiseSignalDispatcher();
- }
-}
-exports.PromiseSignalList = PromiseSignalList;
-
-
-/***/ }),
-
-/***/ 6838:
+/***/ 6042:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
@@ -4642,188 +4234,62 @@ exports.PromiseSignalList = PromiseSignalList;
*/
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.PromiseSignalList = exports.PromiseSignalHandlingBase = exports.PromiseSignalDispatcher = void 0;
-const PromiseSignalDispatcher_1 = __webpack_require__(5890);
+const PromiseSignalDispatcher_1 = __webpack_require__(4450);
Object.defineProperty(exports, "PromiseSignalDispatcher", ({ enumerable: true, get: function () { return PromiseSignalDispatcher_1.PromiseSignalDispatcher; } }));
-const PromiseSignalHandlingBase_1 = __webpack_require__(205);
+const PromiseSignalHandlingBase_1 = __webpack_require__(5871);
Object.defineProperty(exports, "PromiseSignalHandlingBase", ({ enumerable: true, get: function () { return PromiseSignalHandlingBase_1.PromiseSignalHandlingBase; } }));
-const PromiseSignalList_1 = __webpack_require__(3146);
+const PromiseSignalList_1 = __webpack_require__(131);
Object.defineProperty(exports, "PromiseSignalList", ({ enumerable: true, get: function () { return PromiseSignalList_1.PromiseSignalList; } }));
/***/ }),
-/***/ 6463:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.DispatchError = void 0;
-/**
- * Indicates an error with dispatching.
- *
- * @export
- * @class DispatchError
- * @extends {Error}
- */
-class DispatchError extends Error {
- /**
- * Creates an instance of DispatchError.
- * @param {string} message The message.
- *
- * @memberOf DispatchError
- */
- constructor(message) {
- super(message);
- }
-}
-exports.DispatchError = DispatchError;
-
-
-/***/ }),
-
-/***/ 1368:
+/***/ 6372:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.DispatcherBase = void 0;
-const __1 = __webpack_require__(8486);
+exports.PromiseDispatcherBase = void 0;
+const __1 = __webpack_require__(7852);
/**
- * Base class for implementation of the dispatcher. It facilitates the subscribe
- * and unsubscribe methods based on generic handlers. The TEventType specifies
- * the type of event that should be exposed. Use the asEvent to expose the
- * dispatcher as event.
+ * Dispatcher base for dispatchers that use promises. Each promise
+ * is awaited before the next is dispatched, unless the event is
+ * dispatched with the executeAsync flag.
*
* @export
* @abstract
- * @class DispatcherBase
- * @implements {ISubscribable}
+ * @class PromiseDispatcherBase
+ * @extends {DispatcherBase}
* @template TEventHandler The type of event handler.
*/
-class DispatcherBase {
- constructor() {
- /**
- * The subscriptions.
- *
- * @protected
- *
- * @memberOf DispatcherBase
- */
- this._subscriptions = new Array();
- }
- /**
- * Returns the number of subscriptions.
- *
- * @readonly
- * @type {number}
- * @memberOf DispatcherBase
- */
- get count() {
- return this._subscriptions.length;
- }
- /**
- * Triggered when subscriptions are changed (added or removed).
- *
- * @readonly
- * @type {ISubscribable}
- * @memberOf DispatcherBase
- */
- get onSubscriptionChange() {
- if (this._onSubscriptionChange == null) {
- this._onSubscriptionChange = new __1.SubscriptionChangeEventDispatcher();
- }
- return this._onSubscriptionChange.asEvent();
- }
- /**
- * Subscribe to the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- * @returns A function that unsubscribes the event handler from the event.
- *
- * @memberOf DispatcherBase
- */
- subscribe(fn) {
- if (fn) {
- this._subscriptions.push(this.createSubscription(fn, false));
- this.triggerSubscriptionChange();
- }
- return () => {
- this.unsubscribe(fn);
- };
- }
- /**
- * Subscribe to the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- * @returns A function that unsubscribes the event handler from the event.
- *
- * @memberOf DispatcherBase
- */
- sub(fn) {
- return this.subscribe(fn);
- }
- /**
- * Subscribe once to the event with the specified name.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- * @returns A function that unsubscribes the event handler from the event.
- *
- * @memberOf DispatcherBase
- */
- one(fn) {
- if (fn) {
- this._subscriptions.push(this.createSubscription(fn, true));
- this.triggerSubscriptionChange();
- }
- return () => {
- this.unsubscribe(fn);
- };
- }
- /**
- * Checks it the event has a subscription for the specified handler.
- *
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf DispatcherBase
- */
- has(fn) {
- if (!fn)
- return false;
- return this._subscriptions.some((sub) => sub.handler == fn);
- }
+class PromiseDispatcherBase extends __1.DispatcherBase {
/**
- * Unsubscribes the handler from the dispatcher.
+ * The normal dispatch cannot be used in this class.
*
- * @param {TEventHandler} fn The event handler.
+ * @protected
+ * @param {boolean} executeAsync `True` if the even should be executed async.
+ * @param {*} scope The scope of the event. The scope becomes the `this` for handler.
+ * @param {IArguments} args The arguments for the event.
+ * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.
*
* @memberOf DispatcherBase
*/
- unsubscribe(fn) {
- if (!fn)
- return;
- let changes = false;
- for (let i = 0; i < this._subscriptions.length; i++) {
- if (this._subscriptions[i].handler == fn) {
- this._subscriptions.splice(i, 1);
- changes = true;
- break;
- }
- }
- if (changes) {
- this.triggerSubscriptionChange();
- }
+ _dispatch(executeAsync, scope, args) {
+ throw new __1.DispatchError("_dispatch not supported. Use _dispatchAsPromise.");
}
/**
- * Unsubscribes the handler from the dispatcher.
+ * Crates a new subscription.
*
- * @param {TEventHandler} fn The event handler.
+ * @protected
+ * @param {TEventHandler} handler The handler.
+ * @param {boolean} isOnce Indicates if the handler should only run once.
+ * @returns {ISubscription} The subscription.
*
- * @memberOf DispatcherBase
+ * @memberOf PromiseDispatcherBase
*/
- unsub(fn) {
- this.unsubscribe(fn);
+ createSubscription(handler, isOnce) {
+ return new __1.PromiseSubscription(handler, isOnce);
}
/**
* Generic dispatch will dispatch the handlers with the given arguments.
@@ -4836,14 +4302,14 @@ class DispatcherBase {
*
* @memberOf DispatcherBase
*/
- _dispatch(executeAsync, scope, args) {
+ async _dispatchAsPromise(executeAsync, scope, args) {
//execute on a copy because of bug #9
for (let sub of [...this._subscriptions]) {
let ev = new __1.EventManagement(() => this.unsub(sub.handler));
let nargs = Array.prototype.slice.call(args);
nargs.push(ev);
- let s = sub;
- s.execute(executeAsync, scope, nargs);
+ let ps = sub;
+ await ps.execute(executeAsync, scope, nargs);
//cleanup subs that are no longer needed
this.cleanup(sub);
if (!executeAsync && ev.propagationStopped) {
@@ -4855,271 +4321,300 @@ class DispatcherBase {
}
return { propagationStopped: false };
}
+}
+exports.PromiseDispatcherBase = PromiseDispatcherBase;
+
+
+/***/ }),
+
+/***/ 6413:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.EventManagement = void 0;
+/**
+ * Allows the user to interact with the event.
+ *
+ * @export
+ * @class EventManagement
+ * @implements {IEventManagement}
+ */
+class EventManagement {
/**
- * Creates a subscription.
- *
- * @protected
- * @param {TEventHandler} handler The handler.
- * @param {boolean} isOnce True if the handler should run only one.
- * @returns {ISubscription} The subscription.
- *
- * @memberOf DispatcherBase
- */
- createSubscription(handler, isOnce) {
- return new __1.Subscription(handler, isOnce);
- }
- /**
- * Cleans up subs that ran and should run only once.
- *
- * @protected
- * @param {ISubscription} sub The subscription.
- *
- * @memberOf DispatcherBase
- */
- cleanup(sub) {
- let changes = false;
- if (sub.isOnce && sub.isExecuted) {
- let i = this._subscriptions.indexOf(sub);
- if (i > -1) {
- this._subscriptions.splice(i, 1);
- changes = true;
- }
- }
- if (changes) {
- this.triggerSubscriptionChange();
- }
- }
- /**
- * Creates an event from the dispatcher. Will return the dispatcher
- * in a wrapper. This will prevent exposure of any dispatcher methods.
+ * Creates an instance of EventManagement.
+ * @param {() => void} unsub An unsubscribe handler.
*
- * @returns {ISubscribable}
+ * @memberOf EventManagement
+ */
+ constructor(unsub) {
+ this.unsub = unsub;
+ this.propagationStopped = false;
+ }
+ /**
+ * Stops the propagation of the event.
+ * Cannot be used when async dispatch is done.
*
- * @memberOf DispatcherBase
+ * @memberOf EventManagement
*/
- asEvent() {
- if (this._wrap == null) {
- this._wrap = new __1.DispatcherWrapper(this);
- }
- return this._wrap;
+ stopPropagation() {
+ this.propagationStopped = true;
}
+}
+exports.EventManagement = EventManagement;
+
+
+/***/ }),
+
+/***/ 6436:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.PromiseSubscription = void 0;
+/**
+ * Subscription implementation for events with promises.
+ *
+ * @export
+ * @class PromiseSubscription
+ * @implements {ISubscription}
+ * @template TEventHandler The type of event handler.
+ */
+class PromiseSubscription {
/**
- * Clears the subscriptions.
+ * Creates an instance of PromiseSubscription.
+ * @param {TEventHandler} handler The handler for the subscription.
+ * @param {boolean} isOnce Indicates if the handler should only be executed once.
*
- * @memberOf DispatcherBase
+ * @memberOf PromiseSubscription
*/
- clear() {
- if (this._subscriptions.length != 0) {
- this._subscriptions.splice(0, this._subscriptions.length);
- this.triggerSubscriptionChange();
- }
+ constructor(handler, isOnce) {
+ this.handler = handler;
+ this.isOnce = isOnce;
+ /**
+ * Indicates if the subscription has been executed before.
+ *
+ * @memberOf PromiseSubscription
+ */
+ this.isExecuted = false;
}
/**
- * Triggers the subscription change event.
+ * Executes the handler.
*
- * @private
+ * @param {boolean} executeAsync True if the even should be executed async.
+ * @param {*} scope The scope the scope of the event.
+ * @param {IArguments} args The arguments for the event.
*
- * @memberOf DispatcherBase
+ * @memberOf PromiseSubscription
*/
- triggerSubscriptionChange() {
- if (this._onSubscriptionChange != null) {
- this._onSubscriptionChange.dispatch(this.count);
+ async execute(executeAsync, scope, args) {
+ if (!this.isOnce || !this.isExecuted) {
+ this.isExecuted = true;
+ //TODO: do we need to cast to any -- seems yuck
+ var fn = this.handler;
+ if (executeAsync) {
+ setTimeout(() => {
+ fn.apply(scope, args);
+ }, 1);
+ return;
+ }
+ let result = fn.apply(scope, args);
+ await result;
}
}
}
-exports.DispatcherBase = DispatcherBase;
+exports.PromiseSubscription = PromiseSubscription;
/***/ }),
-/***/ 6982:
+/***/ 6442:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.DispatcherWrapper = void 0;
+exports.HandlingBase = void 0;
/**
- * Hides the implementation of the event dispatcher. Will expose methods that
- * are relevent to the event.
+ * Base class that implements event handling. With a an
+ * event list this base class will expose events that can be
+ * subscribed to. This will give your class generic events.
*
* @export
- * @class DispatcherWrapper
- * @implements {ISubscribable}
+ * @abstract
+ * @class HandlingBase
* @template TEventHandler The type of event handler.
+ * @template TDispatcher The type of dispatcher.
+ * @template TList The type of event list.
*/
-class DispatcherWrapper {
+class HandlingBase {
/**
- * Creates an instance of DispatcherWrapper.
- * @param {ISubscribable} dispatcher
+ * Creates an instance of HandlingBase.
+ * @param {TList} events The event list. Used for event management.
*
- * @memberOf DispatcherWrapper
+ * @memberOf HandlingBase
*/
- constructor(dispatcher) {
- this._subscribe = (fn) => dispatcher.subscribe(fn);
- this._unsubscribe = (fn) => dispatcher.unsubscribe(fn);
- this._one = (fn) => dispatcher.one(fn);
- this._has = (fn) => dispatcher.has(fn);
- this._clear = () => dispatcher.clear();
- this._count = () => dispatcher.count;
- this._onSubscriptionChange = () => dispatcher.onSubscriptionChange;
+ constructor(events) {
+ this.events = events;
}
/**
- * Triggered when subscriptions are changed (added or removed).
+ * Subscribes once to the event with the specified name.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
*
- * @readonly
- * @type {ISubscribable}
- * @memberOf DispatcherWrapper
+ * @memberOf HandlingBase
*/
- get onSubscriptionChange() {
- return this._onSubscriptionChange();
+ one(name, fn) {
+ this.events.get(name).one(fn);
}
/**
- * Returns the number of subscriptions.
+ * Checks it the event has a subscription for the specified handler.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
*
- * @readonly
- * @type {number}
- * @memberOf DispatcherWrapper
+ * @memberOf HandlingBase
*/
- get count() {
- return this._count();
+ has(name, fn) {
+ return this.events.get(name).has(fn);
}
/**
- * Subscribe to the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- * @returns {() => void} A function that unsubscribes the event handler from the event.
+ * Subscribes to the event with the specified name.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
*
- * @memberOf DispatcherWrapper
+ * @memberOf HandlingBase
*/
- subscribe(fn) {
- return this._subscribe(fn);
+ subscribe(name, fn) {
+ this.events.get(name).subscribe(fn);
}
/**
- * Subscribe to the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- * @returns {() => void} A function that unsubscribes the event handler from the event.
+ * Subscribes to the event with the specified name.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
*
- * @memberOf DispatcherWrapper
+ * @memberOf HandlingBase
*/
- sub(fn) {
- return this.subscribe(fn);
+ sub(name, fn) {
+ this.subscribe(name, fn);
}
/**
- * Unsubscribe from the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * Unsubscribes from the event with the specified name.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
*
- * @memberOf DispatcherWrapper
+ * @memberOf HandlingBase
*/
- unsubscribe(fn) {
- this._unsubscribe(fn);
+ unsubscribe(name, fn) {
+ this.events.get(name).unsubscribe(fn);
}
/**
- * Unsubscribe from the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * Unsubscribes from the event with the specified name.
+ * @param {string} name The name of the event.
+ * @param {TEventHandler} fn The event handler.
*
- * @memberOf DispatcherWrapper
+ * @memberOf HandlingBase
*/
- unsub(fn) {
- this.unsubscribe(fn);
+ unsub(name, fn) {
+ this.unsubscribe(name, fn);
}
+}
+exports.HandlingBase = HandlingBase;
+
+
+/***/ }),
+
+/***/ 6484:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.PromiseSubscription = void 0;
+/**
+ * Subscription implementation for events with promises.
+ *
+ * @export
+ * @class PromiseSubscription
+ * @implements {ISubscription}
+ * @template TEventHandler The type of event handler.
+ */
+class PromiseSubscription {
/**
- * Subscribe once to the event with the specified name.
- *
- * @returns {() => void} A function that unsubscribes the event handler from the event.
+ * Creates an instance of PromiseSubscription.
+ * @param {TEventHandler} handler The handler for the subscription.
+ * @param {boolean} isOnce Indicates if the handler should only be executed once.
*
- * @memberOf DispatcherWrapper
+ * @memberOf PromiseSubscription
*/
- one(fn) {
- return this._one(fn);
+ constructor(handler, isOnce) {
+ this.handler = handler;
+ this.isOnce = isOnce;
+ /**
+ * Indicates if the subscription has been executed before.
+ *
+ * @memberOf PromiseSubscription
+ */
+ this.isExecuted = false;
}
/**
- * Checks it the event has a subscription for the specified handler.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * Executes the handler.
*
- * @memberOf DispatcherWrapper
- */
- has(fn) {
- return this._has(fn);
- }
- /**
- * Clears all the subscriptions.
+ * @param {boolean} executeAsync True if the even should be executed async.
+ * @param {*} scope The scope the scope of the event.
+ * @param {IArguments} args The arguments for the event.
*
- * @memberOf DispatcherWrapper
+ * @memberOf PromiseSubscription
*/
- clear() {
- this._clear();
+ async execute(executeAsync, scope, args) {
+ if (!this.isOnce || !this.isExecuted) {
+ this.isExecuted = true;
+ //TODO: do we need to cast to any -- seems yuck
+ var fn = this.handler;
+ if (executeAsync) {
+ setTimeout(() => {
+ fn.apply(scope, args);
+ }, 1);
+ return;
+ }
+ let result = fn.apply(scope, args);
+ await result;
+ }
}
}
-exports.DispatcherWrapper = DispatcherWrapper;
+exports.PromiseSubscription = PromiseSubscription;
/***/ }),
-/***/ 2177:
-/***/ ((__unused_webpack_module, exports) => {
+/***/ 6569:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.EventListBase = void 0;
-/**
- * Base class for event lists classes. Implements the get and remove.
- *
- * @export
- * @abstract
- * @class EventListBaset
- * @template TEventDispatcher The type of event dispatcher.
- */
-class EventListBase {
- constructor() {
- this._events = {};
- }
- /**
- * Gets the dispatcher associated with the name.
- *
- * @param {string} name The name of the event.
- * @returns {TEventDispatcher} The disptacher.
- *
- * @memberOf EventListBase
- */
- get(name) {
- let event = this._events[name];
- if (event) {
- return event;
- }
- event = this.createDispatcher();
- this._events[name] = event;
- return event;
- }
- /**
- * Removes the dispatcher associated with the name.
- *
- * @param {string} name
- *
- * @memberOf EventListBase
- */
- remove(name) {
- delete this._events[name];
- }
-}
-exports.EventListBase = EventListBase;
+exports.NonUniformSimpleEventList = exports.SimpleEventList = exports.SimpleEventHandlingBase = exports.SimpleEventDispatcher = void 0;
+const SimpleEventDispatcher_1 = __webpack_require__(9606);
+Object.defineProperty(exports, "SimpleEventDispatcher", ({ enumerable: true, get: function () { return SimpleEventDispatcher_1.SimpleEventDispatcher; } }));
+const SimpleEventHandlingBase_1 = __webpack_require__(4763);
+Object.defineProperty(exports, "SimpleEventHandlingBase", ({ enumerable: true, get: function () { return SimpleEventHandlingBase_1.SimpleEventHandlingBase; } }));
+const NonUniformSimpleEventList_1 = __webpack_require__(7376);
+Object.defineProperty(exports, "NonUniformSimpleEventList", ({ enumerable: true, get: function () { return NonUniformSimpleEventList_1.NonUniformSimpleEventList; } }));
+const SimpleEventList_1 = __webpack_require__(2175);
+Object.defineProperty(exports, "SimpleEventList", ({ enumerable: true, get: function () { return SimpleEventList_1.SimpleEventList; } }));
/***/ }),
-/***/ 2300:
+/***/ 6580:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.PromiseDispatcherBase = void 0;
-const __1 = __webpack_require__(8486);
+const __1 = __webpack_require__(4604);
/**
* Dispatcher base for dispatchers that use promises. Each promise
* is awaited before the next is dispatched, unless the event is
@@ -5195,341 +4690,296 @@ exports.PromiseDispatcherBase = PromiseDispatcherBase;
/***/ }),
-/***/ 4303:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+/***/ 6833:
+/***/ (function(module, exports, __webpack_require__) {
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.SubscriptionChangeEventDispatcher = void 0;
-const __1 = __webpack_require__(8486);
-/**
- * Dispatcher for subscription changes.
- *
- * @export
- * @class SubscriptionChangeEventDispatcher
- * @extends {DispatcherBase}
- */
-class SubscriptionChangeEventDispatcher extends __1.DispatcherBase {
- /**
- * Dispatches the event.
- *
- * @param {number} count The currrent number of subscriptions.
- *
- * @memberOf SubscriptionChangeEventDispatcher
- */
- dispatch(count) {
- this._dispatch(false, this, arguments);
- }
-}
-exports.SubscriptionChangeEventDispatcher = SubscriptionChangeEventDispatcher;
+/* module decorator */ module = __webpack_require__.nmd(module);
+var __WEBPACK_AMD_DEFINE_RESULT__;// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.
+//
+// This fast non-cryptographic random number generator is designed for
+// use in Monte-Carlo algorithms. It combines a long-period xorshift
+// generator with a Weyl generator, and it passes all common batteries
+// of stasticial tests for randomness while consuming only a few nanoseconds
+// for each prng generated. For background on the generator, see Brent's
+// paper: "Some long-period random number generators using shifts and xors."
+// http://arxiv.org/pdf/1004.3115v1.pdf
+//
+// Usage:
+//
+// var xor4096 = require('xor4096');
+// random = xor4096(1); // Seed with int32 or string.
+// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.
+// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.
+//
+// For nonzero numeric keys, this impelementation provides a sequence
+// identical to that by Brent's xorgens 3 implementaion in C. This
+// implementation also provides for initalizing the generator with
+// string seeds, or for saving and restoring the state of the generator.
+//
+// On Chrome, this prng benchmarks about 2.1 times slower than
+// Javascript's built-in Math.random().
+(function(global, module, define) {
-/***/ }),
+function XorGen(seed) {
+ var me = this;
-/***/ 9703:
-/***/ ((__unused_webpack_module, exports) => {
+ // Set up generator function.
+ me.next = function() {
+ var w = me.w,
+ X = me.X, i = me.i, t, v;
+ // Update Weyl generator.
+ me.w = w = (w + 0x61c88647) | 0;
+ // Update xor generator.
+ v = X[(i + 34) & 127];
+ t = X[i = ((i + 1) & 127)];
+ v ^= v << 13;
+ t ^= t << 17;
+ v ^= v >>> 15;
+ t ^= t >>> 12;
+ // Update Xor generator array state.
+ v = X[i] = v ^ t;
+ me.i = i;
+ // Result is the combination.
+ return (v + (w ^ (w >>> 16))) | 0;
+ };
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseSubscription = void 0;
-/**
- * Subscription implementation for events with promises.
- *
- * @export
- * @class PromiseSubscription
- * @implements {ISubscription}
- * @template TEventHandler The type of event handler.
- */
-class PromiseSubscription {
- /**
- * Creates an instance of PromiseSubscription.
- * @param {TEventHandler} handler The handler for the subscription.
- * @param {boolean} isOnce Indicates if the handler should only be executed once.
- *
- * @memberOf PromiseSubscription
- */
- constructor(handler, isOnce) {
- this.handler = handler;
- this.isOnce = isOnce;
- /**
- * Indicates if the subscription has been executed before.
- *
- * @memberOf PromiseSubscription
- */
- this.isExecuted = false;
- }
- /**
- * Executes the handler.
- *
- * @param {boolean} executeAsync True if the even should be executed async.
- * @param {*} scope The scope the scope of the event.
- * @param {IArguments} args The arguments for the event.
- *
- * @memberOf PromiseSubscription
- */
- async execute(executeAsync, scope, args) {
- if (!this.isOnce || !this.isExecuted) {
- this.isExecuted = true;
- //TODO: do we need to cast to any -- seems yuck
- var fn = this.handler;
- if (executeAsync) {
- setTimeout(() => {
- fn.apply(scope, args);
- }, 1);
- return;
- }
- let result = fn.apply(scope, args);
- await result;
- }
- }
-}
-exports.PromiseSubscription = PromiseSubscription;
+ function init(me, seed) {
+ var t, v, i, j, w, X = [], limit = 128;
+ if (seed === (seed | 0)) {
+ // Numeric seeds initialize v, which is used to generates X.
+ v = seed;
+ seed = null;
+ } else {
+ // String seeds are mixed into v and X one character at a time.
+ seed = seed + '\0';
+ v = 0;
+ limit = Math.max(limit, seed.length);
+ }
+ // Initialize circular array and weyl value.
+ for (i = 0, j = -32; j < limit; ++j) {
+ // Put the unicode characters into the array, and shuffle them.
+ if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);
+ // After 32 shuffles, take v as the starting w value.
+ if (j === 0) w = v;
+ v ^= v << 10;
+ v ^= v >>> 15;
+ v ^= v << 4;
+ v ^= v >>> 13;
+ if (j >= 0) {
+ w = (w + 0x61c88647) | 0; // Weyl.
+ t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.
+ i = (0 == t) ? i + 1 : 0; // Count zeroes.
+ }
+ }
+ // We have detected all zeroes; make the key nonzero.
+ if (i >= 128) {
+ X[(seed && seed.length || 0) & 127] = -1;
+ }
+ // Run the generator 512 times to further mix the state before using it.
+ // Factoring this as a function slows the main generator, so it is just
+ // unrolled here. The weyl generator is not advanced while warming up.
+ i = 127;
+ for (j = 4 * 128; j > 0; --j) {
+ v = X[(i + 34) & 127];
+ t = X[i = ((i + 1) & 127)];
+ v ^= v << 13;
+ t ^= t << 17;
+ v ^= v >>> 15;
+ t ^= t >>> 12;
+ X[i] = v ^ t;
+ }
+ // Storing state as object members is faster than using closure variables.
+ me.w = w;
+ me.X = X;
+ me.i = i;
+ }
+
+ init(me, seed);
+}
+
+function copy(f, t) {
+ t.i = f.i;
+ t.w = f.w;
+ t.X = f.X.slice();
+ return t;
+};
+
+function impl(seed, opts) {
+ if (seed == null) seed = +(new Date);
+ var xg = new XorGen(seed),
+ state = opts && opts.state,
+ prng = function() { return (xg.next() >>> 0) / 0x100000000; };
+ prng.double = function() {
+ do {
+ var top = xg.next() >>> 11,
+ bot = (xg.next() >>> 0) / 0x100000000,
+ result = (top + bot) / (1 << 21);
+ } while (result === 0);
+ return result;
+ };
+ prng.int32 = xg.next;
+ prng.quick = prng;
+ if (state) {
+ if (state.X) copy(state, xg);
+ prng.state = function() { return copy(xg, {}); }
+ }
+ return prng;
+}
+
+if (module && module.exports) {
+ module.exports = impl;
+} else if (__webpack_require__.amdD && __webpack_require__.amdO) {
+ !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { return impl; }).call(exports, __webpack_require__, exports, module),
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+} else {
+ this.xor4096 = impl;
+}
+
+})(
+ this, // window object or global
+ true && module, // present in node.js
+ __webpack_require__.amdD // present with an AMD loader
+);
/***/ }),
-/***/ 4683:
-/***/ ((__unused_webpack_module, exports) => {
+/***/ 7180:
+/***/ (function(module, exports, __webpack_require__) {
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.Subscription = void 0;
-/**
- * Stores a handler. Manages execution meta data.
- * @class Subscription
- * @template TEventHandler
- */
-class Subscription {
- /**
- * Creates an instance of Subscription.
- *
- * @param {TEventHandler} handler The handler for the subscription.
- * @param {boolean} isOnce Indicates if the handler should only be executed once.
- */
- constructor(handler, isOnce) {
- this.handler = handler;
- this.isOnce = isOnce;
- /**
- * Indicates if the subscription has been executed before.
- */
- this.isExecuted = false;
- }
- /**
- * Executes the handler.
- *
- * @param {boolean} executeAsync True if the even should be executed async.
- * @param {*} scope The scope the scope of the event.
- * @param {IArguments} args The arguments for the event.
- */
- execute(executeAsync, scope, args) {
- if (!this.isOnce || !this.isExecuted) {
- this.isExecuted = true;
- var fn = this.handler;
- if (executeAsync) {
- setTimeout(() => {
- fn.apply(scope, args);
- }, 1);
- }
- else {
- fn.apply(scope, args);
- }
- }
- }
-}
-exports.Subscription = Subscription;
+/* module decorator */ module = __webpack_require__.nmd(module);
+var __WEBPACK_AMD_DEFINE_RESULT__;// A port of an algorithm by Johannes Baagøe , 2010
+// http://baagoe.com/en/RandomMusings/javascript/
+// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror
+// Original work is under MIT license -
+// Copyright (C) 2010 by Johannes Baagøe
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
-/***/ }),
-/***/ 5673:
-/***/ ((__unused_webpack_module, exports) => {
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.HandlingBase = void 0;
-/**
- * Base class that implements event handling. With a an
- * event list this base class will expose events that can be
- * subscribed to. This will give your class generic events.
- *
- * @export
- * @abstract
- * @class HandlingBase
- * @template TEventHandler The type of event handler.
- * @template TDispatcher The type of dispatcher.
- * @template TList The type of event list.
- */
-class HandlingBase {
- /**
- * Creates an instance of HandlingBase.
- * @param {TList} events The event list. Used for event management.
- *
- * @memberOf HandlingBase
- */
- constructor(events) {
- this.events = events;
- }
- /**
- * Subscribes once to the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf HandlingBase
- */
- one(name, fn) {
- this.events.get(name).one(fn);
- }
- /**
- * Checks it the event has a subscription for the specified handler.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf HandlingBase
- */
- has(name, fn) {
- return this.events.get(name).has(fn);
- }
- /**
- * Subscribes to the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf HandlingBase
- */
- subscribe(name, fn) {
- this.events.get(name).subscribe(fn);
- }
- /**
- * Subscribes to the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf HandlingBase
- */
- sub(name, fn) {
- this.subscribe(name, fn);
- }
- /**
- * Unsubscribes from the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf HandlingBase
- */
- unsubscribe(name, fn) {
- this.events.get(name).unsubscribe(fn);
- }
- /**
- * Unsubscribes from the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
- *
- * @memberOf HandlingBase
- */
- unsub(name, fn) {
- this.unsubscribe(name, fn);
- }
-}
-exports.HandlingBase = HandlingBase;
+(function(global, module, define) {
+function Alea(seed) {
+ var me = this, mash = Mash();
-/***/ }),
+ me.next = function() {
+ var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32
+ me.s0 = me.s1;
+ me.s1 = me.s2;
+ return me.s2 = t - (me.c = t | 0);
+ };
+
+ // Apply the seeding algorithm from Baagoe.
+ me.c = 1;
+ me.s0 = mash(' ');
+ me.s1 = mash(' ');
+ me.s2 = mash(' ');
+ me.s0 -= mash(seed);
+ if (me.s0 < 0) { me.s0 += 1; }
+ me.s1 -= mash(seed);
+ if (me.s1 < 0) { me.s1 += 1; }
+ me.s2 -= mash(seed);
+ if (me.s2 < 0) { me.s2 += 1; }
+ mash = null;
+}
+
+function copy(f, t) {
+ t.c = f.c;
+ t.s0 = f.s0;
+ t.s1 = f.s1;
+ t.s2 = f.s2;
+ return t;
+}
+
+function impl(seed, opts) {
+ var xg = new Alea(seed),
+ state = opts && opts.state,
+ prng = xg.next;
+ prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }
+ prng.double = function() {
+ return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53
+ };
+ prng.quick = prng;
+ if (state) {
+ if (typeof(state) == 'object') copy(state, xg);
+ prng.state = function() { return copy(xg, {}); }
+ }
+ return prng;
+}
+
+function Mash() {
+ var n = 0xefc8249d;
+
+ var mash = function(data) {
+ data = data.toString();
+ for (var i = 0; i < data.length; i++) {
+ n += data.charCodeAt(i);
+ var h = 0.02519603282416938 * n;
+ n = h >>> 0;
+ h -= n;
+ h *= n;
+ n = h >>> 0;
+ h -= n;
+ n += h * 0x100000000; // 2^32
+ }
+ return (n >>> 0) * 2.3283064365386963e-10; // 2^-32
+ };
-/***/ 8486:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+ return mash;
+}
-"use strict";
-
-/*!
- * Strongly Typed Events for TypeScript - Core
- * https://github.com/KeesCBakker/StronlyTypedEvents/
- * http://keestalkstech.com
- *
- * Copyright Kees C. Bakker / KeesTalksTech
- * Released under the MIT license
- */
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.SubscriptionChangeEventDispatcher = exports.HandlingBase = exports.PromiseDispatcherBase = exports.PromiseSubscription = exports.DispatchError = exports.EventManagement = exports.EventListBase = exports.DispatcherWrapper = exports.DispatcherBase = exports.Subscription = void 0;
-const DispatcherBase_1 = __webpack_require__(1368);
-Object.defineProperty(exports, "DispatcherBase", ({ enumerable: true, get: function () { return DispatcherBase_1.DispatcherBase; } }));
-const DispatchError_1 = __webpack_require__(6463);
-Object.defineProperty(exports, "DispatchError", ({ enumerable: true, get: function () { return DispatchError_1.DispatchError; } }));
-const DispatcherWrapper_1 = __webpack_require__(6982);
-Object.defineProperty(exports, "DispatcherWrapper", ({ enumerable: true, get: function () { return DispatcherWrapper_1.DispatcherWrapper; } }));
-const EventListBase_1 = __webpack_require__(2177);
-Object.defineProperty(exports, "EventListBase", ({ enumerable: true, get: function () { return EventListBase_1.EventListBase; } }));
-const EventManagement_1 = __webpack_require__(8209);
-Object.defineProperty(exports, "EventManagement", ({ enumerable: true, get: function () { return EventManagement_1.EventManagement; } }));
-const HandlingBase_1 = __webpack_require__(5673);
-Object.defineProperty(exports, "HandlingBase", ({ enumerable: true, get: function () { return HandlingBase_1.HandlingBase; } }));
-const PromiseDispatcherBase_1 = __webpack_require__(2300);
-Object.defineProperty(exports, "PromiseDispatcherBase", ({ enumerable: true, get: function () { return PromiseDispatcherBase_1.PromiseDispatcherBase; } }));
-const PromiseSubscription_1 = __webpack_require__(9703);
-Object.defineProperty(exports, "PromiseSubscription", ({ enumerable: true, get: function () { return PromiseSubscription_1.PromiseSubscription; } }));
-const Subscription_1 = __webpack_require__(4683);
-Object.defineProperty(exports, "Subscription", ({ enumerable: true, get: function () { return Subscription_1.Subscription; } }));
-const SubscriptionChangeEventHandler_1 = __webpack_require__(4303);
-Object.defineProperty(exports, "SubscriptionChangeEventDispatcher", ({ enumerable: true, get: function () { return SubscriptionChangeEventHandler_1.SubscriptionChangeEventDispatcher; } }));
+if (module && module.exports) {
+ module.exports = impl;
+} else if (__webpack_require__.amdD && __webpack_require__.amdO) {
+ !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { return impl; }).call(exports, __webpack_require__, exports, module),
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+} else {
+ this.alea = impl;
+}
-/***/ }),
+})(
+ this,
+ true && module, // present in node.js
+ __webpack_require__.amdD // present with an AMD loader
+);
-/***/ 8209:
-/***/ ((__unused_webpack_module, exports) => {
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.EventManagement = void 0;
-/**
- * Allows the user to interact with the event.
- *
- * @export
- * @class EventManagement
- * @implements {IEventManagement}
- */
-class EventManagement {
- /**
- * Creates an instance of EventManagement.
- * @param {() => void} unsub An unsubscribe handler.
- *
- * @memberOf EventManagement
- */
- constructor(unsub) {
- this.unsub = unsub;
- this.propagationStopped = false;
- }
- /**
- * Stops the propagation of the event.
- * Cannot be used when async dispatch is done.
- *
- * @memberOf EventManagement
- */
- stopPropagation() {
- this.propagationStopped = true;
- }
-}
-exports.EventManagement = EventManagement;
/***/ }),
-/***/ 4537:
+/***/ 7376:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.NonUniformPromiseSimpleEventList = void 0;
-const PromiseSimpleEventDispatcher_1 = __webpack_require__(8921);
+exports.NonUniformSimpleEventList = void 0;
+const SimpleEventDispatcher_1 = __webpack_require__(9606);
/**
* Similar to EventList, but instead of TArgs, a map of event names ang argument types is provided with TArgsMap.
*/
-class NonUniformPromiseSimpleEventList {
+class NonUniformSimpleEventList {
constructor() {
this._events = {};
}
@@ -5557,128 +5007,325 @@ class NonUniformPromiseSimpleEventList {
* Creates a new dispatcher instance.
*/
createDispatcher() {
- return new PromiseSimpleEventDispatcher_1.PromiseSimpleEventDispatcher();
+ return new SimpleEventDispatcher_1.SimpleEventDispatcher();
}
}
-exports.NonUniformPromiseSimpleEventList = NonUniformPromiseSimpleEventList;
+exports.NonUniformSimpleEventList = NonUniformSimpleEventList;
/***/ }),
-/***/ 8921:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+/***/ 7391:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+// A library of seedable RNGs implemented in Javascript.
+//
+// Usage:
+//
+// var seedrandom = require('seedrandom');
+// var random = seedrandom(1); // or any seed.
+// var x = random(); // 0 <= x < 1. Every bit is random.
+// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.
+
+// alea, a 53-bit multiply-with-carry generator by Johannes Baagøe.
+// Period: ~2^116
+// Reported to pass all BigCrush tests.
+var alea = __webpack_require__(7180);
+
+// xor128, a pure xor-shift generator by George Marsaglia.
+// Period: 2^128-1.
+// Reported to fail: MatrixRank and LinearComp.
+var xor128 = __webpack_require__(3181);
+
+// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.
+// Period: 2^192-2^32
+// Reported to fail: CollisionOver, SimpPoker, and LinearComp.
+var xorwow = __webpack_require__(3031);
+
+// xorshift7, by François Panneton and Pierre L'ecuyer, takes
+// a different approach: it adds robustness by allowing more shifts
+// than Marsaglia's original three. It is a 7-shift generator
+// with 256 bits, that passes BigCrush with no systmatic failures.
+// Period 2^256-1.
+// No systematic BigCrush failures reported.
+var xorshift7 = __webpack_require__(9067);
+
+// xor4096, by Richard Brent, is a 4096-bit xor-shift with a
+// very long period that also adds a Weyl generator. It also passes
+// BigCrush with no systematic failures. Its long period may
+// be useful if you have many generators and need to avoid
+// collisions.
+// Period: 2^4128-2^32.
+// No systematic BigCrush failures reported.
+var xor4096 = __webpack_require__(6833);
+
+// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random
+// number generator derived from ChaCha, a modern stream cipher.
+// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf
+// Period: ~2^127
+// No systematic BigCrush failures reported.
+var tychei = __webpack_require__(3717);
+
+// The original ARC4-based prng included in this library.
+// Period: ~2^1600
+var sr = __webpack_require__(4801);
+
+sr.alea = alea;
+sr.xor128 = xor128;
+sr.xorwow = xorwow;
+sr.xorshift7 = xorshift7;
+sr.xor4096 = xor4096;
+sr.tychei = tychei;
+
+module.exports = sr;
+
+
+/***/ }),
+
+/***/ 7569:
+/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseSimpleEventDispatcher = void 0;
-const ste_core_1 = __webpack_require__(3310);
+exports.DispatcherWrapper = void 0;
/**
- * The dispatcher handles the storage of subsciptions and facilitates
- * subscription, unsubscription and dispatching of a simple event
+ * Hides the implementation of the event dispatcher. Will expose methods that
+ * are relevent to the event.
*
* @export
- * @class PromiseSimpleEventDispatcher
- * @extends {PromiseDispatcherBase>}
- * @implements {IPromiseSimpleEvent}
- * @template TArgs
+ * @class DispatcherWrapper
+ * @implements {ISubscribable}
+ * @template TEventHandler The type of event handler.
*/
-class PromiseSimpleEventDispatcher extends ste_core_1.PromiseDispatcherBase {
+class DispatcherWrapper {
/**
- * Creates a new SimpleEventDispatcher instance.
+ * Creates an instance of DispatcherWrapper.
+ * @param {ISubscribable} dispatcher
+ *
+ * @memberOf DispatcherWrapper
*/
- constructor() {
- super();
+ constructor(dispatcher) {
+ this._subscribe = (fn) => dispatcher.subscribe(fn);
+ this._unsubscribe = (fn) => dispatcher.unsubscribe(fn);
+ this._one = (fn) => dispatcher.one(fn);
+ this._has = (fn) => dispatcher.has(fn);
+ this._clear = () => dispatcher.clear();
+ this._count = () => dispatcher.count;
+ this._onSubscriptionChange = () => dispatcher.onSubscriptionChange;
}
/**
- * Dispatches the event.
- * @param args The arguments object.
- * @returns {IPropagationStatus} The status of the dispatch.
- * @memberOf PromiseSimpleEventDispatcher
+ * Triggered when subscriptions are changed (added or removed).
+ *
+ * @readonly
+ * @type {ISubscribable}
+ * @memberOf DispatcherWrapper
*/
- async dispatch(args) {
- const result = await this._dispatchAsPromise(false, this, arguments);
- if (result == null) {
- throw new ste_core_1.DispatchError("Got `null` back from dispatch.");
- }
- return result;
+ get onSubscriptionChange() {
+ return this._onSubscriptionChange();
+ }
+ /**
+ * Returns the number of subscriptions.
+ *
+ * @readonly
+ * @type {number}
+ * @memberOf DispatcherWrapper
+ */
+ get count() {
+ return this._count();
+ }
+ /**
+ * Subscribe to the event dispatcher.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * @returns {() => void} A function that unsubscribes the event handler from the event.
+ *
+ * @memberOf DispatcherWrapper
+ */
+ subscribe(fn) {
+ return this._subscribe(fn);
+ }
+ /**
+ * Subscribe to the event dispatcher.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * @returns {() => void} A function that unsubscribes the event handler from the event.
+ *
+ * @memberOf DispatcherWrapper
+ */
+ sub(fn) {
+ return this.subscribe(fn);
+ }
+ /**
+ * Unsubscribe from the event dispatcher.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ *
+ * @memberOf DispatcherWrapper
+ */
+ unsubscribe(fn) {
+ this._unsubscribe(fn);
+ }
+ /**
+ * Unsubscribe from the event dispatcher.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ *
+ * @memberOf DispatcherWrapper
+ */
+ unsub(fn) {
+ this.unsubscribe(fn);
+ }
+ /**
+ * Subscribe once to the event with the specified name.
+ *
+ * @returns {() => void} A function that unsubscribes the event handler from the event.
+ *
+ * @memberOf DispatcherWrapper
+ */
+ one(fn) {
+ return this._one(fn);
}
/**
- * Dispatches the event without waiting for it to complete.
- * @param args The argument object.
- * @memberOf PromiseSimpleEventDispatcher
+ * Checks it the event has a subscription for the specified handler.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ *
+ * @memberOf DispatcherWrapper
*/
- dispatchAsync(args) {
- this._dispatchAsPromise(true, this, arguments);
+ has(fn) {
+ return this._has(fn);
}
/**
- * Creates an event from the dispatcher. Will return the dispatcher
- * in a wrapper. This will prevent exposure of any dispatcher methods.
+ * Clears all the subscriptions.
+ *
+ * @memberOf DispatcherWrapper
*/
- asEvent() {
- return super.asEvent();
+ clear() {
+ this._clear();
}
}
-exports.PromiseSimpleEventDispatcher = PromiseSimpleEventDispatcher;
+exports.DispatcherWrapper = DispatcherWrapper;
/***/ }),
-/***/ 532:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+/***/ 7672:
+/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseSimpleEventHandlingBase = void 0;
-const ste_core_1 = __webpack_require__(3310);
-const PromiseSimpleEventList_1 = __webpack_require__(7929);
+exports.EventListBase = void 0;
/**
- * Extends objects with signal event handling capabilities.
+ * Base class for event lists classes. Implements the get and remove.
+ *
+ * @export
+ * @abstract
+ * @class EventListBaset
+ * @template TEventDispatcher The type of event dispatcher.
*/
-class PromiseSimpleEventHandlingBase extends ste_core_1.HandlingBase {
+class EventListBase {
constructor() {
- super(new PromiseSimpleEventList_1.PromiseSimpleEventList());
+ this._events = {};
+ }
+ /**
+ * Gets the dispatcher associated with the name.
+ *
+ * @param {string} name The name of the event.
+ * @returns {TEventDispatcher} The disptacher.
+ *
+ * @memberOf EventListBase
+ */
+ get(name) {
+ let event = this._events[name];
+ if (event) {
+ return event;
+ }
+ event = this.createDispatcher();
+ this._events[name] = event;
+ return event;
+ }
+ /**
+ * Removes the dispatcher associated with the name.
+ *
+ * @param {string} name
+ *
+ * @memberOf EventListBase
+ */
+ remove(name) {
+ delete this._events[name];
}
}
-exports.PromiseSimpleEventHandlingBase = PromiseSimpleEventHandlingBase;
+exports.EventListBase = EventListBase;
/***/ }),
-/***/ 7929:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+/***/ 7744:
+/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseSimpleEventList = void 0;
-const ste_core_1 = __webpack_require__(3310);
-const PromiseSimpleEventDispatcher_1 = __webpack_require__(8921);
+exports.PromiseSubscription = void 0;
/**
- * Storage class for multiple simple events that are accessible by name.
- * Events dispatchers are automatically created.
+ * Subscription implementation for events with promises.
+ *
+ * @export
+ * @class PromiseSubscription
+ * @implements {ISubscription}
+ * @template TEventHandler The type of event handler.
*/
-class PromiseSimpleEventList extends ste_core_1.EventListBase {
+class PromiseSubscription {
/**
- * Creates a new SimpleEventList instance.
+ * Creates an instance of PromiseSubscription.
+ * @param {TEventHandler} handler The handler for the subscription.
+ * @param {boolean} isOnce Indicates if the handler should only be executed once.
+ *
+ * @memberOf PromiseSubscription
*/
- constructor() {
- super();
+ constructor(handler, isOnce) {
+ this.handler = handler;
+ this.isOnce = isOnce;
+ /**
+ * Indicates if the subscription has been executed before.
+ *
+ * @memberOf PromiseSubscription
+ */
+ this.isExecuted = false;
}
/**
- * Creates a new dispatcher instance.
+ * Executes the handler.
+ *
+ * @param {boolean} executeAsync True if the even should be executed async.
+ * @param {*} scope The scope the scope of the event.
+ * @param {IArguments} args The arguments for the event.
+ *
+ * @memberOf PromiseSubscription
*/
- createDispatcher() {
- return new PromiseSimpleEventDispatcher_1.PromiseSimpleEventDispatcher();
+ async execute(executeAsync, scope, args) {
+ if (!this.isOnce || !this.isExecuted) {
+ this.isExecuted = true;
+ //TODO: do we need to cast to any -- seems yuck
+ var fn = this.handler;
+ if (executeAsync) {
+ setTimeout(() => {
+ fn.apply(scope, args);
+ }, 1);
+ return;
+ }
+ let result = fn.apply(scope, args);
+ await result;
+ }
}
}
-exports.PromiseSimpleEventList = PromiseSimpleEventList;
+exports.PromiseSubscription = PromiseSubscription;
/***/ }),
-/***/ 9176:
+/***/ 7852:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
@@ -5692,57 +5339,126 @@ exports.PromiseSimpleEventList = PromiseSimpleEventList;
* Released under the MIT license
*/
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.NonUniformPromiseSimpleEventList = exports.PromiseSimpleEventList = exports.PromiseSimpleEventHandlingBase = exports.PromiseSimpleEventDispatcher = void 0;
-const NonUniformPromiseSimpleEventList_1 = __webpack_require__(4537);
-Object.defineProperty(exports, "NonUniformPromiseSimpleEventList", ({ enumerable: true, get: function () { return NonUniformPromiseSimpleEventList_1.NonUniformPromiseSimpleEventList; } }));
-const PromiseSimpleEventDispatcher_1 = __webpack_require__(8921);
-Object.defineProperty(exports, "PromiseSimpleEventDispatcher", ({ enumerable: true, get: function () { return PromiseSimpleEventDispatcher_1.PromiseSimpleEventDispatcher; } }));
-const PromiseSimpleEventHandlingBase_1 = __webpack_require__(532);
-Object.defineProperty(exports, "PromiseSimpleEventHandlingBase", ({ enumerable: true, get: function () { return PromiseSimpleEventHandlingBase_1.PromiseSimpleEventHandlingBase; } }));
-const PromiseSimpleEventList_1 = __webpack_require__(7929);
-Object.defineProperty(exports, "PromiseSimpleEventList", ({ enumerable: true, get: function () { return PromiseSimpleEventList_1.PromiseSimpleEventList; } }));
+exports.SubscriptionChangeEventDispatcher = exports.HandlingBase = exports.PromiseDispatcherBase = exports.PromiseSubscription = exports.DispatchError = exports.EventManagement = exports.EventListBase = exports.DispatcherWrapper = exports.DispatcherBase = exports.Subscription = void 0;
+const DispatcherBase_1 = __webpack_require__(9737);
+Object.defineProperty(exports, "DispatcherBase", ({ enumerable: true, get: function () { return DispatcherBase_1.DispatcherBase; } }));
+const DispatchError_1 = __webpack_require__(8589);
+Object.defineProperty(exports, "DispatchError", ({ enumerable: true, get: function () { return DispatchError_1.DispatchError; } }));
+const DispatcherWrapper_1 = __webpack_require__(8661);
+Object.defineProperty(exports, "DispatcherWrapper", ({ enumerable: true, get: function () { return DispatcherWrapper_1.DispatcherWrapper; } }));
+const EventListBase_1 = __webpack_require__(5636);
+Object.defineProperty(exports, "EventListBase", ({ enumerable: true, get: function () { return EventListBase_1.EventListBase; } }));
+const EventManagement_1 = __webpack_require__(1385);
+Object.defineProperty(exports, "EventManagement", ({ enumerable: true, get: function () { return EventManagement_1.EventManagement; } }));
+const HandlingBase_1 = __webpack_require__(5722);
+Object.defineProperty(exports, "HandlingBase", ({ enumerable: true, get: function () { return HandlingBase_1.HandlingBase; } }));
+const PromiseDispatcherBase_1 = __webpack_require__(6372);
+Object.defineProperty(exports, "PromiseDispatcherBase", ({ enumerable: true, get: function () { return PromiseDispatcherBase_1.PromiseDispatcherBase; } }));
+const PromiseSubscription_1 = __webpack_require__(6484);
+Object.defineProperty(exports, "PromiseSubscription", ({ enumerable: true, get: function () { return PromiseSubscription_1.PromiseSubscription; } }));
+const Subscription_1 = __webpack_require__(8859);
+Object.defineProperty(exports, "Subscription", ({ enumerable: true, get: function () { return Subscription_1.Subscription; } }));
+const SubscriptionChangeEventHandler_1 = __webpack_require__(3324);
+Object.defineProperty(exports, "SubscriptionChangeEventDispatcher", ({ enumerable: true, get: function () { return SubscriptionChangeEventHandler_1.SubscriptionChangeEventDispatcher; } }));
/***/ }),
-/***/ 8181:
-/***/ ((__unused_webpack_module, exports) => {
+/***/ 7936:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.DispatchError = void 0;
+exports.SignalHandlingBase = void 0;
+const ste_core_1 = __webpack_require__(4604);
+const _1 = __webpack_require__(5010);
/**
- * Indicates an error with dispatching.
+ * Extends objects with signal event handling capabilities.
*
* @export
- * @class DispatchError
- * @extends {Error}
+ * @abstract
+ * @class SignalHandlingBase
+ * @extends {HandlingBase}
+ * @implements {ISignalHandling}
*/
-class DispatchError extends Error {
+class SignalHandlingBase extends ste_core_1.HandlingBase {
/**
- * Creates an instance of DispatchError.
- * @param {string} message The message.
+ * Creates an instance of SignalHandlingBase.
*
- * @memberOf DispatchError
+ * @memberOf SignalHandlingBase
*/
- constructor(message) {
- super(message);
+ constructor() {
+ super(new _1.SignalList());
}
}
-exports.DispatchError = DispatchError;
+exports.SignalHandlingBase = SignalHandlingBase;
+
+
+/***/ }),
+
+/***/ 8080:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.Subscription = void 0;
+/**
+ * Stores a handler. Manages execution meta data.
+ * @class Subscription
+ * @template TEventHandler
+ */
+class Subscription {
+ /**
+ * Creates an instance of Subscription.
+ *
+ * @param {TEventHandler} handler The handler for the subscription.
+ * @param {boolean} isOnce Indicates if the handler should only be executed once.
+ */
+ constructor(handler, isOnce) {
+ this.handler = handler;
+ this.isOnce = isOnce;
+ /**
+ * Indicates if the subscription has been executed before.
+ */
+ this.isExecuted = false;
+ }
+ /**
+ * Executes the handler.
+ *
+ * @param {boolean} executeAsync True if the even should be executed async.
+ * @param {*} scope The scope the scope of the event.
+ * @param {IArguments} args The arguments for the event.
+ */
+ execute(executeAsync, scope, args) {
+ if (!this.isOnce || !this.isExecuted) {
+ this.isExecuted = true;
+ var fn = this.handler;
+ if (executeAsync) {
+ setTimeout(() => {
+ fn.apply(scope, args);
+ }, 1);
+ }
+ else {
+ fn.apply(scope, args);
+ }
+ }
+ }
+}
+exports.Subscription = Subscription;
/***/ }),
-/***/ 3040:
+/***/ 8441:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.DispatcherBase = void 0;
-const __1 = __webpack_require__(3310);
+const __1 = __webpack_require__(4604);
/**
* Base class for implementation of the dispatcher. It facilitates the subscribe
* and unsubscribe methods based on generic handlers. The TEventType specifies
@@ -5972,20 +5688,72 @@ class DispatcherBase {
*
* @private
*
- * @memberOf DispatcherBase
+ * @memberOf DispatcherBase
+ */
+ triggerSubscriptionChange() {
+ if (this._onSubscriptionChange != null) {
+ this._onSubscriptionChange.dispatch(this.count);
+ }
+ }
+}
+exports.DispatcherBase = DispatcherBase;
+
+
+/***/ }),
+
+/***/ 8589:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.DispatchError = void 0;
+/**
+ * Indicates an error with dispatching.
+ *
+ * @export
+ * @class DispatchError
+ * @extends {Error}
+ */
+class DispatchError extends Error {
+ /**
+ * Creates an instance of DispatchError.
+ * @param {string} message The message.
+ *
+ * @memberOf DispatchError
*/
- triggerSubscriptionChange() {
- if (this._onSubscriptionChange != null) {
- this._onSubscriptionChange.dispatch(this.count);
- }
+ constructor(message) {
+ super(message);
}
}
-exports.DispatcherBase = DispatcherBase;
+exports.DispatchError = DispatchError;
+
+
+/***/ }),
+
+/***/ 8648:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.PromiseSimpleEventHandlingBase = void 0;
+const ste_core_1 = __webpack_require__(5575);
+const PromiseSimpleEventList_1 = __webpack_require__(5536);
+/**
+ * Extends objects with signal event handling capabilities.
+ */
+class PromiseSimpleEventHandlingBase extends ste_core_1.HandlingBase {
+ constructor() {
+ super(new PromiseSimpleEventList_1.PromiseSimpleEventList());
+ }
+}
+exports.PromiseSimpleEventHandlingBase = PromiseSimpleEventHandlingBase;
/***/ }),
-/***/ 3122:
+/***/ 8661:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
@@ -6063,287 +5831,57 @@ class DispatcherWrapper {
* Unsubscribe from the event dispatcher.
*
* @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- *
- * @memberOf DispatcherWrapper
- */
- unsubscribe(fn) {
- this._unsubscribe(fn);
- }
- /**
- * Unsubscribe from the event dispatcher.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- *
- * @memberOf DispatcherWrapper
- */
- unsub(fn) {
- this.unsubscribe(fn);
- }
- /**
- * Subscribe once to the event with the specified name.
- *
- * @returns {() => void} A function that unsubscribes the event handler from the event.
- *
- * @memberOf DispatcherWrapper
- */
- one(fn) {
- return this._one(fn);
- }
- /**
- * Checks it the event has a subscription for the specified handler.
- *
- * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
- *
- * @memberOf DispatcherWrapper
- */
- has(fn) {
- return this._has(fn);
- }
- /**
- * Clears all the subscriptions.
- *
- * @memberOf DispatcherWrapper
- */
- clear() {
- this._clear();
- }
-}
-exports.DispatcherWrapper = DispatcherWrapper;
-
-
-/***/ }),
-
-/***/ 7955:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.EventListBase = void 0;
-/**
- * Base class for event lists classes. Implements the get and remove.
- *
- * @export
- * @abstract
- * @class EventListBaset
- * @template TEventDispatcher The type of event dispatcher.
- */
-class EventListBase {
- constructor() {
- this._events = {};
- }
- /**
- * Gets the dispatcher associated with the name.
- *
- * @param {string} name The name of the event.
- * @returns {TEventDispatcher} The disptacher.
- *
- * @memberOf EventListBase
- */
- get(name) {
- let event = this._events[name];
- if (event) {
- return event;
- }
- event = this.createDispatcher();
- this._events[name] = event;
- return event;
- }
- /**
- * Removes the dispatcher associated with the name.
- *
- * @param {string} name
- *
- * @memberOf EventListBase
- */
- remove(name) {
- delete this._events[name];
- }
-}
-exports.EventListBase = EventListBase;
-
-
-/***/ }),
-
-/***/ 2490:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseDispatcherBase = void 0;
-const __1 = __webpack_require__(3310);
-/**
- * Dispatcher base for dispatchers that use promises. Each promise
- * is awaited before the next is dispatched, unless the event is
- * dispatched with the executeAsync flag.
- *
- * @export
- * @abstract
- * @class PromiseDispatcherBase
- * @extends {DispatcherBase}
- * @template TEventHandler The type of event handler.
- */
-class PromiseDispatcherBase extends __1.DispatcherBase {
- /**
- * The normal dispatch cannot be used in this class.
- *
- * @protected
- * @param {boolean} executeAsync `True` if the even should be executed async.
- * @param {*} scope The scope of the event. The scope becomes the `this` for handler.
- * @param {IArguments} args The arguments for the event.
- * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.
- *
- * @memberOf DispatcherBase
- */
- _dispatch(executeAsync, scope, args) {
- throw new __1.DispatchError("_dispatch not supported. Use _dispatchAsPromise.");
- }
- /**
- * Crates a new subscription.
- *
- * @protected
- * @param {TEventHandler} handler The handler.
- * @param {boolean} isOnce Indicates if the handler should only run once.
- * @returns {ISubscription} The subscription.
- *
- * @memberOf PromiseDispatcherBase
- */
- createSubscription(handler, isOnce) {
- return new __1.PromiseSubscription(handler, isOnce);
- }
- /**
- * Generic dispatch will dispatch the handlers with the given arguments.
- *
- * @protected
- * @param {boolean} executeAsync `True` if the even should be executed async.
- * @param {*} scope The scope of the event. The scope becomes the `this` for handler.
- * @param {IArguments} args The arguments for the event.
- * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.
- *
- * @memberOf DispatcherBase
- */
- async _dispatchAsPromise(executeAsync, scope, args) {
- //execute on a copy because of bug #9
- for (let sub of [...this._subscriptions]) {
- let ev = new __1.EventManagement(() => this.unsub(sub.handler));
- let nargs = Array.prototype.slice.call(args);
- nargs.push(ev);
- let ps = sub;
- await ps.execute(executeAsync, scope, nargs);
- //cleanup subs that are no longer needed
- this.cleanup(sub);
- if (!executeAsync && ev.propagationStopped) {
- return { propagationStopped: true };
- }
- }
- if (executeAsync) {
- return null;
- }
- return { propagationStopped: false };
- }
-}
-exports.PromiseDispatcherBase = PromiseDispatcherBase;
-
-
-/***/ }),
-
-/***/ 1002:
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.SubscriptionChangeEventDispatcher = void 0;
-const __1 = __webpack_require__(3310);
-/**
- * Dispatcher for subscription changes.
- *
- * @export
- * @class SubscriptionChangeEventDispatcher
- * @extends {DispatcherBase}
- */
-class SubscriptionChangeEventDispatcher extends __1.DispatcherBase {
- /**
- * Dispatches the event.
- *
- * @param {number} count The currrent number of subscriptions.
- *
- * @memberOf SubscriptionChangeEventDispatcher
- */
- dispatch(count) {
- this._dispatch(false, this, arguments);
- }
-}
-exports.SubscriptionChangeEventDispatcher = SubscriptionChangeEventDispatcher;
-
-
-/***/ }),
-
-/***/ 9347:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.PromiseSubscription = void 0;
-/**
- * Subscription implementation for events with promises.
- *
- * @export
- * @class PromiseSubscription
- * @implements {ISubscription}
- * @template TEventHandler The type of event handler.
- */
-class PromiseSubscription {
+ *
+ * @memberOf DispatcherWrapper
+ */
+ unsubscribe(fn) {
+ this._unsubscribe(fn);
+ }
/**
- * Creates an instance of PromiseSubscription.
- * @param {TEventHandler} handler The handler for the subscription.
- * @param {boolean} isOnce Indicates if the handler should only be executed once.
+ * Unsubscribe from the event dispatcher.
*
- * @memberOf PromiseSubscription
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ *
+ * @memberOf DispatcherWrapper
*/
- constructor(handler, isOnce) {
- this.handler = handler;
- this.isOnce = isOnce;
- /**
- * Indicates if the subscription has been executed before.
- *
- * @memberOf PromiseSubscription
- */
- this.isExecuted = false;
+ unsub(fn) {
+ this.unsubscribe(fn);
}
/**
- * Executes the handler.
+ * Subscribe once to the event with the specified name.
*
- * @param {boolean} executeAsync True if the even should be executed async.
- * @param {*} scope The scope the scope of the event.
- * @param {IArguments} args The arguments for the event.
+ * @returns {() => void} A function that unsubscribes the event handler from the event.
*
- * @memberOf PromiseSubscription
+ * @memberOf DispatcherWrapper
*/
- async execute(executeAsync, scope, args) {
- if (!this.isOnce || !this.isExecuted) {
- this.isExecuted = true;
- //TODO: do we need to cast to any -- seems yuck
- var fn = this.handler;
- if (executeAsync) {
- setTimeout(() => {
- fn.apply(scope, args);
- }, 1);
- return;
- }
- let result = fn.apply(scope, args);
- await result;
- }
+ one(fn) {
+ return this._one(fn);
+ }
+ /**
+ * Checks it the event has a subscription for the specified handler.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ *
+ * @memberOf DispatcherWrapper
+ */
+ has(fn) {
+ return this._has(fn);
+ }
+ /**
+ * Clears all the subscriptions.
+ *
+ * @memberOf DispatcherWrapper
+ */
+ clear() {
+ this._clear();
}
}
-exports.PromiseSubscription = PromiseSubscription;
+exports.DispatcherWrapper = DispatcherWrapper;
/***/ }),
-/***/ 2229:
+/***/ 8859:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
@@ -6397,102 +5935,241 @@ exports.Subscription = Subscription;
/***/ }),
-/***/ 1605:
+/***/ 8901:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.HandlingBase = void 0;
+exports.DispatcherWrapper = void 0;
/**
- * Base class that implements event handling. With a an
- * event list this base class will expose events that can be
- * subscribed to. This will give your class generic events.
+ * Hides the implementation of the event dispatcher. Will expose methods that
+ * are relevent to the event.
*
* @export
- * @abstract
- * @class HandlingBase
+ * @class DispatcherWrapper
+ * @implements {ISubscribable}
* @template TEventHandler The type of event handler.
- * @template TDispatcher The type of dispatcher.
- * @template TList The type of event list.
*/
-class HandlingBase {
+class DispatcherWrapper {
/**
- * Creates an instance of HandlingBase.
- * @param {TList} events The event list. Used for event management.
+ * Creates an instance of DispatcherWrapper.
+ * @param {ISubscribable} dispatcher
*
- * @memberOf HandlingBase
+ * @memberOf DispatcherWrapper
*/
- constructor(events) {
- this.events = events;
+ constructor(dispatcher) {
+ this._subscribe = (fn) => dispatcher.subscribe(fn);
+ this._unsubscribe = (fn) => dispatcher.unsubscribe(fn);
+ this._one = (fn) => dispatcher.one(fn);
+ this._has = (fn) => dispatcher.has(fn);
+ this._clear = () => dispatcher.clear();
+ this._count = () => dispatcher.count;
+ this._onSubscriptionChange = () => dispatcher.onSubscriptionChange;
}
/**
- * Subscribes once to the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
+ * Triggered when subscriptions are changed (added or removed).
*
- * @memberOf HandlingBase
+ * @readonly
+ * @type {ISubscribable}
+ * @memberOf DispatcherWrapper
*/
- one(name, fn) {
- this.events.get(name).one(fn);
+ get onSubscriptionChange() {
+ return this._onSubscriptionChange();
}
/**
- * Checks it the event has a subscription for the specified handler.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
+ * Returns the number of subscriptions.
*
- * @memberOf HandlingBase
+ * @readonly
+ * @type {number}
+ * @memberOf DispatcherWrapper
*/
- has(name, fn) {
- return this.events.get(name).has(fn);
+ get count() {
+ return this._count();
}
/**
- * Subscribes to the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
+ * Subscribe to the event dispatcher.
*
- * @memberOf HandlingBase
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * @returns {() => void} A function that unsubscribes the event handler from the event.
+ *
+ * @memberOf DispatcherWrapper
*/
- subscribe(name, fn) {
- this.events.get(name).subscribe(fn);
+ subscribe(fn) {
+ return this._subscribe(fn);
}
/**
- * Subscribes to the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
+ * Subscribe to the event dispatcher.
*
- * @memberOf HandlingBase
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * @returns {() => void} A function that unsubscribes the event handler from the event.
+ *
+ * @memberOf DispatcherWrapper
*/
- sub(name, fn) {
- this.subscribe(name, fn);
+ sub(fn) {
+ return this.subscribe(fn);
}
/**
- * Unsubscribes from the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
+ * Unsubscribe from the event dispatcher.
*
- * @memberOf HandlingBase
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ *
+ * @memberOf DispatcherWrapper
*/
- unsubscribe(name, fn) {
- this.events.get(name).unsubscribe(fn);
+ unsubscribe(fn) {
+ this._unsubscribe(fn);
}
/**
- * Unsubscribes from the event with the specified name.
- * @param {string} name The name of the event.
- * @param {TEventHandler} fn The event handler.
+ * Unsubscribe from the event dispatcher.
*
- * @memberOf HandlingBase
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ *
+ * @memberOf DispatcherWrapper
*/
- unsub(name, fn) {
- this.unsubscribe(name, fn);
+ unsub(fn) {
+ this.unsubscribe(fn);
+ }
+ /**
+ * Subscribe once to the event with the specified name.
+ *
+ * @returns {() => void} A function that unsubscribes the event handler from the event.
+ *
+ * @memberOf DispatcherWrapper
+ */
+ one(fn) {
+ return this._one(fn);
+ }
+ /**
+ * Checks it the event has a subscription for the specified handler.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ *
+ * @memberOf DispatcherWrapper
+ */
+ has(fn) {
+ return this._has(fn);
+ }
+ /**
+ * Clears all the subscriptions.
+ *
+ * @memberOf DispatcherWrapper
+ */
+ clear() {
+ this._clear();
}
}
-exports.HandlingBase = HandlingBase;
+exports.DispatcherWrapper = DispatcherWrapper;
+
+
+/***/ }),
+
+/***/ 9067:
+/***/ (function(module, exports, __webpack_require__) {
+
+/* module decorator */ module = __webpack_require__.nmd(module);
+var __WEBPACK_AMD_DEFINE_RESULT__;// A Javascript implementaion of the "xorshift7" algorithm by
+// François Panneton and Pierre L'ecuyer:
+// "On the Xorgshift Random Number Generators"
+// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf
+
+(function(global, module, define) {
+
+function XorGen(seed) {
+ var me = this;
+
+ // Set up generator function.
+ me.next = function() {
+ // Update xor generator.
+ var X = me.x, i = me.i, t, v, w;
+ t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);
+ t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);
+ t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);
+ t = X[(i + 4) & 7]; v ^= t ^ (t << 7);
+ t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);
+ X[i] = v;
+ me.i = (i + 1) & 7;
+ return v;
+ };
+
+ function init(me, seed) {
+ var j, w, X = [];
+
+ if (seed === (seed | 0)) {
+ // Seed state array using a 32-bit integer.
+ w = X[0] = seed;
+ } else {
+ // Seed state using a string.
+ seed = '' + seed;
+ for (j = 0; j < seed.length; ++j) {
+ X[j & 7] = (X[j & 7] << 15) ^
+ (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);
+ }
+ }
+ // Enforce an array length of 8, not all zeroes.
+ while (X.length < 8) X.push(0);
+ for (j = 0; j < 8 && X[j] === 0; ++j);
+ if (j == 8) w = X[7] = -1; else w = X[j];
+
+ me.x = X;
+ me.i = 0;
+
+ // Discard an initial 256 values.
+ for (j = 256; j > 0; --j) {
+ me.next();
+ }
+ }
+
+ init(me, seed);
+}
+
+function copy(f, t) {
+ t.x = f.x.slice();
+ t.i = f.i;
+ return t;
+}
+
+function impl(seed, opts) {
+ if (seed == null) seed = +(new Date);
+ var xg = new XorGen(seed),
+ state = opts && opts.state,
+ prng = function() { return (xg.next() >>> 0) / 0x100000000; };
+ prng.double = function() {
+ do {
+ var top = xg.next() >>> 11,
+ bot = (xg.next() >>> 0) / 0x100000000,
+ result = (top + bot) / (1 << 21);
+ } while (result === 0);
+ return result;
+ };
+ prng.int32 = xg.next;
+ prng.quick = prng;
+ if (state) {
+ if (state.x) copy(state, xg);
+ prng.state = function() { return copy(xg, {}); }
+ }
+ return prng;
+}
+
+if (module && module.exports) {
+ module.exports = impl;
+} else if (__webpack_require__.amdD && __webpack_require__.amdO) {
+ !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { return impl; }).call(exports, __webpack_require__, exports, module),
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+} else {
+ this.xorshift7 = impl;
+}
+
+})(
+ this,
+ true && module, // present in node.js
+ __webpack_require__.amdD // present with an AMD loader
+);
+
/***/ }),
-/***/ 3310:
+/***/ 9184:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
@@ -6507,83 +6184,43 @@ exports.HandlingBase = HandlingBase;
*/
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.SubscriptionChangeEventDispatcher = exports.HandlingBase = exports.PromiseDispatcherBase = exports.PromiseSubscription = exports.DispatchError = exports.EventManagement = exports.EventListBase = exports.DispatcherWrapper = exports.DispatcherBase = exports.Subscription = void 0;
-const DispatcherBase_1 = __webpack_require__(3040);
+const DispatcherBase_1 = __webpack_require__(4645);
Object.defineProperty(exports, "DispatcherBase", ({ enumerable: true, get: function () { return DispatcherBase_1.DispatcherBase; } }));
-const DispatchError_1 = __webpack_require__(8181);
+const DispatchError_1 = __webpack_require__(3729);
Object.defineProperty(exports, "DispatchError", ({ enumerable: true, get: function () { return DispatchError_1.DispatchError; } }));
-const DispatcherWrapper_1 = __webpack_require__(3122);
+const DispatcherWrapper_1 = __webpack_require__(7569);
Object.defineProperty(exports, "DispatcherWrapper", ({ enumerable: true, get: function () { return DispatcherWrapper_1.DispatcherWrapper; } }));
-const EventListBase_1 = __webpack_require__(7955);
+const EventListBase_1 = __webpack_require__(7672);
Object.defineProperty(exports, "EventListBase", ({ enumerable: true, get: function () { return EventListBase_1.EventListBase; } }));
-const EventManagement_1 = __webpack_require__(2234);
+const EventManagement_1 = __webpack_require__(6413);
Object.defineProperty(exports, "EventManagement", ({ enumerable: true, get: function () { return EventManagement_1.EventManagement; } }));
-const HandlingBase_1 = __webpack_require__(1605);
+const HandlingBase_1 = __webpack_require__(278);
Object.defineProperty(exports, "HandlingBase", ({ enumerable: true, get: function () { return HandlingBase_1.HandlingBase; } }));
-const PromiseDispatcherBase_1 = __webpack_require__(2490);
+const PromiseDispatcherBase_1 = __webpack_require__(4995);
Object.defineProperty(exports, "PromiseDispatcherBase", ({ enumerable: true, get: function () { return PromiseDispatcherBase_1.PromiseDispatcherBase; } }));
-const PromiseSubscription_1 = __webpack_require__(9347);
+const PromiseSubscription_1 = __webpack_require__(7744);
Object.defineProperty(exports, "PromiseSubscription", ({ enumerable: true, get: function () { return PromiseSubscription_1.PromiseSubscription; } }));
-const Subscription_1 = __webpack_require__(2229);
+const Subscription_1 = __webpack_require__(455);
Object.defineProperty(exports, "Subscription", ({ enumerable: true, get: function () { return Subscription_1.Subscription; } }));
-const SubscriptionChangeEventHandler_1 = __webpack_require__(1002);
+const SubscriptionChangeEventHandler_1 = __webpack_require__(3512);
Object.defineProperty(exports, "SubscriptionChangeEventDispatcher", ({ enumerable: true, get: function () { return SubscriptionChangeEventHandler_1.SubscriptionChangeEventDispatcher; } }));
/***/ }),
-/***/ 2234:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.EventManagement = void 0;
-/**
- * Allows the user to interact with the event.
- *
- * @export
- * @class EventManagement
- * @implements {IEventManagement}
- */
-class EventManagement {
- /**
- * Creates an instance of EventManagement.
- * @param {() => void} unsub An unsubscribe handler.
- *
- * @memberOf EventManagement
- */
- constructor(unsub) {
- this.unsub = unsub;
- this.propagationStopped = false;
- }
- /**
- * Stops the propagation of the event.
- * Cannot be used when async dispatch is done.
- *
- * @memberOf EventManagement
- */
- stopPropagation() {
- this.propagationStopped = true;
- }
-}
-exports.EventManagement = EventManagement;
-
-
-/***/ }),
-
-/***/ 3861:
+/***/ 9244:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
- "ZP": () => (/* binding */ tippy_esm)
+ Ay: () => (/* binding */ tippy_esm)
});
// UNUSED EXPORTS: animateFill, createSingleton, delegate, followCursor, hideAll, inlinePositioning, roundArrow, sticky
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js
function getWindow(node) {
if (node == null) {
return window;
@@ -6596,7 +6233,7 @@ function getWindow(node) {
return node;
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js
function isElement(node) {
@@ -6620,48 +6257,70 @@ function isShadowRoot(node) {
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/math.js
+;// ./node_modules/@popperjs/core/lib/utils/math.js
var math_max = Math.max;
var math_min = Math.min;
var round = Math.round;
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
+;// ./node_modules/@popperjs/core/lib/utils/userAgent.js
+function getUAString() {
+ var uaData = navigator.userAgentData;
+
+ if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
+ return uaData.brands.map(function (item) {
+ return item.brand + "/" + item.version;
+ }).join(' ');
+ }
+
+ return navigator.userAgent;
+}
+;// ./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js
+
+function isLayoutViewport() {
+ return !/^((?!chrome|android).)*safari/i.test(getUAString());
+}
+;// ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
+
-function getBoundingClientRect(element, includeScale) {
+
+function getBoundingClientRect(element, includeScale, isFixedStrategy) {
if (includeScale === void 0) {
includeScale = false;
}
- var rect = element.getBoundingClientRect();
+ if (isFixedStrategy === void 0) {
+ isFixedStrategy = false;
+ }
+
+ var clientRect = element.getBoundingClientRect();
var scaleX = 1;
var scaleY = 1;
- if (isHTMLElement(element) && includeScale) {
- var offsetHeight = element.offsetHeight;
- var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale
- // Fallback to 1 in case both values are `0`
-
- if (offsetWidth > 0) {
- scaleX = round(rect.width) / offsetWidth || 1;
- }
-
- if (offsetHeight > 0) {
- scaleY = round(rect.height) / offsetHeight || 1;
- }
+ if (includeScale && isHTMLElement(element)) {
+ scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
+ scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
}
+ var _ref = isElement(element) ? getWindow(element) : window,
+ visualViewport = _ref.visualViewport;
+
+ var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
+ var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
+ var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
+ var width = clientRect.width / scaleX;
+ var height = clientRect.height / scaleY;
return {
- width: rect.width / scaleX,
- height: rect.height / scaleY,
- top: rect.top / scaleY,
- right: rect.right / scaleX,
- bottom: rect.bottom / scaleY,
- left: rect.left / scaleX,
- x: rect.left / scaleX,
- y: rect.top / scaleY
+ width: width,
+ height: height,
+ top: y,
+ right: x + width,
+ bottom: y + height,
+ left: x,
+ x: x,
+ y: y
};
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js
function getWindowScroll(node) {
var win = getWindow(node);
@@ -6672,14 +6331,14 @@ function getWindowScroll(node) {
scrollTop: scrollTop
};
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js
function getHTMLElementScroll(element) {
return {
scrollLeft: element.scrollLeft,
scrollTop: element.scrollTop
};
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js
@@ -6691,18 +6350,18 @@ function getNodeScroll(node) {
return getHTMLElementScroll(node);
}
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js
function getNodeName(element) {
return element ? (element.nodeName || '').toLowerCase() : null;
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js
function getDocumentElement(element) {
// $FlowFixMe[incompatible-return]: assume body is always available
return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]
element.document) || window.document).documentElement;
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js
@@ -6716,12 +6375,12 @@ function getWindowScrollBarX(element) {
// this (e.g. Edge 2019, IE11, Safari)
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js
function getComputedStyle(element) {
return getWindow(element).getComputedStyle(element);
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
function isScrollParent(element) {
// Firefox wants us to check `-x` and `-y` variations as well
@@ -6732,7 +6391,7 @@ function isScrollParent(element) {
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
@@ -6759,7 +6418,7 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
var isOffsetParentAnElement = isHTMLElement(offsetParent);
var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
var documentElement = getDocumentElement(offsetParent);
- var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);
+ var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
var scroll = {
scrollLeft: 0,
scrollTop: 0
@@ -6791,7 +6450,7 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
height: rect.height
};
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js
// Returns the layout rect of an element relative to its offsetParent. Layout
// means it doesn't take into account transforms.
@@ -6817,7 +6476,7 @@ function getLayoutRect(element) {
height: height
};
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js
@@ -6837,7 +6496,7 @@ function getParentNode(element) {
);
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
@@ -6854,7 +6513,7 @@ function getScrollParent(node) {
return getScrollParent(getParentNode(node));
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
@@ -6881,12 +6540,13 @@ function listScrollParents(element, list) {
return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
updatedList.concat(listScrollParents(getParentNode(target)));
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js
function isTableElement(element) {
return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
+
@@ -6906,8 +6566,8 @@ function getTrueOffsetParent(element) {
function getContainingBlock(element) {
- var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;
- var isIE = navigator.userAgent.indexOf('Trident') !== -1;
+ var isFirefox = /firefox/i.test(getUAString());
+ var isIE = /Trident/i.test(getUAString());
if (isIE && isHTMLElement(element)) {
// In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
@@ -6920,6 +6580,10 @@ function getContainingBlock(element) {
var currentNode = getParentNode(element);
+ if (isShadowRoot(currentNode)) {
+ currentNode = currentNode.host;
+ }
+
while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that
// create a containing block.
@@ -6951,7 +6615,7 @@ function getOffsetParent(element) {
return offsetParent || getContainingBlock(element) || window;
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/enums.js
+;// ./node_modules/@popperjs/core/lib/enums.js
var enums_top = 'top';
var bottom = 'bottom';
var right = 'right';
@@ -6983,7 +6647,7 @@ var beforeWrite = 'beforeWrite';
var write = 'write';
var afterWrite = 'afterWrite';
var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/orderModifiers.js
+;// ./node_modules/@popperjs/core/lib/utils/orderModifiers.js
// source: https://stackoverflow.com/questions/49875255
function order(modifiers) {
@@ -7028,7 +6692,7 @@ function orderModifiers(modifiers) {
}));
}, []);
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/debounce.js
+;// ./node_modules/@popperjs/core/lib/utils/debounce.js
function debounce(fn) {
var pending;
return function () {
@@ -7044,7 +6708,7 @@ function debounce(fn) {
return pending;
};
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/mergeByName.js
+;// ./node_modules/@popperjs/core/lib/utils/mergeByName.js
function mergeByName(modifiers) {
var merged = modifiers.reduce(function (merged, current) {
var existing = merged[current.name];
@@ -7059,9 +6723,7 @@ function mergeByName(modifiers) {
return merged[key];
});
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/createPopper.js
-
-
+;// ./node_modules/@popperjs/core/lib/createPopper.js
@@ -7071,11 +6733,6 @@ function mergeByName(modifiers) {
-
-
-
-var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';
-var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';
var DEFAULT_OPTIONS = {
placement: 'bottom',
modifiers: [],
@@ -7137,11 +6794,7 @@ function popperGenerator(generatorOptions) {
state.orderedModifiers = orderedModifiers.filter(function (m) {
return m.enabled;
- }); // Validate the provided modifiers so that the consumer will get warned
- // if one of the modifiers is invalid for any reason
-
- if (false) { var _getComputedStyle, marginTop, marginRight, marginBottom, marginLeft, flipModifier, modifiers; }
-
+ });
runModifierEffects();
return instance.update();
},
@@ -7161,8 +6814,6 @@ function popperGenerator(generatorOptions) {
// anymore
if (!areValidElements(reference, popper)) {
- if (false) {}
-
return;
} // Store the reference and popper rects to be read by modifiers
@@ -7185,11 +6836,8 @@ function popperGenerator(generatorOptions) {
state.orderedModifiers.forEach(function (modifier) {
return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
});
- var __debug_loops__ = 0;
for (var index = 0; index < state.orderedModifiers.length; index++) {
- if (false) {}
-
if (state.reset === true) {
state.reset = false;
index = -1;
@@ -7227,8 +6875,6 @@ function popperGenerator(generatorOptions) {
};
if (!areValidElements(reference, popper)) {
- if (false) {}
-
return instance;
}
@@ -7243,11 +6889,11 @@ function popperGenerator(generatorOptions) {
// one.
function runModifierEffects() {
- state.orderedModifiers.forEach(function (_ref3) {
- var name = _ref3.name,
- _ref3$options = _ref3.options,
- options = _ref3$options === void 0 ? {} : _ref3$options,
- effect = _ref3.effect;
+ state.orderedModifiers.forEach(function (_ref) {
+ var name = _ref.name,
+ _ref$options = _ref.options,
+ options = _ref$options === void 0 ? {} : _ref$options,
+ effect = _ref.effect;
if (typeof effect === 'function') {
var cleanupFn = effect({
@@ -7277,7 +6923,7 @@ function popperGenerator(generatorOptions) {
var createPopper = /*#__PURE__*/(/* unused pure expression or super */ null && (popperGenerator())); // eslint-disable-next-line import/no-unused-modules
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js
+;// ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js
// eslint-disable-next-line import/no-unused-modules
var passive = {
@@ -7327,20 +6973,20 @@ function effect(_ref) {
effect: effect,
data: {}
});
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js
+;// ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js
function getBasePlacement(placement) {
return placement.split('-')[0];
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getVariation.js
+;// ./node_modules/@popperjs/core/lib/utils/getVariation.js
function getVariation(placement) {
return placement.split('-')[1];
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js
+;// ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js
function getMainAxisFromPlacement(placement) {
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/computeOffsets.js
+;// ./node_modules/@popperjs/core/lib/utils/computeOffsets.js
@@ -7411,7 +7057,7 @@ function computeOffsets(_ref) {
return offsets;
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js
+;// ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js
function popperOffsets(_ref) {
@@ -7437,7 +7083,7 @@ function popperOffsets(_ref) {
fn: popperOffsets,
data: {}
});
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js
+;// ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js
@@ -7456,10 +7102,9 @@ var unsetSides = {
// Zooming can change the DPR, but it seems to report a value that will
// cleanly divide the values into the appropriate subpixels.
-function roundOffsetsByDPR(_ref) {
+function roundOffsetsByDPR(_ref, win) {
var x = _ref.x,
y = _ref.y;
- var win = window;
var dpr = win.devicePixelRatio || 1;
return {
x: round(x * dpr) / dpr || 0,
@@ -7520,7 +7165,7 @@ function mapToStyles(_ref2) {
if (placement === enums_top || (placement === left || placement === right) && variation === end) {
sideY = bottom;
- var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
+ var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
offsetParent[heightProp];
y -= offsetY - popperRect.height;
y *= gpuAcceleration ? 1 : -1;
@@ -7528,7 +7173,7 @@ function mapToStyles(_ref2) {
if (placement === left || (placement === enums_top || placement === bottom) && variation === end) {
sideX = right;
- var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
+ var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
offsetParent[widthProp];
x -= offsetX - popperRect.width;
x *= gpuAcceleration ? 1 : -1;
@@ -7542,7 +7187,7 @@ function mapToStyles(_ref2) {
var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
x: x,
y: y
- }) : {
+ }, getWindow(popper)) : {
x: x,
y: y
};
@@ -7568,9 +7213,6 @@ function computeStyles(_ref5) {
adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
_options$roundOffsets = options.roundOffsets,
roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
-
- if (false) { var transitionProperty; }
-
var commonStyles = {
placement: getBasePlacement(state.placement),
variation: getVariation(state.placement),
@@ -7611,7 +7253,7 @@ function computeStyles(_ref5) {
fn: computeStyles,
data: {}
});
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js
+;// ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js
// This modifier takes the styles prepared by the `computeStyles` modifier
// and applies them to the HTMLElements such as popper and arrow
@@ -7696,7 +7338,7 @@ function applyStyles_effect(_ref2) {
effect: applyStyles_effect,
requires: ['computeStyles']
});
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/offset.js
+;// ./node_modules/@popperjs/core/lib/modifiers/offset.js
// eslint-disable-next-line import/no-unused-modules
@@ -7751,7 +7393,7 @@ function offset(_ref2) {
requires: ['popperOffsets'],
fn: offset
});
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js
+;// ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js
var hash = {
left: 'right',
right: 'left',
@@ -7763,7 +7405,7 @@ function getOppositePlacement(placement) {
return hash[matched];
});
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js
+;// ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js
var getOppositeVariationPlacement_hash = {
start: 'end',
end: 'start'
@@ -7773,35 +7415,26 @@ function getOppositeVariationPlacement(placement) {
return getOppositeVariationPlacement_hash[matched];
});
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
+
-function getViewportRect(element) {
+function getViewportRect(element, strategy) {
var win = getWindow(element);
var html = getDocumentElement(element);
var visualViewport = win.visualViewport;
var width = html.clientWidth;
var height = html.clientHeight;
var x = 0;
- var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
- // can be obscured underneath it.
- // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
- // if it isn't open, so if this isn't available, the popper will be detected
- // to overflow the bottom of the screen too early.
+ var y = 0;
if (visualViewport) {
width = visualViewport.width;
- height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
- // In Chrome, it returns a value very close to 0 (+/-) but contains rounding
- // errors due to floating point numbers, so we need to check precision.
- // Safari returns a number <= 0, usually < -1 when pinch-zoomed
- // Feature detection fails in mobile emulation mode in Chrome.
- // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
- // 0.001
- // Fallback here: "Not Safari" userAgent
-
- if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
+ height = visualViewport.height;
+ var layoutViewport = isLayoutViewport();
+
+ if (layoutViewport || !layoutViewport && strategy === 'fixed') {
x = visualViewport.offsetLeft;
y = visualViewport.offsetTop;
}
@@ -7814,7 +7447,7 @@ function getViewportRect(element) {
y: y
};
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
@@ -7844,7 +7477,7 @@ function getDocumentRect(element) {
y: y
};
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/contains.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/contains.js
function contains(parent, child) {
var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method
@@ -7868,7 +7501,7 @@ function contains(parent, child) {
return false;
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js
+;// ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js
function rectToClientRect(rect) {
return Object.assign({}, rect, {
left: rect.x,
@@ -7877,7 +7510,7 @@ function rectToClientRect(rect) {
bottom: rect.y + rect.height
});
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
+;// ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
@@ -7893,8 +7526,8 @@ function rectToClientRect(rect) {
-function getInnerBoundingClientRect(element) {
- var rect = getBoundingClientRect(element);
+function getInnerBoundingClientRect(element, strategy) {
+ var rect = getBoundingClientRect(element, false, strategy === 'fixed');
rect.top = rect.top + element.clientTop;
rect.left = rect.left + element.clientLeft;
rect.bottom = rect.top + element.clientHeight;
@@ -7906,8 +7539,8 @@ function getInnerBoundingClientRect(element) {
return rect;
}
-function getClientRectFromMixedType(element, clippingParent) {
- return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
+function getClientRectFromMixedType(element, clippingParent, strategy) {
+ return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
} // A "clipping parent" is an overflowable container with the characteristic of
// clipping (or hiding) overflowing elements with a position different from
// `initial`
@@ -7930,25 +7563,25 @@ function getClippingParents(element) {
// clipping parents
-function getClippingRect(element, boundary, rootBoundary) {
+function getClippingRect(element, boundary, rootBoundary, strategy) {
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
var firstClippingParent = clippingParents[0];
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
- var rect = getClientRectFromMixedType(element, clippingParent);
+ var rect = getClientRectFromMixedType(element, clippingParent, strategy);
accRect.top = math_max(rect.top, accRect.top);
accRect.right = math_min(rect.right, accRect.right);
accRect.bottom = math_min(rect.bottom, accRect.bottom);
accRect.left = math_max(rect.left, accRect.left);
return accRect;
- }, getClientRectFromMixedType(element, firstClippingParent));
+ }, getClientRectFromMixedType(element, firstClippingParent, strategy));
clippingRect.width = clippingRect.right - clippingRect.left;
clippingRect.height = clippingRect.bottom - clippingRect.top;
clippingRect.x = clippingRect.left;
clippingRect.y = clippingRect.top;
return clippingRect;
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js
+;// ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js
function getFreshSideObject() {
return {
top: 0,
@@ -7957,19 +7590,19 @@ function getFreshSideObject() {
left: 0
};
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js
+;// ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js
function mergePaddingObject(paddingObject) {
return Object.assign({}, getFreshSideObject(), paddingObject);
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js
+;// ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js
function expandToHashMap(value, keys) {
return keys.reduce(function (hashMap, key) {
hashMap[key] = value;
return hashMap;
}, {});
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/detectOverflow.js
+;// ./node_modules/@popperjs/core/lib/utils/detectOverflow.js
@@ -7988,6 +7621,8 @@ function detectOverflow(state, options) {
var _options = options,
_options$placement = _options.placement,
placement = _options$placement === void 0 ? state.placement : _options$placement,
+ _options$strategy = _options.strategy,
+ strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,
_options$boundary = _options.boundary,
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
_options$rootBoundary = _options.rootBoundary,
@@ -8002,7 +7637,7 @@ function detectOverflow(state, options) {
var altContext = elementContext === popper ? reference : popper;
var popperRect = state.rects.popper;
var element = state.elements[altBoundary ? altContext : elementContext];
- var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
+ var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
var referenceClientRect = getBoundingClientRect(state.elements.reference);
var popperOffsets = computeOffsets({
reference: referenceClientRect,
@@ -8033,7 +7668,7 @@ function detectOverflow(state, options) {
return overflowOffsets;
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
+;// ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
@@ -8061,8 +7696,6 @@ function computeAutoPlacement(state, options) {
if (allowedPlacements.length === 0) {
allowedPlacements = placements;
-
- if (false) {}
} // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
@@ -8079,7 +7712,7 @@ function computeAutoPlacement(state, options) {
return overflows[a] - overflows[b];
});
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/flip.js
+;// ./node_modules/@popperjs/core/lib/modifiers/flip.js
@@ -8227,11 +7860,11 @@ function flip(_ref) {
_skip: false
}
});
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getAltAxis.js
+;// ./node_modules/@popperjs/core/lib/utils/getAltAxis.js
function getAltAxis(axis) {
return axis === 'x' ? 'y' : 'x';
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/within.js
+;// ./node_modules/@popperjs/core/lib/utils/within.js
function within(min, value, max) {
return math_max(min, math_min(value, max));
@@ -8240,7 +7873,7 @@ function withinMaxClamp(min, value, max) {
var v = within(min, value, max);
return v > max ? max : v;
}
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
+;// ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
@@ -8383,8 +8016,7 @@ function preventOverflow(_ref) {
fn: preventOverflow,
requiresIfExists: ['offset']
});
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/arrow.js
-
+;// ./node_modules/@popperjs/core/lib/modifiers/arrow.js
@@ -8458,11 +8090,7 @@ function arrow_effect(_ref2) {
}
}
- if (false) {}
-
if (!contains(state.elements.popper, arrowElement)) {
- if (false) {}
-
return;
}
@@ -8479,7 +8107,7 @@ function arrow_effect(_ref2) {
requires: ['popperOffsets'],
requiresIfExists: ['preventOverflow']
});
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/hide.js
+;// ./node_modules/@popperjs/core/lib/modifiers/hide.js
@@ -8541,7 +8169,7 @@ function hide(_ref) {
requiresIfExists: ['preventOverflow'],
fn: hide
});
-;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/popper.js
+;// ./node_modules/@popperjs/core/lib/popper.js
@@ -8562,7 +8190,7 @@ var popper_createPopper = /*#__PURE__*/popperGenerator({
// eslint-disable-next-line import/no-unused-modules
-;// CONCATENATED MODULE: ./node_modules/tippy.js/dist/tippy.esm.js
+;// ./node_modules/tippy.js/dist/tippy.esm.js
/**!
* tippy.js v6.3.7
* (c) 2017-2021 atomiks
@@ -8853,7 +8481,8 @@ function getFormattedMessage(message) {
var visitedMessages;
-if (false) {}
+if (false) // removed by dead control flow
+{}
function resetVisitedMessages() {
visitedMessages = new Set();
@@ -8940,7 +8569,8 @@ var defaultProps = Object.assign({
var defaultKeys = Object.keys(defaultProps);
var setDefaultProps = function setDefaultProps(partialProps) {
/* istanbul ignore else */
- if (false) {}
+ if (false) // removed by dead control flow
+{}
var keys = Object.keys(partialProps);
keys.forEach(function (key) {
@@ -9214,7 +8844,8 @@ function createTippy(reference, passedProps) {
/* istanbul ignore if */
if (!props.render) {
- if (false) {}
+ if (false) // removed by dead control flow
+{}
return instance;
} // ===========================================================================
@@ -9763,7 +9394,8 @@ function createTippy(reference, passedProps) {
createPopperInstance();
/* istanbul ignore else */
- if (false) {}
+ if (false) // removed by dead control flow
+{}
}
function getNestedPopperTree() {
@@ -9853,7 +9485,8 @@ function createTippy(reference, passedProps) {
function setProps(partialProps) {
/* istanbul ignore else */
- if (false) {}
+ if (false) // removed by dead control flow
+{}
if (instance.state.isDestroyed) {
return;
@@ -9913,7 +9546,8 @@ function createTippy(reference, passedProps) {
function show() {
/* istanbul ignore else */
- if (false) {} // Early bail-out
+ if (false) // removed by dead control flow
+{} // Early bail-out
var isAlreadyVisible = instance.state.isVisible;
@@ -10004,7 +9638,8 @@ function createTippy(reference, passedProps) {
function hide() {
/* istanbul ignore else */
- if (false) {} // Early bail-out
+ if (false) // removed by dead control flow
+{} // Early bail-out
var isAlreadyHidden = !instance.state.isVisible;
@@ -10060,7 +9695,8 @@ function createTippy(reference, passedProps) {
function hideWithInteractivity(event) {
/* istanbul ignore else */
- if (false) {}
+ if (false) // removed by dead control flow
+{}
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
@@ -10069,7 +9705,8 @@ function createTippy(reference, passedProps) {
function unmount() {
/* istanbul ignore else */
- if (false) {}
+ if (false) // removed by dead control flow
+{}
if (instance.state.isVisible) {
instance.hide();
@@ -10100,7 +9737,8 @@ function createTippy(reference, passedProps) {
function destroy() {
/* istanbul ignore else */
- if (false) {}
+ if (false) // removed by dead control flow
+{}
if (instance.state.isDestroyed) {
return;
@@ -10123,7 +9761,8 @@ function tippy(targets, optionalProps) {
var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);
/* istanbul ignore else */
- if (false) {}
+ if (false) // removed by dead control flow
+{}
bindGlobalEventListeners();
var passedProps = Object.assign({}, optionalProps, {
@@ -10132,7 +9771,8 @@ function tippy(targets, optionalProps) {
var elements = getArrayOfElements(targets);
/* istanbul ignore else */
- if (false) { var isMoreThanOneReferenceElement, isSingleContentElement; }
+ if (false) // removed by dead control flow
+{ var isMoreThanOneReferenceElement, isSingleContentElement; }
var instances = elements.reduce(function (acc, reference) {
var instance = reference && createTippy(reference, passedProps);
@@ -10215,7 +9855,8 @@ var createSingleton = function createSingleton(tippyInstances, optionalProps) {
}
/* istanbul ignore else */
- if (false) {}
+ if (false) // removed by dead control flow
+{}
var individualInstances = tippyInstances;
var references = [];
@@ -10420,7 +10061,8 @@ var BUBBLING_EVENTS_MAP = {
function delegate(targets, props) {
/* istanbul ignore else */
- if (false) {}
+ if (false) // removed by dead control flow
+{}
var listeners = [];
var childTippyInstances = [];
@@ -10560,7 +10202,8 @@ var animateFill = {
// @ts-ignore
if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {
- if (false) {}
+ if (false) // removed by dead control flow
+{}
return {};
}
@@ -11019,10 +10662,322 @@ tippy.setDefaultProps({
/***/ }),
-/***/ 5042:
-/***/ (() => {
+/***/ 9606:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.SimpleEventDispatcher = void 0;
+const ste_core_1 = __webpack_require__(4604);
+/**
+ * The dispatcher handles the storage of subsciptions and facilitates
+ * subscription, unsubscription and dispatching of a simple event
+ *
+ * @export
+ * @class SimpleEventDispatcher
+ * @extends {DispatcherBase>}
+ * @implements {ISimpleEvent}
+ * @template TArgs
+ */
+class SimpleEventDispatcher extends ste_core_1.DispatcherBase {
+ /**
+ * Creates an instance of SimpleEventDispatcher.
+ *
+ * @memberOf SimpleEventDispatcher
+ */
+ constructor() {
+ super();
+ }
+ /**
+ * Dispatches the event.
+ *
+ * @param {TArgs} args The arguments object.
+ * @returns {IPropagationStatus} The status of the event.
+ *
+ * @memberOf SimpleEventDispatcher
+ */
+ dispatch(args) {
+ const result = this._dispatch(false, this, arguments);
+ if (result == null) {
+ throw new ste_core_1.DispatchError("Got `null` back from dispatch.");
+ }
+ return result;
+ }
+ /**
+ * Dispatches the event without waiting for the result.
+ *
+ * @param {TArgs} args The arguments object.
+ *
+ * @memberOf SimpleEventDispatcher
+ */
+ dispatchAsync(args) {
+ this._dispatch(true, this, arguments);
+ }
+ /**
+ * Creates an event from the dispatcher. Will return the dispatcher
+ * in a wrapper. This will prevent exposure of any dispatcher methods.
+ *
+ * @returns {ISimpleEvent} The event.
+ *
+ * @memberOf SimpleEventDispatcher
+ */
+ asEvent() {
+ return super.asEvent();
+ }
+}
+exports.SimpleEventDispatcher = SimpleEventDispatcher;
+
+
+/***/ }),
+
+/***/ 9737:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.DispatcherBase = void 0;
+const __1 = __webpack_require__(7852);
+/**
+ * Base class for implementation of the dispatcher. It facilitates the subscribe
+ * and unsubscribe methods based on generic handlers. The TEventType specifies
+ * the type of event that should be exposed. Use the asEvent to expose the
+ * dispatcher as event.
+ *
+ * @export
+ * @abstract
+ * @class DispatcherBase
+ * @implements {ISubscribable}
+ * @template TEventHandler The type of event handler.
+ */
+class DispatcherBase {
+ constructor() {
+ /**
+ * The subscriptions.
+ *
+ * @protected
+ *
+ * @memberOf DispatcherBase
+ */
+ this._subscriptions = new Array();
+ }
+ /**
+ * Returns the number of subscriptions.
+ *
+ * @readonly
+ * @type {number}
+ * @memberOf DispatcherBase
+ */
+ get count() {
+ return this._subscriptions.length;
+ }
+ /**
+ * Triggered when subscriptions are changed (added or removed).
+ *
+ * @readonly
+ * @type {ISubscribable}
+ * @memberOf DispatcherBase
+ */
+ get onSubscriptionChange() {
+ if (this._onSubscriptionChange == null) {
+ this._onSubscriptionChange = new __1.SubscriptionChangeEventDispatcher();
+ }
+ return this._onSubscriptionChange.asEvent();
+ }
+ /**
+ * Subscribe to the event dispatcher.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * @returns A function that unsubscribes the event handler from the event.
+ *
+ * @memberOf DispatcherBase
+ */
+ subscribe(fn) {
+ if (fn) {
+ this._subscriptions.push(this.createSubscription(fn, false));
+ this.triggerSubscriptionChange();
+ }
+ return () => {
+ this.unsubscribe(fn);
+ };
+ }
+ /**
+ * Subscribe to the event dispatcher.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * @returns A function that unsubscribes the event handler from the event.
+ *
+ * @memberOf DispatcherBase
+ */
+ sub(fn) {
+ return this.subscribe(fn);
+ }
+ /**
+ * Subscribe once to the event with the specified name.
+ *
+ * @param {TEventHandler} fn The event handler that is called when the event is dispatched.
+ * @returns A function that unsubscribes the event handler from the event.
+ *
+ * @memberOf DispatcherBase
+ */
+ one(fn) {
+ if (fn) {
+ this._subscriptions.push(this.createSubscription(fn, true));
+ this.triggerSubscriptionChange();
+ }
+ return () => {
+ this.unsubscribe(fn);
+ };
+ }
+ /**
+ * Checks it the event has a subscription for the specified handler.
+ *
+ * @param {TEventHandler} fn The event handler.
+ *
+ * @memberOf DispatcherBase
+ */
+ has(fn) {
+ if (!fn)
+ return false;
+ return this._subscriptions.some((sub) => sub.handler == fn);
+ }
+ /**
+ * Unsubscribes the handler from the dispatcher.
+ *
+ * @param {TEventHandler} fn The event handler.
+ *
+ * @memberOf DispatcherBase
+ */
+ unsubscribe(fn) {
+ if (!fn)
+ return;
+ let changes = false;
+ for (let i = 0; i < this._subscriptions.length; i++) {
+ if (this._subscriptions[i].handler == fn) {
+ this._subscriptions.splice(i, 1);
+ changes = true;
+ break;
+ }
+ }
+ if (changes) {
+ this.triggerSubscriptionChange();
+ }
+ }
+ /**
+ * Unsubscribes the handler from the dispatcher.
+ *
+ * @param {TEventHandler} fn The event handler.
+ *
+ * @memberOf DispatcherBase
+ */
+ unsub(fn) {
+ this.unsubscribe(fn);
+ }
+ /**
+ * Generic dispatch will dispatch the handlers with the given arguments.
+ *
+ * @protected
+ * @param {boolean} executeAsync `True` if the even should be executed async.
+ * @param {*} scope The scope of the event. The scope becomes the `this` for handler.
+ * @param {IArguments} args The arguments for the event.
+ * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.
+ *
+ * @memberOf DispatcherBase
+ */
+ _dispatch(executeAsync, scope, args) {
+ //execute on a copy because of bug #9
+ for (let sub of [...this._subscriptions]) {
+ let ev = new __1.EventManagement(() => this.unsub(sub.handler));
+ let nargs = Array.prototype.slice.call(args);
+ nargs.push(ev);
+ let s = sub;
+ s.execute(executeAsync, scope, nargs);
+ //cleanup subs that are no longer needed
+ this.cleanup(sub);
+ if (!executeAsync && ev.propagationStopped) {
+ return { propagationStopped: true };
+ }
+ }
+ if (executeAsync) {
+ return null;
+ }
+ return { propagationStopped: false };
+ }
+ /**
+ * Creates a subscription.
+ *
+ * @protected
+ * @param {TEventHandler} handler The handler.
+ * @param {boolean} isOnce True if the handler should run only one.
+ * @returns {ISubscription} The subscription.
+ *
+ * @memberOf DispatcherBase
+ */
+ createSubscription(handler, isOnce) {
+ return new __1.Subscription(handler, isOnce);
+ }
+ /**
+ * Cleans up subs that ran and should run only once.
+ *
+ * @protected
+ * @param {ISubscription} sub The subscription.
+ *
+ * @memberOf DispatcherBase
+ */
+ cleanup(sub) {
+ let changes = false;
+ if (sub.isOnce && sub.isExecuted) {
+ let i = this._subscriptions.indexOf(sub);
+ if (i > -1) {
+ this._subscriptions.splice(i, 1);
+ changes = true;
+ }
+ }
+ if (changes) {
+ this.triggerSubscriptionChange();
+ }
+ }
+ /**
+ * Creates an event from the dispatcher. Will return the dispatcher
+ * in a wrapper. This will prevent exposure of any dispatcher methods.
+ *
+ * @returns {ISubscribable}
+ *
+ * @memberOf DispatcherBase
+ */
+ asEvent() {
+ if (this._wrap == null) {
+ this._wrap = new __1.DispatcherWrapper(this);
+ }
+ return this._wrap;
+ }
+ /**
+ * Clears the subscriptions.
+ *
+ * @memberOf DispatcherBase
+ */
+ clear() {
+ if (this._subscriptions.length != 0) {
+ this._subscriptions.splice(0, this._subscriptions.length);
+ this.triggerSubscriptionChange();
+ }
+ }
+ /**
+ * Triggers the subscription change event.
+ *
+ * @private
+ *
+ * @memberOf DispatcherBase
+ */
+ triggerSubscriptionChange() {
+ if (this._onSubscriptionChange != null) {
+ this._onSubscriptionChange.dispatch(this.count);
+ }
+ }
+}
+exports.DispatcherBase = DispatcherBase;
-/* (ignored) */
/***/ })
@@ -11108,11 +11063,11 @@ tippy.setDefaultProps({
/******/
/************************************************************************/
var __webpack_exports__ = {};
-// This entry need to be wrapped in an IIFE because it need to be in strict mode.
+// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
(() => {
"use strict";
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/deprecated.js
+;// ./node_modules/@4site/engrid-scripts/dist/deprecated.js
// A way to gracefully handle deprecation.
// Find and replace HTML Elements, Classes, and more after the DOM is loaded but before any other Javascript fires.
@@ -11154,7 +11109,7 @@ class Deprecated {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/interfaces/options.js
+;// ./node_modules/@4site/engrid-scripts/dist/interfaces/options.js
const OptionsDefaults = {
backgroundImage: "",
MediaAttribution: true,
@@ -11178,6 +11133,7 @@ const OptionsDefaults = {
NeverBounceDateField: null,
NeverBounceStatusField: null,
NeverBounceDateFormat: "MM/DD/YYYY",
+ NeverBounceTimeout: 10000,
FreshAddress: false,
ProgressBar: false,
AutoYear: false,
@@ -11192,11 +11148,13 @@ const OptionsDefaults = {
ENValidators: false,
MobileCTA: false,
CustomCurrency: false,
+ CustomPremium: false,
VGS: false,
PostalCodeValidator: false,
CountryRedirect: false,
WelcomeBack: false,
OptInLadder: false,
+ PreferredPaymentMethod: false,
PageLayouts: [
"leftleft1col",
"centerleft1col",
@@ -11208,7 +11166,7 @@ const OptionsDefaults = {
],
};
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/interfaces/upsell-options.js
+;// ./node_modules/@4site/engrid-scripts/dist/interfaces/upsell-options.js
const UpsellOptionsDefaults = {
image: "https://picsum.photos/480/650",
imagePosition: "left",
@@ -11244,7 +11202,7 @@ const UpsellOptionsDefaults = {
upsellCheckbox: false,
};
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/interfaces/translate-options.js
+;// ./node_modules/@4site/engrid-scripts/dist/interfaces/translate-options.js
const ptbrTranslation = [
{ field: "supporter.firstName", translation: "Nome" },
{ field: "supporter.lastName", translation: "Sobrenome" },
@@ -11288,7 +11246,7 @@ const TranslateOptionsDefaults = {
NLD: nlTranslation,
};
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/interfaces/exit-intent-options.js
+;// ./node_modules/@4site/engrid-scripts/dist/interfaces/exit-intent-options.js
const ExitIntentOptionsDefaults = {
enabled: false,
title: "We are sad that you are leaving",
@@ -11303,7 +11261,7 @@ const ExitIntentOptionsDefaults = {
},
};
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/interfaces/frequency-upsell-options.js
+;// ./node_modules/@4site/engrid-scripts/dist/interfaces/frequency-upsell-options.js
const FrequencyUpsellOptionsDefaults = {
title: "Before we process your donation...",
paragraph: "Would you like to make it an annual gift?",
@@ -11318,7 +11276,7 @@ const FrequencyUpsellOptionsDefaults = {
onDecline: () => { },
};
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/loader.js
+;// ./node_modules/@4site/engrid-scripts/dist/loader.js
// Ref: https://app.getguru.com/card/iMgx968T/ENgrid-Loader
class Loader {
@@ -11496,16 +11454,16 @@ class Loader {
}
// EXTERNAL MODULE: ./node_modules/@4site/engrid-scripts/node_modules/strongly-typed-events/dist/index.js
-var dist = __webpack_require__(291);
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/events/en-form.js
+var dist = __webpack_require__(3199);
+;// ./node_modules/@4site/engrid-scripts/dist/events/en-form.js
class en_form_EnForm {
constructor() {
this.logger = new logger_EngridLogger("EnForm");
- this._onSubmit = new dist/* SignalDispatcher */.nz();
- this._onValidate = new dist/* SignalDispatcher */.nz();
- this._onError = new dist/* SignalDispatcher */.nz();
+ this._onSubmit = new dist/* SignalDispatcher */.UD();
+ this._onValidate = new dist/* SignalDispatcher */.UD();
+ this._onError = new dist/* SignalDispatcher */.UD();
this.submit = true;
this.submitPromise = false;
this.validate = true;
@@ -11551,12 +11509,12 @@ class en_form_EnForm {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/events/donation-amount.js
+;// ./node_modules/@4site/engrid-scripts/dist/events/donation-amount.js
class DonationAmount {
constructor(radios = "transaction.donationAmt", other = "transaction.donationAmt.other") {
- this._onAmountChange = new dist/* SimpleEventDispatcher */.FK();
+ this._onAmountChange = new dist/* SimpleEventDispatcher */.IL();
this._amount = 0;
this._radios = "";
this._other = "";
@@ -11686,7 +11644,7 @@ class DonationAmount {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/engrid.js
+;// ./node_modules/@4site/engrid-scripts/dist/engrid.js
class engrid_ENGrid {
constructor() {
if (!engrid_ENGrid.enForm) {
@@ -11886,35 +11844,45 @@ class engrid_ENGrid {
case "donation":
case "premiumgift":
return "DONATION";
- break;
+ // removed by dead control flow
+
case "e-card":
return "ECARD";
- break;
+ // removed by dead control flow
+
case "otherdatacapture":
case "survey":
return "SURVEY";
- break;
+ // removed by dead control flow
+
case "emailtotarget":
return "EMAILTOTARGET";
- break;
+ // removed by dead control flow
+
case "advocacypetition":
return "ADVOCACY";
- break;
+ // removed by dead control flow
+
case "emailsubscribeform":
return "SUBSCRIBEFORM";
- break;
+ // removed by dead control flow
+
case "event":
return "EVENT";
- break;
+ // removed by dead control flow
+
case "supporterhub":
return "SUPPORTERHUB";
- break;
+ // removed by dead control flow
+
case "unsubscribe":
return "UNSUBSCRIBE";
- break;
+ // removed by dead control flow
+
case "tweetpage":
return "TWEETPAGE";
- break;
+ // removed by dead control flow
+
default:
return "UNKNOWN";
}
@@ -12245,12 +12213,12 @@ class engrid_ENGrid {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/events/donation-frequency.js
+;// ./node_modules/@4site/engrid-scripts/dist/events/donation-frequency.js
class DonationFrequency {
constructor() {
- this._onFrequencyChange = new dist/* SimpleEventDispatcher */.FK();
+ this._onFrequencyChange = new dist/* SimpleEventDispatcher */.IL();
this._frequency = "onetime";
this._recurring = "n";
this._dispatch = true;
@@ -12362,13 +12330,13 @@ class DonationFrequency {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/events/processing-fees.js
+;// ./node_modules/@4site/engrid-scripts/dist/events/processing-fees.js
class ProcessingFees {
constructor() {
- this._onFeeChange = new dist/* SimpleEventDispatcher */.FK();
+ this._onFeeChange = new dist/* SimpleEventDispatcher */.IL();
this._amount = DonationAmount.getInstance();
this._form = en_form_EnForm.getInstance();
this._fee = 0;
@@ -12456,7 +12424,7 @@ class ProcessingFees {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/events/remember-me-events.js
+;// ./node_modules/@4site/engrid-scripts/dist/events/remember-me-events.js
/**
* This class is responsible for managing events related to the "Remember Me" functionality.
* It uses the Singleton design pattern to ensure only one instance of this class exists.
@@ -12467,8 +12435,8 @@ class ProcessingFees {
class RememberMeEvents {
constructor() {
this.logger = new logger_EngridLogger("RememberMeEvents");
- this._onLoad = new dist/* SimpleEventDispatcher */.FK();
- this._onClear = new dist/* SignalDispatcher */.nz();
+ this._onLoad = new dist/* SimpleEventDispatcher */.IL();
+ this._onClear = new dist/* SignalDispatcher */.UD();
this.hasData = false;
}
static getInstance() {
@@ -12494,12 +12462,12 @@ class RememberMeEvents {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/events/country.js
+;// ./node_modules/@4site/engrid-scripts/dist/events/country.js
class Country {
constructor() {
- this._onCountryChange = new dist/* SimpleEventDispatcher */.FK();
+ this._onCountryChange = new dist/* SimpleEventDispatcher */.IL();
this._country = "";
this._field = null;
// Run only if it is a Page with a Country field
@@ -12538,7 +12506,7 @@ class Country {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/events/index.js
+;// ./node_modules/@4site/engrid-scripts/dist/events/index.js
@@ -12546,7 +12514,7 @@ class Country {
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/app.js
+;// ./node_modules/@4site/engrid-scripts/dist/app.js
class App extends engrid_ENGrid {
@@ -12623,6 +12591,7 @@ class App extends engrid_ENGrid {
new ShowHideRadioCheckboxes("transaction.giveBySelect", "giveBySelect-");
new ShowHideRadioCheckboxes("transaction.inmem", "inmem-");
new ShowHideRadioCheckboxes("transaction.recurrpay", "recurrpay-");
+ new ShowHideRadioCheckboxes("transaction.shipenabled", "shipenabled-");
// Automatically show/hide all radios
let radioFields = [];
const allRadios = document.querySelectorAll("input[type=radio]");
@@ -12795,11 +12764,14 @@ class App extends engrid_ENGrid {
new CountryDisable();
// Premium Gift Features
new PremiumGift();
+ // Custom Premium filtering (frequency/amount-based visibility)
+ new CustomPremium();
// Supporter Hub Features
new SupporterHub();
// Digital Wallets Features
if (engrid_ENGrid.getPageType() === "DONATION") {
new DigitalWallets();
+ new PreferredPaymentMethod();
}
// Mobile CTA
new MobileCTA();
@@ -12893,7 +12865,7 @@ class App extends engrid_ENGrid {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/amount-label.js
+;// ./node_modules/@4site/engrid-scripts/dist/amount-label.js
// This script checks if the donations amounts are numbers and if they are, appends the correct currency symbol
class AmountLabel {
@@ -12925,7 +12897,7 @@ class AmountLabel {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/apple-pay.js
+;// ./node_modules/@4site/engrid-scripts/dist/apple-pay.js
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
@@ -13096,7 +13068,7 @@ class ApplePay {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/a11y.js
+;// ./node_modules/@4site/engrid-scripts/dist/a11y.js
// a11y means accessibility
// This Component is supposed to be used as a helper for Aria Attributes & Other Accessibility Features
class A11y {
@@ -13220,7 +13192,7 @@ class A11y {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/capitalize-fields.js
+;// ./node_modules/@4site/engrid-scripts/dist/capitalize-fields.js
// CapitalizeFields is a class that capitalizes the first letter of the fields passed to it.
// It subscribes to the onSubmit event of the EnForm class and capitalizes the fields on submit.
@@ -13244,7 +13216,7 @@ class CapitalizeFields {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/auto-year.js
+;// ./node_modules/@4site/engrid-scripts/dist/auto-year.js
// This class changes the Credit Card Expiration Year Field Options to
// include the current year and the next 19 years.
class AutoYear {
@@ -13281,7 +13253,7 @@ class AutoYear {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/autocomplete.js
+;// ./node_modules/@4site/engrid-scripts/dist/autocomplete.js
// This class adds the autocomplete attribute to
// the most common input elements
@@ -13321,7 +13293,7 @@ class Autocomplete {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/ecard.js
+;// ./node_modules/@4site/engrid-scripts/dist/ecard.js
class Ecard {
constructor() {
@@ -13384,7 +13356,7 @@ class Ecard {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/click-to-expand.js
+;// ./node_modules/@4site/engrid-scripts/dist/click-to-expand.js
// This class is used to expand content when a user clicks on a div with the class "click-to-expand".
// The content is shortened by default and will expand when clicked.
@@ -13425,7 +13397,7 @@ class ClickToExpand {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/advocacy.js
+;// ./node_modules/@4site/engrid-scripts/dist/advocacy.js
// Component to handle advocacy features
// 1 - Adds EN Polyfill to support "label" clicking on Advocacy Recipient "labels"
@@ -13461,7 +13433,7 @@ class Advocacy {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/data-attributes.js
+;// ./node_modules/@4site/engrid-scripts/dist/data-attributes.js
// Component that adds data attributes to the Body
class DataAttributes {
@@ -13472,6 +13444,13 @@ class DataAttributes {
this.setDataAttributes();
}
setDataAttributes() {
+ // Apple Pay Availability
+ if (window.hasOwnProperty("ApplePaySession")) {
+ engrid_ENGrid.setBodyData("apple-pay-available", "true");
+ }
+ else {
+ engrid_ENGrid.setBodyData("apple-pay-available", "false");
+ }
// Add the Page Type as a Data Attribute on the Body Tag
if (engrid_ENGrid.checkNested(window, "pageJson", "pageType")) {
engrid_ENGrid.setBodyData("page-type", window.pageJson.pageType);
@@ -13649,7 +13628,7 @@ class DataAttributes {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/iframe.js
+;// ./node_modules/@4site/engrid-scripts/dist/iframe.js
class iFrame {
@@ -13928,7 +13907,7 @@ class iFrame {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/input-has-value-and-focus.js
+;// ./node_modules/@4site/engrid-scripts/dist/input-has-value-and-focus.js
// Component that adds has-value and has-focus classes to form inputs
class InputHasValueAndFocus {
@@ -13980,7 +13959,7 @@ class InputHasValueAndFocus {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/input-placeholders.js
+;// ./node_modules/@4site/engrid-scripts/dist/input-placeholders.js
// Component that adds input placeholders
// You can override the default placeholders by adding a Placeholders option to the EngridOptions on the client theme.
// You can also add an EngridPageOptions override to the page, if you want to override the placeholders on a specific page. Example:
@@ -14066,7 +14045,7 @@ class InputPlaceholders {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/media-attribution.js
+;// ./node_modules/@4site/engrid-scripts/dist/media-attribution.js
/*
Looks for specially crafted links and will transform its markup to display an attribution overlay on top of the image
Depends on "_engrid-media-attribution.scss" for styling
@@ -14084,7 +14063,7 @@ class InputPlaceholders {
Jane Doe 1
*/
-const media_attribution_tippy = (__webpack_require__(3861)/* ["default"] */ .ZP);
+const media_attribution_tippy = (__webpack_require__(9244)/* ["default"] */ .Ay);
class MediaAttribution {
constructor() {
// Find all images with attribution but not with the "data-attribution-hide-overlay" attribute
@@ -14134,7 +14113,7 @@ class MediaAttribution {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/live-variables.js
+;// ./node_modules/@4site/engrid-scripts/dist/live-variables.js
class LiveVariables {
@@ -14283,7 +14262,7 @@ class LiveVariables {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/upsell-lightbox.js
+;// ./node_modules/@4site/engrid-scripts/dist/upsell-lightbox.js
class UpsellLightbox {
@@ -14648,7 +14627,7 @@ class UpsellLightbox {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/upsell-checkbox.js
+;// ./node_modules/@4site/engrid-scripts/dist/upsell-checkbox.js
// This component will add a checkbox to the donation form that will allow the user to upgrade their donation to a monthly donation.
@@ -14895,7 +14874,7 @@ class UpsellCheckbox {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/show-hide-radio-checkboxes.js
+;// ./node_modules/@4site/engrid-scripts/dist/show-hide-radio-checkboxes.js
class ShowHideRadioCheckboxes {
// Create default data attributes on all fields
@@ -15068,7 +15047,7 @@ class ShowHideRadioCheckboxes {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/cookie.js
+;// ./node_modules/@4site/engrid-scripts/dist/cookie.js
/**
Example:
import * as cookie from "./cookie";
@@ -15146,7 +15125,7 @@ function remove(name, attributes) {
set(name, "", Object.assign(Object.assign({}, attributes), { expires: -1 }));
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/translate-fields.js
+;// ./node_modules/@4site/engrid-scripts/dist/translate-fields.js
// Component to translate fields based on the country selected
// It will also adapt the state field to the country selected
@@ -15696,7 +15675,7 @@ class TranslateFields {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/auto-country-select.js
+;// ./node_modules/@4site/engrid-scripts/dist/auto-country-select.js
// This class works when the user has added ".simple_country_select" as a class in page builder for the Country select
@@ -15763,7 +15742,7 @@ class AutoCountrySelect {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/skip-link.js
+;// ./node_modules/@4site/engrid-scripts/dist/skip-link.js
// Javascript that adds an accessible "Skip Link" button after the opening that jumps to
// the first or
field in a "body-" section, or the first
if none are found
// in those sections
@@ -15801,7 +15780,7 @@ class SkipToMainContentLink {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/src-defer.js
+;// ./node_modules/@4site/engrid-scripts/dist/src-defer.js
// Build Notes: Add the vanilla Javascript version inline inside the page template right before
// In the event the vanilla javascript is not inlined we should still process any assets with a data-src still defined on it. Plus we only process background video via this JS file as to not block the page with a large video file downloading.
// // 4Site's simplified image lazy loader
@@ -15873,7 +15852,7 @@ class SrcDefer {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/set-recurr-freq.js
+;// ./node_modules/@4site/engrid-scripts/dist/set-recurr-freq.js
class setRecurrFreq {
@@ -15945,7 +15924,7 @@ class setRecurrFreq {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/page-background.js
+;// ./node_modules/@4site/engrid-scripts/dist/page-background.js
class PageBackground {
constructor() {
@@ -16189,7 +16168,7 @@ class PageBackground {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/neverbounce.js
+;// ./node_modules/@4site/engrid-scripts/dist/neverbounce.js
class NeverBounce {
@@ -16209,6 +16188,8 @@ class NeverBounce {
this.bypassEmails = [
"noaddress.ea",
];
+ this.neverBounceTimeout = engrid_ENGrid.getOption("NeverBounceTimeout") || 10000;
+ this.neverBounceTimeoutFunc = null;
const searchParams = new URLSearchParams(window.location.search);
if (searchParams.has("bypassemailvalidation")) {
this.logger.log("Bypass Email Validation Enabled - not running NeverBounce");
@@ -16224,6 +16205,8 @@ class NeverBounce {
softRejectMessage: "Invalid email",
acceptedMessage: "Email validated!",
feedback: false,
+ // Set NB timeout 1 second than our timeout. Ensures NB response will always be before our timeout if there is not a server error.
+ timeout: Math.floor((this.neverBounceTimeout - 1000) / 1000),
};
engrid_ENGrid.loadJS("https://cdn.neverbounce.com/widget/dist/NeverBounce.js");
if (this.emailField) {
@@ -16286,9 +16269,27 @@ class NeverBounce {
const field = document.querySelector('[data-nb-id="' + event.detail.id + '"]');
field.addEventListener("nb:loading", function (e) {
engrid_ENGrid.disableSubmit("Validating Your Email");
+ NBClass.setEmailStatus("loading");
+ NBClass.clearTimeout();
+ NBClass.neverBounceTimeoutFunc = setTimeout(() => {
+ NBClass.setEmailStatus("unknown");
+ if (NBClass.nbDate) {
+ NBClass.nbDate.value = engrid_ENGrid.formatDate(new Date(), NBClass.dateFormat);
+ }
+ if (NBClass.nbStatus) {
+ NBClass.nbStatus.value = "unknown";
+ }
+ engrid_ENGrid.enableSubmit();
+ window._nb.fields.unregisterListener(NBClass.emailField);
+ NBClass.nbLoaded = false;
+ NBClass.logger.log("NeverBounce Timeout Reached. Bypassing validation, setting unknown status and removing NB.");
+ }, NBClass.neverBounceTimeout);
});
// Never Bounce: Do work when input changes or when API responds with an error
field.addEventListener("nb:clear", function (e) {
+ if (!NBClass.nbLoaded)
+ return;
+ NBClass.clearTimeout();
NBClass.setEmailStatus("clear");
engrid_ENGrid.enableSubmit();
if (NBClass.nbDate)
@@ -16298,6 +16299,9 @@ class NeverBounce {
});
// Never Bounce: Do work when results have an input that does not look like an email (i.e. missing @ or no .com/.net/etc...)
field.addEventListener("nb:soft-result", function (e) {
+ if (!NBClass.nbLoaded)
+ return;
+ NBClass.clearTimeout();
NBClass.setEmailStatus("soft-result");
if (NBClass.nbDate)
NBClass.nbDate.value = "";
@@ -16307,6 +16311,9 @@ class NeverBounce {
});
// Never Bounce: When results have been received
field.addEventListener("nb:result", function (e) {
+ if (!NBClass.nbLoaded)
+ return;
+ NBClass.clearTimeout();
if (e.detail.result.is(window._nb.settings.getAcceptedStatusCodes())) {
NBClass.setEmailStatus("valid");
if (NBClass.nbDate)
@@ -16455,9 +16462,19 @@ class NeverBounce {
this.form.validate = false;
}
}
+ /**
+ * Clears the backup timeout function if it exists.
+ * @private
+ */
+ clearTimeout() {
+ if (this.neverBounceTimeoutFunc) {
+ clearTimeout(this.neverBounceTimeoutFunc);
+ this.neverBounceTimeoutFunc = null;
+ }
+ }
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/freshaddress.js
+;// ./node_modules/@4site/engrid-scripts/dist/freshaddress.js
// According to the FreshAddress documentation, you need to add the following code to your page:
// jQuery library.
//
@@ -16663,7 +16680,7 @@ class FreshAddress {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/progress-bar.js
+;// ./node_modules/@4site/engrid-scripts/dist/progress-bar.js
class ProgressBar {
constructor() {
@@ -16705,10 +16722,10 @@ class ProgressBar {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/remember-me.js
+;// ./node_modules/@4site/engrid-scripts/dist/remember-me.js
-const remember_me_tippy = (__webpack_require__(3861)/* ["default"] */ .ZP);
+const remember_me_tippy = (__webpack_require__(9244)/* ["default"] */ .Ay);
class RememberMe {
constructor(options) {
this._form = en_form_EnForm.getInstance();
@@ -16991,6 +17008,7 @@ class RememberMe {
}
}
setFieldValue(field, value, overwrite = false) {
+ value = decodeURIComponent(value || "");
if (field && value !== undefined) {
if ((field.value && overwrite) || !field.value) {
field.value = value;
@@ -17066,7 +17084,7 @@ class RememberMe {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/show-if-amount.js
+;// ./node_modules/@4site/engrid-scripts/dist/show-if-amount.js
class ShowIfAmount {
@@ -17185,7 +17203,7 @@ class ShowIfAmount {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/other-amount.js
+;// ./node_modules/@4site/engrid-scripts/dist/other-amount.js
// This class automatically select other radio input when an amount is entered into it.
class OtherAmount {
@@ -17257,7 +17275,7 @@ class OtherAmount {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/logger.js
+;// ./node_modules/@4site/engrid-scripts/dist/logger.js
/**
* A better logger. It only works if debug is enabled.
@@ -17343,7 +17361,7 @@ class logger_EngridLogger {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/min-max-amount.js
+;// ./node_modules/@4site/engrid-scripts/dist/min-max-amount.js
// This script adds an erros message to the page if the amount is greater than the max amount or less than the min amount.
class MinMaxAmount {
@@ -17471,11 +17489,11 @@ class MinMaxAmount {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/ticker.js
+;// ./node_modules/@4site/engrid-scripts/dist/ticker.js
class Ticker {
constructor() {
- this.shuffleSeed = __webpack_require__(7650);
+ this.shuffleSeed = __webpack_require__(3184);
this.items = [];
this.tickerElement = document.querySelector(".engrid-ticker");
this.logger = new logger_EngridLogger("Ticker", "black", "beige", "🔁");
@@ -17539,7 +17557,7 @@ class Ticker {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/data-layer.js
+;// ./node_modules/@4site/engrid-scripts/dist/data-layer.js
// DataLayer: singleton helper for pushing structured analytics events/vars to window.dataLayer.
// On load it emits one aggregated event `pageJsonVariablesReady` with:
// EN_PAGEJSON_* (normalized pageJson), EN_URLPARAM_*, EN_RECURRING_FREQUENCIES (donation pages),
@@ -17549,12 +17567,22 @@ class Ticker {
// are replayed after a successful gift process load.
// Sensitive payment/bank fields are excluded; selected PII fields are Base64 “hashed” (btoa — not cryptographic).
// Replace with a real hash (e.g., SHA‑256) if required.
+var data_layer_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
class DataLayer {
constructor() {
this.logger = new logger_EngridLogger("DataLayer", "#f1e5bc", "#009cdc", "📊");
this.dataLayer = window.dataLayer || [];
this._form = en_form_EnForm.getInstance();
+ this.encoder = new TextEncoder();
this.endOfGiftProcessStorageKey = "ENGRID_END_OF_GIFT_PROCESS_EVENTS";
this.excludedFields = [
// Credit Card
@@ -17587,6 +17615,16 @@ class DataLayer {
"supporter.billingAddress2",
"supporter.billingAddress3",
];
+ this.retainedEmailField = "supporter.emailAddress";
+ this.retainedAddressFields = [
+ "supporter.address1",
+ "supporter.address2",
+ "supporter.address3",
+ ];
+ this.retainedPhoneFields = [
+ "supporter.phoneNumber2",
+ "supporter.phoneNumber",
+ ];
if (engrid_ENGrid.getOption("RememberMe")) {
RememberMeEvents.getInstance().onLoad.subscribe((hasData) => {
this.logger.log("Remember me - onLoad", hasData);
@@ -17644,6 +17682,7 @@ class DataLayer {
dataLayerData[`EN_URLPARAM_${key.toUpperCase()}`] =
this.transformJSON(value);
});
+ this.addRetainedHashesToDataLayer(dataLayerData);
if (engrid_ENGrid.getPageType() === "DONATION") {
const recurrFreqEls = document.querySelectorAll('[name="transaction.recurrfreq"]');
const recurrValues = [...recurrFreqEls].map((el) => el.value);
@@ -17656,6 +17695,18 @@ class DataLayer {
}
this.attachEventListeners();
}
+ addRetainedHashesToDataLayer(dataLayerData) {
+ if (typeof window === "undefined" || !window.localStorage) {
+ return;
+ }
+ ["EMAIL", "ADDRESS", "PHONE"].forEach((suffix) => {
+ const storageKey = `EN_HASH_${suffix}`;
+ const storedValue = window.localStorage.getItem(storageKey);
+ if (storedValue) {
+ dataLayerData[storageKey] = storedValue;
+ }
+ });
+ }
onSubmit() {
const optIn = document.querySelector(".en__field__item:not(.en__field--question) input[name^='supporter.questions'][type='checkbox']:checked");
if (optIn) {
@@ -17691,46 +17742,115 @@ class DataLayer {
});
});
}
- handleFieldValueChange(el) {
- var _a, _b, _c;
- if (el.value === "" || this.excludedFields.includes(el.name))
- return;
- const value = this.hashedFields.includes(el.name)
- ? this.hash(el.value)
- : el.value;
- if (["checkbox", "radio"].includes(el.type)) {
- if (el.checked) {
- if (el.name === "en__pg") {
- //Premium gift handling
- this.dataLayer.push({
- event: "EN_FORM_VALUE_UPDATED",
- enFieldName: el.name,
- enFieldLabel: "Premium Gift",
- enFieldValue: (_b = (_a = el
- .closest(".en__pg__body")) === null || _a === void 0 ? void 0 : _a.querySelector(".en__pg__name")) === null || _b === void 0 ? void 0 : _b.textContent,
- enProductId: (_c = document.querySelector('[name="transaction.selprodvariantid"]')) === null || _c === void 0 ? void 0 : _c.value,
- });
- }
- else {
- this.dataLayer.push({
- event: "EN_FORM_VALUE_UPDATED",
- enFieldName: el.name,
- enFieldLabel: this.getFieldLabel(el),
- enFieldValue: value,
- });
+ handleFieldValueChange(el) {
+ var _a, _b, _c;
+ return data_layer_awaiter(this, void 0, void 0, function* () {
+ if (el.value === "" || this.excludedFields.includes(el.name))
+ return;
+ const value = this.hashedFields.includes(el.name)
+ ? yield this.hash(el.value)
+ : el.value;
+ if (["checkbox", "radio"].includes(el.type)) {
+ if (el.checked) {
+ if (el.name === "en__pg") {
+ //Premium gift handling
+ this.dataLayer.push({
+ event: "EN_FORM_VALUE_UPDATED",
+ enFieldName: el.name,
+ enFieldLabel: "Premium Gift",
+ enFieldValue: (_b = (_a = el
+ .closest(".en__pg__body")) === null || _a === void 0 ? void 0 : _a.querySelector(".en__pg__name")) === null || _b === void 0 ? void 0 : _b.textContent,
+ enProductId: (_c = document.querySelector('[name="transaction.selprodvariantid"]')) === null || _c === void 0 ? void 0 : _c.value,
+ });
+ }
+ else {
+ this.dataLayer.push({
+ event: "EN_FORM_VALUE_UPDATED",
+ enFieldName: el.name,
+ enFieldLabel: this.getFieldLabel(el),
+ enFieldValue: value,
+ });
+ }
+ }
+ return;
+ }
+ if (el.name === this.retainedEmailField) {
+ const retainedEmailValue = this.geRetainedFieldsValue("email");
+ const sha256value = yield this.hash(retainedEmailValue);
+ localStorage.setItem(`EN_HASH_EMAIL`, sha256value);
+ this.dataLayer.push({
+ event: "EN_HASH_VALUE_UPDATED",
+ enFieldName: "email",
+ enFieldLabel: this.getFieldLabel(el),
+ enFieldValue: sha256value,
+ });
+ return;
+ }
+ else if (this.retainedAddressFields.includes(el.name)) {
+ const retainedAddressValue = this.geRetainedFieldsValue("address");
+ const sha256value = yield this.hash(retainedAddressValue);
+ localStorage.setItem(`EN_HASH_ADDRESS`, sha256value);
+ this.dataLayer.push({
+ event: "EN_HASH_VALUE_UPDATED",
+ enFieldName: "address",
+ enFieldLabel: "Supporter Address",
+ enFieldValue: sha256value,
+ });
+ }
+ else if (this.retainedPhoneFields.includes(el.name)) {
+ const retainedPhoneValue = this.geRetainedFieldsValue("phone");
+ const sha256value = yield this.hash(retainedPhoneValue);
+ localStorage.setItem(`EN_HASH_PHONE`, sha256value);
+ this.dataLayer.push({
+ event: "EN_HASH_VALUE_UPDATED",
+ enFieldName: "phone",
+ enFieldLabel: "Supporter Phone",
+ enFieldValue: sha256value,
+ });
+ }
+ this.dataLayer.push({
+ event: "EN_FORM_VALUE_UPDATED",
+ enFieldName: el.name,
+ enFieldLabel: this.getFieldLabel(el),
+ enFieldValue: value,
+ });
+ });
+ }
+ geRetainedFieldsValue(kind) {
+ switch (kind) {
+ case "email":
+ return engrid_ENGrid.getFieldValue(this.retainedEmailField);
+ case "address":
+ return this.retainedAddressFields
+ .map((field) => engrid_ENGrid.getFieldValue(field))
+ .filter((value) => value !== "")
+ .join("")
+ .toLocaleLowerCase()
+ .replace(/\s+/g, "");
+ case "phone":
+ // Only return the first phone number found - prioritize phoneNumber2 over phoneNumber and remove non-numeric characters
+ for (const field of this.retainedPhoneFields) {
+ const value = engrid_ENGrid.getFieldValue(field);
+ if (value !== "") {
+ return value.replace(/\D/g, "");
+ }
}
- }
- return;
+ return "";
+ default:
+ return "";
}
- this.dataLayer.push({
- event: "EN_FORM_VALUE_UPDATED",
- enFieldName: el.name,
- enFieldLabel: this.getFieldLabel(el),
- enFieldValue: value,
- });
}
hash(value) {
- return btoa(value);
+ return data_layer_awaiter(this, void 0, void 0, function* () {
+ const data = this.encoder.encode(value);
+ const hashBuffer = yield crypto.subtle.digest("SHA-256", data);
+ return Array.from(new Uint8Array(hashBuffer))
+ .map((byte) => {
+ const hex = byte.toString(16);
+ return hex.length === 1 ? "0" + hex : hex;
+ })
+ .join("");
+ });
}
getFieldLabel(el) {
var _a, _b;
@@ -17761,7 +17881,7 @@ class DataLayer {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/data-replace.js
+;// ./node_modules/@4site/engrid-scripts/dist/data-replace.js
// This script is used to replace merge tags in the EN Blocks of the page.
// It searches for HTML elements containing the data to be replaced and replaces it.
// The data to be replaced is passed as URL parameters, example: ?engrid_data[key]=value.
@@ -17839,7 +17959,7 @@ class DataReplace {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/data-hide.js
+;// ./node_modules/@4site/engrid-scripts/dist/data-hide.js
// Hides elements based on URL arguments.
//
// The DataHide class is used to hide elements based on URL arguments.
@@ -17907,7 +18027,7 @@ class DataHide {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/add-name-to-message.js
+;// ./node_modules/@4site/engrid-scripts/dist/add-name-to-message.js
/*
Adds first and last name when First Name and Last Name fields lose focus if name shortcodes aren't present
*/
@@ -17958,7 +18078,7 @@ class AddNameToMessage {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/expand-region-name.js
+;// ./node_modules/@4site/engrid-scripts/dist/expand-region-name.js
// Populates hidden supporter field "Region Long Format" with expanded name (e.g FL becomes Florida)
@@ -18004,7 +18124,7 @@ class ExpandRegionName {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/url-to-form.js
+;// ./node_modules/@4site/engrid-scripts/dist/url-to-form.js
// Component that allows to set a field value from URL parameters
// Workflow:
// 1. Loop through all the URL parameters
@@ -18044,7 +18164,7 @@ class UrlToForm {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/required-if-visible.js
+;// ./node_modules/@4site/engrid-scripts/dist/required-if-visible.js
class RequiredIfVisible {
constructor() {
@@ -18106,7 +18226,7 @@ class RequiredIfVisible {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/tidycontact.js
+;// ./node_modules/@4site/engrid-scripts/dist/tidycontact.js
var tidycontact_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
@@ -19310,7 +19430,7 @@ class TidyContact {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/live-currency.js
+;// ./node_modules/@4site/engrid-scripts/dist/live-currency.js
// This script enables live currency symbol and code to the page.
class LiveCurrency {
@@ -19452,7 +19572,7 @@ class LiveCurrency {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/custom-currency.js
+;// ./node_modules/@4site/engrid-scripts/dist/custom-currency.js
// This component allows you to customize the currency options in the currency field
// It is used in the following way:
//
@@ -19566,7 +19686,7 @@ class CustomCurrency {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/autosubmit.js
+;// ./node_modules/@4site/engrid-scripts/dist/autosubmit.js
// Automatically submits the page if a URL argument is present
class Autosubmit {
@@ -19584,7 +19704,7 @@ class Autosubmit {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/event-tickets.js
+;// ./node_modules/@4site/engrid-scripts/dist/event-tickets.js
class EventTickets {
constructor() {
// --------------------------------------------
@@ -19610,7 +19730,7 @@ class EventTickets {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/swap-amounts.js
+;// ./node_modules/@4site/engrid-scripts/dist/swap-amounts.js
// This script allows you to override the default donation amounts in Engaging Networks
// with a custom list of amounts.
// If the URL contains a query parameter "engrid-amounts" with a comma separated values, the script will load the
@@ -19744,7 +19864,7 @@ class SwapAmounts {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/debug-panel.js
+;// ./node_modules/@4site/engrid-scripts/dist/debug-panel.js
class DebugPanel {
constructor(pageLayouts) {
@@ -20254,7 +20374,7 @@ class DebugPanel {
}
DebugPanel.debugSessionStorageKey = "engrid_debug_panel";
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/debug-hidden-fields.js
+;// ./node_modules/@4site/engrid-scripts/dist/debug-hidden-fields.js
// Switches hidden fields to be type text when debug mode is enabled.
class DebugHiddenFields {
@@ -20304,7 +20424,7 @@ class DebugHiddenFields {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/branding-html.js
+;// ./node_modules/@4site/engrid-scripts/dist/branding-html.js
var branding_html_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
@@ -20376,7 +20496,7 @@ class BrandingHtml {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/country-disable.js
+;// ./node_modules/@4site/engrid-scripts/dist/country-disable.js
// This class allows you to disable some countries from the country dropdown list.
class CountryDisable {
@@ -20400,7 +20520,7 @@ class CountryDisable {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/premium-gift.js
+;// ./node_modules/@4site/engrid-scripts/dist/premium-gift.js
// Component to handle premium gift features
// 1 - Add a class to body to indicate which premium gift is selected (data-engrid-premium-gift-name="item-name-slugged")
// 2 - Add a class to body to indicate if the "maximize my impact" is selected (data-engrid-premium-gift-maximize="true|false")
@@ -20585,12 +20705,279 @@ class PremiumGift {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/digital-wallets.js
+;// ./node_modules/@4site/engrid-scripts/dist/custom-premium.js
+// ENgrid component: CustomPremium
+// Filters premium gifts based on window.EngridPageOptions.CustomPremium configuration
+// Rules:
+// - Config shape: window.EngridPageOptions.CustomPremium[frequency][productId] = minimumAmount
+// - On frequency or amount change, wait 500ms (allow EN to re-render), then:
+// - Show only gifts whose minimumAmount <= current amount; hide others
+// - If none visible, hide entire .en__component--premiumgiftblock
+// - If current selection becomes invalid, select default; if default not visible, select "No Premium" and clear transaction.selprodvariantid
+// - Run once 500ms after page load
+// - Add EnForm onSubmit hook to clear transaction.selprodvariantid when no visible premium items
+
+class CustomPremium {
+ constructor() {
+ this.logger = new logger_EngridLogger("CustomPremium", "teal", "white", "🧩");
+ this._amount = DonationAmount.getInstance();
+ this._frequency = DonationFrequency.getInstance();
+ this._enForm = en_form_EnForm.getInstance();
+ this.stylesInjected = false;
+ this.pendingFrequencyChange = false;
+ if (!this.shouldRun())
+ return;
+ this.injectStyles();
+ // Initial run: execute once after 500ms
+ window.setTimeout(() => this.run(), 500);
+ // On changes, schedule processing and fade out immediately
+ this._amount.onAmountChange.subscribe(() => this.scheduleRun());
+ this._frequency.onFrequencyChange.subscribe(() => {
+ this.pendingFrequencyChange = true;
+ this.scheduleRun();
+ });
+ // Clear hidden variant field on submit if there are no visible premium items
+ this._enForm.onSubmit.subscribe(() => {
+ if (!this.hasVisiblePremiumItems()) {
+ this.clearVariantField();
+ }
+ });
+ }
+ shouldRun() {
+ const isPremiumPage = "pageJson" in window &&
+ "pageType" in window.pageJson &&
+ window.pageJson.pageType === "premiumgift";
+ const hasConfig = !!engrid_ENGrid.getOption("CustomPremium");
+ return isPremiumPage && hasConfig;
+ }
+ get config() {
+ const cfg = engrid_ENGrid.getOption("CustomPremium");
+ return cfg || null;
+ }
+ get premiumContainer() {
+ return document.querySelector(".en__component--premiumgiftblock");
+ }
+ get giftItems() {
+ return Array.from(document.querySelectorAll(".en__pg"));
+ }
+ getFrequencyConfig(frequency) {
+ const customPremiumConfig = this.config;
+ if (!customPremiumConfig)
+ return null;
+ const frequencyConfig = customPremiumConfig[frequency];
+ if (frequencyConfig && typeof frequencyConfig === "object")
+ return frequencyConfig;
+ return null;
+ }
+ getProductsMap(frequency) {
+ const frequencyConfig = this.getFrequencyConfig(frequency);
+ const productsMap = {};
+ if (!frequencyConfig)
+ return productsMap;
+ // If explicit products object exists, use it
+ if (frequencyConfig.products &&
+ typeof frequencyConfig.products === "object") {
+ Object.entries(frequencyConfig.products).forEach(([productId, min]) => {
+ const id = String(productId);
+ const minAmount = Number(min);
+ if (!isNaN(minAmount))
+ productsMap[id] = minAmount;
+ });
+ return productsMap;
+ }
+ // Otherwise, treat own numeric-value keys as products, ignore 'default'
+ Object.entries(frequencyConfig).forEach(([key, value]) => {
+ if (key === "default")
+ return;
+ const minAmount = Number(value);
+ if (!isNaN(minAmount))
+ productsMap[String(key)] = minAmount;
+ });
+ return productsMap;
+ }
+ getConfiguredDefaultPid(frequency) {
+ const frequencyConfig = this.getFrequencyConfig(frequency);
+ if (!frequencyConfig)
+ return null;
+ const defaultValue = frequencyConfig.default;
+ if (defaultValue === undefined || defaultValue === null)
+ return "0"; // not set => No Premium by spec
+ const id = String(defaultValue);
+ return id;
+ }
+ injectStyles() {
+ if (this.stylesInjected)
+ return;
+ const id = "engrid-custom-premium-style";
+ if (document.getElementById(id)) {
+ this.stylesInjected = true;
+ return;
+ }
+ const style = document.createElement("style");
+ style.id = id;
+ style.innerHTML = `
+ .en__component--premiumgiftblock { transition: opacity 200ms ease-in-out; }
+ .en__component--premiumgiftblock.engrid-premium-processing { opacity: 0; pointer-events: none; }
+ .en__component--premiumgiftblock.engrid-premium-hidden { display: none !important; }
+ .en__component--premiumgiftblock.engrid-premium-ready { opacity: 1; }
+ `;
+ document.head.appendChild(style);
+ this.stylesInjected = true;
+ }
+ startProcessingVisual() {
+ const container = this.premiumContainer;
+ if (container) {
+ container.classList.add("engrid-premium-processing");
+ container.classList.remove("engrid-premium-ready");
+ }
+ }
+ endProcessingVisual(hasVisible) {
+ const container = this.premiumContainer;
+ if (!container)
+ return;
+ container.classList.remove("engrid-premium-processing");
+ if (hasVisible) {
+ container.classList.remove("engrid-premium-hidden");
+ container.classList.add("engrid-premium-ready");
+ }
+ else {
+ container.classList.add("engrid-premium-hidden");
+ container.classList.remove("engrid-premium-ready");
+ }
+ }
+ scheduleRun() {
+ // Immediately fade out while we wait for EN to re-render
+ this.startProcessingVisual();
+ if (this.debounceTimer)
+ window.clearTimeout(this.debounceTimer);
+ this.debounceTimer = window.setTimeout(() => this.run(), 500);
+ }
+ getCurrentFreq() {
+ return (this._frequency.frequency || "onetime").toLowerCase();
+ }
+ getCurrentAmount() {
+ return this._amount.amount || 0;
+ }
+ getAllowedProductIds(freq, amount) {
+ const cfg = this.config;
+ const allowed = new Set();
+ if (!cfg)
+ return allowed;
+ const products = this.getProductsMap(freq);
+ Object.keys(products).forEach((pid) => {
+ const min = Number(products[pid]);
+ if (!isNaN(min) && amount >= min)
+ allowed.add(String(pid));
+ });
+ return allowed;
+ }
+ getProductId(item) {
+ const input = item.querySelector('input[name="en__pg"]');
+ return input ? input.value : null;
+ }
+ showItem(item, show) {
+ item.style.display = show ? "" : "none";
+ }
+ selectByProductId(productId) {
+ const radio = document.querySelector('input[name="en__pg"][value="' + productId + '"]');
+ if (radio) {
+ radio.checked = true;
+ radio.dispatchEvent(new Event("change", { bubbles: true, cancelable: true }));
+ // Update EN's selected class if necessary
+ const prev = document.querySelector(".en__pg--selected");
+ const pg = radio.closest(".en__pg");
+ if (prev && prev !== pg)
+ prev.classList.remove("en__pg--selected");
+ if (pg)
+ pg.classList.add("en__pg--selected");
+ }
+ }
+ clearVariantField() {
+ engrid_ENGrid.setFieldValue("transaction.selprodvariantid", "");
+ }
+ hasVisiblePremiumItems() {
+ // Exclude the "No Premium" (value 0) from count
+ return this.giftItems.some((item) => {
+ const pid = this.getProductId(item);
+ const visible = engrid_ENGrid.isVisible(item);
+ return visible && pid !== "0";
+ });
+ }
+ run() {
+ const container = this.premiumContainer;
+ if (!container)
+ return this.logger.log("No premium container found.");
+ const frequency = this.getCurrentFreq();
+ const amount = this.getCurrentAmount();
+ const allowedProductIds = this.getAllowedProductIds(frequency, amount);
+ // Iterate items and toggle visibility
+ let anyVisible = false;
+ const items = this.giftItems;
+ const noPremiumItems = [];
+ items.forEach((item) => {
+ const productId = this.getProductId(item);
+ if (!productId)
+ return;
+ if (productId === "0") {
+ // track no-premium items but don't decide visibility here — it's always available
+ noPremiumItems.push(item);
+ this.showItem(item, true);
+ return;
+ }
+ const visible = allowedProductIds.has(productId);
+ this.showItem(item, visible);
+ if (visible)
+ anyVisible = true;
+ });
+ // If nothing visible (besides no-premium), hide whole container
+ const hasVisibleGifts = anyVisible;
+ this.endProcessingVisual(hasVisibleGifts);
+ // Selection handling
+ const current = document.querySelector('input[name="en__pg"]:checked');
+ const currentProductId = (current === null || current === void 0 ? void 0 : current.value) || null;
+ const defaultProductId = this.getConfiguredDefaultPid(frequency); // may be "0"
+ // If current selection is invalid after filtering, apply default logic
+ const currentIsValid = currentProductId === "0" ||
+ (currentProductId ? allowedProductIds.has(currentProductId) : false);
+ if (!currentIsValid) {
+ if (defaultProductId &&
+ defaultProductId !== "0" &&
+ allowedProductIds.has(defaultProductId)) {
+ this.selectByProductId(defaultProductId);
+ }
+ else {
+ this.selectByProductId("0");
+ this.clearVariantField();
+ }
+ }
+ else {
+ // Current selection is valid; only force No Premium if frequency changed and default is 0/missing
+ if (this.pendingFrequencyChange &&
+ (!defaultProductId || defaultProductId === "0")) {
+ if (currentProductId !== "0") {
+ this.selectByProductId("0");
+ this.clearVariantField();
+ }
+ }
+ }
+ // If container hidden (no visible gifts), select No Premium and clear hidden
+ if (!hasVisibleGifts) {
+ this.selectByProductId("0");
+ this.clearVariantField();
+ }
+ this.logger.log(`Processed gifts for freq=${frequency}, amount=${amount}. Visible gifts: ${hasVisibleGifts ? "yes" : "no"}`);
+ // Reset frequency-change flag after processing
+ this.pendingFrequencyChange = false;
+ }
+}
+
+;// ./node_modules/@4site/engrid-scripts/dist/digital-wallets.js
class DigitalWallets {
constructor() {
//digital wallets not enabled.
if (!document.getElementById("en__digitalWallet")) {
+ engrid_ENGrid.setBodyData("payment-type-option-stripedigitalwallet", "false");
engrid_ENGrid.setBodyData("payment-type-option-apple-pay", "false");
engrid_ENGrid.setBodyData("payment-type-option-google-pay", "false");
engrid_ENGrid.setBodyData("payment-type-option-paypal-one-touch", "false");
@@ -20629,6 +21016,7 @@ class DigitalWallets {
else {
engrid_ENGrid.setBodyData("payment-type-option-apple-pay", "false");
engrid_ENGrid.setBodyData("payment-type-option-google-pay", "false");
+ engrid_ENGrid.setBodyData("payment-type-option-stripedigitalwallet", "false");
const stripeContainer = document.getElementById("en__digitalWallet__stripeButtons__container");
if (stripeContainer) {
this.checkForWalletsBeingAdded(stripeContainer, "stripe");
@@ -20673,8 +21061,18 @@ class DigitalWallets {
}
addStripeDigitalWallets() {
this.addOptionToPaymentTypeField("stripedigitalwallet", "GooglePay / ApplePay");
+ // ENGrid.setBodyData(
+ // "payment-type-option-apple-pay",
+ // DigitalWallets.isApplePayAvailable.toString()
+ // );
+ // ENGrid.setBodyData(
+ // "payment-type-option-google-pay",
+ // !DigitalWallets.isApplePayAvailable.toString()
+ // );
+ // TODO: Change to trustworthy detection of Google Pay & Apple Pay availability
engrid_ENGrid.setBodyData("payment-type-option-apple-pay", "true");
engrid_ENGrid.setBodyData("payment-type-option-google-pay", "true");
+ engrid_ENGrid.setBodyData("payment-type-option-stripedigitalwallet", "true");
}
addPaypalTouchDigitalWallets() {
this.addOptionToPaymentTypeField("paypaltouch", "Paypal / Venmo");
@@ -20730,7 +21128,7 @@ class DigitalWallets {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/mobile-cta.js
+;// ./node_modules/@4site/engrid-scripts/dist/mobile-cta.js
// This component adds a floating CTA button to the page, which can be used to scroll to the top of the form
class MobileCTA {
@@ -20807,7 +21205,7 @@ class MobileCTA {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/live-frequency.js
+;// ./node_modules/@4site/engrid-scripts/dist/live-frequency.js
// This script creates merge tags: [[frequency]], [[Frequency]], or [[FREQUENCY]]
// that gets replaced with the donation frequency
// and can be used on any Code Block, Text Block, or Form Block
@@ -20918,7 +21316,7 @@ class LiveFrequency {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/universal-opt-in.js
+;// ./node_modules/@4site/engrid-scripts/dist/universal-opt-in.js
/**
* This class will add event listeners to every yes/no radio button or checkbox
* inside a universal opt-in element (any form block with the CSS class universal-opt-in). When the user clicks on a radio/checkbox
@@ -21011,7 +21409,7 @@ class UniversalOptIn {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/plaid.js
+;// ./node_modules/@4site/engrid-scripts/dist/plaid.js
// Component with a helper to auto-click on the Plaid link
// when that payment method is selected
@@ -21062,7 +21460,7 @@ class Plaid {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/give-by-select.js
+;// ./node_modules/@4site/engrid-scripts/dist/give-by-select.js
class GiveBySelect {
constructor() {
@@ -21145,7 +21543,7 @@ class GiveBySelect {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/url-params-to-body-attrs.js
+;// ./node_modules/@4site/engrid-scripts/dist/url-params-to-body-attrs.js
//This component adds any url parameters that begin with "data-engrid-" to the body as attributes.
class UrlParamsToBodyAttrs {
@@ -21161,7 +21559,7 @@ class UrlParamsToBodyAttrs {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/exit-intent-lightbox.js
+;// ./node_modules/@4site/engrid-scripts/dist/exit-intent-lightbox.js
class ExitIntentLightbox {
@@ -21308,7 +21706,7 @@ class ExitIntentLightbox {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/supporter-hub.js
+;// ./node_modules/@4site/engrid-scripts/dist/supporter-hub.js
// Component that adds 4Site Special Features to the Supporter Hub Page
class SupporterHub {
@@ -21385,7 +21783,7 @@ class SupporterHub {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/fast-form-fill.js
+;// ./node_modules/@4site/engrid-scripts/dist/fast-form-fill.js
/**
* This class adds body data attributes if all mandatory inputs, on specific form blocks, are filled.
* Related styling (to hide elements) can be found in "fast-form-fill.scss".
@@ -21462,7 +21860,7 @@ class FastFormFill {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/set-attr.js
+;// ./node_modules/@4site/engrid-scripts/dist/set-attr.js
/*+
The class is used to set body attributes via click handlers.
The format is "setattr--{attribute}--{value}".
@@ -21495,7 +21893,7 @@ class SetAttr {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/show-if-present.js
+;// ./node_modules/@4site/engrid-scripts/dist/show-if-present.js
/**
* This class contains the logic for special classes that can be used to hide elements if
* certain supporter questions are present or absent.
@@ -21576,7 +21974,7 @@ class ShowIfPresent {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/en-validators.js
+;// ./node_modules/@4site/engrid-scripts/dist/en-validators.js
// This component uses EN's Custom Validators on the client side to validate form fields.
// It's currently behind a feature flag, so it's not enabled by default.
// To enable it, add the following to your options:
@@ -21667,7 +22065,7 @@ class ENValidators {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/modal.js
+;// ./node_modules/@4site/engrid-scripts/dist/modal.js
class Modal {
constructor(options) {
@@ -21810,7 +22208,7 @@ class Modal {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/postal-code-validator.js
+;// ./node_modules/@4site/engrid-scripts/dist/postal-code-validator.js
@@ -21930,7 +22328,7 @@ class PostalCodeValidator {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/vgs.js
+;// ./node_modules/@4site/engrid-scripts/dist/vgs.js
// This component allows you to customize the VGS theme options
//
// It is used in the following way:
@@ -22074,6 +22472,7 @@ class VGS {
// Autocomplete is not customizable
autoComplete: "cc-number",
validations: ["required", "validCardNumber"],
+ validCardBrands: null
},
"transaction.ccvv": {
showCardIcon: false,
@@ -22091,6 +22490,12 @@ class VGS {
css: styles,
},
};
+ // Override the validCardBrands if set in the theme options, as this should not be deep merged.
+ if (options &&
+ options["transaction.ccnumber"] &&
+ options["transaction.ccnumber"].validCardBrands) {
+ defaultOptions["transaction.ccnumber"].validCardBrands = options["transaction.ccnumber"].validCardBrands;
+ }
// Deep merge the default options with the options set in the theme
this.options = engrid_ENGrid.deepMerge(defaultOptions, options);
this.logger.log("Options", this.options);
@@ -22181,7 +22586,7 @@ class VGS {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/country-redirect.js
+;// ./node_modules/@4site/engrid-scripts/dist/country-redirect.js
// This component allows you to redirect the user to a different page based on their country.
// It works by checking the country field on the page and comparing it to the list of countries in the CountryRedirect option.
// If the country matches one of the countries in the list, the user is redirected to the specified URL only if the URL is not the same as the current page.
@@ -22244,7 +22649,7 @@ class CountryRedirect {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/welcome-back.js
+;// ./node_modules/@4site/engrid-scripts/dist/welcome-back.js
/**
* This component adds a welcome back message and a personal details summary to the page.
* It depends on the "fast-personal-details" functionality from the FastFormFill component.
@@ -22292,6 +22697,7 @@ class WelcomeBack {
region: engrid_ENGrid.getFieldValue("supporter.region"),
postcode: engrid_ENGrid.getFieldValue("supporter.postcode"),
country: engrid_ENGrid.getFieldValue("supporter.country"),
+ mobilePhone: engrid_ENGrid.getFieldValue("supporter.phoneNumber2"),
};
this.addWelcomeBack();
this.addPersonalDetailsSummary();
@@ -22346,6 +22752,9 @@ class WelcomeBack {
${this.supporterDetails["firstName"]} ${this.supporterDetails["lastName"]}
${this.supporterDetails["emailAddress"]}
+ ${this.supporterDetails["mobilePhone"]
+ ? ` ${this.supporterDetails["mobilePhone"]}`
+ : ""}
`);
if (this.supporterDetails["address1"] &&
@@ -22417,7 +22826,7 @@ class WelcomeBack {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/interfaces/ecard-to-target-options.js
+;// ./node_modules/@4site/engrid-scripts/dist/interfaces/ecard-to-target-options.js
const EcardToTargetOptionsDefaults = {
targetName: "",
targetEmail: "",
@@ -22428,7 +22837,7 @@ const EcardToTargetOptionsDefaults = {
targets: [],
};
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/ecard-to-target.js
+;// ./node_modules/@4site/engrid-scripts/dist/ecard-to-target.js
/**
* This component adjusts an ecard form to target a specific recipient,
* defined in a code block
@@ -22525,16 +22934,17 @@ class EcardToTarget {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/interfaces/embedded-ecard-options.js
+;// ./node_modules/@4site/engrid-scripts/dist/interfaces/embedded-ecard-options.js
const EmbeddedEcardOptionsDefaults = {
pageUrl: "",
headerText: "Send an Ecard notification of your gift",
checkboxText: "Yes, I would like to send an ecard to announce my gift.",
anchor: ".en__field--donationAmt",
placement: "afterend",
+ requireInMemCheckbox: false,
};
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/embedded-ecard.js
+;// ./node_modules/@4site/engrid-scripts/dist/embedded-ecard.js
/**
* This class handles adding a checkbox to a form that, when checked, will display an embedded ecard form.
* The embedded ecard form is hosted on a separate page and is displayed in an iframe.
@@ -22563,6 +22973,7 @@ class EmbeddedEcard {
this.options = Object.assign(Object.assign({}, EmbeddedEcardOptionsDefaults), window.EngridEmbeddedEcard);
const pageUrl = new URL(this.options.pageUrl);
pageUrl.searchParams.append("data-engrid-embedded-ecard", "true");
+ pageUrl.searchParams.append("chain", "");
this.options.pageUrl = pageUrl.href;
this.logger.log("Running Embedded Ecard component", this.options);
this.embedEcard();
@@ -22586,7 +22997,7 @@ class EmbeddedEcard {
window.EngridEmbeddedEcard.pageUrl !== "");
}
onEmbeddedEcardPage() {
- return engrid_ENGrid.getPageType() === "ECARD" && engrid_ENGrid.hasBodyData("embedded");
+ return engrid_ENGrid.getPageType() === "ECARD" && engrid_ENGrid.hasBodyData("embedded") && engrid_ENGrid.getPageNumber() === 1;
}
onPostActionPage() {
return (sessionStorage.getItem("engrid-embedded-ecard") !== null &&
@@ -22630,8 +23041,20 @@ class EmbeddedEcard {
return iframe;
}
addEventListeners() {
+ var _a;
const sendEcardCheckbox = document.getElementById("en__field_embedded-ecard");
- this.toggleEcardForm(sendEcardCheckbox.checked);
+ if (this.options.requireInMemCheckbox) {
+ const inMemoriamCheckbox = document.getElementById("en__field_transaction_inmem");
+ inMemoriamCheckbox === null || inMemoriamCheckbox === void 0 ? void 0 : inMemoriamCheckbox.addEventListener("change", (e) => {
+ const checkbox = e.target;
+ const _sendEcardCheckbox = document.getElementById("en__field_embedded-ecard");
+ this.toggleEcardForm(checkbox.checked && _sendEcardCheckbox.checked);
+ });
+ this.toggleEcardForm(((_a = inMemoriamCheckbox === null || inMemoriamCheckbox === void 0 ? void 0 : inMemoriamCheckbox.checked) !== null && _a !== void 0 ? _a : true) && sendEcardCheckbox.checked);
+ }
+ else {
+ this.toggleEcardForm(sendEcardCheckbox.checked);
+ }
sendEcardCheckbox === null || sendEcardCheckbox === void 0 ? void 0 : sendEcardCheckbox.addEventListener("change", (e) => {
const checkbox = e.target;
this.toggleEcardForm(checkbox.checked);
@@ -22866,7 +23289,7 @@ class EmbeddedEcard {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/us-only-form.js
+;// ./node_modules/@4site/engrid-scripts/dist/us-only-form.js
/*
* This class disables the country field and fixes the country to "United States"
*/
@@ -22898,7 +23321,7 @@ class UsOnlyForm {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/thank-you-page-conditional-content.js
+;// ./node_modules/@4site/engrid-scripts/dist/thank-you-page-conditional-content.js
class ThankYouPageConditionalContent {
constructor() {
@@ -22946,7 +23369,7 @@ class ThankYouPageConditionalContent {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/checkbox-label.js
+;// ./node_modules/@4site/engrid-scripts/dist/checkbox-label.js
// Component to allow the user to set custom labels for the checkboxes,
// you can customize the checkbox label on a per-page basis, which is not possible with Engaging Networks
// The .checkbox-label element should be placed right before the checkbox form block
@@ -22965,20 +23388,20 @@ class CheckboxLabel {
}
run() {
this.checkBoxesLabels.forEach((checkboxLabel) => {
- var _a;
- const labelText = (_a = checkboxLabel.textContent) === null || _a === void 0 ? void 0 : _a.trim();
+ const labelHTML = checkboxLabel.innerHTML.trim();
const checkboxContainer = checkboxLabel.nextElementSibling;
const checkboxLabelElement = checkboxContainer.querySelector("label:last-child");
- if (!checkboxLabelElement || !labelText)
+ if (!checkboxLabelElement || !labelHTML)
return;
- checkboxLabelElement.textContent = labelText;
+ checkboxLabelElement.innerHTML = `
${labelHTML}
`;
+ // Remove the original label element
checkboxLabel.remove();
- this.logger.log(`Set checkbox label to "${labelText}"`);
+ this.logger.log(`Set checkbox label to "${labelHTML}"`);
});
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/optin-ladder.js
+;// ./node_modules/@4site/engrid-scripts/dist/optin-ladder.js
// This component is responsible for showing a ladder of checkboxes, one at a time, to the user.
// If the page is not embedded in an iframe, and there are EN's Opt-In fields on the page, we will store the values to sessionStorage upon Form Submit.
// If the page is embedded in an iframe and on a Thank You Page, we will look for .optin-ladder elements, compare the values to sessionStorage, and show the next checkbox in the ladder, removing all but the first match.
@@ -23242,7 +23665,7 @@ class OptInLadder {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/post-donation-embed.js
+;// ./node_modules/@4site/engrid-scripts/dist/post-donation-embed.js
// This component only works on Thank You pages and the current page IS NOT embedded as an iframe.
// It searches for a post-donation tag (engrid-post-donation)
// and if it exists, it will replace it with an iframe of the chained `src` attribute (or the current donation page, replacing the
@@ -23309,7 +23732,7 @@ class PostDonationEmbed {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/frequency-upsell-modal.js
+;// ./node_modules/@4site/engrid-scripts/dist/frequency-upsell-modal.js
/*
* FrequencyUpsellModal - this is class that creates the modal for the frequency upsell.
* This component is intentionally "dumb" and only creates the modal renders its content.
@@ -23373,7 +23796,7 @@ class FrequencyUpsellModal extends Modal {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/frequency-upsell.js
+;// ./node_modules/@4site/engrid-scripts/dist/frequency-upsell.js
/*
* FrequencyUpsell component which creates a modal to upsell the frequency of the donation
* This is typically used to upsell a single donation into an annual donation, but the component
@@ -23536,10 +23959,298 @@ class FrequencyUpsell {
}
}
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/version.js
-const AppVersion = "0.22.17";
+;// ./node_modules/@4site/engrid-scripts/dist/preferred-payment-method.js
+
+class PreferredPaymentMethod {
+ constructor() {
+ var _a;
+ this.logger = new logger_EngridLogger("PreferredPaymentMethod", "#ffffff", "#1f2933", "⭐️");
+ this.availabilityTimeoutMs = 4000;
+ this.cleanupHandlers = [];
+ this.selectionFinalized = false;
+ this.listenersAttached = false;
+ this.config = this.resolveConfig();
+ this.preferredFieldName = ((_a = this.config.preferredPaymentMethodField) === null || _a === void 0 ? void 0 : _a.trim()) || "";
+ if (!this.shouldRun()) {
+ return;
+ }
+ this.attachGiveBySelectListeners();
+ const candidates = this.buildCandidateList();
+ if (candidates.length === 0) {
+ this.logger.log("No payment methods to evaluate. Skipping.");
+ return;
+ }
+ this.logger.log(`Evaluating preferred payment methods in order: ${candidates.join(", ")}`);
+ this.tryCandidateAtIndex(0, candidates);
+ }
+ shouldRun() {
+ if (engrid_ENGrid.getPageType() !== "DONATION") {
+ this.logger.log("Not a donation page. Skipping preferred payment selection.");
+ return false;
+ }
+ // If there's a "payment" URL parameter, we can proceed
+ if (engrid_ENGrid.getUrlParameter("payment")) {
+ return true;
+ }
+ if (!this.getGiveBySelectInputs().length) {
+ this.logger.log("No give-by-select inputs found. Skipping.");
+ return false;
+ }
+ const config = engrid_ENGrid.getOption("PreferredPaymentMethod") || false;
+ if (config === false) {
+ this.logger.log("PreferredPaymentMethod option disabled.");
+ return false;
+ }
+ return true;
+ }
+ resolveConfig() {
+ const option = engrid_ENGrid.getOption("PreferredPaymentMethod") || false;
+ if (option && typeof option === "object") {
+ const preferredPaymentMethodField = option.preferredPaymentMethodField || "";
+ const defaultPaymentMethod = Array.isArray(option.defaultPaymentMethod)
+ ? option.defaultPaymentMethod.filter((item) => !!item)
+ : [];
+ return {
+ preferredPaymentMethodField,
+ defaultPaymentMethod: defaultPaymentMethod.length > 0 ? defaultPaymentMethod : ["card"],
+ };
+ }
+ return {
+ preferredPaymentMethodField: "",
+ defaultPaymentMethod: ["card"],
+ };
+ }
+ buildCandidateList() {
+ const candidates = [];
+ const seen = new Set();
+ const pushCandidate = (value) => {
+ if (!value)
+ return;
+ const normalized = this.normalizePaymentValue(value);
+ if (!normalized || seen.has(normalized))
+ return;
+ seen.add(normalized);
+ candidates.push(normalized);
+ };
+ pushCandidate(this.getFieldPreference());
+ pushCandidate(this.getUrlPreference());
+ this.config.defaultPaymentMethod.forEach(pushCandidate);
+ return candidates;
+ }
+ hasPreferredField() {
+ if (!this.preferredFieldName)
+ return false;
+ const field = engrid_ENGrid.getField(this.preferredFieldName);
+ return !!field;
+ }
+ attachGiveBySelectListeners() {
+ if (this.listenersAttached)
+ return;
+ if (!this.preferredFieldName)
+ return;
+ if (!this.hasPreferredField()) {
+ this.logger.log(`Preferred payment field "${this.preferredFieldName}" not found. Field sync disabled.`);
+ return;
+ }
+ const inputs = this.getGiveBySelectInputs();
+ inputs.forEach((input) => {
+ input.addEventListener("change", () => {
+ if (input.checked) {
+ this.syncPreferredField(input.value);
+ }
+ });
+ });
+ this.listenersAttached = true;
+ }
+ syncPreferredField(value) {
+ if (!this.preferredFieldName)
+ return;
+ if (!this.hasPreferredField())
+ return;
+ engrid_ENGrid.setFieldValue(this.preferredFieldName, value, false, true);
+ }
+ getFieldPreference() {
+ if (!this.preferredFieldName) {
+ return null;
+ }
+ const fieldValue = engrid_ENGrid.getFieldValue(this.preferredFieldName);
+ if (!fieldValue) {
+ this.logger.log(`Preferred payment field "${this.preferredFieldName}" is empty. Moving on.`);
+ return null;
+ }
+ this.logger.log(`Preferred payment from field "${this.preferredFieldName}" resolved to "${fieldValue}".`);
+ return fieldValue;
+ }
+ getUrlPreference() {
+ const urlValue = engrid_ENGrid.getUrlParameter("payment");
+ if (typeof urlValue === "string" && urlValue.trim() !== "") {
+ this.logger.log(`Preferred payment from URL parameter: "${urlValue}".`);
+ return urlValue;
+ }
+ return null;
+ }
+ tryCandidateAtIndex(index, candidates) {
+ if (this.selectionFinalized) {
+ return;
+ }
+ if (index >= candidates.length) {
+ this.logger.log("No preferred payment method was applied.");
+ return;
+ }
+ const method = candidates[index];
+ if (!this.paymentMethodExists(method)) {
+ this.logger.log(`Payment method "${method}" not found. Skipping.`);
+ this.tryCandidateAtIndex(index + 1, candidates);
+ return;
+ }
+ if (this.isPaymentMethodAvailable(method)) {
+ this.logger.success(`Selecting available payment method "${method}".`);
+ this.applySelection(method);
+ return;
+ }
+ this.logger.log(`Payment method "${method}" exists but is not available yet. Waiting up to ${this.availabilityTimeoutMs}ms.`);
+ this.waitForAvailability(method, () => {
+ if (this.selectionFinalized)
+ return;
+ if (this.isPaymentMethodAvailable(method)) {
+ this.logger.success(`Selecting payment method "${method}" once it became available.`);
+ this.applySelection(method);
+ }
+ }, () => {
+ if (this.selectionFinalized)
+ return;
+ this.logger.log(`Payment method "${method}" still unavailable after waiting. Trying next option.`);
+ this.tryCandidateAtIndex(index + 1, candidates);
+ });
+ }
+ waitForAvailability(method, onAvailable, onTimeout) {
+ const observers = [];
+ const cleanup = () => {
+ observers.forEach((observer) => observer.disconnect());
+ observers.length = 0;
+ this.cleanupHandlers = this.cleanupHandlers.filter((fn) => fn !== cleanup);
+ window.clearTimeout(timeoutId);
+ };
+ this.cleanupHandlers.push(cleanup);
+ const checkAvailability = () => {
+ if (this.selectionFinalized) {
+ cleanup();
+ return;
+ }
+ if (this.isPaymentMethodAvailable(method)) {
+ cleanup();
+ onAvailable();
+ }
+ };
+ const fieldContainer = this.getGiveBySelectContainer() || document.body;
+ const domObserver = new MutationObserver(() => checkAvailability());
+ domObserver.observe(fieldContainer, {
+ attributes: true,
+ attributeFilter: ["class", "style"],
+ childList: true,
+ subtree: true,
+ });
+ observers.push(domObserver);
+ const attributeFilters = this.getAvailabilityAttributeFilters(method);
+ if (attributeFilters.length > 0) {
+ const attrObserver = new MutationObserver(() => checkAvailability());
+ attrObserver.observe(document.body, {
+ attributes: true,
+ attributeFilter: attributeFilters,
+ });
+ observers.push(attrObserver);
+ }
+ const timeoutId = window.setTimeout(() => {
+ cleanup();
+ onTimeout();
+ }, this.availabilityTimeoutMs);
+ }
+ applySelection(method) {
+ if (this.selectionFinalized) {
+ return;
+ }
+ const input = this.findPaymentInput(method);
+ if (!input) {
+ this.logger.log(`Unable to locate give-by-select input for "${method}" during selection.`);
+ return;
+ }
+ if (!this.isPaymentMethodAvailable(method)) {
+ this.logger.log(`Payment method "${method}" is not available to select.`);
+ return;
+ }
+ input.checked = true;
+ input.dispatchEvent(new Event("change", { bubbles: true, cancelable: true }));
+ engrid_ENGrid.setPaymentType(method);
+ this.syncPreferredField(input.value);
+ this.selectionFinalized = true;
+ this.cleanupAllObservers();
+ }
+ paymentMethodExists(method) {
+ return !!this.findPaymentInput(method);
+ }
+ isPaymentMethodAvailable(method) {
+ const input = this.findPaymentInput(method);
+ if (!input || input.disabled) {
+ return false;
+ }
+ const container = this.getInputContainer(input);
+ return container ? engrid_ENGrid.isVisible(container) : engrid_ENGrid.isVisible(input);
+ }
+ findPaymentInput(method) {
+ const normalized = this.normalizePaymentValue(method);
+ if (!normalized) {
+ return null;
+ }
+ const inputs = this.getGiveBySelectInputs();
+ return (Array.from(inputs).find((input) => input.value && this.normalizePaymentValue(input.value) === normalized) || null);
+ }
+ getGiveBySelectInputs() {
+ return document.getElementsByName("transaction.giveBySelect");
+ }
+ getGiveBySelectContainer() {
+ return document.querySelector(".en__field--give-by-select, .give-by-select");
+ }
+ getInputContainer(input) {
+ return (input.closest(".en__field__item") ||
+ input.closest(".en__field__element") ||
+ input.parentElement);
+ }
+ findLabelForInput(input) {
+ if (input.id) {
+ const externalLabel = document.querySelector(`label[for="${input.id}"]`);
+ if (externalLabel) {
+ return externalLabel;
+ }
+ }
+ return input.closest("label");
+ }
+ normalizePaymentValue(value) {
+ return value.trim().toLowerCase();
+ }
+ getAvailabilityAttributeFilters(method) {
+ const map = {
+ stripedigitalwallet: [
+ "data-engrid-payment-type-option-apple-pay",
+ "data-engrid-payment-type-option-google-pay",
+ ],
+ paypaltouch: [
+ "data-engrid-payment-type-option-paypal-one-touch",
+ "data-engrid-payment-type-option-venmo",
+ ],
+ daf: ["data-engrid-payment-type-option-daf"],
+ };
+ return map[method] || [];
+ }
+ cleanupAllObservers() {
+ this.cleanupHandlers.forEach((cleanup) => cleanup());
+ this.cleanupHandlers = [];
+ }
+}
+
+;// ./node_modules/@4site/engrid-scripts/dist/version.js
+const AppVersion = "0.23.11";
-;// CONCATENATED MODULE: ./node_modules/@4site/engrid-scripts/dist/index.js
+;// ./node_modules/@4site/engrid-scripts/dist/index.js
// Runs first so it can change the DOM markup before any markup dependent code fires
@@ -23624,6 +24335,8 @@ const AppVersion = "0.22.17";
+
+
@@ -23632,67 +24345,92 @@ const AppVersion = "0.22.17";
// Version
-;// CONCATENATED MODULE: ./src/scripts/main.js
+;// ./src/scripts/main.js
const customScript = function (App, DonationFrequency) {
- console.log("ENGrid client scripts are executing"); // Listen to the message PayPal sends to the parent window when Venmo is enabled
-
- const VENMO_IDENTIFIER = "venmo"; // Print to the console ALL messages from iFrames
-
- window.addEventListener("message", function (event) {
- // Check the origin of the message
- if (event.origin === "https://www.paypal.com") {
- const data = JSON.parse(event.data); // Get the content from the first item of the data object
-
- const firstKey = Object.keys(data)[0];
- const content = data[firstKey][0];
- const hasData = ("data" in content);
- const hasName = hasData && "name" in content.data;
- const isRemember = hasName && content.data.name === "remember";
- const hasArgs = isRemember && "args" in content.data;
- const isVenmo = hasArgs && Array.isArray(content.data.args) && content.data.args.length > 0 && Array.isArray(content.data.args[0]) && content.data.args[0].length > 0 && content.data.args[0][0] === VENMO_IDENTIFIER;
-
- if (isVenmo) {
- // Venmo is Enabled
- // If you are on iPhone, only enable Venmo if using Safari
- const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
- const isSafari = navigator.userAgent.includes("Safari") && !navigator.userAgent.includes("CriOS") && !navigator.userAgent.includes("FxiOS");
-
- if (isIOS && !isSafari) {
- App.log("Venmo is not enabled on non-Safari iOS");
- return;
+ console.log("ENGrid client scripts are executing");
+
+ // Venmo Detection
+ const paypalTouchContainer = document.getElementById("en__digitalWallet__paypalTouch__container");
+ if (paypalTouchContainer) {
+ App.log("Venmo Detection: Container found");
+ let isChecking = false;
+ const checkVenmo = (observer = null) => {
+ if (isChecking) return;
+ isChecking = true;
+ App.log("Venmo Detection: Checking...");
+ // Temporarily make the container visible to check its height
+ const originalDisplay = paypalTouchContainer.style.display;
+ const originalVisibility = paypalTouchContainer.style.visibility;
+ const originalPosition = paypalTouchContainer.style.position;
+ paypalTouchContainer.style.visibility = "hidden";
+ paypalTouchContainer.style.position = "absolute";
+ paypalTouchContainer.style.display = "block";
+ setTimeout(() => {
+ const height = paypalTouchContainer.offsetHeight;
+ App.log(`Venmo Detection: Height is ${height}`);
+
+ // Restore original styles
+ paypalTouchContainer.style.display = originalDisplay;
+ paypalTouchContainer.style.visibility = originalVisibility;
+ paypalTouchContainer.style.position = originalPosition;
+ if (height > 70) {
+ // Venmo is Enabled
+ // If you are on iPhone, only enable Venmo if using Safari
+ const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
+ const isSafari = navigator.userAgent.includes("Safari") && !navigator.userAgent.includes("CriOS") && !navigator.userAgent.includes("FxiOS");
+ if (isIOS && !isSafari) {
+ App.log("Venmo is not enabled on non-Safari iOS");
+ } else {
+ App.setBodyData("venmo-enabled", "true");
+ App.log("Venmo is enabled");
+ }
+ }
+ // Stop observing once checked
+ if (observer) observer.disconnect();
+ isChecking = false;
+ }, 500);
+ };
+ const venmoObserver = new MutationObserver(mutationsList => {
+ for (const mutation of mutationsList) {
+ if (mutation.type === "childList" && mutation.addedNodes.length > 0) {
+ App.log("Venmo Detection: Mutation detected");
+ checkVenmo(venmoObserver);
}
-
- App.setBodyData("venmo-enabled", "true");
- App.log("Venmo is enabled");
}
+ });
+ venmoObserver.observe(paypalTouchContainer, {
+ childList: true,
+ subtree: true
+ });
+
+ // Check immediately in case it's already loaded
+ if (paypalTouchContainer.childNodes.length > 0) {
+ App.log("Venmo Detection: Immediate check triggered");
+ checkVenmo(venmoObserver);
}
- }); // Add Images to the transaction.giveBySelect labels
+ }
+ // Add Images to the transaction.giveBySelect labels
const paymentMethods = document.querySelectorAll("[name='transaction.giveBySelect'] + label");
paymentMethods.forEach(label => {
switch (label.getAttribute("for")) {
case "give-by-select-card":
label.innerHTML = ``;
break;
-
case "give-by-select-apple-google":
label.innerHTML = ``;
break;
-
case "give-by-select-venmo":
label.innerHTML = ``;
break;
-
case "give-by-select-paypal":
label.innerHTML = ``;
break;
-
case "give-by-select-paypaltouch":
label.innerHTML = ``;
break;
}
});
-
const addDataAttrToHiddenPaymentMethods = () => {
// Add a hidden engrid data attribute to every hidden giveBySelect radio parent
const hiddenGiveBySelect = document.querySelectorAll(".give-by-select-wrapper .en__field--giveBySelect");
@@ -23704,79 +24442,72 @@ const customScript = function (App, DonationFrequency) {
}
});
};
-
const isSpanish = document.querySelector("label[for='en__field_supporter_emailAddress']") && document.querySelector("label[for='en__field_supporter_emailAddress']").textContent === "Correo electrónico";
let inlineMonthlyUpsell = document.querySelectorAll(".move-after-transaction-recurrfreq")[0];
let recurrFrequencyField = document.querySelectorAll(".en__field--recurrfreq")[0];
-
if (inlineMonthlyUpsell && recurrFrequencyField) {
- recurrFrequencyField.insertAdjacentElement("beforeend", inlineMonthlyUpsell); // inlineMonthlyUpsell.style.visibility='visible';
+ recurrFrequencyField.insertAdjacentElement("beforeend", inlineMonthlyUpsell);
+ // inlineMonthlyUpsell.style.visibility='visible';
}
-
let inlineDonationAmountHeader = document.querySelectorAll(".move-before-transaction-donationamt")[0];
let donationAmtField = document.querySelectorAll(".en__field--donationAmt")[0];
-
if (inlineDonationAmountHeader && donationAmtField) {
- donationAmtField.insertAdjacentElement("afterbegin", inlineDonationAmountHeader); // inlineGiftAmountHeader.style.visibility='visible';
- } // Legacy Gated Content Donwload Links
-
+ donationAmtField.insertAdjacentElement("afterbegin", inlineDonationAmountHeader);
+ // inlineGiftAmountHeader.style.visibility='visible';
+ }
+ // Legacy Gated Content Donwload Links
if (pageJson.pageNumber === 2) {
document.body.setAttribute("ty-asset-download-links", "true");
- } // Get the labels of the first and second opt-in radio selects, so we can replace the first with the second
-
+ }
+ // Get the labels of the first and second opt-in radio selects, so we can replace the first with the second
var firstOptInLabel = document.querySelector(".en__component--formblock.opt-in-label-swap .en__field--question:nth-child(1) .en__field__label");
- var secondOptInLabel = document.querySelector(".en__component--formblock.opt-in-label-swap .en__field--question:nth-child(2) .en__field__label"); // Check if both labels exist
+ var secondOptInLabel = document.querySelector(".en__component--formblock.opt-in-label-swap .en__field--question:nth-child(2) .en__field__label");
+ // Check if both labels exist
if (firstOptInLabel && secondOptInLabel) {
// Replace the text content of the first opt-in label with the text content of the second opt-in label
firstOptInLabel.textContent = secondOptInLabel.textContent;
- } // Add your client scripts here
-
+ }
+ // Add your client scripts here
const freq = DonationFrequency.getInstance();
freq.onFrequencyChange.subscribe(s => {
console.log("frequency changed", s);
const otherAmount = document.querySelector("[name='transaction.donationAmt.other']");
-
if (otherAmount) {
switch (s) {
case "monthly":
otherAmount.placeholder = "Other /mo";
break;
-
case "annual":
otherAmount.placeholder = "Other /yr";
break;
-
default:
otherAmount.placeholder = "Other";
}
- } // Get selected payment method
-
-
- const selectedPaymentMethod = document.querySelector("[name='transaction.giveBySelect']:checked"); // Get selected payment method value
-
+ }
+ // Get selected payment method
+ const selectedPaymentMethod = document.querySelector("[name='transaction.giveBySelect']:checked");
+ // Get selected payment method value
const selectedPaymentMethodValue = selectedPaymentMethod ? selectedPaymentMethod.value : null;
const paypalOneTouch = document.querySelector("[name='transaction.giveBySelect'][value='paypaltouch'] + label");
const paypal = document.querySelector("[name='transaction.giveBySelect'][value='paypal'] + label");
-
if (App.isVisible(paypalOneTouch) && App.isVisible(paypal)) {
if (selectedPaymentMethodValue === "paypaltouch" && s === "monthly") {
paypal.click();
}
-
if (selectedPaymentMethodValue === "paypal" && s === "onetime") {
paypalOneTouch.click();
}
}
-
window.setTimeout(() => {
addDataAttrToHiddenPaymentMethods();
}, 100);
- }); // Re-run the addDataAttrToHiddenPaymentMethods function when body attribute changes
+ });
+ // Re-run the addDataAttrToHiddenPaymentMethods function when body attribute changes
const observerConfig = {
attributes: true,
childList: false,
@@ -23790,21 +24521,16 @@ const customScript = function (App, DonationFrequency) {
});
});
obs.observe(document.body, observerConfig);
-
const addMobilePhoneNotice = () => {
if (!document.querySelector(".en__field--phoneNumber2 .en__field__element")) {
App.addHtml('
By providing your mobile number, you agree to receive recurring text messages from WWF. Text STOP to quit, HELP for info. Message and data rates may apply.
Note: We are unable to mail thank-you gifts to donors outside the United States and its territories and have selected the "Mazimize my gift" option for you.
', ".en__field--country .en__field__element", "after");
}
};
-
const removeCountryNotice = () => {
App.removeHtml(".en__field--country .en__field__notice");
};
-
if (!window.EngagingNetworks.require._defined.enjs.checkSubmissionFailed()) {
maxMyGift();
hideMaxTheirGift();
}
-
if (App.getUrlParameter("premium") !== "international" && country) {
if (country.value !== "US") {
maxMyGift();
@@ -23901,7 +24610,6 @@ const customScript = function (App, DonationFrequency) {
addCountryNotice();
hideMaxTheirGift();
}
-
country.addEventListener("change", () => {
if (country.value !== "US") {
maxMyGift();
@@ -23920,17 +24628,13 @@ const customScript = function (App, DonationFrequency) {
showPremiumBlock();
}
});
- } // Check if the field Donation Has Premiums is present, if not, add it
-
-
+ }
+ // Check if the field Donation Has Premiums is present, if not, add it
let donationHasPremiums = App.getField("supporter.NOT_TAGGED_45");
-
if (!donationHasPremiums) {
App.createHiddenInput("supporter.NOT_TAGGED_45");
}
-
const premiumBlock = document.querySelector(".en__component--premiumgiftblock");
-
if (premiumBlock) {
//listen for the change event of name "en__pg" using event delegation
let selectedPremiumId = null;
@@ -23939,15 +24643,15 @@ const customScript = function (App, DonationFrequency) {
premiumBlock.addEventListener(event, e => {
setTimeout(() => {
const selectedGift = document.querySelector('[name="en__pg"]:checked');
-
if (selectedGift) {
selectedPremiumId = selectedGift.value;
selectedVariantId = App.getFieldValue("transaction.selprodvariantid");
}
}, 250);
});
- }); // Mutation observer to check if the "Maximized Their Gift" radio button is present. If it is, hide it.
+ });
+ // Mutation observer to check if the "Maximized Their Gift" radio button is present. If it is, hide it.
const observer = new MutationObserver(mutationsList => {
//loop over the mutations and if we're adding a radio with the "checked" attribute, remove that attribute so nothing gets re-selected
//when the premiums list is re-rendered
@@ -23956,36 +24660,30 @@ const customScript = function (App, DonationFrequency) {
mutation.addedNodes.forEach(node => {
if (typeof node.querySelector !== "function") return;
const preSelectedRadio = node.querySelector("input[checked]");
-
if (preSelectedRadio) {
preSelectedRadio.removeAttribute("checked");
}
});
}
}
-
if (mutationsList.some(mutation => mutation.type === "childList")) {
// Each time premiums list is re-rendered, hide the "Maximized Their Gift" section
const maximizeTheirGiftHeader = [...document.querySelectorAll(".en__pg__name")].find(el => el.innerText === "Maximized Their Gift");
-
if (maximizeTheirGiftHeader) {
const maxElement = maximizeTheirGiftHeader.closest(".en__pg");
-
if (maxElement) {
maxElement.classList.add("hide");
const maxRadio = maxElement.querySelector("input[type='radio'][name='en__pg']");
-
if (maxRadio) {
window.maxTheirGift = getProdVarId(maxRadio.value);
}
}
- } // Re-select the previously selected gift when gift list is re-rendered
- // If gift no longer exists, choose maximize my gift
-
+ }
+ // Re-select the previously selected gift when gift list is re-rendered
+ // If gift no longer exists, choose maximize my gift
if (selectedPremiumId && selectedVariantId) {
const selectedGift = document.querySelector(`input[type="radio"][name="en__pg"][value="${selectedPremiumId}"]`);
-
if (selectedGift) {
selectedGift.click();
window.setTimeout(() => {
@@ -23998,8 +24696,8 @@ const customScript = function (App, DonationFrequency) {
maxMyGift();
}
}
- }); // Start observing the target node for configured mutations
-
+ });
+ // Start observing the target node for configured mutations
observer.observe(premiumBlock, {
attributes: true,
childList: true,
@@ -24007,17 +24705,14 @@ const customScript = function (App, DonationFrequency) {
});
}
}
-
let enFieldPhoneNumber = document.querySelector(".en__field--phoneNumber2 input#en__field_supporter_phoneNumber2");
-
if (enFieldPhoneNumber) {
enFieldPhoneNumber.placeholder = "000-000-0000";
- } // App.setBodydata("client-js-loading", "finished");
-
+ }
+ // App.setBodydata("client-js-loading", "finished");
const ccvvLabel = document.querySelector(".en__field--ccvv > label");
const titleLabel = document.querySelector("[data-engrid-page-type='emailtotarget'] .en__field--title.en__mandatory > label");
-
if (ccvvLabel || titleLabel) {
App.loadJS("https://unpkg.com/@popperjs/core@2", () => {
App.loadJS("https://unpkg.com/tippy.js@6", () => {
@@ -24040,7 +24735,6 @@ const customScript = function (App, DonationFrequency) {
content: "The three or four digit security code on your debit or credit card to verify transactions when your card is not present."
});
}
-
if (titleLabel) {
let link = document.createElement("a");
link.href = "#";
@@ -24063,81 +24757,77 @@ const customScript = function (App, DonationFrequency) {
});
});
}
-
const fillCount = document.querySelector(".enWidget__fill__count") ? document.querySelector(".enWidget__fill__count").innerText : 0;
const supportersBar = document.querySelector(".progress-bar_supporters strong");
-
if (supportersBar) {
supportersBar.innerText = fillCount;
}
-
window.addEventListener("load", () => {
const enWidgetFillWidth = document.querySelector(".enWidget__fill") ? document.querySelector(".enWidget__fill").style.width : null;
-
if (enWidgetFillWidth == "100%") {
const enWidgetDisplay = document.querySelector(".enWidget__display");
-
if (enWidgetDisplay) {
enWidgetDisplay.classList.add("enWidget__display_full");
}
}
});
-
function LauncherWidthWatcher() {
// Select the #launcher and .engrid-mobile-cta-container elements
this.launcher = document.querySelector("#launcher");
- this.engridMobileCTAContainer = document.querySelector(".engrid-mobile-cta-container"); // If both elements are present, set the custom property and add event listeners
+ this.engridMobileCTAContainer = document.querySelector(".engrid-mobile-cta-container");
+ // If both elements are present, set the custom property and add event listeners
if (this.launcher && this.engridMobileCTAContainer) {
this.setCustomProperty();
this.addEventListeners();
}
- } // Set the CSS custom property on .engrid-mobile-cta-container based on the width of #launcher
-
+ }
+ // Set the CSS custom property on .engrid-mobile-cta-container based on the width of #launcher
LauncherWidthWatcher.prototype.setCustomProperty = function () {
if (!this.launcher || !this.engridMobileCTAContainer) return;
var launcherWidth = this.launcher.clientWidth;
this.engridMobileCTAContainer.style.setProperty("--launcher-width", launcherWidth + "px");
- }; // Add event listeners to update the custom property when the width of #launcher changes
-
+ };
+ // Add event listeners to update the custom property when the width of #launcher changes
LauncherWidthWatcher.prototype.addEventListeners = function () {
- if (!this.launcher) return; // Create a ResizeObserver to listen for changes in the width of #launcher
+ if (!this.launcher) return;
+ // Create a ResizeObserver to listen for changes in the width of #launcher
var resizeObserver = new ResizeObserver(function () {
// Update the custom property when the width of #launcher changes
this.setCustomProperty();
- }.bind(this)); // Observe the #launcher element for changes in its size
+ }.bind(this));
+ // Observe the #launcher element for changes in its size
resizeObserver.observe(this.launcher);
- }; // Function to initialize the LauncherWidthWatcher when the #launcher element is present
-
+ };
+ // Function to initialize the LauncherWidthWatcher when the #launcher element is present
function initLauncherWidthWatcher() {
if (document.querySelector("#launcher")) {
var launcherWidthWatcher = new LauncherWidthWatcher();
} else {
setTimeout(initLauncherWidthWatcher, 100);
}
- } // Use a MutationObserver to watch for changes in the DOM
-
+ }
+ // Use a MutationObserver to watch for changes in the DOM
var observer = new MutationObserver(initLauncherWidthWatcher);
observer.observe(document.body, {
childList: true,
subtree: true
- }); // On eCard pages, change the label of the "Add contact" button
+ });
+ // On eCard pages, change the label of the "Add contact" button
const ecardAddRecipeintButton = document.querySelector(".en__ecarditems__addrecipient");
-
if (ecardAddRecipeintButton) {
ecardAddRecipeintButton.textContent = isSpanish ? "Agrega destinatario" : "Add recipient";
- } // On eCard pages, add a label to the recipients list
-
+ }
+ // On eCard pages, add a label to the recipients list
const ecardRecipientList = document.querySelector(".en__ecardrecipients__list");
-
if (ecardRecipientList) {
const label = document.createElement("h2");
label.textContent = isSpanish ? "Lista de contactos" : "Recipients list";
@@ -24145,27 +24835,30 @@ const customScript = function (App, DonationFrequency) {
label.setAttribute("for", "en__ecardrecipients__list");
ecardRecipientList.setAttribute("aria-labelledby", "recipients-list-label");
ecardRecipientList.parentNode.insertBefore(label, ecardRecipientList);
- } //On eCard pages, move the "Add recipients" button out of its current wrapper and add supporting button classes
-
+ }
+ //On eCard pages, move the "Add recipients" button out of its current wrapper and add supporting button classes
const addRecipientButton = document.querySelector(".en__ecarditems__addrecipient");
const emailDiv = document.querySelector(".en__ecardrecipients__email");
-
if (addRecipientButton && emailDiv) {
addRecipientButton.classList.add("button");
const wrapperDiv = document.createElement("div");
- wrapperDiv.classList.add("en__ecardrecipients__button"); // Remove the button from its current position
+ wrapperDiv.classList.add("en__ecardrecipients__button");
- addRecipientButton.parentNode.removeChild(addRecipientButton); // Wrap the button with the new div
+ // Remove the button from its current position
+ addRecipientButton.parentNode.removeChild(addRecipientButton);
- wrapperDiv.appendChild(addRecipientButton); // Insert the wrapped button after the email div
+ // Wrap the button with the new div
+ wrapperDiv.appendChild(addRecipientButton);
+ // Insert the wrapped button after the email div
emailDiv.parentNode.insertBefore(wrapperDiv, emailDiv.nextSibling);
- } // On eCard pages, when the "Add recipients" button is clicked, remove any values in the Add Recipient Name and Email field
+ }
+
+ // On eCard pages, when the "Add recipients" button is clicked, remove any values in the Add Recipient Name and Email field
// Hide the recipients list header and list until there are recipients added
// On eCard pages, simulate full field errors on the eCard Recipient name field and email field
-
const addRecipientButton2 = document.querySelector(".en__ecarditems__addrecipient");
const nameInput = document.querySelector(".en__ecardrecipients__name input");
const emailInput = document.querySelector(".en__ecardrecipients__email input");
@@ -24173,41 +24866,36 @@ const customScript = function (App, DonationFrequency) {
const recipientsListLabel = document.querySelector("#recipients-list-label");
const emailParent = document.querySelector(".en__ecardrecipients__email");
const nameParent = document.querySelector(".en__ecardrecipients__name");
-
if (addRecipientButton2 && nameInput && emailInput && recipientsList && recipientsListLabel && emailParent && nameParent) {
let previousRecipientCount = document.querySelectorAll(".en__ecardrecipients__recipient .ecardrecipient__email").length;
-
const clearInputs = () => {
let currentRecipientCount = document.querySelectorAll(".en__ecardrecipients__recipient .ecardrecipient__email").length;
-
if (currentRecipientCount > previousRecipientCount) {
nameInput.value = "";
emailInput.value = "";
}
-
previousRecipientCount = currentRecipientCount;
};
-
addRecipientButton2.addEventListener("click", clearInputs);
addRecipientButton2.addEventListener("touchend", clearInputs);
addRecipientButton2.addEventListener("keydown", clearInputs);
-
const toggleElementsVisibility = () => {
const displayValue = recipientsList.innerHTML.trim() ? "block" : "none";
recipientsListLabel.style.display = displayValue;
recipientsList.style.display = displayValue;
- }; // Initially set the visibility of the label and the recipients list
-
+ };
- toggleElementsVisibility(); // Create a MutationObserver instance to monitor changes in the content of the recipients list
+ // Initially set the visibility of the label and the recipients list
+ toggleElementsVisibility();
- const listObserver = new MutationObserver(toggleElementsVisibility); // Start observing the recipients list for changes in its content
+ // Create a MutationObserver instance to monitor changes in the content of the recipients list
+ const listObserver = new MutationObserver(toggleElementsVisibility);
+ // Start observing the recipients list for changes in its content
listObserver.observe(recipientsList, {
childList: true,
subtree: true
});
-
const toggleValidationClass = (element, parent) => mutations => {
for (const mutation of mutations) {
if (mutation.type === "attributes" && mutation.attributeName === "class") {
@@ -24218,96 +24906,85 @@ const customScript = function (App, DonationFrequency) {
}
}
}
- }; // Create MutationObserver instances to monitor changes in the input's attributes
-
+ };
+ // Create MutationObserver instances to monitor changes in the input's attributes
const inputObserver1 = new MutationObserver(toggleValidationClass(emailInput, emailParent));
- const inputObserver2 = new MutationObserver(toggleValidationClass(nameInput, nameParent)); // Start observing the inputs for changes in their attributes
+ const inputObserver2 = new MutationObserver(toggleValidationClass(nameInput, nameParent));
+ // Start observing the inputs for changes in their attributes
inputObserver1.observe(emailInput, {
attributes: true
});
inputObserver2.observe(nameInput, {
attributes: true
});
- } // Inserts a email subscription nudge after the element with the 'universal-opt-in' class
-
+ }
+ // Inserts a email subscription nudge after the element with the 'universal-opt-in' class
const universalOptInFieldClasses = document.querySelector(".universal-opt-in > .en__field")?.classList;
-
if (universalOptInFieldClasses) {
const optInClass = [...universalOptInFieldClasses].find(className => {
return className.startsWith("en__field--") && !isNaN(Number(className.replace("en__field--", "")));
});
-
if (optInClass) {
const showHideClassName = `engrid__supporterquestions${optInClass.replace("en__field--", "")}-N`;
App.addHtml(`
`, ".universal-opt-in", "after");
}
}
-
function hideOptInDependentElements() {
// If the SMS opt-in does not appear on the page hide the Mobile Phone Number field and its disclosure
let smsOptIn = document.querySelector(".en__field--600302");
let phoneNumberField = document.querySelector(".en__field--phoneNumber2");
let smsDisclosure = document.querySelector(".sms-disclosure");
-
if (!smsOptIn && phoneNumberField && smsDisclosure) {
phoneNumberField.classList.add("hide");
smsDisclosure.classList.add("hide");
}
- } // Call the function
+ }
+ // Call the function
+ hideOptInDependentElements();
- hideOptInDependentElements(); // GTM / GA / GCLID Retrieval and Population
+ // GTM / GA / GCLID Retrieval and Population
// Get GCLID from Local Storage
-
const getGclidFromLocalStorage = () => {
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
-
if (key && key.includes("gclid")) {
return localStorage.getItem(key);
}
}
-
return null;
- }; // Get GCLID from GAC cookie
-
+ };
+ // Get GCLID from GAC cookie
const getGclidFromCookie = () => {
const match = document.cookie.match("(^|;)\\s*_glc_aw\\s*=\\s*([^;]+)");
return match ? match.pop() : null;
- }; // Get GCLID from URL
-
+ };
+ // Get GCLID from URL
const getGclidFromUrl = () => {
const url = window.location.href;
let gclid = null;
-
if (url.includes("gclid")) {
const urlParts = url.split("gclid=");
-
if (urlParts[1]) {
gclid = urlParts[1].split("&")[0];
}
}
-
return gclid;
};
-
const handleGclid = () => {
try {
// Check if .en__submit exists on the page
if (!document.querySelector(".en__submit")) {
return;
}
-
const gclid = getGclidFromLocalStorage() || getGclidFromCookie() || getGclidFromUrl();
-
if (gclid) {
const transactionField = document.querySelector('input[name="transaction.othamt4"]');
-
if (transactionField) {
transactionField.value = gclid;
} else {
@@ -24320,7 +24997,6 @@ const customScript = function (App, DonationFrequency) {
`;
const submitButton = document.querySelector(".en__submit");
-
if (submitButton) {
submitButton.insertAdjacentHTML("afterend", transactionHTML);
} else {
@@ -24333,9 +25009,9 @@ const customScript = function (App, DonationFrequency) {
} catch (error) {
console.error("Error handling GCLID:", error);
}
- }; // Add a listener for when GA4 is loaded
-
+ };
+ // Add a listener for when GA4 is loaded
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "gtm.js",
@@ -24345,41 +25021,44 @@ const customScript = function (App, DonationFrequency) {
window.dataLayer.push({
event: "GA4_loaded",
callback: handleGclid
- }); // Fallback to check for GCLID once the page has finished loading
+ });
- window.addEventListener("load", handleGclid); // Perform an immediate check for the GCLID
+ // Fallback to check for GCLID once the page has finished loading
+ window.addEventListener("load", handleGclid);
+ // Perform an immediate check for the GCLID
handleGclid();
+
/**
* Function to rearrange eCard related elements on the page.
* Moves .en__ecarditems__action to come after .en__ecardmessage and
* moves .en__ecardrecipients__futureDelivery to come after .en__ecardrecipients.
*/
-
function rearrangeEcardElements() {
// Get the elements
const ecardItemsAction = document.querySelector(".en__ecarditems__action");
const ecardMessage = document.querySelector(".en__ecardmessage");
const ecardRecipientsFutureDelivery = document.querySelector(".en__ecardrecipients__futureDelivery");
- const ecardRecipients = document.querySelector(".en__ecardrecipients"); // Move .en__ecarditems__action so it comes after .en__ecardmessage
+ const ecardRecipients = document.querySelector(".en__ecardrecipients");
+ // Move .en__ecarditems__action so it comes after .en__ecardmessage
if (ecardItemsAction && ecardMessage) {
ecardMessage.insertAdjacentElement("afterend", ecardItemsAction);
- } // Move .en__ecardrecipients__futureDelivery so it comes after .en__ecardrecipients
-
+ }
+ // Move .en__ecardrecipients__futureDelivery so it comes after .en__ecardrecipients
if (ecardRecipientsFutureDelivery && ecardRecipients) {
ecardRecipients.insertAdjacentElement("afterend", ecardRecipientsFutureDelivery);
}
- } // Call the function
+ }
+ // Call the function
+ rearrangeEcardElements();
- rearrangeEcardElements(); // Prevents the Credit Card field value from incrementing/decrementing when scrolling up/down if it's of type="number"
+ // Prevents the Credit Card field value from incrementing/decrementing when scrolling up/down if it's of type="number"
// REF: https://stackoverflow.com/questions/9712295/disable-scrolling-on-input-type-number
// 4Site Note: We suggest the CC field by type="tel" which would remove the need for this and provide other benefits
-
let ccNumberField = document.querySelector('input[name="transaction.ccnumber"]');
-
if (ccNumberField) {
ccNumberField.addEventListener("wheel", () => {
ccNumberField.blur();
@@ -24387,426 +25066,120 @@ const customScript = function (App, DonationFrequency) {
passive: true
});
}
-
if (pageJson && (pageJson.pageType === "premiumgift" || pageJson.pageType === "donation") && pageJson.pageNumber === 1) {
window.zE || function (e, t, s) {
var n = window.zE = window.zEmbed = function () {
- n._.push(arguments);
- },
- a = n.s = e.createElement(t),
- r = e.getElementsByTagName(t)[0];
-
+ n._.push(arguments);
+ },
+ a = n.s = e.createElement(t),
+ r = e.getElementsByTagName(t)[0];
n.set = function (e) {
n.set._.push(e);
}, n._ = [], n.set._ = [], a.async = true, a.setAttribute("charset", "utf-8"), a.src = "https://static.zdassets.com/ekr/asset_composer.js?key=" + s, n.t = +new Date(), a.type = "text/javascript", r.parentNode.insertBefore(a, r);
}(document, "script", "7f237240-f3c5-4922-aa1f-b4c70aa52d65");
- } // Check if '.en__ecarditems__preview' exists in the page
-
+ }
+ // Check if '.en__ecarditems__preview' exists in the page
const eCardPreview = document.querySelector(".en__ecarditems__preview");
-
if (eCardPreview) {
// Add 'data-ecard-preview' attribute to the body
- document.body.setAttribute("data-ecard-preview", ""); // Function to set 'data-ecard-preview' value based on '.preview--show' class
+ document.body.setAttribute("data-ecard-preview", "");
+ // Function to set 'data-ecard-preview' value based on '.preview--show' class
const setEcardPreviewAttribute = () => {
if (eCardPreview.classList.contains("preview--show")) {
document.body.setAttribute("data-ecard-preview", "visible");
} else {
document.body.setAttribute("data-ecard-preview", "hidden");
}
- }; // Initial setting of 'data-ecard-preview' value
-
-
- setEcardPreviewAttribute(); // Create a MutationObserver instance to monitor changes in '.en__ecarditems__preview' class
-
- const observer = new MutationObserver(setEcardPreviewAttribute); // Start observing '.en__ecarditems__preview' for changes in its class
-
- observer.observe(eCardPreview, {
- attributes: true,
- attributeFilter: ["class"]
- });
- } // Create the Other 3 field if the payment type exists and the Other 3 field does not
-
-
- const createOther3Field = () => {
- const paymentType = document.querySelector("#en__field_transaction_paymenttype");
- const other3Field = document.querySelector('input[name="transaction.othamt3"]');
- const vgsField = document.querySelector(".en__field--vgs");
-
- if (paymentType && !other3Field) {
- const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
- const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
- const formBlock = document.createElement("div");
- formBlock.classList.add("en__component", "en__component--formblock", "hide");
- const textField = document.createElement("div");
- textField.classList.add("en__field", "en__field--text");
- const textElement = document.createElement("div");
- textElement.classList.add("en__field__element", "en__field__element--text");
- const inputField = document.createElement("input");
- inputField.setAttribute("type", "text");
- inputField.classList.add("en__field__input", "en__field__input--text", "foursite-engrid-added-input");
- inputField.setAttribute("name", "transaction.othamt3");
- inputField.setAttribute("value", vgsField ? "card" : ""); // Set the default value to card (VGS won't change the payment type)
-
- if (App.debug) {
- inputField.style.width = "100%";
- inputField.setAttribute("placeholder", "Payment Type Details (Other 3)");
- }
-
- textElement.appendChild(inputField);
- textField.appendChild(textElement);
- formBlock.appendChild(textField);
- const paymentElement = paymentType.closest(".en__component");
-
- if (paymentElement) {
- // Insert the new field after the submit button
- paymentElement.parentNode?.insertBefore(formBlock, paymentElement.nextSibling);
- } else {
- const form = document.querySelector("form");
-
- if (form) {
- form.appendChild(formBlock);
- }
- } // Set the value of the Other 3 field to the value of the Payment Type field
- // When the Payment Type field changes, update the Other 3 field
-
-
- paymentType.addEventListener("change", () => {
- const other3Field = document.querySelector('input[name="transaction.othamt3"]');
-
- if (!other3Field) {
- return;
- }
-
- if (paymentType.value === "stripedigitalwallet") {
- // Set applepay if using IOS or Safari, otherwise set googlepay
- other3Field.value = isIOS || isSafari ? "applepay" : "googlepay";
- } else {
- other3Field.value = vgsField && paymentType.value === "visa" ? "card" : paymentType.value;
- }
- });
- }
- }; // Call the function
-
-
- createOther3Field();
- const amountNudge = document.querySelector(".amount-nudge:not(.arrow-up)");
-
- if (amountNudge && recurrFrequencyField) {
- recurrFrequencyField.insertAdjacentElement("beforeend", amountNudge);
- } // Add logo for no header style
-
-
- if (window.wwfHeaderStyle && window.wwfHeaderStyle === "None") {
- const bodyTitle = document.querySelector(".body-title > .en__component");
- bodyTitle?.insertAdjacentHTML("afterbegin", ``);
- const contentHeader = document.querySelector(".content-header");
- contentHeader?.insertAdjacentHTML("afterbegin", ``);
- }
-};
-;// CONCATENATED MODULE: ./src/scripts/page-header-footer.js
-const pageHeaderFooter = function (App) {
- // 4Site Code Start
- const searchBtn = document.querySelector(".search-btn");
-
- if (searchBtn) {
- searchBtn.addEventListener("click", function (e) {
- e.preventDefault();
- window.location.href = "https://www.worldwildlife.org/search";
- });
- } // Converted to Vanilla JS and moved into Page Template
- // if ("wwfHeader" in window) {
- // let wwfHeader = window.wwfHeader;
- // const contentHeader = document.querySelector(".content-header");
- // if (contentHeader) {
- // const shadedLight = document.createElement("div");
- // shadedLight.classList.add("shaded-light-pattern");
- // if (wwfHeader.toLowerCase().includes("panda")) {
- // shadedLight.classList.add("panda-nation");
- // wwfHeader = `PandaNation`;
- // }
- // shadedLight.innerHTML = `
- //
\n `;this.overlay.innerHTML=s;const o=this.overlay.querySelector("#goMonthlyClose"),r=this.overlay.querySelector("#upsellYesButton a"),a=this.overlay.querySelector("#upsellNoButton button");r.addEventListener("click",this.continue.bind(this)),a.addEventListener("click",this.continue.bind(this)),o&&o.addEventListener("click",this.close.bind(this)),this.overlay.addEventListener("click",(e=>{e.target instanceof Element&&e.target.id==this.overlay.id&&this.options.canClose&&this.close(e)})),document.addEventListener("keyup",(e=>{"Escape"===e.key&&o&&o.click()})),document.body.appendChild(this.overlay);const l=document.querySelector("#secondOtherField");l&&l.addEventListener("keyup",this.popupOtherField.bind(this)),this.logger.log("Upsell script rendered")}shouldRun(){return!this.shouldSkip()&&"EngridUpsell"in window&&!!window.pageJson&&1==window.pageJson.pageNumber&&["donation","premiumgift"].includes(window.pageJson.pageType)}shouldSkip(){return!(!("EngridUpsell"in window)||!window.EngridUpsell.skipUpsell)||this.options.skipUpsell}popupOtherField(){var e,t;const n=parseFloat(null!==(t=null===(e=this.overlay.querySelector("#secondOtherField"))||void 0===e?void 0:e.value)&&void 0!==t?t:""),i=document.querySelectorAll("#upsellYesButton .upsell_suggestion"),s=this.getUpsellAmount();!isNaN(n)&&n>0?this.checkOtherAmount(n):this.checkOtherAmount(s),i.forEach((e=>e.innerHTML=this.getAmountTxt(s+this._fees.calculateFees(s))))}liveAmounts(){const e=document.querySelectorAll(".upsell_suggestion"),t=document.querySelectorAll(".upsell_amount"),n=this.getUpsellAmount(),i=n+this._fees.calculateFees(n);e.forEach((e=>e.innerHTML=this.getAmountTxt(i))),t.forEach((e=>e.innerHTML=this.getAmountTxt(this._amount.amount+this._fees.fee)))}liveFrequency(){document.querySelectorAll(".upsell_frequency").forEach((e=>e.innerHTML=this.getFrequencyTxt()))}getUpsellAmount(){var e,t;const n=this._amount.amount,i=parseFloat(null!==(t=null===(e=this.overlay.querySelector("#secondOtherField"))||void 0===e?void 0:e.value)&&void 0!==t?t:"");if(i>0)return i>this.options.minAmount?i:this.options.minAmount;let s=0;for(let e=0;ethis.options.minAmount?s:this.options.minAmount}shouldOpen(){const e=this.getUpsellAmount(),t=m.getFieldValue("transaction.paymenttype")||"";return this._suggestAmount=e,!(!this.freqAllowed()||this.shouldSkip()||this.options.disablePaymentMethods.includes(t.toLowerCase())||this.overlay.classList.contains("is-submitting")||!(e>0))&&(this.logger.log("Upsell Frequency "+this._frequency.frequency),this.logger.log("Upsell Amount "+this._amount.amount),this.logger.log("Upsell Suggested Amount "+e),!0)}freqAllowed(){const e=this._frequency.frequency,t=[];return this.options.oneTime&&t.push("onetime"),this.options.annual&&t.push("annual"),t.includes(e)}open(){if(this.logger.log("Upsell script opened"),!this.shouldOpen()){let e=window.sessionStorage.getItem("original");return e&&document.querySelectorAll(".en__errorList .en__error").length>0&&this.setOriginalAmount(e),this._form.submit=!0,!0}return this.liveAmounts(),this.liveFrequency(),this.overlay.classList.remove("is-hidden"),this._form.submit=!1,m.setBodyData("has-lightbox",""),!1}setOriginalAmount(e){if(this.options.upsellOriginalGiftAmountFieldName){let t=document.querySelector(".en__field__input.en__field__input--hidden[name='"+this.options.upsellOriginalGiftAmountFieldName+"']");if(!t){let e=document.querySelector("form.en__component--page");if(e){let n=document.createElement("input");n.setAttribute("type","hidden"),n.setAttribute("name",this.options.upsellOriginalGiftAmountFieldName),n.classList.add("en__field__input","en__field__input--hidden"),e.appendChild(n),t=document.querySelector('.en__field__input.en__field__input--hidden[name="'+this.options.upsellOriginalGiftAmountFieldName+'"]')}}t&&(window.sessionStorage.setItem("original",e),t.setAttribute("value",e))}}continue(e){var t;if(e.preventDefault(),e.target instanceof Element&&(null===(t=document.querySelector("#upsellYesButton"))||void 0===t?void 0:t.contains(e.target))){this.logger.success("Upsold"),this.setOriginalAmount(this._amount.amount.toString());const e=this.getUpsellAmount(),t=this._amount.amount;this._frequency.setFrequency("monthly"),this._amount.setAmount(e),this._dataLayer.addEndOfGiftProcessEvent("ENGRID_UPSELL",{eventValue:!0,originalAmount:t,upsoldAmount:e,frequency:"monthly"}),this._dataLayer.addEndOfGiftProcessVariable("ENGRID_UPSELL",!0),this._dataLayer.addEndOfGiftProcessVariable("ENGRID_UPSELL_ORIGINAL_AMOUNT",t),this._dataLayer.addEndOfGiftProcessVariable("ENGRID_UPSELL_DONATION_FREQUENCY","MONTHLY"),this.renderConversionField("upsellSuccess","onetime",t,"monthly",this._suggestAmount,"monthly",e)}else this.setOriginalAmount(""),window.sessionStorage.removeItem("original"),this._dataLayer.addEndOfGiftProcessVariable("ENGRID_UPSELL",!1),this._dataLayer.addEndOfGiftProcessVariable("ENGRID_UPSELL_DONATION_FREQUENCY","ONE-TIME"),this.renderConversionField("upsellFail",this._frequency.frequency,this._amount.amount,"monthly",this._suggestAmount,this._frequency.frequency,this._amount.amount);this._form.submitForm()}close(e){e.preventDefault(),this.overlay.classList.add("is-hidden"),m.setBodyData("has-lightbox",!1),this.options.submitOnClose?(this.renderConversionField("upsellFail",this._frequency.frequency,this._amount.amount,"monthly",this._suggestAmount,this._frequency.frequency,this._amount.amount),this._form.submitForm()):this._form.dispatchError()}getAmountTxt(e=0){var t,n,i,s;const o=null!==(t=m.getCurrencySymbol())&&void 0!==t?t:"$",r=null!==(n=m.getOption("DecimalSeparator"))&&void 0!==n?n:".",a=null!==(i=m.getOption("ThousandsSeparator"))&&void 0!==i?i:"",l=e%1==0?0:null!==(s=m.getOption("DecimalPlaces"))&&void 0!==s?s:2,c=m.formatNumber(e,l,r,a);return e>0?o+c:""}getFrequencyTxt(){const e={onetime:"one-time",monthly:"monthly",annual:"annual"},t=this._frequency.frequency;return t in e?e[t]:t}checkOtherAmount(e){const t=document.querySelector(".upsellOtherAmountInput");t&&(e>=this.options.minAmount?t.classList.remove("is-invalid"):t.classList.add("is-invalid"))}renderConversionField(e,t,n,i,s,o,r){if(""===this.options.conversionField)return;const a=document.querySelector("input[name='"+this.options.conversionField+"']")||m.createHiddenInput(this.options.conversionField);if(!a)return void this.logger.error("Could not find or create the conversion field");const l=`event:${e},freq:${t},amt:${n},sugFreq:${i},sugAmt:${s},subFreq:${o},subAmt:${r}`;a.value=l,this.logger.log(`Conversion Field ${e}`,l)}}class X{constructor(){this.checkboxOptions=!1,this.checkboxOptionsDefaults={label:"Make my gift a monthly gift of {new-amount}/mo",location:"before .en__component .en__submit",cssClass:""},this._amount=p.getInstance(),this._fees=f.getInstance(),this._frequency=g.getInstance(),this._dataLayer=ye.getInstance(),this.checkboxContainer=null,this.oldAmount=0,this.oldFrequency="one-time",this.resetCheckbox=!1,this.logger=new be("UpsellCheckbox","black","LemonChiffon","✅");let e="EngridUpsell"in window?window.EngridUpsell:{};this.options=Object.assign(Object.assign({},t),e),!1!==this.options.upsellCheckbox?("upsellCheckbox"in e&&!1!==e.upsellCheckbox&&(window.EngridUpsell.skipUpsell=!0),this.checkboxOptions=Object.assign(Object.assign({},this.checkboxOptionsDefaults),this.options.upsellCheckbox),this.shouldRun()?(this.renderCheckbox(),this.updateLiveData(),this._frequency.onFrequencyChange.subscribe((()=>this.updateLiveData())),this._frequency.onFrequencyChange.subscribe((()=>this.resetUpsellCheckbox())),this._amount.onAmountChange.subscribe((()=>this.updateLiveData())),this._amount.onAmountChange.subscribe((()=>this.resetUpsellCheckbox())),this._fees.onFeeChange.subscribe((()=>this.updateLiveData()))):this.logger.log("should NOT run")):this.logger.log("Skipped")}updateLiveData(){this.liveAmounts(),this.liveFrequency()}resetUpsellCheckbox(){var e,t;if(!this.resetCheckbox)return;this.logger.log("Reset");const n=null===(e=this.checkboxContainer)||void 0===e?void 0:e.querySelector("#upsellCheckbox");n&&(n.checked=!1),null===(t=this.checkboxContainer)||void 0===t||t.classList.add("recurring-frequency-y-hide"),this.oldAmount=0,this.oldFrequency="one-time",this.resetCheckbox=!1}renderCheckbox(){if(!1===this.checkboxOptions)return;const e=this.checkboxOptions.label.replace("{new-amount}"," ").replace("{old-amount}"," ").replace("{old-frequency}"," "),t=document.createElement("div");t.classList.add("en__component","en__component--formblock","recurring-frequency-y-hide","engrid-upsell-checkbox"),this.checkboxOptions.cssClass&&t.classList.add(this.checkboxOptions.cssClass),t.innerHTML=`\n
\n
\n
\n \n \n
\n
\n
`;const n=t.querySelector("#upsellCheckbox");n&&n.addEventListener("change",this.toggleCheck.bind(this));const i=this.checkboxOptions.location.split(" ")[0],s=this.checkboxOptions.location.split(" ").slice(1).join(" ").trim(),o=document.querySelector(s);this.checkboxContainer=t,o?"before"===i?(this.logger.log("rendered before"),o.before(t)):(this.logger.log("rendered after"),o.after(t)):this.logger.error("could not render - target not found")}shouldRun(){return 1===m.getPageNumber()&&"DONATION"===m.getPageType()}showCheckbox(){this.checkboxContainer&&this.checkboxContainer.classList.remove("hide")}hideCheckbox(){this.checkboxContainer&&this.checkboxContainer.classList.add("hide")}liveAmounts(){if("onetime"!==this._frequency.frequency)return;const e=document.querySelectorAll(".upsell_suggestion"),t=document.querySelectorAll(".upsell_amount"),n=this.getUpsellAmount(),i=n+this._fees.calculateFees(n);i>0?this.showCheckbox():this.hideCheckbox(),e.forEach((e=>e.innerHTML=this.getAmountTxt(i))),t.forEach((e=>e.innerHTML=this.getAmountTxt(this._amount.amount+this._fees.fee)))}liveFrequency(){document.querySelectorAll(".upsell_frequency").forEach((e=>e.innerHTML=this.getFrequencyTxt()))}getUpsellAmount(){const e=this._amount.amount;let t=0;for(let n=0;nthis.options.minAmount?t:this.options.minAmount}toggleCheck(e){var t,n;if(e.preventDefault(),e.target.checked){this.logger.success("Upsold");const e=this.getUpsellAmount(),n=this._amount.amount;this.oldAmount=n,this.oldFrequency=this._frequency.frequency,null===(t=this.checkboxContainer)||void 0===t||t.classList.remove("recurring-frequency-y-hide"),this._frequency.setFrequency("monthly"),this._amount.setAmount(e),this._dataLayer.addEndOfGiftProcessEvent("ENGRID_UPSELL_CHECKBOX",{eventValue:!0,originalAmount:n,upsoldAmount:e,frequency:"monthly"}),this._dataLayer.addEndOfGiftProcessVariable("ENGRID_UPSELL_CHECKBOX",!0),this._dataLayer.addEndOfGiftProcessVariable("ENGRID_UPSELL_ORIGINAL_AMOUNT",n),this._dataLayer.addEndOfGiftProcessVariable("ENGRID_UPSELL_DONATION_FREQUENCY","MONTHLY"),this.renderConversionField("upsellSuccess","onetime",n,"monthly",e,"monthly",e),window.setTimeout((()=>{this.resetCheckbox=!0}),500)}else this.resetCheckbox=!1,this.logger.success("Not Upsold"),this._amount.setAmount(this.oldAmount),this._frequency.setFrequency(this.oldFrequency),null===(n=this.checkboxContainer)||void 0===n||n.classList.add("recurring-frequency-y-hide"),this._dataLayer.addEndOfGiftProcessVariable("ENGRID_UPSELL_CHECKBOX",!1),this._dataLayer.addEndOfGiftProcessVariable("ENGRID_UPSELL_DONATION_FREQUENCY","ONE-TIME"),this.renderConversionField("upsellFail",this._frequency.frequency,this._amount.amount,"monthly",this._amount.amount,this._frequency.frequency,this._amount.amount)}getAmountTxt(e=0){var t,n,i,s;const o=null!==(t=m.getCurrencySymbol())&&void 0!==t?t:"$",r=null!==(n=m.getOption("DecimalSeparator"))&&void 0!==n?n:".",a=null!==(i=m.getOption("ThousandsSeparator"))&&void 0!==i?i:"",l=e%1==0?0:null!==(s=m.getOption("DecimalPlaces"))&&void 0!==s?s:2,c=m.formatNumber(e,l,r,a);return e>0?o+c:""}getFrequencyTxt(){const e={onetime:"one-time",monthly:"monthly",annual:"annual"},t=this._frequency.frequency;return t in e?e[t]:t}renderConversionField(e,t,n,i,s,o,r){if(""===this.options.conversionField)return;const a=document.querySelector("input[name='"+this.options.conversionField+"']")||m.createHiddenInput(this.options.conversionField);if(!a)return void this.logger.error("Could not find or create the conversion field");const l=`event:${e},freq:${t},amt:${n},sugFreq:${i},sugAmt:${s},subFreq:${o},subAmt:${r}`;a.value=l,this.logger.log(`Conversion Field ${e}`,l)}}class Z{createDataAttributes(){this.elements.forEach((e=>{if(e instanceof HTMLInputElement){let t=e.value.replace(/\W/g,"");document.querySelectorAll("."+this.classes+t).forEach((e=>{if(e instanceof HTMLElement){const t=e.querySelectorAll("input[type='text'], input[type='number'], input[type='email'], select, textarea");t.length>0&&t.forEach((e=>{(e instanceof HTMLInputElement||e instanceof HTMLSelectElement)&&(e.hasAttribute("data-original-value")||e.setAttribute("data-original-value",e.value),e.hasAttribute("data-value")||e.setAttribute("data-value",e.value))}))}}))}}))}hideAll(){this.elements.forEach(((e,t)=>{e instanceof HTMLInputElement&&this.hide(e)}))}hide(e){let t=e.value.replace(/\W/g,"");document.querySelectorAll("."+this.classes+t).forEach((e=>{if(e instanceof HTMLElement){this.toggleValue(e,"hide"),e.style.display="none",this.logger.log("Hiding",e);const t=e.querySelector("input");t instanceof HTMLInputElement&&(t.setAttribute("aria-required","false"),this.logger.log("aria-required set to FALSE",t))}}))}show(e){let t=e.value.replace(/\W/g,"");document.querySelectorAll("."+this.classes+t).forEach((e=>{if(e instanceof HTMLElement){this.toggleValue(e,"show"),e.style.display="",this.logger.log("Showing",e);const t=e.querySelector("input");t instanceof HTMLInputElement&&(t.setAttribute("aria-required","true"),this.logger.log("aria-required set to TRUE",t))}})),"checkbox"!=e.type||e.checked||this.hide(e)}toggleValue(e,t){if("hide"==t&&!m.isVisible(e))return;this.logger.log(`toggleValue: ${t}`);const n=e.querySelectorAll("input[type='text'], input[type='number'], input[type='email'], select, textarea");n.length>0&&n.forEach((e=>{var n;if((e instanceof HTMLInputElement||e instanceof HTMLSelectElement)&&e.name){const i=m.getFieldValue(e.name),s=e.getAttribute("data-original-value"),o=null!==(n=e.getAttribute("data-value"))&&void 0!==n?n:"";"hide"===t?(e.setAttribute("data-value",i),m.setFieldValue(e.name,s)):m.setFieldValue(e.name,o)}}))}getSessionState(){var e;try{const t=null!==(e=window.sessionStorage.getItem("engrid_ShowHideRadioCheckboxesState"))&&void 0!==e?e:"";return JSON.parse(t)}catch(e){return[]}}storeSessionState(){const e=this.getSessionState();[...this.elements].forEach((t=>{var n,i;t instanceof HTMLInputElement&&("radio"==t.type&&t.checked&&(e.forEach(((t,n)=>{t.class==this.classes&&e.splice(n,1)})),e.push({page:m.getPageID(),class:this.classes,value:t.value}),this.logger.log("storing radio state",e[e.length-1])),"checkbox"==t.type&&(e.forEach(((t,n)=>{t.class==this.classes&&e.splice(n,1)})),e.push({page:m.getPageID(),class:this.classes,value:null!==(i=null===(n=[...this.elements].find((e=>e.checked)))||void 0===n?void 0:n.value)&&void 0!==i?i:"N"}),this.logger.log("storing checkbox state",e[e.length-1])))})),window.sessionStorage.setItem("engrid_ShowHideRadioCheckboxesState",JSON.stringify(e))}constructor(e,t){this.logger=new be("ShowHideRadioCheckboxes","black","lightblue","👁"),this.elements=document.getElementsByName(e),this.classes=t,this.createDataAttributes(),this.hideAll(),this.storeSessionState();for(let e=0;e{this.hideAll(),this.show(t),this.storeSessionState()}))}}}function Q(e,t){if(!t)return"";let n="; "+e;return!0===t?n:n+"="+t}function ee(e,t,n){return encodeURIComponent(e).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/\(/g,"%28").replace(/\)/g,"%29")+"="+encodeURIComponent(t).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent)+function(e){if("number"==typeof e.expires){let t=new Date;t.setMilliseconds(t.getMilliseconds()+864e5*e.expires),e.expires=t}return Q("Expires",e.expires?e.expires.toUTCString():"")+Q("Domain",e.domain)+Q("Path",e.path)+Q("Secure",e.secure)+Q("SameSite",e.sameSite)}(n)}function te(){return function(e){let t={},n=e?e.split("; "):[],i=/(%[\dA-F]{2})+/gi;for(let e=0;e0){this.countriesSelect.forEach((e=>{e.addEventListener("change",this.translateFields.bind(this,e.name)),e.value&&(t[e.name]=e.value);const n=document.querySelector(`select[name="${this.countryToStateFields[e.name]}"]`);n&&(n.addEventListener("change",this.rememberState.bind(this,e.name)),n.value&&(t[n.name]=n.value))})),this.translateFields("supporter.country");if(!!(!m.checkNested(window.EngagingNetworks,"require","_defined","enjs","checkSubmissionFailed")||!window.EngagingNetworks.require._defined.enjs.checkSubmissionFailed()))for(let e in t)m.setFieldValue(e,t[e],!1)}}translateFields(e="supporter.country"){this.resetTranslatedFields();const t=m.getFieldValue(e);if(this.setStateField(t,this.countryToStateFields[e]),"supporter.country"===e){t in this.options&&this.options[t].forEach((e=>{this.translateField(e.field,e.translation)}));const e=document.querySelectorAll(".recipient-block");if(e.length)switch(t){case"FR":case"FRA":case"France":e.forEach((e=>e.innerHTML="À:"));break;case"DE":case"DEU":case"Germany":e.forEach((e=>e.innerHTML="Zu:"));break;case"NL":case"NLD":case"Netherlands":e.forEach((e=>e.innerHTML="Aan:"))}}}translateField(e,t){const n=document.querySelector(`[name="${e}"]`);if(n){const e=n.closest(".en__field");if(e){const i=e.querySelector(".en__field__label"),s=i.querySelector(".engrid-simple-country");let o=s?s.cloneNode(!0):null;n instanceof HTMLInputElement&&""!=n.placeholder&&(i&&i.innerHTML!=n.placeholder||(n.dataset.original=n.placeholder,n.placeholder=t)),i&&(i.dataset.original=i.innerHTML,i.innerHTML=t,o&&i.appendChild(o))}}}resetTranslatedFields(){document.querySelectorAll("[data-original]").forEach((e=>{if(e instanceof HTMLInputElement&&e.dataset.original)e.placeholder=e.dataset.original;else{const t=e.querySelector(".engrid-simple-country");let n=t?t.cloneNode(!0):null;e.innerHTML=e.dataset.original,n&&e.appendChild(n)}e.removeAttribute("data-original")}))}setStateField(e,t){switch(e){case"ES":case"ESP":case"Spain":this.setStateValues(t,"Provincia",null);break;case"BR":case"BRA":case"Brazil":this.setStateValues(t,"Estado",null);break;case"FR":case"FRA":case"France":this.setStateValues(t,"Région",null);break;case"GB":case"GBR":case"United Kingdom":this.setStateValues(t,"State/Region",null);break;case"DE":case"DEU":case"Germany":this.setStateValues(t,"Bundesland",null);break;case"NL":case"NLD":case"Netherlands":this.setStateValues(t,"Provincie",null);break;case"AU":case"AUS":this.setStateValues(t,"Province / State",[{label:"Select",value:""},{label:"New South Wales",value:"NSW"},{label:"Victoria",value:"VIC"},{label:"Queensland",value:"QLD"},{label:"South Australia",value:"SA"},{label:"Western Australia",value:"WA"},{label:"Tasmania",value:"TAS"},{label:"Northern Territory",value:"NT"},{label:"Australian Capital Territory",value:"ACT"}]);break;case"Australia":this.setStateValues(t,"Province / State",[{label:"Select",value:""},{label:"New South Wales",value:"New South Wales"},{label:"Victoria",value:"Victoria"},{label:"Queensland",value:"Queensland"},{label:"South Australia",value:"South Australia"},{label:"Western Australia",value:"Western Australia"},{label:"Tasmania",value:"Tasmania"},{label:"Northern Territory",value:"Northern Territory"},{label:"Australian Capital Territory",value:"Australian Capital Territory"}]);break;case"US":case"USA":this.setStateValues(t,"State",[{label:"Select State",value:""},{label:"Alabama",value:"AL"},{label:"Alaska",value:"AK"},{label:"Arizona",value:"AZ"},{label:"Arkansas",value:"AR"},{label:"California",value:"CA"},{label:"Colorado",value:"CO"},{label:"Connecticut",value:"CT"},{label:"Delaware",value:"DE"},{label:"District of Columbia",value:"DC"},{label:"Florida",value:"FL"},{label:"Georgia",value:"GA"},{label:"Hawaii",value:"HI"},{label:"Idaho",value:"ID"},{label:"Illinois",value:"IL"},{label:"Indiana",value:"IN"},{label:"Iowa",value:"IA"},{label:"Kansas",value:"KS"},{label:"Kentucky",value:"KY"},{label:"Louisiana",value:"LA"},{label:"Maine",value:"ME"},{label:"Maryland",value:"MD"},{label:"Massachusetts",value:"MA"},{label:"Michigan",value:"MI"},{label:"Minnesota",value:"MN"},{label:"Mississippi",value:"MS"},{label:"Missouri",value:"MO"},{label:"Montana",value:"MT"},{label:"Nebraska",value:"NE"},{label:"Nevada",value:"NV"},{label:"New Hampshire",value:"NH"},{label:"New Jersey",value:"NJ"},{label:"New Mexico",value:"NM"},{label:"New York",value:"NY"},{label:"North Carolina",value:"NC"},{label:"North Dakota",value:"ND"},{label:"Ohio",value:"OH"},{label:"Oklahoma",value:"OK"},{label:"Oregon",value:"OR"},{label:"Pennsylvania",value:"PA"},{label:"Rhode Island",value:"RI"},{label:"South Carolina",value:"SC"},{label:"South Dakota",value:"SD"},{label:"Tennessee",value:"TN"},{label:"Texas",value:"TX"},{label:"Utah",value:"UT"},{label:"Vermont",value:"VT"},{label:"Virginia",value:"VA"},{label:"Washington",value:"WA"},{label:"West Virginia",value:"WV"},{label:"Wisconsin",value:"WI"},{label:"Wyoming",value:"WY"},{label:"── US Territories ──",value:"",disabled:!0},{label:"American Samoa",value:"AS"},{label:"Guam",value:"GU"},{label:"Northern Mariana Islands",value:"MP"},{label:"Puerto Rico",value:"PR"},{label:"US Minor Outlying Islands",value:"UM"},{label:"Virgin Islands",value:"VI"},{label:"── Armed Forces ──",value:"",disabled:!0},{label:"Armed Forces Americas",value:"AA"},{label:"Armed Forces Africa",value:"AE"},{label:"Armed Forces Canada",value:"AE"},{label:"Armed Forces Europe",value:"AE"},{label:"Armed Forces Middle East",value:"AE"},{label:"Armed Forces Pacific",value:"AP"}]);break;case"United States":this.setStateValues(t,"State",[{label:"Select State",value:""},{label:"Alabama",value:"Alabama"},{label:"Alaska",value:"Alaska"},{label:"Arizona",value:"Arizona"},{label:"Arkansas",value:"Arkansas"},{label:"California",value:"California"},{label:"Colorado",value:"Colorado"},{label:"Connecticut",value:"Connecticut"},{label:"Delaware",value:"Delaware"},{label:"District of Columbia",value:"District of Columbia"},{label:"Florida",value:"Florida"},{label:"Georgia",value:"Georgia"},{label:"Hawaii",value:"Hawaii"},{label:"Idaho",value:"Idaho"},{label:"Illinois",value:"Illinois"},{label:"Indiana",value:"Indiana"},{label:"Iowa",value:"Iowa"},{label:"Kansas",value:"Kansas"},{label:"Kentucky",value:"Kentucky"},{label:"Louisiana",value:"Louisiana"},{label:"Maine",value:"Maine"},{label:"Maryland",value:"Maryland"},{label:"Massachusetts",value:"Massachusetts"},{label:"Michigan",value:"Michigan"},{label:"Minnesota",value:"Minnesota"},{label:"Mississippi",value:"Mississippi"},{label:"Missouri",value:"Missouri"},{label:"Montana",value:"Montana"},{label:"Nebraska",value:"Nebraska"},{label:"Nevada",value:"Nevada"},{label:"New Hampshire",value:"New Hampshire"},{label:"New Jersey",value:"New Jersey"},{label:"New Mexico",value:"New Mexico"},{label:"New York",value:"New York"},{label:"North Carolina",value:"North Carolina"},{label:"North Dakota",value:"North Dakota"},{label:"Ohio",value:"Ohio"},{label:"Oklahoma",value:"Oklahoma"},{label:"Oregon",value:"Oregon"},{label:"Pennsylvania",value:"Pennsylvania"},{label:"Rhode Island",value:"Rhode Island"},{label:"South Carolina",value:"South Carolina"},{label:"South Dakota",value:"South Dakota"},{label:"Tennessee",value:"Tennessee"},{label:"Texas",value:"Texas"},{label:"Utah",value:"Utah"},{label:"Vermont",value:"Vermont"},{label:"Virginia",value:"Virginia"},{label:"Washington",value:"Washington"},{label:"West Virginia",value:"West Virginia"},{label:"Wisconsin",value:"Wisconsin"},{label:"Wyoming",value:"Wyoming"},{label:"── US Territories ──",value:"",disabled:!0},{label:"American Samoa",value:"American Samoa"},{label:"Guam",value:"Guam"},{label:"Northern Mariana Islands",value:"Northern Mariana Islands"},{label:"Puerto Rico",value:"Puerto Rico"},{label:"US Minor Outlying Islands",value:"US Minor Outlying Islands"},{label:"Virgin Islands",value:"Virgin Islands"},{label:"── Armed Forces ──",value:"",disabled:!0},{label:"Armed Forces Americas",value:"Armed Forces Americas"},{label:"Armed Forces Africa",value:"Armed Forces Africa"},{label:"Armed Forces Canada",value:"Armed Forces Canada"},{label:"Armed Forces Europe",value:"Armed Forces Europe"},{label:"Armed Forces Middle East",value:"Armed Forces Middle East"},{label:"Armed Forces Pacific",value:"Armed Forces Pacific"}]);break;case"CA":case"CAN":this.setStateValues(t,"Province / Territory",[{label:"Select",value:""},{label:"Alberta",value:"AB"},{label:"British Columbia",value:"BC"},{label:"Manitoba",value:"MB"},{label:"New Brunswick",value:"NB"},{label:"Newfoundland and Labrador",value:"NL"},{label:"Northwest Territories",value:"NT"},{label:"Nova Scotia",value:"NS"},{label:"Nunavut",value:"NU"},{label:"Ontario",value:"ON"},{label:"Prince Edward Island",value:"PE"},{label:"Quebec",value:"QC"},{label:"Saskatchewan",value:"SK"},{label:"Yukon",value:"YT"}]);break;case"Canada":this.setStateValues(t,"Province / Territory",[{label:"Select",value:""},{label:"Alberta",value:"Alberta"},{label:"British Columbia",value:"British Columbia"},{label:"Manitoba",value:"Manitoba"},{label:"New Brunswick",value:"New Brunswick"},{label:"Newfoundland and Labrador",value:"Newfoundland and Labrador"},{label:"Northwest Territories",value:"Northwest Territories"},{label:"Nova Scotia",value:"Nova Scotia"},{label:"Nunavut",value:"Nunavut"},{label:"Ontario",value:"Ontario"},{label:"Prince Edward Island",value:"Prince Edward Island"},{label:"Quebec",value:"Quebec"},{label:"Saskatchewan",value:"Saskatchewan"},{label:"Yukon",value:"Yukon"}]);break;case"MX":case"MEX":this.setStateValues(t,"Estado",[{label:"Seleccione Estado",value:""},{label:"Aguascalientes",value:"AGU"},{label:"Baja California",value:"BCN"},{label:"Baja California Sur",value:"BCS"},{label:"Campeche",value:"CAM"},{label:"Chiapas",value:"CHP"},{label:"Ciudad de Mexico",value:"CMX"},{label:"Chihuahua",value:"CHH"},{label:"Coahuila",value:"COA"},{label:"Colima",value:"COL"},{label:"Durango",value:"DUR"},{label:"Guanajuato",value:"GUA"},{label:"Guerrero",value:"GRO"},{label:"Hidalgo",value:"HID"},{label:"Jalisco",value:"JAL"},{label:"Michoacan",value:"MIC"},{label:"Morelos",value:"MOR"},{label:"Nayarit",value:"NAY"},{label:"Nuevo Leon",value:"NLE"},{label:"Oaxaca",value:"OAX"},{label:"Puebla",value:"PUE"},{label:"Queretaro",value:"QUE"},{label:"Quintana Roo",value:"ROO"},{label:"San Luis Potosi",value:"SLP"},{label:"Sinaloa",value:"SIN"},{label:"Sonora",value:"SON"},{label:"Tabasco",value:"TAB"},{label:"Tamaulipas",value:"TAM"},{label:"Tlaxcala",value:"TLA"},{label:"Veracruz",value:"VER"},{label:"Yucatan",value:"YUC"},{label:"Zacatecas",value:"ZAC"}]);break;case"Mexico":this.setStateValues(t,"Estado",[{label:"Seleccione Estado",value:""},{label:"Aguascalientes",value:"Aguascalientes"},{label:"Baja California",value:"Baja California"},{label:"Baja California Sur",value:"Baja California Sur"},{label:"Campeche",value:"Campeche"},{label:"Chiapas",value:"Chiapas"},{label:"Ciudad de Mexico",value:"Ciudad de Mexico"},{label:"Chihuahua",value:"Chihuahua"},{label:"Coahuila",value:"Coahuila"},{label:"Colima",value:"Colima"},{label:"Durango",value:"Durango"},{label:"Guanajuato",value:"Guanajuato"},{label:"Guerrero",value:"Guerrero"},{label:"Hidalgo",value:"Hidalgo"},{label:"Jalisco",value:"Jalisco"},{label:"Michoacan",value:"Michoacan"},{label:"Morelos",value:"Morelos"},{label:"Nayarit",value:"Nayarit"},{label:"Nuevo Leon",value:"Nuevo Leon"},{label:"Oaxaca",value:"Oaxaca"},{label:"Puebla",value:"Puebla"},{label:"Queretaro",value:"Queretaro"},{label:"Quintana Roo",value:"Quintana Roo"},{label:"San Luis Potosi",value:"San Luis Potosi"},{label:"Sinaloa",value:"Sinaloa"},{label:"Sonora",value:"Sonora"},{label:"Tabasco",value:"Tabasco"},{label:"Tamaulipas",value:"Tamaulipas"},{label:"Tlaxcala",value:"Tlaxcala"},{label:"Veracruz",value:"Veracruz"},{label:"Yucatan",value:"Yucatan"},{label:"Zacatecas",value:"Zacatecas"}]);break;default:this.setStateValues(t,"Province / State",null)}}setStateValues(e,t,n){const i=m.getField(e),s=i?i.closest(".en__field"):null;if(s){const i=s.querySelector(".en__field__label"),o=s.querySelector(".en__field__element");if(i&&(i.innerHTML=t),o){const i=ne(`engrid-state-${e}`);if(null==n?void 0:n.length){const t=document.createElement("select");t.name=e,t.id="en__field_"+e.toLowerCase().replace(".","_"),t.classList.add("en__field__input"),t.classList.add("en__field__input--select"),t.autocomplete="address-level1";let s=!1;n.forEach((e=>{const n=document.createElement("option");n.value=e.value,n.innerHTML=e.label,i!==e.value||s||(n.selected=!0,s=!0),e.disabled&&(n.disabled=!0),t.appendChild(n)})),o.innerHTML="",o.appendChild(t),t.addEventListener("change",this.rememberState.bind(this,e)),t.dispatchEvent(new Event("change",{bubbles:!0}))}else{o.innerHTML="";const n=document.createElement("input");n.type="text",n.name=e,n.placeholder=t,n.id="en__field_"+e.toLowerCase().replace(".","_"),n.classList.add("en__field__input"),n.classList.add("en__field__input--text"),n.autocomplete="address-level1",i&&(n.value=i),o.appendChild(n),n.addEventListener("change",this.rememberState.bind(this,e))}}}}rememberState(e){const t=m.getField(e);t&&ie(`engrid-state-${t.name}`,t.value,{expires:1,sameSite:"none",secure:!0})}}class oe{constructor(){this._countryEvent=v.getInstance(),this.countryWrapper=document.querySelector(".simple_country_select"),this.countrySelect=this._countryEvent.countryField,this.country=null;const e=ne("engrid-autofill"),t=!(!m.checkNested(window.EngagingNetworks,"require","_defined","enjs","checkSubmissionFailed")||!window.EngagingNetworks.require._defined.enjs.checkSubmissionFailed()),n=!!m.checkNested(window.Intl,"DisplayNames"),i=m.getUrlParameter("supporter.country")||m.getUrlParameter("supporter.region")||m.getUrlParameter("ea.url.id")&&!m.getUrlParameter("forwarded");e||t||!n||i?this.init():fetch(`https://${window.location.hostname}/cdn-cgi/trace`).then((e=>e.text())).then((e=>{let t=e.replace(/[\r\n]+/g,'","').replace(/\=+/g,'":"');t='{"'+t.slice(0,t.lastIndexOf('","'))+'"}';const n=JSON.parse(t);this.country=n.loc,this.init()}))}init(){if(this.countrySelect&&this.country){const e=new Intl.DisplayNames(["en"],{type:"region"});this.setCountryByName(e.of(this.country),this.country)}}setCountryByName(e,t){if(this.countrySelect){let n=this.countrySelect.options;for(let i=0;i or
and a 'Skip to main content' link was not added")}insertSkipLinkSpan(){document.body.insertAdjacentHTML("afterbegin",'Skip to main content')}}class ae{constructor(){this.imgSrcDefer=document.querySelectorAll("img[data-src]"),this.videoBackground=document.querySelectorAll("video"),this.videoBackgroundSource=document.querySelectorAll("video source");for(let e=0;e{e.addEventListener("click",(t=>{const n=e.className.split(" ").filter((e=>e.startsWith(this.linkClass)));m.debug&&console.log(n),n.length&&(t.preventDefault(),m.setFieldValue("transaction.recurrfreq",n[0].substring(this.linkClass.length).toUpperCase()),this._frequency.load())}))}));const e=m.getFieldValue("transaction.recurrfreq").toUpperCase();document.getElementsByName(this.checkboxName).forEach((t=>{const n=t.value.toUpperCase();t.checked=n===e,t.addEventListener("change",(()=>{const e=t.value.toUpperCase();t.checked?(m.setFieldValue("transaction.recurrfreq",e),m.setFieldValue("transaction.recurrpay","Y"),this._frequency.load(),this._amount.setAmount(this._amount.amount,!1)):"ONETIME"!==e&&(m.setFieldValue("transaction.recurrfreq","ONETIME"),m.setFieldValue("transaction.recurrpay","N"),this._frequency.load(),this._amount.setAmount(this._amount.amount,!1))}))})),this._frequency.onFrequencyChange.subscribe((()=>{const e=this._frequency.frequency.toUpperCase();document.getElementsByName(this.checkboxName).forEach((t=>{const n=t.value.toUpperCase();t.checked&&n!==e?t.checked=!1:t.checked||n!==e||(t.checked=!0)}))}))}}class ce{constructor(){this.pageBackground=document.querySelector(".page-backgroundImage"),this.mutationObserver=null,this.logger=new be("PageBackground","lightblue","darkblue","🖼️"),this.pageBackground?(this.initializeBackgroundImage(),this.setDataAttributes(),this.processAttributionPositioning(),this.setupMutationObserver()):this.logger.log("A background image set in the page was not found, any default image set in the theme on --engrid__page-backgroundImage_url will be used")}initializeBackgroundImage(){if(!this.pageBackground)return;const e=this.pageBackground.querySelector("img");if(!e)return void this.logger.log("A background image set in the page was not found, any default image set in the theme on --engrid__page-backgroundImage_url will be used");const t=e.getAttribute("data-src"),n=e.src;t?this.setBackgroundImageUrl(t,"data-src"):n?this.setBackgroundImageUrl(n,"src"):this.logger.log("A background image set in the page was found but without a data-src or src value, no action taken",e)}setBackgroundImageUrl(e,t){if(this.pageBackground&&e)try{const n=`url('${e}')`;this.pageBackground.style.setProperty("--engrid__page-backgroundImage_url",n),this.logger.log(`A background image set in the page was found with a ${t} value, setting it as --engrid__page-backgroundImage_url`,e)}catch(e){this.logger.error("Error setting background image URL:",e)}}processAttributionPositioning(){if(!this.pageBackground)return void this.logger.log("No background section found for attribution positioning processing");this.logger.log("Processing attribution positioning for background section:",this.pageBackground);const e=["attribution-center","attribution-bottom","attribution-bottomcenter","attribution-bottomright","attribution-bottomleft","attribution-top","attribution-topcenter","attribution-topright","attribution-topleft","attribution-left","attribution-leftcenter","attribution-right","attribution-rightcenter"];try{const t=this.pageBackground.querySelectorAll("img");this.logger.log("Found images in background section:",t.length),t.forEach((t=>{this.processImageAttribution(t,e)}))}catch(e){this.logger.error("Error processing attribution positioning:",e)}}processImageAttribution(e,t){const n=t.find((t=>e.classList.contains(t))),i=e.getAttribute("data-background-position");n?this.handleClassBasedAttribution(e,n):i&&this.handleDataAttributeAttribution(e,i)}handleClassBasedAttribution(e,t){this.logger.log("Found attribution class on image:",t,e);const n=e.closest(".en__component--column");n?(e.classList.remove(t),n.classList.add(t),this.logger.log("Moved attribution class from image to parent column:",t,n)):this.logger.log("No parent .en__component--column found for image:",e)}handleDataAttributeAttribution(e,t){const n=`attribution-${t}`;this.logger.log("Found data-background-position on image:",t,"->",n,e);const i=e.closest(".en__component--column");i?(e.removeAttribute("data-background-position"),i.classList.add(n),this.logger.log("Moved data-background-position from image to parent column as class:",n,i)):this.logger.log("No parent .en__component--column found for image:",e)}setupMutationObserver(){if(this.pageBackground&&window.MutationObserver)try{this.mutationObserver=new MutationObserver((e=>{let t=!1;e.forEach((e=>{"childList"!==e.type&&"attributes"!==e.type||(t=!0)})),t&&(this.logger.log("DOM changes detected in background section, reprocessing attribution classes"),setTimeout((()=>{this.processAttributionPositioning()}),100))})),this.mutationObserver.observe(this.pageBackground,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["class"]}),this.logger.log("MutationObserver set up for background section")}catch(e){this.logger.error("Error setting up MutationObserver:",e)}else window.MutationObserver||this.logger.log("MutationObserver not supported in this browser")}reprocessAttributionPositioning(){this.logger.log("Manually reprocessing attribution positioning"),this.processAttributionPositioning()}destroy(){this.mutationObserver&&(this.mutationObserver.disconnect(),this.mutationObserver=null,this.logger.log("MutationObserver disconnected"))}setDataAttributes(){return this.hasVideoBackground()?m.setBodyData("page-background","video"):this.hasImageBackground()?m.setBodyData("page-background","image"):m.setBodyData("page-background","empty")}hasVideoBackground(){return!!this.pageBackground&&!!this.pageBackground.querySelector("video")}hasImageBackground(){return!!this.pageBackground&&(!this.hasVideoBackground()&&!!this.pageBackground.querySelector("img"))}}class de{constructor(e,t=null,n=null,i){this.apiKey=e,this.dateField=t,this.statusField=n,this.dateFormat=i,this.form=h.getInstance(),this.emailField=null,this.emailWrapper=document.querySelector(".en__field--emailAddress"),this.nbDate=null,this.nbStatus=null,this.logger=new be("NeverBounce","#039bc4","#dfdfdf","📧"),this.shouldRun=!0,this.nbLoaded=!1,this.bypassEmails=["noaddress.ea"];new URLSearchParams(window.location.search).has("bypassemailvalidation")?this.logger.log("Bypass Email Validation Enabled - not running NeverBounce"):(this.emailField=document.getElementById("en__field_supporter_emailAddress"),window._NBSettings={apiKey:this.apiKey,autoFieldHookup:!1,inputLatency:1500,displayPoweredBy:!1,loadingMessage:"Validating...",softRejectMessage:"Invalid email",acceptedMessage:"Email validated!",feedback:!1},m.loadJS("https://cdn.neverbounce.com/widget/dist/NeverBounce.js"),this.emailField&&(this.emailField.value&&(this.logger.log("E-mail Field Found"),this.shouldRun=!1),this.emailField.addEventListener("change",(e=>{var t;this.nbLoaded||(this.shouldRun=!0,this.init(),(null===(t=this.emailField)||void 0===t?void 0:t.value)&&setTimeout((function(){window._nb.fields.get(document.querySelector("[data-nb-id]"))[0].forceUpdate()}),100))})),window.setTimeout((()=>{this.emailField&&this.emailField.value&&(this.logger.log("E-mail Filled Programatically"),this.shouldRun=!1),this.init()}),1e3)),this.form.onValidate.subscribe(this.validate.bind(this)))}init(){if(!this.shouldRun)return void this.logger.log("Should Not Run");if(this.nbLoaded)return void this.logger.log("Already Loaded");if(this.logger.log("Init Function"),this.dateField&&document.getElementsByName(this.dateField).length&&(this.nbDate=document.querySelector("[name='"+this.dateField+"']")),this.statusField&&document.getElementsByName(this.statusField).length&&(this.nbStatus=document.querySelector("[name='"+this.statusField+"']")),!this.emailField)return void this.logger.log("E-mail Field Not Found");this.wrap(this.emailField,document.createElement("div"));this.emailField.parentNode.id="nb-wrapper";const e=document.createElement("div");e.innerHTML='
Enter a valid email.
',this.insertAfter(e,this.emailField);const t=this;document.body.addEventListener("nb:registered",(function(e){const n=document.querySelector('[data-nb-id="'+e.detail.id+'"]');n.addEventListener("nb:loading",(function(e){m.disableSubmit("Validating Your Email")})),n.addEventListener("nb:clear",(function(e){t.setEmailStatus("clear"),m.enableSubmit(),t.nbDate&&(t.nbDate.value=""),t.nbStatus&&(t.nbStatus.value="")})),n.addEventListener("nb:soft-result",(function(e){t.setEmailStatus("soft-result"),t.nbDate&&(t.nbDate.value=""),t.nbStatus&&(t.nbStatus.value=""),m.enableSubmit()})),n.addEventListener("nb:result",(function(e){e.detail.result.is(window._nb.settings.getAcceptedStatusCodes())?(t.setEmailStatus("valid"),t.nbDate&&(t.nbDate.value=m.formatDate(new Date,t.dateFormat)),t.nbStatus&&(t.nbStatus.value=e.detail.result.response.result)):(t.setEmailStatus("invalid"),t.nbDate&&(t.nbDate.value=""),t.nbStatus&&(t.nbStatus.value="")),m.enableSubmit()}))})),window._nb.fields.registerListener(t.emailField,!0),this.nbLoaded=!0}clearStatus(){if(!this.emailField)return void this.logger.log("E-mail Field Not Found");this.emailField.classList.remove("rm-error");const e=document.getElementById("nb-wrapper"),t=document.getElementById("nb-feedback");e.className="",t.className="en__field__error nb-hidden",t.innerHTML="",this.emailWrapper.classList.remove("en__field--validationFailed")}deleteENFieldError(){const e=document.querySelector(".en__field--emailAddress>div.en__field__error");e&&e.remove()}setEmailStatus(e){if(this.logger.log("Status:",e),!this.emailField)return void this.logger.log("E-mail Field Not Found");if(this.isBypassEmail())return void this.logger.log("Bypass email detected. Skipping status update.");const t=document.getElementById("nb-wrapper");let n=document.getElementById("nb-feedback");const i="nb-hidden",s="nb-loading",o="rm-error";if(!n){const e=t.querySelector("div");e&&(e.innerHTML='
Enter a valid email.
'),n=document.getElementById("nb-feedback")}if("valid"==e)this.clearStatus();else switch(t.classList.remove("nb-success"),t.classList.add("nb-error"),e){case"required":this.deleteENFieldError(),n.innerHTML="A valid email is required",n.classList.remove(s),n.classList.remove(i),this.emailField.classList.add(o);break;case"soft-result":this.emailField.value?(this.deleteENFieldError(),n.innerHTML="Invalid email",n.classList.remove(i),this.emailField.classList.add(o)):this.clearStatus();break;case"invalid":this.deleteENFieldError(),n.innerHTML="Invalid email",n.classList.remove(s),n.classList.remove(i),this.emailField.classList.add(o);break;default:this.clearStatus()}}insertAfter(e,t){var n;null===(n=null==t?void 0:t.parentNode)||void 0===n||n.insertBefore(e,t.nextSibling)}wrap(e,t){var n;null===(n=e.parentNode)||void 0===n||n.insertBefore(t,e),t.appendChild(e)}isBypassEmail(){if(!this.emailField||!this.emailField.value)return!1;const e=this.emailField.value.toLowerCase();return this.bypassEmails.some((t=>e.includes(t.toLowerCase())))}validate(){var e;if(!this.form.validate)return;const t=m.getFieldValue("nb-result");this.emailField&&this.shouldRun&&this.nbLoaded&&t?this.isBypassEmail()?this.logger.log("Bypass email detected. Skipping validation."):(this.nbStatus&&(this.nbStatus.value=t),["catchall","unknown","valid"].includes(t)||(this.setEmailStatus("required"),null===(e=this.emailField)||void 0===e||e.focus(),this.logger.log("NB-Result:",m.getFieldValue("nb-result")),this.form.validate=!1)):this.logger.log("validate(): Should Not Run. Returning true.")}}class ue{constructor(){this.form=h.getInstance(),this.emailField=null,this.emailWrapper=document.querySelector(".en__field--emailAddress"),this.faDate=null,this.faStatus=null,this.faMessage=null,this.logger=new be("FreshAddress","#039bc4","#dfdfdf","📧"),this.shouldRun=!0,this.options=m.getOption("FreshAddress"),!1!==this.options&&window.FreshAddress&&(this.emailField=document.getElementById("en__field_supporter_emailAddress"),this.emailField?(this.createFields(),this.addEventListeners(),window.FreshAddressStatus="idle",this.emailField.value&&(this.logger.log("E-mail Field Found"),this.shouldRun=!1),window.setTimeout((()=>{this.emailField&&this.emailField.value&&(this.logger.log("E-mail Filled Programatically"),this.shouldRun=!1)}),1e3)):this.logger.log("E-mail Field Not Found"))}createFields(){this.options&&(this.options.dateField=this.options.dateField||"fa_date",this.faDate=m.getField(this.options.dateField),this.faDate||(this.logger.log("Date Field Not Found. Creating..."),m.createHiddenInput(this.options.dateField,""),this.faDate=m.getField(this.options.dateField)),this.options.statusField=this.options.statusField||"fa_status",this.faStatus=m.getField(this.options.statusField),this.faStatus||(this.logger.log("Status Field Not Found. Creating..."),m.createHiddenInput(this.options.statusField,""),this.faStatus=m.getField(this.options.statusField)),this.options.messageField=this.options.messageField||"fa_message",this.faMessage=m.getField(this.options.messageField),this.faMessage||(this.logger.log("Message Field Not Found. Creating..."),m.createHiddenInput(this.options.messageField,""),this.faMessage=m.getField(this.options.messageField)))}writeToFields(e,t){this.options&&(this.faDate.value=m.formatDate(new Date,this.options.dateFieldFormat||"yyyy-MM-dd"),this.faStatus.value=e,this.faMessage.value=t,this.emailWrapper.dataset.freshaddressSafetosendstatus=e.toLowerCase())}addEventListeners(){var e;this.options&&(null===(e=this.emailField)||void 0===e||e.addEventListener("change",(()=>{var e,t;if(!this.shouldRun||(null===(e=this.emailField)||void 0===e?void 0:e.value.includes("@4sitestudios.com")))return m.removeError(this.emailWrapper),this.writeToFields("Valid","Skipped"),void this.logger.log("Skipping E-mail Validation");this.logger.log("Validating "+(null===(t=this.emailField)||void 0===t?void 0:t.value)),this.callAPI()})),this.form.onValidate.subscribe(this.validate.bind(this)))}callAPI(){var e;if(!this.options||!window.FreshAddress)return;if(!this.shouldRun)return;window.FreshAddressStatus="validating";const t=null===(e=this.emailField)||void 0===e?void 0:e.value;window.FreshAddress.validateEmail(t,{emps:!1,rtc_timeout:1200}).then((e=>(this.logger.log("Validate API Response",JSON.parse(JSON.stringify(e))),this.validateResponse(e))))}validateResponse(e){var t;if(e.isServiceError())return this.logger.log("Service Error"),this.writeToFields("Service Error",e.getErrorResponse()),!0;e.isValid()?(this.writeToFields("Valid",e.getComment()),m.removeError(this.emailWrapper),e.hasSuggest()&&(m.setError(this.emailWrapper,`Did you mean ${e.getSuggEmail()}?`),this.emailField.value=e.getSuggEmail())):e.isError()?(this.writeToFields("Invalid",e.getErrorResponse()),m.setError(this.emailWrapper,e.getErrorResponse()),null===(t=this.emailField)||void 0===t||t.focus(),e.hasSuggest()&&(m.setError(this.emailWrapper,`Did you mean ${e.getSuggEmail()}?`),this.emailField.value=e.getSuggEmail(),this.writeToFields("Error",e.getErrorResponse()))):e.isWarning()?(this.writeToFields("Invalid",e.getErrorResponse()),m.setError(this.emailWrapper,e.getErrorResponse()),e.hasSuggest()&&(m.setError(this.emailWrapper,`Did you mean ${e.getSuggEmail()}?`),this.emailField.value=e.getSuggEmail(),this.writeToFields("Warning",e.getErrorResponse()))):this.writeToFields("API Error","Unknown Error"),window.FreshAddressStatus="idle",m.enableSubmit()}validate(){var e;if(m.removeError(this.emailWrapper),this.form.validate)if(this.options)if(this.shouldRun){if("validating"!==window.FreshAddressStatus)return"Invalid"===this.faStatus.value?(this.form.validate=!1,window.setTimeout((()=>{m.setError(this.emailWrapper,this.faMessage.value)}),100),null===(e=this.emailField)||void 0===e||e.focus(),m.enableSubmit(),!1):(this.form.validate=!0,!0);{this.logger.log("Waiting for API Response");const e=new Promise(((e,t)=>{setTimeout((()=>{var n;const i=this.faStatus.value;if(""===i||"Invalid"===i)return this.logger.log("Promise Rejected"),null===(n=this.emailField)||void 0===n||n.focus(),void t(!1);this.logger.log("Promise Resolved"),e(!0)}),700)}));this.form.validatePromise=e}}else this.form.validate=!0;else this.form.validate=!0}}class he{constructor(){var e,t;const n=document.querySelector("span[data-engrid-progress-indicator]"),i=m.getPageCount(),s=m.getPageNumber();if(!n||!i||!s)return;let o=null!==(e=n.getAttribute("max"))&&void 0!==e?e:100;"string"==typeof o&&(o=parseInt(o));let r=null!==(t=n.getAttribute("amount"))&&void 0!==t?t:0;"string"==typeof r&&(r=parseInt(r));const a=1===s?0:Math.ceil((s-1)/i*o);let l=1===s?0:Math.ceil(s/i*o);const c=a/100;let d=l/100;if(r&&(l=Math.ceil(r)>Math.ceil(o)?o:r,d=l/100),n.innerHTML=`\n\t\t\t