Version Description
- 03/05/2020 =
- Fixed: Image Accordion not showing 'Horizontal' layout
- Fixed: Info Box not showing 'Margin' option in 'Advanced' tab
Download this release
Release Info
Developer | re_enter_rupok |
Plugin | Elementor Essential Addons |
Version | 3.9.4 |
Comparing to | |
See all releases |
Code changes from version 3.9.3 to 3.9.4
- assets/admin/css/cloud.css +31 -11
- assets/front-end/css/eael.css +1120 -1120
- assets/front-end/css/eael.min.css +3 -3
- assets/front-end/js/eael.js +2771 -14836
assets/admin/css/cloud.css
CHANGED
@@ -30,6 +30,7 @@
|
|
30 |
}
|
31 |
.template-cloud-install {
|
32 |
display: flex;
|
|
|
33 |
width: 100%;
|
34 |
background-image: url(../images/templately/login-bg.png);
|
35 |
background-size: cover;
|
@@ -43,20 +44,29 @@
|
|
43 |
}
|
44 |
|
45 |
.templately-left {
|
46 |
-
padding
|
47 |
}
|
48 |
.templately-right {
|
49 |
-
padding
|
50 |
-
|
51 |
-
.templately-admin-title, .templately-admin-install {
|
52 |
-
width: 70%;
|
53 |
}
|
|
|
54 |
.templately-admin-title {
|
55 |
-
float: right;
|
56 |
font-size: 16px;
|
57 |
text-align: left;
|
58 |
}
|
59 |
-
.templately-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
color: #fff;
|
61 |
font-size: 50px;
|
62 |
font-weight: 700;
|
@@ -64,18 +74,17 @@
|
|
64 |
font-size: 60px;
|
65 |
}
|
66 |
|
67 |
-
.templately-
|
68 |
font-size: 18px;
|
69 |
line-height: 1.6;
|
70 |
color: #fff;
|
71 |
}
|
72 |
|
73 |
.templately-admin-install {
|
74 |
-
background-color:
|
75 |
color: #fff;
|
76 |
padding: 50px;
|
77 |
border-radius: 10px;
|
78 |
-
float: left;
|
79 |
}
|
80 |
|
81 |
.templately-admin-install p {
|
@@ -86,7 +95,7 @@
|
|
86 |
|
87 |
.templately-admin-install button.eae-activate-templately {
|
88 |
background-color: #fff;
|
89 |
-
border: 1px solid rgb(96, 114, 255);
|
90 |
padding: 15px 30px;
|
91 |
border-radius: 50px;
|
92 |
color: rgb(96, 114, 255);
|
@@ -99,4 +108,15 @@
|
|
99 |
.templately-admin-install button.eae-activate-templately:hover {
|
100 |
background-color: rgb(250, 145, 150);
|
101 |
color: rgb(255, 255, 255);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
}
|
30 |
}
|
31 |
.template-cloud-install {
|
32 |
display: flex;
|
33 |
+
flex-flow: column nowrap;
|
34 |
width: 100%;
|
35 |
background-image: url(../images/templately/login-bg.png);
|
36 |
background-size: cover;
|
44 |
}
|
45 |
|
46 |
.templately-left {
|
47 |
+
padding: 10px;
|
48 |
}
|
49 |
.templately-right {
|
50 |
+
padding: 10px;
|
51 |
+
max-width: 550px;
|
|
|
|
|
52 |
}
|
53 |
+
|
54 |
.templately-admin-title {
|
|
|
55 |
font-size: 16px;
|
56 |
text-align: left;
|
57 |
}
|
58 |
+
.templately-cloud-title {
|
59 |
+
text-align: center;
|
60 |
+
margin-bottom: 50px;
|
61 |
+
}
|
62 |
+
.templately-installer-wrapper {
|
63 |
+
display: flex;
|
64 |
+
flex-flow: row wrap;
|
65 |
+
justify-content: center;
|
66 |
+
align-items: center;
|
67 |
+
width: 100%;
|
68 |
+
}
|
69 |
+
.templately-cloud-title h1 {
|
70 |
color: #fff;
|
71 |
font-size: 50px;
|
72 |
font-weight: 700;
|
74 |
font-size: 60px;
|
75 |
}
|
76 |
|
77 |
+
.templately-cloud-title p {
|
78 |
font-size: 18px;
|
79 |
line-height: 1.6;
|
80 |
color: #fff;
|
81 |
}
|
82 |
|
83 |
.templately-admin-install {
|
84 |
+
background-color: transparent;
|
85 |
color: #fff;
|
86 |
padding: 50px;
|
87 |
border-radius: 10px;
|
|
|
88 |
}
|
89 |
|
90 |
.templately-admin-install p {
|
95 |
|
96 |
.templately-admin-install button.eae-activate-templately {
|
97 |
background-color: #fff;
|
98 |
+
border: 1px solid rgb(96, 114, 255, 0);
|
99 |
padding: 15px 30px;
|
100 |
border-radius: 50px;
|
101 |
color: rgb(96, 114, 255);
|
108 |
.templately-admin-install button.eae-activate-templately:hover {
|
109 |
background-color: rgb(250, 145, 150);
|
110 |
color: rgb(255, 255, 255);
|
111 |
+
}
|
112 |
+
.templately-cloud-video-container {
|
113 |
+
background-color: #fff;
|
114 |
+
padding: 8px;
|
115 |
+
width: 620px;
|
116 |
+
max-width: 100%;
|
117 |
+
border-radius: 4px;
|
118 |
+
box-shadow: 0 0 30px 5px rgba(0,0,0, .15);
|
119 |
+
}
|
120 |
+
.templately-cloud-video-container iframe {
|
121 |
+
width: 100%;
|
122 |
}
|
assets/front-end/css/eael.css
CHANGED
@@ -688,6 +688,76 @@
|
|
688 |
}
|
689 |
}
|
690 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
691 |
/*--------------------------------*/
|
692 |
/* 11. Contact Form 7 Styles
|
693 |
/*--------------------------------*/
|
@@ -781,76 +851,6 @@
|
|
781 |
font-weight: normal;
|
782 |
}
|
783 |
|
784 |
-
@-webkit-keyframes "loaderSpin" {
|
785 |
-
0% {
|
786 |
-
transform: rotate(0deg);
|
787 |
-
}
|
788 |
-
100% {
|
789 |
-
transform: rotate(360deg);
|
790 |
-
}
|
791 |
-
}
|
792 |
-
@keyframes "loaderSpin" {
|
793 |
-
0% {
|
794 |
-
transform: rotate(0deg);
|
795 |
-
}
|
796 |
-
100% {
|
797 |
-
transform: rotate(360deg);
|
798 |
-
}
|
799 |
-
}
|
800 |
-
.eael-button-wrap,
|
801 |
-
.eael-load-more-button-wrap {
|
802 |
-
display: flex;
|
803 |
-
}
|
804 |
-
|
805 |
-
.eael-button,
|
806 |
-
.eael-load-more-button {
|
807 |
-
display: flex !important;
|
808 |
-
align-items: center;
|
809 |
-
justify-content: center;
|
810 |
-
padding: 1em 2em;
|
811 |
-
border: 0px solid;
|
812 |
-
font-size: 16px;
|
813 |
-
overflow: hidden;
|
814 |
-
}
|
815 |
-
.eael-button > span,
|
816 |
-
.eael-load-more-button > span {
|
817 |
-
margin-left: -20px;
|
818 |
-
}
|
819 |
-
.eael-button .eael-btn-loader,
|
820 |
-
.eael-load-more-button .eael-btn-loader {
|
821 |
-
border-radius: 50%;
|
822 |
-
width: 20px;
|
823 |
-
height: 20px;
|
824 |
-
font-size: 10px;
|
825 |
-
position: relative;
|
826 |
-
text-indent: -9999em;
|
827 |
-
border-top: 4px solid rgba(255, 255, 255, 0.2);
|
828 |
-
border-right: 4px solid rgba(255, 255, 255, 0.2);
|
829 |
-
border-bottom: 4px solid rgba(255, 255, 255, 0.2);
|
830 |
-
border-left: 4px solid #ffffff;
|
831 |
-
transform: translateZ(0);
|
832 |
-
-webkit-animation: loaderSpin 1.1s infinite linear;
|
833 |
-
animation: loaderSpin 1.1s infinite linear;
|
834 |
-
left: -100%;
|
835 |
-
top: auto;
|
836 |
-
margin-right: 5px;
|
837 |
-
transition: all 0.2s;
|
838 |
-
}
|
839 |
-
.eael-button .eael-btn-loader:after,
|
840 |
-
.eael-load-more-button .eael-btn-loader:after {
|
841 |
-
border-radius: 50%;
|
842 |
-
width: 20px;
|
843 |
-
height: 20px;
|
844 |
-
}
|
845 |
-
.eael-button.button--loading > span,
|
846 |
-
.eael-load-more-button.button--loading > span {
|
847 |
-
margin-left: 0;
|
848 |
-
}
|
849 |
-
.eael-button.button--loading .eael-btn-loader,
|
850 |
-
.eael-load-more-button.button--loading .eael-btn-loader {
|
851 |
-
left: 0;
|
852 |
-
}
|
853 |
-
|
854 |
.eael-ticker-wrap {
|
855 |
overflow: hidden;
|
856 |
display: flex;
|
@@ -914,6 +914,65 @@
|
|
914 |
justify-content: center;
|
915 |
}
|
916 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
917 |
/*--------------------------------*/
|
918 |
/* 08. Creative Button styles
|
919 |
/*--------------------------------*/
|
@@ -1169,102 +1228,43 @@
|
|
1169 |
margin-left: 5px;
|
1170 |
}
|
1171 |
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
display: table;
|
1181 |
-
table-layout: fixed;
|
1182 |
-
width: 100%;
|
1183 |
}
|
1184 |
|
1185 |
-
.eael-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
|
|
|
|
|
|
|
|
1191 |
}
|
1192 |
|
1193 |
-
.eael-
|
1194 |
-
|
1195 |
-
|
|
|
|
|
1196 |
}
|
1197 |
|
1198 |
-
.eael-
|
1199 |
-
|
1200 |
-
|
1201 |
-
text-align:
|
1202 |
}
|
1203 |
|
1204 |
-
.eael-
|
1205 |
-
font-
|
1206 |
-
line-height: 1;
|
1207 |
-
}
|
1208 |
-
|
1209 |
-
.eael-countdown-label {
|
1210 |
-
font-size: 18px;
|
1211 |
-
line-height: 1;
|
1212 |
-
color: #ffffff;
|
1213 |
-
}
|
1214 |
-
|
1215 |
-
.eael-countdown-show-separator .eael-countdown-digits::after {
|
1216 |
-
content: ":";
|
1217 |
-
position: absolute;
|
1218 |
-
left: 98%;
|
1219 |
-
z-index: 9999;
|
1220 |
-
}
|
1221 |
-
|
1222 |
-
.eael-countdown-item:last-child .eael-countdown-digits::after {
|
1223 |
-
display: none;
|
1224 |
-
}
|
1225 |
-
|
1226 |
-
/*--- Style 1 ---*/
|
1227 |
-
.eael-countdown-items.style-1 .eael-countdown-item > div {
|
1228 |
-
background: #262625;
|
1229 |
-
}
|
1230 |
-
|
1231 |
-
@charset "UTF-8";
|
1232 |
-
table.eael-data-table thead .sorting_asc,
|
1233 |
-
table.eael-data-table thead .sorting_desc,
|
1234 |
-
table.eael-data-table thead .sorting {
|
1235 |
-
position: relative;
|
1236 |
-
z-index: 0;
|
1237 |
-
outline: 0;
|
1238 |
-
cursor: pointer;
|
1239 |
-
}
|
1240 |
-
|
1241 |
-
table.eael-data-table thead .sorting_asc:after,
|
1242 |
-
table.eael-data-table thead .sorting_desc:after,
|
1243 |
-
table.eael-data-table thead .sorting:after {
|
1244 |
-
position: absolute;
|
1245 |
-
top: 50%;
|
1246 |
-
right: 10px;
|
1247 |
-
font-family: "FontAwesome";
|
1248 |
-
color: #fff;
|
1249 |
-
z-index: 1;
|
1250 |
-
transform: translateY(-50%);
|
1251 |
-
}
|
1252 |
-
|
1253 |
-
.eael-data-table-wrap .eael-data-tables_wrapper {
|
1254 |
-
display: flex;
|
1255 |
-
flex-flow: row wrap;
|
1256 |
-
justify-content: flex-start;
|
1257 |
-
width: 100%;
|
1258 |
-
}
|
1259 |
-
|
1260 |
-
.eael-data-table-wrap .eael-data-tables_filter {
|
1261 |
-
flex-grow: 1;
|
1262 |
-
flex-basis: 50%;
|
1263 |
-
text-align: right;
|
1264 |
-
}
|
1265 |
-
|
1266 |
-
.eael-data-table-wrap .eael-data-tables_filter label {
|
1267 |
-
font-weight: 700;
|
1268 |
}
|
1269 |
|
1270 |
.eael-data-table-wrap .eael-data-tables_filter label input[type="search"] {
|
@@ -2450,266 +2450,803 @@ span.fc-day-number {
|
|
2450 |
padding: 10px 25px;
|
2451 |
}
|
2452 |
|
2453 |
-
|
2454 |
-
/*
|
2455 |
-
|
2456 |
-
.eael-
|
2457 |
-
|
2458 |
}
|
2459 |
-
|
2460 |
-
|
2461 |
-
.eael-filter-gallery-control ul li {
|
2462 |
-
text-align: center;
|
2463 |
}
|
2464 |
-
|
2465 |
-
|
2466 |
-
|
2467 |
-
padding: 0px;
|
2468 |
-
text-align: center;
|
2469 |
}
|
2470 |
-
|
2471 |
-
|
2472 |
-
display: flex;
|
2473 |
-
flex-flow: 1 1 auto;
|
2474 |
-
align-items: center;
|
2475 |
-
justify-content: center;
|
2476 |
-
flex-flow: row wrap;
|
2477 |
-
padding: 0px;
|
2478 |
-
margin: 0px;
|
2479 |
}
|
2480 |
-
|
2481 |
-
.eael-
|
2482 |
-
|
2483 |
-
|
2484 |
-
display: inline-block;
|
2485 |
-
text-align: center;
|
2486 |
}
|
2487 |
-
|
2488 |
-
|
2489 |
-
|
2490 |
-
font-size: 16px;
|
2491 |
-
font-weight: 600;
|
2492 |
-
padding: 10px 25px;
|
2493 |
-
margin: 10px 6px;
|
2494 |
}
|
2495 |
-
|
2496 |
-
|
2497 |
-
|
2498 |
-
|
2499 |
}
|
2500 |
-
|
2501 |
-
|
2502 |
-
|
2503 |
-
|
2504 |
-
width: 100%;
|
2505 |
}
|
2506 |
-
|
2507 |
-
|
2508 |
-
content: '';
|
2509 |
-
display: inline-block;
|
2510 |
-
padding-top: 56.25%;
|
2511 |
}
|
2512 |
-
|
2513 |
-
|
2514 |
position: absolute;
|
2515 |
-
|
2516 |
-
|
2517 |
-
align-items: center;
|
2518 |
-
justify-content: center;
|
2519 |
z-index: 1;
|
2520 |
-
|
2521 |
-
|
2522 |
-
|
2523 |
-
|
2524 |
-
|
|
|
|
|
2525 |
}
|
2526 |
-
|
2527 |
-
.eael-filter-gallery-container.eael-cards .item .caption {
|
2528 |
display: none;
|
2529 |
}
|
2530 |
-
|
2531 |
-
|
2532 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2533 |
display: flex;
|
2534 |
-
flex-flow: 1 1 100%;
|
2535 |
align-items: center;
|
2536 |
justify-content: center;
|
2537 |
-
z-index: 10;
|
2538 |
-
top: 0px;
|
2539 |
-
left: 0px;
|
2540 |
-
right: 0px;
|
2541 |
-
bottom: 0px;
|
2542 |
-
transition: transform .4s;
|
2543 |
}
|
2544 |
-
|
2545 |
-
.
|
2546 |
-
|
2547 |
-
|
2548 |
}
|
2549 |
-
|
2550 |
-
|
2551 |
-
|
|
|
|
|
2552 |
}
|
2553 |
-
|
2554 |
-
|
2555 |
-
|
2556 |
-
|
2557 |
-
transform: scale(0);
|
2558 |
}
|
2559 |
-
|
2560 |
-
|
2561 |
-
|
2562 |
-
|
2563 |
}
|
2564 |
-
|
2565 |
-
|
2566 |
-
.eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-slide-left {
|
2567 |
-
transform: translateX(-100%);
|
2568 |
}
|
2569 |
-
|
2570 |
-
|
2571 |
-
|
2572 |
-
transform: translateX(0%);
|
2573 |
}
|
2574 |
-
|
2575 |
-
|
2576 |
-
|
2577 |
-
|
|
|
2578 |
}
|
2579 |
-
|
2580 |
-
|
2581 |
-
.eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-slide-right {
|
2582 |
-
transform: translateX(0%);
|
2583 |
-
}
|
2584 |
-
|
2585 |
-
.eael-filter-gallery-container .item .caption.eael-slide-top,
|
2586 |
-
.eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-slide-top {
|
2587 |
-
transform: translateY(-100%);
|
2588 |
-
}
|
2589 |
-
|
2590 |
-
.eael-filter-gallery-container .item:hover .caption.eael-slide-top,
|
2591 |
-
.eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-slide-top {
|
2592 |
-
transform: translateY(0%);
|
2593 |
-
}
|
2594 |
-
|
2595 |
-
.eael-filter-gallery-container .item .caption.eael-slide-bottom,
|
2596 |
-
.eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-slide-bottom {
|
2597 |
-
transform: translateY(100%);
|
2598 |
}
|
2599 |
-
|
2600 |
-
|
2601 |
-
.eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-slide-bottom {
|
2602 |
-
transform: translateY(0%);
|
2603 |
}
|
2604 |
-
|
2605 |
-
.eael-filter-gallery-container .item .caption a {
|
2606 |
-
display: inline-block;
|
2607 |
-
width: 50px;
|
2608 |
-
height: 50px;
|
2609 |
-
text-align: center;
|
2610 |
-
line-height: 50px;
|
2611 |
border-radius: 50%;
|
2612 |
-
margin: 0 5px;
|
2613 |
-
font-size: 20px;
|
2614 |
-
cursor: pointer;
|
2615 |
-
transition: .3s;
|
2616 |
-
}
|
2617 |
-
|
2618 |
-
.eael-filter-gallery-container .item .caption a:nth-child(1),
|
2619 |
-
.eael-container .item .caption a:nth-child(2) {
|
2620 |
-
transition: .6s;
|
2621 |
-
opacity: 0;
|
2622 |
}
|
2623 |
-
|
2624 |
-
|
2625 |
-
transform: translateY(-100%);
|
2626 |
}
|
2627 |
-
|
2628 |
-
|
2629 |
-
|
2630 |
}
|
2631 |
-
|
2632 |
-
|
2633 |
-
.eael-filter-gallery-container .item .caption:hover a:nth-child(2) {
|
2634 |
-
transform: translateY(0%);
|
2635 |
-
opacity: 1;
|
2636 |
}
|
2637 |
-
|
2638 |
-
|
2639 |
-
outline: 0;
|
2640 |
}
|
2641 |
-
|
2642 |
-
|
2643 |
-
.eael-filter-gallery-container.eael-cards .item:before {
|
2644 |
-
padding-top: 0px;
|
2645 |
}
|
2646 |
-
|
2647 |
-
|
2648 |
position: relative;
|
2649 |
-
background-repeat: no-repeat;
|
2650 |
-
background-position: center;
|
2651 |
-
background-size: cover;
|
2652 |
-
height: 220px;
|
2653 |
-
z-index: 0;
|
2654 |
-
overflow: hidden;
|
2655 |
-
}
|
2656 |
-
|
2657 |
-
.eael-filter-gallery-container.eael-cards .item-content {
|
2658 |
-
padding: 15px;
|
2659 |
}
|
2660 |
-
|
2661 |
-
.eael-
|
2662 |
-
|
2663 |
-
|
2664 |
-
|
2665 |
-
margin-bottom: 0px;
|
2666 |
-
transition: .3s;
|
2667 |
}
|
2668 |
-
|
2669 |
-
|
2670 |
-
|
2671 |
-
|
2672 |
}
|
2673 |
-
|
2674 |
-
|
2675 |
-
|
|
|
|
|
|
|
|
|
2676 |
}
|
2677 |
-
|
2678 |
-
|
2679 |
-
|
|
|
|
|
|
|
|
|
|
|
2680 |
}
|
2681 |
-
|
2682 |
-
|
2683 |
-
text-align: center;
|
2684 |
}
|
2685 |
-
|
2686 |
-
.
|
2687 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2688 |
}
|
2689 |
-
|
2690 |
-
|
2691 |
-
|
2692 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2693 |
}
|
2694 |
-
|
2695 |
-
.eael-
|
2696 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2697 |
}
|
2698 |
-
|
2699 |
-
.eael-
|
2700 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2701 |
}
|
2702 |
-
|
2703 |
-
|
2704 |
-
.
|
2705 |
-
|
|
|
|
|
|
|
2706 |
}
|
2707 |
-
|
2708 |
-
.eael-
|
2709 |
-
|
2710 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2711 |
}
|
2712 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2713 |
.eael-filter-gallery-container.eael-col-1 .eael-filterable-gallery-item-wrap {
|
2714 |
width: 100%;
|
2715 |
}
|
@@ -3251,824 +3788,287 @@ a.eael-gallery-load-more, a.eael-gallery-load-more:hover {
|
|
3251 |
margin-right: 0 !important;
|
3252 |
}
|
3253 |
|
3254 |
-
.elementor-element.elementor-grid-mobile-5 .eael-filterable-gallery-item-wrap:nth-of-type(5n+1) {
|
3255 |
-
clear: left;
|
3256 |
-
}
|
3257 |
-
|
3258 |
-
.elementor-element.elementor-grid-mobile-6 {
|
3259 |
-
position: relative;
|
3260 |
-
}
|
3261 |
-
|
3262 |
-
.elementor-element.elementor-grid-mobile-6 .pp-logo-grid {
|
3263 |
-
margin-right: -6px;
|
3264 |
-
}
|
3265 |
-
|
3266 |
-
.elementor-element.elementor-grid-mobile-6 .eael-filterable-gallery-item-wrap {
|
3267 |
-
width: 16%;
|
3268 |
-
float: left;
|
3269 |
-
}
|
3270 |
-
|
3271 |
-
.elementor-element.elementor-grid-mobile-6 .eael-filterable-gallery-item-wrap:nth-of-type(6n) {
|
3272 |
-
margin-right: 0 !important;
|
3273 |
-
}
|
3274 |
-
|
3275 |
-
.elementor-element.elementor-grid-mobile-6 .eael-filterable-gallery-item-wrap:nth-of-type(6n+1) {
|
3276 |
-
clear: left;
|
3277 |
-
}
|
3278 |
-
}
|
3279 |
-
/* ------------- Layout 3 Style ----------------- */
|
3280 |
-
.fg-layout-3-filter-controls {
|
3281 |
-
margin: 0;
|
3282 |
-
padding: 0;
|
3283 |
-
list-style: none;
|
3284 |
-
}
|
3285 |
-
|
3286 |
-
.fg-layout-3-item-content {
|
3287 |
-
text-align: center;
|
3288 |
-
}
|
3289 |
-
|
3290 |
-
.fg-layout-3-item-content .fg-item-title {
|
3291 |
-
font-size: 18px;
|
3292 |
-
line-height: 1;
|
3293 |
-
font-weight: 500;
|
3294 |
-
margin: 0;
|
3295 |
-
transition: 300ms;
|
3296 |
-
}
|
3297 |
-
|
3298 |
-
.fg-layout-3-item-content .fg-item-content p {
|
3299 |
-
font-size: 13px;
|
3300 |
-
font-weight: 400;
|
3301 |
-
}
|
3302 |
-
|
3303 |
-
.fg-filter-wrap {
|
3304 |
-
position: relative;
|
3305 |
-
flex-basis: 30%;
|
3306 |
-
}
|
3307 |
-
|
3308 |
-
.fg-layout-3-filter-controls {
|
3309 |
-
position: absolute;
|
3310 |
-
left: 0;
|
3311 |
-
background: #fff;
|
3312 |
-
z-index: 999;
|
3313 |
-
width: 150px;
|
3314 |
-
visibility: hidden;
|
3315 |
-
opacity: 0;
|
3316 |
-
transition: 300ms;
|
3317 |
-
width: 100%;
|
3318 |
-
border-radius: 5px;
|
3319 |
-
padding-top: 7px;
|
3320 |
-
}
|
3321 |
-
|
3322 |
-
.fg-layout-3-filter-controls.open-filters {
|
3323 |
-
visibility: visible;
|
3324 |
-
opacity: 1;
|
3325 |
-
}
|
3326 |
-
|
3327 |
-
.fg-layout-3-filter-controls li.control {
|
3328 |
-
padding: 5px 5px 5px 10px;
|
3329 |
-
cursor: pointer;
|
3330 |
-
transition: 300ms;
|
3331 |
-
font-size: 14px;
|
3332 |
-
color: #7f8995;
|
3333 |
-
font-weight: normal;
|
3334 |
-
}
|
3335 |
-
|
3336 |
-
.fg-layout-3-filter-controls li.control:hover {
|
3337 |
-
color: #2d425a;
|
3338 |
-
}
|
3339 |
-
|
3340 |
-
.fg-layout-3-filter-controls li.control:first-child {
|
3341 |
-
border-top: 0px solid;
|
3342 |
-
}
|
3343 |
-
|
3344 |
-
.fg-layout-3-filter-controls li.control:last-child {
|
3345 |
-
border-bottom: 0px solid;
|
3346 |
-
}
|
3347 |
-
|
3348 |
-
.fg-layout-3-filters-wrap {
|
3349 |
-
max-width: 600px;
|
3350 |
-
margin: 15px auto 50px;
|
3351 |
-
}
|
3352 |
-
|
3353 |
-
.fg-filter-wrap button {
|
3354 |
-
width: 100%;
|
3355 |
-
border: 0px solid;
|
3356 |
-
border-radius: 0px;
|
3357 |
-
padding: 17px 13px;
|
3358 |
-
font-size: 14px;
|
3359 |
-
color: #2d425a;
|
3360 |
-
background: #f7f8ff;
|
3361 |
-
height: 55px;
|
3362 |
-
border-right: 1px solid #abb5ff;
|
3363 |
-
border-radius: 10px 0px 0 10px;
|
3364 |
-
outline: none;
|
3365 |
-
text-align: center;
|
3366 |
-
position: relative;
|
3367 |
-
}
|
3368 |
-
|
3369 |
-
.fg-filter-wrap button > i {
|
3370 |
-
font-size: 18px;
|
3371 |
-
position: absolute;
|
3372 |
-
top: 50%;
|
3373 |
-
transform: translateY(-50%);
|
3374 |
-
margin-left: 10px;
|
3375 |
-
}
|
3376 |
-
|
3377 |
-
.fg-layout-3-search-box {
|
3378 |
-
flex-basis: 70%;
|
3379 |
-
height: 100%;
|
3380 |
-
}
|
3381 |
-
|
3382 |
-
.fg-layout-3-search-box input[type="text"] {
|
3383 |
-
width: 100%;
|
3384 |
-
height: 100%;
|
3385 |
-
margin: 0;
|
3386 |
-
padding: 15px;
|
3387 |
-
border: 0px solid;
|
3388 |
-
outline: none;
|
3389 |
-
background: none;
|
3390 |
-
}
|
3391 |
-
|
3392 |
-
.fg-layout-3-search-box input[type="text"]::-webkit-input-placeholder {
|
3393 |
-
/* Chrome/Opera/Safari */
|
3394 |
-
color: #7f8995;
|
3395 |
-
font-size: 13px;
|
3396 |
-
}
|
3397 |
-
|
3398 |
-
.fg-layout-3-search-box input[type="text"]::-moz-placeholder {
|
3399 |
-
/* Firefox 19+ */
|
3400 |
-
color: #7f8995;
|
3401 |
-
font-size: 13px;
|
3402 |
-
}
|
3403 |
-
|
3404 |
-
.fg-layout-3-search-box input[type="text"]:-ms-input-placeholder {
|
3405 |
-
/* IE 10+ */
|
3406 |
-
color: #7f8995;
|
3407 |
-
font-size: 13px;
|
3408 |
-
}
|
3409 |
-
|
3410 |
-
.fg-layout-3-search-box input[type="text"]:-moz-placeholder {
|
3411 |
-
/* Firefox 18- */
|
3412 |
-
color: #7f8995;
|
3413 |
-
font-size: 13px;
|
3414 |
-
}
|
3415 |
-
|
3416 |
-
.fg-layout-3-filters-wrap {
|
3417 |
-
height: 55px;
|
3418 |
-
border-radius: 5px;
|
3419 |
-
display: flex;
|
3420 |
-
flex-wrap: wrap;
|
3421 |
-
align-items: center;
|
3422 |
-
}
|
3423 |
-
|
3424 |
-
.fg-layout-3-filters-wrap .fg-layout-3-search-box {
|
3425 |
-
background: #f7f8ff;
|
3426 |
-
border-radius: 0 10px 10px 0;
|
3427 |
-
}
|
3428 |
-
|
3429 |
-
.fg-layout-3-item-thumb {
|
3430 |
-
position: relative;
|
3431 |
-
overflow: hidden;
|
3432 |
-
}
|
3433 |
-
|
3434 |
-
.fg-layout-3-item-thumb .gallery-item-buttons {
|
3435 |
-
text-align: center;
|
3436 |
-
position: absolute;
|
3437 |
-
left: 0;
|
3438 |
-
top: 0;
|
3439 |
-
height: 100%;
|
3440 |
-
width: 100%;
|
3441 |
-
display: flex;
|
3442 |
-
align-items: center;
|
3443 |
-
justify-content: center;
|
3444 |
-
z-index: 4;
|
3445 |
-
}
|
3446 |
-
|
3447 |
-
.fg-layout-3-item-content {
|
3448 |
-
padding: 27px 27px 30px;
|
3449 |
-
text-align: center;
|
3450 |
-
}
|
3451 |
|
3452 |
-
.
|
3453 |
-
|
3454 |
-
}
|
3455 |
|
3456 |
-
.
|
3457 |
-
|
3458 |
-
}
|
3459 |
|
3460 |
-
.
|
3461 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3462 |
}
|
3463 |
|
3464 |
-
.
|
3465 |
-
|
3466 |
-
border-radius: 5px;
|
3467 |
}
|
3468 |
|
3469 |
-
.fg-
|
3470 |
-
position: absolute;
|
3471 |
-
left: 0;
|
3472 |
-
top: 0;
|
3473 |
-
width: 100%;
|
3474 |
-
display: flex;
|
3475 |
-
justify-content: space-between;
|
3476 |
-
padding: 35px 35px;
|
3477 |
-
z-index: 3;
|
3478 |
-
color: #fff;
|
3479 |
font-size: 18px;
|
3480 |
-
|
|
|
|
|
|
|
3481 |
}
|
3482 |
|
3483 |
-
.fg-item-
|
3484 |
-
font-size:
|
3485 |
-
|
3486 |
-
background: #fa9196;
|
3487 |
-
padding: 10px 12px;
|
3488 |
-
display: inline-block;
|
3489 |
}
|
3490 |
|
3491 |
-
.fg-
|
3492 |
position: relative;
|
|
|
3493 |
}
|
3494 |
|
3495 |
-
.fg-
|
3496 |
position: absolute;
|
3497 |
left: 0;
|
3498 |
-
|
3499 |
-
|
3500 |
-
width:
|
3501 |
-
height: 30px;
|
3502 |
-
margin-top: -15px;
|
3503 |
-
z-index: 11;
|
3504 |
-
}
|
3505 |
-
|
3506 |
-
.fg-item-category span {
|
3507 |
-
border-radius: 5px;
|
3508 |
-
line-height: 1;
|
3509 |
visibility: hidden;
|
3510 |
opacity: 0;
|
3511 |
transition: 300ms;
|
|
|
|
|
|
|
3512 |
}
|
3513 |
|
3514 |
-
.fg-layout-3-
|
3515 |
visibility: visible;
|
3516 |
opacity: 1;
|
3517 |
}
|
3518 |
|
3519 |
-
.
|
3520 |
-
|
3521 |
-
width: auto;
|
3522 |
-
}
|
3523 |
-
|
3524 |
-
.mfp-zoom-out-cur .mfp-image-holder .mfp-close {
|
3525 |
cursor: pointer;
|
|
|
|
|
|
|
|
|
3526 |
}
|
3527 |
|
3528 |
-
.
|
3529 |
-
|
3530 |
}
|
3531 |
|
3532 |
-
|
3533 |
-
|
3534 |
-
background: transparent;
|
3535 |
}
|
3536 |
|
3537 |
-
|
3538 |
-
|
3539 |
-
/*----------------------------*/
|
3540 |
-
.elementor-widget-eael-feature-list.-icon-position-left .connector-type-modern.rhombus .eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top .connector-type-modern.rhombus .eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right .connector-type-modern.rhombus .eael-feature-list-item:before {
|
3541 |
-
top: 3px !important;
|
3542 |
-
}
|
3543 |
-
.elementor-widget-eael-feature-list.-icon-position-left .connector-type-modern.rhombus .eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top .connector-type-modern.rhombus .eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right .connector-type-modern.rhombus .eael-feature-list-item:after {
|
3544 |
-
top: 45px !important;
|
3545 |
-
}
|
3546 |
-
.elementor-widget-eael-feature-list.-icon-position-right .connector, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .connector {
|
3547 |
-
right: 0;
|
3548 |
-
left: calc(100% - 70px);
|
3549 |
-
}
|
3550 |
-
.elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item {
|
3551 |
-
padding: 0 50px 0 0;
|
3552 |
-
}
|
3553 |
-
@media (max-width: 767px) {
|
3554 |
-
.elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item {
|
3555 |
-
padding: 0 30px 0 0;
|
3556 |
-
}
|
3557 |
-
}
|
3558 |
-
.elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item:before {
|
3559 |
-
left: auto;
|
3560 |
-
right: 0;
|
3561 |
-
}
|
3562 |
-
.elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item:after {
|
3563 |
-
left: auto;
|
3564 |
-
right: 5px;
|
3565 |
-
top: 30px;
|
3566 |
-
}
|
3567 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items {
|
3568 |
-
list-style-type: none;
|
3569 |
-
margin: 0;
|
3570 |
-
padding: 0;
|
3571 |
-
}
|
3572 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item {
|
3573 |
-
position: relative;
|
3574 |
-
}
|
3575 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .connector {
|
3576 |
-
display: block;
|
3577 |
-
position: absolute;
|
3578 |
-
width: 0;
|
3579 |
-
margin: 0 auto;
|
3580 |
-
z-index: 1;
|
3581 |
-
height: 100%;
|
3582 |
-
top: 0.5em;
|
3583 |
-
font-size: 60px;
|
3584 |
-
left: 0;
|
3585 |
-
right: calc(100% - 60px);
|
3586 |
-
border-left: 2px solid #2ecc71;
|
3587 |
-
border-right: none !important;
|
3588 |
-
}
|
3589 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item:last-child .connector {
|
3590 |
-
display: none;
|
3591 |
-
}
|
3592 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box {
|
3593 |
-
z-index: 2;
|
3594 |
-
transition: all 0.5s;
|
3595 |
-
}
|
3596 |
-
@media (prefers-reduced-motion: reduce) {
|
3597 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box {
|
3598 |
-
transition: none;
|
3599 |
-
}
|
3600 |
-
}
|
3601 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box .eael-feature-list-icon-inner {
|
3602 |
-
background-color: #37368e;
|
3603 |
-
transition: all 0.5s;
|
3604 |
-
display: inline-flex;
|
3605 |
}
|
3606 |
-
|
3607 |
-
|
3608 |
-
|
3609 |
-
|
3610 |
}
|
3611 |
-
|
3612 |
-
|
3613 |
-
|
3614 |
-
|
3615 |
-
|
3616 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3617 |
text-align: center;
|
3618 |
-
display: inline-flex;
|
3619 |
-
display: flex;
|
3620 |
-
align-items: center;
|
3621 |
-
justify-content: center;
|
3622 |
-
}
|
3623 |
-
@media (prefers-reduced-motion: reduce) {
|
3624 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box .eael-feature-list-icon {
|
3625 |
-
transition: none;
|
3626 |
-
}
|
3627 |
-
}
|
3628 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box .eael-feature-list-icon i {
|
3629 |
-
width: 1em;
|
3630 |
-
height: 1em;
|
3631 |
position: relative;
|
3632 |
-
display: block;
|
3633 |
}
|
3634 |
-
|
|
|
|
|
3635 |
position: absolute;
|
3636 |
-
|
3637 |
-
transform:
|
3638 |
-
|
3639 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box .eael-feature-list-img {
|
3640 |
-
font-size: 8px;
|
3641 |
-
line-height: 1;
|
3642 |
-
max-width: inherit;
|
3643 |
-
}
|
3644 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-content-box {
|
3645 |
-
margin: 0 0 0 20px;
|
3646 |
-
}
|
3647 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-content-box .eael-feature-list-title {
|
3648 |
-
margin-top: -2px;
|
3649 |
-
line-height: 1.5em;
|
3650 |
-
}
|
3651 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-content-box .eael-feature-list-content {
|
3652 |
-
padding: 0;
|
3653 |
-
margin: 0;
|
3654 |
-
font-size: 14px;
|
3655 |
-
line-height: 1.5em;
|
3656 |
}
|
3657 |
-
|
3658 |
-
|
|
|
|
|
3659 |
}
|
3660 |
-
|
3661 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3662 |
}
|
3663 |
-
|
3664 |
-
|
|
|
|
|
|
|
3665 |
}
|
3666 |
-
|
3667 |
-
|
|
|
|
|
|
|
3668 |
}
|
3669 |
-
|
3670 |
-
|
3671 |
-
|
|
|
|
|
3672 |
}
|
3673 |
-
|
3674 |
-
|
|
|
|
|
|
|
3675 |
}
|
3676 |
-
|
3677 |
-
|
|
|
|
|
|
|
|
|
|
|
3678 |
}
|
3679 |
-
|
3680 |
-
|
|
|
|
|
3681 |
}
|
3682 |
-
|
3683 |
-
|
3684 |
position: relative;
|
|
|
3685 |
}
|
3686 |
-
|
3687 |
-
|
3688 |
-
|
3689 |
-
display: block;
|
3690 |
-
}
|
3691 |
-
}
|
3692 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern .eael-feature-list-item:before, .elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern .eael-feature-list-item:after {
|
3693 |
-
content: "";
|
3694 |
position: absolute;
|
3695 |
-
display: block;
|
3696 |
-
}
|
3697 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern .eael-feature-list-item:before {
|
3698 |
left: 0;
|
3699 |
top: 0;
|
3700 |
-
z-index: 1;
|
3701 |
-
border-left: 1px solid #000;
|
3702 |
-
border-right: none !important;
|
3703 |
height: 100%;
|
|
|
|
|
|
|
|
|
|
|
3704 |
}
|
3705 |
-
|
3706 |
-
|
3707 |
-
|
3708 |
-
|
3709 |
-
display: block;
|
3710 |
-
z-index: 2;
|
3711 |
-
border-bottom: 1px dashed #000;
|
3712 |
-
border-top: none !important;
|
3713 |
-
}
|
3714 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern .eael-feature-list-item .connector {
|
3715 |
-
display: none;
|
3716 |
-
}
|
3717 |
-
@media (min-width: 768px) {
|
3718 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern.-icon-position-right .eael-feature-list-item {
|
3719 |
-
padding: 0 50px 0 0;
|
3720 |
-
}
|
3721 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern.-icon-position-right .eael-feature-list-item:before {
|
3722 |
-
left: auto;
|
3723 |
-
right: 0;
|
3724 |
-
}
|
3725 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern.-icon-position-right .eael-feature-list-item:after {
|
3726 |
-
left: auto;
|
3727 |
-
right: 5px;
|
3728 |
-
top: 30px;
|
3729 |
-
}
|
3730 |
-
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern.-icon-position-right .eael-feature-list-item .connector {
|
3731 |
-
display: none;
|
3732 |
-
}
|
3733 |
-
}
|
3734 |
-
@media (min-width: 1025px) {
|
3735 |
-
.elementor-widget-eael-feature-list.-icon-position-left .eael-feature-list-content-box {
|
3736 |
-
margin-right: 0 !important;
|
3737 |
-
margin-top: 0 !important;
|
3738 |
-
margin-bottom: 0 !important;
|
3739 |
-
}
|
3740 |
-
.elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-content-box {
|
3741 |
-
margin-left: 0 !important;
|
3742 |
-
margin-top: 0 !important;
|
3743 |
-
margin-bottom: 0 !important;
|
3744 |
-
}
|
3745 |
-
.elementor-widget-eael-feature-list.-icon-position-top .eael-feature-list-content-box {
|
3746 |
-
margin-left: 0 !important;
|
3747 |
-
margin-right: 0 !important;
|
3748 |
-
margin-bottom: 0 !important;
|
3749 |
-
}
|
3750 |
-
.elementor-widget-eael-feature-list.-icon-position-left .eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-item {
|
3751 |
-
display: flex;
|
3752 |
-
}
|
3753 |
-
.elementor-widget-eael-feature-list.-icon-position-left .eael-feature-list-item {
|
3754 |
-
text-align: left;
|
3755 |
-
flex-direction: row;
|
3756 |
-
}
|
3757 |
-
.elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-item {
|
3758 |
-
text-align: right;
|
3759 |
-
flex-direction: row-reverse;
|
3760 |
-
}
|
3761 |
-
}
|
3762 |
-
@media (max-width: 1024px) {
|
3763 |
-
.elementor-widget-eael-feature-list.-tablet-icon-position-left .eael-feature-list-item, .elementor-widget-eael-feature-list.-tablet-icon-position-right .eael-feature-list-item {
|
3764 |
-
display: flex;
|
3765 |
-
}
|
3766 |
-
.elementor-widget-eael-feature-list.-tablet-icon-position-left .eael-feature-list-item {
|
3767 |
-
text-align: left;
|
3768 |
-
flex-direction: row;
|
3769 |
-
}
|
3770 |
-
.elementor-widget-eael-feature-list.-tablet-icon-position-right .eael-feature-list-item {
|
3771 |
-
text-align: right;
|
3772 |
-
flex-direction: row-reverse;
|
3773 |
-
}
|
3774 |
}
|
3775 |
-
|
3776 |
-
|
3777 |
-
|
3778 |
-
margin-top: 0 !important;
|
3779 |
-
margin-bottom: 0 !important;
|
3780 |
-
}
|
3781 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
3782 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
3783 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
3784 |
-
.eael-feature-list-item {
|
3785 |
-
padding: 0 0 0 50px;
|
3786 |
-
}
|
3787 |
}
|
3788 |
-
|
3789 |
-
|
3790 |
-
|
3791 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
3792 |
-
.eael-feature-list-item {
|
3793 |
-
padding: 0 0 0 30px;
|
3794 |
-
}
|
3795 |
}
|
3796 |
-
|
3797 |
-
|
3798 |
-
|
3799 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
3800 |
-
.eael-feature-list-item:before {
|
3801 |
-
left: 0;
|
3802 |
-
right: auto;
|
3803 |
-
}
|
3804 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
3805 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
3806 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
3807 |
-
.eael-feature-list-item:after {
|
3808 |
-
left: 5px;
|
3809 |
-
top: 30px;
|
3810 |
-
}
|
3811 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top .eael-feature-list-content-box {
|
3812 |
-
margin-left: 0 !important;
|
3813 |
-
margin-right: 0 !important;
|
3814 |
-
margin-bottom: 0 !important;
|
3815 |
-
}
|
3816 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
3817 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
3818 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
3819 |
-
.eael-feature-list-item {
|
3820 |
-
padding: 0 0 0 50px;
|
3821 |
-
}
|
3822 |
}
|
3823 |
-
|
3824 |
-
|
3825 |
-
|
3826 |
-
|
3827 |
-
.eael-feature-list-item {
|
3828 |
-
padding: 0 0 0 30px;
|
3829 |
-
}
|
3830 |
}
|
3831 |
-
|
3832 |
-
|
3833 |
-
|
3834 |
-
|
3835 |
-
|
3836 |
-
|
3837 |
-
|
3838 |
-
|
3839 |
-
|
3840 |
-
|
3841 |
-
|
3842 |
-
|
3843 |
-
|
3844 |
-
}
|
3845 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right .eael-feature-list-content-box {
|
3846 |
-
margin-left: 0 !important;
|
3847 |
-
margin-top: 0 !important;
|
3848 |
-
margin-bottom: 0 !important;
|
3849 |
-
}
|
3850 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
3851 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
3852 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
3853 |
-
.eael-feature-list-item {
|
3854 |
-
padding: 0 50px 0 0;
|
3855 |
-
}
|
3856 |
}
|
3857 |
-
|
3858 |
-
|
3859 |
-
|
3860 |
-
|
3861 |
-
|
3862 |
-
|
3863 |
-
|
3864 |
}
|
3865 |
-
|
3866 |
-
|
3867 |
-
|
3868 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
3869 |
-
.eael-feature-list-item:before {
|
3870 |
-
right: 0;
|
3871 |
-
left: auto;
|
3872 |
-
}
|
3873 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
3874 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
3875 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
3876 |
-
.eael-feature-list-item:after {
|
3877 |
-
left: auto;
|
3878 |
-
right: 5px;
|
3879 |
-
}
|
3880 |
}
|
3881 |
-
|
3882 |
-
|
3883 |
-
|
3884 |
-
|
3885 |
-
|
3886 |
-
|
3887 |
-
|
3888 |
-
|
3889 |
-
|
3890 |
-
|
3891 |
-
flex-direction: row;
|
3892 |
-
}
|
3893 |
-
.elementor-widget-eael-feature-list.-mobile-icon-position-right .eael-feature-list-item {
|
3894 |
-
text-align: right;
|
3895 |
-
flex-direction: row-reverse;
|
3896 |
-
}
|
3897 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-content-box {
|
3898 |
-
margin-right: 0 !important;
|
3899 |
-
margin-top: 0 !important;
|
3900 |
-
margin-bottom: 0 !important;
|
3901 |
-
}
|
3902 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3903 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3904 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3905 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3906 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3907 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3908 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3909 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3910 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3911 |
-
.eael-feature-list-item {
|
3912 |
-
padding: 0 0 0 50px;
|
3913 |
-
}
|
3914 |
}
|
3915 |
-
|
3916 |
-
|
3917 |
-
|
3918 |
-
|
3919 |
-
|
3920 |
-
|
3921 |
-
|
3922 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3923 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3924 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3925 |
-
.eael-feature-list-item {
|
3926 |
-
padding: 0 0 0 30px;
|
3927 |
-
}
|
3928 |
}
|
3929 |
-
|
3930 |
-
|
3931 |
-
|
3932 |
-
|
3933 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3934 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3935 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3936 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3937 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3938 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3939 |
-
.eael-feature-list-item:before {
|
3940 |
-
left: 0;
|
3941 |
-
right: auto;
|
3942 |
-
}
|
3943 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3944 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3945 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3946 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3947 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3948 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3949 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3950 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3951 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
3952 |
-
.eael-feature-list-item:after {
|
3953 |
-
left: 5px;
|
3954 |
-
}
|
3955 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-content-box {
|
3956 |
-
margin-left: 0 !important;
|
3957 |
-
margin-right: 0 !important;
|
3958 |
-
margin-bottom: 0 !important;
|
3959 |
-
}
|
3960 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3961 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3962 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3963 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3964 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3965 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3966 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3967 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3968 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3969 |
-
.eael-feature-list-item {
|
3970 |
-
padding: 0 0 0 50px;
|
3971 |
-
}
|
3972 |
}
|
3973 |
-
|
3974 |
-
|
3975 |
-
|
3976 |
-
|
3977 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3978 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3979 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3980 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3981 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3982 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3983 |
-
.eael-feature-list-item {
|
3984 |
-
padding: 0 0 0 30px;
|
3985 |
-
}
|
3986 |
}
|
3987 |
-
|
3988 |
-
|
3989 |
-
|
3990 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3991 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3992 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3993 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3994 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3995 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3996 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
3997 |
-
.eael-feature-list-item:before {
|
3998 |
-
left: 0;
|
3999 |
-
right: auto;
|
4000 |
-
}
|
4001 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
4002 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
4003 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
4004 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
4005 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
4006 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
4007 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
4008 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
4009 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
4010 |
-
.eael-feature-list-item:after {
|
4011 |
-
left: 5px;
|
4012 |
-
}
|
4013 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-content-box {
|
4014 |
-
margin-left: 0 !important;
|
4015 |
-
margin-top: 0 !important;
|
4016 |
-
margin-bottom: 0 !important;
|
4017 |
-
}
|
4018 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4019 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4020 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4021 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4022 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4023 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4024 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4025 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4026 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4027 |
-
.eael-feature-list-item {
|
4028 |
-
padding: 0 50px 0 0;
|
4029 |
-
}
|
4030 |
}
|
4031 |
-
|
4032 |
-
|
4033 |
-
|
4034 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4035 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4036 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4037 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4038 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4039 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4040 |
-
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4041 |
-
.eael-feature-list-item {
|
4042 |
-
padding: 0 30px 0 0;
|
4043 |
-
}
|
4044 |
}
|
4045 |
-
|
4046 |
-
|
4047 |
-
|
4048 |
-
|
4049 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4050 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4051 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4052 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4053 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4054 |
-
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4055 |
-
.eael-feature-list-item:before {
|
4056 |
-
right: 0;
|
4057 |
-
left: auto;
|
4058 |
-
}
|
4059 |
-
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4060 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4061 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4062 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4063 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4064 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4065 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4066 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4067 |
-
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
4068 |
-
.eael-feature-list-item:after {
|
4069 |
-
left: auto;
|
4070 |
-
right: 5px;
|
4071 |
-
}
|
4072 |
}
|
4073 |
|
4074 |
/*---------------------------*/
|
688 |
}
|
689 |
}
|
690 |
|
691 |
+
@-webkit-keyframes "loaderSpin" {
|
692 |
+
0% {
|
693 |
+
transform: rotate(0deg);
|
694 |
+
}
|
695 |
+
100% {
|
696 |
+
transform: rotate(360deg);
|
697 |
+
}
|
698 |
+
}
|
699 |
+
@keyframes "loaderSpin" {
|
700 |
+
0% {
|
701 |
+
transform: rotate(0deg);
|
702 |
+
}
|
703 |
+
100% {
|
704 |
+
transform: rotate(360deg);
|
705 |
+
}
|
706 |
+
}
|
707 |
+
.eael-button-wrap,
|
708 |
+
.eael-load-more-button-wrap {
|
709 |
+
display: flex;
|
710 |
+
}
|
711 |
+
|
712 |
+
.eael-button,
|
713 |
+
.eael-load-more-button {
|
714 |
+
display: flex !important;
|
715 |
+
align-items: center;
|
716 |
+
justify-content: center;
|
717 |
+
padding: 1em 2em;
|
718 |
+
border: 0px solid;
|
719 |
+
font-size: 16px;
|
720 |
+
overflow: hidden;
|
721 |
+
}
|
722 |
+
.eael-button > span,
|
723 |
+
.eael-load-more-button > span {
|
724 |
+
margin-left: -20px;
|
725 |
+
}
|
726 |
+
.eael-button .eael-btn-loader,
|
727 |
+
.eael-load-more-button .eael-btn-loader {
|
728 |
+
border-radius: 50%;
|
729 |
+
width: 20px;
|
730 |
+
height: 20px;
|
731 |
+
font-size: 10px;
|
732 |
+
position: relative;
|
733 |
+
text-indent: -9999em;
|
734 |
+
border-top: 4px solid rgba(255, 255, 255, 0.2);
|
735 |
+
border-right: 4px solid rgba(255, 255, 255, 0.2);
|
736 |
+
border-bottom: 4px solid rgba(255, 255, 255, 0.2);
|
737 |
+
border-left: 4px solid #ffffff;
|
738 |
+
transform: translateZ(0);
|
739 |
+
-webkit-animation: loaderSpin 1.1s infinite linear;
|
740 |
+
animation: loaderSpin 1.1s infinite linear;
|
741 |
+
left: -100%;
|
742 |
+
top: auto;
|
743 |
+
margin-right: 5px;
|
744 |
+
transition: all 0.2s;
|
745 |
+
}
|
746 |
+
.eael-button .eael-btn-loader:after,
|
747 |
+
.eael-load-more-button .eael-btn-loader:after {
|
748 |
+
border-radius: 50%;
|
749 |
+
width: 20px;
|
750 |
+
height: 20px;
|
751 |
+
}
|
752 |
+
.eael-button.button--loading > span,
|
753 |
+
.eael-load-more-button.button--loading > span {
|
754 |
+
margin-left: 0;
|
755 |
+
}
|
756 |
+
.eael-button.button--loading .eael-btn-loader,
|
757 |
+
.eael-load-more-button.button--loading .eael-btn-loader {
|
758 |
+
left: 0;
|
759 |
+
}
|
760 |
+
|
761 |
/*--------------------------------*/
|
762 |
/* 11. Contact Form 7 Styles
|
763 |
/*--------------------------------*/
|
851 |
font-weight: normal;
|
852 |
}
|
853 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
854 |
.eael-ticker-wrap {
|
855 |
overflow: hidden;
|
856 |
display: flex;
|
914 |
justify-content: center;
|
915 |
}
|
916 |
|
917 |
+
/*---------------------------------*/
|
918 |
+
/* 05. Countdown Styles
|
919 |
+
/*---------------------------------*/
|
920 |
+
/*--- General ---*/
|
921 |
+
.eael-countdown-items {
|
922 |
+
list-style: none;
|
923 |
+
margin: 0;
|
924 |
+
padding: 0;
|
925 |
+
display: table;
|
926 |
+
table-layout: fixed;
|
927 |
+
width: 100%;
|
928 |
+
}
|
929 |
+
|
930 |
+
.eael-countdown-items > li {
|
931 |
+
list-style: none;
|
932 |
+
margin: 0;
|
933 |
+
padding: 0;
|
934 |
+
display: table-cell;
|
935 |
+
position: relative;
|
936 |
+
}
|
937 |
+
|
938 |
+
.eael-countdown-item > div {
|
939 |
+
text-align: center;
|
940 |
+
padding: 20px;
|
941 |
+
}
|
942 |
+
|
943 |
+
.eael-countdown-label-block .eael-countdown-digits,
|
944 |
+
.eael-countdown-label-block .eael-countdown-label {
|
945 |
+
display: block;
|
946 |
+
text-align: center;
|
947 |
+
}
|
948 |
+
|
949 |
+
.eael-countdown-digits {
|
950 |
+
font-size: 54px;
|
951 |
+
line-height: 1;
|
952 |
+
}
|
953 |
+
|
954 |
+
.eael-countdown-label {
|
955 |
+
font-size: 18px;
|
956 |
+
line-height: 1;
|
957 |
+
color: #ffffff;
|
958 |
+
}
|
959 |
+
|
960 |
+
.eael-countdown-show-separator .eael-countdown-digits::after {
|
961 |
+
content: ":";
|
962 |
+
position: absolute;
|
963 |
+
left: 98%;
|
964 |
+
z-index: 9999;
|
965 |
+
}
|
966 |
+
|
967 |
+
.eael-countdown-item:last-child .eael-countdown-digits::after {
|
968 |
+
display: none;
|
969 |
+
}
|
970 |
+
|
971 |
+
/*--- Style 1 ---*/
|
972 |
+
.eael-countdown-items.style-1 .eael-countdown-item > div {
|
973 |
+
background: #262625;
|
974 |
+
}
|
975 |
+
|
976 |
/*--------------------------------*/
|
977 |
/* 08. Creative Button styles
|
978 |
/*--------------------------------*/
|
1228 |
margin-left: 5px;
|
1229 |
}
|
1230 |
|
1231 |
+
@charset "UTF-8";
|
1232 |
+
table.eael-data-table thead .sorting_asc,
|
1233 |
+
table.eael-data-table thead .sorting_desc,
|
1234 |
+
table.eael-data-table thead .sorting {
|
1235 |
+
position: relative;
|
1236 |
+
z-index: 0;
|
1237 |
+
outline: 0;
|
1238 |
+
cursor: pointer;
|
|
|
|
|
|
|
1239 |
}
|
1240 |
|
1241 |
+
table.eael-data-table thead .sorting_asc:after,
|
1242 |
+
table.eael-data-table thead .sorting_desc:after,
|
1243 |
+
table.eael-data-table thead .sorting:after {
|
1244 |
+
position: absolute;
|
1245 |
+
top: 50%;
|
1246 |
+
right: 10px;
|
1247 |
+
font-family: "FontAwesome";
|
1248 |
+
color: #fff;
|
1249 |
+
z-index: 1;
|
1250 |
+
transform: translateY(-50%);
|
1251 |
}
|
1252 |
|
1253 |
+
.eael-data-table-wrap .eael-data-tables_wrapper {
|
1254 |
+
display: flex;
|
1255 |
+
flex-flow: row wrap;
|
1256 |
+
justify-content: flex-start;
|
1257 |
+
width: 100%;
|
1258 |
}
|
1259 |
|
1260 |
+
.eael-data-table-wrap .eael-data-tables_filter {
|
1261 |
+
flex-grow: 1;
|
1262 |
+
flex-basis: 50%;
|
1263 |
+
text-align: right;
|
1264 |
}
|
1265 |
|
1266 |
+
.eael-data-table-wrap .eael-data-tables_filter label {
|
1267 |
+
font-weight: 700;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1268 |
}
|
1269 |
|
1270 |
.eael-data-table-wrap .eael-data-tables_filter label input[type="search"] {
|
2450 |
padding: 10px 25px;
|
2451 |
}
|
2452 |
|
2453 |
+
/*----------------------------*/
|
2454 |
+
/* 35. Feature List
|
2455 |
+
/*----------------------------*/
|
2456 |
+
.elementor-widget-eael-feature-list.-icon-position-left .connector-type-modern.rhombus .eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top .connector-type-modern.rhombus .eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right .connector-type-modern.rhombus .eael-feature-list-item:before {
|
2457 |
+
top: 3px !important;
|
2458 |
}
|
2459 |
+
.elementor-widget-eael-feature-list.-icon-position-left .connector-type-modern.rhombus .eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top .connector-type-modern.rhombus .eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right .connector-type-modern.rhombus .eael-feature-list-item:after {
|
2460 |
+
top: 45px !important;
|
|
|
|
|
2461 |
}
|
2462 |
+
.elementor-widget-eael-feature-list.-icon-position-right .connector, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .connector {
|
2463 |
+
right: 0;
|
2464 |
+
left: calc(100% - 70px);
|
|
|
|
|
2465 |
}
|
2466 |
+
.elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item {
|
2467 |
+
padding: 0 50px 0 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2468 |
}
|
2469 |
+
@media (max-width: 767px) {
|
2470 |
+
.elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item {
|
2471 |
+
padding: 0 30px 0 0;
|
2472 |
+
}
|
|
|
|
|
2473 |
}
|
2474 |
+
.elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item:before {
|
2475 |
+
left: auto;
|
2476 |
+
right: 0;
|
|
|
|
|
|
|
|
|
2477 |
}
|
2478 |
+
.elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern .eael-feature-list-item:after {
|
2479 |
+
left: auto;
|
2480 |
+
right: 5px;
|
2481 |
+
top: 30px;
|
2482 |
}
|
2483 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items {
|
2484 |
+
list-style-type: none;
|
2485 |
+
margin: 0;
|
2486 |
+
padding: 0;
|
|
|
2487 |
}
|
2488 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item {
|
2489 |
+
position: relative;
|
|
|
|
|
|
|
2490 |
}
|
2491 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .connector {
|
2492 |
+
display: block;
|
2493 |
position: absolute;
|
2494 |
+
width: 0;
|
2495 |
+
margin: 0 auto;
|
|
|
|
|
2496 |
z-index: 1;
|
2497 |
+
height: 100%;
|
2498 |
+
top: 0.5em;
|
2499 |
+
font-size: 60px;
|
2500 |
+
left: 0;
|
2501 |
+
right: calc(100% - 60px);
|
2502 |
+
border-left: 2px solid #2ecc71;
|
2503 |
+
border-right: none !important;
|
2504 |
}
|
2505 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item:last-child .connector {
|
|
|
2506 |
display: none;
|
2507 |
}
|
2508 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box {
|
2509 |
+
z-index: 2;
|
2510 |
+
transition: all 0.5s;
|
2511 |
+
}
|
2512 |
+
@media (prefers-reduced-motion: reduce) {
|
2513 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box {
|
2514 |
+
transition: none;
|
2515 |
+
}
|
2516 |
+
}
|
2517 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box .eael-feature-list-icon-inner {
|
2518 |
+
background-color: #37368e;
|
2519 |
+
transition: all 0.5s;
|
2520 |
+
display: inline-flex;
|
2521 |
+
}
|
2522 |
+
@media (prefers-reduced-motion: reduce) {
|
2523 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box .eael-feature-list-icon-inner {
|
2524 |
+
transition: none;
|
2525 |
+
}
|
2526 |
+
}
|
2527 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box .eael-feature-list-icon {
|
2528 |
+
padding: 0.5em;
|
2529 |
+
transition: all 0.5s;
|
2530 |
+
font-size: 30px;
|
2531 |
+
line-height: 1;
|
2532 |
+
color: #37368e;
|
2533 |
+
text-align: center;
|
2534 |
+
display: inline-flex;
|
2535 |
display: flex;
|
|
|
2536 |
align-items: center;
|
2537 |
justify-content: center;
|
|
|
|
|
|
|
|
|
|
|
|
|
2538 |
}
|
2539 |
+
@media (prefers-reduced-motion: reduce) {
|
2540 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box .eael-feature-list-icon {
|
2541 |
+
transition: none;
|
2542 |
+
}
|
2543 |
}
|
2544 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box .eael-feature-list-icon i {
|
2545 |
+
width: 1em;
|
2546 |
+
height: 1em;
|
2547 |
+
position: relative;
|
2548 |
+
display: block;
|
2549 |
}
|
2550 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box .eael-feature-list-icon i:before {
|
2551 |
+
position: absolute;
|
2552 |
+
left: 50%;
|
2553 |
+
transform: translateX(-50%);
|
|
|
2554 |
}
|
2555 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-icon-box .eael-feature-list-img {
|
2556 |
+
font-size: 8px;
|
2557 |
+
line-height: 1;
|
2558 |
+
max-width: inherit;
|
2559 |
}
|
2560 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-content-box {
|
2561 |
+
margin: 0 0 0 20px;
|
|
|
|
|
2562 |
}
|
2563 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-content-box .eael-feature-list-title {
|
2564 |
+
margin-top: -2px;
|
2565 |
+
line-height: 1.5em;
|
|
|
2566 |
}
|
2567 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items .eael-feature-list-item .eael-feature-list-content-box .eael-feature-list-content {
|
2568 |
+
padding: 0;
|
2569 |
+
margin: 0;
|
2570 |
+
font-size: 14px;
|
2571 |
+
line-height: 1.5em;
|
2572 |
}
|
2573 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.stacked .eael-feature-list-icon-box .eael-feature-list-icon {
|
2574 |
+
color: #fff;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2575 |
}
|
2576 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.framed .eael-feature-list-icon-box .eael-feature-list-icon {
|
2577 |
+
background-color: #fff;
|
|
|
|
|
2578 |
}
|
2579 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.circle .eael-feature-list-icon-box .eael-feature-list-icon-inner {
|
|
|
|
|
|
|
|
|
|
|
|
|
2580 |
border-radius: 50%;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2581 |
}
|
2582 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.circle .eael-feature-list-icon-box .eael-feature-list-icon-inner .eael-feature-list-icon {
|
2583 |
+
border-radius: 50%;
|
|
|
2584 |
}
|
2585 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.rhombus .eael-feature-list-icon-box .eael-feature-list-icon-inner {
|
2586 |
+
transform: rotate(45deg);
|
2587 |
+
margin: 15px;
|
2588 |
}
|
2589 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.rhombus .eael-feature-list-icon-box .eael-feature-list-icon i {
|
2590 |
+
transform: rotate(-45deg);
|
|
|
|
|
|
|
2591 |
}
|
2592 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.rhombus .eael-feature-list-icon-box .eael-feature-list-icon img {
|
2593 |
+
transform: rotate(-45deg);
|
|
|
2594 |
}
|
2595 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.rhombus .eael-feature-list-content-box .eael-feature-list-title {
|
2596 |
+
margin-top: 15px;
|
|
|
|
|
2597 |
}
|
2598 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern .eael-feature-list-item {
|
2599 |
+
padding: 0 0 0 50px;
|
2600 |
position: relative;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2601 |
}
|
2602 |
+
@media (max-width: 767px) {
|
2603 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern .eael-feature-list-item {
|
2604 |
+
padding: 0 0 0 30px;
|
2605 |
+
display: block;
|
2606 |
+
}
|
|
|
|
|
2607 |
}
|
2608 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern .eael-feature-list-item:before, .elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern .eael-feature-list-item:after {
|
2609 |
+
content: "";
|
2610 |
+
position: absolute;
|
2611 |
+
display: block;
|
2612 |
}
|
2613 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern .eael-feature-list-item:before {
|
2614 |
+
left: 0;
|
2615 |
+
top: 0;
|
2616 |
+
z-index: 1;
|
2617 |
+
border-left: 1px solid #000;
|
2618 |
+
border-right: none !important;
|
2619 |
+
height: 100%;
|
2620 |
}
|
2621 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern .eael-feature-list-item:after {
|
2622 |
+
left: 5px;
|
2623 |
+
top: 30px;
|
2624 |
+
width: 23px;
|
2625 |
+
display: block;
|
2626 |
+
z-index: 2;
|
2627 |
+
border-bottom: 1px dashed #000;
|
2628 |
+
border-top: none !important;
|
2629 |
}
|
2630 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern .eael-feature-list-item .connector {
|
2631 |
+
display: none;
|
|
|
2632 |
}
|
2633 |
+
@media (min-width: 768px) {
|
2634 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern.-icon-position-right .eael-feature-list-item {
|
2635 |
+
padding: 0 50px 0 0;
|
2636 |
+
}
|
2637 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern.-icon-position-right .eael-feature-list-item:before {
|
2638 |
+
left: auto;
|
2639 |
+
right: 0;
|
2640 |
+
}
|
2641 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern.-icon-position-right .eael-feature-list-item:after {
|
2642 |
+
left: auto;
|
2643 |
+
right: 5px;
|
2644 |
+
top: 30px;
|
2645 |
+
}
|
2646 |
+
.elementor-widget-eael-feature-list .eael-feature-list-items.connector-type-modern.-icon-position-right .eael-feature-list-item .connector {
|
2647 |
+
display: none;
|
2648 |
+
}
|
2649 |
}
|
2650 |
+
@media (min-width: 1025px) {
|
2651 |
+
.elementor-widget-eael-feature-list.-icon-position-left .eael-feature-list-content-box {
|
2652 |
+
margin-right: 0 !important;
|
2653 |
+
margin-top: 0 !important;
|
2654 |
+
margin-bottom: 0 !important;
|
2655 |
+
}
|
2656 |
+
.elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-content-box {
|
2657 |
+
margin-left: 0 !important;
|
2658 |
+
margin-top: 0 !important;
|
2659 |
+
margin-bottom: 0 !important;
|
2660 |
+
}
|
2661 |
+
.elementor-widget-eael-feature-list.-icon-position-top .eael-feature-list-content-box {
|
2662 |
+
margin-left: 0 !important;
|
2663 |
+
margin-right: 0 !important;
|
2664 |
+
margin-bottom: 0 !important;
|
2665 |
+
}
|
2666 |
+
.elementor-widget-eael-feature-list.-icon-position-left .eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-item {
|
2667 |
+
display: flex;
|
2668 |
+
}
|
2669 |
+
.elementor-widget-eael-feature-list.-icon-position-left .eael-feature-list-item {
|
2670 |
+
text-align: left;
|
2671 |
+
flex-direction: row;
|
2672 |
+
}
|
2673 |
+
.elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-item {
|
2674 |
+
text-align: right;
|
2675 |
+
flex-direction: row-reverse;
|
2676 |
+
}
|
2677 |
}
|
2678 |
+
@media (max-width: 1024px) {
|
2679 |
+
.elementor-widget-eael-feature-list.-tablet-icon-position-left .eael-feature-list-item, .elementor-widget-eael-feature-list.-tablet-icon-position-right .eael-feature-list-item {
|
2680 |
+
display: flex;
|
2681 |
+
}
|
2682 |
+
.elementor-widget-eael-feature-list.-tablet-icon-position-left .eael-feature-list-item {
|
2683 |
+
text-align: left;
|
2684 |
+
flex-direction: row;
|
2685 |
+
}
|
2686 |
+
.elementor-widget-eael-feature-list.-tablet-icon-position-right .eael-feature-list-item {
|
2687 |
+
text-align: right;
|
2688 |
+
flex-direction: row-reverse;
|
2689 |
+
}
|
2690 |
}
|
2691 |
+
@media (min-width: 768px) and (max-width: 1024px) {
|
2692 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left .eael-feature-list-content-box {
|
2693 |
+
margin-right: 0 !important;
|
2694 |
+
margin-top: 0 !important;
|
2695 |
+
margin-bottom: 0 !important;
|
2696 |
+
}
|
2697 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
2698 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
2699 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
2700 |
+
.eael-feature-list-item {
|
2701 |
+
padding: 0 0 0 50px;
|
2702 |
+
}
|
2703 |
}
|
2704 |
+
@media (min-width: 768px) and (max-width: 1024px) and (max-width: 767px) {
|
2705 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
2706 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
2707 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
2708 |
+
.eael-feature-list-item {
|
2709 |
+
padding: 0 0 0 30px;
|
2710 |
+
}
|
2711 |
}
|
2712 |
+
@media (min-width: 768px) and (max-width: 1024px) {
|
2713 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
2714 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
2715 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
2716 |
+
.eael-feature-list-item:before {
|
2717 |
+
left: 0;
|
2718 |
+
right: auto;
|
2719 |
+
}
|
2720 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
2721 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
2722 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left .eael-feature-list-items.connector-type-modern
|
2723 |
+
.eael-feature-list-item:after {
|
2724 |
+
left: 5px;
|
2725 |
+
top: 30px;
|
2726 |
+
}
|
2727 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top .eael-feature-list-content-box {
|
2728 |
+
margin-left: 0 !important;
|
2729 |
+
margin-right: 0 !important;
|
2730 |
+
margin-bottom: 0 !important;
|
2731 |
+
}
|
2732 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
2733 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
2734 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
2735 |
+
.eael-feature-list-item {
|
2736 |
+
padding: 0 0 0 50px;
|
2737 |
+
}
|
2738 |
}
|
2739 |
+
@media (min-width: 768px) and (max-width: 1024px) and (max-width: 767px) {
|
2740 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
2741 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
2742 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
2743 |
+
.eael-feature-list-item {
|
2744 |
+
padding: 0 0 0 30px;
|
2745 |
+
}
|
2746 |
+
}
|
2747 |
+
@media (min-width: 768px) and (max-width: 1024px) {
|
2748 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
2749 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
2750 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
2751 |
+
.eael-feature-list-item:before {
|
2752 |
+
left: 0;
|
2753 |
+
right: auto;
|
2754 |
+
}
|
2755 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
2756 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
2757 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top .eael-feature-list-items.connector-type-modern
|
2758 |
+
.eael-feature-list-item:after {
|
2759 |
+
left: 5px;
|
2760 |
+
}
|
2761 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right .eael-feature-list-content-box {
|
2762 |
+
margin-left: 0 !important;
|
2763 |
+
margin-top: 0 !important;
|
2764 |
+
margin-bottom: 0 !important;
|
2765 |
+
}
|
2766 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
2767 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
2768 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
2769 |
+
.eael-feature-list-item {
|
2770 |
+
padding: 0 50px 0 0;
|
2771 |
+
}
|
2772 |
+
}
|
2773 |
+
@media (min-width: 768px) and (max-width: 1024px) and (max-width: 767px) {
|
2774 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
2775 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
2776 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
2777 |
+
.eael-feature-list-item {
|
2778 |
+
padding: 0 30px 0 0;
|
2779 |
+
}
|
2780 |
+
}
|
2781 |
+
@media (min-width: 768px) and (max-width: 1024px) {
|
2782 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
2783 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
2784 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
2785 |
+
.eael-feature-list-item:before {
|
2786 |
+
right: 0;
|
2787 |
+
left: auto;
|
2788 |
+
}
|
2789 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
2790 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
2791 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right .eael-feature-list-items.connector-type-modern
|
2792 |
+
.eael-feature-list-item:after {
|
2793 |
+
left: auto;
|
2794 |
+
right: 5px;
|
2795 |
+
}
|
2796 |
+
}
|
2797 |
+
@media (max-width: 767px) {
|
2798 |
+
.elementor-widget-eael-feature-list.-icon-position-left .eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right .eael-feature-list-item, .elementor-widget-eael-feature-list.-tablet-icon-position-left .eael-feature-list-item, .elementor-widget-eael-feature-list.-tablet-icon-position-right .eael-feature-list-item {
|
2799 |
+
display: block;
|
2800 |
+
text-align: left;
|
2801 |
+
}
|
2802 |
+
.elementor-widget-eael-feature-list.-mobile-icon-position-left .eael-feature-list-item, .elementor-widget-eael-feature-list.-mobile-icon-position-right .eael-feature-list-item {
|
2803 |
+
display: flex;
|
2804 |
+
}
|
2805 |
+
.elementor-widget-eael-feature-list.-mobile-icon-position-left .eael-feature-list-item {
|
2806 |
+
text-align: left;
|
2807 |
+
flex-direction: row;
|
2808 |
+
}
|
2809 |
+
.elementor-widget-eael-feature-list.-mobile-icon-position-right .eael-feature-list-item {
|
2810 |
+
text-align: right;
|
2811 |
+
flex-direction: row-reverse;
|
2812 |
+
}
|
2813 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-content-box {
|
2814 |
+
margin-right: 0 !important;
|
2815 |
+
margin-top: 0 !important;
|
2816 |
+
margin-bottom: 0 !important;
|
2817 |
+
}
|
2818 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2819 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2820 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2821 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2822 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2823 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2824 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2825 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2826 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2827 |
+
.eael-feature-list-item {
|
2828 |
+
padding: 0 0 0 50px;
|
2829 |
+
}
|
2830 |
+
}
|
2831 |
+
@media (max-width: 767px) and (max-width: 767px) {
|
2832 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2833 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2834 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2835 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2836 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2837 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2838 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2839 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2840 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2841 |
+
.eael-feature-list-item {
|
2842 |
+
padding: 0 0 0 30px;
|
2843 |
+
}
|
2844 |
+
}
|
2845 |
+
@media (max-width: 767px) {
|
2846 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2847 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2848 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2849 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2850 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2851 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2852 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2853 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2854 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2855 |
+
.eael-feature-list-item:before {
|
2856 |
+
left: 0;
|
2857 |
+
right: auto;
|
2858 |
+
}
|
2859 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2860 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2861 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2862 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2863 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2864 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2865 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2866 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2867 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-left .eael-feature-list-items.connector-type-modern
|
2868 |
+
.eael-feature-list-item:after {
|
2869 |
+
left: 5px;
|
2870 |
+
}
|
2871 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-content-box {
|
2872 |
+
margin-left: 0 !important;
|
2873 |
+
margin-right: 0 !important;
|
2874 |
+
margin-bottom: 0 !important;
|
2875 |
+
}
|
2876 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2877 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2878 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2879 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2880 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2881 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2882 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2883 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2884 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2885 |
+
.eael-feature-list-item {
|
2886 |
+
padding: 0 0 0 50px;
|
2887 |
+
}
|
2888 |
+
}
|
2889 |
+
@media (max-width: 767px) and (max-width: 767px) {
|
2890 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2891 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2892 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2893 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2894 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2895 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2896 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2897 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2898 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2899 |
+
.eael-feature-list-item {
|
2900 |
+
padding: 0 0 0 30px;
|
2901 |
+
}
|
2902 |
+
}
|
2903 |
+
@media (max-width: 767px) {
|
2904 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2905 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2906 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2907 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2908 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2909 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2910 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2911 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2912 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2913 |
+
.eael-feature-list-item:before {
|
2914 |
+
left: 0;
|
2915 |
+
right: auto;
|
2916 |
+
}
|
2917 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2918 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2919 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2920 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2921 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2922 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2923 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2924 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2925 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-top .eael-feature-list-items.connector-type-modern
|
2926 |
+
.eael-feature-list-item:after {
|
2927 |
+
left: 5px;
|
2928 |
+
}
|
2929 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-content-box, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-content-box {
|
2930 |
+
margin-left: 0 !important;
|
2931 |
+
margin-top: 0 !important;
|
2932 |
+
margin-bottom: 0 !important;
|
2933 |
+
}
|
2934 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2935 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2936 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2937 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2938 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2939 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2940 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2941 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2942 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2943 |
+
.eael-feature-list-item {
|
2944 |
+
padding: 0 50px 0 0;
|
2945 |
+
}
|
2946 |
+
}
|
2947 |
+
@media (max-width: 767px) and (max-width: 767px) {
|
2948 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2949 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2950 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2951 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2952 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2953 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2954 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2955 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2956 |
+
.eael-feature-list-item, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2957 |
+
.eael-feature-list-item {
|
2958 |
+
padding: 0 30px 0 0;
|
2959 |
+
}
|
2960 |
+
}
|
2961 |
+
@media (max-width: 767px) {
|
2962 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2963 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2964 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2965 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2966 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2967 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2968 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2969 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2970 |
+
.eael-feature-list-item:before, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2971 |
+
.eael-feature-list-item:before {
|
2972 |
+
right: 0;
|
2973 |
+
left: auto;
|
2974 |
+
}
|
2975 |
+
.elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2976 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2977 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-left.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2978 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2979 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2980 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-right.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2981 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-left.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2982 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-right.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2983 |
+
.eael-feature-list-item:after, .elementor-widget-eael-feature-list.-icon-position-top.-tablet-icon-position-top.-mobile-icon-position-right .eael-feature-list-items.connector-type-modern
|
2984 |
+
.eael-feature-list-item:after {
|
2985 |
+
left: auto;
|
2986 |
+
right: 5px;
|
2987 |
+
}
|
2988 |
+
}
|
2989 |
+
|
2990 |
+
/*------------------------------*/
|
2991 |
+
/* 27. Filterable Gallery
|
2992 |
+
/*------------------------------*/
|
2993 |
+
.eael-filter-gallery-control {
|
2994 |
+
width: 100%;
|
2995 |
+
}
|
2996 |
+
|
2997 |
+
.eael-filter-gallery-control ul,
|
2998 |
+
.eael-filter-gallery-control ul li {
|
2999 |
+
text-align: center;
|
3000 |
+
}
|
3001 |
+
|
3002 |
+
.eael-filter-gallery-control ul {
|
3003 |
+
margin: 0px 0px 20px 0px;
|
3004 |
+
padding: 0px;
|
3005 |
+
text-align: center;
|
3006 |
+
}
|
3007 |
+
|
3008 |
+
.eael-filter-gallery-control {
|
3009 |
+
display: flex;
|
3010 |
+
flex-flow: 1 1 auto;
|
3011 |
+
align-items: center;
|
3012 |
+
justify-content: center;
|
3013 |
+
flex-flow: row wrap;
|
3014 |
+
padding: 0px;
|
3015 |
+
margin: 0px;
|
3016 |
+
}
|
3017 |
+
|
3018 |
+
.eael-filter-gallery-control ul li {
|
3019 |
+
list-style: none;
|
3020 |
+
font-size: 24px;
|
3021 |
+
display: inline-block;
|
3022 |
+
text-align: center;
|
3023 |
+
}
|
3024 |
+
|
3025 |
+
.eael-filter-gallery-control ul li a.control {
|
3026 |
+
font-family: 'Montserrat', sans-serif;
|
3027 |
+
font-size: 16px;
|
3028 |
+
font-weight: 600;
|
3029 |
+
padding: 10px 25px;
|
3030 |
+
margin: 10px 6px;
|
3031 |
+
}
|
3032 |
+
|
3033 |
+
.eael-filter-gallery-container {
|
3034 |
+
text-align: justify;
|
3035 |
+
font-size: 0.1px;
|
3036 |
+
}
|
3037 |
+
|
3038 |
+
.eael-filter-gallery-container:after {
|
3039 |
+
content: '';
|
3040 |
+
display: inline-block;
|
3041 |
+
width: 100%;
|
3042 |
+
}
|
3043 |
+
|
3044 |
+
.eael-filter-gallery-container:not(.eael-cards) .item:before {
|
3045 |
+
content: '';
|
3046 |
+
display: inline-block;
|
3047 |
+
padding-top: 56.25%;
|
3048 |
+
}
|
3049 |
+
|
3050 |
+
.eael-filter-gallery-container .item .caption {
|
3051 |
+
position: absolute;
|
3052 |
+
display: flex;
|
3053 |
+
flex-flow: 1 1 100%;
|
3054 |
+
align-items: center;
|
3055 |
+
justify-content: center;
|
3056 |
+
z-index: 1;
|
3057 |
+
top: 0px;
|
3058 |
+
left: 0px;
|
3059 |
+
right: 0px;
|
3060 |
+
bottom: 0px;
|
3061 |
+
transition: transform .4s;
|
3062 |
+
}
|
3063 |
+
|
3064 |
+
.eael-filter-gallery-container.eael-cards .item .caption {
|
3065 |
+
display: none;
|
3066 |
+
}
|
3067 |
+
|
3068 |
+
.eael-filter-gallery-container.eael-cards .item .item-img .caption {
|
3069 |
+
position: absolute;
|
3070 |
+
display: flex;
|
3071 |
+
flex-flow: 1 1 100%;
|
3072 |
+
align-items: center;
|
3073 |
+
justify-content: center;
|
3074 |
+
z-index: 10;
|
3075 |
+
top: 0px;
|
3076 |
+
left: 0px;
|
3077 |
+
right: 0px;
|
3078 |
+
bottom: 0px;
|
3079 |
+
transition: transform .4s;
|
3080 |
+
}
|
3081 |
+
|
3082 |
+
.gallery-item-caption-over {
|
3083 |
+
width: 100%;
|
3084 |
+
height: auto;
|
3085 |
+
}
|
3086 |
+
|
3087 |
+
a.eael-gallery-load-more, a.eael-gallery-load-more:hover {
|
3088 |
+
text-decoration: none;
|
3089 |
+
}
|
3090 |
+
|
3091 |
+
/*--- Caption Animation ---*/
|
3092 |
+
.eael-filter-gallery-container .item .caption.eael-zoom-in,
|
3093 |
+
.eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-zoom-in {
|
3094 |
+
transform: scale(0);
|
3095 |
+
}
|
3096 |
+
|
3097 |
+
.eael-filter-gallery-container .item:hover .caption.eael-zoom-in,
|
3098 |
+
.eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-zoom-in {
|
3099 |
+
transform: scale(1);
|
3100 |
+
}
|
3101 |
+
|
3102 |
+
.eael-filter-gallery-container .item .caption.eael-slide-left,
|
3103 |
+
.eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-slide-left {
|
3104 |
+
transform: translateX(-100%);
|
3105 |
+
}
|
3106 |
+
|
3107 |
+
.eael-filter-gallery-container .item:hover .caption.eael-slide-left,
|
3108 |
+
.eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-slide-left {
|
3109 |
+
transform: translateX(0%);
|
3110 |
+
}
|
3111 |
+
|
3112 |
+
.eael-filter-gallery-container .item .caption.eael-slide-right,
|
3113 |
+
.eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-slide-right {
|
3114 |
+
transform: translateX(100%);
|
3115 |
+
}
|
3116 |
+
|
3117 |
+
.eael-filter-gallery-container .item:hover .caption.eael-slide-right,
|
3118 |
+
.eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-slide-right {
|
3119 |
+
transform: translateX(0%);
|
3120 |
+
}
|
3121 |
+
|
3122 |
+
.eael-filter-gallery-container .item .caption.eael-slide-top,
|
3123 |
+
.eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-slide-top {
|
3124 |
+
transform: translateY(-100%);
|
3125 |
+
}
|
3126 |
+
|
3127 |
+
.eael-filter-gallery-container .item:hover .caption.eael-slide-top,
|
3128 |
+
.eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-slide-top {
|
3129 |
+
transform: translateY(0%);
|
3130 |
+
}
|
3131 |
+
|
3132 |
+
.eael-filter-gallery-container .item .caption.eael-slide-bottom,
|
3133 |
+
.eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-slide-bottom {
|
3134 |
+
transform: translateY(100%);
|
3135 |
+
}
|
3136 |
+
|
3137 |
+
.eael-filter-gallery-container .item:hover .caption.eael-slide-bottom,
|
3138 |
+
.eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-slide-bottom {
|
3139 |
+
transform: translateY(0%);
|
3140 |
+
}
|
3141 |
+
|
3142 |
+
.eael-filter-gallery-container .item .caption a {
|
3143 |
+
display: inline-block;
|
3144 |
+
width: 50px;
|
3145 |
+
height: 50px;
|
3146 |
+
text-align: center;
|
3147 |
+
line-height: 50px;
|
3148 |
+
border-radius: 50%;
|
3149 |
+
margin: 0 5px;
|
3150 |
+
font-size: 20px;
|
3151 |
+
cursor: pointer;
|
3152 |
+
transition: .3s;
|
3153 |
+
}
|
3154 |
+
|
3155 |
+
.eael-filter-gallery-container .item .caption a:nth-child(1),
|
3156 |
+
.eael-container .item .caption a:nth-child(2) {
|
3157 |
+
transition: .6s;
|
3158 |
+
opacity: 0;
|
3159 |
+
}
|
3160 |
+
|
3161 |
+
.eael-filter-gallery-container .item .caption a:nth-child(1) {
|
3162 |
+
transform: translateY(-100%);
|
3163 |
+
}
|
3164 |
+
|
3165 |
+
.eael-filter-gallery-container .item .caption a:nth-child(2) {
|
3166 |
+
transform: translateY(100%);
|
3167 |
+
}
|
3168 |
+
|
3169 |
+
.eael-filter-gallery-container .item .caption:hover a:nth-child(1),
|
3170 |
+
.eael-filter-gallery-container .item .caption:hover a:nth-child(2) {
|
3171 |
+
transform: translateY(0%);
|
3172 |
+
opacity: 1;
|
3173 |
+
}
|
3174 |
+
|
3175 |
+
.eael-filter-gallery-container .item .caption .eael-popup-link {
|
3176 |
+
outline: 0;
|
3177 |
+
}
|
3178 |
+
|
3179 |
+
/*--- Filter Gallery Card Style ---*/
|
3180 |
+
.eael-filter-gallery-container.eael-cards .item:before {
|
3181 |
+
padding-top: 0px;
|
3182 |
+
}
|
3183 |
+
|
3184 |
+
.eael-filter-gallery-container.eael-cards .item-img {
|
3185 |
+
position: relative;
|
3186 |
+
background-repeat: no-repeat;
|
3187 |
+
background-position: center;
|
3188 |
+
background-size: cover;
|
3189 |
+
height: 220px;
|
3190 |
+
z-index: 0;
|
3191 |
+
overflow: hidden;
|
3192 |
+
}
|
3193 |
+
|
3194 |
+
.eael-filter-gallery-container.eael-cards .item-content {
|
3195 |
+
padding: 15px;
|
3196 |
+
}
|
3197 |
+
|
3198 |
+
.eael-filter-gallery-container.eael-cards .item-content .title,
|
3199 |
+
.eael-filter-gallery-container.eael-cards .item-content .title a {
|
3200 |
+
font-size: 20px;
|
3201 |
+
line-height: 1;
|
3202 |
+
margin-bottom: 0px;
|
3203 |
+
transition: .3s;
|
3204 |
+
}
|
3205 |
+
|
3206 |
+
.eael-filter-gallery-container.eael-cards .item-content p {
|
3207 |
+
font-size: 14px;
|
3208 |
+
line-height: 26px;
|
3209 |
+
}
|
3210 |
+
|
3211 |
+
.eael-fg-card-content-align-center .eael-filterable-gallery-item-wrap .gallery-item-caption-wrap .gallery-item-caption-over {
|
3212 |
+
text-align: center;
|
3213 |
+
}
|
3214 |
+
|
3215 |
+
.eael-fg-card-content-align-right .eael-filterable-gallery-item-wrap .gallery-item-caption-wrap .gallery-item-caption-over {
|
3216 |
+
text-align: right;
|
3217 |
+
}
|
3218 |
+
|
3219 |
+
.eael-fg-hoverer-content-align-center .eael-filterable-gallery-item-wrap .gallery-item-caption-wrap .gallery-item-caption-over {
|
3220 |
+
text-align: center;
|
3221 |
+
}
|
3222 |
+
|
3223 |
+
.eael-fg-hoverer-content-align-right .eael-filterable-gallery-item-wrap .gallery-item-caption-wrap .gallery-item-caption-over {
|
3224 |
+
text-align: right;
|
3225 |
+
}
|
3226 |
+
|
3227 |
+
/*--- Editor Specific Style ---*/
|
3228 |
+
.eael-fg-content-align-left .eael-cards .item .item-content {
|
3229 |
+
text-align: left;
|
3230 |
+
}
|
3231 |
+
|
3232 |
+
.eael-fg-content-align-center .eael-cards .item .item-content {
|
3233 |
+
text-align: center;
|
3234 |
+
}
|
3235 |
+
|
3236 |
+
.eael-fg-content-align-right .eael-cards .item .item-content {
|
3237 |
+
text-align: right;
|
3238 |
+
}
|
3239 |
+
|
3240 |
+
/*--- Magnific Gallery Fix ---*/
|
3241 |
+
.mfp-wrap ~ div.dialog-widget {
|
3242 |
+
display: none !important;
|
3243 |
+
}
|
3244 |
+
|
3245 |
+
.eael-filterable-gallery-item-wrap {
|
3246 |
+
float: left;
|
3247 |
+
width: 33.33%;
|
3248 |
+
}
|
3249 |
+
|
3250 |
.eael-filter-gallery-container.eael-col-1 .eael-filterable-gallery-item-wrap {
|
3251 |
width: 100%;
|
3252 |
}
|
3788 |
margin-right: 0 !important;
|
3789 |
}
|
3790 |
|
3791 |
+
.elementor-element.elementor-grid-mobile-5 .eael-filterable-gallery-item-wrap:nth-of-type(5n+1) {
|
3792 |
+
clear: left;
|
3793 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3794 |
|
3795 |
+
.elementor-element.elementor-grid-mobile-6 {
|
3796 |
+
position: relative;
|
3797 |
+
}
|
3798 |
|
3799 |
+
.elementor-element.elementor-grid-mobile-6 .pp-logo-grid {
|
3800 |
+
margin-right: -6px;
|
3801 |
+
}
|
3802 |
|
3803 |
+
.elementor-element.elementor-grid-mobile-6 .eael-filterable-gallery-item-wrap {
|
3804 |
+
width: 16%;
|
3805 |
+
float: left;
|
3806 |
+
}
|
3807 |
+
|
3808 |
+
.elementor-element.elementor-grid-mobile-6 .eael-filterable-gallery-item-wrap:nth-of-type(6n) {
|
3809 |
+
margin-right: 0 !important;
|
3810 |
+
}
|
3811 |
+
|
3812 |
+
.elementor-element.elementor-grid-mobile-6 .eael-filterable-gallery-item-wrap:nth-of-type(6n+1) {
|
3813 |
+
clear: left;
|
3814 |
+
}
|
3815 |
+
}
|
3816 |
+
/* ------------- Layout 3 Style ----------------- */
|
3817 |
+
.fg-layout-3-filter-controls {
|
3818 |
+
margin: 0;
|
3819 |
+
padding: 0;
|
3820 |
+
list-style: none;
|
3821 |
}
|
3822 |
|
3823 |
+
.fg-layout-3-item-content {
|
3824 |
+
text-align: center;
|
|
|
3825 |
}
|
3826 |
|
3827 |
+
.fg-layout-3-item-content .fg-item-title {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3828 |
font-size: 18px;
|
3829 |
+
line-height: 1;
|
3830 |
+
font-weight: 500;
|
3831 |
+
margin: 0;
|
3832 |
+
transition: 300ms;
|
3833 |
}
|
3834 |
|
3835 |
+
.fg-layout-3-item-content .fg-item-content p {
|
3836 |
+
font-size: 13px;
|
3837 |
+
font-weight: 400;
|
|
|
|
|
|
|
3838 |
}
|
3839 |
|
3840 |
+
.fg-filter-wrap {
|
3841 |
position: relative;
|
3842 |
+
flex-basis: 30%;
|
3843 |
}
|
3844 |
|
3845 |
+
.fg-layout-3-filter-controls {
|
3846 |
position: absolute;
|
3847 |
left: 0;
|
3848 |
+
background: #fff;
|
3849 |
+
z-index: 999;
|
3850 |
+
width: 150px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3851 |
visibility: hidden;
|
3852 |
opacity: 0;
|
3853 |
transition: 300ms;
|
3854 |
+
width: 100%;
|
3855 |
+
border-radius: 5px;
|
3856 |
+
padding-top: 7px;
|
3857 |
}
|
3858 |
|
3859 |
+
.fg-layout-3-filter-controls.open-filters {
|
3860 |
visibility: visible;
|
3861 |
opacity: 1;
|
3862 |
}
|
3863 |
|
3864 |
+
.fg-layout-3-filter-controls li.control {
|
3865 |
+
padding: 5px 5px 5px 10px;
|
|
|
|
|
|
|
|
|
3866 |
cursor: pointer;
|
3867 |
+
transition: 300ms;
|
3868 |
+
font-size: 14px;
|
3869 |
+
color: #7f8995;
|
3870 |
+
font-weight: normal;
|
3871 |
}
|
3872 |
|
3873 |
+
.fg-layout-3-filter-controls li.control:hover {
|
3874 |
+
color: #2d425a;
|
3875 |
}
|
3876 |
|
3877 |
+
.fg-layout-3-filter-controls li.control:first-child {
|
3878 |
+
border-top: 0px solid;
|
|
|
3879 |
}
|
3880 |
|
3881 |
+
.fg-layout-3-filter-controls li.control:last-child {
|
3882 |
+
border-bottom: 0px solid;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3883 |
}
|
3884 |
+
|
3885 |
+
.fg-layout-3-filters-wrap {
|
3886 |
+
max-width: 600px;
|
3887 |
+
margin: 15px auto 50px;
|
3888 |
}
|
3889 |
+
|
3890 |
+
.fg-filter-wrap button {
|
3891 |
+
width: 100%;
|
3892 |
+
border: 0px solid;
|
3893 |
+
border-radius: 0px;
|
3894 |
+
padding: 17px 13px;
|
3895 |
+
font-size: 14px;
|
3896 |
+
color: #2d425a;
|
3897 |
+
background: #f7f8ff;
|
3898 |
+
height: 55px;
|
3899 |
+
border-right: 1px solid #abb5ff;
|
3900 |
+
border-radius: 10px 0px 0 10px;
|
3901 |
+
outline: none;
|
3902 |
text-align: center;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3903 |
position: relative;
|
|
|
3904 |
}
|
3905 |
+
|
3906 |
+
.fg-filter-wrap button > i {
|
3907 |
+
font-size: 18px;
|
3908 |
position: absolute;
|
3909 |
+
top: 50%;
|
3910 |
+
transform: translateY(-50%);
|
3911 |
+
margin-left: 10px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3912 |
}
|
3913 |
+
|
3914 |
+
.fg-layout-3-search-box {
|
3915 |
+
flex-basis: 70%;
|
3916 |
+
height: 100%;
|
3917 |
}
|
3918 |
+
|
3919 |
+
.fg-layout-3-search-box input[type="text"] {
|
3920 |
+
width: 100%;
|
3921 |
+
height: 100%;
|
3922 |
+
margin: 0;
|
3923 |
+
padding: 15px;
|
3924 |
+
border: 0px solid;
|
3925 |
+
outline: none;
|
3926 |
+
background: none;
|
3927 |
}
|
3928 |
+
|
3929 |
+
.fg-layout-3-search-box input[type="text"]::-webkit-input-placeholder {
|
3930 |
+
/* Chrome/Opera/Safari */
|
3931 |
+
color: #7f8995;
|
3932 |
+
font-size: 13px;
|
3933 |
}
|
3934 |
+
|
3935 |
+
.fg-layout-3-search-box input[type="text"]::-moz-placeholder {
|
3936 |
+
/* Firefox 19+ */
|
3937 |
+
color: #7f8995;
|
3938 |
+
font-size: 13px;
|
3939 |
}
|
3940 |
+
|
3941 |
+
.fg-layout-3-search-box input[type="text"]:-ms-input-placeholder {
|
3942 |
+
/* IE 10+ */
|
3943 |
+
color: #7f8995;
|
3944 |
+
font-size: 13px;
|
3945 |
}
|
3946 |
+
|
3947 |
+
.fg-layout-3-search-box input[type="text"]:-moz-placeholder {
|
3948 |
+
/* Firefox 18- */
|
3949 |
+
color: #7f8995;
|
3950 |
+
font-size: 13px;
|
3951 |
}
|
3952 |
+
|
3953 |
+
.fg-layout-3-filters-wrap {
|
3954 |
+
height: 55px;
|
3955 |
+
border-radius: 5px;
|
3956 |
+
display: flex;
|
3957 |
+
flex-wrap: wrap;
|
3958 |
+
align-items: center;
|
3959 |
}
|
3960 |
+
|
3961 |
+
.fg-layout-3-filters-wrap .fg-layout-3-search-box {
|
3962 |
+
background: #f7f8ff;
|
3963 |
+
border-radius: 0 10px 10px 0;
|
3964 |
}
|
3965 |
+
|
3966 |
+
.fg-layout-3-item-thumb {
|
3967 |
position: relative;
|
3968 |
+
overflow: hidden;
|
3969 |
}
|
3970 |
+
|
3971 |
+
.fg-layout-3-item-thumb .gallery-item-buttons {
|
3972 |
+
text-align: center;
|
|
|
|
|
|
|
|
|
|
|
3973 |
position: absolute;
|
|
|
|
|
|
|
3974 |
left: 0;
|
3975 |
top: 0;
|
|
|
|
|
|
|
3976 |
height: 100%;
|
3977 |
+
width: 100%;
|
3978 |
+
display: flex;
|
3979 |
+
align-items: center;
|
3980 |
+
justify-content: center;
|
3981 |
+
z-index: 4;
|
3982 |
}
|
3983 |
+
|
3984 |
+
.fg-layout-3-item-content {
|
3985 |
+
padding: 27px 27px 30px;
|
3986 |
+
text-align: center;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3987 |
}
|
3988 |
+
|
3989 |
+
.eael-fg-card-content-align-left .fg-layout-3-item-content {
|
3990 |
+
text-align: left;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3991 |
}
|
3992 |
+
|
3993 |
+
.eael-fg-card-content-align-center .fg-layout-3-item-content {
|
3994 |
+
text-align: center;
|
|
|
|
|
|
|
|
|
3995 |
}
|
3996 |
+
|
3997 |
+
.eael-fg-card-content-align-right .fg-layout-3-item-content {
|
3998 |
+
text-align: right;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3999 |
}
|
4000 |
+
|
4001 |
+
.eael-filterable-gallery-item-wrap .fg-layout-3-item.eael-gallery-grid-item {
|
4002 |
+
box-shadow: 0px 0px 30px 0px rgba(3, 29, 60, 0.05);
|
4003 |
+
border-radius: 5px;
|
|
|
|
|
|
|
4004 |
}
|
4005 |
+
|
4006 |
+
.fg-caption-head {
|
4007 |
+
position: absolute;
|
4008 |
+
left: 0;
|
4009 |
+
top: 0;
|
4010 |
+
width: 100%;
|
4011 |
+
display: flex;
|
4012 |
+
justify-content: space-between;
|
4013 |
+
padding: 35px 35px;
|
4014 |
+
z-index: 3;
|
4015 |
+
color: #fff;
|
4016 |
+
font-size: 18px;
|
4017 |
+
font-weight: 700;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4018 |
}
|
4019 |
+
|
4020 |
+
.fg-item-category > span {
|
4021 |
+
font-size: 12px;
|
4022 |
+
color: #fff;
|
4023 |
+
background: #fa9196;
|
4024 |
+
padding: 10px 12px;
|
4025 |
+
display: inline-block;
|
4026 |
}
|
4027 |
+
|
4028 |
+
.fg-layout-3-item-content {
|
4029 |
+
position: relative;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4030 |
}
|
4031 |
+
|
4032 |
+
.fg-item-category {
|
4033 |
+
position: absolute;
|
4034 |
+
left: 0;
|
4035 |
+
top: 0;
|
4036 |
+
text-align: center;
|
4037 |
+
width: 100%;
|
4038 |
+
height: 30px;
|
4039 |
+
margin-top: -15px;
|
4040 |
+
z-index: 11;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4041 |
}
|
4042 |
+
|
4043 |
+
.fg-item-category span {
|
4044 |
+
border-radius: 5px;
|
4045 |
+
line-height: 1;
|
4046 |
+
visibility: hidden;
|
4047 |
+
opacity: 0;
|
4048 |
+
transition: 300ms;
|
|
|
|
|
|
|
|
|
|
|
|
|
4049 |
}
|
4050 |
+
|
4051 |
+
.fg-layout-3-item.eael-gallery-grid-item:hover .fg-item-category span {
|
4052 |
+
visibility: visible;
|
4053 |
+
opacity: 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4054 |
}
|
4055 |
+
|
4056 |
+
.mfp-iframe-holder .mfp-close,
|
4057 |
+
.mfp-image-holder .mfp-close {
|
4058 |
+
width: auto;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4059 |
}
|
4060 |
+
|
4061 |
+
.mfp-zoom-out-cur .mfp-image-holder .mfp-close {
|
4062 |
+
cursor: pointer;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4063 |
}
|
4064 |
+
|
4065 |
+
.mfp-zoom-out-cur .mfp-image-holder .mfp-close:hover {
|
4066 |
+
text-decoration: none;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4067 |
}
|
4068 |
+
|
4069 |
+
button.mfp-close:not(.toggle),
|
4070 |
+
button.mfp-arrow:not(.toggle) {
|
4071 |
+
background: transparent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4072 |
}
|
4073 |
|
4074 |
/*---------------------------*/
|
assets/front-end/css/eael.min.css
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
.eael-adv-accordion{width:auto;height:auto;transition:all .3s ease-in-out}.eael-adv-accordion .eael-accordion-list .eael-accordion-header{padding:15px;border:1px solid rgba(0,0,0,.02);font-size:1rem;font-weight:600;line-height:1;transition:all .3s ease-in-out;display:flex;justify-content:space-between;align-items:center;cursor:pointer}.eael-adv-accordion .eael-accordion-list .eael-accordion-header .fa-toggle{transform:rotate(0);z-index:10;transition:all .3s ease-in-out}.eael-adv-accordion .eael-accordion-list .eael-accordion-header.active .fa-toggle{transform:rotate(90deg);z-index:10;transition:all .3s ease-in-out}.fa-accordion-icon{display:inline-block;margin-right:10px}.eael-adv-accordion .eael-accordion-list .eael-accordion-content{display:none;border:1px solid #eee;padding:15px;box-sizing:border-box;font-size:1rem;line-height:1.7}.eael-adv-accordion .eael-accordion-list .eael-accordion-content p{margin:0}.eael-adv-accordion .eael-accordion-list .eael-accordion-content.active{display:block}@-webkit-keyframes rotate-90{0%{transform:rotateY(0)}100%{transform:rotateY(-180deg)}}@keyframes rotate-90{0%{transform:rotateY(0)}100%{transform:rotateY(-180deg)}}@-webkit-keyframes fadeIn{0%{opacity:1;transition:all .3s ease-in-out}100%{opacity:1;transition:all .3s ease-in-out}}@keyframes fadeIn{0%{opacity:1;transition:all .3s ease-in-out}100%{opacity:1;transition:all .3s ease-in-out}}
|
3 |
.eael-advance-tabs{display:block}.eael-advance-tabs .eael-tabs-nav>ul{position:relative;padding:0;margin:0;list-style-type:none;display:flex;justify-content:flex-start;align-items:center;z-index:1}.eael-advance-tabs .eael-tabs-nav>ul li{position:relative;padding:1em 1.5em;flex:1 1 auto;cursor:pointer;display:flex;justify-content:center;align-items:center;text-align:center;background-color:#f1f1f1}.eael-advance-tabs .eael-tabs-nav>ul li:after{content:"";position:absolute;bottom:-10px;left:0;right:0;margin:0 auto;z-index:1;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #444;border-bottom:0;display:none}.eael-advance-tabs .eael-tabs-nav>ul li.active,.eael-advance-tabs .eael-tabs-nav>ul li.active-default,.eael-advance-tabs .eael-tabs-nav>ul li:hover{background-color:#444}.eael-advance-tabs.active-caret-on .eael-tabs-nav>ul li.active-default:after,.eael-advance-tabs.active-caret-on .eael-tabs-nav>ul li.active:after{display:none}.eael-advance-tabs .eael-tabs-nav>ul li.active-default:after,.eael-advance-tabs .eael-tabs-nav>ul li.active:after{display:block}.eael-tabs-content{display:flex;flex:1 1 auto;overflow:hidden}.eael-advance-tabs .eael-tabs-content>div{display:none;opacity:0}.eael-advance-tabs .eael-tabs-content>div.active,.eael-advance-tabs .eael-tabs-content>div.active-default{display:block;width:100%;padding:1em;opacity:1;-webkit-animation:fadeIn linear .3s;animation:fadeIn linear .3s}.eael-tab-inline-icon li a .fa{margin-right:10px;line-height:1}.eael-tab-top-icon li{display:flex;flex-wrap:wrap;text-align:center}.eael-tab-top-icon li a{display:flex;flex-wrap:wrap;text-align:center}.eael-tab-top-icon li .eael-tab-title,.eael-tab-top-icon li .fa{flex:1 1 100%;line-height:1}.eael-tab-top-icon li a .eael-tab-title{margin-top:10px}.eael-advance-tabs.eael-tabs-vertical{display:flex}.eael-advance-tabs.eael-tabs-vertical .eael-tabs-nav{flex:0 0 auto}.eael-advance-tabs.eael-tabs-vertical .eael-tabs-nav>ul{flex-flow:column wrap}.eael-advance-tabs.eael-tabs-vertical .eael-tabs-nav>ul>li{width:100%;justify-content:start}.eael-advance-tabs.eael-tabs-vertical .eael-tabs-nav>ul li::after{bottom:auto!important;right:-10px;top:calc(50% - 10px);left:auto!important;border-left:10px solid #444;border-right:0;border-top:10px solid transparent;border-bottom:10px solid transparent}@media only screen and (max-width:767px){.eael-advance-tabs .eael-tabs-nav>ul{flex-wrap:wrap;flex-flow:row wrap}.eael-advance-tabs .eael-tabs-nav>ul li{flex:1 1 auto}.responsive-vertical-layout.eael-advance-tabs .eael-tabs-nav>ul li{flex:1 1 100%}.eael-advance-tabs.eael-tabs-vertical{flex-wrap:wrap}.eael-advance-tabs.eael-tabs-vertical div.eael-tabs-nav{flex:1 100%}.eael-advance-tabs.eael-tabs-vertical ul{flex:1 100%}.eael-advance-tabs.eael-tabs-vertical ul li{flex:1 100%}div.eael-advance-tabs.eael-tabs-vertical div.eael-tabs-nav>ul li::after{border-left-color:transparent!important;bottom:-20px!important;left:0!important;right:0!important;top:auto!important;border-left:10px solid transparent;border-right:10px solid transparent;border-top-color:#444!important}}
|
4 |
.ea-advanced-data-table-wrap .ea-advanced-data-table-wrap-inner{width:100%;overflow-y:auto}.ea-advanced-data-table-wrap .ea-advanced-data-table{width:100%;border-collapse:collapse}.ea-advanced-data-table-wrap .ea-advanced-data-table td,.ea-advanced-data-table-wrap .ea-advanced-data-table th{background-color:transparent!important}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th{position:relative;cursor:pointer}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th:before{content:"";border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:5px solid #4d4d4d;position:absolute;top:50%;right:15px;margin-top:-6px}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th:after{content:"";border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #4d4d4d;position:absolute;top:50%;right:15px;margin-top:1px}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th.asc:before{display:none}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th.asc:after{margin-top:-3px}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th.desc:before{margin-top:-3px}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th.desc:after{display:none}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-unsortable th{pointer-events:none}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-unsortable th:after,.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-unsortable th:before{display:none}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-paginated tbody tr{display:none}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable th{position:relative}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable th:before{border:none}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable th:after{content:"";display:block;height:100%;position:absolute;right:0;top:0;width:10px;border:none;cursor:col-resize}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable td,.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable th{padding:0}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable td textarea,.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable th textarea{width:100%;min-width:100px;height:100%;background-color:transparent;border:none;box-shadow:none;resize:none;margin:0;padding:0;outline:0;vertical-align:middle}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable.ea-advanced-data-table-paginated tbody tr{display:table-row}.ea-advanced-data-table-wrap .ea-advanced-data-table .nt_add_cart_wrapper{text-align:center}.ea-advanced-data-table-wrap .ea-advanced-data-table .button{display:block;white-space:nowrap}.ea-advanced-data-table-wrap .ea-advanced-data-table-search-wrap.ea-advanced-data-table-search-center{text-align:center}.ea-advanced-data-table-wrap .ea-advanced-data-table-search-wrap.ea-advanced-data-table-search-right{text-align:right}.ea-advanced-data-table-wrap .ea-advanced-data-table-pagination a{display:inline-block}
|
5 |
-
.eael-call-to-action{width:100%;height:auto;display:block;padding:30px;font-size:16px;color:#4d4d4d;font-weight:400;line-height:27px;margin:0 auto}.eael-call-to-action p{margin-bottom:10px}.eael-call-to-action .title{font-size:36px;font-weight:600;line-height:36px;margin-bottom:10px;text-transform:capitalize;font-style:normal}.eael-call-to-action.cta-center{text-align:center}.eael-call-to-action.cta-right{text-align:right}.eael-call-to-action.cta-left{text-align:left}.eael-call-to-action.bg-lite{background:#f4f4f4}.eael-call-to-action.bg-img{background-image:url(../img/bg.jpg);background-repeat:no-repeat;background-position:center;background-size:cover;position:relative;z-index:0;color:rgba(255,255,255,.7)}.eael-call-to-action.bg-img .icon{color:#fff}.eael-cta-overlay-yes .eael-call-to-action.bg-img:after{content:"";position:absolute;width:100%;height:100%;top:0;left:0;z-index:-1;background:rgba(0,0,0,.8)}.eael-call-to-action.bg-img.bg-fixed{background-attachment:fixed;background-position:center center}.eael-call-to-action.bg-img .title{color:rgba(255,255,255,.9)}.eael-call-to-action.cta-flex,.eael-call-to-action.cta-icon-flex{display:flex;justify-content:space-between;align-items:flex-start}.eael-call-to-action.cta-icon-flex .icon{flex-grow:1;font-size:80px;text-align:left;line-height:130px}.eael-call-to-action.cta-icon-flex .action{flex-grow:1;text-align:right;padding-top:22px;flex-basis:22%}.eael-call-to-action.cta-icon-flex .content{flex-grow:1;padding:0 30px}.eael-call-to-action.cta-flex .content{padding:0 15px;flex-grow:1}.eael-call-to-action.cta-flex .action{flex-grow:1;text-align:right;padding-top:25px;flex-basis:23%}.eael-call-to-action .cta-button{position:relative;display:inline-block;padding:12px 30px;background:#f9f9f9;font-size:16px;text-decoration:none;color:#4d4d4d;transition:.5s;-ms-box-shadow:0 0 3px -1px rgba(0,0,0,.2);box-shadow:0 0 3px -1px rgba(0,0,0,.2);margin-right:10px;margin-top:10px;z-index:0;overflow:hidden}.eael-call-to-action .cta-button:last-child{margin-right:0}.eael-call-to-action .cta-button:focus{outline:0}.eael-call-to-action .cta-button:hover{color:#fff;background:#3f51b5;-ms-box-shadow:0 1px 12px 1px rgba(0,0,0,.1);box-shadow:0 1px 12px 1px rgba(0,0,0,.1)}.eael-call-to-action .cta-button.effect-1:after{content:"";position:absolute;width:100%;height:100%;background:#3f51b5;top:0;left:0;transform:translateY(-100%);-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);z-index:-1;transition:.5s;color:#fff}.eael-call-to-action .cta-button.effect-1:hover::after{transform:translateY(0)}.eael-call-to-action .cta-button.effect-2:after{content:"";position:absolute;width:100%;height:100%;background:#3f51b5;top:0;left:0;z-index:-1;transition:.5s;color:#fff;transform:translateX(-100%)}.eael-call-to-action .cta-button.effect-2:hover::after{transform:translateX(0)}@media only screen and (max-width:768px){.eael-call-to-action.cta-flex,.eael-call-to-action.cta-icon-flex{flex-wrap:wrap}.eael-call-to-action .title{font-size:28px;line-height:36px;margin-top:0}.eael-call-to-action.cta-icon-flex .icon{flex-grow:1;font-size:48px;line-height:90px;text-align:center}.eael-call-to-action.cta-flex .content,.eael-call-to-action.cta-icon-flex .content{flex-grow:1;text-align:center;padding:0}.eael-call-to-action.cta-flex .action,.eael-call-to-action.cta-icon-flex .action{text-align:center;padding-top:0}.eael-call-to-action .cta-button{padding:12px 25px}}@media only screen and (max-width:360px){.eael-call-to-action{font-size:14px;line-height:26px}.eael-call-to-action .cta-button{padding:4px 20px;font-size:12px}.eael-call-to-action .title{font-size:20px;line-height:30px}}
|
6 |
.eael-caldera-form-align-left,.eael-caldera-form-btn-align-left{text-align:left}.eael-caldera-form-align-right,.eael-caldera-form-btn-align-right{text-align:right}.eael-caldera-form-align-center,.eael-caldera-form-btn-align-center{text-align:center}.eael-caldera-form .control-label{display:none}.eael-caldera-form-labels-yes .control-label{display:block}.eael-caldera-form-button-center .form-group input[type=button],.eael-caldera-form-button-center .form-group input[type=submit]{display:block;margin:0 auto}.eael-caldera-form-button-right .form-group input[type=button],.eael-caldera-form-button-right .form-group input[type=submit]{float:right}.eael-caldera-form .intl-tel-input{display:inherit}.eael-custom-radio-checkbox .caldera-grid input[type=checkbox],.eael-custom-radio-checkbox .caldera-grid input[type=radio]{border-style:solid;border-width:0;padding:3px;-webkit-appearance:none}.eael-caldera-form-button-full-width .form-group input[type=button],.eael-caldera-form-button-full-width .form-group input[type=submit]{width:100%}
|
|
|
7 |
@-webkit-keyframes loaderSpin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes loaderSpin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.eael-button-wrap,.eael-load-more-button-wrap{display:flex}.eael-button,.eael-load-more-button{display:flex!important;align-items:center;justify-content:center;padding:1em 2em;border:0 solid;font-size:16px;overflow:hidden}.eael-button>span,.eael-load-more-button>span{margin-left:-20px}.eael-button .eael-btn-loader,.eael-load-more-button .eael-btn-loader{border-radius:50%;width:20px;height:20px;font-size:10px;position:relative;text-indent:-9999em;border-top:4px solid rgba(255,255,255,.2);border-right:4px solid rgba(255,255,255,.2);border-bottom:4px solid rgba(255,255,255,.2);border-left:4px solid #fff;transform:translateZ(0);-webkit-animation:loaderSpin 1.1s infinite linear;animation:loaderSpin 1.1s infinite linear;left:-100%;top:auto;margin-right:5px;transition:all .2s}.eael-button .eael-btn-loader:after,.eael-load-more-button .eael-btn-loader:after{border-radius:50%;width:20px;height:20px}.eael-button.button--loading>span,.eael-load-more-button.button--loading>span{margin-left:0}.eael-button.button--loading .eael-btn-loader,.eael-load-more-button.button--loading .eael-btn-loader{left:0}
|
8 |
.eael-contact-form-7.eael-contact-form-btn-align-center input.wpcf7-submit{margin-left:auto!important;margin-right:auto!important;display:block;float:none}.eael-contact-form-7.eael-contact-form-btn-align-left input.wpcf7-submit{float:left;width:auto}.eael-contact-form-7.eael-contact-form-btn-align-right input.wpcf7-submit{float:right;width:auto}.eael-contact-form-7 .uneditable-input,.eael-contact-form-7 input[type=color],.eael-contact-form-7 input[type=date],.eael-contact-form-7 input[type=datetime-local],.eael-contact-form-7 input[type=datetime],.eael-contact-form-7 input[type=email],.eael-contact-form-7 input[type=month],.eael-contact-form-7 input[type=number],.eael-contact-form-7 input[type=password],.eael-contact-form-7 input[type=search],.eael-contact-form-7 input[type=tel],.eael-contact-form-7 input[type=text],.eael-contact-form-7 input[type=time],.eael-contact-form-7 input[type=url],.eael-contact-form-7 input[type=week],.eael-contact-form-7 textarea{transition:border linear .2s,box-shadow linear .2s}.eael-contact-form-7 .wpcf7-form::after,.eael-contact-form-7 .wpcf7-form::before{content:" ";clear:both;display:table}.eael-contact-form-7 .wpcf7-form:after{clear:both;content:"";font-size:0;height:0;display:block;visibility:hidden}.eael-contact-form-7.labels-hide .wpcf7-form label{display:none}.eael-contact-form-7-title{margin-bottom:10px}.eael-contact-form-7-description{margin-bottom:20px}.eael-contact-form-7-button-full-width .wpcf7-form-control.wpcf7-submit{width:100%}.wpcf7 form>div,.wpcf7 form>p{margin-bottom:20px}.eael-contact-form-7 .wpcf7-form p{margin-bottom:20px}.eael-contact-form-7 .wpcf7-form p span.wpcf7-form-control-wrap{margin-bottom:0}.eael-contact-form-7 .wpcf7-form label span.wpcf7-list-item-label{font-family:inherit;font-weight:400}.eael-contact-form-7 .wpcf7-form p input.wpcf7-submit{font-family:inherit;font-weight:400}
|
9 |
.eael-ticker-wrap{overflow:hidden;display:flex;flex-flow:row nowrap;align-items:center;width:100%}.eael-ticker-wrap .ticker-badge{flex:0 0 auto;padding:8px 12px}.eael-ticker-wrap .eael-ticker{overflow:hidden;flex:1 1 auto}.eael-ticker-wrap .eael-ticker .ticker-content{padding:8px 12px;line-height:1.8}.eael-ticker-wrap .eael-ticker .ticker-content p{margin:0}.eael-ticker-wrap .swiper-button-prev{left:auto!important;right:25px}.eael-ticker-wrap div.swiper-slide,.eael-ticker-wrap div.swiper-slide.swiper-slide-next,.eael-ticker-wrap div.swiper-slide.swiper-slide-prev{opacity:0!important}.eael-ticker-wrap div.swiper-slide.swiper-slide-active{opacity:1!important}.eael-ticker-wrap .eael-content-ticker.swiper-container .swiper-slide{text-align:left}@media only screen and (max-width:767px){.eael-ticker-wrap{flex-flow:row wrap}.content-ticker-pagination{display:none}}.eael-ticker-wrap .swiper-button-next,.eael-ticker-wrap .swiper-button-prev{background-image:none;outline:0;display:flex;align-items:center;justify-content:center}
|
@@ -35,15 +35,15 @@ body div.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden
|
|
35 |
.eaelsv-overlay{position:absolute;display:block;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);z-index:4;cursor:pointer;background-size:cover;background-position:50%;text-align:center;overflow:hidden}.eaelsv-overlay-icon{position:absolute;top:50%;left:50%;font-size:90px;color:#fff;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}.plyr__controls button{box-shadow:none!important}.plyr__controls button:hover{box-shadow:none!important}.plyr__controls{display:none!important}.eael-sticky-video-wrapper{position:relative;width:100%;min-height:200px;margin:0;padding:0;transition:.5s;text-align:left;overflow:hidden}.eael-sticky-video-player2{min-height:20px;overflow:visible}.eael-sticky-video-player2.out{position:fixed;z-index:999;border:0!important;border-radius:0!important;height:200px;width:300px}.eael-sticky-video-wrapper.out .eael-sticky-video-player,.eael-sticky-video-wrapper.out .eael-sticky-video-player2{border-radius:0!important}.eael-sticky-video-player2.in{position:relative;margin:0;padding:0;height:100%;border:0;line-height:1}.owp-play{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%)}.owp-play i{font-size:100px;color:#fff;opacity:.8;text-shadow:1px 0 6px rgba(0,0,0,.3);transition:all .5s}.eael-sticky-video-player:hover .owp-play i{opacity:1}.eaelsv-sticky-player-close{position:absolute;right:-25px;top:-36px;display:none;padding:7px;font-size:24px;z-index:9999;cursor:pointer;box-sizing:content-box;overflow:visible}.eaelsv-sticky-player-close:hover{color:#090}.eaelsv-sticky-player-close:after,.eaelsv-sticky-player-close:before{position:absolute;left:15px;background-color:#333}.eaelsv-sticky-player-close:before{transform:rotate(45deg)}.eaelsv-sticky-player-close:after{transform:rotate(-45deg)}.plyr__progress input[type=range]::-webkit-slider-runnable-track,.plyr__volume input[type=range]::-webkit-slider-runnable-track{box-shadow:1px 1px 1px #000,0 0 1px #0d0d0d}.plyr__progress input[type=range]::-moz-range-track,.plyr__volume input[type=range]::-moz-range-track{box-shadow:1px 1px 1px #000,0 0 1px #0d0d0d}
|
36 |
html{scroll-behavior:smooth}.eael-toc{z-index:9999;width:300px;display:none}.eael-toc .eael-toc-button{display:none}.eael-toc .eael-toc-not-found{color:#a94442}.eael-toc.eael-toc-disable{display:none}.eael-toc.eael-sticky{position:fixed;top:100px;background:0 0;display:block}.eael-toc.collapsed{width:unset!important;box-shadow:none!important;border:none!important}.eael-toc.collapsed .eael-toc-body,.eael-toc.collapsed .eael-toc-close,.eael-toc.collapsed .eael-toc-header{display:none}.eael-toc.collapsed.eael-bottom-to-top .eael-toc-button{transform:rotate(-90deg);transform-origin:top left;margin-top:100%}.eael-toc.collapsed .eael-toc-button{position:relative;display:inline-block;font-size:80%!important;font-weight:400;text-align:center;text-decoration:none;text-transform:none;color:#fff;background:#ff7d50;padding:10px 20px;border-radius:3px;border:none;transform:rotate(90deg);transform-origin:bottom left;cursor:pointer}.eael-toc.collapsed .eael-toc-button:focus{outline:0}.eael-toc.collapsed .eael-toc-button i{margin-right:10px}.eael-toc.eael-toc-right{right:0}.eael-toc.eael-toc-right .eael-toc-close{left:-11px}.eael-toc.eael-toc-right.eael-bottom-to-top .eael-toc-button{transform:rotate(-90deg);transform-origin:bottom right;margin-top:-100%}.eael-toc.eael-toc-right .eael-toc-button{transform:rotate(90deg);transform-origin:top right;margin-top:100%}.eael-toc .eael-toc-header{position:relative;background:#ff7d50;padding:12px 30px}.eael-toc .eael-toc-header .eael-toc-title{font-size:18px;font-weight:400;letter-spacing:.1px;color:#fff;margin:0;padding:0}.eael-toc .eael-toc-header .eael-toc-title:before{content:none}.eael-toc .eael-toc-header .eael-toc-close{position:absolute;width:28px;height:28px;background:#fff;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);right:-9px;top:-11px;border-radius:20px;font-family:serif;font-size:20px;font-weight:700;line-height:28px;text-align:center;color:#ff7d50;cursor:pointer;padding:0;margin:0;border:0}.eael-toc .eael-toc-body{padding:12px 30px;background:#fff6f3;min-width:20vh;max-height:50vh;overflow-y:scroll}.eael-toc .eael-toc-body::-webkit-scrollbar{width:6px}.eael-toc .eael-toc-body::-webkit-scrollbar-thumb{background:#aaa;border-radius:10px}.eael-toc .eael-toc-body ul.eael-toc-list{margin:0;padding:0;list-style:none}.eael-toc .eael-toc-body ul.eael-toc-list li ul{margin:0;padding:0;margin-left:20px;list-style:none}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-bullet li:before{content:"";position:relative;display:inline-block;width:8px;height:8px;border-radius:50%;background-color:#ff7d50;margin-right:8px;top:-2px}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-number{counter-reset:counter}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-number li{counter-increment:counter}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-number li:before{content:counters(counter,".") " "}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-number li ul{counter-reset:counter}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-number li ul li{counter-increment:counter}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-number li ul li:before{content:counters(counter,".") " "}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-list-arrow li.eael-highlight-active>a:before{content:"";position:absolute;left:0;z-index:999999;border-bottom:10px solid #ff7d50;border-left:5px solid transparent;border-right:5px solid transparent;transform:rotate(90deg);margin-top:10px}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-list-bar li.eael-highlight-active>a:after{content:"";position:absolute;right:0;height:30px;width:2px;background:#ff7d50;z-index:999999}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-collapse :not(.eael-highlight-parent) ul{display:none}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-word-wrap li a{display:inline-flex}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-word-wrap li a span{width:140px!important;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media only screen and (max-width:767px){.eael-toc.eael-toc-mobile-hide{display:none!important}}
|
37 |
.eael-team-item{overflow:hidden;position:relative}.team-avatar-rounded figure img{border-radius:50%;height:auto}.eael-team-image>figure{margin:0;padding:0}.eael-team-image>figure img{display:block;margin:0 auto}.eael-team-item .eael-team-content{padding:10px}.eael-team-item .eael-team-member-name{font-size:20px;font-weight:700;letter-spacing:.05em;margin:5px 0;text-transform:uppercase}.eael-team-item .eael-team-member-position{font-size:14px;font-weight:400;letter-spacing:.05em;margin:5px 0 10px;text-transform:uppercase}.eael-team-item .eael-team-content,.eael-team-item .eael-team-content .eael-team-text{font-size:14px;line-height:1.5}.eael-team-content>ul{margin:0;padding:0}.eael-team-content li{display:inline-block;list-style:outside none none;margin-right:10px;text-align:center}.eael-team-content li a{font-size:2.5rem}.eael-team-align-left .eael-team-item .eael-team-content li,.eael-team-align-left .eael-team-item .eael-team-content p,.eael-team-align-left .eael-team-item .eael-team-content ul,.eael-team-align-left .eael-team-item .eael-team-member-name,.eael-team-align-left .eael-team-item .eael-team-member-position,.eael-team-align-left .eael-team-item .eael-team-text{text-align:left}.eael-team-align-right .eael-team-item .eael-team-content li,.eael-team-align-right .eael-team-item .eael-team-content p,.eael-team-align-right .eael-team-item .eael-team-content ul,.eael-team-align-right .eael-team-item .eael-team-member-name,.eael-team-align-right .eael-team-item .eael-team-member-position,.eael-team-align-right .eael-team-item .eael-team-text{text-align:right}.eael-team-align-centered .eael-team-item .eael-team-content li,.eael-team-align-centered .eael-team-item .eael-team-content p,.eael-team-align-centered .eael-team-item .eael-team-content ul,.eael-team-align-centered .eael-team-item .eael-team-member-name,.eael-team-align-centered .eael-team-item .eael-team-member-position,.eael-team-align-centered .eael-team-item .eael-team-text{text-align:center}.eael-team-item.eael-team-members-overlay .eael-team-content{bottom:10px;left:10px;margin-bottom:0;padding-top:15%;opacity:0;overflow:hidden;text-overflow:ellipsis;position:absolute;right:10px;top:10px;transition:all 615ms cubic-bezier(.19,1,.22,1) 0s}.eael-team-item.eael-team-members-overlay:hover .eael-team-content{opacity:1}.eael-team-member-social-link>a{display:inline-block;transition:all .3s cubic-bezier(.19,1,.22,1) 0s}.eael-team-member-social-link>a:focus{outline:0}
|
38 |
-
.eael-testimonial-slider{position:relative}.testimonial-star-rating{padding:0;margin:0}.testimonial-star-rating li{list-style:none;display:inline-block}.testimonial-star-rating li i{color:#d8d8d8}.rating-five .testimonial-star-rating li i{color:#f2b01e}.rating-one .testimonial-star-rating li:first-child i{color:#f2b01e}.rating-two .testimonial-star-rating li:nth-child(1) i,.rating-two .testimonial-star-rating li:nth-child(2) i{color:#f2b01e}.rating-three .testimonial-star-rating li:nth-child(1) i,.rating-three .testimonial-star-rating li:nth-child(2) i,.rating-three .testimonial-star-rating li:nth-child(3) i{color:#f2b01e}.rating-four .testimonial-star-rating li:nth-child(1) i,.rating-four .testimonial-star-rating li:nth-child(2) i,.rating-four .testimonial-star-rating li:nth-child(3) i,.rating-four .testimonial-star-rating li:nth-child(4) i{color:#f2b01e}.eael-testimonial-image img{max-width:100%}.eael-testimonial-image{padding:10px 0 0 0}.eael-testimonial-image>figure{display:block;margin:0}.testimonial-avatar-rounded figure img{border-radius:50%;height:auto}.eael-testimonial-content{margin:0;padding:10px}.eael-testimonial-item>figure{margin:0 auto;padding:0 20px}.eael-testimonial-item .center-text{text-align:center}.eael-testimonial-item .right-text{text-align:right}.eael-testimonial-item .left-text{text-align:left}.eael-testimonial-item .justify-text{text-align:justify}.eael-testimonial-content .eael-testimonial-text{font-size:100%;font-style:italic;line-height:1.5;margin-top:0;margin-bottom:10px;word-wrap:break-word}.eael-testimonial-content .eael-testimonial-user{display:inline-block;font-family:inherit;font-size:105%;font-style:italic;font-weight:400;line-height:1.5;margin-top:0;margin-bottom:0;margin-right:5px}.eael-testimonial-content .eael-testimonial-user-company{display:inline-block;font-family:inherit;font-size:90%;font-style:italic;font-weight:lighter;line-height:1.75;margin-bottom:0;margin-top:1px}.eael-testimonial-image{position:relative}.eael-testimonial-item .eael-testimonial-quote::after{color:inherit!important;content:"\f10e";font-family:"Font Awesome 5 Free";font-size:200%;font-weight:900}.eael-testimonial-slider.default-style .eael-testimonial-align-centered .eael-testimonial-image figure img{margin:0 auto}.eael-testimonial-slider.classic-style .eael-testimonial-align-left .eael-testimonial-image figure img,.eael-testimonial-slider.classic-style .eael-testimonial-align-right .eael-testimonial-image figure img,.eael-testimonial-slider.default-style .eael-testimonial-align-left .eael-testimonial-image figure img,.eael-testimonial-slider.default-style .eael-testimonial-align-right .eael-testimonial-image figure img,.eael-testimonial-slider.middle-style .eael-testimonial-align-left .eael-testimonial-image figure img,.eael-testimonial-slider.middle-style .eael-testimonial-align-right .eael-testimonial-image figure img{margin:0}.eael-testimonial-slider.classic-style .eael-testimonial-align-right .eael-testimonial-image figure,.eael-testimonial-slider.default-style .eael-testimonial-align-right .eael-testimonial-image figure,.eael-testimonial-slider.middle-style .eael-testimonial-align-right .eael-testimonial-image figure{text-align:right}.eael-testimonial-slider.classic-style .eael-testimonial-align-left .eael-testimonial-image figure,.eael-testimonial-slider.default-style .eael-testimonial-align-left .eael-testimonial-image figure,.eael-testimonial-slider.middle-style .eael-testimonial-align-left .eael-testimonial-image figure{text-align:left}.eael-testimonial-slider.classic-style .eael-testimonial-align-right .testimonial-classic-style-content,.eael-testimonial-slider.default-style .eael-testimonial-align-right .default-style-testimonial-content,.eael-testimonial-slider.middle-style .eael-testimonial-align-right .eael-testimonial-text,.eael-testimonial-slider.middle-style .eael-testimonial-align-right .middle-style-content{text-align:right}.eael-testimonial-slider.classic-style .eael-testimonial-align-center .testimonial-classic-style-content,.eael-testimonial-slider.default-style .eael-testimonial-align-center .default-style-testimonial-content,.eael-testimonial-slider.middle-style .eael-testimonial-align-center .eael-testimonial-text,.eael-testimonial-slider.middle-style .eael-testimonial-align-center .middle-style-content{text-align:center}.eael-testimonial-slider.classic-style .eael-testimonial-align-left .testimonial-classic-style-content,.eael-testimonial-slider.default-style .eael-testimonial-align-left .default-style-testimonial-content,.eael-testimonial-slider.middle-style .eael-testimonial-align-left .eael-testimonial-text,.eael-testimonial-slider.middle-style .eael-testimonial-align-left .middle-style-content{text-align:left}.eael-testimonial-slider.icon-img-left-content .eael-testimonial-text>p,.eael-testimonial-slider.icon-img-right-content .eael-testimonial-text>p{margin:0}.icon-img-left-content .eael-testimonial-image{float:left;width:30%}.icon-img-left-content .eael-testimonial-content{float:left;width:70%;text-align:left}.icon-img-left-content.eael-testimonial-item{overflow:hidden;position:relative}.icon-img-left-content .eael-testimonial-quote{position:absolute;right:0}.icon-img-left-content .eael-testimonial-text{margin-top:0}.eael-testimonial-align-centered .eael-testimonial-user,.eael-testimonial-align-centered .eael-testimonial-user-company{float:none;text-align:center}.eael-testimonial-align-centered .eael-testimonial-image>figure img{display:block;margin-left:auto!important;margin-right:auto!important}.icon-img-right-content .eael-testimonial-image{float:right;width:30%}.icon-img-right-content .eael-testimonial-content{float:right;width:70%;text-align:right}.icon-img-right-content.eael-testimonial-item{overflow:hidden;position:relative}.icon-img-right-content .eael-testimonial-quote{position:absolute}.icon-img-right-content .eael-testimonial-text{margin-top:0}.eael-testimonial-item{position:relative}.classic-style.testimonial-alignment-center .eael-testimonial-image,.default-style.testimonial-alignment-center .eael-testimonial-image{text-align:center}.classic-style.testimonial-alignment-right .eael-testimonial-image,.default-style.testimonial-alignment-right .eael-testimonial-image{text-align:right}.classic-style.testimonial-alignment-center .eael-testimonial-image>figure,.default-style.testimonial-alignment-center .eael-testimonial-image>figure{text-align:center}.eael-testimonial-slider.icon-img-left-content .eael-testimonial-align-centered .eael-testimonial-content{text-align:center}.eael-testimonial-slider.icon-img-left-content .eael-testimonial-align-left .eael-testimonial-content{text-align:left}.eael-testimonial-slider.icon-img-left-content .eael-testimonial-align-right .eael-testimonial-content{text-align:right}.eael-testimonial-slider.icon-img-right-content .eael-testimonial-align-centered .eael-testimonial-content{text-align:center}.eael-testimonial-slider.icon-img-right-content .eael-testimonial-align-left .eael-testimonial-content{text-align:left}.eael-testimonial-slider.icon-img-right-content .eael-testimonial-align-right .eael-testimonial-content{text-align:right}span.eael-testimonial-quote{position:absolute;right:10px;top:10px}.eael-testimonial-item.left .eael-testimonial-image{text-align:left}.eael-testimonial-item.center .eael-testimonial-image{text-align:center}.eael-testimonial-item.right .eael-testimonial-image{text-align:right}.eael-testimonial-inline-bio .eael-testimonial-image{float:left}.eael-testimonial-inline-bio .bio-text{padding-top:10px}.eael-testimonial-content.eael-testimonial-inline-bio{overflow:hidden;margin-bottom:0;padding-bottom:0}.eael-testimonial-inline-bio .bio-text,.eael-testimonial-inline-bio .testimonial-star-rating{float:left;width:65%}.eael-testimonial-content.eael-testimonial-inline-bio{text-align:left!important}.testimonial-inline-style .eael-testimonial-image{float:left;max-width:100%;padding:0;margin-right:15px}.testimonial-inline-style{overflow:hidden;text-align:left}.content-top-icon-title-inline .eael-testimonial-align-left .eael-testimonial-text,.content-top-icon-title-inline .eael-testimonial-text{text-align:left}.content-top-icon-title-inline .eael-testimonial-align-centered .eael-testimonial-text{text-align:center}.content-top-icon-title-inline .eael-testimonial-align-right .eael-testimonial-text{text-align:right}.content-bottom-icon-title-inline .eael-testimonial-align-left .eael-testimonial-text,.content-bottom-icon-title-inline .eael-testimonial-text{text-align:left}.content-bottom-icon-title-inline .eael-testimonial-align-centered .eael-testimonial-text{text-align:center}.content-bottom-icon-title-inline .eael-testimonial-align-right .eael-testimonial-text{text-align:right}
|
39 |
.eael-tooltip{position:relative;display:inline-block;min-width:150px;padding:12px 24px;font-size:.93rem;color:#333;line-height:1;cursor:pointer;transition:all .3s ease-in-out}.eael-tooltip .eael-tooltip-text{display:block;width:100%;visibility:hidden;background-color:#000;color:#fff;border-radius:4px;padding:10px;position:absolute;z-index:1;font-size:.93rem;line-height:1.3}.eael-tooltip .eael-tooltip-text p{margin:0}.eael-tooltip .eael-tooltip-text::after{content:"";position:absolute;border-width:5px;border-style:solid}.eael-tooltip:hover .eael-tooltip-text{visibility:visible}.eael-tooltip .eael-tooltip-text.eael-tooltip-left{top:50%;right:100%;transform:translateY(-50%);margin-right:10px}.eael-tooltip:hover .eael-tooltip-text.eael-tooltip-left{-webkit-animation:tooltipLeftIn .3s ease-in-out;animation:tooltipLeftIn .3s ease-in-out}.eael-tooltip .eael-tooltip-text.eael-tooltip-left::after{top:calc(50% - 5px);left:100%;border-color:transparent transparent transparent #000}.eael-tooltip .eael-tooltip-text.eael-tooltip-right{top:50%;left:100%;transform:translateY(-50%);transition:all .3s ease-in-out;margin-left:10px}.eael-tooltip:hover .eael-tooltip-text.eael-tooltip-right{-webkit-animation:tooltipRightIn .3s linear;animation:tooltipRightIn .3s linear}.eael-tooltip .eael-tooltip-text.eael-tooltip-right::after{top:calc(50% - 5px);right:100%;border-color:transparent #000 transparent transparent}.eael-tooltip .eael-tooltip-text.eael-tooltip-top{bottom:calc(100%);left:0;right:0;margin:0 auto 10px auto}.eael-tooltip .eael-tooltip-text.eael-tooltip-top::after{margin-top:0;top:100%;left:calc(50% - 5px);border-color:#000 transparent transparent transparent}.eael-tooltip:hover .eael-tooltip-text.eael-tooltip-top{-webkit-animation:tooltipTopIn .3s linear;animation:tooltipTopIn .3s linear}.eael-tooltip .eael-tooltip-text.eael-tooltip-bottom{top:100%;left:0;right:0;margin:10px auto 0 auto}.eael-tooltip .eael-tooltip-text.eael-tooltip-bottom::after{margin-top:0;bottom:100%;left:calc(50% - 5px);border-color:transparent transparent #000 transparent}.eael-tooltip:hover .eael-tooltip-text.eael-tooltip-bottom{-webkit-animation:tooltipBottomIn .3s linear;animation:tooltipBottomIn .3s linear}.eael-tooltip-align-left{display:flex;width:100%;justify-content:flex-start}.eael-tooltip-align-right{display:flex;width:100%;justify-content:flex-end}.eael-tooltip-align-center{display:flex;width:100%;justify-content:center}.eael-tooltip-align-justify .eael-tooltip{display:flex;justify-content:center;align-items:center}@-webkit-keyframes tooltipRightIn{0%{opacity:0;left:105%}100%{opacity:1;left:100%}}@keyframes tooltipRightIn{0%{opacity:0;left:105%}100%{opacity:1;left:100%}}@-webkit-keyframes tooltipLeftIn{0%{opacity:0;right:105%}100%{opacity:1;right:100%}}@keyframes tooltipLeftIn{0%{opacity:0;right:105%}100%{opacity:1;right:100%}}@-webkit-keyframes tooltipTopIn{0%{opacity:0;bottom:110%}100%{opacity:1;bottom:100%}}@keyframes tooltipTopIn{0%{opacity:0;bottom:110%}100%{opacity:1;bottom:100%}}@-webkit-keyframes tooltipBottomIn{0%{opacity:0;top:110%}100%{opacity:1;top:100%}}@keyframes tooltipBottomIn{0%{opacity:0;top:110%}100%{opacity:1;top:100%}}span.eael-tooltip-content,span.eael-tooltip-content a{width:100%;display:block;text-align:center}.eael-tooltip-text-align-left .eael-tooltip-content a,.eael-tooltip-text-align-left .eael-tooltip-text{text-align:left}.eael-tooltip-text-align-right .eael-tooltip-content a,.eael-tooltip-text-align-right .eael-tooltip-text{text-align:right}.eael-tooltip-text-align-center .eael-tooltip-content a,.eael-tooltip-text-align-center .eael-tooltip-text{text-align:center}.eael-tooltip-text-align-justify .eael-tooltip-content a,.eael-tooltip-text-align-justify .eael-tooltip-text{text-align:justify}
|
40 |
.eael-twitter-feed::after,.eael-twitter-feed::before{content:"";clear:both}.eael-twitter-feed-masonry .eael-twitter-feed-item{float:left}@media only screen and (max-width:480px){.eael-twitter-feed-masonry.eael-twitter-feed-col-2 .eael-twitter-feed-item{width:100%!important}}@media only screen and (max-width:480px){.eael-twitter-feed-masonry.eael-twitter-feed-col-3 .eael-twitter-feed-item{width:100%!important}}@media only screen and (max-width:480px){.eael-twitter-feed-masonry.eael-twitter-feed-col-4 .eael-twitter-feed-item{width:100%!important}}.eael-twitter-feed-item .eael-twitter-feed-item-inner{background:#fff;border:1px solid rgba(0,0,0,.1)}.eael-twitter-feed-item a{color:#08c;text-decoration:none}.eael-twitter-feed-item a:hover{outline:0;color:#005580}.eael-twitter-feed-item a:focus{outline:0}.eael-twitter-feed-item .eael-twitter-feed-item-header{padding:20px 15px 0;margin-bottom:10px}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-avatar{float:left;width:38px;margin-right:10px}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-avatar img{max-width:100%;height:auto;-o-object-fit:cover;object-fit:cover}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-avatar.avatar-circle img{border-radius:50%}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-meta{float:left}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-meta .eael-twitter-feed-item-icon{color:#1da1f2;margin-right:5px}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-meta .eael-twitter-feed-item-author{color:#444;line-height:1.5em;font-weight:700}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-date{float:right;margin-right:10px;font-size:90%;color:#999}.eael-twitter-feed-item .eael-twitter-feed-item-content{padding:0 15px 15px}.eael-twitter-feed-item .eael-twitter-feed-item-content p{color:#666;margin:0 0 5px;min-height:20px;text-overflow:ellipsis;-webkit-line-clamp:5;-webkit-box-orient:vertical}.eael-twitter-feed.swiper-container .swiper-button-next,.eael-twitter-feed.swiper-container .swiper-button-prev{background-image:none;outline:0}
|
|
|
41 |
.eael-weform-container input,.eael-weform-container textarea{height:auto;padding:10px}.eael-contact-form-btn-align-center .eael-weform-container ul.wpuf-form .wpuf-submit input[type=submit]{margin-left:auto!important;margin-right:auto!important;display:block;float:none}.eael-contact-form-btn-align-left .eael-weform-container ul.wpuf-form .wpuf-submit input[type=submit]{float:left;width:auto}.eael-contact-form-btn-align-right .eael-weform-container ul.wpuf-form .wpuf-submit input[type=submit]{float:right;width:auto}.eael-weform-container ul.wpuf-form li .wpuf-fields input[type=email],.eael-weform-container ul.wpuf-form li .wpuf-fields input[type=number],.eael-weform-container ul.wpuf-form li .wpuf-fields input[type=password],.eael-weform-container ul.wpuf-form li .wpuf-fields input[type=text],.eael-weform-container ul.wpuf-form li .wpuf-fields input[type=url],.eael-weform-container ul.wpuf-form li .wpuf-fields textarea{max-width:100%}
|
42 |
.ea-woo-checkout{font-size:14px;line-height:1.5em;font-weight:400}.ea-woo-checkout .woocommerce #ship-to-different-address span,.ea-woo-checkout .woocommerce h3{font-size:25px;line-height:1.5em;font-weight:600;margin-top:0;text-transform:capitalize}.ea-woo-checkout .woocommerce label{font-size:16px;line-height:1.5;font-weight:500}.ea-woo-checkout .woocommerce label.woocommerce-form__label-for-checkbox.checkbox{display:flex;align-items:center}.ea-woo-checkout .woocommerce .checkout li.wc_payment_method{border-bottom:none}.ea-woo-checkout .woocommerce .woo-checkout-coupon a,.ea-woo-checkout .woocommerce .woo-checkout-login a{color:#7866ff}.ea-woo-checkout .woocommerce .woo-checkout-coupon a :hover,.ea-woo-checkout .woocommerce .woo-checkout-login a :hover{color:#443d6d}.ea-woo-checkout .woocommerce .woo-checkout-coupon label,.ea-woo-checkout .woocommerce .woo-checkout-login label{margin-bottom:10px}.ea-woo-checkout .woocommerce .woo-checkout-coupon .input-text,.ea-woo-checkout .woocommerce .woo-checkout-coupon select,.ea-woo-checkout .woocommerce .woo-checkout-login .input-text,.ea-woo-checkout .woocommerce .woo-checkout-login select{border-radius:5px;background-color:#fff;padding:13px;border:1px solid transparent}.ea-woo-checkout .woocommerce .woo-checkout-coupon .input-text :active,.ea-woo-checkout .woocommerce .woo-checkout-coupon .input-text :hover,.ea-woo-checkout .woocommerce .woo-checkout-coupon select :active,.ea-woo-checkout .woocommerce .woo-checkout-coupon select :hover,.ea-woo-checkout .woocommerce .woo-checkout-login .input-text :active,.ea-woo-checkout .woocommerce .woo-checkout-login .input-text :hover,.ea-woo-checkout .woocommerce .woo-checkout-login select :active,.ea-woo-checkout .woocommerce .woo-checkout-login select :hover{border-color:inherit}.ea-woo-checkout .woocommerce .woo-checkout-coupon .input-text :focus,.ea-woo-checkout .woocommerce .woo-checkout-coupon select :focus,.ea-woo-checkout .woocommerce .woo-checkout-login .input-text :focus,.ea-woo-checkout .woocommerce .woo-checkout-login select :focus{outline:inherit;outline-offset:0}.ea-woo-checkout .woocommerce .woo-checkout-coupon .button,.ea-woo-checkout .woocommerce .woo-checkout-login .button{background-color:#7866ff;border-radius:5px;font-size:16px;line-height:1.5em;color:#fff;font-weight:400;margin:0;padding:13px 30px;border:none;text-transform:capitalize!important}.ea-woo-checkout .woocommerce .woo-checkout-coupon .button:hover,.ea-woo-checkout .woocommerce .woo-checkout-login .button:hover{text-decoration:none}.ea-woo-checkout .woocommerce .woo-checkout-login{border-radius:5px;background-color:#f1ebff;padding:30px;font-size:16px;line-height:1.5em;font-weight:400;margin-bottom:30px;position:relative;display:block}.ea-woo-checkout .woocommerce .woo-checkout-login .ea-login-icon{width:20px;position:absolute;top:20px;left:20px;font-size:20px}.ea-woo-checkout .woocommerce .woo-checkout-login .ea-login-icon i,.ea-woo-checkout .woocommerce .woo-checkout-login .ea-login-icon svg{width:1em;height:1em;position:relative;display:block}.ea-woo-checkout .woocommerce .woo-checkout-login .form-row-first{width:48.5%;float:left!important}.ea-woo-checkout .woocommerce .woo-checkout-login .form-row-last{float:right!important}.ea-woo-checkout .woocommerce .woo-checkout-login .clear{clear:both}.ea-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login{max-width:100%;margin:15px 0 0!important}.ea-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login p:first-child{margin-top:0}.ea-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login .woocommerce-form-login__submit{margin-right:30px}.ea-woo-checkout .woocommerce .woo-checkout-login .lost_password{margin-left:3px;margin-bottom:0}.ea-woo-checkout .woocommerce .woo-checkout-coupon .form-row-first{width:48.5%}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon{margin:15px 0 0!important;padding:20px;width:100%;text-align:left;border:1px solid inherit;border-radius:5px}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon p:first-child{margin:0 0 20px 0}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-first{width:78%;float:left}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-first input{border-radius:5px;box-shadow:0 12px 20px rgba(51,57,137,.1);background-color:#fff;height:50px}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-first input :focus{outline:0;outline-offset:0}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-last{width:20%;margin-left:2%;float:right}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .clear{clear:both}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon p{margin-top:0}@media (max-width:1024px){.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-first{width:50%}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-last{width:48%}}@media (max-width:767px){.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-first,.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-last{width:100%}}.ea-woo-checkout .woocommerce .woo-checkout-coupon .lost_password{margin-bottom:0}.ea-woo-checkout .woocommerce h3#order_review_heading{float:none;width:100%}.ea-woo-checkout .woocommerce #customer_details.col2-set{width:100%!important;padding:0!important;float:none!important;margin:0 0 30px 0}.ea-woo-checkout .woocommerce #customer_details.col2-set h3{border:none;padding:0;font-size:25px}.ea-woo-checkout .woocommerce #customer_details.col2-set .col-1{padding-left:0;float:left!important;width:48%!important}.ea-woo-checkout .woocommerce #customer_details.col2-set .col-2{padding-right:0;float:right!important;width:48%!important}.ea-woo-checkout .woocommerce #customer_details.col2-set #ship-to-different-address label{display:flex;padding-top:0;padding-bottom:0}.ea-woo-checkout .woocommerce #customer_details.col2-set #ship-to-different-address label input{align-self:start;margin-top:9px;margin-right:10px}@media (max-width:767px){.ea-woo-checkout .woocommerce #customer_details.col2-set .col-1,.ea-woo-checkout .woocommerce #customer_details.col2-set .col-2{width:100%!important;float:none!important}}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review{margin-bottom:30px}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table{padding:0;margin:0}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table li{display:flex;align-items:center;margin:0 0 12px 0}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-header{font-size:14px}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-row{border-radius:3px;font-size:16px;font-weight:500;background-color:#fff}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-col-1{flex-basis:70%;max-width:70%}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-col-2{flex-basis:15%;max-width:15%;text-align:center}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-col-3{flex-basis:15%;max-width:15%;text-align:right;padding-right:25px!important}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .product-thum-name{align-items:center;display:flex}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .product-thum-name .product-thumbnail{width:65px;margin-right:15px}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .product-thum-name .product-thumbnail img{display:block}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .product-quantity,.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .product-total{padding:0 10px}@media all and (max-width:767px){.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table{overflow-y:auto}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-header,.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-row{width:400px}}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer{display:flex;justify-content:space-between}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .back-to-shopping{margin:0 0 10px 0;text-transform:capitalize;font-size:15px;line-height:1.5em}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .back-to-shopping i{margin-right:5px}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content{font-size:14px;border-radius:3px;padding:20px 25px;background-color:#fff;width:40%;font-weight:700;margin:0 0 0 auto}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content div:first-child{border:none}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content div:last-child{padding-bottom:0}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content label{font-size:inherit;font-weight:inherit;line-height:inherit}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content .woocommerce-remove-coupon{font-family:inherit;font-size:.7em;font-weight:inherit;line-height:inherit;transition:all .2s}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .cart-discount,.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .cart-subtotal,.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .order-total,.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .shipping-area{display:flex;justify-content:space-between;border-top:1px solid inherit;padding:3px 0}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .woocommerce-shipping-methods{margin:0;padding:0;list-style:none}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .shipping-area #shipping_method li{margin-bottom:0}@media all and (max-width:1024px){.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content{width:40%}}@media all and (max-width:767px){.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer{flex-direction:column-reverse}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .back-to-shop{margin-top:15px}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content{width:100%}}.eael-woo-checkout .woocommerce .woocommerce-error,.eael-woo-checkout .woocommerce .woocommerce-info,.eael-woo-checkout .woocommerce .woocommerce-message{border:0;border-radius:5px;text-align:left;background-color:transparent;text-transform:capitalize;padding:20px 20px 20px 50px;font-size:16px;line-height:1.5em;font-weight:400;margin-bottom:30px}.eael-woo-checkout .woocommerce .woocommerce-error::before,.eael-woo-checkout .woocommerce .woocommerce-info::before,.eael-woo-checkout .woocommerce .woocommerce-message::before{left:20px;top:20px;font-size:20px}.eael-woo-checkout .woocommerce .woocommerce-error a,.eael-woo-checkout .woocommerce .woocommerce-info a,.eael-woo-checkout .woocommerce .woocommerce-message a{box-shadow:none;text-transform:capitalize}.eael-woo-checkout .woocommerce .woocommerce-error{background-color:#fff3f5;color:#ff7e93}.eael-woo-checkout .woocommerce .woocommerce-info{background-color:#d1ecf1;color:#0c5460}.eael-woo-checkout .woocommerce .woocommerce-message{background-color:#d4edda;color:#155724}.eael-woo-checkout .woocommerce form.checkout_coupon{border:1px solid #404040}.eael-woo-checkout .woocommerce .woo-checkout-login.woo-checkout-login-editor{display:none!important}.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login-toggle .woocommerce-error,.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login-toggle .woocommerce-info,.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login-toggle .woocommerce-message{background-color:transparent!important;padding:0 0 0 40px!important;border:none!important;margin:0}.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login-toggle .woocommerce-error::before,.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login-toggle .woocommerce-info::before,.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login-toggle .woocommerce-message::before{left:20px;top:20px;font-size:20px}.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-info{font-size:inherit;line-height:1.5em;font-weight:inherit;margin-bottom:0;display:block}.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-info::before{content:none}.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-info a{text-decoration:underline}.eael-woo-checkout .woocommerce .woo-checkout-coupon{border-radius:5px;background-color:#ebfaff;padding:30px;font-size:16px;line-height:1.5em;font-weight:400;margin-bottom:30px;position:relative;display:block}.eael-woo-checkout .woocommerce .woo-checkout-coupon .ea-coupon-icon{width:20px;position:absolute;top:20px;left:20px;font-size:20px}.eael-woo-checkout .woocommerce .woo-checkout-coupon .ea-coupon-icon i,.eael-woo-checkout .woocommerce .woo-checkout-coupon .ea-coupon-icon svg{width:1em;height:1em;position:relative;display:block}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-error,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-info,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-message{border-width:1px;border-style:solid;border-radius:3px;padding:10px 10px 10px 40px!important;margin:20px 0 0;color:inherit}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-error:before,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-info:before,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-message:before{left:10px;top:10px;color:inherit}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-error li,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-info li,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-message li{margin-left:0}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-error,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-info,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-message{background-color:transparent!important;padding:0 0 0 40px!important;border:none!important;margin:0}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-error::before,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-info::before,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-message::before{left:20px;top:20px;font-size:20px}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-info{font-size:inherit;line-height:1.5em;font-weight:inherit;margin-bottom:0;display:block}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-info::before{content:none}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-info a{text-decoration:underline}.eael-woo-checkout .woocommerce .woo-checkout-payment{clear:both}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods{padding:0 0 20px 0!important;margin:0;border:0}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods li:not(.woocommerce-notice){background-color:transparent}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method{margin:0;padding:0}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method>label{font-size:15px;padding:0;margin:0;display:inline-block;width:100%}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method input[type=radio]{display:none}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method input[type=radio]+label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding-left:25px;position:relative}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method input[type=radio]+label::before{transition:all 250ms cubic-bezier(.4,.25,.3,1);content:"";width:12px;height:12px;border-radius:50%;background-color:#b8b6ca;border:0 solid #fff;font-size:0;position:absolute;top:47%;left:0;transform:translateY(-50%)}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method input[type=radio]+label::after{transition:all 250ms cubic-bezier(.4,.25,.3,1);content:"";width:0;height:0;border-radius:50%;background-color:#fff;position:absolute;top:47%;left:0;transform:translateY(-50%)}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method input[type=radio]:checked+label::before{background-color:transparent;width:12px;height:12px;border-width:2px;border-color:#7362f0}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method input[type=radio]:checked+label::after{width:6px;height:6px;left:3px;background-color:#fff}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .payment_box{border-radius:5px}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .payment_box p:first-child{margin:0!important}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .place-order{padding:20px 0 0 0;border-top:1px solid #fff}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .place-order p{margin-top:0}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .place-order a.woocommerce-privacy-policy-link{color:#fff;font-weight:600}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .place-order #place_order{width:auto;margin:0 0 0 auto;text-transform:capitalize;letter-spacing:unset}.eael-woo-checkout.theme-astra:not(.elementor-editor-active) .woocommerce #customer_details.col2-set .col-1{width:100%!important;float:none!important}@media (min-width:1024px){.eael-woo-checkout.theme-astra:not(.elementor-editor-active) .woocommerce #customer_details.col2-set .col-1 .woocommerce-billing-fields{float:left!important;width:48%!important;padding-right:2%}.eael-woo-checkout.theme-astra:not(.elementor-editor-active) .woocommerce #customer_details.col2-set .col-1 .woocommerce-account-fields,.eael-woo-checkout.theme-astra:not(.elementor-editor-active) .woocommerce #customer_details.col2-set .col-1 .woocommerce-additional-fields,.eael-woo-checkout.theme-astra:not(.elementor-editor-active) .woocommerce #customer_details.col2-set .col-1 .woocommerce-shipping-fields{float:left!important;width:48%!important;padding-left:2%}}.eael-woo-checkout.theme-astra:not(.elementor-editor-active) .woocommerce #customer_details.col2-set .col-2{clear:both}.eael-woo-checkout.elementor-editor-active .woocommerce .woo-checkout-login.woo-checkout-login-editor{display:block!important}
|
43 |
.eael-wpforms .wpforms-container .wpforms-form .wpforms-page-button,.eael-wpforms .wpforms-container .wpforms-form button[type=submit],.eael-wpforms .wpforms-container .wpforms-form input[type=submit]{border:0}.eael-wpforms .wpforms-container .wpforms-form .wpforms-page-button:hover,.eael-wpforms .wpforms-container .wpforms-form button[type=submit]:hover,.eael-wpforms .wpforms-container .wpforms-form input[type=submit]:hover{border:0}.eael-wpforms .wpforms-container .wpforms-form input[type=checkbox],.eael-wpforms .wpforms-container .wpforms-form input[type=radio]{padding:3px}.eael-wpforms .wpforms-container .wpforms-form .wpforms-field-label{display:none}.eael-wpforms .wpforms-container .wpforms-form .wpforms-field-name .wpforms-field-row{max-width:100%}.eael-wpforms .wpforms-container .wpforms-field input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=image]):not([type=file]),.eael-wpforms .wpforms-container .wpforms-field select,.eael-wpforms .wpforms-container .wpforms-field textarea{max-width:100%!important}.eael-wpforms-labels-yes .wpforms-container .wpforms-form .wpforms-field-label{display:block}.eael-wpforms-form-button-full-width .wpforms-submit-container .wpforms-submit{width:100%}
|
|
|
44 |
@charset "UTF-8";.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}body .fc{font-size:1em}.fc-highlight{background:#bce8f1;opacity:.3}.fc-bgevent{background:#8fdf82;opacity:.3}.fc-nonbusiness{background:#d7d7d7}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:2px 4px}.fc-rtl .fc-popover .fc-header{flex-direction:row-reverse}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-popover .fc-header .fc-close{cursor:pointer;opacity:.65;font-size:1.1em}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-bg,.fc-bgevent-skeleton,.fc-highlight-skeleton,.fc-mirror-skeleton{position:absolute;top:0;left:0;right:0}.fc-bg{bottom:0}.fc-bg table{height:100%}.fc table{width:100%;box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}a[data-goto]{cursor:pointer}a[data-goto]:hover{text-decoration:underline}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-mirror-skeleton{z-index:5}.fc .fc-row .fc-content-skeleton table,.fc .fc-row .fc-content-skeleton td,.fc .fc-row .fc-mirror-skeleton td{background:0 0;border-color:transparent}.fc-row .fc-content-skeleton td,.fc-row .fc-mirror-skeleton td{border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-mirror-skeleton tbody td{border-top:0}.fc-scroller{-webkit-overflow-scrolling:touch}.fc-scroller>.fc-day-grid,.fc-scroller>.fc-time-grid{position:relative;width:100%}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.4;border-radius:3px;border:1px solid #3788d8}.fc-event,.fc-event-dot{background-color:#3788d8}.fc-event,.fc-event:hover{color:#fff;text-decoration:none}.fc-event.fc-draggable,.fc-event[href]{cursor:pointer}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:4}.fc-event .fc-resizer{display:none}.fc-event.fc-allow-mouse-resize .fc-resizer,.fc-event.fc-selected .fc-resizer{display:block}.fc-event.fc-selected .fc-resizer:before{content:"";position:absolute;z-index:9999;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px}.fc-event.fc-selected{z-index:9999!important;box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event.fc-selected:after{content:"";position:absolute;z-index:1;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#000;opacity:.25}.fc-event.fc-dragging.fc-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event.fc-dragging:not(.fc-selected){opacity:.75}.fc-h-event.fc-selected:before{content:"";position:absolute;z-index:3;top:-10px;bottom:-10px;left:0;right:0}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-ltr .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-end-resizer{cursor:w-resize;left:-1px}.fc-ltr .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-start-resizer{cursor:e-resize;right:-1px}.fc-h-event.fc-allow-mouse-resize .fc-resizer{width:7px;top:-1px;bottom:-1px}.fc-h-event.fc-selected .fc-resizer{border-radius:4px;border-width:1px;width:6px;height:6px;border-style:solid;border-color:inherit;background:#fff;top:50%;margin-top:-4px}.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,.fc-rtl .fc-h-event.fc-selected .fc-end-resizer{margin-left:-4px}.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,.fc-rtl .fc-h-event.fc-selected .fc-start-resizer{margin-right:-4px}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}tr:first-child>td>.fc-day-grid-event{margin-top:2px}.fc-mirror-skeleton tr:first-child>td>.fc-day-grid-event{margin-top:0}.fc-day-grid-event .fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer{margin-left:-2px}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer{margin-right:-2px}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-now-indicator{position:absolute;border:0 solid red}.fc-unselectable{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.fc-unthemed .fc-content,.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-list-view,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed td.fc-today{background:#fcf8e3}.fc-unthemed .fc-disabled-day{background:#d7d7d7;opacity:.3}@font-face{font-family:fcicons;src:url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format("truetype");font-weight:400;font-style:normal}.fc-icon{font-family:fcicons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fc-icon-chevron-left:before{content:""}.fc-icon-chevron-right:before{content:""}.fc-icon-chevrons-left:before{content:""}.fc-icon-chevrons-right:before{content:""}.fc-icon-minus-square:before{content:""}.fc-icon-plus-square:before{content:""}.fc-icon-x:before{content:""}.fc-icon{display:inline-block;width:1em;height:1em;text-align:center}.fc-button{border-radius:0;overflow:visible;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}.fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc-button{-webkit-appearance:button}.fc-button:not(:disabled){cursor:pointer}.fc-button::-moz-focus-inner{padding:0;border-style:none}.fc-button{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.4em .65em;font-size:1em;line-height:1.5;border-radius:.25em}.fc-button:hover{color:#212529;text-decoration:none}.fc-button:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(44,62,80,.25);box-shadow:0 0 0 .2rem rgba(44,62,80,.25)}.fc-button:disabled{opacity:.65}.fc-button-primary{color:#fff;background-color:#2c3e50;border-color:#2c3e50}.fc-button-primary:hover{color:#fff;background-color:#1e2b37;border-color:#1a252f}.fc-button-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(76,91,106,.5);box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc-button-primary:disabled{color:#fff;background-color:#2c3e50;border-color:#2c3e50}.fc-button-primary:not(:disabled).fc-button-active,.fc-button-primary:not(:disabled):active{color:#fff;background-color:#1a252f;border-color:#151e27}.fc-button-primary:not(:disabled).fc-button-active:focus,.fc-button-primary:not(:disabled):active:focus{-webkit-box-shadow:0 0 0 .2rem rgba(76,91,106,.5);box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc-button .fc-icon{vertical-align:middle;font-size:1.5em}.fc-button-group{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.fc-button-group>.fc-button{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.fc-button-group>.fc-button:hover{z-index:1}.fc-button-group>.fc-button.fc-button-active,.fc-button-group>.fc-button:active,.fc-button-group>.fc-button:focus{z-index:1}.fc-button-group>.fc-button:not(:first-child){margin-left:-1px}.fc-button-group>.fc-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.fc-button-group>.fc-button:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-list-item:hover td{background-color:#f5f5f5}.fc-toolbar{display:flex;justify-content:space-between;align-items:center}.fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-toolbar h2{font-size:1.75em;margin:0}.fc-view-container{position:relative}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}@media print{.fc{max-width:100%!important}.fc-event{background:#fff!important;color:#000!important;page-break-inside:avoid}.fc-event .fc-resizer{display:none}.fc hr,.fc tbody,.fc td,.fc th,.fc thead,.fc-row{border-color:#ccc!important;background:#fff!important}.fc-bg,.fc-bgevent-container,.fc-bgevent-skeleton,.fc-business-container,.fc-highlight-container,.fc-highlight-skeleton,.fc-mirror-container,.fc-mirror-skeleton{display:none}.fc tbody .fc-row{height:auto!important;min-height:0!important}.fc tbody .fc-row .fc-content-skeleton{position:static;padding-bottom:0!important}.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td{padding-bottom:1em}.fc tbody .fc-row .fc-content-skeleton table{height:1em}.fc-more,.fc-more-cell{display:none!important}.fc tr.fc-limited{display:table-row!important}.fc td.fc-limited{display:table-cell!important}.fc-popover{display:none}.fc-time-grid{min-height:0!important}.fc-timeGrid-view .fc-axis{display:none}.fc-slats,.fc-time-grid hr{display:none!important}.fc-time-grid .fc-content-skeleton{position:static}.fc-time-grid .fc-content-skeleton table{height:4em}.fc-time-grid .fc-event-container{margin:0!important}.fc-time-grid .fc-event{position:static!important;margin:3px 2px!important}.fc-time-grid .fc-event.fc-not-end{border-bottom-width:1px!important}.fc-time-grid .fc-event.fc-not-end:after{content:"..."}.fc-time-grid .fc-event.fc-not-start{border-top-width:1px!important}.fc-time-grid .fc-event.fc-not-start:before{content:"..."}.fc-time-grid .fc-event .fc-time{white-space:normal!important}.fc-time-grid .fc-event .fc-time span{display:none}.fc-time-grid .fc-event .fc-time:after{content:attr(data-full)}.fc-day-grid-container,.fc-scroller,.fc-time-grid-container{overflow:visible!important;height:auto!important}.fc-row{border:0!important;margin:0!important}.fc button,.fc-button-group{display:none}}
|
45 |
.fc-dayGridDay-view .fc-content-skeleton,.fc-dayGridWeek-view .fc-content-skeleton{padding-bottom:1em}.fc-dayGrid-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid{overflow:hidden}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-day-top.fc-other-month{opacity:.3}.fc-dayGrid-view .fc-day-number,.fc-dayGrid-view .fc-week-number{padding:2px}.fc-dayGrid-view th.fc-day-number,.fc-dayGrid-view th.fc-week-number{padding:0 2px}.fc-ltr .fc-dayGrid-view .fc-day-top .fc-day-number{float:right}.fc-rtl .fc-dayGrid-view .fc-day-top .fc-day-number{float:left}.fc-ltr .fc-dayGrid-view .fc-day-top .fc-week-number{float:left;border-radius:0 0 3px 0}.fc-rtl .fc-dayGrid-view .fc-day-top .fc-week-number{float:right;border-radius:0 0 0 3px}.fc-dayGrid-view .fc-day-top .fc-week-number{min-width:1.5em;text-align:center;background-color:#f2f2f2;color:grey}.fc-dayGrid-view td.fc-week-number{text-align:center}.fc-dayGrid-view td.fc-week-number>*{display:inline-block;min-width:1.25em}
|
46 |
.fc-event-dot{display:inline-block;width:10px;height:10px;border-radius:5px}.fc-rtl .fc-list-view{direction:rtl}.fc-list-view{border-width:1px;border-style:solid}.fc .fc-list-table{table-layout:auto}.fc-list-table td{border-width:1px 0 0;padding:8px 14px}.fc-list-table tr:first-child td{border-top-width:0}.fc-list-heading{border-bottom-width:1px}.fc-list-heading td{font-weight:700}.fc-ltr .fc-list-heading-main{float:left}.fc-ltr .fc-list-heading-alt{float:right}.fc-rtl .fc-list-heading-main{float:right}.fc-rtl .fc-list-heading-alt{float:left}.fc-list-item.fc-has-url{cursor:pointer}.fc-list-item-marker,.fc-list-item-time{white-space:nowrap;width:1px}.fc-ltr .fc-list-item-marker{padding-right:0}.fc-rtl .fc-list-item-marker{padding-left:0}.fc-list-item-title a{text-decoration:none;color:inherit}.fc-list-item-title a[href]:hover{text-decoration:underline}.fc-list-empty-wrap2{position:absolute;top:0;left:0;right:0;bottom:0}.fc-list-empty-wrap1{width:100%;height:100%;display:table}.fc-list-empty{display:table-cell;vertical-align:middle;text-align:center}.fc-unthemed .fc-list-empty{background-color:#eee}
|
47 |
@charset "UTF-8";.fc-timeGrid-view .fc-day-grid{position:relative;z-index:2}.fc-timeGrid-view .fc-day-grid .fc-row{min-height:3em}.fc-timeGrid-view .fc-day-grid .fc-row .fc-content-skeleton{padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px;white-space:nowrap}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-content-col{position:relative}.fc-time-grid .fc-content-skeleton{position:absolute;z-index:3;top:0;left:0;right:0}.fc-time-grid .fc-business-container{position:relative;z-index:1}.fc-time-grid .fc-bgevent-container{position:relative;z-index:2}.fc-time-grid .fc-highlight-container{position:relative;z-index:3}.fc-time-grid .fc-event-container{position:relative;z-index:4}.fc-time-grid .fc-now-indicator-line{z-index:5}.fc-time-grid .fc-mirror-container{position:relative;z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-highlight-container{position:relative}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-time-grid-event{margin-bottom:1px}.fc-time-grid-event-inset{-webkit-box-shadow:0 0 0 1px #fff;box-shadow:0 0 0 1px #fff}.fc-time-grid-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-time-grid-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event .fc-content{overflow:hidden;max-height:100%}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em;white-space:nowrap}.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:" - "}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after{content:"="}.fc-time-grid-event.fc-selected .fc-resizer{border-radius:5px;border-width:1px;width:8px;height:8px;border-style:solid;border-color:inherit;background:#fff;left:50%;margin-left:-5px;bottom:-5px}.fc-time-grid .fc-now-indicator-line{border-top-width:1px;left:0;right:0}.fc-time-grid .fc-now-indicator-arrow{margin-top:-5px}.fc-ltr .fc-time-grid .fc-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-rtl .fc-time-grid .fc-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}
|
48 |
-
@keyframes plyr-progress{to{background-position:25px 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{from{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:subpixel-antialiased;direction:ltr;font-family:Avenir,"Avenir Next","Helvetica Neue","Segoe UI",Helvetica,Arial,sans-serif;font-variant-numeric:tabular-nums;font-weight:500;line-height:1.7;max-width:100%;min-width:200px;position:relative;text-shadow:none;transition:box-shadow .3s ease}.plyr audio,.plyr video{border-radius:inherit;height:auto;vertical-align:middle;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui ::after,.plyr--full-ui ::before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4a5764;border-radius:2px;color:#fff;font-size:9px;line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;color:#fff;display:none;font-size:14px;left:0;padding:10px;position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions .plyr__caption{background:rgba(0,0,0,.8);border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__captions .plyr__caption div{display:inline}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:16px;padding:20px}}@media (min-width:768px){.plyr__captions{font-size:18px}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(-40px)}.plyr__control{background:0 0;border:0;border-radius:3px;color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;position:relative;transition:all .3s ease}.plyr__control svg{display:block;fill:currentColor;height:18px;pointer-events:none;width:18px}.plyr__control:focus{outline:0}.plyr__control.plyr__tab-focus{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}a.plyr__control{text-decoration:none}a.plyr__control::after,a.plyr__control::before{display:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed{display:none}.plyr--audio .plyr__control.plyr__tab-focus,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#00b3ff;color:#fff}.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#00b3ff;color:#fff}.plyr__control--overlaid{background:rgba(0,179,255,.8);border:0;border-radius:100%;color:#fff;display:none;left:50%;padding:15px;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{background:#00b3ff}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__progress__container{flex:1;min-width:0}.plyr__controls .plyr__controls__item{margin-left:2.5px}.plyr__controls .plyr__controls__item:first-child{margin-left:0;margin-right:auto}.plyr__controls .plyr__controls__item.plyr__progress__container{padding-left:2.5px}.plyr__controls .plyr__controls__item.plyr__time{padding:0 5px}.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,.plyr__controls .plyr__controls__item.plyr__time+.plyr__time,.plyr__controls .plyr__controls__item.plyr__time:first-child{padding-left:0}.plyr__controls .plyr__controls__item.plyr__volume{padding-right:5px}.plyr__controls .plyr__controls__item.plyr__volume:first-child{padding-right:0}.plyr__controls:empty{display:none}.plyr--audio .plyr__controls{background:#fff;border-radius:inherit;color:#4a5764;padding:10px}.plyr--video .plyr__controls{background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.7));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;left:0;padding:20px 5px 5px;position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:35px 10px 10px}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip]{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:rgba(255,255,255,.9);border-radius:4px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4a5764;font-size:16px;margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container::after{border:4px solid transparent;border-top-color:rgba(255,255,255,.9);content:'';height:0;position:absolute;right:15px;top:100%;width:0}.plyr__menu__container [role=menu]{padding:7px}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4a5764;display:flex;font-size:14px;padding:4px 11px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control::after{border:4px solid transparent;content:'';position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px}.plyr__menu__container .plyr__control--forward::after{border-left-color:rgba(74,87,100,.8);right:5px}.plyr__menu__container .plyr__control--forward.plyr__tab-focus::after,.plyr__menu__container .plyr__control--forward:hover::after{border-left-color:currentColor}.plyr__menu__container .plyr__control--back{font-weight:500;margin:7px;margin-bottom:3px;padding-left:28px;position:relative;width:calc(100% - 14px)}.plyr__menu__container .plyr__control--back::after{border-right-color:rgba(74,87,100,.8);left:7px}.plyr__menu__container .plyr__control--back::before{background:#c1c9d1;box-shadow:0 1px 0 #fff;content:'';height:1px;left:0;margin-top:4px;overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back.plyr__tab-focus::after,.plyr__menu__container .plyr__control--back:hover::after{border-right-color:currentColor}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px}.plyr__menu__container .plyr__control[role=menuitemradio]::after,.plyr__menu__container .plyr__control[role=menuitemradio]::before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]::before{background:rgba(0,0,0,.1);content:'';display:block;flex-shrink:0;height:16px;margin-right:10px;transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]::after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::before{background:#00b3ff}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio].plyr__tab-focus::before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover::before{background:rgba(0,0,0,.1)}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;overflow:hidden;padding-left:25px;pointer-events:none}.plyr--full-ui input[type=range]{-webkit-appearance:none;background:0 0;border:0;border-radius:26px;color:#00b3ff;display:block;height:19px;margin:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none;background-image:linear-gradient(to right,currentColor var(--value,0),transparent var(--value,0))}.plyr--full-ui input[type=range]::-webkit-slider-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;transition:all .2s ease;width:13px;-webkit-appearance:none;margin-top:-4px}.plyr--full-ui input[type=range]::-moz-range-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-moz-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;transition:all .2s ease;width:13px}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;height:5px}.plyr--full-ui input[type=range]::-ms-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;color:transparent}.plyr--full-ui input[type=range]::-ms-fill-upper{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;background:currentColor}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;transition:all .2s ease;width:13px;margin-top:0}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range].plyr__tab-focus::-webkit-slider-runnable-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-moz-range-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-ms-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr__poster{background-color:#000;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr__time{font-size:14px}.plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr--video .plyr__time{text-shadow:0 1px 1px rgba(0,0,0,.15)}.plyr__tooltip{background:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4a5764;font-size:14px;font-weight:500;left:50%;line-height:1.3;margin-bottom:10px;opacity:0;padding:5px 7.5px;pointer-events:none;position:absolute;transform:translate(-50%,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;white-space:nowrap;z-index:2}.plyr__tooltip::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control.plyr__tab-focus .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%,0) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translate(0,10px) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip::before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip::before{left:16px}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translate(0,10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip::before{left:auto;right:16px;transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0,0) scale(1)}.plyr--video{background:#000;overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;border-radius:inherit;overflow:hidden;position:relative;z-index:0}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;height:100%;left:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr__progress{left:6.5px;margin-right:13px;position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-right:-6.5px;width:calc(100% + 13px)}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{font-size:14px;left:0}.plyr__progress__buffer{-webkit-appearance:none;background:0 0;border:0;border-radius:100px;height:5px;left:0;margin-top:-2.5px;padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:0 0}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;transition:width .2s ease}.plyr--video .plyr__progress__buffer{box-shadow:0 1px 1px rgba(0,0,0,.15);color:rgba(255,255,255,.25)}.plyr--audio .plyr__progress__buffer{color:rgba(193,201,209,.66)}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,rgba(35,41,47,.6) 25%,transparent 25%,transparent 50%,rgba(35,41,47,.6) 50%,rgba(35,41,47,.6) 75%,transparent 75%,transparent);background-repeat:repeat-x;background-size:25px 25px;color:transparent}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:rgba(255,255,255,.25)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:rgba(193,201,209,.66)}.plyr__volume{align-items:center;display:flex;flex:1;position:relative}.plyr__volume input[type=range]{margin-left:5px;position:relative;z-index:2}@media (min-width:480px){.plyr__volume{max-width:90px}}@media (min-width:768px){.plyr__volume{max-width:110px}}.plyr--is-ios .plyr__volume{display:none!important}.plyr--is-ios.plyr--vimeo [data-plyr=mute]{display:none!important}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:fullscreen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}.plyr:-ms-fullscreen .plyr__captions{font-size:21px}.plyr:fullscreen .plyr__captions{font-size:21px}}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}}.plyr:-moz-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-moz-full-screen video{height:100%}.plyr:-moz-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-moz-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-moz-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-moz-full-screen .plyr__captions{font-size:21px}}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-ms-fullscreen .plyr__captions{font-size:21px}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;margin:0;width:100%;bottom:0;left:0;position:fixed;right:0;top:0;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__video-wrapper{height:100%;position:static}.plyr--fullscreen-fallback.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:21px}}.plyr__ads{border-radius:inherit;bottom:0;cursor:pointer;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads::after{background:rgba(35,41,47,.8);border-radius:2px;bottom:10px;color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;z-index:3}.plyr__ads::after:empty{display:none}.plyr__cues{background:currentColor;display:block;height:5px;left:0;margin:-2.5px 0 0;opacity:.8;position:absolute;top:50%;width:3px;z-index:3}.plyr__preview-thumb{background-color:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);margin-bottom:10px;opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translate(0,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0,0) scale(1)}.plyr__preview-thumb::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c9d1;border-radius:2px;overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img{height:100%;left:0;max-height:none;max-width:none;position:absolute;top:0;width:100%}.plyr__preview-thumb__time-container{bottom:6px;left:0;position:absolute;right:0;white-space:nowrap;z-index:3}.plyr__preview-thumb__time-container span{background-color:rgba(0,0,0,.55);border-radius:2px;color:#fff;font-size:14px;padding:3px 6px}.plyr__preview-scrubbing{bottom:0;filter:blur(1px);height:100%;left:0;margin:auto;opacity:0;overflow:hidden;position:absolute;right:0;top:0;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);overflow:hidden;border:0!important;height:1px!important;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}
|
49 |
.tooltipster-fall,.tooltipster-grow.tooltipster-show{-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1);-moz-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-ms-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-o-transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-base{display:flex;pointer-events:none;position:absolute}.tooltipster-box{flex:1 1 auto}.tooltipster-content{box-sizing:border-box;max-height:100%;max-width:100%;overflow:auto}.tooltipster-ruler{bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;visibility:hidden}.tooltipster-fade{opacity:0;-webkit-transition-property:opacity;-moz-transition-property:opacity;-o-transition-property:opacity;-ms-transition-property:opacity;transition-property:opacity}.tooltipster-fade.tooltipster-show{opacity:1}.tooltipster-grow{-webkit-transform:scale(0,0);-moz-transform:scale(0,0);-o-transform:scale(0,0);-ms-transform:scale(0,0);transform:scale(0,0);-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform;-webkit-backface-visibility:hidden}.tooltipster-grow.tooltipster-show{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-o-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1);-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-swing{opacity:0;-webkit-transform:rotateZ(4deg);-moz-transform:rotateZ(4deg);-o-transform:rotateZ(4deg);-ms-transform:rotateZ(4deg);transform:rotateZ(4deg);-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform}.tooltipster-swing.tooltipster-show{opacity:1;-webkit-transform:rotateZ(0);-moz-transform:rotateZ(0);-o-transform:rotateZ(0);-ms-transform:rotateZ(0);transform:rotateZ(0);-webkit-transition-timing-function:cubic-bezier(.23,.635,.495,1);-webkit-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-moz-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-ms-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-o-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);transition-timing-function:cubic-bezier(.23,.635,.495,2.4)}.tooltipster-fall{-webkit-transition-property:top;-moz-transition-property:top;-o-transition-property:top;-ms-transition-property:top;transition-property:top;-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-fall.tooltipster-initial{top:0!important}.tooltipster-fall.tooltipster-dying{-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;-ms-transition-property:all;transition-property:all;top:0!important;opacity:0}.tooltipster-slide{-webkit-transition-property:left;-moz-transition-property:left;-o-transition-property:left;-ms-transition-property:left;transition-property:left;-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-moz-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-ms-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-o-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-slide.tooltipster-initial{left:-40px!important}.tooltipster-slide.tooltipster-dying{-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;-ms-transition-property:all;transition-property:all;left:0!important;opacity:0}@keyframes tooltipster-fading{0%{opacity:0}100%{opacity:1}}.tooltipster-update-fade{animation:tooltipster-fading .4s}@keyframes tooltipster-rotating{25%{transform:rotate(-2deg)}75%{transform:rotate(2deg)}100%{transform:rotate(0)}}.tooltipster-update-rotate{animation:tooltipster-rotating .6s}@keyframes tooltipster-scaling{50%{transform:scale(1.1)}100%{transform:scale(1)}}.tooltipster-update-scale{animation:tooltipster-scaling .6s}.tooltipster-sidetip .tooltipster-box{background:#565656;border:2px solid #000;border-radius:4px}.tooltipster-sidetip.tooltipster-bottom .tooltipster-box{margin-top:8px}.tooltipster-sidetip.tooltipster-left .tooltipster-box{margin-right:8px}.tooltipster-sidetip.tooltipster-right .tooltipster-box{margin-left:8px}.tooltipster-sidetip.tooltipster-top .tooltipster-box{margin-bottom:8px}.tooltipster-sidetip .tooltipster-content{color:#fff;line-height:18px;padding:6px 14px}.tooltipster-sidetip .tooltipster-arrow{overflow:hidden;position:absolute}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow{height:10px;margin-left:-10px;top:0;width:20px}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow{height:20px;margin-top:-10px;right:0;top:0;width:10px}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow{height:20px;margin-top:-10px;left:0;top:0;width:10px}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow{bottom:0;height:10px;margin-left:-10px;width:20px}.tooltipster-sidetip .tooltipster-arrow-background,.tooltipster-sidetip .tooltipster-arrow-border{height:0;position:absolute;width:0}.tooltipster-sidetip .tooltipster-arrow-background{border:10px solid transparent}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background{border-bottom-color:#565656;left:0;top:3px}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background{border-left-color:#565656;left:-3px;top:0}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background{border-right-color:#565656;left:3px;top:0}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background{border-top-color:#565656;left:0;top:-3px}.tooltipster-sidetip .tooltipster-arrow-border{border:10px solid transparent;left:0;top:0}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-border{border-bottom-color:#000}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-border{border-left-color:#000}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-border{border-right-color:#000}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-border{border-top-color:#000}.tooltipster-sidetip .tooltipster-arrow-uncropped{position:relative}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-uncropped{top:-10px}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-uncropped{left:-10px}
|
2 |
.eael-adv-accordion{width:auto;height:auto;transition:all .3s ease-in-out}.eael-adv-accordion .eael-accordion-list .eael-accordion-header{padding:15px;border:1px solid rgba(0,0,0,.02);font-size:1rem;font-weight:600;line-height:1;transition:all .3s ease-in-out;display:flex;justify-content:space-between;align-items:center;cursor:pointer}.eael-adv-accordion .eael-accordion-list .eael-accordion-header .fa-toggle{transform:rotate(0);z-index:10;transition:all .3s ease-in-out}.eael-adv-accordion .eael-accordion-list .eael-accordion-header.active .fa-toggle{transform:rotate(90deg);z-index:10;transition:all .3s ease-in-out}.fa-accordion-icon{display:inline-block;margin-right:10px}.eael-adv-accordion .eael-accordion-list .eael-accordion-content{display:none;border:1px solid #eee;padding:15px;box-sizing:border-box;font-size:1rem;line-height:1.7}.eael-adv-accordion .eael-accordion-list .eael-accordion-content p{margin:0}.eael-adv-accordion .eael-accordion-list .eael-accordion-content.active{display:block}@-webkit-keyframes rotate-90{0%{transform:rotateY(0)}100%{transform:rotateY(-180deg)}}@keyframes rotate-90{0%{transform:rotateY(0)}100%{transform:rotateY(-180deg)}}@-webkit-keyframes fadeIn{0%{opacity:1;transition:all .3s ease-in-out}100%{opacity:1;transition:all .3s ease-in-out}}@keyframes fadeIn{0%{opacity:1;transition:all .3s ease-in-out}100%{opacity:1;transition:all .3s ease-in-out}}
|
3 |
.eael-advance-tabs{display:block}.eael-advance-tabs .eael-tabs-nav>ul{position:relative;padding:0;margin:0;list-style-type:none;display:flex;justify-content:flex-start;align-items:center;z-index:1}.eael-advance-tabs .eael-tabs-nav>ul li{position:relative;padding:1em 1.5em;flex:1 1 auto;cursor:pointer;display:flex;justify-content:center;align-items:center;text-align:center;background-color:#f1f1f1}.eael-advance-tabs .eael-tabs-nav>ul li:after{content:"";position:absolute;bottom:-10px;left:0;right:0;margin:0 auto;z-index:1;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #444;border-bottom:0;display:none}.eael-advance-tabs .eael-tabs-nav>ul li.active,.eael-advance-tabs .eael-tabs-nav>ul li.active-default,.eael-advance-tabs .eael-tabs-nav>ul li:hover{background-color:#444}.eael-advance-tabs.active-caret-on .eael-tabs-nav>ul li.active-default:after,.eael-advance-tabs.active-caret-on .eael-tabs-nav>ul li.active:after{display:none}.eael-advance-tabs .eael-tabs-nav>ul li.active-default:after,.eael-advance-tabs .eael-tabs-nav>ul li.active:after{display:block}.eael-tabs-content{display:flex;flex:1 1 auto;overflow:hidden}.eael-advance-tabs .eael-tabs-content>div{display:none;opacity:0}.eael-advance-tabs .eael-tabs-content>div.active,.eael-advance-tabs .eael-tabs-content>div.active-default{display:block;width:100%;padding:1em;opacity:1;-webkit-animation:fadeIn linear .3s;animation:fadeIn linear .3s}.eael-tab-inline-icon li a .fa{margin-right:10px;line-height:1}.eael-tab-top-icon li{display:flex;flex-wrap:wrap;text-align:center}.eael-tab-top-icon li a{display:flex;flex-wrap:wrap;text-align:center}.eael-tab-top-icon li .eael-tab-title,.eael-tab-top-icon li .fa{flex:1 1 100%;line-height:1}.eael-tab-top-icon li a .eael-tab-title{margin-top:10px}.eael-advance-tabs.eael-tabs-vertical{display:flex}.eael-advance-tabs.eael-tabs-vertical .eael-tabs-nav{flex:0 0 auto}.eael-advance-tabs.eael-tabs-vertical .eael-tabs-nav>ul{flex-flow:column wrap}.eael-advance-tabs.eael-tabs-vertical .eael-tabs-nav>ul>li{width:100%;justify-content:start}.eael-advance-tabs.eael-tabs-vertical .eael-tabs-nav>ul li::after{bottom:auto!important;right:-10px;top:calc(50% - 10px);left:auto!important;border-left:10px solid #444;border-right:0;border-top:10px solid transparent;border-bottom:10px solid transparent}@media only screen and (max-width:767px){.eael-advance-tabs .eael-tabs-nav>ul{flex-wrap:wrap;flex-flow:row wrap}.eael-advance-tabs .eael-tabs-nav>ul li{flex:1 1 auto}.responsive-vertical-layout.eael-advance-tabs .eael-tabs-nav>ul li{flex:1 1 100%}.eael-advance-tabs.eael-tabs-vertical{flex-wrap:wrap}.eael-advance-tabs.eael-tabs-vertical div.eael-tabs-nav{flex:1 100%}.eael-advance-tabs.eael-tabs-vertical ul{flex:1 100%}.eael-advance-tabs.eael-tabs-vertical ul li{flex:1 100%}div.eael-advance-tabs.eael-tabs-vertical div.eael-tabs-nav>ul li::after{border-left-color:transparent!important;bottom:-20px!important;left:0!important;right:0!important;top:auto!important;border-left:10px solid transparent;border-right:10px solid transparent;border-top-color:#444!important}}
|
4 |
.ea-advanced-data-table-wrap .ea-advanced-data-table-wrap-inner{width:100%;overflow-y:auto}.ea-advanced-data-table-wrap .ea-advanced-data-table{width:100%;border-collapse:collapse}.ea-advanced-data-table-wrap .ea-advanced-data-table td,.ea-advanced-data-table-wrap .ea-advanced-data-table th{background-color:transparent!important}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th{position:relative;cursor:pointer}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th:before{content:"";border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:5px solid #4d4d4d;position:absolute;top:50%;right:15px;margin-top:-6px}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th:after{content:"";border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #4d4d4d;position:absolute;top:50%;right:15px;margin-top:1px}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th.asc:before{display:none}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th.asc:after{margin-top:-3px}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th.desc:before{margin-top:-3px}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-sortable th.desc:after{display:none}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-unsortable th{pointer-events:none}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-unsortable th:after,.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-unsortable th:before{display:none}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-paginated tbody tr{display:none}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable th{position:relative}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable th:before{border:none}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable th:after{content:"";display:block;height:100%;position:absolute;right:0;top:0;width:10px;border:none;cursor:col-resize}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable td,.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable th{padding:0}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable td textarea,.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable th textarea{width:100%;min-width:100px;height:100%;background-color:transparent;border:none;box-shadow:none;resize:none;margin:0;padding:0;outline:0;vertical-align:middle}.ea-advanced-data-table-wrap .ea-advanced-data-table.ea-advanced-data-table-editable.ea-advanced-data-table-paginated tbody tr{display:table-row}.ea-advanced-data-table-wrap .ea-advanced-data-table .nt_add_cart_wrapper{text-align:center}.ea-advanced-data-table-wrap .ea-advanced-data-table .button{display:block;white-space:nowrap}.ea-advanced-data-table-wrap .ea-advanced-data-table-search-wrap.ea-advanced-data-table-search-center{text-align:center}.ea-advanced-data-table-wrap .ea-advanced-data-table-search-wrap.ea-advanced-data-table-search-right{text-align:right}.ea-advanced-data-table-wrap .ea-advanced-data-table-pagination a{display:inline-block}
|
|
|
5 |
.eael-caldera-form-align-left,.eael-caldera-form-btn-align-left{text-align:left}.eael-caldera-form-align-right,.eael-caldera-form-btn-align-right{text-align:right}.eael-caldera-form-align-center,.eael-caldera-form-btn-align-center{text-align:center}.eael-caldera-form .control-label{display:none}.eael-caldera-form-labels-yes .control-label{display:block}.eael-caldera-form-button-center .form-group input[type=button],.eael-caldera-form-button-center .form-group input[type=submit]{display:block;margin:0 auto}.eael-caldera-form-button-right .form-group input[type=button],.eael-caldera-form-button-right .form-group input[type=submit]{float:right}.eael-caldera-form .intl-tel-input{display:inherit}.eael-custom-radio-checkbox .caldera-grid input[type=checkbox],.eael-custom-radio-checkbox .caldera-grid input[type=radio]{border-style:solid;border-width:0;padding:3px;-webkit-appearance:none}.eael-caldera-form-button-full-width .form-group input[type=button],.eael-caldera-form-button-full-width .form-group input[type=submit]{width:100%}
|
6 |
+
.eael-call-to-action{width:100%;height:auto;display:block;padding:30px;font-size:16px;color:#4d4d4d;font-weight:400;line-height:27px;margin:0 auto}.eael-call-to-action p{margin-bottom:10px}.eael-call-to-action .title{font-size:36px;font-weight:600;line-height:36px;margin-bottom:10px;text-transform:capitalize;font-style:normal}.eael-call-to-action.cta-center{text-align:center}.eael-call-to-action.cta-right{text-align:right}.eael-call-to-action.cta-left{text-align:left}.eael-call-to-action.bg-lite{background:#f4f4f4}.eael-call-to-action.bg-img{background-image:url(../img/bg.jpg);background-repeat:no-repeat;background-position:center;background-size:cover;position:relative;z-index:0;color:rgba(255,255,255,.7)}.eael-call-to-action.bg-img .icon{color:#fff}.eael-cta-overlay-yes .eael-call-to-action.bg-img:after{content:"";position:absolute;width:100%;height:100%;top:0;left:0;z-index:-1;background:rgba(0,0,0,.8)}.eael-call-to-action.bg-img.bg-fixed{background-attachment:fixed;background-position:center center}.eael-call-to-action.bg-img .title{color:rgba(255,255,255,.9)}.eael-call-to-action.cta-flex,.eael-call-to-action.cta-icon-flex{display:flex;justify-content:space-between;align-items:flex-start}.eael-call-to-action.cta-icon-flex .icon{flex-grow:1;font-size:80px;text-align:left;line-height:130px}.eael-call-to-action.cta-icon-flex .action{flex-grow:1;text-align:right;padding-top:22px;flex-basis:22%}.eael-call-to-action.cta-icon-flex .content{flex-grow:1;padding:0 30px}.eael-call-to-action.cta-flex .content{padding:0 15px;flex-grow:1}.eael-call-to-action.cta-flex .action{flex-grow:1;text-align:right;padding-top:25px;flex-basis:23%}.eael-call-to-action .cta-button{position:relative;display:inline-block;padding:12px 30px;background:#f9f9f9;font-size:16px;text-decoration:none;color:#4d4d4d;transition:.5s;-ms-box-shadow:0 0 3px -1px rgba(0,0,0,.2);box-shadow:0 0 3px -1px rgba(0,0,0,.2);margin-right:10px;margin-top:10px;z-index:0;overflow:hidden}.eael-call-to-action .cta-button:last-child{margin-right:0}.eael-call-to-action .cta-button:focus{outline:0}.eael-call-to-action .cta-button:hover{color:#fff;background:#3f51b5;-ms-box-shadow:0 1px 12px 1px rgba(0,0,0,.1);box-shadow:0 1px 12px 1px rgba(0,0,0,.1)}.eael-call-to-action .cta-button.effect-1:after{content:"";position:absolute;width:100%;height:100%;background:#3f51b5;top:0;left:0;transform:translateY(-100%);-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);z-index:-1;transition:.5s;color:#fff}.eael-call-to-action .cta-button.effect-1:hover::after{transform:translateY(0)}.eael-call-to-action .cta-button.effect-2:after{content:"";position:absolute;width:100%;height:100%;background:#3f51b5;top:0;left:0;z-index:-1;transition:.5s;color:#fff;transform:translateX(-100%)}.eael-call-to-action .cta-button.effect-2:hover::after{transform:translateX(0)}@media only screen and (max-width:768px){.eael-call-to-action.cta-flex,.eael-call-to-action.cta-icon-flex{flex-wrap:wrap}.eael-call-to-action .title{font-size:28px;line-height:36px;margin-top:0}.eael-call-to-action.cta-icon-flex .icon{flex-grow:1;font-size:48px;line-height:90px;text-align:center}.eael-call-to-action.cta-flex .content,.eael-call-to-action.cta-icon-flex .content{flex-grow:1;text-align:center;padding:0}.eael-call-to-action.cta-flex .action,.eael-call-to-action.cta-icon-flex .action{text-align:center;padding-top:0}.eael-call-to-action .cta-button{padding:12px 25px}}@media only screen and (max-width:360px){.eael-call-to-action{font-size:14px;line-height:26px}.eael-call-to-action .cta-button{padding:4px 20px;font-size:12px}.eael-call-to-action .title{font-size:20px;line-height:30px}}
|
7 |
@-webkit-keyframes loaderSpin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes loaderSpin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.eael-button-wrap,.eael-load-more-button-wrap{display:flex}.eael-button,.eael-load-more-button{display:flex!important;align-items:center;justify-content:center;padding:1em 2em;border:0 solid;font-size:16px;overflow:hidden}.eael-button>span,.eael-load-more-button>span{margin-left:-20px}.eael-button .eael-btn-loader,.eael-load-more-button .eael-btn-loader{border-radius:50%;width:20px;height:20px;font-size:10px;position:relative;text-indent:-9999em;border-top:4px solid rgba(255,255,255,.2);border-right:4px solid rgba(255,255,255,.2);border-bottom:4px solid rgba(255,255,255,.2);border-left:4px solid #fff;transform:translateZ(0);-webkit-animation:loaderSpin 1.1s infinite linear;animation:loaderSpin 1.1s infinite linear;left:-100%;top:auto;margin-right:5px;transition:all .2s}.eael-button .eael-btn-loader:after,.eael-load-more-button .eael-btn-loader:after{border-radius:50%;width:20px;height:20px}.eael-button.button--loading>span,.eael-load-more-button.button--loading>span{margin-left:0}.eael-button.button--loading .eael-btn-loader,.eael-load-more-button.button--loading .eael-btn-loader{left:0}
|
8 |
.eael-contact-form-7.eael-contact-form-btn-align-center input.wpcf7-submit{margin-left:auto!important;margin-right:auto!important;display:block;float:none}.eael-contact-form-7.eael-contact-form-btn-align-left input.wpcf7-submit{float:left;width:auto}.eael-contact-form-7.eael-contact-form-btn-align-right input.wpcf7-submit{float:right;width:auto}.eael-contact-form-7 .uneditable-input,.eael-contact-form-7 input[type=color],.eael-contact-form-7 input[type=date],.eael-contact-form-7 input[type=datetime-local],.eael-contact-form-7 input[type=datetime],.eael-contact-form-7 input[type=email],.eael-contact-form-7 input[type=month],.eael-contact-form-7 input[type=number],.eael-contact-form-7 input[type=password],.eael-contact-form-7 input[type=search],.eael-contact-form-7 input[type=tel],.eael-contact-form-7 input[type=text],.eael-contact-form-7 input[type=time],.eael-contact-form-7 input[type=url],.eael-contact-form-7 input[type=week],.eael-contact-form-7 textarea{transition:border linear .2s,box-shadow linear .2s}.eael-contact-form-7 .wpcf7-form::after,.eael-contact-form-7 .wpcf7-form::before{content:" ";clear:both;display:table}.eael-contact-form-7 .wpcf7-form:after{clear:both;content:"";font-size:0;height:0;display:block;visibility:hidden}.eael-contact-form-7.labels-hide .wpcf7-form label{display:none}.eael-contact-form-7-title{margin-bottom:10px}.eael-contact-form-7-description{margin-bottom:20px}.eael-contact-form-7-button-full-width .wpcf7-form-control.wpcf7-submit{width:100%}.wpcf7 form>div,.wpcf7 form>p{margin-bottom:20px}.eael-contact-form-7 .wpcf7-form p{margin-bottom:20px}.eael-contact-form-7 .wpcf7-form p span.wpcf7-form-control-wrap{margin-bottom:0}.eael-contact-form-7 .wpcf7-form label span.wpcf7-list-item-label{font-family:inherit;font-weight:400}.eael-contact-form-7 .wpcf7-form p input.wpcf7-submit{font-family:inherit;font-weight:400}
|
9 |
.eael-ticker-wrap{overflow:hidden;display:flex;flex-flow:row nowrap;align-items:center;width:100%}.eael-ticker-wrap .ticker-badge{flex:0 0 auto;padding:8px 12px}.eael-ticker-wrap .eael-ticker{overflow:hidden;flex:1 1 auto}.eael-ticker-wrap .eael-ticker .ticker-content{padding:8px 12px;line-height:1.8}.eael-ticker-wrap .eael-ticker .ticker-content p{margin:0}.eael-ticker-wrap .swiper-button-prev{left:auto!important;right:25px}.eael-ticker-wrap div.swiper-slide,.eael-ticker-wrap div.swiper-slide.swiper-slide-next,.eael-ticker-wrap div.swiper-slide.swiper-slide-prev{opacity:0!important}.eael-ticker-wrap div.swiper-slide.swiper-slide-active{opacity:1!important}.eael-ticker-wrap .eael-content-ticker.swiper-container .swiper-slide{text-align:left}@media only screen and (max-width:767px){.eael-ticker-wrap{flex-flow:row wrap}.content-ticker-pagination{display:none}}.eael-ticker-wrap .swiper-button-next,.eael-ticker-wrap .swiper-button-prev{background-image:none;outline:0;display:flex;align-items:center;justify-content:center}
|
35 |
.eaelsv-overlay{position:absolute;display:block;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);z-index:4;cursor:pointer;background-size:cover;background-position:50%;text-align:center;overflow:hidden}.eaelsv-overlay-icon{position:absolute;top:50%;left:50%;font-size:90px;color:#fff;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}.plyr__controls button{box-shadow:none!important}.plyr__controls button:hover{box-shadow:none!important}.plyr__controls{display:none!important}.eael-sticky-video-wrapper{position:relative;width:100%;min-height:200px;margin:0;padding:0;transition:.5s;text-align:left;overflow:hidden}.eael-sticky-video-player2{min-height:20px;overflow:visible}.eael-sticky-video-player2.out{position:fixed;z-index:999;border:0!important;border-radius:0!important;height:200px;width:300px}.eael-sticky-video-wrapper.out .eael-sticky-video-player,.eael-sticky-video-wrapper.out .eael-sticky-video-player2{border-radius:0!important}.eael-sticky-video-player2.in{position:relative;margin:0;padding:0;height:100%;border:0;line-height:1}.owp-play{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%)}.owp-play i{font-size:100px;color:#fff;opacity:.8;text-shadow:1px 0 6px rgba(0,0,0,.3);transition:all .5s}.eael-sticky-video-player:hover .owp-play i{opacity:1}.eaelsv-sticky-player-close{position:absolute;right:-25px;top:-36px;display:none;padding:7px;font-size:24px;z-index:9999;cursor:pointer;box-sizing:content-box;overflow:visible}.eaelsv-sticky-player-close:hover{color:#090}.eaelsv-sticky-player-close:after,.eaelsv-sticky-player-close:before{position:absolute;left:15px;background-color:#333}.eaelsv-sticky-player-close:before{transform:rotate(45deg)}.eaelsv-sticky-player-close:after{transform:rotate(-45deg)}.plyr__progress input[type=range]::-webkit-slider-runnable-track,.plyr__volume input[type=range]::-webkit-slider-runnable-track{box-shadow:1px 1px 1px #000,0 0 1px #0d0d0d}.plyr__progress input[type=range]::-moz-range-track,.plyr__volume input[type=range]::-moz-range-track{box-shadow:1px 1px 1px #000,0 0 1px #0d0d0d}
|
36 |
html{scroll-behavior:smooth}.eael-toc{z-index:9999;width:300px;display:none}.eael-toc .eael-toc-button{display:none}.eael-toc .eael-toc-not-found{color:#a94442}.eael-toc.eael-toc-disable{display:none}.eael-toc.eael-sticky{position:fixed;top:100px;background:0 0;display:block}.eael-toc.collapsed{width:unset!important;box-shadow:none!important;border:none!important}.eael-toc.collapsed .eael-toc-body,.eael-toc.collapsed .eael-toc-close,.eael-toc.collapsed .eael-toc-header{display:none}.eael-toc.collapsed.eael-bottom-to-top .eael-toc-button{transform:rotate(-90deg);transform-origin:top left;margin-top:100%}.eael-toc.collapsed .eael-toc-button{position:relative;display:inline-block;font-size:80%!important;font-weight:400;text-align:center;text-decoration:none;text-transform:none;color:#fff;background:#ff7d50;padding:10px 20px;border-radius:3px;border:none;transform:rotate(90deg);transform-origin:bottom left;cursor:pointer}.eael-toc.collapsed .eael-toc-button:focus{outline:0}.eael-toc.collapsed .eael-toc-button i{margin-right:10px}.eael-toc.eael-toc-right{right:0}.eael-toc.eael-toc-right .eael-toc-close{left:-11px}.eael-toc.eael-toc-right.eael-bottom-to-top .eael-toc-button{transform:rotate(-90deg);transform-origin:bottom right;margin-top:-100%}.eael-toc.eael-toc-right .eael-toc-button{transform:rotate(90deg);transform-origin:top right;margin-top:100%}.eael-toc .eael-toc-header{position:relative;background:#ff7d50;padding:12px 30px}.eael-toc .eael-toc-header .eael-toc-title{font-size:18px;font-weight:400;letter-spacing:.1px;color:#fff;margin:0;padding:0}.eael-toc .eael-toc-header .eael-toc-title:before{content:none}.eael-toc .eael-toc-header .eael-toc-close{position:absolute;width:28px;height:28px;background:#fff;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);right:-9px;top:-11px;border-radius:20px;font-family:serif;font-size:20px;font-weight:700;line-height:28px;text-align:center;color:#ff7d50;cursor:pointer;padding:0;margin:0;border:0}.eael-toc .eael-toc-body{padding:12px 30px;background:#fff6f3;min-width:20vh;max-height:50vh;overflow-y:scroll}.eael-toc .eael-toc-body::-webkit-scrollbar{width:6px}.eael-toc .eael-toc-body::-webkit-scrollbar-thumb{background:#aaa;border-radius:10px}.eael-toc .eael-toc-body ul.eael-toc-list{margin:0;padding:0;list-style:none}.eael-toc .eael-toc-body ul.eael-toc-list li ul{margin:0;padding:0;margin-left:20px;list-style:none}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-bullet li:before{content:"";position:relative;display:inline-block;width:8px;height:8px;border-radius:50%;background-color:#ff7d50;margin-right:8px;top:-2px}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-number{counter-reset:counter}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-number li{counter-increment:counter}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-number li:before{content:counters(counter,".") " "}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-number li ul{counter-reset:counter}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-number li ul li{counter-increment:counter}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-number li ul li:before{content:counters(counter,".") " "}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-list-arrow li.eael-highlight-active>a:before{content:"";position:absolute;left:0;z-index:999999;border-bottom:10px solid #ff7d50;border-left:5px solid transparent;border-right:5px solid transparent;transform:rotate(90deg);margin-top:10px}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-list-bar li.eael-highlight-active>a:after{content:"";position:absolute;right:0;height:30px;width:2px;background:#ff7d50;z-index:999999}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-collapse :not(.eael-highlight-parent) ul{display:none}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-word-wrap li a{display:inline-flex}.eael-toc .eael-toc-body ul.eael-toc-list.eael-toc-word-wrap li a span{width:140px!important;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media only screen and (max-width:767px){.eael-toc.eael-toc-mobile-hide{display:none!important}}
|
37 |
.eael-team-item{overflow:hidden;position:relative}.team-avatar-rounded figure img{border-radius:50%;height:auto}.eael-team-image>figure{margin:0;padding:0}.eael-team-image>figure img{display:block;margin:0 auto}.eael-team-item .eael-team-content{padding:10px}.eael-team-item .eael-team-member-name{font-size:20px;font-weight:700;letter-spacing:.05em;margin:5px 0;text-transform:uppercase}.eael-team-item .eael-team-member-position{font-size:14px;font-weight:400;letter-spacing:.05em;margin:5px 0 10px;text-transform:uppercase}.eael-team-item .eael-team-content,.eael-team-item .eael-team-content .eael-team-text{font-size:14px;line-height:1.5}.eael-team-content>ul{margin:0;padding:0}.eael-team-content li{display:inline-block;list-style:outside none none;margin-right:10px;text-align:center}.eael-team-content li a{font-size:2.5rem}.eael-team-align-left .eael-team-item .eael-team-content li,.eael-team-align-left .eael-team-item .eael-team-content p,.eael-team-align-left .eael-team-item .eael-team-content ul,.eael-team-align-left .eael-team-item .eael-team-member-name,.eael-team-align-left .eael-team-item .eael-team-member-position,.eael-team-align-left .eael-team-item .eael-team-text{text-align:left}.eael-team-align-right .eael-team-item .eael-team-content li,.eael-team-align-right .eael-team-item .eael-team-content p,.eael-team-align-right .eael-team-item .eael-team-content ul,.eael-team-align-right .eael-team-item .eael-team-member-name,.eael-team-align-right .eael-team-item .eael-team-member-position,.eael-team-align-right .eael-team-item .eael-team-text{text-align:right}.eael-team-align-centered .eael-team-item .eael-team-content li,.eael-team-align-centered .eael-team-item .eael-team-content p,.eael-team-align-centered .eael-team-item .eael-team-content ul,.eael-team-align-centered .eael-team-item .eael-team-member-name,.eael-team-align-centered .eael-team-item .eael-team-member-position,.eael-team-align-centered .eael-team-item .eael-team-text{text-align:center}.eael-team-item.eael-team-members-overlay .eael-team-content{bottom:10px;left:10px;margin-bottom:0;padding-top:15%;opacity:0;overflow:hidden;text-overflow:ellipsis;position:absolute;right:10px;top:10px;transition:all 615ms cubic-bezier(.19,1,.22,1) 0s}.eael-team-item.eael-team-members-overlay:hover .eael-team-content{opacity:1}.eael-team-member-social-link>a{display:inline-block;transition:all .3s cubic-bezier(.19,1,.22,1) 0s}.eael-team-member-social-link>a:focus{outline:0}
|
|
|
38 |
.eael-tooltip{position:relative;display:inline-block;min-width:150px;padding:12px 24px;font-size:.93rem;color:#333;line-height:1;cursor:pointer;transition:all .3s ease-in-out}.eael-tooltip .eael-tooltip-text{display:block;width:100%;visibility:hidden;background-color:#000;color:#fff;border-radius:4px;padding:10px;position:absolute;z-index:1;font-size:.93rem;line-height:1.3}.eael-tooltip .eael-tooltip-text p{margin:0}.eael-tooltip .eael-tooltip-text::after{content:"";position:absolute;border-width:5px;border-style:solid}.eael-tooltip:hover .eael-tooltip-text{visibility:visible}.eael-tooltip .eael-tooltip-text.eael-tooltip-left{top:50%;right:100%;transform:translateY(-50%);margin-right:10px}.eael-tooltip:hover .eael-tooltip-text.eael-tooltip-left{-webkit-animation:tooltipLeftIn .3s ease-in-out;animation:tooltipLeftIn .3s ease-in-out}.eael-tooltip .eael-tooltip-text.eael-tooltip-left::after{top:calc(50% - 5px);left:100%;border-color:transparent transparent transparent #000}.eael-tooltip .eael-tooltip-text.eael-tooltip-right{top:50%;left:100%;transform:translateY(-50%);transition:all .3s ease-in-out;margin-left:10px}.eael-tooltip:hover .eael-tooltip-text.eael-tooltip-right{-webkit-animation:tooltipRightIn .3s linear;animation:tooltipRightIn .3s linear}.eael-tooltip .eael-tooltip-text.eael-tooltip-right::after{top:calc(50% - 5px);right:100%;border-color:transparent #000 transparent transparent}.eael-tooltip .eael-tooltip-text.eael-tooltip-top{bottom:calc(100%);left:0;right:0;margin:0 auto 10px auto}.eael-tooltip .eael-tooltip-text.eael-tooltip-top::after{margin-top:0;top:100%;left:calc(50% - 5px);border-color:#000 transparent transparent transparent}.eael-tooltip:hover .eael-tooltip-text.eael-tooltip-top{-webkit-animation:tooltipTopIn .3s linear;animation:tooltipTopIn .3s linear}.eael-tooltip .eael-tooltip-text.eael-tooltip-bottom{top:100%;left:0;right:0;margin:10px auto 0 auto}.eael-tooltip .eael-tooltip-text.eael-tooltip-bottom::after{margin-top:0;bottom:100%;left:calc(50% - 5px);border-color:transparent transparent #000 transparent}.eael-tooltip:hover .eael-tooltip-text.eael-tooltip-bottom{-webkit-animation:tooltipBottomIn .3s linear;animation:tooltipBottomIn .3s linear}.eael-tooltip-align-left{display:flex;width:100%;justify-content:flex-start}.eael-tooltip-align-right{display:flex;width:100%;justify-content:flex-end}.eael-tooltip-align-center{display:flex;width:100%;justify-content:center}.eael-tooltip-align-justify .eael-tooltip{display:flex;justify-content:center;align-items:center}@-webkit-keyframes tooltipRightIn{0%{opacity:0;left:105%}100%{opacity:1;left:100%}}@keyframes tooltipRightIn{0%{opacity:0;left:105%}100%{opacity:1;left:100%}}@-webkit-keyframes tooltipLeftIn{0%{opacity:0;right:105%}100%{opacity:1;right:100%}}@keyframes tooltipLeftIn{0%{opacity:0;right:105%}100%{opacity:1;right:100%}}@-webkit-keyframes tooltipTopIn{0%{opacity:0;bottom:110%}100%{opacity:1;bottom:100%}}@keyframes tooltipTopIn{0%{opacity:0;bottom:110%}100%{opacity:1;bottom:100%}}@-webkit-keyframes tooltipBottomIn{0%{opacity:0;top:110%}100%{opacity:1;top:100%}}@keyframes tooltipBottomIn{0%{opacity:0;top:110%}100%{opacity:1;top:100%}}span.eael-tooltip-content,span.eael-tooltip-content a{width:100%;display:block;text-align:center}.eael-tooltip-text-align-left .eael-tooltip-content a,.eael-tooltip-text-align-left .eael-tooltip-text{text-align:left}.eael-tooltip-text-align-right .eael-tooltip-content a,.eael-tooltip-text-align-right .eael-tooltip-text{text-align:right}.eael-tooltip-text-align-center .eael-tooltip-content a,.eael-tooltip-text-align-center .eael-tooltip-text{text-align:center}.eael-tooltip-text-align-justify .eael-tooltip-content a,.eael-tooltip-text-align-justify .eael-tooltip-text{text-align:justify}
|
39 |
.eael-twitter-feed::after,.eael-twitter-feed::before{content:"";clear:both}.eael-twitter-feed-masonry .eael-twitter-feed-item{float:left}@media only screen and (max-width:480px){.eael-twitter-feed-masonry.eael-twitter-feed-col-2 .eael-twitter-feed-item{width:100%!important}}@media only screen and (max-width:480px){.eael-twitter-feed-masonry.eael-twitter-feed-col-3 .eael-twitter-feed-item{width:100%!important}}@media only screen and (max-width:480px){.eael-twitter-feed-masonry.eael-twitter-feed-col-4 .eael-twitter-feed-item{width:100%!important}}.eael-twitter-feed-item .eael-twitter-feed-item-inner{background:#fff;border:1px solid rgba(0,0,0,.1)}.eael-twitter-feed-item a{color:#08c;text-decoration:none}.eael-twitter-feed-item a:hover{outline:0;color:#005580}.eael-twitter-feed-item a:focus{outline:0}.eael-twitter-feed-item .eael-twitter-feed-item-header{padding:20px 15px 0;margin-bottom:10px}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-avatar{float:left;width:38px;margin-right:10px}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-avatar img{max-width:100%;height:auto;-o-object-fit:cover;object-fit:cover}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-avatar.avatar-circle img{border-radius:50%}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-meta{float:left}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-meta .eael-twitter-feed-item-icon{color:#1da1f2;margin-right:5px}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-meta .eael-twitter-feed-item-author{color:#444;line-height:1.5em;font-weight:700}.eael-twitter-feed-item .eael-twitter-feed-item-header .eael-twitter-feed-item-date{float:right;margin-right:10px;font-size:90%;color:#999}.eael-twitter-feed-item .eael-twitter-feed-item-content{padding:0 15px 15px}.eael-twitter-feed-item .eael-twitter-feed-item-content p{color:#666;margin:0 0 5px;min-height:20px;text-overflow:ellipsis;-webkit-line-clamp:5;-webkit-box-orient:vertical}.eael-twitter-feed.swiper-container .swiper-button-next,.eael-twitter-feed.swiper-container .swiper-button-prev{background-image:none;outline:0}
|
40 |
+
.eael-testimonial-slider{position:relative}.testimonial-star-rating{padding:0;margin:0}.testimonial-star-rating li{list-style:none;display:inline-block}.testimonial-star-rating li i{color:#d8d8d8}.rating-five .testimonial-star-rating li i{color:#f2b01e}.rating-one .testimonial-star-rating li:first-child i{color:#f2b01e}.rating-two .testimonial-star-rating li:nth-child(1) i,.rating-two .testimonial-star-rating li:nth-child(2) i{color:#f2b01e}.rating-three .testimonial-star-rating li:nth-child(1) i,.rating-three .testimonial-star-rating li:nth-child(2) i,.rating-three .testimonial-star-rating li:nth-child(3) i{color:#f2b01e}.rating-four .testimonial-star-rating li:nth-child(1) i,.rating-four .testimonial-star-rating li:nth-child(2) i,.rating-four .testimonial-star-rating li:nth-child(3) i,.rating-four .testimonial-star-rating li:nth-child(4) i{color:#f2b01e}.eael-testimonial-image img{max-width:100%}.eael-testimonial-image{padding:10px 0 0 0}.eael-testimonial-image>figure{display:block;margin:0}.testimonial-avatar-rounded figure img{border-radius:50%;height:auto}.eael-testimonial-content{margin:0;padding:10px}.eael-testimonial-item>figure{margin:0 auto;padding:0 20px}.eael-testimonial-item .center-text{text-align:center}.eael-testimonial-item .right-text{text-align:right}.eael-testimonial-item .left-text{text-align:left}.eael-testimonial-item .justify-text{text-align:justify}.eael-testimonial-content .eael-testimonial-text{font-size:100%;font-style:italic;line-height:1.5;margin-top:0;margin-bottom:10px;word-wrap:break-word}.eael-testimonial-content .eael-testimonial-user{display:inline-block;font-family:inherit;font-size:105%;font-style:italic;font-weight:400;line-height:1.5;margin-top:0;margin-bottom:0;margin-right:5px}.eael-testimonial-content .eael-testimonial-user-company{display:inline-block;font-family:inherit;font-size:90%;font-style:italic;font-weight:lighter;line-height:1.75;margin-bottom:0;margin-top:1px}.eael-testimonial-image{position:relative}.eael-testimonial-item .eael-testimonial-quote::after{color:inherit!important;content:"\f10e";font-family:"Font Awesome 5 Free";font-size:200%;font-weight:900}.eael-testimonial-slider.default-style .eael-testimonial-align-centered .eael-testimonial-image figure img{margin:0 auto}.eael-testimonial-slider.classic-style .eael-testimonial-align-left .eael-testimonial-image figure img,.eael-testimonial-slider.classic-style .eael-testimonial-align-right .eael-testimonial-image figure img,.eael-testimonial-slider.default-style .eael-testimonial-align-left .eael-testimonial-image figure img,.eael-testimonial-slider.default-style .eael-testimonial-align-right .eael-testimonial-image figure img,.eael-testimonial-slider.middle-style .eael-testimonial-align-left .eael-testimonial-image figure img,.eael-testimonial-slider.middle-style .eael-testimonial-align-right .eael-testimonial-image figure img{margin:0}.eael-testimonial-slider.classic-style .eael-testimonial-align-right .eael-testimonial-image figure,.eael-testimonial-slider.default-style .eael-testimonial-align-right .eael-testimonial-image figure,.eael-testimonial-slider.middle-style .eael-testimonial-align-right .eael-testimonial-image figure{text-align:right}.eael-testimonial-slider.classic-style .eael-testimonial-align-left .eael-testimonial-image figure,.eael-testimonial-slider.default-style .eael-testimonial-align-left .eael-testimonial-image figure,.eael-testimonial-slider.middle-style .eael-testimonial-align-left .eael-testimonial-image figure{text-align:left}.eael-testimonial-slider.classic-style .eael-testimonial-align-right .testimonial-classic-style-content,.eael-testimonial-slider.default-style .eael-testimonial-align-right .default-style-testimonial-content,.eael-testimonial-slider.middle-style .eael-testimonial-align-right .eael-testimonial-text,.eael-testimonial-slider.middle-style .eael-testimonial-align-right .middle-style-content{text-align:right}.eael-testimonial-slider.classic-style .eael-testimonial-align-center .testimonial-classic-style-content,.eael-testimonial-slider.default-style .eael-testimonial-align-center .default-style-testimonial-content,.eael-testimonial-slider.middle-style .eael-testimonial-align-center .eael-testimonial-text,.eael-testimonial-slider.middle-style .eael-testimonial-align-center .middle-style-content{text-align:center}.eael-testimonial-slider.classic-style .eael-testimonial-align-left .testimonial-classic-style-content,.eael-testimonial-slider.default-style .eael-testimonial-align-left .default-style-testimonial-content,.eael-testimonial-slider.middle-style .eael-testimonial-align-left .eael-testimonial-text,.eael-testimonial-slider.middle-style .eael-testimonial-align-left .middle-style-content{text-align:left}.eael-testimonial-slider.icon-img-left-content .eael-testimonial-text>p,.eael-testimonial-slider.icon-img-right-content .eael-testimonial-text>p{margin:0}.icon-img-left-content .eael-testimonial-image{float:left;width:30%}.icon-img-left-content .eael-testimonial-content{float:left;width:70%;text-align:left}.icon-img-left-content.eael-testimonial-item{overflow:hidden;position:relative}.icon-img-left-content .eael-testimonial-quote{position:absolute;right:0}.icon-img-left-content .eael-testimonial-text{margin-top:0}.eael-testimonial-align-centered .eael-testimonial-user,.eael-testimonial-align-centered .eael-testimonial-user-company{float:none;text-align:center}.eael-testimonial-align-centered .eael-testimonial-image>figure img{display:block;margin-left:auto!important;margin-right:auto!important}.icon-img-right-content .eael-testimonial-image{float:right;width:30%}.icon-img-right-content .eael-testimonial-content{float:right;width:70%;text-align:right}.icon-img-right-content.eael-testimonial-item{overflow:hidden;position:relative}.icon-img-right-content .eael-testimonial-quote{position:absolute}.icon-img-right-content .eael-testimonial-text{margin-top:0}.eael-testimonial-item{position:relative}.classic-style.testimonial-alignment-center .eael-testimonial-image,.default-style.testimonial-alignment-center .eael-testimonial-image{text-align:center}.classic-style.testimonial-alignment-right .eael-testimonial-image,.default-style.testimonial-alignment-right .eael-testimonial-image{text-align:right}.classic-style.testimonial-alignment-center .eael-testimonial-image>figure,.default-style.testimonial-alignment-center .eael-testimonial-image>figure{text-align:center}.eael-testimonial-slider.icon-img-left-content .eael-testimonial-align-centered .eael-testimonial-content{text-align:center}.eael-testimonial-slider.icon-img-left-content .eael-testimonial-align-left .eael-testimonial-content{text-align:left}.eael-testimonial-slider.icon-img-left-content .eael-testimonial-align-right .eael-testimonial-content{text-align:right}.eael-testimonial-slider.icon-img-right-content .eael-testimonial-align-centered .eael-testimonial-content{text-align:center}.eael-testimonial-slider.icon-img-right-content .eael-testimonial-align-left .eael-testimonial-content{text-align:left}.eael-testimonial-slider.icon-img-right-content .eael-testimonial-align-right .eael-testimonial-content{text-align:right}span.eael-testimonial-quote{position:absolute;right:10px;top:10px}.eael-testimonial-item.left .eael-testimonial-image{text-align:left}.eael-testimonial-item.center .eael-testimonial-image{text-align:center}.eael-testimonial-item.right .eael-testimonial-image{text-align:right}.eael-testimonial-inline-bio .eael-testimonial-image{float:left}.eael-testimonial-inline-bio .bio-text{padding-top:10px}.eael-testimonial-content.eael-testimonial-inline-bio{overflow:hidden;margin-bottom:0;padding-bottom:0}.eael-testimonial-inline-bio .bio-text,.eael-testimonial-inline-bio .testimonial-star-rating{float:left;width:65%}.eael-testimonial-content.eael-testimonial-inline-bio{text-align:left!important}.testimonial-inline-style .eael-testimonial-image{float:left;max-width:100%;padding:0;margin-right:15px}.testimonial-inline-style{overflow:hidden;text-align:left}.content-top-icon-title-inline .eael-testimonial-align-left .eael-testimonial-text,.content-top-icon-title-inline .eael-testimonial-text{text-align:left}.content-top-icon-title-inline .eael-testimonial-align-centered .eael-testimonial-text{text-align:center}.content-top-icon-title-inline .eael-testimonial-align-right .eael-testimonial-text{text-align:right}.content-bottom-icon-title-inline .eael-testimonial-align-left .eael-testimonial-text,.content-bottom-icon-title-inline .eael-testimonial-text{text-align:left}.content-bottom-icon-title-inline .eael-testimonial-align-centered .eael-testimonial-text{text-align:center}.content-bottom-icon-title-inline .eael-testimonial-align-right .eael-testimonial-text{text-align:right}
|
41 |
.eael-weform-container input,.eael-weform-container textarea{height:auto;padding:10px}.eael-contact-form-btn-align-center .eael-weform-container ul.wpuf-form .wpuf-submit input[type=submit]{margin-left:auto!important;margin-right:auto!important;display:block;float:none}.eael-contact-form-btn-align-left .eael-weform-container ul.wpuf-form .wpuf-submit input[type=submit]{float:left;width:auto}.eael-contact-form-btn-align-right .eael-weform-container ul.wpuf-form .wpuf-submit input[type=submit]{float:right;width:auto}.eael-weform-container ul.wpuf-form li .wpuf-fields input[type=email],.eael-weform-container ul.wpuf-form li .wpuf-fields input[type=number],.eael-weform-container ul.wpuf-form li .wpuf-fields input[type=password],.eael-weform-container ul.wpuf-form li .wpuf-fields input[type=text],.eael-weform-container ul.wpuf-form li .wpuf-fields input[type=url],.eael-weform-container ul.wpuf-form li .wpuf-fields textarea{max-width:100%}
|
42 |
.ea-woo-checkout{font-size:14px;line-height:1.5em;font-weight:400}.ea-woo-checkout .woocommerce #ship-to-different-address span,.ea-woo-checkout .woocommerce h3{font-size:25px;line-height:1.5em;font-weight:600;margin-top:0;text-transform:capitalize}.ea-woo-checkout .woocommerce label{font-size:16px;line-height:1.5;font-weight:500}.ea-woo-checkout .woocommerce label.woocommerce-form__label-for-checkbox.checkbox{display:flex;align-items:center}.ea-woo-checkout .woocommerce .checkout li.wc_payment_method{border-bottom:none}.ea-woo-checkout .woocommerce .woo-checkout-coupon a,.ea-woo-checkout .woocommerce .woo-checkout-login a{color:#7866ff}.ea-woo-checkout .woocommerce .woo-checkout-coupon a :hover,.ea-woo-checkout .woocommerce .woo-checkout-login a :hover{color:#443d6d}.ea-woo-checkout .woocommerce .woo-checkout-coupon label,.ea-woo-checkout .woocommerce .woo-checkout-login label{margin-bottom:10px}.ea-woo-checkout .woocommerce .woo-checkout-coupon .input-text,.ea-woo-checkout .woocommerce .woo-checkout-coupon select,.ea-woo-checkout .woocommerce .woo-checkout-login .input-text,.ea-woo-checkout .woocommerce .woo-checkout-login select{border-radius:5px;background-color:#fff;padding:13px;border:1px solid transparent}.ea-woo-checkout .woocommerce .woo-checkout-coupon .input-text :active,.ea-woo-checkout .woocommerce .woo-checkout-coupon .input-text :hover,.ea-woo-checkout .woocommerce .woo-checkout-coupon select :active,.ea-woo-checkout .woocommerce .woo-checkout-coupon select :hover,.ea-woo-checkout .woocommerce .woo-checkout-login .input-text :active,.ea-woo-checkout .woocommerce .woo-checkout-login .input-text :hover,.ea-woo-checkout .woocommerce .woo-checkout-login select :active,.ea-woo-checkout .woocommerce .woo-checkout-login select :hover{border-color:inherit}.ea-woo-checkout .woocommerce .woo-checkout-coupon .input-text :focus,.ea-woo-checkout .woocommerce .woo-checkout-coupon select :focus,.ea-woo-checkout .woocommerce .woo-checkout-login .input-text :focus,.ea-woo-checkout .woocommerce .woo-checkout-login select :focus{outline:inherit;outline-offset:0}.ea-woo-checkout .woocommerce .woo-checkout-coupon .button,.ea-woo-checkout .woocommerce .woo-checkout-login .button{background-color:#7866ff;border-radius:5px;font-size:16px;line-height:1.5em;color:#fff;font-weight:400;margin:0;padding:13px 30px;border:none;text-transform:capitalize!important}.ea-woo-checkout .woocommerce .woo-checkout-coupon .button:hover,.ea-woo-checkout .woocommerce .woo-checkout-login .button:hover{text-decoration:none}.ea-woo-checkout .woocommerce .woo-checkout-login{border-radius:5px;background-color:#f1ebff;padding:30px;font-size:16px;line-height:1.5em;font-weight:400;margin-bottom:30px;position:relative;display:block}.ea-woo-checkout .woocommerce .woo-checkout-login .ea-login-icon{width:20px;position:absolute;top:20px;left:20px;font-size:20px}.ea-woo-checkout .woocommerce .woo-checkout-login .ea-login-icon i,.ea-woo-checkout .woocommerce .woo-checkout-login .ea-login-icon svg{width:1em;height:1em;position:relative;display:block}.ea-woo-checkout .woocommerce .woo-checkout-login .form-row-first{width:48.5%;float:left!important}.ea-woo-checkout .woocommerce .woo-checkout-login .form-row-last{float:right!important}.ea-woo-checkout .woocommerce .woo-checkout-login .clear{clear:both}.ea-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login{max-width:100%;margin:15px 0 0!important}.ea-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login p:first-child{margin-top:0}.ea-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login .woocommerce-form-login__submit{margin-right:30px}.ea-woo-checkout .woocommerce .woo-checkout-login .lost_password{margin-left:3px;margin-bottom:0}.ea-woo-checkout .woocommerce .woo-checkout-coupon .form-row-first{width:48.5%}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon{margin:15px 0 0!important;padding:20px;width:100%;text-align:left;border:1px solid inherit;border-radius:5px}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon p:first-child{margin:0 0 20px 0}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-first{width:78%;float:left}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-first input{border-radius:5px;box-shadow:0 12px 20px rgba(51,57,137,.1);background-color:#fff;height:50px}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-first input :focus{outline:0;outline-offset:0}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-last{width:20%;margin-left:2%;float:right}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .clear{clear:both}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon p{margin-top:0}@media (max-width:1024px){.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-first{width:50%}.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-last{width:48%}}@media (max-width:767px){.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-first,.ea-woo-checkout .woocommerce .woo-checkout-coupon .checkout_coupon .form-row-last{width:100%}}.ea-woo-checkout .woocommerce .woo-checkout-coupon .lost_password{margin-bottom:0}.ea-woo-checkout .woocommerce h3#order_review_heading{float:none;width:100%}.ea-woo-checkout .woocommerce #customer_details.col2-set{width:100%!important;padding:0!important;float:none!important;margin:0 0 30px 0}.ea-woo-checkout .woocommerce #customer_details.col2-set h3{border:none;padding:0;font-size:25px}.ea-woo-checkout .woocommerce #customer_details.col2-set .col-1{padding-left:0;float:left!important;width:48%!important}.ea-woo-checkout .woocommerce #customer_details.col2-set .col-2{padding-right:0;float:right!important;width:48%!important}.ea-woo-checkout .woocommerce #customer_details.col2-set #ship-to-different-address label{display:flex;padding-top:0;padding-bottom:0}.ea-woo-checkout .woocommerce #customer_details.col2-set #ship-to-different-address label input{align-self:start;margin-top:9px;margin-right:10px}@media (max-width:767px){.ea-woo-checkout .woocommerce #customer_details.col2-set .col-1,.ea-woo-checkout .woocommerce #customer_details.col2-set .col-2{width:100%!important;float:none!important}}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review{margin-bottom:30px}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table{padding:0;margin:0}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table li{display:flex;align-items:center;margin:0 0 12px 0}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-header{font-size:14px}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-row{border-radius:3px;font-size:16px;font-weight:500;background-color:#fff}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-col-1{flex-basis:70%;max-width:70%}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-col-2{flex-basis:15%;max-width:15%;text-align:center}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-col-3{flex-basis:15%;max-width:15%;text-align:right;padding-right:25px!important}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .product-thum-name{align-items:center;display:flex}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .product-thum-name .product-thumbnail{width:65px;margin-right:15px}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .product-thum-name .product-thumbnail img{display:block}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .product-quantity,.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .product-total{padding:0 10px}@media all and (max-width:767px){.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table{overflow-y:auto}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-header,.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table .table-row{width:400px}}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer{display:flex;justify-content:space-between}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .back-to-shopping{margin:0 0 10px 0;text-transform:capitalize;font-size:15px;line-height:1.5em}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .back-to-shopping i{margin-right:5px}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content{font-size:14px;border-radius:3px;padding:20px 25px;background-color:#fff;width:40%;font-weight:700;margin:0 0 0 auto}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content div:first-child{border:none}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content div:last-child{padding-bottom:0}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content label{font-size:inherit;font-weight:inherit;line-height:inherit}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content .woocommerce-remove-coupon{font-family:inherit;font-size:.7em;font-weight:inherit;line-height:inherit;transition:all .2s}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .cart-discount,.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .cart-subtotal,.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .order-total,.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .shipping-area{display:flex;justify-content:space-between;border-top:1px solid inherit;padding:3px 0}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .woocommerce-shipping-methods{margin:0;padding:0;list-style:none}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .shipping-area #shipping_method li{margin-bottom:0}@media all and (max-width:1024px){.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content{width:40%}}@media all and (max-width:767px){.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer{flex-direction:column-reverse}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .back-to-shop{margin-top:15px}.ea-woo-checkout .woocommerce .ea-woo-checkout-order-review .ea-order-review-table-footer .footer-content{width:100%}}.eael-woo-checkout .woocommerce .woocommerce-error,.eael-woo-checkout .woocommerce .woocommerce-info,.eael-woo-checkout .woocommerce .woocommerce-message{border:0;border-radius:5px;text-align:left;background-color:transparent;text-transform:capitalize;padding:20px 20px 20px 50px;font-size:16px;line-height:1.5em;font-weight:400;margin-bottom:30px}.eael-woo-checkout .woocommerce .woocommerce-error::before,.eael-woo-checkout .woocommerce .woocommerce-info::before,.eael-woo-checkout .woocommerce .woocommerce-message::before{left:20px;top:20px;font-size:20px}.eael-woo-checkout .woocommerce .woocommerce-error a,.eael-woo-checkout .woocommerce .woocommerce-info a,.eael-woo-checkout .woocommerce .woocommerce-message a{box-shadow:none;text-transform:capitalize}.eael-woo-checkout .woocommerce .woocommerce-error{background-color:#fff3f5;color:#ff7e93}.eael-woo-checkout .woocommerce .woocommerce-info{background-color:#d1ecf1;color:#0c5460}.eael-woo-checkout .woocommerce .woocommerce-message{background-color:#d4edda;color:#155724}.eael-woo-checkout .woocommerce form.checkout_coupon{border:1px solid #404040}.eael-woo-checkout .woocommerce .woo-checkout-login.woo-checkout-login-editor{display:none!important}.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login-toggle .woocommerce-error,.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login-toggle .woocommerce-info,.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login-toggle .woocommerce-message{background-color:transparent!important;padding:0 0 0 40px!important;border:none!important;margin:0}.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login-toggle .woocommerce-error::before,.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login-toggle .woocommerce-info::before,.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-form-login-toggle .woocommerce-message::before{left:20px;top:20px;font-size:20px}.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-info{font-size:inherit;line-height:1.5em;font-weight:inherit;margin-bottom:0;display:block}.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-info::before{content:none}.eael-woo-checkout .woocommerce .woo-checkout-login .woocommerce-info a{text-decoration:underline}.eael-woo-checkout .woocommerce .woo-checkout-coupon{border-radius:5px;background-color:#ebfaff;padding:30px;font-size:16px;line-height:1.5em;font-weight:400;margin-bottom:30px;position:relative;display:block}.eael-woo-checkout .woocommerce .woo-checkout-coupon .ea-coupon-icon{width:20px;position:absolute;top:20px;left:20px;font-size:20px}.eael-woo-checkout .woocommerce .woo-checkout-coupon .ea-coupon-icon i,.eael-woo-checkout .woocommerce .woo-checkout-coupon .ea-coupon-icon svg{width:1em;height:1em;position:relative;display:block}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-error,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-info,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-message{border-width:1px;border-style:solid;border-radius:3px;padding:10px 10px 10px 40px!important;margin:20px 0 0;color:inherit}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-error:before,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-info:before,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-message:before{left:10px;top:10px;color:inherit}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-error li,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-info li,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-message li{margin-left:0}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-error,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-info,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-message{background-color:transparent!important;padding:0 0 0 40px!important;border:none!important;margin:0}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-error::before,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-info::before,.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-message::before{left:20px;top:20px;font-size:20px}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-info{font-size:inherit;line-height:1.5em;font-weight:inherit;margin-bottom:0;display:block}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-info::before{content:none}.eael-woo-checkout .woocommerce .woo-checkout-coupon .woocommerce-form-coupon-toggle .woocommerce-info a{text-decoration:underline}.eael-woo-checkout .woocommerce .woo-checkout-payment{clear:both}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods{padding:0 0 20px 0!important;margin:0;border:0}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods li:not(.woocommerce-notice){background-color:transparent}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method{margin:0;padding:0}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method>label{font-size:15px;padding:0;margin:0;display:inline-block;width:100%}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method input[type=radio]{display:none}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method input[type=radio]+label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding-left:25px;position:relative}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method input[type=radio]+label::before{transition:all 250ms cubic-bezier(.4,.25,.3,1);content:"";width:12px;height:12px;border-radius:50%;background-color:#b8b6ca;border:0 solid #fff;font-size:0;position:absolute;top:47%;left:0;transform:translateY(-50%)}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method input[type=radio]+label::after{transition:all 250ms cubic-bezier(.4,.25,.3,1);content:"";width:0;height:0;border-radius:50%;background-color:#fff;position:absolute;top:47%;left:0;transform:translateY(-50%)}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method input[type=radio]:checked+label::before{background-color:transparent;width:12px;height:12px;border-width:2px;border-color:#7362f0}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .wc_payment_method input[type=radio]:checked+label::after{width:6px;height:6px;left:3px;background-color:#fff}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .payment_box{border-radius:5px}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .payment_methods .payment_box p:first-child{margin:0!important}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .place-order{padding:20px 0 0 0;border-top:1px solid #fff}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .place-order p{margin-top:0}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .place-order a.woocommerce-privacy-policy-link{color:#fff;font-weight:600}.eael-woo-checkout .woocommerce .woo-checkout-payment #payment .place-order #place_order{width:auto;margin:0 0 0 auto;text-transform:capitalize;letter-spacing:unset}.eael-woo-checkout.theme-astra:not(.elementor-editor-active) .woocommerce #customer_details.col2-set .col-1{width:100%!important;float:none!important}@media (min-width:1024px){.eael-woo-checkout.theme-astra:not(.elementor-editor-active) .woocommerce #customer_details.col2-set .col-1 .woocommerce-billing-fields{float:left!important;width:48%!important;padding-right:2%}.eael-woo-checkout.theme-astra:not(.elementor-editor-active) .woocommerce #customer_details.col2-set .col-1 .woocommerce-account-fields,.eael-woo-checkout.theme-astra:not(.elementor-editor-active) .woocommerce #customer_details.col2-set .col-1 .woocommerce-additional-fields,.eael-woo-checkout.theme-astra:not(.elementor-editor-active) .woocommerce #customer_details.col2-set .col-1 .woocommerce-shipping-fields{float:left!important;width:48%!important;padding-left:2%}}.eael-woo-checkout.theme-astra:not(.elementor-editor-active) .woocommerce #customer_details.col2-set .col-2{clear:both}.eael-woo-checkout.elementor-editor-active .woocommerce .woo-checkout-login.woo-checkout-login-editor{display:block!important}
|
43 |
.eael-wpforms .wpforms-container .wpforms-form .wpforms-page-button,.eael-wpforms .wpforms-container .wpforms-form button[type=submit],.eael-wpforms .wpforms-container .wpforms-form input[type=submit]{border:0}.eael-wpforms .wpforms-container .wpforms-form .wpforms-page-button:hover,.eael-wpforms .wpforms-container .wpforms-form button[type=submit]:hover,.eael-wpforms .wpforms-container .wpforms-form input[type=submit]:hover{border:0}.eael-wpforms .wpforms-container .wpforms-form input[type=checkbox],.eael-wpforms .wpforms-container .wpforms-form input[type=radio]{padding:3px}.eael-wpforms .wpforms-container .wpforms-form .wpforms-field-label{display:none}.eael-wpforms .wpforms-container .wpforms-form .wpforms-field-name .wpforms-field-row{max-width:100%}.eael-wpforms .wpforms-container .wpforms-field input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=image]):not([type=file]),.eael-wpforms .wpforms-container .wpforms-field select,.eael-wpforms .wpforms-container .wpforms-field textarea{max-width:100%!important}.eael-wpforms-labels-yes .wpforms-container .wpforms-form .wpforms-field-label{display:block}.eael-wpforms-form-button-full-width .wpforms-submit-container .wpforms-submit{width:100%}
|
44 |
+
@keyframes plyr-progress{to{background-position:25px 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{from{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:subpixel-antialiased;direction:ltr;font-family:Avenir,"Avenir Next","Helvetica Neue","Segoe UI",Helvetica,Arial,sans-serif;font-variant-numeric:tabular-nums;font-weight:500;line-height:1.7;max-width:100%;min-width:200px;position:relative;text-shadow:none;transition:box-shadow .3s ease}.plyr audio,.plyr video{border-radius:inherit;height:auto;vertical-align:middle;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui ::after,.plyr--full-ui ::before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4a5764;border-radius:2px;color:#fff;font-size:9px;line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;color:#fff;display:none;font-size:14px;left:0;padding:10px;position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions .plyr__caption{background:rgba(0,0,0,.8);border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__captions .plyr__caption div{display:inline}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:16px;padding:20px}}@media (min-width:768px){.plyr__captions{font-size:18px}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(-40px)}.plyr__control{background:0 0;border:0;border-radius:3px;color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;position:relative;transition:all .3s ease}.plyr__control svg{display:block;fill:currentColor;height:18px;pointer-events:none;width:18px}.plyr__control:focus{outline:0}.plyr__control.plyr__tab-focus{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}a.plyr__control{text-decoration:none}a.plyr__control::after,a.plyr__control::before{display:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed{display:none}.plyr--audio .plyr__control.plyr__tab-focus,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#00b3ff;color:#fff}.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#00b3ff;color:#fff}.plyr__control--overlaid{background:rgba(0,179,255,.8);border:0;border-radius:100%;color:#fff;display:none;left:50%;padding:15px;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{background:#00b3ff}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__progress__container{flex:1;min-width:0}.plyr__controls .plyr__controls__item{margin-left:2.5px}.plyr__controls .plyr__controls__item:first-child{margin-left:0;margin-right:auto}.plyr__controls .plyr__controls__item.plyr__progress__container{padding-left:2.5px}.plyr__controls .plyr__controls__item.plyr__time{padding:0 5px}.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,.plyr__controls .plyr__controls__item.plyr__time+.plyr__time,.plyr__controls .plyr__controls__item.plyr__time:first-child{padding-left:0}.plyr__controls .plyr__controls__item.plyr__volume{padding-right:5px}.plyr__controls .plyr__controls__item.plyr__volume:first-child{padding-right:0}.plyr__controls:empty{display:none}.plyr--audio .plyr__controls{background:#fff;border-radius:inherit;color:#4a5764;padding:10px}.plyr--video .plyr__controls{background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.7));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;left:0;padding:20px 5px 5px;position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:35px 10px 10px}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip]{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:rgba(255,255,255,.9);border-radius:4px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4a5764;font-size:16px;margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container::after{border:4px solid transparent;border-top-color:rgba(255,255,255,.9);content:'';height:0;position:absolute;right:15px;top:100%;width:0}.plyr__menu__container [role=menu]{padding:7px}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4a5764;display:flex;font-size:14px;padding:4px 11px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control::after{border:4px solid transparent;content:'';position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px}.plyr__menu__container .plyr__control--forward::after{border-left-color:rgba(74,87,100,.8);right:5px}.plyr__menu__container .plyr__control--forward.plyr__tab-focus::after,.plyr__menu__container .plyr__control--forward:hover::after{border-left-color:currentColor}.plyr__menu__container .plyr__control--back{font-weight:500;margin:7px;margin-bottom:3px;padding-left:28px;position:relative;width:calc(100% - 14px)}.plyr__menu__container .plyr__control--back::after{border-right-color:rgba(74,87,100,.8);left:7px}.plyr__menu__container .plyr__control--back::before{background:#c1c9d1;box-shadow:0 1px 0 #fff;content:'';height:1px;left:0;margin-top:4px;overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back.plyr__tab-focus::after,.plyr__menu__container .plyr__control--back:hover::after{border-right-color:currentColor}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px}.plyr__menu__container .plyr__control[role=menuitemradio]::after,.plyr__menu__container .plyr__control[role=menuitemradio]::before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]::before{background:rgba(0,0,0,.1);content:'';display:block;flex-shrink:0;height:16px;margin-right:10px;transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]::after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::before{background:#00b3ff}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio].plyr__tab-focus::before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover::before{background:rgba(0,0,0,.1)}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;overflow:hidden;padding-left:25px;pointer-events:none}.plyr--full-ui input[type=range]{-webkit-appearance:none;background:0 0;border:0;border-radius:26px;color:#00b3ff;display:block;height:19px;margin:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none;background-image:linear-gradient(to right,currentColor var(--value,0),transparent var(--value,0))}.plyr--full-ui input[type=range]::-webkit-slider-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;transition:all .2s ease;width:13px;-webkit-appearance:none;margin-top:-4px}.plyr--full-ui input[type=range]::-moz-range-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-moz-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;transition:all .2s ease;width:13px}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;height:5px}.plyr--full-ui input[type=range]::-ms-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;color:transparent}.plyr--full-ui input[type=range]::-ms-fill-upper{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;background:currentColor}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;transition:all .2s ease;width:13px;margin-top:0}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range].plyr__tab-focus::-webkit-slider-runnable-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-moz-range-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-ms-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr__poster{background-color:#000;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr__time{font-size:14px}.plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr--video .plyr__time{text-shadow:0 1px 1px rgba(0,0,0,.15)}.plyr__tooltip{background:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4a5764;font-size:14px;font-weight:500;left:50%;line-height:1.3;margin-bottom:10px;opacity:0;padding:5px 7.5px;pointer-events:none;position:absolute;transform:translate(-50%,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;white-space:nowrap;z-index:2}.plyr__tooltip::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control.plyr__tab-focus .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%,0) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translate(0,10px) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip::before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip::before{left:16px}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translate(0,10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip::before{left:auto;right:16px;transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0,0) scale(1)}.plyr--video{background:#000;overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;border-radius:inherit;overflow:hidden;position:relative;z-index:0}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;height:100%;left:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr__progress{left:6.5px;margin-right:13px;position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-right:-6.5px;width:calc(100% + 13px)}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{font-size:14px;left:0}.plyr__progress__buffer{-webkit-appearance:none;background:0 0;border:0;border-radius:100px;height:5px;left:0;margin-top:-2.5px;padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:0 0}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;transition:width .2s ease}.plyr--video .plyr__progress__buffer{box-shadow:0 1px 1px rgba(0,0,0,.15);color:rgba(255,255,255,.25)}.plyr--audio .plyr__progress__buffer{color:rgba(193,201,209,.66)}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,rgba(35,41,47,.6) 25%,transparent 25%,transparent 50%,rgba(35,41,47,.6) 50%,rgba(35,41,47,.6) 75%,transparent 75%,transparent);background-repeat:repeat-x;background-size:25px 25px;color:transparent}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:rgba(255,255,255,.25)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:rgba(193,201,209,.66)}.plyr__volume{align-items:center;display:flex;flex:1;position:relative}.plyr__volume input[type=range]{margin-left:5px;position:relative;z-index:2}@media (min-width:480px){.plyr__volume{max-width:90px}}@media (min-width:768px){.plyr__volume{max-width:110px}}.plyr--is-ios .plyr__volume{display:none!important}.plyr--is-ios.plyr--vimeo [data-plyr=mute]{display:none!important}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:fullscreen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}.plyr:-ms-fullscreen .plyr__captions{font-size:21px}.plyr:fullscreen .plyr__captions{font-size:21px}}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}}.plyr:-moz-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-moz-full-screen video{height:100%}.plyr:-moz-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-moz-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-moz-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-moz-full-screen .plyr__captions{font-size:21px}}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-ms-fullscreen .plyr__captions{font-size:21px}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;margin:0;width:100%;bottom:0;left:0;position:fixed;right:0;top:0;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__video-wrapper{height:100%;position:static}.plyr--fullscreen-fallback.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:21px}}.plyr__ads{border-radius:inherit;bottom:0;cursor:pointer;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads::after{background:rgba(35,41,47,.8);border-radius:2px;bottom:10px;color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;z-index:3}.plyr__ads::after:empty{display:none}.plyr__cues{background:currentColor;display:block;height:5px;left:0;margin:-2.5px 0 0;opacity:.8;position:absolute;top:50%;width:3px;z-index:3}.plyr__preview-thumb{background-color:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);margin-bottom:10px;opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translate(0,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0,0) scale(1)}.plyr__preview-thumb::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c9d1;border-radius:2px;overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img{height:100%;left:0;max-height:none;max-width:none;position:absolute;top:0;width:100%}.plyr__preview-thumb__time-container{bottom:6px;left:0;position:absolute;right:0;white-space:nowrap;z-index:3}.plyr__preview-thumb__time-container span{background-color:rgba(0,0,0,.55);border-radius:2px;color:#fff;font-size:14px;padding:3px 6px}.plyr__preview-scrubbing{bottom:0;filter:blur(1px);height:100%;left:0;margin:auto;opacity:0;overflow:hidden;position:absolute;right:0;top:0;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);overflow:hidden;border:0!important;height:1px!important;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}
|
45 |
@charset "UTF-8";.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}body .fc{font-size:1em}.fc-highlight{background:#bce8f1;opacity:.3}.fc-bgevent{background:#8fdf82;opacity:.3}.fc-nonbusiness{background:#d7d7d7}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:2px 4px}.fc-rtl .fc-popover .fc-header{flex-direction:row-reverse}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-popover .fc-header .fc-close{cursor:pointer;opacity:.65;font-size:1.1em}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-bg,.fc-bgevent-skeleton,.fc-highlight-skeleton,.fc-mirror-skeleton{position:absolute;top:0;left:0;right:0}.fc-bg{bottom:0}.fc-bg table{height:100%}.fc table{width:100%;box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}a[data-goto]{cursor:pointer}a[data-goto]:hover{text-decoration:underline}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-mirror-skeleton{z-index:5}.fc .fc-row .fc-content-skeleton table,.fc .fc-row .fc-content-skeleton td,.fc .fc-row .fc-mirror-skeleton td{background:0 0;border-color:transparent}.fc-row .fc-content-skeleton td,.fc-row .fc-mirror-skeleton td{border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-mirror-skeleton tbody td{border-top:0}.fc-scroller{-webkit-overflow-scrolling:touch}.fc-scroller>.fc-day-grid,.fc-scroller>.fc-time-grid{position:relative;width:100%}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.4;border-radius:3px;border:1px solid #3788d8}.fc-event,.fc-event-dot{background-color:#3788d8}.fc-event,.fc-event:hover{color:#fff;text-decoration:none}.fc-event.fc-draggable,.fc-event[href]{cursor:pointer}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:4}.fc-event .fc-resizer{display:none}.fc-event.fc-allow-mouse-resize .fc-resizer,.fc-event.fc-selected .fc-resizer{display:block}.fc-event.fc-selected .fc-resizer:before{content:"";position:absolute;z-index:9999;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px}.fc-event.fc-selected{z-index:9999!important;box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event.fc-selected:after{content:"";position:absolute;z-index:1;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#000;opacity:.25}.fc-event.fc-dragging.fc-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event.fc-dragging:not(.fc-selected){opacity:.75}.fc-h-event.fc-selected:before{content:"";position:absolute;z-index:3;top:-10px;bottom:-10px;left:0;right:0}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-ltr .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-end-resizer{cursor:w-resize;left:-1px}.fc-ltr .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-start-resizer{cursor:e-resize;right:-1px}.fc-h-event.fc-allow-mouse-resize .fc-resizer{width:7px;top:-1px;bottom:-1px}.fc-h-event.fc-selected .fc-resizer{border-radius:4px;border-width:1px;width:6px;height:6px;border-style:solid;border-color:inherit;background:#fff;top:50%;margin-top:-4px}.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,.fc-rtl .fc-h-event.fc-selected .fc-end-resizer{margin-left:-4px}.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,.fc-rtl .fc-h-event.fc-selected .fc-start-resizer{margin-right:-4px}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}tr:first-child>td>.fc-day-grid-event{margin-top:2px}.fc-mirror-skeleton tr:first-child>td>.fc-day-grid-event{margin-top:0}.fc-day-grid-event .fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer{margin-left:-2px}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer{margin-right:-2px}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-now-indicator{position:absolute;border:0 solid red}.fc-unselectable{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.fc-unthemed .fc-content,.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-list-view,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed td.fc-today{background:#fcf8e3}.fc-unthemed .fc-disabled-day{background:#d7d7d7;opacity:.3}@font-face{font-family:fcicons;src:url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format("truetype");font-weight:400;font-style:normal}.fc-icon{font-family:fcicons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fc-icon-chevron-left:before{content:""}.fc-icon-chevron-right:before{content:""}.fc-icon-chevrons-left:before{content:""}.fc-icon-chevrons-right:before{content:""}.fc-icon-minus-square:before{content:""}.fc-icon-plus-square:before{content:""}.fc-icon-x:before{content:""}.fc-icon{display:inline-block;width:1em;height:1em;text-align:center}.fc-button{border-radius:0;overflow:visible;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}.fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc-button{-webkit-appearance:button}.fc-button:not(:disabled){cursor:pointer}.fc-button::-moz-focus-inner{padding:0;border-style:none}.fc-button{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.4em .65em;font-size:1em;line-height:1.5;border-radius:.25em}.fc-button:hover{color:#212529;text-decoration:none}.fc-button:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(44,62,80,.25);box-shadow:0 0 0 .2rem rgba(44,62,80,.25)}.fc-button:disabled{opacity:.65}.fc-button-primary{color:#fff;background-color:#2c3e50;border-color:#2c3e50}.fc-button-primary:hover{color:#fff;background-color:#1e2b37;border-color:#1a252f}.fc-button-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(76,91,106,.5);box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc-button-primary:disabled{color:#fff;background-color:#2c3e50;border-color:#2c3e50}.fc-button-primary:not(:disabled).fc-button-active,.fc-button-primary:not(:disabled):active{color:#fff;background-color:#1a252f;border-color:#151e27}.fc-button-primary:not(:disabled).fc-button-active:focus,.fc-button-primary:not(:disabled):active:focus{-webkit-box-shadow:0 0 0 .2rem rgba(76,91,106,.5);box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc-button .fc-icon{vertical-align:middle;font-size:1.5em}.fc-button-group{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.fc-button-group>.fc-button{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.fc-button-group>.fc-button:hover{z-index:1}.fc-button-group>.fc-button.fc-button-active,.fc-button-group>.fc-button:active,.fc-button-group>.fc-button:focus{z-index:1}.fc-button-group>.fc-button:not(:first-child){margin-left:-1px}.fc-button-group>.fc-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.fc-button-group>.fc-button:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-list-item:hover td{background-color:#f5f5f5}.fc-toolbar{display:flex;justify-content:space-between;align-items:center}.fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-toolbar h2{font-size:1.75em;margin:0}.fc-view-container{position:relative}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}@media print{.fc{max-width:100%!important}.fc-event{background:#fff!important;color:#000!important;page-break-inside:avoid}.fc-event .fc-resizer{display:none}.fc hr,.fc tbody,.fc td,.fc th,.fc thead,.fc-row{border-color:#ccc!important;background:#fff!important}.fc-bg,.fc-bgevent-container,.fc-bgevent-skeleton,.fc-business-container,.fc-highlight-container,.fc-highlight-skeleton,.fc-mirror-container,.fc-mirror-skeleton{display:none}.fc tbody .fc-row{height:auto!important;min-height:0!important}.fc tbody .fc-row .fc-content-skeleton{position:static;padding-bottom:0!important}.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td{padding-bottom:1em}.fc tbody .fc-row .fc-content-skeleton table{height:1em}.fc-more,.fc-more-cell{display:none!important}.fc tr.fc-limited{display:table-row!important}.fc td.fc-limited{display:table-cell!important}.fc-popover{display:none}.fc-time-grid{min-height:0!important}.fc-timeGrid-view .fc-axis{display:none}.fc-slats,.fc-time-grid hr{display:none!important}.fc-time-grid .fc-content-skeleton{position:static}.fc-time-grid .fc-content-skeleton table{height:4em}.fc-time-grid .fc-event-container{margin:0!important}.fc-time-grid .fc-event{position:static!important;margin:3px 2px!important}.fc-time-grid .fc-event.fc-not-end{border-bottom-width:1px!important}.fc-time-grid .fc-event.fc-not-end:after{content:"..."}.fc-time-grid .fc-event.fc-not-start{border-top-width:1px!important}.fc-time-grid .fc-event.fc-not-start:before{content:"..."}.fc-time-grid .fc-event .fc-time{white-space:normal!important}.fc-time-grid .fc-event .fc-time span{display:none}.fc-time-grid .fc-event .fc-time:after{content:attr(data-full)}.fc-day-grid-container,.fc-scroller,.fc-time-grid-container{overflow:visible!important;height:auto!important}.fc-row{border:0!important;margin:0!important}.fc button,.fc-button-group{display:none}}
|
46 |
.fc-dayGridDay-view .fc-content-skeleton,.fc-dayGridWeek-view .fc-content-skeleton{padding-bottom:1em}.fc-dayGrid-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid{overflow:hidden}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-day-top.fc-other-month{opacity:.3}.fc-dayGrid-view .fc-day-number,.fc-dayGrid-view .fc-week-number{padding:2px}.fc-dayGrid-view th.fc-day-number,.fc-dayGrid-view th.fc-week-number{padding:0 2px}.fc-ltr .fc-dayGrid-view .fc-day-top .fc-day-number{float:right}.fc-rtl .fc-dayGrid-view .fc-day-top .fc-day-number{float:left}.fc-ltr .fc-dayGrid-view .fc-day-top .fc-week-number{float:left;border-radius:0 0 3px 0}.fc-rtl .fc-dayGrid-view .fc-day-top .fc-week-number{float:right;border-radius:0 0 0 3px}.fc-dayGrid-view .fc-day-top .fc-week-number{min-width:1.5em;text-align:center;background-color:#f2f2f2;color:grey}.fc-dayGrid-view td.fc-week-number{text-align:center}.fc-dayGrid-view td.fc-week-number>*{display:inline-block;min-width:1.25em}
|
47 |
.fc-event-dot{display:inline-block;width:10px;height:10px;border-radius:5px}.fc-rtl .fc-list-view{direction:rtl}.fc-list-view{border-width:1px;border-style:solid}.fc .fc-list-table{table-layout:auto}.fc-list-table td{border-width:1px 0 0;padding:8px 14px}.fc-list-table tr:first-child td{border-top-width:0}.fc-list-heading{border-bottom-width:1px}.fc-list-heading td{font-weight:700}.fc-ltr .fc-list-heading-main{float:left}.fc-ltr .fc-list-heading-alt{float:right}.fc-rtl .fc-list-heading-main{float:right}.fc-rtl .fc-list-heading-alt{float:left}.fc-list-item.fc-has-url{cursor:pointer}.fc-list-item-marker,.fc-list-item-time{white-space:nowrap;width:1px}.fc-ltr .fc-list-item-marker{padding-right:0}.fc-rtl .fc-list-item-marker{padding-left:0}.fc-list-item-title a{text-decoration:none;color:inherit}.fc-list-item-title a[href]:hover{text-decoration:underline}.fc-list-empty-wrap2{position:absolute;top:0;left:0;right:0;bottom:0}.fc-list-empty-wrap1{width:100%;height:100%;display:table}.fc-list-empty{display:table-cell;vertical-align:middle;text-align:center}.fc-unthemed .fc-list-empty{background-color:#eee}
|
48 |
@charset "UTF-8";.fc-timeGrid-view .fc-day-grid{position:relative;z-index:2}.fc-timeGrid-view .fc-day-grid .fc-row{min-height:3em}.fc-timeGrid-view .fc-day-grid .fc-row .fc-content-skeleton{padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px;white-space:nowrap}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-content-col{position:relative}.fc-time-grid .fc-content-skeleton{position:absolute;z-index:3;top:0;left:0;right:0}.fc-time-grid .fc-business-container{position:relative;z-index:1}.fc-time-grid .fc-bgevent-container{position:relative;z-index:2}.fc-time-grid .fc-highlight-container{position:relative;z-index:3}.fc-time-grid .fc-event-container{position:relative;z-index:4}.fc-time-grid .fc-now-indicator-line{z-index:5}.fc-time-grid .fc-mirror-container{position:relative;z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-highlight-container{position:relative}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-time-grid-event{margin-bottom:1px}.fc-time-grid-event-inset{-webkit-box-shadow:0 0 0 1px #fff;box-shadow:0 0 0 1px #fff}.fc-time-grid-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-time-grid-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event .fc-content{overflow:hidden;max-height:100%}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em;white-space:nowrap}.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:" - "}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after{content:"="}.fc-time-grid-event.fc-selected .fc-resizer{border-radius:5px;border-width:1px;width:8px;height:8px;border-style:solid;border-color:inherit;background:#fff;left:50%;margin-left:-5px;bottom:-5px}.fc-time-grid .fc-now-indicator-line{border-top-width:1px;left:0;right:0}.fc-time-grid .fc-now-indicator-arrow{margin-top:-5px}.fc-ltr .fc-time-grid .fc-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-rtl .fc-time-grid .fc-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}
|
|
|
49 |
.tooltipster-fall,.tooltipster-grow.tooltipster-show{-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1);-moz-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-ms-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-o-transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-base{display:flex;pointer-events:none;position:absolute}.tooltipster-box{flex:1 1 auto}.tooltipster-content{box-sizing:border-box;max-height:100%;max-width:100%;overflow:auto}.tooltipster-ruler{bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;visibility:hidden}.tooltipster-fade{opacity:0;-webkit-transition-property:opacity;-moz-transition-property:opacity;-o-transition-property:opacity;-ms-transition-property:opacity;transition-property:opacity}.tooltipster-fade.tooltipster-show{opacity:1}.tooltipster-grow{-webkit-transform:scale(0,0);-moz-transform:scale(0,0);-o-transform:scale(0,0);-ms-transform:scale(0,0);transform:scale(0,0);-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform;-webkit-backface-visibility:hidden}.tooltipster-grow.tooltipster-show{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-o-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1);-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-swing{opacity:0;-webkit-transform:rotateZ(4deg);-moz-transform:rotateZ(4deg);-o-transform:rotateZ(4deg);-ms-transform:rotateZ(4deg);transform:rotateZ(4deg);-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform}.tooltipster-swing.tooltipster-show{opacity:1;-webkit-transform:rotateZ(0);-moz-transform:rotateZ(0);-o-transform:rotateZ(0);-ms-transform:rotateZ(0);transform:rotateZ(0);-webkit-transition-timing-function:cubic-bezier(.23,.635,.495,1);-webkit-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-moz-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-ms-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-o-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);transition-timing-function:cubic-bezier(.23,.635,.495,2.4)}.tooltipster-fall{-webkit-transition-property:top;-moz-transition-property:top;-o-transition-property:top;-ms-transition-property:top;transition-property:top;-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-fall.tooltipster-initial{top:0!important}.tooltipster-fall.tooltipster-dying{-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;-ms-transition-property:all;transition-property:all;top:0!important;opacity:0}.tooltipster-slide{-webkit-transition-property:left;-moz-transition-property:left;-o-transition-property:left;-ms-transition-property:left;transition-property:left;-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-moz-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-ms-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-o-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-slide.tooltipster-initial{left:-40px!important}.tooltipster-slide.tooltipster-dying{-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;-ms-transition-property:all;transition-property:all;left:0!important;opacity:0}@keyframes tooltipster-fading{0%{opacity:0}100%{opacity:1}}.tooltipster-update-fade{animation:tooltipster-fading .4s}@keyframes tooltipster-rotating{25%{transform:rotate(-2deg)}75%{transform:rotate(2deg)}100%{transform:rotate(0)}}.tooltipster-update-rotate{animation:tooltipster-rotating .6s}@keyframes tooltipster-scaling{50%{transform:scale(1.1)}100%{transform:scale(1)}}.tooltipster-update-scale{animation:tooltipster-scaling .6s}.tooltipster-sidetip .tooltipster-box{background:#565656;border:2px solid #000;border-radius:4px}.tooltipster-sidetip.tooltipster-bottom .tooltipster-box{margin-top:8px}.tooltipster-sidetip.tooltipster-left .tooltipster-box{margin-right:8px}.tooltipster-sidetip.tooltipster-right .tooltipster-box{margin-left:8px}.tooltipster-sidetip.tooltipster-top .tooltipster-box{margin-bottom:8px}.tooltipster-sidetip .tooltipster-content{color:#fff;line-height:18px;padding:6px 14px}.tooltipster-sidetip .tooltipster-arrow{overflow:hidden;position:absolute}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow{height:10px;margin-left:-10px;top:0;width:20px}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow{height:20px;margin-top:-10px;right:0;top:0;width:10px}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow{height:20px;margin-top:-10px;left:0;top:0;width:10px}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow{bottom:0;height:10px;margin-left:-10px;width:20px}.tooltipster-sidetip .tooltipster-arrow-background,.tooltipster-sidetip .tooltipster-arrow-border{height:0;position:absolute;width:0}.tooltipster-sidetip .tooltipster-arrow-background{border:10px solid transparent}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background{border-bottom-color:#565656;left:0;top:3px}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background{border-left-color:#565656;left:-3px;top:0}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background{border-right-color:#565656;left:3px;top:0}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background{border-top-color:#565656;left:0;top:-3px}.tooltipster-sidetip .tooltipster-arrow-border{border:10px solid transparent;left:0;top:0}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-border{border-bottom-color:#000}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-border{border-left-color:#000}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-border{border-right-color:#000}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-border{border-top-color:#000}.tooltipster-sidetip .tooltipster-arrow-uncropped{position:relative}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-uncropped{top:-10px}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-uncropped{left:-10px}
|
assets/front-end/js/eael.js
CHANGED
@@ -269,14951 +269,1751 @@
|
|
269 |
|
270 |
});
|
271 |
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return sd.apply(null,arguments)}function b(a){sd=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return null!=a&&"[object Object]"===Object.prototype.toString.call(a)}function e(a){var b;for(b in a)return!1;return!0}function f(a){return void 0===a}function g(a){return"number"==typeof a||"[object Number]"===Object.prototype.toString.call(a)}function h(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function i(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function j(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function k(a,b){for(var c in b)j(b,c)&&(a[c]=b[c]);return j(b,"toString")&&(a.toString=b.toString),j(b,"valueOf")&&(a.valueOf=b.valueOf),a}function l(a,b,c,d){return sb(a,b,c,d,!0).utc()}function m(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function n(a){return null==a._pf&&(a._pf=m()),a._pf}function o(a){if(null==a._isValid){var b=n(a),c=ud.call(b.parsedDateParts,function(a){return null!=a}),d=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c);if(a._strict&&(d=d&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour),null!=Object.isFrozen&&Object.isFrozen(a))return d;a._isValid=d}return a._isValid}function p(a){var b=l(NaN);return null!=a?k(n(b),a):n(b).userInvalidated=!0,b}function q(a,b){var c,d,e;if(f(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),f(b._i)||(a._i=b._i),f(b._f)||(a._f=b._f),f(b._l)||(a._l=b._l),f(b._strict)||(a._strict=b._strict),f(b._tzm)||(a._tzm=b._tzm),f(b._isUTC)||(a._isUTC=b._isUTC),f(b._offset)||(a._offset=b._offset),f(b._pf)||(a._pf=n(b)),f(b._locale)||(a._locale=b._locale),vd.length>0)for(c=0;c<vd.length;c++)d=vd[c],e=b[d],f(e)||(a[d]=e);return a}function r(b){q(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),wd===!1&&(wd=!0,a.updateOffset(this),wd=!1)}function s(a){return a instanceof r||null!=a&&null!=a._isAMomentObject}function t(a){return a<0?Math.ceil(a)||0:Math.floor(a)}function u(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=t(b)),c}function v(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;d<e;d++)(c&&a[d]!==b[d]||!c&&u(a[d])!==u(b[d]))&&g++;return g+f}function w(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function x(b,c){var d=!0;return k(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,b),d){for(var e,f=[],g=0;g<arguments.length;g++){if(e="","object"==typeof arguments[g]){e+="\n["+g+"] ";for(var h in arguments[0])e+=h+": "+arguments[0][h]+", ";e=e.slice(0,-2)}else e=arguments[g];f.push(e)}w(b+"\nArguments: "+Array.prototype.slice.call(f).join("")+"\n"+(new Error).stack),d=!1}return c.apply(this,arguments)},c)}function y(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),xd[b]||(w(c),xd[b]=!0)}function z(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}function A(a){var b,c;for(c in a)b=a[c],z(b)?this[c]=b:this["_"+c]=b;this._config=a,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function B(a,b){var c,e=k({},a);for(c in b)j(b,c)&&(d(a[c])&&d(b[c])?(e[c]={},k(e[c],a[c]),k(e[c],b[c])):null!=b[c]?e[c]=b[c]:delete e[c]);for(c in a)j(a,c)&&!j(b,c)&&d(a[c])&&(e[c]=k({},e[c]));return e}function C(a){null!=a&&this.set(a)}function D(a,b,c){var d=this._calendar[a]||this._calendar.sameElse;return z(d)?d.call(b,c):d}function E(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function F(){return this._invalidDate}function G(a){return this._ordinal.replace("%d",a)}function H(a,b,c,d){var e=this._relativeTime[c];return z(e)?e(a,b,c,d):e.replace(/%d/i,a)}function I(a,b){var c=this._relativeTime[a>0?"future":"past"];return z(c)?c(b):c.replace(/%s/i,b)}function J(a,b){var c=a.toLowerCase();Hd[c]=Hd[c+"s"]=Hd[b]=a}function K(a){return"string"==typeof a?Hd[a]||Hd[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)j(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(a,b){Id[a]=b}function N(a){var b=[];for(var c in a)b.push({unit:c,priority:Id[c]});return b.sort(function(a,b){return a.priority-b.priority}),b}function O(b,c){return function(d){return null!=d?(Q(this,b,d),a.updateOffset(this,c),this):P(this,b)}}function P(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function Q(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}function R(a){return a=K(a),z(this[a])?this[a]():this}function S(a,b){if("object"==typeof a){a=L(a);for(var c=N(a),d=0;d<c.length;d++)this[c[d].unit](a[c[d].unit])}else if(a=K(a),z(this[a]))return this[a](b);return this}function T(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function U(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Md[a]=e),b&&(Md[b[0]]=function(){return T(e.apply(this,arguments),b[1],b[2])}),c&&(Md[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function V(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function W(a){var b,c,d=a.match(Jd);for(b=0,c=d.length;b<c;b++)Md[d[b]]?d[b]=Md[d[b]]:d[b]=V(d[b]);return function(b){var e,f="";for(e=0;e<c;e++)f+=z(d[e])?d[e].call(b,a):d[e];return f}}function X(a,b){return a.isValid()?(b=Y(b,a.localeData()),Ld[b]=Ld[b]||W(b),Ld[b](a)):a.localeData().invalidDate()}function Y(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Kd.lastIndex=0;d>=0&&Kd.test(a);)a=a.replace(Kd,c),Kd.lastIndex=0,d-=1;return a}function Z(a,b,c){ce[a]=z(b)?b:function(a,d){return a&&c?c:b}}function $(a,b){return j(ce,a)?ce[a](b._strict,b._locale):new RegExp(_(a))}function _(a){return aa(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function aa(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ba(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),g(b)&&(d=function(a,c){c[b]=u(a)}),c=0;c<a.length;c++)de[a[c]]=d}function ca(a,b){ba(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function da(a,b,c){null!=b&&j(de,a)&&de[a](b,c._a,c,a)}function ea(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function fa(a,b){return a?c(this._months)?this._months[a.month()]:this._months[(this._months.isFormat||oe).test(b)?"format":"standalone"][a.month()]:c(this._months)?this._months:this._months.standalone}function ga(a,b){return a?c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[oe.test(b)?"format":"standalone"][a.month()]:c(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function ha(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;d<12;++d)f=l([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=ne.call(this._shortMonthsParse,g),e!==-1?e:null):(e=ne.call(this._longMonthsParse,g),e!==-1?e:null):"MMM"===b?(e=ne.call(this._shortMonthsParse,g),e!==-1?e:(e=ne.call(this._longMonthsParse,g),e!==-1?e:null)):(e=ne.call(this._longMonthsParse,g),e!==-1?e:(e=ne.call(this._shortMonthsParse,g),e!==-1?e:null))}function ia(a,b,c){var d,e,f;if(this._monthsParseExact)return ha.call(this,a,b,c);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;d<12;d++){if(e=l([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function ja(a,b){var c;if(!a.isValid())return a;if("string"==typeof b)if(/^\d+$/.test(b))b=u(b);else if(b=a.localeData().monthsParse(b),!g(b))return a;return c=Math.min(a.date(),ea(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function ka(b){return null!=b?(ja(this,b),a.updateOffset(this,!0),this):P(this,"Month")}function la(){return ea(this.year(),this.month())}function ma(a){return this._monthsParseExact?(j(this,"_monthsRegex")||oa.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):(j(this,"_monthsShortRegex")||(this._monthsShortRegex=re),this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex)}function na(a){return this._monthsParseExact?(j(this,"_monthsRegex")||oa.call(this),a?this._monthsStrictRegex:this._monthsRegex):(j(this,"_monthsRegex")||(this._monthsRegex=se),this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex)}function oa(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;b<12;b++)c=l([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for(d.sort(a),e.sort(a),f.sort(a),b=0;b<12;b++)d[b]=aa(d[b]),e[b]=aa(e[b]);for(b=0;b<24;b++)f[b]=aa(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")}function pa(a){return qa(a)?366:365}function qa(a){return a%4===0&&a%100!==0||a%400===0}function ra(){return qa(this.year())}function sa(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return a<100&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function ta(a){var b=new Date(Date.UTC.apply(null,arguments));return a<100&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function ua(a,b,c){var d=7+b-c,e=(7+ta(a,0,d).getUTCDay()-b)%7;return-e+d-1}function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return j<=0?(f=a-1,g=pa(f)+j):j>pa(a)?(f=a+1,g=j-pa(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return g<1?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(pa(a)-d+e)/7}function ya(a){return wa(a,this._week.dow,this._week.doy).week}function za(){return this._week.dow}function Aa(){return this._week.doy}function Ba(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function Ca(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function Da(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Ea(a,b){return"string"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Fa(a,b){return a?c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]:c(this._weekdays)?this._weekdays:this._weekdays.standalone}function Ga(a){return a?this._weekdaysShort[a.day()]:this._weekdaysShort}function Ha(a){return a?this._weekdaysMin[a.day()]:this._weekdaysMin}function Ia(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;d<7;++d)f=l([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=ne.call(this._weekdaysParse,g),e!==-1?e:null):"ddd"===b?(e=ne.call(this._shortWeekdaysParse,g),e!==-1?e:null):(e=ne.call(this._minWeekdaysParse,g),e!==-1?e:null):"dddd"===b?(e=ne.call(this._weekdaysParse,g),e!==-1?e:(e=ne.call(this._shortWeekdaysParse,g),e!==-1?e:(e=ne.call(this._minWeekdaysParse,g),e!==-1?e:null))):"ddd"===b?(e=ne.call(this._shortWeekdaysParse,g),e!==-1?e:(e=ne.call(this._weekdaysParse,g),e!==-1?e:(e=ne.call(this._minWeekdaysParse,g),e!==-1?e:null))):(e=ne.call(this._minWeekdaysParse,g),e!==-1?e:(e=ne.call(this._weekdaysParse,g),e!==-1?e:(e=ne.call(this._shortWeekdaysParse,g),e!==-1?e:null)))}function Ja(a,b,c){var d,e,f;if(this._weekdaysParseExact)return Ia.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;d<7;d++){if(e=l([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function Ka(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Da(a,this.localeData()),this.add(a-b,"d")):b}function La(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Ma(a){if(!this.isValid())return null!=a?this:NaN;if(null!=a){var b=Ea(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Na(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(j(this,"_weekdaysRegex")||(this._weekdaysRegex=ye),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Oa(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(j(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ze),this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Pa(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(j(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ae),this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Qa(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],h=[],i=[],j=[];for(b=0;b<7;b++)c=l([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),h.push(e),i.push(f),j.push(d),j.push(e),j.push(f);for(g.sort(a),h.sort(a),i.sort(a),j.sort(a),b=0;b<7;b++)h[b]=aa(h[b]),i[b]=aa(i[b]),j[b]=aa(j[b]);this._weekdaysRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}function Ra(){return this.hours()%12||12}function Sa(){return this.hours()||24}function Ta(a,b){U(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Ua(a,b){return b._meridiemParse}function Va(a){return"p"===(a+"").toLowerCase().charAt(0)}function Wa(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Xa(a){return a?a.toLowerCase().replace("_","-"):a}function Ya(a){for(var b,c,d,e,f=0;f<a.length;){for(e=Xa(a[f]).split("-"),b=e.length,c=Xa(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=Za(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)break;b--}f++}return null}function Za(a){var b=null;if(!Fe[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Be._abbr,require("./locale/"+a),$a(b)}catch(a){}return Fe[a]}function $a(a,b){var c;return a&&(c=f(b)?bb(a):_a(a,b),c&&(Be=c)),Be._abbr}function _a(a,b){if(null!==b){var c=Ee;if(b.abbr=a,null!=Fe[a])y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),c=Fe[a]._config;else if(null!=b.parentLocale){if(null==Fe[b.parentLocale])return Ge[b.parentLocale]||(Ge[b.parentLocale]=[]),Ge[b.parentLocale].push({name:a,config:b}),null;c=Fe[b.parentLocale]._config}return Fe[a]=new C(B(c,b)),Ge[a]&&Ge[a].forEach(function(a){_a(a.name,a.config)}),$a(a),Fe[a]}return delete Fe[a],null}function ab(a,b){if(null!=b){var c,d=Ee;null!=Fe[a]&&(d=Fe[a]._config),b=B(d,b),c=new C(b),c.parentLocale=Fe[a],Fe[a]=c,$a(a)}else null!=Fe[a]&&(null!=Fe[a].parentLocale?Fe[a]=Fe[a].parentLocale:null!=Fe[a]&&delete Fe[a]);return Fe[a]}function bb(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Be;if(!c(a)){if(b=Za(a))return b;a=[a]}return Ya(a)}function cb(){return Ad(Fe)}function db(a){var b,c=a._a;return c&&n(a).overflow===-2&&(b=c[fe]<0||c[fe]>11?fe:c[ge]<1||c[ge]>ea(c[ee],c[fe])?ge:c[he]<0||c[he]>24||24===c[he]&&(0!==c[ie]||0!==c[je]||0!==c[ke])?he:c[ie]<0||c[ie]>59?ie:c[je]<0||c[je]>59?je:c[ke]<0||c[ke]>999?ke:-1,n(a)._overflowDayOfYear&&(b<ee||b>ge)&&(b=ge),n(a)._overflowWeeks&&b===-1&&(b=le),n(a)._overflowWeekday&&b===-1&&(b=me),n(a).overflow=b),a}function eb(a){var b,c,d,e,f,g,h=a._i,i=He.exec(h)||Ie.exec(h);if(i){for(n(a).iso=!0,b=0,c=Ke.length;b<c;b++)if(Ke[b][1].exec(i[1])){e=Ke[b][0],d=Ke[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=Le.length;b<c;b++)if(Le[b][1].exec(i[3])){f=(i[2]||" ")+Le[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!Je.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),lb(a)}else a._isValid=!1}function fb(a){var b,c,d,e,f,g,h,i,j={" GMT":" +0000"," EDT":" -0400"," EST":" -0500"," CDT":" -0500"," CST":" -0600"," MDT":" -0600"," MST":" -0700"," PDT":" -0700"," PST":" -0800"},k="YXWVUTSRQPONZABCDEFGHIKLM";if(b=a._i.replace(/\([^\)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s|\s$/g,""),c=Ne.exec(b)){if(d=c[1]?"ddd"+(5===c[1].length?", ":" "):"",e="D MMM "+(c[2].length>10?"YYYY ":"YY "),f="HH:mm"+(c[4]?":ss":""),c[1]){var l=new Date(c[2]),m=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][l.getDay()];if(c[1].substr(0,3)!==m)return n(a).weekdayMismatch=!0,void(a._isValid=!1)}switch(c[5].length){case 2:0===i?h=" +0000":(i=k.indexOf(c[5][1].toUpperCase())-12,h=(i<0?" -":" +")+(""+i).replace(/^-?/,"0").match(/..$/)[0]+"00");break;case 4:h=j[c[5]];break;default:h=j[" GMT"]}c[5]=h,a._i=c.splice(1).join(""),g=" ZZ",a._f=d+e+f+g,lb(a),n(a).rfc2822=!0}else a._isValid=!1}function gb(b){var c=Me.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(eb(b),void(b._isValid===!1&&(delete b._isValid,fb(b),b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b)))))}function hb(a,b,c){return null!=a?a:null!=b?b:c}function ib(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function jb(a){var b,c,d,e,f=[];if(!a._d){for(d=ib(a),a._w&&null==a._a[ge]&&null==a._a[fe]&&kb(a),null!=a._dayOfYear&&(e=hb(a._a[ee],d[ee]),(a._dayOfYear>pa(e)||0===a._dayOfYear)&&(n(a)._overflowDayOfYear=!0),c=ta(e,0,a._dayOfYear),a._a[fe]=c.getUTCMonth(),a._a[ge]=c.getUTCDate()),b=0;b<3&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;b<7;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[he]&&0===a._a[ie]&&0===a._a[je]&&0===a._a[ke]&&(a._nextDay=!0,a._a[he]=0),a._d=(a._useUTC?ta:sa).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[he]=24)}}function kb(a){var b,c,d,e,f,g,h,i;if(b=a._w,null!=b.GG||null!=b.W||null!=b.E)f=1,g=4,c=hb(b.GG,a._a[ee],wa(tb(),1,4).year),d=hb(b.W,1),e=hb(b.E,1),(e<1||e>7)&&(i=!0);else{f=a._locale._week.dow,g=a._locale._week.doy;var j=wa(tb(),f,g);c=hb(b.gg,a._a[ee],j.year),d=hb(b.w,j.week),null!=b.d?(e=b.d,(e<0||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f}d<1||d>xa(c,f,g)?n(a)._overflowWeeks=!0:null!=i?n(a)._overflowWeekday=!0:(h=va(c,d,e,f,g),a._a[ee]=h.year,a._dayOfYear=h.dayOfYear)}function lb(b){if(b._f===a.ISO_8601)return void eb(b);if(b._f===a.RFC_2822)return void fb(b);b._a=[],n(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=Y(b._f,b._locale).match(Jd)||[],c=0;c<e.length;c++)f=e[c],d=(h.match($(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&n(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),Md[f]?(d?n(b).empty=!1:n(b).unusedTokens.push(f),da(f,d,b)):b._strict&&!d&&n(b).unusedTokens.push(f);n(b).charsLeftOver=i-j,h.length>0&&n(b).unusedInput.push(h),b._a[he]<=12&&n(b).bigHour===!0&&b._a[he]>0&&(n(b).bigHour=void 0),n(b).parsedDateParts=b._a.slice(0),n(b).meridiem=b._meridiem,b._a[he]=mb(b._locale,b._a[he],b._meridiem),jb(b),db(b)}function mb(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&b<12&&(b+=12),d||12!==b||(b=0),b):b}function nb(a){var b,c,d,e,f;if(0===a._f.length)return n(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=q({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],lb(b),o(b)&&(f+=n(b).charsLeftOver,f+=10*n(b).unusedTokens.length,n(b).score=f,(null==d||f<d)&&(d=f,c=b));k(a,c||b)}function ob(a){if(!a._d){var b=L(a._i);a._a=i([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),jb(a)}}function pb(a){var b=new r(db(qb(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function qb(a){var b=a._i,d=a._f;return a._locale=a._locale||bb(a._l),null===b||void 0===d&&""===b?p({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),s(b)?new r(db(b)):(h(b)?a._d=b:c(d)?nb(a):d?lb(a):rb(a),o(a)||(a._d=null),a))}function rb(b){var e=b._i;f(e)?b._d=new Date(a.now()):h(e)?b._d=new Date(e.valueOf()):"string"==typeof e?gb(b):c(e)?(b._a=i(e.slice(0),function(a){return parseInt(a,10)}),jb(b)):d(e)?ob(b):g(e)?b._d=new Date(e):a.createFromInputFallback(b)}function sb(a,b,f,g,h){var i={};return f!==!0&&f!==!1||(g=f,f=void 0),(d(a)&&e(a)||c(a)&&0===a.length)&&(a=void 0),i._isAMomentObject=!0,i._useUTC=i._isUTC=h,i._l=f,i._i=a,i._f=b,i._strict=g,pb(i)}function tb(a,b,c,d){return sb(a,b,c,d,!1)}function ub(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return tb();for(d=b[0],e=1;e<b.length;++e)b[e].isValid()&&!b[e][a](d)||(d=b[e]);return d}function vb(){var a=[].slice.call(arguments,0);return ub("isBefore",a)}function wb(){var a=[].slice.call(arguments,0);return ub("isAfter",a)}function xb(a){for(var b in a)if(Re.indexOf(b)===-1||null!=a[b]&&isNaN(a[b]))return!1;for(var c=!1,d=0;d<Re.length;++d)if(a[Re[d]]){if(c)return!1;parseFloat(a[Re[d]])!==u(a[Re[d]])&&(c=!0)}return!0}function yb(){return this._isValid}function zb(){return Sb(NaN)}function Ab(a){var b=L(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._isValid=xb(b),this._milliseconds=+k+1e3*j+6e4*i+1e3*h*60*60,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=bb(),this._bubble()}function Bb(a){return a instanceof Ab}function Cb(a){return a<0?Math.round(-1*a)*-1:Math.round(a)}function Db(a,b){U(a,0,0,function(){var a=this.utcOffset(),c="+";return a<0&&(a=-a,c="-"),c+T(~~(a/60),2)+b+T(~~a%60,2)})}function Eb(a,b){var c=(b||"").match(a);if(null===c)return null;var d=c[c.length-1]||[],e=(d+"").match(Se)||["-",0,0],f=+(60*e[1])+u(e[2]);return 0===f?0:"+"===e[0]?f:-f}function Fb(b,c){var d,e;return c._isUTC?(d=c.clone(),e=(s(b)||h(b)?b.valueOf():tb(b).valueOf())-d.valueOf(),d._d.setTime(d._d.valueOf()+e),a.updateOffset(d,!1),d):tb(b).local()}function Gb(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Hb(b,c,d){var e,f=this._offset||0;if(!this.isValid())return null!=b?this:NaN;if(null!=b){if("string"==typeof b){if(b=Eb(_d,b),null===b)return this}else Math.abs(b)<16&&!d&&(b=60*b);return!this._isUTC&&c&&(e=Gb(this)),this._offset=b,this._isUTC=!0,null!=e&&this.add(e,"m"),f!==b&&(!c||this._changeInProgress?Xb(this,Sb(b-f,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?f:Gb(this)}function Ib(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Jb(a){return this.utcOffset(0,a)}function Kb(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Gb(this),"m")),this}function Lb(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var a=Eb($d,this._i);null!=a?this.utcOffset(a):this.utcOffset(0,!0)}return this}function Mb(a){return!!this.isValid()&&(a=a?tb(a).utcOffset():0,(this.utcOffset()-a)%60===0)}function Nb(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ob(){if(!f(this._isDSTShifted))return this._isDSTShifted;var a={};if(q(a,this),a=qb(a),a._a){var b=a._isUTC?l(a._a):tb(a._a);this._isDSTShifted=this.isValid()&&v(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Pb(){return!!this.isValid()&&!this._isUTC}function Qb(){return!!this.isValid()&&this._isUTC}function Rb(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Sb(a,b){var c,d,e,f=a,h=null;return Bb(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:g(a)?(f={},b?f[b]=a:f.milliseconds=a):(h=Te.exec(a))?(c="-"===h[1]?-1:1,f={y:0,d:u(h[ge])*c,h:u(h[he])*c,m:u(h[ie])*c,s:u(h[je])*c,ms:u(Cb(1e3*h[ke]))*c}):(h=Ue.exec(a))?(c="-"===h[1]?-1:1,f={y:Tb(h[2],c),M:Tb(h[3],c),w:Tb(h[4],c),d:Tb(h[5],c),h:Tb(h[6],c),m:Tb(h[7],c),s:Tb(h[8],c)}):null==f?f={}:"object"==typeof f&&("from"in f||"to"in f)&&(e=Vb(tb(f.from),tb(f.to)),f={},f.ms=e.milliseconds,f.M=e.months),d=new Ab(f),Bb(a)&&j(a,"_locale")&&(d._locale=a._locale),d}function Tb(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function Ub(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function Vb(a,b){var c;return a.isValid()&&b.isValid()?(b=Fb(b,a),a.isBefore(b)?c=Ub(a,b):(c=Ub(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function Wb(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(y(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Sb(c,d),Xb(this,e,a),this}}function Xb(b,c,d,e){var f=c._milliseconds,g=Cb(c._days),h=Cb(c._months);b.isValid()&&(e=null==e||e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&Q(b,"Date",P(b,"Date")+g*d),h&&ja(b,P(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function Yb(a,b){var c=a.diff(b,"days",!0);return c<-6?"sameElse":c<-1?"lastWeek":c<0?"lastDay":c<1?"sameDay":c<2?"nextDay":c<7?"nextWeek":"sameElse"}function Zb(b,c){var d=b||tb(),e=Fb(d,this).startOf("day"),f=a.calendarFormat(this,e)||"sameElse",g=c&&(z(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,tb(d)))}function $b(){return new r(this)}function _b(a,b){var c=s(a)?a:tb(a);return!(!this.isValid()||!c.isValid())&&(b=K(f(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf())}function ac(a,b){var c=s(a)?a:tb(a);return!(!this.isValid()||!c.isValid())&&(b=K(f(b)?"millisecond":b),"millisecond"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf())}function bc(a,b,c,d){return d=d||"()",("("===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(")"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function cc(a,b){var c,d=s(a)?a:tb(a);return!(!this.isValid()||!d.isValid())&&(b=K(b||"millisecond"),"millisecond"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf()))}function dc(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function ec(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function fc(a,b,c){var d,e,f,g;return this.isValid()?(d=Fb(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=K(b),"year"===b||"month"===b||"quarter"===b?(g=gc(this,d),"quarter"===b?g/=3:"year"===b&&(g/=12)):(f=this-d,g="second"===b?f/1e3:"minute"===b?f/6e4:"hour"===b?f/36e5:"day"===b?(f-e)/864e5:"week"===b?(f-e)/6048e5:f),c?g:t(g)):NaN):NaN}function gc(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return b-f<0?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function hc(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function ic(){if(!this.isValid())return null;var a=this.clone().utc();return a.year()<0||a.year()>9999?X(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):z(Date.prototype.toISOString)?this.toDate().toISOString():X(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function jc(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var a="moment",b="";this.isLocal()||(a=0===this.utcOffset()?"moment.utc":"moment.parseZone",b="Z");var c="["+a+'("]',d=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",e="-MM-DD[T]HH:mm:ss.SSS",f=b+'[")]';return this.format(c+d+e+f)}function kc(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=X(this,b);return this.localeData().postformat(c)}function lc(a,b){return this.isValid()&&(s(a)&&a.isValid()||tb(a).isValid())?Sb({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function mc(a){return this.from(tb(),a)}function nc(a,b){return this.isValid()&&(s(a)&&a.isValid()||tb(a).isValid())?Sb({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function oc(a){return this.to(tb(),a)}function pc(a){var b;return void 0===a?this._locale._abbr:(b=bb(a),null!=b&&(this._locale=b),this)}function qc(){return this._locale}function rc(a){switch(a=K(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function sc(a){return a=K(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function tc(){return this._d.valueOf()-6e4*(this._offset||0)}function uc(){return Math.floor(this.valueOf()/1e3)}function vc(){return new Date(this.valueOf())}function wc(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function xc(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function yc(){return this.isValid()?this.toISOString():null}function zc(){return o(this)}function Ac(){
|
278 |
-
return k({},n(this))}function Bc(){return n(this).overflow}function Cc(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Dc(a,b){U(0,[a,a.length],0,b)}function Ec(a){return Ic.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Fc(a){return Ic.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Gc(){return xa(this.year(),1,4)}function Hc(){var a=this.localeData()._week;return xa(this.year(),a.dow,a.doy)}function Ic(a,b,c,d,e){var f;return null==a?wa(this,d,e).year:(f=xa(a,d,e),b>f&&(b=f),Jc.call(this,a,b,c,d,e))}function Jc(a,b,c,d,e){var f=va(a,b,c,d,e),g=ta(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Kc(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Lc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function Mc(a,b){b[ke]=u(1e3*("0."+a))}function Nc(){return this._isUTC?"UTC":""}function Oc(){return this._isUTC?"Coordinated Universal Time":""}function Pc(a){return tb(1e3*a)}function Qc(){return tb.apply(null,arguments).parseZone()}function Rc(a){return a}function Sc(a,b,c,d){var e=bb(),f=l().set(d,b);return e[c](f,a)}function Tc(a,b,c){if(g(a)&&(b=a,a=void 0),a=a||"",null!=b)return Sc(a,b,c,"month");var d,e=[];for(d=0;d<12;d++)e[d]=Sc(a,d,c,"month");return e}function Uc(a,b,c,d){"boolean"==typeof a?(g(b)&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,g(b)&&(c=b,b=void 0),b=b||"");var e=bb(),f=a?e._week.dow:0;if(null!=c)return Sc(b,(c+f)%7,d,"day");var h,i=[];for(h=0;h<7;h++)i[h]=Sc(b,(h+f)%7,d,"day");return i}function Vc(a,b){return Tc(a,b,"months")}function Wc(a,b){return Tc(a,b,"monthsShort")}function Xc(a,b,c){return Uc(a,b,c,"weekdays")}function Yc(a,b,c){return Uc(a,b,c,"weekdaysShort")}function Zc(a,b,c){return Uc(a,b,c,"weekdaysMin")}function $c(){var a=this._data;return this._milliseconds=df(this._milliseconds),this._days=df(this._days),this._months=df(this._months),a.milliseconds=df(a.milliseconds),a.seconds=df(a.seconds),a.minutes=df(a.minutes),a.hours=df(a.hours),a.months=df(a.months),a.years=df(a.years),this}function _c(a,b,c,d){var e=Sb(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function ad(a,b){return _c(this,a,b,1)}function bd(a,b){return _c(this,a,b,-1)}function cd(a){return a<0?Math.floor(a):Math.ceil(a)}function dd(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||f<=0&&g<=0&&h<=0||(f+=864e5*cd(fd(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=t(f/1e3),i.seconds=a%60,b=t(a/60),i.minutes=b%60,c=t(b/60),i.hours=c%24,g+=t(c/24),e=t(ed(g)),h+=e,g-=cd(fd(e)),d=t(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function ed(a){return 4800*a/146097}function fd(a){return 146097*a/4800}function gd(a){if(!this.isValid())return NaN;var b,c,d=this._milliseconds;if(a=K(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+ed(b),"month"===a?c:c/12;switch(b=this._days+Math.round(fd(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function hd(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*u(this._months/12):NaN}function id(a){return function(){return this.as(a)}}function jd(a){return a=K(a),this.isValid()?this[a+"s"]():NaN}function kd(a){return function(){return this.isValid()?this._data[a]:NaN}}function ld(){return t(this.days()/7)}function md(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function nd(a,b,c){var d=Sb(a).abs(),e=uf(d.as("s")),f=uf(d.as("m")),g=uf(d.as("h")),h=uf(d.as("d")),i=uf(d.as("M")),j=uf(d.as("y")),k=e<=vf.ss&&["s",e]||e<vf.s&&["ss",e]||f<=1&&["m"]||f<vf.m&&["mm",f]||g<=1&&["h"]||g<vf.h&&["hh",g]||h<=1&&["d"]||h<vf.d&&["dd",h]||i<=1&&["M"]||i<vf.M&&["MM",i]||j<=1&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,md.apply(null,k)}function od(a){return void 0===a?uf:"function"==typeof a&&(uf=a,!0)}function pd(a,b){return void 0!==vf[a]&&(void 0===b?vf[a]:(vf[a]=b,"s"===a&&(vf.ss=b-1),!0))}function qd(a){if(!this.isValid())return this.localeData().invalidDate();var b=this.localeData(),c=nd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function rd(){if(!this.isValid())return this.localeData().invalidDate();var a,b,c,d=wf(this._milliseconds)/1e3,e=wf(this._days),f=wf(this._months);a=t(d/60),b=t(a/60),d%=60,a%=60,c=t(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(m<0?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}var sd,td;td=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;d<c;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1};var ud=td,vd=a.momentProperties=[],wd=!1,xd={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var yd;yd=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)j(a,b)&&c.push(b);return c};var zd,Ad=yd,Bd={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Cd={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Dd="Invalid date",Ed="%d",Fd=/\d{1,2}/,Gd={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Hd={},Id={},Jd=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Kd=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ld={},Md={},Nd=/\d/,Od=/\d\d/,Pd=/\d{3}/,Qd=/\d{4}/,Rd=/[+-]?\d{6}/,Sd=/\d\d?/,Td=/\d\d\d\d?/,Ud=/\d\d\d\d\d\d?/,Vd=/\d{1,3}/,Wd=/\d{1,4}/,Xd=/[+-]?\d{1,6}/,Yd=/\d+/,Zd=/[+-]?\d+/,$d=/Z|[+-]\d\d:?\d\d/gi,_d=/Z|[+-]\d\d(?::?\d\d)?/gi,ae=/[+-]?\d+(\.\d{1,3})?/,be=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,ce={},de={},ee=0,fe=1,ge=2,he=3,ie=4,je=5,ke=6,le=7,me=8;zd=Array.prototype.indexOf?Array.prototype.indexOf:function(a){var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1};var ne=zd;U("M",["MM",2],"Mo",function(){return this.month()+1}),U("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),U("MMMM",0,0,function(a){return this.localeData().months(this,a)}),J("month","M"),M("month",8),Z("M",Sd),Z("MM",Sd,Od),Z("MMM",function(a,b){return b.monthsShortRegex(a)}),Z("MMMM",function(a,b){return b.monthsRegex(a)}),ba(["M","MM"],function(a,b){b[fe]=u(a)-1}),ba(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[fe]=e:n(c).invalidMonth=a});var oe=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,pe="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),qe="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),re=be,se=be;U("Y",0,0,function(){var a=this.year();return a<=9999?""+a:"+"+a}),U(0,["YY",2],0,function(){return this.year()%100}),U(0,["YYYY",4],0,"year"),U(0,["YYYYY",5],0,"year"),U(0,["YYYYYY",6,!0],0,"year"),J("year","y"),M("year",1),Z("Y",Zd),Z("YY",Sd,Od),Z("YYYY",Wd,Qd),Z("YYYYY",Xd,Rd),Z("YYYYYY",Xd,Rd),ba(["YYYYY","YYYYYY"],ee),ba("YYYY",function(b,c){c[ee]=2===b.length?a.parseTwoDigitYear(b):u(b)}),ba("YY",function(b,c){c[ee]=a.parseTwoDigitYear(b)}),ba("Y",function(a,b){b[ee]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return u(a)+(u(a)>68?1900:2e3)};var te=O("FullYear",!0);U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),J("week","w"),J("isoWeek","W"),M("week",5),M("isoWeek",5),Z("w",Sd),Z("ww",Sd,Od),Z("W",Sd),Z("WW",Sd,Od),ca(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=u(a)});var ue={dow:0,doy:6};U("d",0,"do","day"),U("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),U("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),U("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),J("day","d"),J("weekday","e"),J("isoWeekday","E"),M("day",11),M("weekday",11),M("isoWeekday",11),Z("d",Sd),Z("e",Sd),Z("E",Sd),Z("dd",function(a,b){return b.weekdaysMinRegex(a)}),Z("ddd",function(a,b){return b.weekdaysShortRegex(a)}),Z("dddd",function(a,b){return b.weekdaysRegex(a)}),ca(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:n(c).invalidWeekday=a}),ca(["d","e","E"],function(a,b,c,d){b[d]=u(a)});var ve="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),we="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),xe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ye=be,ze=be,Ae=be;U("H",["HH",2],0,"hour"),U("h",["hh",2],0,Ra),U("k",["kk",2],0,Sa),U("hmm",0,0,function(){return""+Ra.apply(this)+T(this.minutes(),2)}),U("hmmss",0,0,function(){return""+Ra.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+T(this.minutes(),2)}),U("Hmmss",0,0,function(){return""+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)}),Ta("a",!0),Ta("A",!1),J("hour","h"),M("hour",13),Z("a",Ua),Z("A",Ua),Z("H",Sd),Z("h",Sd),Z("k",Sd),Z("HH",Sd,Od),Z("hh",Sd,Od),Z("kk",Sd,Od),Z("hmm",Td),Z("hmmss",Ud),Z("Hmm",Td),Z("Hmmss",Ud),ba(["H","HH"],he),ba(["k","kk"],function(a,b,c){var d=u(a);b[he]=24===d?0:d}),ba(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),ba(["h","hh"],function(a,b,c){b[he]=u(a),n(c).bigHour=!0}),ba("hmm",function(a,b,c){var d=a.length-2;b[he]=u(a.substr(0,d)),b[ie]=u(a.substr(d)),n(c).bigHour=!0}),ba("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[he]=u(a.substr(0,d)),b[ie]=u(a.substr(d,2)),b[je]=u(a.substr(e)),n(c).bigHour=!0}),ba("Hmm",function(a,b,c){var d=a.length-2;b[he]=u(a.substr(0,d)),b[ie]=u(a.substr(d))}),ba("Hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[he]=u(a.substr(0,d)),b[ie]=u(a.substr(d,2)),b[je]=u(a.substr(e))});var Be,Ce=/[ap]\.?m?\.?/i,De=O("Hours",!0),Ee={calendar:Bd,longDateFormat:Cd,invalidDate:Dd,ordinal:Ed,dayOfMonthOrdinalParse:Fd,relativeTime:Gd,months:pe,monthsShort:qe,week:ue,weekdays:ve,weekdaysMin:xe,weekdaysShort:we,meridiemParse:Ce},Fe={},Ge={},He=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ie=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Je=/Z|[+-]\d\d(?::?\d\d)?/,Ke=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Le=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Me=/^\/?Date\((\-?\d+)/i,Ne=/^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/;a.createFromInputFallback=x("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),a.ISO_8601=function(){},a.RFC_2822=function(){};var Oe=x("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=tb.apply(null,arguments);return this.isValid()&&a.isValid()?a<this?this:a:p()}),Pe=x("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=tb.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:p()}),Qe=function(){return Date.now?Date.now():+new Date},Re=["year","quarter","month","week","day","hour","minute","second","millisecond"];Db("Z",":"),Db("ZZ",""),Z("Z",_d),Z("ZZ",_d),ba(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Eb(_d,a)});var Se=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var Te=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ue=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Sb.fn=Ab.prototype,Sb.invalid=zb;var Ve=Wb(1,"add"),We=Wb(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Xe=x("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});U(0,["gg",2],0,function(){return this.weekYear()%100}),U(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Dc("gggg","weekYear"),Dc("ggggg","weekYear"),Dc("GGGG","isoWeekYear"),Dc("GGGGG","isoWeekYear"),J("weekYear","gg"),J("isoWeekYear","GG"),M("weekYear",1),M("isoWeekYear",1),Z("G",Zd),Z("g",Zd),Z("GG",Sd,Od),Z("gg",Sd,Od),Z("GGGG",Wd,Qd),Z("gggg",Wd,Qd),Z("GGGGG",Xd,Rd),Z("ggggg",Xd,Rd),ca(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=u(a)}),ca(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),U("Q",0,"Qo","quarter"),J("quarter","Q"),M("quarter",7),Z("Q",Nd),ba("Q",function(a,b){b[fe]=3*(u(a)-1)}),U("D",["DD",2],"Do","date"),J("date","D"),M("date",9),Z("D",Sd),Z("DD",Sd,Od),Z("Do",function(a,b){return a?b._dayOfMonthOrdinalParse||b._ordinalParse:b._dayOfMonthOrdinalParseLenient}),ba(["D","DD"],ge),ba("Do",function(a,b){b[ge]=u(a.match(Sd)[0],10)});var Ye=O("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),J("dayOfYear","DDD"),M("dayOfYear",4),Z("DDD",Vd),Z("DDDD",Pd),ba(["DDD","DDDD"],function(a,b,c){c._dayOfYear=u(a)}),U("m",["mm",2],0,"minute"),J("minute","m"),M("minute",14),Z("m",Sd),Z("mm",Sd,Od),ba(["m","mm"],ie);var Ze=O("Minutes",!1);U("s",["ss",2],0,"second"),J("second","s"),M("second",15),Z("s",Sd),Z("ss",Sd,Od),ba(["s","ss"],je);var $e=O("Seconds",!1);U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return 10*this.millisecond()}),U(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),U(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),U(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),U(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),U(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),J("millisecond","ms"),M("millisecond",16),Z("S",Vd,Nd),Z("SS",Vd,Od),Z("SSS",Vd,Pd);var _e;for(_e="SSSS";_e.length<=9;_e+="S")Z(_e,Yd);for(_e="S";_e.length<=9;_e+="S")ba(_e,Mc);var af=O("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var bf=r.prototype;bf.add=Ve,bf.calendar=Zb,bf.clone=$b,bf.diff=fc,bf.endOf=sc,bf.format=kc,bf.from=lc,bf.fromNow=mc,bf.to=nc,bf.toNow=oc,bf.get=R,bf.invalidAt=Bc,bf.isAfter=_b,bf.isBefore=ac,bf.isBetween=bc,bf.isSame=cc,bf.isSameOrAfter=dc,bf.isSameOrBefore=ec,bf.isValid=zc,bf.lang=Xe,bf.locale=pc,bf.localeData=qc,bf.max=Pe,bf.min=Oe,bf.parsingFlags=Ac,bf.set=S,bf.startOf=rc,bf.subtract=We,bf.toArray=wc,bf.toObject=xc,bf.toDate=vc,bf.toISOString=ic,bf.inspect=jc,bf.toJSON=yc,bf.toString=hc,bf.unix=uc,bf.valueOf=tc,bf.creationData=Cc,bf.year=te,bf.isLeapYear=ra,bf.weekYear=Ec,bf.isoWeekYear=Fc,bf.quarter=bf.quarters=Kc,bf.month=ka,bf.daysInMonth=la,bf.week=bf.weeks=Ba,bf.isoWeek=bf.isoWeeks=Ca,bf.weeksInYear=Hc,bf.isoWeeksInYear=Gc,bf.date=Ye,bf.day=bf.days=Ka,bf.weekday=La,bf.isoWeekday=Ma,bf.dayOfYear=Lc,bf.hour=bf.hours=De,bf.minute=bf.minutes=Ze,bf.second=bf.seconds=$e,bf.millisecond=bf.milliseconds=af,bf.utcOffset=Hb,bf.utc=Jb,bf.local=Kb,bf.parseZone=Lb,bf.hasAlignedHourOffset=Mb,bf.isDST=Nb,bf.isLocal=Pb,bf.isUtcOffset=Qb,bf.isUtc=Rb,bf.isUTC=Rb,bf.zoneAbbr=Nc,bf.zoneName=Oc,bf.dates=x("dates accessor is deprecated. Use date instead.",Ye),bf.months=x("months accessor is deprecated. Use month instead",ka),bf.years=x("years accessor is deprecated. Use year instead",te),bf.zone=x("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Ib),bf.isDSTShifted=x("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ob);var cf=C.prototype;cf.calendar=D,cf.longDateFormat=E,cf.invalidDate=F,cf.ordinal=G,cf.preparse=Rc,cf.postformat=Rc,cf.relativeTime=H,cf.pastFuture=I,cf.set=A,cf.months=fa,cf.monthsShort=ga,cf.monthsParse=ia,cf.monthsRegex=na,cf.monthsShortRegex=ma,cf.week=ya,cf.firstDayOfYear=Aa,cf.firstDayOfWeek=za,cf.weekdays=Fa,cf.weekdaysMin=Ha,cf.weekdaysShort=Ga,cf.weekdaysParse=Ja,cf.weekdaysRegex=Na,cf.weekdaysShortRegex=Oa,cf.weekdaysMinRegex=Pa,cf.isPM=Va,cf.meridiem=Wa,$a("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===u(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=x("moment.lang is deprecated. Use moment.locale instead.",$a),a.langData=x("moment.langData is deprecated. Use moment.localeData instead.",bb);var df=Math.abs,ef=id("ms"),ff=id("s"),gf=id("m"),hf=id("h"),jf=id("d"),kf=id("w"),lf=id("M"),mf=id("y"),nf=kd("milliseconds"),of=kd("seconds"),pf=kd("minutes"),qf=kd("hours"),rf=kd("days"),sf=kd("months"),tf=kd("years"),uf=Math.round,vf={ss:44,s:45,m:45,h:22,d:26,M:11},wf=Math.abs,xf=Ab.prototype;return xf.isValid=yb,xf.abs=$c,xf.add=ad,xf.subtract=bd,xf.as=gd,xf.asMilliseconds=ef,xf.asSeconds=ff,xf.asMinutes=gf,xf.asHours=hf,xf.asDays=jf,xf.asWeeks=kf,xf.asMonths=lf,xf.asYears=mf,xf.valueOf=hd,xf._bubble=dd,xf.get=jd,xf.milliseconds=nf,xf.seconds=of,xf.minutes=pf,xf.hours=qf,xf.days=rf,xf.weeks=ld,xf.months=sf,xf.years=tf,xf.humanize=qd,xf.toISOString=rd,xf.toString=rd,xf.toJSON=rd,xf.locale=pc,xf.localeData=qc,xf.toIsoString=x("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",rd),xf.lang=Xe,U("X",0,0,"unix"),U("x",0,0,"valueOf"),Z("x",Zd),Z("X",ae),ba("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),ba("x",function(a,b,c){c._d=new Date(u(a))}),a.version="2.18.1",b(tb),a.fn=bf,a.min=vb,a.max=wb,a.now=Qe,a.utc=l,a.unix=Pc,a.months=Vc,a.isDate=h,a.locale=$a,a.invalid=p,a.duration=Sb,a.isMoment=s,a.weekdays=Xc,a.parseZone=Qc,a.localeData=bb,a.isDuration=Bb,a.monthsShort=Wc,a.weekdaysMin=Zc,a.defineLocale=_a,a.updateLocale=ab,a.locales=cb,a.weekdaysShort=Yc,a.normalizeUnits=K,a.relativeTimeRounding=od,a.relativeTimeThreshold=pd,a.calendarFormat=Yb,a.prototype=bf,a});
|
279 |
|
|
|
|
|
|
|
|
|
|
|
280 |
|
|
|
281 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
282 |
|
|
|
283 |
|
284 |
-
/*!
|
285 |
-
FullCalendar Core Package v4.3.1
|
286 |
-
Docs & License: https://fullcalendar.io/
|
287 |
-
(c) 2019 Adam Shaw
|
288 |
-
*/
|
289 |
|
290 |
-
(function (global, factory) {
|
291 |
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
292 |
-
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
293 |
-
(global = global || self, factory(global.FullCalendar = {}));
|
294 |
-
}(this, function (exports) { 'use strict';
|
295 |
|
296 |
-
|
297 |
-
// ----------------------------------------------------------------------------------------------------------------
|
298 |
-
var elementPropHash = {
|
299 |
-
className: true,
|
300 |
-
colSpan: true,
|
301 |
-
rowSpan: true
|
302 |
-
};
|
303 |
-
var containerTagHash = {
|
304 |
-
'<tr': 'tbody',
|
305 |
-
'<td': 'tr'
|
306 |
-
};
|
307 |
-
function createElement(tagName, attrs, content) {
|
308 |
-
var el = document.createElement(tagName);
|
309 |
-
if (attrs) {
|
310 |
-
for (var attrName in attrs) {
|
311 |
-
if (attrName === 'style') {
|
312 |
-
applyStyle(el, attrs[attrName]);
|
313 |
-
}
|
314 |
-
else if (elementPropHash[attrName]) {
|
315 |
-
el[attrName] = attrs[attrName];
|
316 |
-
}
|
317 |
-
else {
|
318 |
-
el.setAttribute(attrName, attrs[attrName]);
|
319 |
-
}
|
320 |
-
}
|
321 |
-
}
|
322 |
-
if (typeof content === 'string') {
|
323 |
-
el.innerHTML = content; // shortcut. no need to process HTML in any way
|
324 |
-
}
|
325 |
-
else if (content != null) {
|
326 |
-
appendToElement(el, content);
|
327 |
-
}
|
328 |
-
return el;
|
329 |
-
}
|
330 |
-
function htmlToElement(html) {
|
331 |
-
html = html.trim();
|
332 |
-
var container = document.createElement(computeContainerTag(html));
|
333 |
-
container.innerHTML = html;
|
334 |
-
return container.firstChild;
|
335 |
-
}
|
336 |
-
function htmlToElements(html) {
|
337 |
-
return Array.prototype.slice.call(htmlToNodeList(html));
|
338 |
-
}
|
339 |
-
function htmlToNodeList(html) {
|
340 |
-
html = html.trim();
|
341 |
-
var container = document.createElement(computeContainerTag(html));
|
342 |
-
container.innerHTML = html;
|
343 |
-
return container.childNodes;
|
344 |
-
}
|
345 |
-
// assumes html already trimmed and tag names are lowercase
|
346 |
-
function computeContainerTag(html) {
|
347 |
-
return containerTagHash[html.substr(0, 3) // faster than using regex
|
348 |
-
] || 'div';
|
349 |
-
}
|
350 |
-
function appendToElement(el, content) {
|
351 |
-
var childNodes = normalizeContent(content);
|
352 |
-
for (var i = 0; i < childNodes.length; i++) {
|
353 |
-
el.appendChild(childNodes[i]);
|
354 |
-
}
|
355 |
-
}
|
356 |
-
function prependToElement(parent, content) {
|
357 |
-
var newEls = normalizeContent(content);
|
358 |
-
var afterEl = parent.firstChild || null; // if no firstChild, will append to end, but that's okay, b/c there were no children
|
359 |
-
for (var i = 0; i < newEls.length; i++) {
|
360 |
-
parent.insertBefore(newEls[i], afterEl);
|
361 |
-
}
|
362 |
-
}
|
363 |
-
function insertAfterElement(refEl, content) {
|
364 |
-
var newEls = normalizeContent(content);
|
365 |
-
var afterEl = refEl.nextSibling || null;
|
366 |
-
for (var i = 0; i < newEls.length; i++) {
|
367 |
-
refEl.parentNode.insertBefore(newEls[i], afterEl);
|
368 |
-
}
|
369 |
-
}
|
370 |
-
function normalizeContent(content) {
|
371 |
-
var els;
|
372 |
-
if (typeof content === 'string') {
|
373 |
-
els = htmlToElements(content);
|
374 |
-
}
|
375 |
-
else if (content instanceof Node) {
|
376 |
-
els = [content];
|
377 |
-
}
|
378 |
-
else { // Node[] or NodeList
|
379 |
-
els = Array.prototype.slice.call(content);
|
380 |
-
}
|
381 |
-
return els;
|
382 |
-
}
|
383 |
-
function removeElement(el) {
|
384 |
-
if (el.parentNode) {
|
385 |
-
el.parentNode.removeChild(el);
|
386 |
-
}
|
387 |
-
}
|
388 |
-
// Querying
|
389 |
-
// ----------------------------------------------------------------------------------------------------------------
|
390 |
-
// from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
|
391 |
-
var matchesMethod = Element.prototype.matches ||
|
392 |
-
Element.prototype.matchesSelector ||
|
393 |
-
Element.prototype.msMatchesSelector;
|
394 |
-
var closestMethod = Element.prototype.closest || function (selector) {
|
395 |
-
// polyfill
|
396 |
-
var el = this;
|
397 |
-
if (!document.documentElement.contains(el)) {
|
398 |
-
return null;
|
399 |
-
}
|
400 |
-
do {
|
401 |
-
if (elementMatches(el, selector)) {
|
402 |
-
return el;
|
403 |
-
}
|
404 |
-
el = el.parentElement || el.parentNode;
|
405 |
-
} while (el !== null && el.nodeType === 1);
|
406 |
-
return null;
|
407 |
-
};
|
408 |
-
function elementClosest(el, selector) {
|
409 |
-
return closestMethod.call(el, selector);
|
410 |
-
}
|
411 |
-
function elementMatches(el, selector) {
|
412 |
-
return matchesMethod.call(el, selector);
|
413 |
-
}
|
414 |
-
// accepts multiple subject els
|
415 |
-
// returns a real array. good for methods like forEach
|
416 |
-
function findElements(container, selector) {
|
417 |
-
var containers = container instanceof HTMLElement ? [container] : container;
|
418 |
-
var allMatches = [];
|
419 |
-
for (var i = 0; i < containers.length; i++) {
|
420 |
-
var matches = containers[i].querySelectorAll(selector);
|
421 |
-
for (var j = 0; j < matches.length; j++) {
|
422 |
-
allMatches.push(matches[j]);
|
423 |
-
}
|
424 |
-
}
|
425 |
-
return allMatches;
|
426 |
-
}
|
427 |
-
// accepts multiple subject els
|
428 |
-
// only queries direct child elements
|
429 |
-
function findChildren(parent, selector) {
|
430 |
-
var parents = parent instanceof HTMLElement ? [parent] : parent;
|
431 |
-
var allMatches = [];
|
432 |
-
for (var i = 0; i < parents.length; i++) {
|
433 |
-
var childNodes = parents[i].children; // only ever elements
|
434 |
-
for (var j = 0; j < childNodes.length; j++) {
|
435 |
-
var childNode = childNodes[j];
|
436 |
-
if (!selector || elementMatches(childNode, selector)) {
|
437 |
-
allMatches.push(childNode);
|
438 |
-
}
|
439 |
-
}
|
440 |
-
}
|
441 |
-
return allMatches;
|
442 |
-
}
|
443 |
-
// Attributes
|
444 |
-
// ----------------------------------------------------------------------------------------------------------------
|
445 |
-
function forceClassName(el, className, bool) {
|
446 |
-
if (bool) {
|
447 |
-
el.classList.add(className);
|
448 |
-
}
|
449 |
-
else {
|
450 |
-
el.classList.remove(className);
|
451 |
-
}
|
452 |
-
}
|
453 |
-
// Style
|
454 |
-
// ----------------------------------------------------------------------------------------------------------------
|
455 |
-
var PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;
|
456 |
-
function applyStyle(el, props) {
|
457 |
-
for (var propName in props) {
|
458 |
-
applyStyleProp(el, propName, props[propName]);
|
459 |
-
}
|
460 |
-
}
|
461 |
-
function applyStyleProp(el, name, val) {
|
462 |
-
if (val == null) {
|
463 |
-
el.style[name] = '';
|
464 |
-
}
|
465 |
-
else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {
|
466 |
-
el.style[name] = val + 'px';
|
467 |
-
}
|
468 |
-
else {
|
469 |
-
el.style[name] = val;
|
470 |
-
}
|
471 |
-
}
|
472 |
|
473 |
-
|
474 |
-
return point.left >= rect.left &&
|
475 |
-
point.left < rect.right &&
|
476 |
-
point.top >= rect.top &&
|
477 |
-
point.top < rect.bottom;
|
478 |
-
}
|
479 |
-
// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false
|
480 |
-
function intersectRects(rect1, rect2) {
|
481 |
-
var res = {
|
482 |
-
left: Math.max(rect1.left, rect2.left),
|
483 |
-
right: Math.min(rect1.right, rect2.right),
|
484 |
-
top: Math.max(rect1.top, rect2.top),
|
485 |
-
bottom: Math.min(rect1.bottom, rect2.bottom)
|
486 |
-
};
|
487 |
-
if (res.left < res.right && res.top < res.bottom) {
|
488 |
-
return res;
|
489 |
-
}
|
490 |
-
return false;
|
491 |
-
}
|
492 |
-
function translateRect(rect, deltaX, deltaY) {
|
493 |
-
return {
|
494 |
-
left: rect.left + deltaX,
|
495 |
-
right: rect.right + deltaX,
|
496 |
-
top: rect.top + deltaY,
|
497 |
-
bottom: rect.bottom + deltaY
|
498 |
-
};
|
499 |
-
}
|
500 |
-
// Returns a new point that will have been moved to reside within the given rectangle
|
501 |
-
function constrainPoint(point, rect) {
|
502 |
-
return {
|
503 |
-
left: Math.min(Math.max(point.left, rect.left), rect.right),
|
504 |
-
top: Math.min(Math.max(point.top, rect.top), rect.bottom)
|
505 |
-
};
|
506 |
-
}
|
507 |
-
// Returns a point that is the center of the given rectangle
|
508 |
-
function getRectCenter(rect) {
|
509 |
-
return {
|
510 |
-
left: (rect.left + rect.right) / 2,
|
511 |
-
top: (rect.top + rect.bottom) / 2
|
512 |
-
};
|
513 |
-
}
|
514 |
-
// Subtracts point2's coordinates from point1's coordinates, returning a delta
|
515 |
-
function diffPoints(point1, point2) {
|
516 |
-
return {
|
517 |
-
left: point1.left - point2.left,
|
518 |
-
top: point1.top - point2.top
|
519 |
-
};
|
520 |
-
}
|
521 |
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
top: -1000,
|
535 |
-
left: 0,
|
536 |
-
border: 0,
|
537 |
-
padding: 0,
|
538 |
-
overflow: 'scroll',
|
539 |
-
direction: 'rtl'
|
540 |
-
}
|
541 |
-
}, '<div></div>');
|
542 |
-
document.body.appendChild(outerEl);
|
543 |
-
var innerEl = outerEl.firstChild;
|
544 |
-
var res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;
|
545 |
-
removeElement(outerEl);
|
546 |
-
return res;
|
547 |
-
}
|
548 |
-
// The scrollbar width computations in computeEdges are sometimes flawed when it comes to
|
549 |
-
// retina displays, rounding, and IE11. Massage them into a usable value.
|
550 |
-
function sanitizeScrollbarWidth(width) {
|
551 |
-
width = Math.max(0, width); // no negatives
|
552 |
-
width = Math.round(width);
|
553 |
-
return width;
|
554 |
-
}
|
555 |
|
556 |
-
|
557 |
-
|
558 |
-
var computedStyle = window.getComputedStyle(el);
|
559 |
-
var borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;
|
560 |
-
var borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0;
|
561 |
-
var borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0;
|
562 |
-
var borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;
|
563 |
-
// must use offset(Width|Height) because compatible with client(Width|Height)
|
564 |
-
var scrollbarLeftRight = sanitizeScrollbarWidth(el.offsetWidth - el.clientWidth - borderLeft - borderRight);
|
565 |
-
var scrollbarBottom = sanitizeScrollbarWidth(el.offsetHeight - el.clientHeight - borderTop - borderBottom);
|
566 |
-
var res = {
|
567 |
-
borderLeft: borderLeft,
|
568 |
-
borderRight: borderRight,
|
569 |
-
borderTop: borderTop,
|
570 |
-
borderBottom: borderBottom,
|
571 |
-
scrollbarBottom: scrollbarBottom,
|
572 |
-
scrollbarLeft: 0,
|
573 |
-
scrollbarRight: 0
|
574 |
-
};
|
575 |
-
if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side?
|
576 |
-
res.scrollbarLeft = scrollbarLeftRight;
|
577 |
-
}
|
578 |
-
else {
|
579 |
-
res.scrollbarRight = scrollbarLeftRight;
|
580 |
-
}
|
581 |
-
if (getPadding) {
|
582 |
-
res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;
|
583 |
-
res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;
|
584 |
-
res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;
|
585 |
-
res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;
|
586 |
-
}
|
587 |
-
return res;
|
588 |
-
}
|
589 |
-
function computeInnerRect(el, goWithinPadding) {
|
590 |
-
if (goWithinPadding === void 0) { goWithinPadding = false; }
|
591 |
-
var outerRect = computeRect(el);
|
592 |
-
var edges = computeEdges(el, goWithinPadding);
|
593 |
-
var res = {
|
594 |
-
left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,
|
595 |
-
right: outerRect.right - edges.borderRight - edges.scrollbarRight,
|
596 |
-
top: outerRect.top + edges.borderTop,
|
597 |
-
bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom
|
598 |
-
};
|
599 |
-
if (goWithinPadding) {
|
600 |
-
res.left += edges.paddingLeft;
|
601 |
-
res.right -= edges.paddingRight;
|
602 |
-
res.top += edges.paddingTop;
|
603 |
-
res.bottom -= edges.paddingBottom;
|
604 |
-
}
|
605 |
-
return res;
|
606 |
-
}
|
607 |
-
function computeRect(el) {
|
608 |
-
var rect = el.getBoundingClientRect();
|
609 |
-
return {
|
610 |
-
left: rect.left + window.pageXOffset,
|
611 |
-
top: rect.top + window.pageYOffset,
|
612 |
-
right: rect.right + window.pageXOffset,
|
613 |
-
bottom: rect.bottom + window.pageYOffset
|
614 |
-
};
|
615 |
-
}
|
616 |
-
function computeViewportRect() {
|
617 |
-
return {
|
618 |
-
left: window.pageXOffset,
|
619 |
-
right: window.pageXOffset + document.documentElement.clientWidth,
|
620 |
-
top: window.pageYOffset,
|
621 |
-
bottom: window.pageYOffset + document.documentElement.clientHeight
|
622 |
-
};
|
623 |
-
}
|
624 |
-
function computeHeightAndMargins(el) {
|
625 |
-
return el.getBoundingClientRect().height + computeVMargins(el);
|
626 |
-
}
|
627 |
-
function computeVMargins(el) {
|
628 |
-
var computed = window.getComputedStyle(el);
|
629 |
-
return parseInt(computed.marginTop, 10) +
|
630 |
-
parseInt(computed.marginBottom, 10);
|
631 |
-
}
|
632 |
-
// does not return window
|
633 |
-
function getClippingParents(el) {
|
634 |
-
var parents = [];
|
635 |
-
while (el instanceof HTMLElement) { // will stop when gets to document or null
|
636 |
-
var computedStyle = window.getComputedStyle(el);
|
637 |
-
if (computedStyle.position === 'fixed') {
|
638 |
-
break;
|
639 |
-
}
|
640 |
-
if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {
|
641 |
-
parents.push(el);
|
642 |
-
}
|
643 |
-
el = el.parentNode;
|
644 |
-
}
|
645 |
-
return parents;
|
646 |
-
}
|
647 |
-
function computeClippingRect(el) {
|
648 |
-
return getClippingParents(el)
|
649 |
-
.map(function (el) {
|
650 |
-
return computeInnerRect(el);
|
651 |
-
})
|
652 |
-
.concat(computeViewportRect())
|
653 |
-
.reduce(function (rect0, rect1) {
|
654 |
-
return intersectRects(rect0, rect1) || rect1; // should always intersect
|
655 |
-
});
|
656 |
-
}
|
657 |
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
container.addEventListener(eventType, realHandler);
|
672 |
-
return function () {
|
673 |
-
container.removeEventListener(eventType, realHandler);
|
674 |
-
};
|
675 |
-
}
|
676 |
-
function listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {
|
677 |
-
var currentMatchedChild;
|
678 |
-
return listenBySelector(container, 'mouseover', selector, function (ev, matchedChild) {
|
679 |
-
if (matchedChild !== currentMatchedChild) {
|
680 |
-
currentMatchedChild = matchedChild;
|
681 |
-
onMouseEnter(ev, matchedChild);
|
682 |
-
var realOnMouseLeave_1 = function (ev) {
|
683 |
-
currentMatchedChild = null;
|
684 |
-
onMouseLeave(ev, matchedChild);
|
685 |
-
matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1);
|
686 |
-
};
|
687 |
-
// listen to the next mouseleave, and then unattach
|
688 |
-
matchedChild.addEventListener('mouseleave', realOnMouseLeave_1);
|
689 |
-
}
|
690 |
-
});
|
691 |
-
}
|
692 |
-
// Animation
|
693 |
-
// ----------------------------------------------------------------------------------------------------------------
|
694 |
-
var transitionEventNames = [
|
695 |
-
'webkitTransitionEnd',
|
696 |
-
'otransitionend',
|
697 |
-
'oTransitionEnd',
|
698 |
-
'msTransitionEnd',
|
699 |
-
'transitionend'
|
700 |
-
];
|
701 |
-
// triggered only when the next single subsequent transition finishes
|
702 |
-
function whenTransitionDone(el, callback) {
|
703 |
-
var realCallback = function (ev) {
|
704 |
-
callback(ev);
|
705 |
-
transitionEventNames.forEach(function (eventName) {
|
706 |
-
el.removeEventListener(eventName, realCallback);
|
707 |
-
});
|
708 |
-
};
|
709 |
-
transitionEventNames.forEach(function (eventName) {
|
710 |
-
el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes
|
711 |
-
});
|
712 |
-
}
|
713 |
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
743 |
}
|
744 |
-
|
745 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
746 |
}
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
756 |
}
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
764 |
}
|
765 |
-
|
766 |
-
|
767 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
768 |
}
|
769 |
-
|
770 |
-
}
|
771 |
-
// Start-Of
|
772 |
-
function startOfDay(m) {
|
773 |
-
return arrayToUtcDate([
|
774 |
-
m.getUTCFullYear(),
|
775 |
-
m.getUTCMonth(),
|
776 |
-
m.getUTCDate()
|
777 |
-
]);
|
778 |
-
}
|
779 |
-
function startOfHour(m) {
|
780 |
-
return arrayToUtcDate([
|
781 |
-
m.getUTCFullYear(),
|
782 |
-
m.getUTCMonth(),
|
783 |
-
m.getUTCDate(),
|
784 |
-
m.getUTCHours()
|
785 |
-
]);
|
786 |
-
}
|
787 |
-
function startOfMinute(m) {
|
788 |
-
return arrayToUtcDate([
|
789 |
-
m.getUTCFullYear(),
|
790 |
-
m.getUTCMonth(),
|
791 |
-
m.getUTCDate(),
|
792 |
-
m.getUTCHours(),
|
793 |
-
m.getUTCMinutes()
|
794 |
-
]);
|
795 |
-
}
|
796 |
-
function startOfSecond(m) {
|
797 |
-
return arrayToUtcDate([
|
798 |
-
m.getUTCFullYear(),
|
799 |
-
m.getUTCMonth(),
|
800 |
-
m.getUTCDate(),
|
801 |
-
m.getUTCHours(),
|
802 |
-
m.getUTCMinutes(),
|
803 |
-
m.getUTCSeconds()
|
804 |
-
]);
|
805 |
-
}
|
806 |
-
// Week Computation
|
807 |
-
function weekOfYear(marker, dow, doy) {
|
808 |
-
var y = marker.getUTCFullYear();
|
809 |
-
var w = weekOfGivenYear(marker, y, dow, doy);
|
810 |
-
if (w < 1) {
|
811 |
-
return weekOfGivenYear(marker, y - 1, dow, doy);
|
812 |
-
}
|
813 |
-
var nextW = weekOfGivenYear(marker, y + 1, dow, doy);
|
814 |
-
if (nextW >= 1) {
|
815 |
-
return Math.min(w, nextW);
|
816 |
-
}
|
817 |
-
return w;
|
818 |
-
}
|
819 |
-
function weekOfGivenYear(marker, year, dow, doy) {
|
820 |
-
var firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]);
|
821 |
-
var dayStart = startOfDay(marker);
|
822 |
-
var days = Math.round(diffDays(firstWeekStart, dayStart));
|
823 |
-
return Math.floor(days / 7) + 1; // zero-indexed
|
824 |
-
}
|
825 |
-
// start-of-first-week - start-of-year
|
826 |
-
function firstWeekOffset(year, dow, doy) {
|
827 |
-
// first-week day -- which january is always in the first week (4 for iso, 1 for other)
|
828 |
-
var fwd = 7 + dow - doy;
|
829 |
-
// first-week day local weekday -- which local weekday is fwd
|
830 |
-
var fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;
|
831 |
-
return -fwdlw + fwd - 1;
|
832 |
-
}
|
833 |
-
// Array Conversion
|
834 |
-
function dateToLocalArray(date) {
|
835 |
-
return [
|
836 |
-
date.getFullYear(),
|
837 |
-
date.getMonth(),
|
838 |
-
date.getDate(),
|
839 |
-
date.getHours(),
|
840 |
-
date.getMinutes(),
|
841 |
-
date.getSeconds(),
|
842 |
-
date.getMilliseconds()
|
843 |
-
];
|
844 |
-
}
|
845 |
-
function arrayToLocalDate(a) {
|
846 |
-
return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month
|
847 |
-
a[3] || 0, a[4] || 0, a[5] || 0);
|
848 |
-
}
|
849 |
-
function dateToUtcArray(date) {
|
850 |
-
return [
|
851 |
-
date.getUTCFullYear(),
|
852 |
-
date.getUTCMonth(),
|
853 |
-
date.getUTCDate(),
|
854 |
-
date.getUTCHours(),
|
855 |
-
date.getUTCMinutes(),
|
856 |
-
date.getUTCSeconds(),
|
857 |
-
date.getUTCMilliseconds()
|
858 |
-
];
|
859 |
-
}
|
860 |
-
function arrayToUtcDate(a) {
|
861 |
-
// according to web standards (and Safari), a month index is required.
|
862 |
-
// massage if only given a year.
|
863 |
-
if (a.length === 1) {
|
864 |
-
a = a.concat([0]);
|
865 |
-
}
|
866 |
-
return new Date(Date.UTC.apply(Date, a));
|
867 |
-
}
|
868 |
-
// Other Utils
|
869 |
-
function isValidDate(m) {
|
870 |
-
return !isNaN(m.valueOf());
|
871 |
-
}
|
872 |
-
function timeAsMs(m) {
|
873 |
-
return m.getUTCHours() * 1000 * 60 * 60 +
|
874 |
-
m.getUTCMinutes() * 1000 * 60 +
|
875 |
-
m.getUTCSeconds() * 1000 +
|
876 |
-
m.getUTCMilliseconds();
|
877 |
-
}
|
878 |
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
if (
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
}
|
896 |
-
}
|
897 |
-
function parseString(s) {
|
898 |
-
var m = PARSE_RE.exec(s);
|
899 |
-
if (m) {
|
900 |
-
var sign = m[1] ? -1 : 1;
|
901 |
-
return {
|
902 |
-
years: 0,
|
903 |
-
months: 0,
|
904 |
-
days: sign * (m[2] ? parseInt(m[2], 10) : 0),
|
905 |
-
milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours
|
906 |
-
(m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes
|
907 |
-
(m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds
|
908 |
-
(m[6] ? parseInt(m[6], 10) : 0) // ms
|
909 |
-
)
|
910 |
-
};
|
911 |
}
|
912 |
-
|
913 |
-
|
914 |
-
function normalizeObject(obj) {
|
915 |
-
return {
|
916 |
-
years: obj.years || obj.year || 0,
|
917 |
-
months: obj.months || obj.month || 0,
|
918 |
-
days: (obj.days || obj.day || 0) +
|
919 |
-
getWeeksFromInput(obj) * 7,
|
920 |
-
milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours
|
921 |
-
(obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes
|
922 |
-
(obj.seconds || obj.second || 0) * 1000 + // seconds
|
923 |
-
(obj.milliseconds || obj.millisecond || obj.ms || 0) // ms
|
924 |
-
};
|
925 |
-
}
|
926 |
-
function getWeeksFromInput(obj) {
|
927 |
-
return obj.weeks || obj.week || 0;
|
928 |
-
}
|
929 |
-
// Equality
|
930 |
-
function durationsEqual(d0, d1) {
|
931 |
-
return d0.years === d1.years &&
|
932 |
-
d0.months === d1.months &&
|
933 |
-
d0.days === d1.days &&
|
934 |
-
d0.milliseconds === d1.milliseconds;
|
935 |
-
}
|
936 |
-
function isSingleDay(dur) {
|
937 |
-
return dur.years === 0 && dur.months === 0 && dur.days === 1 && dur.milliseconds === 0;
|
938 |
-
}
|
939 |
-
// Simple Math
|
940 |
-
function addDurations(d0, d1) {
|
941 |
-
return {
|
942 |
-
years: d0.years + d1.years,
|
943 |
-
months: d0.months + d1.months,
|
944 |
-
days: d0.days + d1.days,
|
945 |
-
milliseconds: d0.milliseconds + d1.milliseconds
|
946 |
-
};
|
947 |
-
}
|
948 |
-
function subtractDurations(d1, d0) {
|
949 |
-
return {
|
950 |
-
years: d1.years - d0.years,
|
951 |
-
months: d1.months - d0.months,
|
952 |
-
days: d1.days - d0.days,
|
953 |
-
milliseconds: d1.milliseconds - d0.milliseconds
|
954 |
-
};
|
955 |
}
|
956 |
-
|
|
|
957 |
return {
|
958 |
-
|
959 |
-
|
960 |
-
days: d.days * n,
|
961 |
-
milliseconds: d.milliseconds * n
|
962 |
};
|
963 |
}
|
964 |
-
// Conversions
|
965 |
-
// "Rough" because they are based on average-case Gregorian months/years
|
966 |
-
function asRoughYears(dur) {
|
967 |
-
return asRoughDays(dur) / 365;
|
968 |
-
}
|
969 |
-
function asRoughMonths(dur) {
|
970 |
-
return asRoughDays(dur) / 30;
|
971 |
-
}
|
972 |
-
function asRoughDays(dur) {
|
973 |
-
return asRoughMs(dur) / 864e5;
|
974 |
-
}
|
975 |
-
function asRoughMinutes(dur) {
|
976 |
-
return asRoughMs(dur) / (1000 * 60);
|
977 |
-
}
|
978 |
-
function asRoughSeconds(dur) {
|
979 |
-
return asRoughMs(dur) / 1000;
|
980 |
-
}
|
981 |
-
function asRoughMs(dur) {
|
982 |
-
return dur.years * (365 * 864e5) +
|
983 |
-
dur.months * (30 * 864e5) +
|
984 |
-
dur.days * 864e5 +
|
985 |
-
dur.milliseconds;
|
986 |
-
}
|
987 |
-
// Advanced Math
|
988 |
-
function wholeDivideDurations(numerator, denominator) {
|
989 |
-
var res = null;
|
990 |
-
for (var i = 0; i < INTERNAL_UNITS.length; i++) {
|
991 |
-
var unit = INTERNAL_UNITS[i];
|
992 |
-
if (denominator[unit]) {
|
993 |
-
var localRes = numerator[unit] / denominator[unit];
|
994 |
-
if (!isInt(localRes) || (res !== null && res !== localRes)) {
|
995 |
-
return null;
|
996 |
-
}
|
997 |
-
res = localRes;
|
998 |
-
}
|
999 |
-
else if (numerator[unit]) {
|
1000 |
-
// needs to divide by something but can't!
|
1001 |
-
return null;
|
1002 |
-
}
|
1003 |
-
}
|
1004 |
-
return res;
|
1005 |
-
}
|
1006 |
-
function greatestDurationDenominator(dur, dontReturnWeeks) {
|
1007 |
-
var ms = dur.milliseconds;
|
1008 |
-
if (ms) {
|
1009 |
-
if (ms % 1000 !== 0) {
|
1010 |
-
return { unit: 'millisecond', value: ms };
|
1011 |
-
}
|
1012 |
-
if (ms % (1000 * 60) !== 0) {
|
1013 |
-
return { unit: 'second', value: ms / 1000 };
|
1014 |
-
}
|
1015 |
-
if (ms % (1000 * 60 * 60) !== 0) {
|
1016 |
-
return { unit: 'minute', value: ms / (1000 * 60) };
|
1017 |
-
}
|
1018 |
-
if (ms) {
|
1019 |
-
return { unit: 'hour', value: ms / (1000 * 60 * 60) };
|
1020 |
-
}
|
1021 |
-
}
|
1022 |
-
if (dur.days) {
|
1023 |
-
if (!dontReturnWeeks && dur.days % 7 === 0) {
|
1024 |
-
return { unit: 'week', value: dur.days / 7 };
|
1025 |
-
}
|
1026 |
-
return { unit: 'day', value: dur.days };
|
1027 |
-
}
|
1028 |
-
if (dur.months) {
|
1029 |
-
return { unit: 'month', value: dur.months };
|
1030 |
-
}
|
1031 |
-
if (dur.years) {
|
1032 |
-
return { unit: 'year', value: dur.years };
|
1033 |
-
}
|
1034 |
-
return { unit: 'millisecond', value: 0 };
|
1035 |
-
}
|
1036 |
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
// and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that.
|
1041 |
-
function compensateScroll(rowEl, scrollbarWidths) {
|
1042 |
-
if (scrollbarWidths.left) {
|
1043 |
-
applyStyle(rowEl, {
|
1044 |
-
borderLeftWidth: 1,
|
1045 |
-
marginLeft: scrollbarWidths.left - 1
|
1046 |
-
});
|
1047 |
-
}
|
1048 |
-
if (scrollbarWidths.right) {
|
1049 |
-
applyStyle(rowEl, {
|
1050 |
-
borderRightWidth: 1,
|
1051 |
-
marginRight: scrollbarWidths.right - 1
|
1052 |
-
});
|
1053 |
}
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
marginRight: '',
|
1060 |
-
borderLeftWidth: '',
|
1061 |
-
borderRightWidth: ''
|
1062 |
});
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
}
|
1072 |
-
// Given a total available height to fill, have `els` (essentially child rows) expand to accomodate.
|
1073 |
-
// By default, all elements that are shorter than the recommended height are expanded uniformly, not considering
|
1074 |
-
// any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and
|
1075 |
-
// reduces the available height.
|
1076 |
-
function distributeHeight(els, availableHeight, shouldRedistribute) {
|
1077 |
-
// *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions,
|
1078 |
-
// and it is better to be shorter than taller, to avoid creating unnecessary scrollbars.
|
1079 |
-
var minOffset1 = Math.floor(availableHeight / els.length); // for non-last element
|
1080 |
-
var minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE*
|
1081 |
-
var flexEls = []; // elements that are allowed to expand. array of DOM nodes
|
1082 |
-
var flexOffsets = []; // amount of vertical space it takes up
|
1083 |
-
var flexHeights = []; // actual css height
|
1084 |
-
var usedHeight = 0;
|
1085 |
-
undistributeHeight(els); // give all elements their natural height
|
1086 |
-
// find elements that are below the recommended height (expandable).
|
1087 |
-
// important to query for heights in a single first pass (to avoid reflow oscillation).
|
1088 |
-
els.forEach(function (el, i) {
|
1089 |
-
var minOffset = i === els.length - 1 ? minOffset2 : minOffset1;
|
1090 |
-
var naturalHeight = el.getBoundingClientRect().height;
|
1091 |
-
var naturalOffset = naturalHeight + computeVMargins(el);
|
1092 |
-
if (naturalOffset < minOffset) {
|
1093 |
-
flexEls.push(el);
|
1094 |
-
flexOffsets.push(naturalOffset);
|
1095 |
-
flexHeights.push(naturalHeight);
|
1096 |
-
}
|
1097 |
-
else {
|
1098 |
-
// this element stretches past recommended height (non-expandable). mark the space as occupied.
|
1099 |
-
usedHeight += naturalOffset;
|
1100 |
}
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
if (naturalOffset < minOffset) { // we check this again because redistribution might have changed things
|
1115 |
-
el.style.height = newHeight + 'px';
|
1116 |
}
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
}
|
1125 |
-
// Given `els`, a set of <td> cells, find the cell with the largest natural width and set the widths of all the
|
1126 |
-
// cells to be that width.
|
1127 |
-
// PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline
|
1128 |
-
function matchCellWidths(els) {
|
1129 |
-
var maxInnerWidth = 0;
|
1130 |
-
els.forEach(function (el) {
|
1131 |
-
var innerEl = el.firstChild; // hopefully an element
|
1132 |
-
if (innerEl instanceof HTMLElement) {
|
1133 |
-
var innerWidth_1 = innerEl.getBoundingClientRect().width;
|
1134 |
-
if (innerWidth_1 > maxInnerWidth) {
|
1135 |
-
maxInnerWidth = innerWidth_1;
|
1136 |
}
|
1137 |
-
}
|
1138 |
-
|
1139 |
-
maxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance
|
1140 |
-
els.forEach(function (el) {
|
1141 |
-
el.style.width = maxInnerWidth + 'px';
|
1142 |
-
});
|
1143 |
-
return maxInnerWidth;
|
1144 |
-
}
|
1145 |
-
// Given one element that resides inside another,
|
1146 |
-
// Subtracts the height of the inner element from the outer element.
|
1147 |
-
function subtractInnerElHeight(outerEl, innerEl) {
|
1148 |
-
// effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked
|
1149 |
-
var reflowStyleProps = {
|
1150 |
-
position: 'relative',
|
1151 |
-
left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll
|
1152 |
-
};
|
1153 |
-
applyStyle(outerEl, reflowStyleProps);
|
1154 |
-
applyStyle(innerEl, reflowStyleProps);
|
1155 |
-
var diff = // grab the dimensions
|
1156 |
-
outerEl.getBoundingClientRect().height -
|
1157 |
-
innerEl.getBoundingClientRect().height;
|
1158 |
-
// undo hack
|
1159 |
-
var resetStyleProps = { position: '', left: '' };
|
1160 |
-
applyStyle(outerEl, resetStyleProps);
|
1161 |
-
applyStyle(innerEl, resetStyleProps);
|
1162 |
-
return diff;
|
1163 |
-
}
|
1164 |
-
/* Selection
|
1165 |
-
----------------------------------------------------------------------------------------------------------------------*/
|
1166 |
-
function preventSelection(el) {
|
1167 |
-
el.classList.add('fc-unselectable');
|
1168 |
-
el.addEventListener('selectstart', preventDefault);
|
1169 |
-
}
|
1170 |
-
function allowSelection(el) {
|
1171 |
-
el.classList.remove('fc-unselectable');
|
1172 |
-
el.removeEventListener('selectstart', preventDefault);
|
1173 |
-
}
|
1174 |
-
/* Context Menu
|
1175 |
-
----------------------------------------------------------------------------------------------------------------------*/
|
1176 |
-
function preventContextMenu(el) {
|
1177 |
-
el.addEventListener('contextmenu', preventDefault);
|
1178 |
-
}
|
1179 |
-
function allowContextMenu(el) {
|
1180 |
-
el.removeEventListener('contextmenu', preventDefault);
|
1181 |
-
}
|
1182 |
-
/* Object Ordering by Field
|
1183 |
-
----------------------------------------------------------------------------------------------------------------------*/
|
1184 |
-
function parseFieldSpecs(input) {
|
1185 |
-
var specs = [];
|
1186 |
-
var tokens = [];
|
1187 |
-
var i;
|
1188 |
-
var token;
|
1189 |
-
if (typeof input === 'string') {
|
1190 |
-
tokens = input.split(/\s*,\s*/);
|
1191 |
-
}
|
1192 |
-
else if (typeof input === 'function') {
|
1193 |
-
tokens = [input];
|
1194 |
-
}
|
1195 |
-
else if (Array.isArray(input)) {
|
1196 |
-
tokens = input;
|
1197 |
-
}
|
1198 |
-
for (i = 0; i < tokens.length; i++) {
|
1199 |
-
token = tokens[i];
|
1200 |
-
if (typeof token === 'string') {
|
1201 |
-
specs.push(token.charAt(0) === '-' ?
|
1202 |
-
{ field: token.substring(1), order: -1 } :
|
1203 |
-
{ field: token, order: 1 });
|
1204 |
-
}
|
1205 |
-
else if (typeof token === 'function') {
|
1206 |
-
specs.push({ func: token });
|
1207 |
-
}
|
1208 |
-
}
|
1209 |
-
return specs;
|
1210 |
-
}
|
1211 |
-
function compareByFieldSpecs(obj0, obj1, fieldSpecs) {
|
1212 |
-
var i;
|
1213 |
-
var cmp;
|
1214 |
-
for (i = 0; i < fieldSpecs.length; i++) {
|
1215 |
-
cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);
|
1216 |
-
if (cmp) {
|
1217 |
-
return cmp;
|
1218 |
}
|
1219 |
}
|
1220 |
-
return 0;
|
1221 |
}
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
}
|
1233 |
-
if (b == null) {
|
1234 |
-
return -1;
|
1235 |
-
}
|
1236 |
-
if (a == null) {
|
1237 |
-
return 1;
|
1238 |
-
}
|
1239 |
-
if (typeof a === 'string' || typeof b === 'string') {
|
1240 |
-
return String(a).localeCompare(String(b));
|
1241 |
-
}
|
1242 |
-
return a - b;
|
1243 |
-
}
|
1244 |
-
/* String Utilities
|
1245 |
-
----------------------------------------------------------------------------------------------------------------------*/
|
1246 |
-
function capitaliseFirstLetter(str) {
|
1247 |
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
1248 |
-
}
|
1249 |
-
function padStart(val, len) {
|
1250 |
-
var s = String(val);
|
1251 |
-
return '000'.substr(0, len - s.length) + s;
|
1252 |
-
}
|
1253 |
-
/* Number Utilities
|
1254 |
-
----------------------------------------------------------------------------------------------------------------------*/
|
1255 |
-
function compareNumbers(a, b) {
|
1256 |
-
return a - b;
|
1257 |
-
}
|
1258 |
-
function isInt(n) {
|
1259 |
-
return n % 1 === 0;
|
1260 |
-
}
|
1261 |
-
/* Weird Utilities
|
1262 |
-
----------------------------------------------------------------------------------------------------------------------*/
|
1263 |
-
function applyAll(functions, thisObj, args) {
|
1264 |
-
if (typeof functions === 'function') { // supplied a single function
|
1265 |
-
functions = [functions];
|
1266 |
-
}
|
1267 |
-
if (functions) {
|
1268 |
-
var i = void 0;
|
1269 |
-
var ret = void 0;
|
1270 |
-
for (i = 0; i < functions.length; i++) {
|
1271 |
-
ret = functions[i].apply(thisObj, args) || ret;
|
1272 |
-
}
|
1273 |
-
return ret;
|
1274 |
-
}
|
1275 |
-
}
|
1276 |
-
function firstDefined() {
|
1277 |
-
var args = [];
|
1278 |
-
for (var _i = 0; _i < arguments.length; _i++) {
|
1279 |
-
args[_i] = arguments[_i];
|
1280 |
-
}
|
1281 |
-
for (var i = 0; i < args.length; i++) {
|
1282 |
-
if (args[i] !== undefined) {
|
1283 |
-
return args[i];
|
1284 |
-
}
|
1285 |
-
}
|
1286 |
-
}
|
1287 |
-
// Returns a function, that, as long as it continues to be invoked, will not
|
1288 |
-
// be triggered. The function will be called after it stops being called for
|
1289 |
-
// N milliseconds. If `immediate` is passed, trigger the function on the
|
1290 |
-
// leading edge, instead of the trailing.
|
1291 |
-
// https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714
|
1292 |
-
function debounce(func, wait) {
|
1293 |
-
var timeout;
|
1294 |
-
var args;
|
1295 |
-
var context;
|
1296 |
-
var timestamp;
|
1297 |
-
var result;
|
1298 |
-
var later = function () {
|
1299 |
-
var last = new Date().valueOf() - timestamp;
|
1300 |
-
if (last < wait) {
|
1301 |
-
timeout = setTimeout(later, wait - last);
|
1302 |
-
}
|
1303 |
-
else {
|
1304 |
-
timeout = null;
|
1305 |
-
result = func.apply(context, args);
|
1306 |
-
context = args = null;
|
1307 |
-
}
|
1308 |
-
};
|
1309 |
-
return function () {
|
1310 |
-
context = this;
|
1311 |
-
args = arguments;
|
1312 |
-
timestamp = new Date().valueOf();
|
1313 |
-
if (!timeout) {
|
1314 |
-
timeout = setTimeout(later, wait);
|
1315 |
-
}
|
1316 |
-
return result;
|
1317 |
-
};
|
1318 |
-
}
|
1319 |
-
// Number and Boolean are only types that defaults or not computed for
|
1320 |
-
// TODO: write more comments
|
1321 |
-
function refineProps(rawProps, processors, defaults, leftoverProps) {
|
1322 |
-
if (defaults === void 0) { defaults = {}; }
|
1323 |
-
var refined = {};
|
1324 |
-
for (var key in processors) {
|
1325 |
-
var processor = processors[key];
|
1326 |
-
if (rawProps[key] !== undefined) {
|
1327 |
-
// found
|
1328 |
-
if (processor === Function) {
|
1329 |
-
refined[key] = typeof rawProps[key] === 'function' ? rawProps[key] : null;
|
1330 |
-
}
|
1331 |
-
else if (processor) { // a refining function?
|
1332 |
-
refined[key] = processor(rawProps[key]);
|
1333 |
-
}
|
1334 |
-
else {
|
1335 |
-
refined[key] = rawProps[key];
|
1336 |
-
}
|
1337 |
-
}
|
1338 |
-
else if (defaults[key] !== undefined) {
|
1339 |
-
// there's an explicit default
|
1340 |
-
refined[key] = defaults[key];
|
1341 |
-
}
|
1342 |
-
else {
|
1343 |
-
// must compute a default
|
1344 |
-
if (processor === String) {
|
1345 |
-
refined[key] = ''; // empty string is default for String
|
1346 |
-
}
|
1347 |
-
else if (!processor || processor === Number || processor === Boolean || processor === Function) {
|
1348 |
-
refined[key] = null; // assign null for other non-custom processor funcs
|
1349 |
-
}
|
1350 |
-
else {
|
1351 |
-
refined[key] = processor(null); // run the custom processor func
|
1352 |
-
}
|
1353 |
-
}
|
1354 |
-
}
|
1355 |
-
if (leftoverProps) {
|
1356 |
-
for (var key in rawProps) {
|
1357 |
-
if (processors[key] === undefined) {
|
1358 |
-
leftoverProps[key] = rawProps[key];
|
1359 |
-
}
|
1360 |
-
}
|
1361 |
-
}
|
1362 |
-
return refined;
|
1363 |
-
}
|
1364 |
-
/* Date stuff that doesn't belong in datelib core
|
1365 |
-
----------------------------------------------------------------------------------------------------------------------*/
|
1366 |
-
// given a timed range, computes an all-day range that has the same exact duration,
|
1367 |
-
// but whose start time is aligned with the start of the day.
|
1368 |
-
function computeAlignedDayRange(timedRange) {
|
1369 |
-
var dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1;
|
1370 |
-
var start = startOfDay(timedRange.start);
|
1371 |
-
var end = addDays(start, dayCnt);
|
1372 |
-
return { start: start, end: end };
|
1373 |
-
}
|
1374 |
-
// given a timed range, computes an all-day range based on how for the end date bleeds into the next day
|
1375 |
-
// TODO: give nextDayThreshold a default arg
|
1376 |
-
function computeVisibleDayRange(timedRange, nextDayThreshold) {
|
1377 |
-
if (nextDayThreshold === void 0) { nextDayThreshold = createDuration(0); }
|
1378 |
-
var startDay = null;
|
1379 |
-
var endDay = null;
|
1380 |
-
if (timedRange.end) {
|
1381 |
-
endDay = startOfDay(timedRange.end);
|
1382 |
-
var endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay`
|
1383 |
-
// If the end time is actually inclusively part of the next day and is equal to or
|
1384 |
-
// beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.
|
1385 |
-
// Otherwise, leaving it as inclusive will cause it to exclude `endDay`.
|
1386 |
-
if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {
|
1387 |
-
endDay = addDays(endDay, 1);
|
1388 |
-
}
|
1389 |
-
}
|
1390 |
-
if (timedRange.start) {
|
1391 |
-
startDay = startOfDay(timedRange.start); // the beginning of the day the range starts
|
1392 |
-
// If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.
|
1393 |
-
if (endDay && endDay <= startDay) {
|
1394 |
-
endDay = addDays(startDay, 1);
|
1395 |
-
}
|
1396 |
-
}
|
1397 |
-
return { start: startDay, end: endDay };
|
1398 |
-
}
|
1399 |
-
// spans from one day into another?
|
1400 |
-
function isMultiDayRange(range) {
|
1401 |
-
var visibleRange = computeVisibleDayRange(range);
|
1402 |
-
return diffDays(visibleRange.start, visibleRange.end) > 1;
|
1403 |
-
}
|
1404 |
-
function diffDates(date0, date1, dateEnv, largeUnit) {
|
1405 |
-
if (largeUnit === 'year') {
|
1406 |
-
return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');
|
1407 |
-
}
|
1408 |
-
else if (largeUnit === 'month') {
|
1409 |
-
return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');
|
1410 |
-
}
|
1411 |
-
else {
|
1412 |
-
return diffDayAndTime(date0, date1); // returns a duration
|
1413 |
-
}
|
1414 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1415 |
|
1416 |
-
|
1417 |
-
|
1418 |
-
|
1419 |
-
|
1420 |
-
|
1421 |
|
1422 |
-
|
1423 |
-
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
1424 |
-
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
1425 |
-
MERCHANTABLITY OR NON-INFRINGEMENT.
|
1426 |
|
1427 |
-
|
1428 |
-
|
1429 |
-
|
1430 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1431 |
|
1432 |
-
|
1433 |
-
|
1434 |
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
1435 |
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
1436 |
-
return extendStatics(d, b);
|
1437 |
-
};
|
1438 |
|
1439 |
-
|
1440 |
-
extendStatics(d, b);
|
1441 |
-
function __() { this.constructor = d; }
|
1442 |
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
1443 |
-
}
|
1444 |
|
1445 |
-
|
1446 |
-
|
1447 |
-
|
1448 |
-
|
1449 |
-
|
1450 |
-
|
1451 |
-
|
1452 |
-
|
1453 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1454 |
};
|
|
|
1455 |
|
1456 |
-
|
1457 |
-
|
1458 |
-
|
1459 |
-
|
1460 |
-
|
1461 |
-
|
1462 |
-
|
1463 |
-
if (allDay == null) {
|
1464 |
-
allDay = allDayDefault;
|
1465 |
-
if (allDay == null) {
|
1466 |
-
allDay = parsed.allDayGuess;
|
1467 |
-
if (allDay == null) {
|
1468 |
-
allDay = false;
|
1469 |
-
}
|
1470 |
-
}
|
1471 |
-
}
|
1472 |
-
__assign(leftovers, localLeftovers);
|
1473 |
-
return {
|
1474 |
-
allDay: allDay,
|
1475 |
-
duration: parsed.duration,
|
1476 |
-
typeData: parsed.typeData,
|
1477 |
-
typeId: i
|
1478 |
-
};
|
1479 |
-
}
|
1480 |
-
}
|
1481 |
-
return null;
|
1482 |
-
}
|
1483 |
-
/*
|
1484 |
-
Event MUST have a recurringDef
|
1485 |
-
*/
|
1486 |
-
function expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) {
|
1487 |
-
var typeDef = recurringTypes[eventDef.recurringDef.typeId];
|
1488 |
-
var markers = typeDef.expand(eventDef.recurringDef.typeData, {
|
1489 |
-
start: dateEnv.subtract(framingRange.start, duration),
|
1490 |
-
end: framingRange.end
|
1491 |
-
}, dateEnv);
|
1492 |
-
// the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to
|
1493 |
-
if (eventDef.allDay) {
|
1494 |
-
markers = markers.map(startOfDay);
|
1495 |
-
}
|
1496 |
-
return markers;
|
1497 |
}
|
|
|
|
|
|
|
|
|
1498 |
|
1499 |
-
|
1500 |
-
|
1501 |
-
|
1502 |
-
|
1503 |
-
var dest = {};
|
1504 |
-
var i;
|
1505 |
-
var name;
|
1506 |
-
var complexObjs;
|
1507 |
-
var j;
|
1508 |
-
var val;
|
1509 |
-
var props;
|
1510 |
-
if (complexProps) {
|
1511 |
-
for (i = 0; i < complexProps.length; i++) {
|
1512 |
-
name = complexProps[i];
|
1513 |
-
complexObjs = [];
|
1514 |
-
// collect the trailing object values, stopping when a non-object is discovered
|
1515 |
-
for (j = propObjs.length - 1; j >= 0; j--) {
|
1516 |
-
val = propObjs[j][name];
|
1517 |
-
if (typeof val === 'object' && val) { // non-null object
|
1518 |
-
complexObjs.unshift(val);
|
1519 |
-
}
|
1520 |
-
else if (val !== undefined) {
|
1521 |
-
dest[name] = val; // if there were no objects, this value will be used
|
1522 |
-
break;
|
1523 |
-
}
|
1524 |
-
}
|
1525 |
-
// if the trailing values were objects, use the merged value
|
1526 |
-
if (complexObjs.length) {
|
1527 |
-
dest[name] = mergeProps(complexObjs);
|
1528 |
-
}
|
1529 |
-
}
|
1530 |
-
}
|
1531 |
-
// copy values into the destination, going from last to first
|
1532 |
-
for (i = propObjs.length - 1; i >= 0; i--) {
|
1533 |
-
props = propObjs[i];
|
1534 |
-
for (name in props) {
|
1535 |
-
if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign
|
1536 |
-
dest[name] = props[name];
|
1537 |
-
}
|
1538 |
-
}
|
1539 |
-
}
|
1540 |
-
return dest;
|
1541 |
-
}
|
1542 |
-
function filterHash(hash, func) {
|
1543 |
-
var filtered = {};
|
1544 |
-
for (var key in hash) {
|
1545 |
-
if (func(hash[key], key)) {
|
1546 |
-
filtered[key] = hash[key];
|
1547 |
-
}
|
1548 |
-
}
|
1549 |
-
return filtered;
|
1550 |
-
}
|
1551 |
-
function mapHash(hash, func) {
|
1552 |
-
var newHash = {};
|
1553 |
-
for (var key in hash) {
|
1554 |
-
newHash[key] = func(hash[key], key);
|
1555 |
-
}
|
1556 |
-
return newHash;
|
1557 |
-
}
|
1558 |
-
function arrayToHash(a) {
|
1559 |
-
var hash = {};
|
1560 |
-
for (var _i = 0, a_1 = a; _i < a_1.length; _i++) {
|
1561 |
-
var item = a_1[_i];
|
1562 |
-
hash[item] = true;
|
1563 |
-
}
|
1564 |
-
return hash;
|
1565 |
-
}
|
1566 |
-
function hashValuesToArray(obj) {
|
1567 |
-
var a = [];
|
1568 |
-
for (var key in obj) {
|
1569 |
-
a.push(obj[key]);
|
1570 |
-
}
|
1571 |
-
return a;
|
1572 |
-
}
|
1573 |
-
function isPropsEqual(obj0, obj1) {
|
1574 |
-
for (var key in obj0) {
|
1575 |
-
if (hasOwnProperty.call(obj0, key)) {
|
1576 |
-
if (!(key in obj1)) {
|
1577 |
-
return false;
|
1578 |
-
}
|
1579 |
-
}
|
1580 |
-
}
|
1581 |
-
for (var key in obj1) {
|
1582 |
-
if (hasOwnProperty.call(obj1, key)) {
|
1583 |
-
if (obj0[key] !== obj1[key]) {
|
1584 |
-
return false;
|
1585 |
-
}
|
1586 |
-
}
|
1587 |
-
}
|
1588 |
-
return true;
|
1589 |
-
}
|
1590 |
|
1591 |
-
function
|
1592 |
-
|
1593 |
-
|
1594 |
-
|
1595 |
-
|
1596 |
-
|
1597 |
-
|
1598 |
-
|
1599 |
-
}
|
1600 |
-
return eventStore;
|
1601 |
-
}
|
1602 |
-
function eventTupleToStore(tuple, eventStore) {
|
1603 |
-
if (eventStore === void 0) { eventStore = createEmptyEventStore(); }
|
1604 |
-
eventStore.defs[tuple.def.defId] = tuple.def;
|
1605 |
-
if (tuple.instance) {
|
1606 |
-
eventStore.instances[tuple.instance.instanceId] = tuple.instance;
|
1607 |
-
}
|
1608 |
-
return eventStore;
|
1609 |
-
}
|
1610 |
-
function expandRecurring(eventStore, framingRange, calendar) {
|
1611 |
-
var dateEnv = calendar.dateEnv;
|
1612 |
-
var defs = eventStore.defs, instances = eventStore.instances;
|
1613 |
-
// remove existing recurring instances
|
1614 |
-
instances = filterHash(instances, function (instance) {
|
1615 |
-
return !defs[instance.defId].recurringDef;
|
1616 |
-
});
|
1617 |
-
for (var defId in defs) {
|
1618 |
-
var def = defs[defId];
|
1619 |
-
if (def.recurringDef) {
|
1620 |
-
var duration = def.recurringDef.duration;
|
1621 |
-
if (!duration) {
|
1622 |
-
duration = def.allDay ?
|
1623 |
-
calendar.defaultAllDayEventDuration :
|
1624 |
-
calendar.defaultTimedEventDuration;
|
1625 |
-
}
|
1626 |
-
var starts = expandRecurringRanges(def, duration, framingRange, calendar.dateEnv, calendar.pluginSystem.hooks.recurringTypes);
|
1627 |
-
for (var _i = 0, starts_1 = starts; _i < starts_1.length; _i++) {
|
1628 |
-
var start = starts_1[_i];
|
1629 |
-
var instance = createEventInstance(defId, {
|
1630 |
-
start: start,
|
1631 |
-
end: dateEnv.add(start, duration)
|
1632 |
-
});
|
1633 |
-
instances[instance.instanceId] = instance;
|
1634 |
-
}
|
1635 |
-
}
|
1636 |
-
}
|
1637 |
-
return { defs: defs, instances: instances };
|
1638 |
-
}
|
1639 |
-
// retrieves events that have the same groupId as the instance specified by `instanceId`
|
1640 |
-
// or they are the same as the instance.
|
1641 |
-
// why might instanceId not be in the store? an event from another calendar?
|
1642 |
-
function getRelevantEvents(eventStore, instanceId) {
|
1643 |
-
var instance = eventStore.instances[instanceId];
|
1644 |
-
if (instance) {
|
1645 |
-
var def_1 = eventStore.defs[instance.defId];
|
1646 |
-
// get events/instances with same group
|
1647 |
-
var newStore = filterEventStoreDefs(eventStore, function (lookDef) {
|
1648 |
-
return isEventDefsGrouped(def_1, lookDef);
|
1649 |
-
});
|
1650 |
-
// add the original
|
1651 |
-
// TODO: wish we could use eventTupleToStore or something like it
|
1652 |
-
newStore.defs[def_1.defId] = def_1;
|
1653 |
-
newStore.instances[instance.instanceId] = instance;
|
1654 |
-
return newStore;
|
1655 |
-
}
|
1656 |
-
return createEmptyEventStore();
|
1657 |
-
}
|
1658 |
-
function isEventDefsGrouped(def0, def1) {
|
1659 |
-
return Boolean(def0.groupId && def0.groupId === def1.groupId);
|
1660 |
-
}
|
1661 |
-
function transformRawEvents(rawEvents, eventSource, calendar) {
|
1662 |
-
var calEachTransform = calendar.opt('eventDataTransform');
|
1663 |
-
var sourceEachTransform = eventSource ? eventSource.eventDataTransform : null;
|
1664 |
-
if (sourceEachTransform) {
|
1665 |
-
rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform);
|
1666 |
-
}
|
1667 |
-
if (calEachTransform) {
|
1668 |
-
rawEvents = transformEachRawEvent(rawEvents, calEachTransform);
|
1669 |
-
}
|
1670 |
-
return rawEvents;
|
1671 |
-
}
|
1672 |
-
function transformEachRawEvent(rawEvents, func) {
|
1673 |
-
var refinedEvents;
|
1674 |
-
if (!func) {
|
1675 |
-
refinedEvents = rawEvents;
|
1676 |
-
}
|
1677 |
-
else {
|
1678 |
-
refinedEvents = [];
|
1679 |
-
for (var _i = 0, rawEvents_2 = rawEvents; _i < rawEvents_2.length; _i++) {
|
1680 |
-
var rawEvent = rawEvents_2[_i];
|
1681 |
-
var refinedEvent = func(rawEvent);
|
1682 |
-
if (refinedEvent) {
|
1683 |
-
refinedEvents.push(refinedEvent);
|
1684 |
-
}
|
1685 |
-
else if (refinedEvent == null) {
|
1686 |
-
refinedEvents.push(rawEvent);
|
1687 |
-
} // if a different falsy value, do nothing
|
1688 |
-
}
|
1689 |
-
}
|
1690 |
-
return refinedEvents;
|
1691 |
-
}
|
1692 |
-
function createEmptyEventStore() {
|
1693 |
-
return { defs: {}, instances: {} };
|
1694 |
-
}
|
1695 |
-
function mergeEventStores(store0, store1) {
|
1696 |
-
return {
|
1697 |
-
defs: __assign({}, store0.defs, store1.defs),
|
1698 |
-
instances: __assign({}, store0.instances, store1.instances)
|
1699 |
-
};
|
1700 |
-
}
|
1701 |
-
function filterEventStoreDefs(eventStore, filterFunc) {
|
1702 |
-
var defs = filterHash(eventStore.defs, filterFunc);
|
1703 |
-
var instances = filterHash(eventStore.instances, function (instance) {
|
1704 |
-
return defs[instance.defId]; // still exists?
|
1705 |
-
});
|
1706 |
-
return { defs: defs, instances: instances };
|
1707 |
-
}
|
1708 |
|
1709 |
-
|
1710 |
-
|
1711 |
-
|
1712 |
-
|
1713 |
-
|
1714 |
-
}
|
1715 |
-
if (input.end) {
|
1716 |
-
end = dateEnv.createMarker(input.end);
|
1717 |
-
}
|
1718 |
-
if (!start && !end) {
|
1719 |
-
return null;
|
1720 |
-
}
|
1721 |
-
if (start && end && end < start) {
|
1722 |
-
return null;
|
1723 |
-
}
|
1724 |
-
return { start: start, end: end };
|
1725 |
-
}
|
1726 |
-
// SIDE-EFFECT: will mutate ranges.
|
1727 |
-
// Will return a new array result.
|
1728 |
-
function invertRanges(ranges, constraintRange) {
|
1729 |
-
var invertedRanges = [];
|
1730 |
-
var start = constraintRange.start; // the end of the previous range. the start of the new range
|
1731 |
-
var i;
|
1732 |
-
var dateRange;
|
1733 |
-
// ranges need to be in order. required for our date-walking algorithm
|
1734 |
-
ranges.sort(compareRanges);
|
1735 |
-
for (i = 0; i < ranges.length; i++) {
|
1736 |
-
dateRange = ranges[i];
|
1737 |
-
// add the span of time before the event (if there is any)
|
1738 |
-
if (dateRange.start > start) { // compare millisecond time (skip any ambig logic)
|
1739 |
-
invertedRanges.push({ start: start, end: dateRange.start });
|
1740 |
-
}
|
1741 |
-
if (dateRange.end > start) {
|
1742 |
-
start = dateRange.end;
|
1743 |
-
}
|
1744 |
-
}
|
1745 |
-
// add the span of time after the last event (if there is any)
|
1746 |
-
if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic)
|
1747 |
-
invertedRanges.push({ start: start, end: constraintRange.end });
|
1748 |
-
}
|
1749 |
-
return invertedRanges;
|
1750 |
-
}
|
1751 |
-
function compareRanges(range0, range1) {
|
1752 |
-
return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first
|
1753 |
-
}
|
1754 |
-
function intersectRanges(range0, range1) {
|
1755 |
-
var start = range0.start;
|
1756 |
-
var end = range0.end;
|
1757 |
-
var newRange = null;
|
1758 |
-
if (range1.start !== null) {
|
1759 |
-
if (start === null) {
|
1760 |
-
start = range1.start;
|
1761 |
-
}
|
1762 |
-
else {
|
1763 |
-
start = new Date(Math.max(start.valueOf(), range1.start.valueOf()));
|
1764 |
-
}
|
1765 |
-
}
|
1766 |
-
if (range1.end != null) {
|
1767 |
-
if (end === null) {
|
1768 |
-
end = range1.end;
|
1769 |
-
}
|
1770 |
-
else {
|
1771 |
-
end = new Date(Math.min(end.valueOf(), range1.end.valueOf()));
|
1772 |
-
}
|
1773 |
-
}
|
1774 |
-
if (start === null || end === null || start < end) {
|
1775 |
-
newRange = { start: start, end: end };
|
1776 |
-
}
|
1777 |
-
return newRange;
|
1778 |
-
}
|
1779 |
-
function rangesEqual(range0, range1) {
|
1780 |
-
return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) &&
|
1781 |
-
(range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf());
|
1782 |
-
}
|
1783 |
-
function rangesIntersect(range0, range1) {
|
1784 |
-
return (range0.end === null || range1.start === null || range0.end > range1.start) &&
|
1785 |
-
(range0.start === null || range1.end === null || range0.start < range1.end);
|
1786 |
-
}
|
1787 |
-
function rangeContainsRange(outerRange, innerRange) {
|
1788 |
-
return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) &&
|
1789 |
-
(outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end));
|
1790 |
-
}
|
1791 |
-
function rangeContainsMarker(range, date) {
|
1792 |
-
return (range.start === null || date >= range.start) &&
|
1793 |
-
(range.end === null || date < range.end);
|
1794 |
-
}
|
1795 |
-
// If the given date is not within the given range, move it inside.
|
1796 |
-
// (If it's past the end, make it one millisecond before the end).
|
1797 |
-
function constrainMarkerToRange(date, range) {
|
1798 |
-
if (range.start != null && date < range.start) {
|
1799 |
-
return range.start;
|
1800 |
-
}
|
1801 |
-
if (range.end != null && date >= range.end) {
|
1802 |
-
return new Date(range.end.valueOf() - 1);
|
1803 |
-
}
|
1804 |
-
return date;
|
1805 |
-
}
|
1806 |
|
1807 |
-
|
1808 |
-
|
1809 |
-
|
1810 |
-
|
1811 |
-
|
1812 |
-
array.splice(i, 1);
|
1813 |
-
removeCnt++;
|
1814 |
-
}
|
1815 |
-
else {
|
1816 |
-
i++;
|
1817 |
-
}
|
1818 |
-
}
|
1819 |
-
return removeCnt;
|
1820 |
-
}
|
1821 |
-
function isArraysEqual(a0, a1) {
|
1822 |
-
var len = a0.length;
|
1823 |
-
var i;
|
1824 |
-
if (len !== a1.length) { // not array? or not same length?
|
1825 |
-
return false;
|
1826 |
-
}
|
1827 |
-
for (i = 0; i < len; i++) {
|
1828 |
-
if (a0[i] !== a1[i]) {
|
1829 |
-
return false;
|
1830 |
-
}
|
1831 |
-
}
|
1832 |
-
return true;
|
1833 |
-
}
|
1834 |
|
1835 |
-
|
1836 |
-
|
1837 |
-
var res;
|
1838 |
-
return function () {
|
1839 |
-
if (!args || !isArraysEqual(args, arguments)) {
|
1840 |
-
args = arguments;
|
1841 |
-
res = workerFunc.apply(this, arguments);
|
1842 |
-
}
|
1843 |
-
return res;
|
1844 |
-
};
|
1845 |
-
}
|
1846 |
-
/*
|
1847 |
-
always executes the workerFunc, but if the result is equal to the previous result,
|
1848 |
-
return the previous result instead.
|
1849 |
-
*/
|
1850 |
-
function memoizeOutput(workerFunc, equalityFunc) {
|
1851 |
-
var cachedRes = null;
|
1852 |
-
return function () {
|
1853 |
-
var newRes = workerFunc.apply(this, arguments);
|
1854 |
-
if (cachedRes === null || !(cachedRes === newRes || equalityFunc(cachedRes, newRes))) {
|
1855 |
-
cachedRes = newRes;
|
1856 |
-
}
|
1857 |
-
return cachedRes;
|
1858 |
-
};
|
1859 |
-
}
|
1860 |
|
1861 |
-
|
1862 |
-
|
1863 |
-
|
1864 |
-
|
1865 |
-
|
1866 |
-
|
1867 |
-
|
1868 |
-
|
1869 |
-
|
1870 |
-
|
1871 |
-
|
1872 |
-
|
1873 |
-
|
1874 |
-
|
1875 |
-
hour: 1,
|
1876 |
-
minute: 1,
|
1877 |
-
second: 1
|
1878 |
-
};
|
1879 |
-
var MERIDIEM_RE = /\s*([ap])\.?m\.?/i; // eats up leading spaces too
|
1880 |
-
var COMMA_RE = /,/g; // we need re for globalness
|
1881 |
-
var MULTI_SPACE_RE = /\s+/g;
|
1882 |
-
var LTR_RE = /\u200e/g; // control character
|
1883 |
-
var UTC_RE = /UTC|GMT/;
|
1884 |
-
var NativeFormatter = /** @class */ (function () {
|
1885 |
-
function NativeFormatter(formatSettings) {
|
1886 |
-
var standardDateProps = {};
|
1887 |
-
var extendedSettings = {};
|
1888 |
-
var severity = 0;
|
1889 |
-
for (var name_1 in formatSettings) {
|
1890 |
-
if (name_1 in EXTENDED_SETTINGS_AND_SEVERITIES) {
|
1891 |
-
extendedSettings[name_1] = formatSettings[name_1];
|
1892 |
-
severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name_1], severity);
|
1893 |
-
}
|
1894 |
-
else {
|
1895 |
-
standardDateProps[name_1] = formatSettings[name_1];
|
1896 |
-
if (name_1 in STANDARD_DATE_PROP_SEVERITIES) {
|
1897 |
-
severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name_1], severity);
|
1898 |
-
}
|
1899 |
-
}
|
1900 |
-
}
|
1901 |
-
this.standardDateProps = standardDateProps;
|
1902 |
-
this.extendedSettings = extendedSettings;
|
1903 |
-
this.severity = severity;
|
1904 |
-
this.buildFormattingFunc = memoize(buildFormattingFunc);
|
1905 |
-
}
|
1906 |
-
NativeFormatter.prototype.format = function (date, context) {
|
1907 |
-
return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);
|
1908 |
-
};
|
1909 |
-
NativeFormatter.prototype.formatRange = function (start, end, context) {
|
1910 |
-
var _a = this, standardDateProps = _a.standardDateProps, extendedSettings = _a.extendedSettings;
|
1911 |
-
var diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);
|
1912 |
-
if (!diffSeverity) {
|
1913 |
-
return this.format(start, context);
|
1914 |
-
}
|
1915 |
-
var biggestUnitForPartial = diffSeverity;
|
1916 |
-
if (biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time
|
1917 |
-
(standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') &&
|
1918 |
-
(standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') &&
|
1919 |
-
(standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) {
|
1920 |
-
biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time
|
1921 |
-
}
|
1922 |
-
var full0 = this.format(start, context);
|
1923 |
-
var full1 = this.format(end, context);
|
1924 |
-
if (full0 === full1) {
|
1925 |
-
return full0;
|
1926 |
-
}
|
1927 |
-
var partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial);
|
1928 |
-
var partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context);
|
1929 |
-
var partial0 = partialFormattingFunc(start);
|
1930 |
-
var partial1 = partialFormattingFunc(end);
|
1931 |
-
var insertion = findCommonInsertion(full0, partial0, full1, partial1);
|
1932 |
-
var separator = extendedSettings.separator || '';
|
1933 |
-
if (insertion) {
|
1934 |
-
return insertion.before + partial0 + separator + partial1 + insertion.after;
|
1935 |
-
}
|
1936 |
-
return full0 + separator + full1;
|
1937 |
-
};
|
1938 |
-
NativeFormatter.prototype.getLargestUnit = function () {
|
1939 |
-
switch (this.severity) {
|
1940 |
-
case 7:
|
1941 |
-
case 6:
|
1942 |
-
case 5:
|
1943 |
-
return 'year';
|
1944 |
-
case 4:
|
1945 |
-
return 'month';
|
1946 |
-
case 3:
|
1947 |
-
return 'week';
|
1948 |
-
default:
|
1949 |
-
return 'day';
|
1950 |
-
}
|
1951 |
-
};
|
1952 |
-
return NativeFormatter;
|
1953 |
-
}());
|
1954 |
-
function buildFormattingFunc(standardDateProps, extendedSettings, context) {
|
1955 |
-
var standardDatePropCnt = Object.keys(standardDateProps).length;
|
1956 |
-
if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {
|
1957 |
-
return function (date) {
|
1958 |
-
return formatTimeZoneOffset(date.timeZoneOffset);
|
1959 |
-
};
|
1960 |
-
}
|
1961 |
-
if (standardDatePropCnt === 0 && extendedSettings.week) {
|
1962 |
-
return function (date) {
|
1963 |
-
return formatWeekNumber(context.computeWeekNumber(date.marker), context.weekLabel, context.locale, extendedSettings.week);
|
1964 |
-
};
|
1965 |
-
}
|
1966 |
-
return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);
|
1967 |
-
}
|
1968 |
-
function buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {
|
1969 |
-
standardDateProps = __assign({}, standardDateProps); // copy
|
1970 |
-
extendedSettings = __assign({}, extendedSettings); // copy
|
1971 |
-
sanitizeSettings(standardDateProps, extendedSettings);
|
1972 |
-
standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers
|
1973 |
-
var normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps);
|
1974 |
-
var zeroFormat; // needed?
|
1975 |
-
if (extendedSettings.omitZeroMinute) {
|
1976 |
-
var zeroProps = __assign({}, standardDateProps);
|
1977 |
-
delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings
|
1978 |
-
zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps);
|
1979 |
-
}
|
1980 |
-
return function (date) {
|
1981 |
-
var marker = date.marker;
|
1982 |
-
var format;
|
1983 |
-
if (zeroFormat && !marker.getUTCMinutes()) {
|
1984 |
-
format = zeroFormat;
|
1985 |
-
}
|
1986 |
-
else {
|
1987 |
-
format = normalFormat;
|
1988 |
-
}
|
1989 |
-
var s = format.format(marker);
|
1990 |
-
return postProcess(s, date, standardDateProps, extendedSettings, context);
|
1991 |
-
};
|
1992 |
-
}
|
1993 |
-
function sanitizeSettings(standardDateProps, extendedSettings) {
|
1994 |
-
// deal with a browser inconsistency where formatting the timezone
|
1995 |
-
// requires that the hour/minute be present.
|
1996 |
-
if (standardDateProps.timeZoneName) {
|
1997 |
-
if (!standardDateProps.hour) {
|
1998 |
-
standardDateProps.hour = '2-digit';
|
1999 |
-
}
|
2000 |
-
if (!standardDateProps.minute) {
|
2001 |
-
standardDateProps.minute = '2-digit';
|
2002 |
-
}
|
2003 |
-
}
|
2004 |
-
// only support short timezone names
|
2005 |
-
if (standardDateProps.timeZoneName === 'long') {
|
2006 |
-
standardDateProps.timeZoneName = 'short';
|
2007 |
-
}
|
2008 |
-
// if requesting to display seconds, MUST display minutes
|
2009 |
-
if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {
|
2010 |
-
delete extendedSettings.omitZeroMinute;
|
2011 |
-
}
|
2012 |
-
}
|
2013 |
-
function postProcess(s, date, standardDateProps, extendedSettings, context) {
|
2014 |
-
s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes
|
2015 |
-
if (standardDateProps.timeZoneName === 'short') {
|
2016 |
-
s = injectTzoStr(s, (context.timeZone === 'UTC' || date.timeZoneOffset == null) ?
|
2017 |
-
'UTC' : // important to normalize for IE, which does "GMT"
|
2018 |
-
formatTimeZoneOffset(date.timeZoneOffset));
|
2019 |
-
}
|
2020 |
-
if (extendedSettings.omitCommas) {
|
2021 |
-
s = s.replace(COMMA_RE, '').trim();
|
2022 |
-
}
|
2023 |
-
if (extendedSettings.omitZeroMinute) {
|
2024 |
-
s = s.replace(':00', ''); // zeroFormat doesn't always achieve this
|
2025 |
-
}
|
2026 |
-
// ^ do anything that might create adjacent spaces before this point,
|
2027 |
-
// because MERIDIEM_RE likes to eat up loading spaces
|
2028 |
-
if (extendedSettings.meridiem === false) {
|
2029 |
-
s = s.replace(MERIDIEM_RE, '').trim();
|
2030 |
-
}
|
2031 |
-
else if (extendedSettings.meridiem === 'narrow') { // a/p
|
2032 |
-
s = s.replace(MERIDIEM_RE, function (m0, m1) {
|
2033 |
-
return m1.toLocaleLowerCase();
|
2034 |
-
});
|
2035 |
-
}
|
2036 |
-
else if (extendedSettings.meridiem === 'short') { // am/pm
|
2037 |
-
s = s.replace(MERIDIEM_RE, function (m0, m1) {
|
2038 |
-
return m1.toLocaleLowerCase() + 'm';
|
2039 |
-
});
|
2040 |
-
}
|
2041 |
-
else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase
|
2042 |
-
s = s.replace(MERIDIEM_RE, function (m0) {
|
2043 |
-
return m0.toLocaleLowerCase();
|
2044 |
-
});
|
2045 |
-
}
|
2046 |
-
s = s.replace(MULTI_SPACE_RE, ' ');
|
2047 |
-
s = s.trim();
|
2048 |
-
return s;
|
2049 |
-
}
|
2050 |
-
function injectTzoStr(s, tzoStr) {
|
2051 |
-
var replaced = false;
|
2052 |
-
s = s.replace(UTC_RE, function () {
|
2053 |
-
replaced = true;
|
2054 |
-
return tzoStr;
|
2055 |
-
});
|
2056 |
-
// IE11 doesn't include UTC/GMT in the original string, so append to end
|
2057 |
-
if (!replaced) {
|
2058 |
-
s += ' ' + tzoStr;
|
2059 |
-
}
|
2060 |
-
return s;
|
2061 |
-
}
|
2062 |
-
function formatWeekNumber(num, weekLabel, locale, display) {
|
2063 |
-
var parts = [];
|
2064 |
-
if (display === 'narrow') {
|
2065 |
-
parts.push(weekLabel);
|
2066 |
-
}
|
2067 |
-
else if (display === 'short') {
|
2068 |
-
parts.push(weekLabel, ' ');
|
2069 |
-
}
|
2070 |
-
// otherwise, considered 'numeric'
|
2071 |
-
parts.push(locale.simpleNumberFormat.format(num));
|
2072 |
-
if (locale.options.isRtl) { // TODO: use control characters instead?
|
2073 |
-
parts.reverse();
|
2074 |
-
}
|
2075 |
-
return parts.join('');
|
2076 |
-
}
|
2077 |
-
// Range Formatting Utils
|
2078 |
-
// 0 = exactly the same
|
2079 |
-
// 1 = different by time
|
2080 |
-
// and bigger
|
2081 |
-
function computeMarkerDiffSeverity(d0, d1, ca) {
|
2082 |
-
if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {
|
2083 |
-
return 5;
|
2084 |
-
}
|
2085 |
-
if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {
|
2086 |
-
return 4;
|
2087 |
-
}
|
2088 |
-
if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {
|
2089 |
-
return 2;
|
2090 |
-
}
|
2091 |
-
if (timeAsMs(d0) !== timeAsMs(d1)) {
|
2092 |
-
return 1;
|
2093 |
-
}
|
2094 |
-
return 0;
|
2095 |
-
}
|
2096 |
-
function computePartialFormattingOptions(options, biggestUnit) {
|
2097 |
-
var partialOptions = {};
|
2098 |
-
for (var name_2 in options) {
|
2099 |
-
if (!(name_2 in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone)
|
2100 |
-
STANDARD_DATE_PROP_SEVERITIES[name_2] <= biggestUnit) {
|
2101 |
-
partialOptions[name_2] = options[name_2];
|
2102 |
-
}
|
2103 |
-
}
|
2104 |
-
return partialOptions;
|
2105 |
-
}
|
2106 |
-
function findCommonInsertion(full0, partial0, full1, partial1) {
|
2107 |
-
var i0 = 0;
|
2108 |
-
while (i0 < full0.length) {
|
2109 |
-
var found0 = full0.indexOf(partial0, i0);
|
2110 |
-
if (found0 === -1) {
|
2111 |
-
break;
|
2112 |
-
}
|
2113 |
-
var before0 = full0.substr(0, found0);
|
2114 |
-
i0 = found0 + partial0.length;
|
2115 |
-
var after0 = full0.substr(i0);
|
2116 |
-
var i1 = 0;
|
2117 |
-
while (i1 < full1.length) {
|
2118 |
-
var found1 = full1.indexOf(partial1, i1);
|
2119 |
-
if (found1 === -1) {
|
2120 |
-
break;
|
2121 |
-
}
|
2122 |
-
var before1 = full1.substr(0, found1);
|
2123 |
-
i1 = found1 + partial1.length;
|
2124 |
-
var after1 = full1.substr(i1);
|
2125 |
-
if (before0 === before1 && after0 === after1) {
|
2126 |
-
return {
|
2127 |
-
before: before0,
|
2128 |
-
after: after0
|
2129 |
-
};
|
2130 |
-
}
|
2131 |
-
}
|
2132 |
-
}
|
2133 |
-
return null;
|
2134 |
-
}
|
2135 |
|
2136 |
-
|
2137 |
-
TODO: fix the terminology of "formatter" vs "formatting func"
|
2138 |
-
*/
|
2139 |
-
/*
|
2140 |
-
At the time of instantiation, this object does not know which cmd-formatting system it will use.
|
2141 |
-
It receives this at the time of formatting, as a setting.
|
2142 |
-
*/
|
2143 |
-
var CmdFormatter = /** @class */ (function () {
|
2144 |
-
function CmdFormatter(cmdStr, separator) {
|
2145 |
-
this.cmdStr = cmdStr;
|
2146 |
-
this.separator = separator;
|
2147 |
-
}
|
2148 |
-
CmdFormatter.prototype.format = function (date, context) {
|
2149 |
-
return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, this.separator));
|
2150 |
-
};
|
2151 |
-
CmdFormatter.prototype.formatRange = function (start, end, context) {
|
2152 |
-
return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, this.separator));
|
2153 |
-
};
|
2154 |
-
return CmdFormatter;
|
2155 |
-
}());
|
2156 |
|
2157 |
-
|
2158 |
-
function FuncFormatter(func) {
|
2159 |
-
this.func = func;
|
2160 |
-
}
|
2161 |
-
FuncFormatter.prototype.format = function (date, context) {
|
2162 |
-
return this.func(createVerboseFormattingArg(date, null, context));
|
2163 |
-
};
|
2164 |
-
FuncFormatter.prototype.formatRange = function (start, end, context) {
|
2165 |
-
return this.func(createVerboseFormattingArg(start, end, context));
|
2166 |
-
};
|
2167 |
-
return FuncFormatter;
|
2168 |
-
}());
|
2169 |
|
2170 |
-
|
2171 |
-
|
2172 |
-
|
2173 |
-
|
2174 |
-
|
2175 |
-
|
2176 |
-
|
2177 |
-
|
2178 |
-
|
2179 |
-
|
2180 |
-
|
2181 |
-
|
2182 |
-
|
2183 |
-
|
2184 |
-
|
2185 |
-
|
2186 |
-
|
2187 |
-
|
2188 |
-
|
2189 |
-
|
2190 |
-
|
2191 |
-
|
2192 |
-
|
2193 |
-
|
2194 |
-
|
2195 |
-
|
2196 |
-
|
2197 |
-
|
2198 |
-
|
2199 |
-
|
2200 |
-
|
2201 |
-
|
2202 |
-
|
2203 |
-
|
2204 |
-
|
2205 |
-
|
2206 |
-
|
2207 |
-
|
2208 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2209 |
}
|
2210 |
-
|
2211 |
-
|
2212 |
-
|
2213 |
-
|
2214 |
-
|
2215 |
-
|
2216 |
-
|
2217 |
-
|
2218 |
-
|
2219 |
-
|
2220 |
-
|
2221 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2222 |
}
|
2223 |
-
//
|
2224 |
-
|
2225 |
-
|
2226 |
-
var endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null;
|
2227 |
-
return {
|
2228 |
-
date: startInfo,
|
2229 |
-
start: startInfo,
|
2230 |
-
end: endInfo,
|
2231 |
-
timeZone: context.timeZone,
|
2232 |
-
localeCodes: context.locale.codes,
|
2233 |
-
separator: separator
|
2234 |
-
};
|
2235 |
}
|
2236 |
-
|
2237 |
-
|
2238 |
-
|
2239 |
-
|
2240 |
-
|
2241 |
-
|
2242 |
-
|
2243 |
-
|
2244 |
-
|
2245 |
-
hour: a[3],
|
2246 |
-
minute: a[4],
|
2247 |
-
second: a[5],
|
2248 |
-
millisecond: a[6]
|
2249 |
-
};
|
2250 |
}
|
|
|
2251 |
|
2252 |
-
|
2253 |
-
|
2254 |
-
|
2255 |
-
this.internalEventSource = internalEventSource;
|
2256 |
-
}
|
2257 |
-
EventSourceApi.prototype.remove = function () {
|
2258 |
-
this.calendar.dispatch({
|
2259 |
-
type: 'REMOVE_EVENT_SOURCE',
|
2260 |
-
sourceId: this.internalEventSource.sourceId
|
2261 |
-
});
|
2262 |
-
};
|
2263 |
-
EventSourceApi.prototype.refetch = function () {
|
2264 |
-
this.calendar.dispatch({
|
2265 |
-
type: 'FETCH_EVENT_SOURCES',
|
2266 |
-
sourceIds: [this.internalEventSource.sourceId]
|
2267 |
-
});
|
2268 |
-
};
|
2269 |
-
Object.defineProperty(EventSourceApi.prototype, "id", {
|
2270 |
-
get: function () {
|
2271 |
-
return this.internalEventSource.publicId;
|
2272 |
-
},
|
2273 |
-
enumerable: true,
|
2274 |
-
configurable: true
|
2275 |
-
});
|
2276 |
-
Object.defineProperty(EventSourceApi.prototype, "url", {
|
2277 |
-
// only relevant to json-feed event sources
|
2278 |
-
get: function () {
|
2279 |
-
return this.internalEventSource.meta.url;
|
2280 |
-
},
|
2281 |
-
enumerable: true,
|
2282 |
-
configurable: true
|
2283 |
-
});
|
2284 |
-
return EventSourceApi;
|
2285 |
-
}());
|
2286 |
|
2287 |
-
|
2288 |
-
function EventApi(calendar, def, instance) {
|
2289 |
-
this._calendar = calendar;
|
2290 |
-
this._def = def;
|
2291 |
-
this._instance = instance || null;
|
2292 |
-
}
|
2293 |
-
/*
|
2294 |
-
TODO: make event struct more responsible for this
|
2295 |
-
*/
|
2296 |
-
EventApi.prototype.setProp = function (name, val) {
|
2297 |
-
var _a, _b;
|
2298 |
-
if (name in DATE_PROPS) ;
|
2299 |
-
else if (name in NON_DATE_PROPS) {
|
2300 |
-
if (typeof NON_DATE_PROPS[name] === 'function') {
|
2301 |
-
val = NON_DATE_PROPS[name](val);
|
2302 |
-
}
|
2303 |
-
this.mutate({
|
2304 |
-
standardProps: (_a = {}, _a[name] = val, _a)
|
2305 |
-
});
|
2306 |
-
}
|
2307 |
-
else if (name in UNSCOPED_EVENT_UI_PROPS) {
|
2308 |
-
var ui = void 0;
|
2309 |
-
if (typeof UNSCOPED_EVENT_UI_PROPS[name] === 'function') {
|
2310 |
-
val = UNSCOPED_EVENT_UI_PROPS[name](val);
|
2311 |
-
}
|
2312 |
-
if (name === 'color') {
|
2313 |
-
ui = { backgroundColor: val, borderColor: val };
|
2314 |
-
}
|
2315 |
-
else if (name === 'editable') {
|
2316 |
-
ui = { startEditable: val, durationEditable: val };
|
2317 |
-
}
|
2318 |
-
else {
|
2319 |
-
ui = (_b = {}, _b[name] = val, _b);
|
2320 |
-
}
|
2321 |
-
this.mutate({
|
2322 |
-
standardProps: { ui: ui }
|
2323 |
-
});
|
2324 |
-
}
|
2325 |
-
};
|
2326 |
-
EventApi.prototype.setExtendedProp = function (name, val) {
|
2327 |
-
var _a;
|
2328 |
-
this.mutate({
|
2329 |
-
extendedProps: (_a = {}, _a[name] = val, _a)
|
2330 |
-
});
|
2331 |
-
};
|
2332 |
-
EventApi.prototype.setStart = function (startInput, options) {
|
2333 |
-
if (options === void 0) { options = {}; }
|
2334 |
-
var dateEnv = this._calendar.dateEnv;
|
2335 |
-
var start = dateEnv.createMarker(startInput);
|
2336 |
-
if (start && this._instance) { // TODO: warning if parsed bad
|
2337 |
-
var instanceRange = this._instance.range;
|
2338 |
-
var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!?
|
2339 |
-
if (options.maintainDuration) {
|
2340 |
-
this.mutate({ datesDelta: startDelta });
|
2341 |
-
}
|
2342 |
-
else {
|
2343 |
-
this.mutate({ startDelta: startDelta });
|
2344 |
-
}
|
2345 |
-
}
|
2346 |
-
};
|
2347 |
-
EventApi.prototype.setEnd = function (endInput, options) {
|
2348 |
-
if (options === void 0) { options = {}; }
|
2349 |
-
var dateEnv = this._calendar.dateEnv;
|
2350 |
-
var end;
|
2351 |
-
if (endInput != null) {
|
2352 |
-
end = dateEnv.createMarker(endInput);
|
2353 |
-
if (!end) {
|
2354 |
-
return; // TODO: warning if parsed bad
|
2355 |
-
}
|
2356 |
-
}
|
2357 |
-
if (this._instance) {
|
2358 |
-
if (end) {
|
2359 |
-
var endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity);
|
2360 |
-
this.mutate({ endDelta: endDelta });
|
2361 |
-
}
|
2362 |
-
else {
|
2363 |
-
this.mutate({ standardProps: { hasEnd: false } });
|
2364 |
-
}
|
2365 |
-
}
|
2366 |
-
};
|
2367 |
-
EventApi.prototype.setDates = function (startInput, endInput, options) {
|
2368 |
-
if (options === void 0) { options = {}; }
|
2369 |
-
var dateEnv = this._calendar.dateEnv;
|
2370 |
-
var standardProps = { allDay: options.allDay };
|
2371 |
-
var start = dateEnv.createMarker(startInput);
|
2372 |
-
var end;
|
2373 |
-
if (!start) {
|
2374 |
-
return; // TODO: warning if parsed bad
|
2375 |
-
}
|
2376 |
-
if (endInput != null) {
|
2377 |
-
end = dateEnv.createMarker(endInput);
|
2378 |
-
if (!end) { // TODO: warning if parsed bad
|
2379 |
-
return;
|
2380 |
-
}
|
2381 |
-
}
|
2382 |
-
if (this._instance) {
|
2383 |
-
var instanceRange = this._instance.range;
|
2384 |
-
// when computing the diff for an event being converted to all-day,
|
2385 |
-
// compute diff off of the all-day values the way event-mutation does.
|
2386 |
-
if (options.allDay === true) {
|
2387 |
-
instanceRange = computeAlignedDayRange(instanceRange);
|
2388 |
-
}
|
2389 |
-
var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity);
|
2390 |
-
if (end) {
|
2391 |
-
var endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity);
|
2392 |
-
if (durationsEqual(startDelta, endDelta)) {
|
2393 |
-
this.mutate({ datesDelta: startDelta, standardProps: standardProps });
|
2394 |
-
}
|
2395 |
-
else {
|
2396 |
-
this.mutate({ startDelta: startDelta, endDelta: endDelta, standardProps: standardProps });
|
2397 |
-
}
|
2398 |
-
}
|
2399 |
-
else { // means "clear the end"
|
2400 |
-
standardProps.hasEnd = false;
|
2401 |
-
this.mutate({ datesDelta: startDelta, standardProps: standardProps });
|
2402 |
-
}
|
2403 |
-
}
|
2404 |
-
};
|
2405 |
-
EventApi.prototype.moveStart = function (deltaInput) {
|
2406 |
-
var delta = createDuration(deltaInput);
|
2407 |
-
if (delta) { // TODO: warning if parsed bad
|
2408 |
-
this.mutate({ startDelta: delta });
|
2409 |
-
}
|
2410 |
-
};
|
2411 |
-
EventApi.prototype.moveEnd = function (deltaInput) {
|
2412 |
-
var delta = createDuration(deltaInput);
|
2413 |
-
if (delta) { // TODO: warning if parsed bad
|
2414 |
-
this.mutate({ endDelta: delta });
|
2415 |
-
}
|
2416 |
-
};
|
2417 |
-
EventApi.prototype.moveDates = function (deltaInput) {
|
2418 |
-
var delta = createDuration(deltaInput);
|
2419 |
-
if (delta) { // TODO: warning if parsed bad
|
2420 |
-
this.mutate({ datesDelta: delta });
|
2421 |
-
}
|
2422 |
-
};
|
2423 |
-
EventApi.prototype.setAllDay = function (allDay, options) {
|
2424 |
-
if (options === void 0) { options = {}; }
|
2425 |
-
var standardProps = { allDay: allDay };
|
2426 |
-
var maintainDuration = options.maintainDuration;
|
2427 |
-
if (maintainDuration == null) {
|
2428 |
-
maintainDuration = this._calendar.opt('allDayMaintainDuration');
|
2429 |
-
}
|
2430 |
-
if (this._def.allDay !== allDay) {
|
2431 |
-
standardProps.hasEnd = maintainDuration;
|
2432 |
-
}
|
2433 |
-
this.mutate({ standardProps: standardProps });
|
2434 |
-
};
|
2435 |
-
EventApi.prototype.formatRange = function (formatInput) {
|
2436 |
-
var dateEnv = this._calendar.dateEnv;
|
2437 |
-
var instance = this._instance;
|
2438 |
-
var formatter = createFormatter(formatInput, this._calendar.opt('defaultRangeSeparator'));
|
2439 |
-
if (this._def.hasEnd) {
|
2440 |
-
return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {
|
2441 |
-
forcedStartTzo: instance.forcedStartTzo,
|
2442 |
-
forcedEndTzo: instance.forcedEndTzo
|
2443 |
-
});
|
2444 |
-
}
|
2445 |
-
else {
|
2446 |
-
return dateEnv.format(instance.range.start, formatter, {
|
2447 |
-
forcedTzo: instance.forcedStartTzo
|
2448 |
-
});
|
2449 |
-
}
|
2450 |
-
};
|
2451 |
-
EventApi.prototype.mutate = function (mutation) {
|
2452 |
-
var def = this._def;
|
2453 |
-
var instance = this._instance;
|
2454 |
-
if (instance) {
|
2455 |
-
this._calendar.dispatch({
|
2456 |
-
type: 'MUTATE_EVENTS',
|
2457 |
-
instanceId: instance.instanceId,
|
2458 |
-
mutation: mutation,
|
2459 |
-
fromApi: true
|
2460 |
-
});
|
2461 |
-
var eventStore = this._calendar.state.eventStore;
|
2462 |
-
this._def = eventStore.defs[def.defId];
|
2463 |
-
this._instance = eventStore.instances[instance.instanceId];
|
2464 |
-
}
|
2465 |
-
};
|
2466 |
-
EventApi.prototype.remove = function () {
|
2467 |
-
this._calendar.dispatch({
|
2468 |
-
type: 'REMOVE_EVENT_DEF',
|
2469 |
-
defId: this._def.defId
|
2470 |
-
});
|
2471 |
-
};
|
2472 |
-
Object.defineProperty(EventApi.prototype, "source", {
|
2473 |
-
get: function () {
|
2474 |
-
var sourceId = this._def.sourceId;
|
2475 |
-
if (sourceId) {
|
2476 |
-
return new EventSourceApi(this._calendar, this._calendar.state.eventSources[sourceId]);
|
2477 |
-
}
|
2478 |
-
return null;
|
2479 |
-
},
|
2480 |
-
enumerable: true,
|
2481 |
-
configurable: true
|
2482 |
-
});
|
2483 |
-
Object.defineProperty(EventApi.prototype, "start", {
|
2484 |
-
get: function () {
|
2485 |
-
return this._instance ?
|
2486 |
-
this._calendar.dateEnv.toDate(this._instance.range.start) :
|
2487 |
-
null;
|
2488 |
-
},
|
2489 |
-
enumerable: true,
|
2490 |
-
configurable: true
|
2491 |
-
});
|
2492 |
-
Object.defineProperty(EventApi.prototype, "end", {
|
2493 |
-
get: function () {
|
2494 |
-
return (this._instance && this._def.hasEnd) ?
|
2495 |
-
this._calendar.dateEnv.toDate(this._instance.range.end) :
|
2496 |
-
null;
|
2497 |
-
},
|
2498 |
-
enumerable: true,
|
2499 |
-
configurable: true
|
2500 |
-
});
|
2501 |
-
Object.defineProperty(EventApi.prototype, "id", {
|
2502 |
-
// computable props that all access the def
|
2503 |
-
// TODO: find a TypeScript-compatible way to do this at scale
|
2504 |
-
get: function () { return this._def.publicId; },
|
2505 |
-
enumerable: true,
|
2506 |
-
configurable: true
|
2507 |
-
});
|
2508 |
-
Object.defineProperty(EventApi.prototype, "groupId", {
|
2509 |
-
get: function () { return this._def.groupId; },
|
2510 |
-
enumerable: true,
|
2511 |
-
configurable: true
|
2512 |
-
});
|
2513 |
-
Object.defineProperty(EventApi.prototype, "allDay", {
|
2514 |
-
get: function () { return this._def.allDay; },
|
2515 |
-
enumerable: true,
|
2516 |
-
configurable: true
|
2517 |
-
});
|
2518 |
-
Object.defineProperty(EventApi.prototype, "title", {
|
2519 |
-
get: function () { return this._def.title; },
|
2520 |
-
enumerable: true,
|
2521 |
-
configurable: true
|
2522 |
-
});
|
2523 |
-
Object.defineProperty(EventApi.prototype, "url", {
|
2524 |
-
get: function () { return this._def.url; },
|
2525 |
-
enumerable: true,
|
2526 |
-
configurable: true
|
2527 |
-
});
|
2528 |
-
Object.defineProperty(EventApi.prototype, "rendering", {
|
2529 |
-
get: function () { return this._def.rendering; },
|
2530 |
-
enumerable: true,
|
2531 |
-
configurable: true
|
2532 |
-
});
|
2533 |
-
Object.defineProperty(EventApi.prototype, "startEditable", {
|
2534 |
-
get: function () { return this._def.ui.startEditable; },
|
2535 |
-
enumerable: true,
|
2536 |
-
configurable: true
|
2537 |
-
});
|
2538 |
-
Object.defineProperty(EventApi.prototype, "durationEditable", {
|
2539 |
-
get: function () { return this._def.ui.durationEditable; },
|
2540 |
-
enumerable: true,
|
2541 |
-
configurable: true
|
2542 |
-
});
|
2543 |
-
Object.defineProperty(EventApi.prototype, "constraint", {
|
2544 |
-
get: function () { return this._def.ui.constraints[0] || null; },
|
2545 |
-
enumerable: true,
|
2546 |
-
configurable: true
|
2547 |
-
});
|
2548 |
-
Object.defineProperty(EventApi.prototype, "overlap", {
|
2549 |
-
get: function () { return this._def.ui.overlap; },
|
2550 |
-
enumerable: true,
|
2551 |
-
configurable: true
|
2552 |
-
});
|
2553 |
-
Object.defineProperty(EventApi.prototype, "allow", {
|
2554 |
-
get: function () { return this._def.ui.allows[0] || null; },
|
2555 |
-
enumerable: true,
|
2556 |
-
configurable: true
|
2557 |
-
});
|
2558 |
-
Object.defineProperty(EventApi.prototype, "backgroundColor", {
|
2559 |
-
get: function () { return this._def.ui.backgroundColor; },
|
2560 |
-
enumerable: true,
|
2561 |
-
configurable: true
|
2562 |
-
});
|
2563 |
-
Object.defineProperty(EventApi.prototype, "borderColor", {
|
2564 |
-
get: function () { return this._def.ui.borderColor; },
|
2565 |
-
enumerable: true,
|
2566 |
-
configurable: true
|
2567 |
-
});
|
2568 |
-
Object.defineProperty(EventApi.prototype, "textColor", {
|
2569 |
-
get: function () { return this._def.ui.textColor; },
|
2570 |
-
enumerable: true,
|
2571 |
-
configurable: true
|
2572 |
-
});
|
2573 |
-
Object.defineProperty(EventApi.prototype, "classNames", {
|
2574 |
-
// NOTE: user can't modify these because Object.freeze was called in event-def parsing
|
2575 |
-
get: function () { return this._def.ui.classNames; },
|
2576 |
-
enumerable: true,
|
2577 |
-
configurable: true
|
2578 |
-
});
|
2579 |
-
Object.defineProperty(EventApi.prototype, "extendedProps", {
|
2580 |
-
get: function () { return this._def.extendedProps; },
|
2581 |
-
enumerable: true,
|
2582 |
-
configurable: true
|
2583 |
-
});
|
2584 |
-
return EventApi;
|
2585 |
-
}());
|
2586 |
|
2587 |
-
|
2588 |
-
|
2589 |
-
|
2590 |
-
|
2591 |
-
var inverseBgByGroupId = {};
|
2592 |
-
var inverseBgByDefId = {};
|
2593 |
-
var defByGroupId = {};
|
2594 |
-
var bgRanges = [];
|
2595 |
-
var fgRanges = [];
|
2596 |
-
var eventUis = compileEventUis(eventStore.defs, eventUiBases);
|
2597 |
-
for (var defId in eventStore.defs) {
|
2598 |
-
var def = eventStore.defs[defId];
|
2599 |
-
if (def.rendering === 'inverse-background') {
|
2600 |
-
if (def.groupId) {
|
2601 |
-
inverseBgByGroupId[def.groupId] = [];
|
2602 |
-
if (!defByGroupId[def.groupId]) {
|
2603 |
-
defByGroupId[def.groupId] = def;
|
2604 |
-
}
|
2605 |
-
}
|
2606 |
-
else {
|
2607 |
-
inverseBgByDefId[defId] = [];
|
2608 |
-
}
|
2609 |
-
}
|
2610 |
-
}
|
2611 |
-
for (var instanceId in eventStore.instances) {
|
2612 |
-
var instance = eventStore.instances[instanceId];
|
2613 |
-
var def = eventStore.defs[instance.defId];
|
2614 |
-
var ui = eventUis[def.defId];
|
2615 |
-
var origRange = instance.range;
|
2616 |
-
var normalRange = (!def.allDay && nextDayThreshold) ?
|
2617 |
-
computeVisibleDayRange(origRange, nextDayThreshold) :
|
2618 |
-
origRange;
|
2619 |
-
var slicedRange = intersectRanges(normalRange, framingRange);
|
2620 |
-
if (slicedRange) {
|
2621 |
-
if (def.rendering === 'inverse-background') {
|
2622 |
-
if (def.groupId) {
|
2623 |
-
inverseBgByGroupId[def.groupId].push(slicedRange);
|
2624 |
-
}
|
2625 |
-
else {
|
2626 |
-
inverseBgByDefId[instance.defId].push(slicedRange);
|
2627 |
-
}
|
2628 |
-
}
|
2629 |
-
else {
|
2630 |
-
(def.rendering === 'background' ? bgRanges : fgRanges).push({
|
2631 |
-
def: def,
|
2632 |
-
ui: ui,
|
2633 |
-
instance: instance,
|
2634 |
-
range: slicedRange,
|
2635 |
-
isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),
|
2636 |
-
isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf()
|
2637 |
-
});
|
2638 |
-
}
|
2639 |
-
}
|
2640 |
-
}
|
2641 |
-
for (var groupId in inverseBgByGroupId) { // BY GROUP
|
2642 |
-
var ranges = inverseBgByGroupId[groupId];
|
2643 |
-
var invertedRanges = invertRanges(ranges, framingRange);
|
2644 |
-
for (var _i = 0, invertedRanges_1 = invertedRanges; _i < invertedRanges_1.length; _i++) {
|
2645 |
-
var invertedRange = invertedRanges_1[_i];
|
2646 |
-
var def = defByGroupId[groupId];
|
2647 |
-
var ui = eventUis[def.defId];
|
2648 |
-
bgRanges.push({
|
2649 |
-
def: def,
|
2650 |
-
ui: ui,
|
2651 |
-
instance: null,
|
2652 |
-
range: invertedRange,
|
2653 |
-
isStart: false,
|
2654 |
-
isEnd: false
|
2655 |
-
});
|
2656 |
-
}
|
2657 |
-
}
|
2658 |
-
for (var defId in inverseBgByDefId) {
|
2659 |
-
var ranges = inverseBgByDefId[defId];
|
2660 |
-
var invertedRanges = invertRanges(ranges, framingRange);
|
2661 |
-
for (var _a = 0, invertedRanges_2 = invertedRanges; _a < invertedRanges_2.length; _a++) {
|
2662 |
-
var invertedRange = invertedRanges_2[_a];
|
2663 |
-
bgRanges.push({
|
2664 |
-
def: eventStore.defs[defId],
|
2665 |
-
ui: eventUis[defId],
|
2666 |
-
instance: null,
|
2667 |
-
range: invertedRange,
|
2668 |
-
isStart: false,
|
2669 |
-
isEnd: false
|
2670 |
-
});
|
2671 |
-
}
|
2672 |
-
}
|
2673 |
-
return { bg: bgRanges, fg: fgRanges };
|
2674 |
-
}
|
2675 |
-
function hasBgRendering(def) {
|
2676 |
-
return def.rendering === 'background' || def.rendering === 'inverse-background';
|
2677 |
-
}
|
2678 |
-
function filterSegsViaEls(view, segs, isMirror) {
|
2679 |
-
if (view.hasPublicHandlers('eventRender')) {
|
2680 |
-
segs = segs.filter(function (seg) {
|
2681 |
-
var custom = view.publiclyTrigger('eventRender', [
|
2682 |
-
{
|
2683 |
-
event: new EventApi(view.calendar, seg.eventRange.def, seg.eventRange.instance),
|
2684 |
-
isMirror: isMirror,
|
2685 |
-
isStart: seg.isStart,
|
2686 |
-
isEnd: seg.isEnd,
|
2687 |
-
// TODO: include seg.range once all components consistently generate it
|
2688 |
-
el: seg.el,
|
2689 |
-
view: view
|
2690 |
-
}
|
2691 |
-
]);
|
2692 |
-
if (custom === false) { // means don't render at all
|
2693 |
-
return false;
|
2694 |
-
}
|
2695 |
-
else if (custom && custom !== true) {
|
2696 |
-
seg.el = custom;
|
2697 |
-
}
|
2698 |
-
return true;
|
2699 |
-
});
|
2700 |
-
}
|
2701 |
-
for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {
|
2702 |
-
var seg = segs_1[_i];
|
2703 |
-
setElSeg(seg.el, seg);
|
2704 |
-
}
|
2705 |
-
return segs;
|
2706 |
-
}
|
2707 |
-
function setElSeg(el, seg) {
|
2708 |
-
el.fcSeg = seg;
|
2709 |
-
}
|
2710 |
-
function getElSeg(el) {
|
2711 |
-
return el.fcSeg || null;
|
2712 |
-
}
|
2713 |
-
// event ui computation
|
2714 |
-
function compileEventUis(eventDefs, eventUiBases) {
|
2715 |
-
return mapHash(eventDefs, function (eventDef) {
|
2716 |
-
return compileEventUi(eventDef, eventUiBases);
|
2717 |
-
});
|
2718 |
-
}
|
2719 |
-
function compileEventUi(eventDef, eventUiBases) {
|
2720 |
-
var uis = [];
|
2721 |
-
if (eventUiBases['']) {
|
2722 |
-
uis.push(eventUiBases['']);
|
2723 |
-
}
|
2724 |
-
if (eventUiBases[eventDef.defId]) {
|
2725 |
-
uis.push(eventUiBases[eventDef.defId]);
|
2726 |
-
}
|
2727 |
-
uis.push(eventDef.ui);
|
2728 |
-
return combineEventUis(uis);
|
2729 |
-
}
|
2730 |
|
2731 |
-
|
2732 |
-
function applyMutationToEventStore(eventStore, eventConfigBase, mutation, calendar) {
|
2733 |
-
var eventConfigs = compileEventUis(eventStore.defs, eventConfigBase);
|
2734 |
-
var dest = createEmptyEventStore();
|
2735 |
-
for (var defId in eventStore.defs) {
|
2736 |
-
var def = eventStore.defs[defId];
|
2737 |
-
dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, calendar.pluginSystem.hooks.eventDefMutationAppliers, calendar);
|
2738 |
-
}
|
2739 |
-
for (var instanceId in eventStore.instances) {
|
2740 |
-
var instance = eventStore.instances[instanceId];
|
2741 |
-
var def = dest.defs[instance.defId]; // important to grab the newly modified def
|
2742 |
-
dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, calendar);
|
2743 |
-
}
|
2744 |
-
return dest;
|
2745 |
-
}
|
2746 |
-
function applyMutationToEventDef(eventDef, eventConfig, mutation, appliers, calendar) {
|
2747 |
-
var standardProps = mutation.standardProps || {};
|
2748 |
-
// if hasEnd has not been specified, guess a good value based on deltas.
|
2749 |
-
// if duration will change, there's no way the default duration will persist,
|
2750 |
-
// and thus, we need to mark the event as having a real end
|
2751 |
-
if (standardProps.hasEnd == null &&
|
2752 |
-
eventConfig.durationEditable &&
|
2753 |
-
(mutation.startDelta || mutation.endDelta)) {
|
2754 |
-
standardProps.hasEnd = true; // TODO: is this mutation okay?
|
2755 |
-
}
|
2756 |
-
var copy = __assign({}, eventDef, standardProps, { ui: __assign({}, eventDef.ui, standardProps.ui) });
|
2757 |
-
if (mutation.extendedProps) {
|
2758 |
-
copy.extendedProps = __assign({}, copy.extendedProps, mutation.extendedProps);
|
2759 |
-
}
|
2760 |
-
for (var _i = 0, appliers_1 = appliers; _i < appliers_1.length; _i++) {
|
2761 |
-
var applier = appliers_1[_i];
|
2762 |
-
applier(copy, mutation, calendar);
|
2763 |
-
}
|
2764 |
-
if (!copy.hasEnd && calendar.opt('forceEventDuration')) {
|
2765 |
-
copy.hasEnd = true;
|
2766 |
-
}
|
2767 |
-
return copy;
|
2768 |
-
}
|
2769 |
-
function applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef
|
2770 |
-
eventConfig, mutation, calendar) {
|
2771 |
-
var dateEnv = calendar.dateEnv;
|
2772 |
-
var forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true;
|
2773 |
-
var clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false;
|
2774 |
-
var copy = __assign({}, eventInstance);
|
2775 |
-
if (forceAllDay) {
|
2776 |
-
copy.range = computeAlignedDayRange(copy.range);
|
2777 |
-
}
|
2778 |
-
if (mutation.datesDelta && eventConfig.startEditable) {
|
2779 |
-
copy.range = {
|
2780 |
-
start: dateEnv.add(copy.range.start, mutation.datesDelta),
|
2781 |
-
end: dateEnv.add(copy.range.end, mutation.datesDelta)
|
2782 |
-
};
|
2783 |
-
}
|
2784 |
-
if (mutation.startDelta && eventConfig.durationEditable) {
|
2785 |
-
copy.range = {
|
2786 |
-
start: dateEnv.add(copy.range.start, mutation.startDelta),
|
2787 |
-
end: copy.range.end
|
2788 |
-
};
|
2789 |
-
}
|
2790 |
-
if (mutation.endDelta && eventConfig.durationEditable) {
|
2791 |
-
copy.range = {
|
2792 |
-
start: copy.range.start,
|
2793 |
-
end: dateEnv.add(copy.range.end, mutation.endDelta)
|
2794 |
-
};
|
2795 |
-
}
|
2796 |
-
if (clearEnd) {
|
2797 |
-
copy.range = {
|
2798 |
-
start: copy.range.start,
|
2799 |
-
end: calendar.getDefaultEventEnd(eventDef.allDay, copy.range.start)
|
2800 |
-
};
|
2801 |
-
}
|
2802 |
-
// in case event was all-day but the supplied deltas were not
|
2803 |
-
// better util for this?
|
2804 |
-
if (eventDef.allDay) {
|
2805 |
-
copy.range = {
|
2806 |
-
start: startOfDay(copy.range.start),
|
2807 |
-
end: startOfDay(copy.range.end)
|
2808 |
-
};
|
2809 |
-
}
|
2810 |
-
// handle invalid durations
|
2811 |
-
if (copy.range.end < copy.range.start) {
|
2812 |
-
copy.range.end = calendar.getDefaultEventEnd(eventDef.allDay, copy.range.start);
|
2813 |
-
}
|
2814 |
-
return copy;
|
2815 |
-
}
|
2816 |
|
2817 |
-
|
2818 |
-
|
2819 |
-
|
2820 |
-
return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, calendar);
|
2821 |
-
case 'ADD_EVENTS': // already parsed, but not expanded
|
2822 |
-
return addEvent(eventStore, action.eventStore, // new ones
|
2823 |
-
dateProfile ? dateProfile.activeRange : null, calendar);
|
2824 |
-
case 'MERGE_EVENTS': // already parsed and expanded
|
2825 |
-
return mergeEventStores(eventStore, action.eventStore);
|
2826 |
-
case 'PREV': // TODO: how do we track all actions that affect dateProfile :(
|
2827 |
-
case 'NEXT':
|
2828 |
-
case 'SET_DATE':
|
2829 |
-
case 'SET_VIEW_TYPE':
|
2830 |
-
if (dateProfile) {
|
2831 |
-
return expandRecurring(eventStore, dateProfile.activeRange, calendar);
|
2832 |
-
}
|
2833 |
-
else {
|
2834 |
-
return eventStore;
|
2835 |
-
}
|
2836 |
-
case 'CHANGE_TIMEZONE':
|
2837 |
-
return rezoneDates(eventStore, action.oldDateEnv, calendar.dateEnv);
|
2838 |
-
case 'MUTATE_EVENTS':
|
2839 |
-
return applyMutationToRelated(eventStore, action.instanceId, action.mutation, action.fromApi, calendar);
|
2840 |
-
case 'REMOVE_EVENT_INSTANCES':
|
2841 |
-
return excludeInstances(eventStore, action.instances);
|
2842 |
-
case 'REMOVE_EVENT_DEF':
|
2843 |
-
return filterEventStoreDefs(eventStore, function (eventDef) {
|
2844 |
-
return eventDef.defId !== action.defId;
|
2845 |
-
});
|
2846 |
-
case 'REMOVE_EVENT_SOURCE':
|
2847 |
-
return excludeEventsBySourceId(eventStore, action.sourceId);
|
2848 |
-
case 'REMOVE_ALL_EVENT_SOURCES':
|
2849 |
-
return filterEventStoreDefs(eventStore, function (eventDef) {
|
2850 |
-
return !eventDef.sourceId; // only keep events with no source id
|
2851 |
-
});
|
2852 |
-
case 'REMOVE_ALL_EVENTS':
|
2853 |
-
return createEmptyEventStore();
|
2854 |
-
case 'RESET_EVENTS':
|
2855 |
-
return {
|
2856 |
-
defs: eventStore.defs,
|
2857 |
-
instances: eventStore.instances
|
2858 |
-
};
|
2859 |
-
default:
|
2860 |
-
return eventStore;
|
2861 |
-
}
|
2862 |
-
}
|
2863 |
-
function receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, calendar) {
|
2864 |
-
if (eventSource && // not already removed
|
2865 |
-
fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources
|
2866 |
-
) {
|
2867 |
-
var subset = parseEvents(transformRawEvents(rawEvents, eventSource, calendar), eventSource.sourceId, calendar);
|
2868 |
-
if (fetchRange) {
|
2869 |
-
subset = expandRecurring(subset, fetchRange, calendar);
|
2870 |
-
}
|
2871 |
-
return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset);
|
2872 |
-
}
|
2873 |
-
return eventStore;
|
2874 |
-
}
|
2875 |
-
function addEvent(eventStore, subset, expandRange, calendar) {
|
2876 |
-
if (expandRange) {
|
2877 |
-
subset = expandRecurring(subset, expandRange, calendar);
|
2878 |
-
}
|
2879 |
-
return mergeEventStores(eventStore, subset);
|
2880 |
-
}
|
2881 |
-
function rezoneDates(eventStore, oldDateEnv, newDateEnv) {
|
2882 |
-
var defs = eventStore.defs;
|
2883 |
-
var instances = mapHash(eventStore.instances, function (instance) {
|
2884 |
-
var def = defs[instance.defId];
|
2885 |
-
if (def.allDay || def.recurringDef) {
|
2886 |
-
return instance; // isn't dependent on timezone
|
2887 |
-
}
|
2888 |
-
else {
|
2889 |
-
return __assign({}, instance, { range: {
|
2890 |
-
start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),
|
2891 |
-
end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo))
|
2892 |
-
}, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo });
|
2893 |
-
}
|
2894 |
-
});
|
2895 |
-
return { defs: defs, instances: instances };
|
2896 |
-
}
|
2897 |
-
function applyMutationToRelated(eventStore, instanceId, mutation, fromApi, calendar) {
|
2898 |
-
var relevant = getRelevantEvents(eventStore, instanceId);
|
2899 |
-
var eventConfigBase = fromApi ?
|
2900 |
-
{ '': {
|
2901 |
-
startEditable: true,
|
2902 |
-
durationEditable: true,
|
2903 |
-
constraints: [],
|
2904 |
-
overlap: null,
|
2905 |
-
allows: [],
|
2906 |
-
backgroundColor: '',
|
2907 |
-
borderColor: '',
|
2908 |
-
textColor: '',
|
2909 |
-
classNames: []
|
2910 |
-
} } :
|
2911 |
-
calendar.eventUiBases;
|
2912 |
-
relevant = applyMutationToEventStore(relevant, eventConfigBase, mutation, calendar);
|
2913 |
-
return mergeEventStores(eventStore, relevant);
|
2914 |
-
}
|
2915 |
-
function excludeEventsBySourceId(eventStore, sourceId) {
|
2916 |
-
return filterEventStoreDefs(eventStore, function (eventDef) {
|
2917 |
-
return eventDef.sourceId !== sourceId;
|
2918 |
-
});
|
2919 |
-
}
|
2920 |
-
// QUESTION: why not just return instances? do a general object-property-exclusion util
|
2921 |
-
function excludeInstances(eventStore, removals) {
|
2922 |
-
return {
|
2923 |
-
defs: eventStore.defs,
|
2924 |
-
instances: filterHash(eventStore.instances, function (instance) {
|
2925 |
-
return !removals[instance.instanceId];
|
2926 |
-
})
|
2927 |
-
};
|
2928 |
-
}
|
2929 |
|
2930 |
-
|
2931 |
-
//
|
2932 |
-
|
2933 |
-
|
2934 |
-
|
2935 |
-
|
2936 |
-
|
2937 |
-
|
2938 |
-
|
2939 |
-
|
2940 |
-
|
2941 |
-
|
2942 |
-
|
2943 |
-
|
2944 |
-
|
2945 |
-
|
2946 |
-
|
2947 |
-
|
2948 |
-
|
2949 |
-
|
2950 |
-
|
2951 |
-
|
2952 |
-
|
2953 |
-
|
2954 |
-
|
2955 |
-
|
2956 |
-
|
2957 |
-
|
2958 |
-
|
2959 |
-
|
2960 |
-
|
2961 |
-
|
2962 |
-
|
2963 |
-
|
2964 |
-
|
2965 |
-
|
2966 |
-
|
2967 |
-
|
2968 |
-
|
2969 |
-
|
2970 |
-
|
2971 |
-
|
2972 |
-
|
2973 |
-
|
2974 |
-
|
2975 |
-
|
2976 |
-
|
2977 |
-
|
2978 |
-
|
2979 |
-
|
2980 |
-
|
2981 |
-
|
2982 |
-
|
2983 |
-
|
2984 |
-
|
2985 |
-
|
2986 |
-
|
2987 |
-
|
2988 |
-
|
2989 |
-
|
2990 |
-
|
2991 |
-
|
2992 |
-
|
2993 |
-
|
2994 |
-
|
2995 |
-
|
2996 |
-
|
2997 |
-
|
2998 |
-
|
2999 |
-
|
3000 |
-
|
3001 |
-
|
3002 |
-
|
3003 |
-
|
3004 |
-
|
3005 |
-
|
3006 |
-
|
3007 |
-
|
3008 |
-
|
3009 |
-
|
3010 |
-
|
3011 |
-
|
3012 |
-
|
3013 |
-
|
3014 |
-
}
|
3015 |
-
else { // was an external event
|
3016 |
-
eventApi = new EventApi(calendar, subjectDef); // no instance, because had no dates
|
3017 |
-
}
|
3018 |
-
if (!subjectAllow(calendar.buildDateSpanApi(subjectDateSpan), eventApi)) {
|
3019 |
-
return false;
|
3020 |
-
}
|
3021 |
-
}
|
3022 |
-
}
|
3023 |
-
return true;
|
3024 |
-
}
|
3025 |
-
// Date Selection Validation
|
3026 |
-
// ------------------------------------------------------------------------------------------------------------------------
|
3027 |
-
function isDateSelectionPropsValid(state, calendar, dateSpanMeta, filterConfig) {
|
3028 |
-
var relevantEventStore = state.eventStore;
|
3029 |
-
var relevantDefs = relevantEventStore.defs;
|
3030 |
-
var relevantInstances = relevantEventStore.instances;
|
3031 |
-
var selection = state.dateSelection;
|
3032 |
-
var selectionRange = selection.range;
|
3033 |
-
var selectionConfig = calendar.selectionConfig;
|
3034 |
-
if (filterConfig) {
|
3035 |
-
selectionConfig = filterConfig(selectionConfig);
|
3036 |
-
}
|
3037 |
-
// constraint
|
3038 |
-
if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, calendar)) {
|
3039 |
-
return false;
|
3040 |
-
}
|
3041 |
-
// overlap
|
3042 |
-
var overlapFunc = calendar.opt('selectOverlap');
|
3043 |
-
if (typeof overlapFunc !== 'function') {
|
3044 |
-
overlapFunc = null;
|
3045 |
-
}
|
3046 |
-
for (var relevantInstanceId in relevantInstances) {
|
3047 |
-
var relevantInstance = relevantInstances[relevantInstanceId];
|
3048 |
-
// intersect! evaluate
|
3049 |
-
if (rangesIntersect(selectionRange, relevantInstance.range)) {
|
3050 |
-
if (selectionConfig.overlap === false) {
|
3051 |
-
return false;
|
3052 |
-
}
|
3053 |
-
if (overlapFunc && !overlapFunc(new EventApi(calendar, relevantDefs[relevantInstance.defId], relevantInstance))) {
|
3054 |
-
return false;
|
3055 |
-
}
|
3056 |
-
}
|
3057 |
-
}
|
3058 |
-
// allow (a function)
|
3059 |
-
for (var _i = 0, _a = selectionConfig.allows; _i < _a.length; _i++) {
|
3060 |
-
var selectionAllow = _a[_i];
|
3061 |
-
var fullDateSpan = __assign({}, dateSpanMeta, selection);
|
3062 |
-
if (!selectionAllow(calendar.buildDateSpanApi(fullDateSpan), null)) {
|
3063 |
-
return false;
|
3064 |
-
}
|
3065 |
-
}
|
3066 |
-
return true;
|
3067 |
-
}
|
3068 |
-
// Constraint Utils
|
3069 |
-
// ------------------------------------------------------------------------------------------------------------------------
|
3070 |
-
function allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, calendar) {
|
3071 |
-
for (var _i = 0, constraints_1 = constraints; _i < constraints_1.length; _i++) {
|
3072 |
-
var constraint = constraints_1[_i];
|
3073 |
-
if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, calendar), subjectRange)) {
|
3074 |
-
return false;
|
3075 |
-
}
|
3076 |
-
}
|
3077 |
-
return true;
|
3078 |
-
}
|
3079 |
-
function constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours
|
3080 |
-
otherEventStore, // for if constraint is an even group ID
|
3081 |
-
businessHoursUnexpanded, // for if constraint is 'businessHours'
|
3082 |
-
calendar // for expanding businesshours
|
3083 |
-
) {
|
3084 |
-
if (constraint === 'businessHours') {
|
3085 |
-
return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, calendar));
|
3086 |
-
}
|
3087 |
-
else if (typeof constraint === 'string') { // an group ID
|
3088 |
-
return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) {
|
3089 |
-
return eventDef.groupId === constraint;
|
3090 |
-
}));
|
3091 |
-
}
|
3092 |
-
else if (typeof constraint === 'object' && constraint) { // non-null object
|
3093 |
-
return eventStoreToRanges(expandRecurring(constraint, subjectRange, calendar));
|
3094 |
-
}
|
3095 |
-
return []; // if it's false
|
3096 |
-
}
|
3097 |
-
// TODO: move to event-store file?
|
3098 |
-
function eventStoreToRanges(eventStore) {
|
3099 |
-
var instances = eventStore.instances;
|
3100 |
-
var ranges = [];
|
3101 |
-
for (var instanceId in instances) {
|
3102 |
-
ranges.push(instances[instanceId].range);
|
3103 |
-
}
|
3104 |
-
return ranges;
|
3105 |
-
}
|
3106 |
-
// TODO: move to geom file?
|
3107 |
-
function anyRangesContainRange(outerRanges, innerRange) {
|
3108 |
-
for (var _i = 0, outerRanges_1 = outerRanges; _i < outerRanges_1.length; _i++) {
|
3109 |
-
var outerRange = outerRanges_1[_i];
|
3110 |
-
if (rangeContainsRange(outerRange, innerRange)) {
|
3111 |
-
return true;
|
3112 |
-
}
|
3113 |
-
}
|
3114 |
-
return false;
|
3115 |
-
}
|
3116 |
-
// Parsing
|
3117 |
-
// ------------------------------------------------------------------------------------------------------------------------
|
3118 |
-
function normalizeConstraint(input, calendar) {
|
3119 |
-
if (Array.isArray(input)) {
|
3120 |
-
return parseEvents(input, '', calendar, true); // allowOpenRange=true
|
3121 |
-
}
|
3122 |
-
else if (typeof input === 'object' && input) { // non-null object
|
3123 |
-
return parseEvents([input], '', calendar, true); // allowOpenRange=true
|
3124 |
-
}
|
3125 |
-
else if (input != null) {
|
3126 |
-
return String(input);
|
3127 |
-
}
|
3128 |
-
else {
|
3129 |
-
return null;
|
3130 |
-
}
|
3131 |
}
|
|
|
|
|
3132 |
|
3133 |
-
|
3134 |
-
|
3135 |
-
|
3136 |
-
|
3137 |
-
|
3138 |
-
|
3139 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3140 |
}
|
3141 |
-
//
|
3142 |
-
|
3143 |
-
|
3144 |
-
|
3145 |
-
for (var name_1 in cssProps) {
|
3146 |
-
var val = cssProps[name_1];
|
3147 |
-
if (val != null && val !== '') {
|
3148 |
-
statements.push(name_1 + ':' + val);
|
3149 |
-
}
|
3150 |
-
}
|
3151 |
-
return statements.join(';');
|
3152 |
}
|
3153 |
-
//
|
3154 |
-
//
|
3155 |
-
|
3156 |
-
|
3157 |
-
for (var name_2 in attrs) {
|
3158 |
-
var val = attrs[name_2];
|
3159 |
-
if (val != null) {
|
3160 |
-
parts.push(name_2 + '="' + htmlEscape(val) + '"');
|
3161 |
-
}
|
3162 |
-
}
|
3163 |
-
return parts.join(' ');
|
3164 |
}
|
3165 |
-
|
3166 |
-
|
3167 |
-
|
3168 |
-
|
3169 |
-
|
3170 |
-
return raw.split(/\s+/);
|
3171 |
-
}
|
3172 |
-
else {
|
3173 |
-
return [];
|
3174 |
-
}
|
3175 |
}
|
|
|
3176 |
|
3177 |
-
|
3178 |
-
|
3179 |
-
startEditable: Boolean,
|
3180 |
-
durationEditable: Boolean,
|
3181 |
-
constraint: null,
|
3182 |
-
overlap: null,
|
3183 |
-
allow: null,
|
3184 |
-
className: parseClassName,
|
3185 |
-
classNames: parseClassName,
|
3186 |
-
color: String,
|
3187 |
-
backgroundColor: String,
|
3188 |
-
borderColor: String,
|
3189 |
-
textColor: String
|
3190 |
-
};
|
3191 |
-
function processUnscopedUiProps(rawProps, calendar, leftovers) {
|
3192 |
-
var props = refineProps(rawProps, UNSCOPED_EVENT_UI_PROPS, {}, leftovers);
|
3193 |
-
var constraint = normalizeConstraint(props.constraint, calendar);
|
3194 |
-
return {
|
3195 |
-
startEditable: props.startEditable != null ? props.startEditable : props.editable,
|
3196 |
-
durationEditable: props.durationEditable != null ? props.durationEditable : props.editable,
|
3197 |
-
constraints: constraint != null ? [constraint] : [],
|
3198 |
-
overlap: props.overlap,
|
3199 |
-
allows: props.allow != null ? [props.allow] : [],
|
3200 |
-
backgroundColor: props.backgroundColor || props.color,
|
3201 |
-
borderColor: props.borderColor || props.color,
|
3202 |
-
textColor: props.textColor,
|
3203 |
-
classNames: props.classNames.concat(props.className)
|
3204 |
-
};
|
3205 |
-
}
|
3206 |
-
function processScopedUiProps(prefix, rawScoped, calendar, leftovers) {
|
3207 |
-
var rawUnscoped = {};
|
3208 |
-
var wasFound = {};
|
3209 |
-
for (var key in UNSCOPED_EVENT_UI_PROPS) {
|
3210 |
-
var scopedKey = prefix + capitaliseFirstLetter(key);
|
3211 |
-
rawUnscoped[key] = rawScoped[scopedKey];
|
3212 |
-
wasFound[scopedKey] = true;
|
3213 |
-
}
|
3214 |
-
if (prefix === 'event') {
|
3215 |
-
rawUnscoped.editable = rawScoped.editable; // special case. there is no 'eventEditable', just 'editable'
|
3216 |
-
}
|
3217 |
-
if (leftovers) {
|
3218 |
-
for (var key in rawScoped) {
|
3219 |
-
if (!wasFound[key]) {
|
3220 |
-
leftovers[key] = rawScoped[key];
|
3221 |
-
}
|
3222 |
-
}
|
3223 |
-
}
|
3224 |
-
return processUnscopedUiProps(rawUnscoped, calendar);
|
3225 |
-
}
|
3226 |
-
var EMPTY_EVENT_UI = {
|
3227 |
-
startEditable: null,
|
3228 |
-
durationEditable: null,
|
3229 |
-
constraints: [],
|
3230 |
-
overlap: null,
|
3231 |
-
allows: [],
|
3232 |
-
backgroundColor: '',
|
3233 |
-
borderColor: '',
|
3234 |
-
textColor: '',
|
3235 |
-
classNames: []
|
3236 |
-
};
|
3237 |
-
// prevent against problems with <2 args!
|
3238 |
-
function combineEventUis(uis) {
|
3239 |
-
return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);
|
3240 |
-
}
|
3241 |
-
function combineTwoEventUis(item0, item1) {
|
3242 |
-
return {
|
3243 |
-
startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,
|
3244 |
-
durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,
|
3245 |
-
constraints: item0.constraints.concat(item1.constraints),
|
3246 |
-
overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,
|
3247 |
-
allows: item0.allows.concat(item1.allows),
|
3248 |
-
backgroundColor: item1.backgroundColor || item0.backgroundColor,
|
3249 |
-
borderColor: item1.borderColor || item0.borderColor,
|
3250 |
-
textColor: item1.textColor || item0.textColor,
|
3251 |
-
classNames: item0.classNames.concat(item1.classNames)
|
3252 |
-
};
|
3253 |
-
}
|
3254 |
|
3255 |
-
|
3256 |
-
id: String,
|
3257 |
-
groupId: String,
|
3258 |
-
title: String,
|
3259 |
-
url: String,
|
3260 |
-
rendering: String,
|
3261 |
-
extendedProps: null
|
3262 |
-
};
|
3263 |
-
var DATE_PROPS = {
|
3264 |
-
start: null,
|
3265 |
-
date: null,
|
3266 |
-
end: null,
|
3267 |
-
allDay: null
|
3268 |
-
};
|
3269 |
-
var uid = 0;
|
3270 |
-
function parseEvent(raw, sourceId, calendar, allowOpenRange) {
|
3271 |
-
var allDayDefault = computeIsAllDayDefault(sourceId, calendar);
|
3272 |
-
var leftovers0 = {};
|
3273 |
-
var recurringRes = parseRecurring(raw, // raw, but with single-event stuff stripped out
|
3274 |
-
allDayDefault, calendar.dateEnv, calendar.pluginSystem.hooks.recurringTypes, leftovers0 // will populate with non-recurring props
|
3275 |
-
);
|
3276 |
-
if (recurringRes) {
|
3277 |
-
var def = parseEventDef(leftovers0, sourceId, recurringRes.allDay, Boolean(recurringRes.duration), calendar);
|
3278 |
-
def.recurringDef = {
|
3279 |
-
typeId: recurringRes.typeId,
|
3280 |
-
typeData: recurringRes.typeData,
|
3281 |
-
duration: recurringRes.duration
|
3282 |
-
};
|
3283 |
-
return { def: def, instance: null };
|
3284 |
-
}
|
3285 |
-
else {
|
3286 |
-
var leftovers1 = {};
|
3287 |
-
var singleRes = parseSingle(raw, allDayDefault, calendar, leftovers1, allowOpenRange);
|
3288 |
-
if (singleRes) {
|
3289 |
-
var def = parseEventDef(leftovers1, sourceId, singleRes.allDay, singleRes.hasEnd, calendar);
|
3290 |
-
var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);
|
3291 |
-
return { def: def, instance: instance };
|
3292 |
-
}
|
3293 |
-
}
|
3294 |
-
return null;
|
3295 |
-
}
|
3296 |
-
/*
|
3297 |
-
Will NOT populate extendedProps with the leftover properties.
|
3298 |
-
Will NOT populate date-related props.
|
3299 |
-
The EventNonDateInput has been normalized (id => publicId, etc).
|
3300 |
-
*/
|
3301 |
-
function parseEventDef(raw, sourceId, allDay, hasEnd, calendar) {
|
3302 |
-
var leftovers = {};
|
3303 |
-
var def = pluckNonDateProps(raw, calendar, leftovers);
|
3304 |
-
def.defId = String(uid++);
|
3305 |
-
def.sourceId = sourceId;
|
3306 |
-
def.allDay = allDay;
|
3307 |
-
def.hasEnd = hasEnd;
|
3308 |
-
for (var _i = 0, _a = calendar.pluginSystem.hooks.eventDefParsers; _i < _a.length; _i++) {
|
3309 |
-
var eventDefParser = _a[_i];
|
3310 |
-
var newLeftovers = {};
|
3311 |
-
eventDefParser(def, leftovers, newLeftovers);
|
3312 |
-
leftovers = newLeftovers;
|
3313 |
-
}
|
3314 |
-
def.extendedProps = __assign(leftovers, def.extendedProps || {});
|
3315 |
-
// help out EventApi from having user modify props
|
3316 |
-
Object.freeze(def.ui.classNames);
|
3317 |
-
Object.freeze(def.extendedProps);
|
3318 |
-
return def;
|
3319 |
-
}
|
3320 |
-
function createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) {
|
3321 |
-
return {
|
3322 |
-
instanceId: String(uid++),
|
3323 |
-
defId: defId,
|
3324 |
-
range: range,
|
3325 |
-
forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,
|
3326 |
-
forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo
|
3327 |
-
};
|
3328 |
-
}
|
3329 |
-
function parseSingle(raw, allDayDefault, calendar, leftovers, allowOpenRange) {
|
3330 |
-
var props = pluckDateProps(raw, leftovers);
|
3331 |
-
var allDay = props.allDay;
|
3332 |
-
var startMeta;
|
3333 |
-
var startMarker = null;
|
3334 |
-
var hasEnd = false;
|
3335 |
-
var endMeta;
|
3336 |
-
var endMarker = null;
|
3337 |
-
startMeta = calendar.dateEnv.createMarkerMeta(props.start);
|
3338 |
-
if (startMeta) {
|
3339 |
-
startMarker = startMeta.marker;
|
3340 |
-
}
|
3341 |
-
else if (!allowOpenRange) {
|
3342 |
-
return null;
|
3343 |
-
}
|
3344 |
-
if (props.end != null) {
|
3345 |
-
endMeta = calendar.dateEnv.createMarkerMeta(props.end);
|
3346 |
-
}
|
3347 |
-
if (allDay == null) {
|
3348 |
-
if (allDayDefault != null) {
|
3349 |
-
allDay = allDayDefault;
|
3350 |
-
}
|
3351 |
-
else {
|
3352 |
-
// fall back to the date props LAST
|
3353 |
-
allDay = (!startMeta || startMeta.isTimeUnspecified) &&
|
3354 |
-
(!endMeta || endMeta.isTimeUnspecified);
|
3355 |
-
}
|
3356 |
-
}
|
3357 |
-
if (allDay && startMarker) {
|
3358 |
-
startMarker = startOfDay(startMarker);
|
3359 |
-
}
|
3360 |
-
if (endMeta) {
|
3361 |
-
endMarker = endMeta.marker;
|
3362 |
-
if (allDay) {
|
3363 |
-
endMarker = startOfDay(endMarker);
|
3364 |
-
}
|
3365 |
-
if (startMarker && endMarker <= startMarker) {
|
3366 |
-
endMarker = null;
|
3367 |
-
}
|
3368 |
-
}
|
3369 |
-
if (endMarker) {
|
3370 |
-
hasEnd = true;
|
3371 |
-
}
|
3372 |
-
else if (!allowOpenRange) {
|
3373 |
-
hasEnd = calendar.opt('forceEventDuration') || false;
|
3374 |
-
endMarker = calendar.dateEnv.add(startMarker, allDay ?
|
3375 |
-
calendar.defaultAllDayEventDuration :
|
3376 |
-
calendar.defaultTimedEventDuration);
|
3377 |
-
}
|
3378 |
-
return {
|
3379 |
-
allDay: allDay,
|
3380 |
-
hasEnd: hasEnd,
|
3381 |
-
range: { start: startMarker, end: endMarker },
|
3382 |
-
forcedStartTzo: startMeta ? startMeta.forcedTzo : null,
|
3383 |
-
forcedEndTzo: endMeta ? endMeta.forcedTzo : null
|
3384 |
-
};
|
3385 |
-
}
|
3386 |
-
function pluckDateProps(raw, leftovers) {
|
3387 |
-
var props = refineProps(raw, DATE_PROPS, {}, leftovers);
|
3388 |
-
props.start = (props.start !== null) ? props.start : props.date;
|
3389 |
-
delete props.date;
|
3390 |
-
return props;
|
3391 |
-
}
|
3392 |
-
function pluckNonDateProps(raw, calendar, leftovers) {
|
3393 |
-
var preLeftovers = {};
|
3394 |
-
var props = refineProps(raw, NON_DATE_PROPS, {}, preLeftovers);
|
3395 |
-
var ui = processUnscopedUiProps(preLeftovers, calendar, leftovers);
|
3396 |
-
props.publicId = props.id;
|
3397 |
-
delete props.id;
|
3398 |
-
props.ui = ui;
|
3399 |
-
return props;
|
3400 |
-
}
|
3401 |
-
function computeIsAllDayDefault(sourceId, calendar) {
|
3402 |
-
var res = null;
|
3403 |
-
if (sourceId) {
|
3404 |
-
var source = calendar.state.eventSources[sourceId];
|
3405 |
-
res = source.allDayDefault;
|
3406 |
-
}
|
3407 |
-
if (res == null) {
|
3408 |
-
res = calendar.opt('allDayDefault');
|
3409 |
-
}
|
3410 |
-
return res;
|
3411 |
-
}
|
3412 |
|
3413 |
-
|
3414 |
-
|
3415 |
-
|
3416 |
-
|
3417 |
-
|
3418 |
-
classNames: 'fc-nonbusiness',
|
3419 |
-
groupId: '_businessHours' // so multiple defs get grouped
|
3420 |
-
};
|
3421 |
-
/*
|
3422 |
-
TODO: pass around as EventDefHash!!!
|
3423 |
-
*/
|
3424 |
-
function parseBusinessHours(input, calendar) {
|
3425 |
-
return parseEvents(refineInputs(input), '', calendar);
|
3426 |
-
}
|
3427 |
-
function refineInputs(input) {
|
3428 |
-
var rawDefs;
|
3429 |
-
if (input === true) {
|
3430 |
-
rawDefs = [{}]; // will get DEF_DEFAULTS verbatim
|
3431 |
-
}
|
3432 |
-
else if (Array.isArray(input)) {
|
3433 |
-
// if specifying an array, every sub-definition NEEDS a day-of-week
|
3434 |
-
rawDefs = input.filter(function (rawDef) {
|
3435 |
-
return rawDef.daysOfWeek;
|
3436 |
-
});
|
3437 |
-
}
|
3438 |
-
else if (typeof input === 'object' && input) { // non-null object
|
3439 |
-
rawDefs = [input];
|
3440 |
-
}
|
3441 |
-
else { // is probably false
|
3442 |
-
rawDefs = [];
|
3443 |
-
}
|
3444 |
-
rawDefs = rawDefs.map(function (rawDef) {
|
3445 |
-
return __assign({}, DEF_DEFAULTS, rawDef);
|
3446 |
-
});
|
3447 |
-
return rawDefs;
|
3448 |
-
}
|
3449 |
|
3450 |
-
|
3451 |
-
|
3452 |
-
|
3453 |
-
var thisContext;
|
3454 |
-
var prevArgs;
|
3455 |
-
function unrender() {
|
3456 |
-
if (prevArgs) {
|
3457 |
-
for (var _i = 0, dependents_1 = dependents; _i < dependents_1.length; _i++) {
|
3458 |
-
var dependent = dependents_1[_i];
|
3459 |
-
dependent.unrender();
|
3460 |
-
}
|
3461 |
-
if (unrenderFunc) {
|
3462 |
-
unrenderFunc.apply(thisContext, prevArgs);
|
3463 |
-
}
|
3464 |
-
prevArgs = null;
|
3465 |
-
}
|
3466 |
-
}
|
3467 |
-
function res() {
|
3468 |
-
if (!prevArgs || !isArraysEqual(prevArgs, arguments)) {
|
3469 |
-
unrender();
|
3470 |
-
thisContext = this;
|
3471 |
-
prevArgs = arguments;
|
3472 |
-
renderFunc.apply(this, arguments);
|
3473 |
-
}
|
3474 |
-
}
|
3475 |
-
res.dependents = dependents;
|
3476 |
-
res.unrender = unrender;
|
3477 |
-
for (var _i = 0, dependencies_1 = dependencies; _i < dependencies_1.length; _i++) {
|
3478 |
-
var dependency = dependencies_1[_i];
|
3479 |
-
dependency.dependents.push(res);
|
3480 |
-
}
|
3481 |
-
return res;
|
3482 |
-
}
|
3483 |
|
3484 |
-
var
|
3485 |
-
var
|
3486 |
-
|
3487 |
-
|
3488 |
-
|
3489 |
-
|
3490 |
-
|
3491 |
-
|
3492 |
-
|
3493 |
-
|
3494 |
-
|
3495 |
-
|
3496 |
-
|
3497 |
-
|
3498 |
-
|
3499 |
-
|
3500 |
-
|
3501 |
-
|
3502 |
-
|
3503 |
-
|
3504 |
-
|
3505 |
-
|
3506 |
-
|
3507 |
-
|
3508 |
-
|
3509 |
-
|
3510 |
-
|
3511 |
-
|
3512 |
-
|
3513 |
-
|
3514 |
-
|
3515 |
-
|
3516 |
-
|
3517 |
-
|
3518 |
-
|
3519 |
-
|
3520 |
-
|
3521 |
-
|
3522 |
-
|
3523 |
-
|
3524 |
-
|
3525 |
-
|
3526 |
-
|
3527 |
-
|
3528 |
-
|
3529 |
-
|
3530 |
-
|
3531 |
-
|
3532 |
-
|
3533 |
-
|
3534 |
-
|
3535 |
-
|
3536 |
-
|
3537 |
-
|
3538 |
-
|
3539 |
-
|
3540 |
-
|
3541 |
-
|
3542 |
-
var defs = eventStore.defs, instances = eventStore.instances;
|
3543 |
-
var splitStores = {};
|
3544 |
-
for (var defId in defs) {
|
3545 |
-
for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {
|
3546 |
-
var key = _a[_i];
|
3547 |
-
if (!splitStores[key]) {
|
3548 |
-
splitStores[key] = createEmptyEventStore();
|
3549 |
-
}
|
3550 |
-
splitStores[key].defs[defId] = defs[defId];
|
3551 |
-
}
|
3552 |
-
}
|
3553 |
-
for (var instanceId in instances) {
|
3554 |
-
var instance = instances[instanceId];
|
3555 |
-
for (var _b = 0, _c = defKeys[instance.defId]; _b < _c.length; _b++) {
|
3556 |
-
var key = _c[_b];
|
3557 |
-
if (splitStores[key]) { // must have already been created
|
3558 |
-
splitStores[key].instances[instanceId] = instance;
|
3559 |
-
}
|
3560 |
-
}
|
3561 |
-
}
|
3562 |
-
return splitStores;
|
3563 |
-
};
|
3564 |
-
Splitter.prototype._splitIndividualUi = function (eventUiBases, defKeys) {
|
3565 |
-
var splitHashes = {};
|
3566 |
-
for (var defId in eventUiBases) {
|
3567 |
-
if (defId) { // not the '' key
|
3568 |
-
for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {
|
3569 |
-
var key = _a[_i];
|
3570 |
-
if (!splitHashes[key]) {
|
3571 |
-
splitHashes[key] = {};
|
3572 |
-
}
|
3573 |
-
splitHashes[key][defId] = eventUiBases[defId];
|
3574 |
-
}
|
3575 |
-
}
|
3576 |
-
}
|
3577 |
-
return splitHashes;
|
3578 |
-
};
|
3579 |
-
Splitter.prototype._splitInteraction = function (interaction) {
|
3580 |
-
var splitStates = {};
|
3581 |
-
if (interaction) {
|
3582 |
-
var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents) // can't use cached. might be events from other calendar
|
3583 |
-
);
|
3584 |
-
// can't rely on defKeys because event data is mutated
|
3585 |
-
var mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);
|
3586 |
-
var mutatedStores_1 = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);
|
3587 |
-
var populate = function (key) {
|
3588 |
-
if (!splitStates[key]) {
|
3589 |
-
splitStates[key] = {
|
3590 |
-
affectedEvents: affectedStores_1[key] || EMPTY_EVENT_STORE,
|
3591 |
-
mutatedEvents: mutatedStores_1[key] || EMPTY_EVENT_STORE,
|
3592 |
-
isEvent: interaction.isEvent,
|
3593 |
-
origSeg: interaction.origSeg
|
3594 |
-
};
|
3595 |
-
}
|
3596 |
-
};
|
3597 |
-
for (var key in affectedStores_1) {
|
3598 |
-
populate(key);
|
3599 |
-
}
|
3600 |
-
for (var key in mutatedStores_1) {
|
3601 |
-
populate(key);
|
3602 |
-
}
|
3603 |
-
}
|
3604 |
-
return splitStates;
|
3605 |
-
};
|
3606 |
-
return Splitter;
|
3607 |
-
}());
|
3608 |
-
function buildEventUiForKey(allUi, eventUiForKey, individualUi) {
|
3609 |
-
var baseParts = [];
|
3610 |
-
if (allUi) {
|
3611 |
-
baseParts.push(allUi);
|
3612 |
-
}
|
3613 |
-
if (eventUiForKey) {
|
3614 |
-
baseParts.push(eventUiForKey);
|
3615 |
-
}
|
3616 |
-
var stuff = {
|
3617 |
-
'': combineEventUis(baseParts)
|
3618 |
-
};
|
3619 |
-
if (individualUi) {
|
3620 |
-
__assign(stuff, individualUi);
|
3621 |
}
|
3622 |
-
return
|
3623 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3624 |
|
3625 |
-
|
3626 |
-
|
3627 |
-
// `gotoOptions` can either be a DateMarker, or an object with the form:
|
3628 |
-
// { date, type, forceOff }
|
3629 |
-
// `type` is a view-type like "day" or "week". default value is "day".
|
3630 |
-
// `attrs` and `innerHtml` are use to generate the rest of the HTML tag.
|
3631 |
-
function buildGotoAnchorHtml(component, gotoOptions, attrs, innerHtml) {
|
3632 |
-
var dateEnv = component.dateEnv;
|
3633 |
-
var date;
|
3634 |
-
var type;
|
3635 |
-
var forceOff;
|
3636 |
-
var finalOptions;
|
3637 |
-
if (gotoOptions instanceof Date) {
|
3638 |
-
date = gotoOptions; // a single date-like input
|
3639 |
-
}
|
3640 |
-
else {
|
3641 |
-
date = gotoOptions.date;
|
3642 |
-
type = gotoOptions.type;
|
3643 |
-
forceOff = gotoOptions.forceOff;
|
3644 |
-
}
|
3645 |
-
finalOptions = {
|
3646 |
-
date: dateEnv.formatIso(date, { omitTime: true }),
|
3647 |
-
type: type || 'day'
|
3648 |
-
};
|
3649 |
-
if (typeof attrs === 'string') {
|
3650 |
-
innerHtml = attrs;
|
3651 |
-
attrs = null;
|
3652 |
-
}
|
3653 |
-
attrs = attrs ? ' ' + attrsToStr(attrs) : ''; // will have a leading space
|
3654 |
-
innerHtml = innerHtml || '';
|
3655 |
-
if (!forceOff && component.opt('navLinks')) {
|
3656 |
-
return '<a' + attrs +
|
3657 |
-
' data-goto="' + htmlEscape(JSON.stringify(finalOptions)) + '">' +
|
3658 |
-
innerHtml +
|
3659 |
-
'</a>';
|
3660 |
-
}
|
3661 |
-
else {
|
3662 |
-
return '<span' + attrs + '>' +
|
3663 |
-
innerHtml +
|
3664 |
-
'</span>';
|
3665 |
-
}
|
3666 |
-
}
|
3667 |
-
function getAllDayHtml(component) {
|
3668 |
-
return component.opt('allDayHtml') || htmlEscape(component.opt('allDayText'));
|
3669 |
-
}
|
3670 |
-
// Computes HTML classNames for a single-day element
|
3671 |
-
function getDayClasses(date, dateProfile, context, noThemeHighlight) {
|
3672 |
-
var calendar = context.calendar, view = context.view, theme = context.theme, dateEnv = context.dateEnv;
|
3673 |
-
var classes = [];
|
3674 |
-
var todayStart;
|
3675 |
-
var todayEnd;
|
3676 |
-
if (!rangeContainsMarker(dateProfile.activeRange, date)) {
|
3677 |
-
classes.push('fc-disabled-day');
|
3678 |
-
}
|
3679 |
-
else {
|
3680 |
-
classes.push('fc-' + DAY_IDS[date.getUTCDay()]);
|
3681 |
-
if (view.opt('monthMode') &&
|
3682 |
-
dateEnv.getMonth(date) !== dateEnv.getMonth(dateProfile.currentRange.start)) {
|
3683 |
-
classes.push('fc-other-month');
|
3684 |
-
}
|
3685 |
-
todayStart = startOfDay(calendar.getNow());
|
3686 |
-
todayEnd = addDays(todayStart, 1);
|
3687 |
-
if (date < todayStart) {
|
3688 |
-
classes.push('fc-past');
|
3689 |
-
}
|
3690 |
-
else if (date >= todayEnd) {
|
3691 |
-
classes.push('fc-future');
|
3692 |
-
}
|
3693 |
-
else {
|
3694 |
-
classes.push('fc-today');
|
3695 |
-
if (noThemeHighlight !== true) {
|
3696 |
-
classes.push(theme.getClass('today'));
|
3697 |
-
}
|
3698 |
-
}
|
3699 |
-
}
|
3700 |
-
return classes;
|
3701 |
-
}
|
3702 |
|
3703 |
-
|
3704 |
-
// the function can either call passed-in success and failure callbacks,
|
3705 |
-
// or it can return a promise.
|
3706 |
-
// if you need to pass additional params to func, bind them first.
|
3707 |
-
function unpromisify(func, success, failure) {
|
3708 |
-
// guard against success/failure callbacks being called more than once
|
3709 |
-
// and guard against a promise AND callback being used together.
|
3710 |
-
var isResolved = false;
|
3711 |
-
var wrappedSuccess = function () {
|
3712 |
-
if (!isResolved) {
|
3713 |
-
isResolved = true;
|
3714 |
-
success.apply(this, arguments);
|
3715 |
-
}
|
3716 |
-
};
|
3717 |
-
var wrappedFailure = function () {
|
3718 |
-
if (!isResolved) {
|
3719 |
-
isResolved = true;
|
3720 |
-
if (failure) {
|
3721 |
-
failure.apply(this, arguments);
|
3722 |
-
}
|
3723 |
-
}
|
3724 |
-
};
|
3725 |
-
var res = func(wrappedSuccess, wrappedFailure);
|
3726 |
-
if (res && typeof res.then === 'function') {
|
3727 |
-
res.then(wrappedSuccess, wrappedFailure);
|
3728 |
-
}
|
3729 |
-
}
|
3730 |
|
3731 |
-
|
3732 |
-
function Mixin() {
|
3733 |
-
}
|
3734 |
-
// mix into a CLASS
|
3735 |
-
Mixin.mixInto = function (destClass) {
|
3736 |
-
this.mixIntoObj(destClass.prototype);
|
3737 |
-
};
|
3738 |
-
// mix into ANY object
|
3739 |
-
Mixin.mixIntoObj = function (destObj) {
|
3740 |
-
var _this = this;
|
3741 |
-
Object.getOwnPropertyNames(this.prototype).forEach(function (name) {
|
3742 |
-
if (!destObj[name]) { // if destination doesn't already define it
|
3743 |
-
destObj[name] = _this.prototype[name];
|
3744 |
-
}
|
3745 |
-
});
|
3746 |
-
};
|
3747 |
-
/*
|
3748 |
-
will override existing methods
|
3749 |
-
TODO: remove! not used anymore
|
3750 |
-
*/
|
3751 |
-
Mixin.mixOver = function (destClass) {
|
3752 |
-
var _this = this;
|
3753 |
-
Object.getOwnPropertyNames(this.prototype).forEach(function (name) {
|
3754 |
-
destClass.prototype[name] = _this.prototype[name];
|
3755 |
-
});
|
3756 |
-
};
|
3757 |
-
return Mixin;
|
3758 |
-
}());
|
3759 |
|
3760 |
-
|
3761 |
-
USAGE:
|
3762 |
-
import { default as EmitterMixin, EmitterInterface } from './EmitterMixin'
|
3763 |
-
in class:
|
3764 |
-
on: EmitterInterface['on']
|
3765 |
-
one: EmitterInterface['one']
|
3766 |
-
off: EmitterInterface['off']
|
3767 |
-
trigger: EmitterInterface['trigger']
|
3768 |
-
triggerWith: EmitterInterface['triggerWith']
|
3769 |
-
hasHandlers: EmitterInterface['hasHandlers']
|
3770 |
-
after class:
|
3771 |
-
EmitterMixin.mixInto(TheClass)
|
3772 |
-
*/
|
3773 |
-
var EmitterMixin = /** @class */ (function (_super) {
|
3774 |
-
__extends(EmitterMixin, _super);
|
3775 |
-
function EmitterMixin() {
|
3776 |
-
return _super !== null && _super.apply(this, arguments) || this;
|
3777 |
-
}
|
3778 |
-
EmitterMixin.prototype.on = function (type, handler) {
|
3779 |
-
addToHash(this._handlers || (this._handlers = {}), type, handler);
|
3780 |
-
return this; // for chaining
|
3781 |
-
};
|
3782 |
-
// todo: add comments
|
3783 |
-
EmitterMixin.prototype.one = function (type, handler) {
|
3784 |
-
addToHash(this._oneHandlers || (this._oneHandlers = {}), type, handler);
|
3785 |
-
return this; // for chaining
|
3786 |
-
};
|
3787 |
-
EmitterMixin.prototype.off = function (type, handler) {
|
3788 |
-
if (this._handlers) {
|
3789 |
-
removeFromHash(this._handlers, type, handler);
|
3790 |
-
}
|
3791 |
-
if (this._oneHandlers) {
|
3792 |
-
removeFromHash(this._oneHandlers, type, handler);
|
3793 |
-
}
|
3794 |
-
return this; // for chaining
|
3795 |
-
};
|
3796 |
-
EmitterMixin.prototype.trigger = function (type) {
|
3797 |
-
var args = [];
|
3798 |
-
for (var _i = 1; _i < arguments.length; _i++) {
|
3799 |
-
args[_i - 1] = arguments[_i];
|
3800 |
-
}
|
3801 |
-
this.triggerWith(type, this, args);
|
3802 |
-
return this; // for chaining
|
3803 |
-
};
|
3804 |
-
EmitterMixin.prototype.triggerWith = function (type, context, args) {
|
3805 |
-
if (this._handlers) {
|
3806 |
-
applyAll(this._handlers[type], context, args);
|
3807 |
-
}
|
3808 |
-
if (this._oneHandlers) {
|
3809 |
-
applyAll(this._oneHandlers[type], context, args);
|
3810 |
-
delete this._oneHandlers[type]; // will never fire again
|
3811 |
-
}
|
3812 |
-
return this; // for chaining
|
3813 |
-
};
|
3814 |
-
EmitterMixin.prototype.hasHandlers = function (type) {
|
3815 |
-
return (this._handlers && this._handlers[type] && this._handlers[type].length) ||
|
3816 |
-
(this._oneHandlers && this._oneHandlers[type] && this._oneHandlers[type].length);
|
3817 |
-
};
|
3818 |
-
return EmitterMixin;
|
3819 |
-
}(Mixin));
|
3820 |
-
function addToHash(hash, type, handler) {
|
3821 |
-
(hash[type] || (hash[type] = []))
|
3822 |
-
.push(handler);
|
3823 |
-
}
|
3824 |
-
function removeFromHash(hash, type, handler) {
|
3825 |
-
if (handler) {
|
3826 |
-
if (hash[type]) {
|
3827 |
-
hash[type] = hash[type].filter(function (func) {
|
3828 |
-
return func !== handler;
|
3829 |
-
});
|
3830 |
-
}
|
3831 |
-
}
|
3832 |
-
else {
|
3833 |
-
delete hash[type]; // remove all handler funcs for this type
|
3834 |
-
}
|
3835 |
-
}
|
3836 |
|
3837 |
-
|
3838 |
-
|
3839 |
-
|
3840 |
-
Provides methods for querying the cache by position.
|
3841 |
-
*/
|
3842 |
-
var PositionCache = /** @class */ (function () {
|
3843 |
-
function PositionCache(originEl, els, isHorizontal, isVertical) {
|
3844 |
-
this.originEl = originEl;
|
3845 |
-
this.els = els;
|
3846 |
-
this.isHorizontal = isHorizontal;
|
3847 |
-
this.isVertical = isVertical;
|
3848 |
-
}
|
3849 |
-
// Queries the els for coordinates and stores them.
|
3850 |
-
// Call this method before using and of the get* methods below.
|
3851 |
-
PositionCache.prototype.build = function () {
|
3852 |
-
var originEl = this.originEl;
|
3853 |
-
var originClientRect = this.originClientRect =
|
3854 |
-
originEl.getBoundingClientRect(); // relative to viewport top-left
|
3855 |
-
if (this.isHorizontal) {
|
3856 |
-
this.buildElHorizontals(originClientRect.left);
|
3857 |
-
}
|
3858 |
-
if (this.isVertical) {
|
3859 |
-
this.buildElVerticals(originClientRect.top);
|
3860 |
-
}
|
3861 |
-
};
|
3862 |
-
// Populates the left/right internal coordinate arrays
|
3863 |
-
PositionCache.prototype.buildElHorizontals = function (originClientLeft) {
|
3864 |
-
var lefts = [];
|
3865 |
-
var rights = [];
|
3866 |
-
for (var _i = 0, _a = this.els; _i < _a.length; _i++) {
|
3867 |
-
var el = _a[_i];
|
3868 |
-
var rect = el.getBoundingClientRect();
|
3869 |
-
lefts.push(rect.left - originClientLeft);
|
3870 |
-
rights.push(rect.right - originClientLeft);
|
3871 |
-
}
|
3872 |
-
this.lefts = lefts;
|
3873 |
-
this.rights = rights;
|
3874 |
-
};
|
3875 |
-
// Populates the top/bottom internal coordinate arrays
|
3876 |
-
PositionCache.prototype.buildElVerticals = function (originClientTop) {
|
3877 |
-
var tops = [];
|
3878 |
-
var bottoms = [];
|
3879 |
-
for (var _i = 0, _a = this.els; _i < _a.length; _i++) {
|
3880 |
-
var el = _a[_i];
|
3881 |
-
var rect = el.getBoundingClientRect();
|
3882 |
-
tops.push(rect.top - originClientTop);
|
3883 |
-
bottoms.push(rect.bottom - originClientTop);
|
3884 |
-
}
|
3885 |
-
this.tops = tops;
|
3886 |
-
this.bottoms = bottoms;
|
3887 |
-
};
|
3888 |
-
// Given a left offset (from document left), returns the index of the el that it horizontally intersects.
|
3889 |
-
// If no intersection is made, returns undefined.
|
3890 |
-
PositionCache.prototype.leftToIndex = function (leftPosition) {
|
3891 |
-
var lefts = this.lefts;
|
3892 |
-
var rights = this.rights;
|
3893 |
-
var len = lefts.length;
|
3894 |
-
var i;
|
3895 |
-
for (i = 0; i < len; i++) {
|
3896 |
-
if (leftPosition >= lefts[i] && leftPosition < rights[i]) {
|
3897 |
-
return i;
|
3898 |
-
}
|
3899 |
-
}
|
3900 |
-
};
|
3901 |
-
// Given a top offset (from document top), returns the index of the el that it vertically intersects.
|
3902 |
-
// If no intersection is made, returns undefined.
|
3903 |
-
PositionCache.prototype.topToIndex = function (topPosition) {
|
3904 |
-
var tops = this.tops;
|
3905 |
-
var bottoms = this.bottoms;
|
3906 |
-
var len = tops.length;
|
3907 |
-
var i;
|
3908 |
-
for (i = 0; i < len; i++) {
|
3909 |
-
if (topPosition >= tops[i] && topPosition < bottoms[i]) {
|
3910 |
-
return i;
|
3911 |
-
}
|
3912 |
-
}
|
3913 |
-
};
|
3914 |
-
// Gets the width of the element at the given index
|
3915 |
-
PositionCache.prototype.getWidth = function (leftIndex) {
|
3916 |
-
return this.rights[leftIndex] - this.lefts[leftIndex];
|
3917 |
-
};
|
3918 |
-
// Gets the height of the element at the given index
|
3919 |
-
PositionCache.prototype.getHeight = function (topIndex) {
|
3920 |
-
return this.bottoms[topIndex] - this.tops[topIndex];
|
3921 |
-
};
|
3922 |
-
return PositionCache;
|
3923 |
-
}());
|
3924 |
|
3925 |
-
|
3926 |
-
|
3927 |
-
|
3928 |
-
|
3929 |
-
|
3930 |
-
|
3931 |
-
|
3932 |
-
|
3933 |
-
|
3934 |
-
|
3935 |
-
|
3936 |
-
|
3937 |
-
|
3938 |
-
|
3939 |
-
|
3940 |
-
|
3941 |
-
|
3942 |
-
|
3943 |
-
|
3944 |
-
|
3945 |
-
|
3946 |
-
|
3947 |
-
|
3948 |
-
|
3949 |
-
|
3950 |
-
};
|
3951 |
-
ScrollController.prototype.canScrollLeft = function () {
|
3952 |
-
return this.getScrollLeft() > 0;
|
3953 |
-
};
|
3954 |
-
ScrollController.prototype.canScrollRight = function () {
|
3955 |
-
return this.getScrollLeft() < this.getMaxScrollLeft();
|
3956 |
-
};
|
3957 |
-
return ScrollController;
|
3958 |
-
}());
|
3959 |
-
var ElementScrollController = /** @class */ (function (_super) {
|
3960 |
-
__extends(ElementScrollController, _super);
|
3961 |
-
function ElementScrollController(el) {
|
3962 |
-
var _this = _super.call(this) || this;
|
3963 |
-
_this.el = el;
|
3964 |
-
return _this;
|
3965 |
-
}
|
3966 |
-
ElementScrollController.prototype.getScrollTop = function () {
|
3967 |
-
return this.el.scrollTop;
|
3968 |
-
};
|
3969 |
-
ElementScrollController.prototype.getScrollLeft = function () {
|
3970 |
-
return this.el.scrollLeft;
|
3971 |
-
};
|
3972 |
-
ElementScrollController.prototype.setScrollTop = function (top) {
|
3973 |
-
this.el.scrollTop = top;
|
3974 |
-
};
|
3975 |
-
ElementScrollController.prototype.setScrollLeft = function (left) {
|
3976 |
-
this.el.scrollLeft = left;
|
3977 |
-
};
|
3978 |
-
ElementScrollController.prototype.getScrollWidth = function () {
|
3979 |
-
return this.el.scrollWidth;
|
3980 |
-
};
|
3981 |
-
ElementScrollController.prototype.getScrollHeight = function () {
|
3982 |
-
return this.el.scrollHeight;
|
3983 |
-
};
|
3984 |
-
ElementScrollController.prototype.getClientHeight = function () {
|
3985 |
-
return this.el.clientHeight;
|
3986 |
-
};
|
3987 |
-
ElementScrollController.prototype.getClientWidth = function () {
|
3988 |
-
return this.el.clientWidth;
|
3989 |
-
};
|
3990 |
-
return ElementScrollController;
|
3991 |
-
}(ScrollController));
|
3992 |
-
var WindowScrollController = /** @class */ (function (_super) {
|
3993 |
-
__extends(WindowScrollController, _super);
|
3994 |
-
function WindowScrollController() {
|
3995 |
-
return _super !== null && _super.apply(this, arguments) || this;
|
3996 |
-
}
|
3997 |
-
WindowScrollController.prototype.getScrollTop = function () {
|
3998 |
-
return window.pageYOffset;
|
3999 |
-
};
|
4000 |
-
WindowScrollController.prototype.getScrollLeft = function () {
|
4001 |
-
return window.pageXOffset;
|
4002 |
-
};
|
4003 |
-
WindowScrollController.prototype.setScrollTop = function (n) {
|
4004 |
-
window.scroll(window.pageXOffset, n);
|
4005 |
-
};
|
4006 |
-
WindowScrollController.prototype.setScrollLeft = function (n) {
|
4007 |
-
window.scroll(n, window.pageYOffset);
|
4008 |
-
};
|
4009 |
-
WindowScrollController.prototype.getScrollWidth = function () {
|
4010 |
-
return document.documentElement.scrollWidth;
|
4011 |
-
};
|
4012 |
-
WindowScrollController.prototype.getScrollHeight = function () {
|
4013 |
-
return document.documentElement.scrollHeight;
|
4014 |
-
};
|
4015 |
-
WindowScrollController.prototype.getClientHeight = function () {
|
4016 |
-
return document.documentElement.clientHeight;
|
4017 |
-
};
|
4018 |
-
WindowScrollController.prototype.getClientWidth = function () {
|
4019 |
-
return document.documentElement.clientWidth;
|
4020 |
-
};
|
4021 |
-
return WindowScrollController;
|
4022 |
-
}(ScrollController));
|
4023 |
|
4024 |
-
|
4025 |
-
|
4026 |
-
*/
|
4027 |
-
var ScrollComponent = /** @class */ (function (_super) {
|
4028 |
-
__extends(ScrollComponent, _super);
|
4029 |
-
function ScrollComponent(overflowX, overflowY) {
|
4030 |
-
var _this = _super.call(this, createElement('div', {
|
4031 |
-
className: 'fc-scroller'
|
4032 |
-
})) || this;
|
4033 |
-
_this.overflowX = overflowX;
|
4034 |
-
_this.overflowY = overflowY;
|
4035 |
-
_this.applyOverflow();
|
4036 |
-
return _this;
|
4037 |
-
}
|
4038 |
-
// sets to natural height, unlocks overflow
|
4039 |
-
ScrollComponent.prototype.clear = function () {
|
4040 |
-
this.setHeight('auto');
|
4041 |
-
this.applyOverflow();
|
4042 |
-
};
|
4043 |
-
ScrollComponent.prototype.destroy = function () {
|
4044 |
-
removeElement(this.el);
|
4045 |
-
};
|
4046 |
-
// Overflow
|
4047 |
-
// -----------------------------------------------------------------------------------------------------------------
|
4048 |
-
ScrollComponent.prototype.applyOverflow = function () {
|
4049 |
-
applyStyle(this.el, {
|
4050 |
-
overflowX: this.overflowX,
|
4051 |
-
overflowY: this.overflowY
|
4052 |
-
});
|
4053 |
-
};
|
4054 |
-
// Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'.
|
4055 |
-
// Useful for preserving scrollbar widths regardless of future resizes.
|
4056 |
-
// Can pass in scrollbarWidths for optimization.
|
4057 |
-
ScrollComponent.prototype.lockOverflow = function (scrollbarWidths) {
|
4058 |
-
var overflowX = this.overflowX;
|
4059 |
-
var overflowY = this.overflowY;
|
4060 |
-
scrollbarWidths = scrollbarWidths || this.getScrollbarWidths();
|
4061 |
-
if (overflowX === 'auto') {
|
4062 |
-
overflowX = (scrollbarWidths.bottom || // horizontal scrollbars?
|
4063 |
-
this.canScrollHorizontally() // OR scrolling pane with massless scrollbars?
|
4064 |
-
) ? 'scroll' : 'hidden';
|
4065 |
-
}
|
4066 |
-
if (overflowY === 'auto') {
|
4067 |
-
overflowY = (scrollbarWidths.left || scrollbarWidths.right || // horizontal scrollbars?
|
4068 |
-
this.canScrollVertically() // OR scrolling pane with massless scrollbars?
|
4069 |
-
) ? 'scroll' : 'hidden';
|
4070 |
-
}
|
4071 |
-
applyStyle(this.el, { overflowX: overflowX, overflowY: overflowY });
|
4072 |
-
};
|
4073 |
-
ScrollComponent.prototype.setHeight = function (height) {
|
4074 |
-
applyStyleProp(this.el, 'height', height);
|
4075 |
-
};
|
4076 |
-
ScrollComponent.prototype.getScrollbarWidths = function () {
|
4077 |
-
var edges = computeEdges(this.el);
|
4078 |
-
return {
|
4079 |
-
left: edges.scrollbarLeft,
|
4080 |
-
right: edges.scrollbarRight,
|
4081 |
-
bottom: edges.scrollbarBottom
|
4082 |
-
};
|
4083 |
-
};
|
4084 |
-
return ScrollComponent;
|
4085 |
-
}(ElementScrollController));
|
4086 |
|
4087 |
-
|
4088 |
-
function Theme(calendarOptions) {
|
4089 |
-
this.calendarOptions = calendarOptions;
|
4090 |
-
this.processIconOverride();
|
4091 |
-
}
|
4092 |
-
Theme.prototype.processIconOverride = function () {
|
4093 |
-
if (this.iconOverrideOption) {
|
4094 |
-
this.setIconOverride(this.calendarOptions[this.iconOverrideOption]);
|
4095 |
-
}
|
4096 |
-
};
|
4097 |
-
Theme.prototype.setIconOverride = function (iconOverrideHash) {
|
4098 |
-
var iconClassesCopy;
|
4099 |
-
var buttonName;
|
4100 |
-
if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object
|
4101 |
-
iconClassesCopy = __assign({}, this.iconClasses);
|
4102 |
-
for (buttonName in iconOverrideHash) {
|
4103 |
-
iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);
|
4104 |
-
}
|
4105 |
-
this.iconClasses = iconClassesCopy;
|
4106 |
-
}
|
4107 |
-
else if (iconOverrideHash === false) {
|
4108 |
-
this.iconClasses = {};
|
4109 |
-
}
|
4110 |
-
};
|
4111 |
-
Theme.prototype.applyIconOverridePrefix = function (className) {
|
4112 |
-
var prefix = this.iconOverridePrefix;
|
4113 |
-
if (prefix && className.indexOf(prefix) !== 0) { // if not already present
|
4114 |
-
className = prefix + className;
|
4115 |
-
}
|
4116 |
-
return className;
|
4117 |
-
};
|
4118 |
-
Theme.prototype.getClass = function (key) {
|
4119 |
-
return this.classes[key] || '';
|
4120 |
-
};
|
4121 |
-
Theme.prototype.getIconClass = function (buttonName) {
|
4122 |
-
var className = this.iconClasses[buttonName];
|
4123 |
-
if (className) {
|
4124 |
-
return this.baseIconClass + ' ' + className;
|
4125 |
-
}
|
4126 |
-
return '';
|
4127 |
-
};
|
4128 |
-
Theme.prototype.getCustomButtonIconClass = function (customButtonProps) {
|
4129 |
-
var className;
|
4130 |
-
if (this.iconOverrideCustomButtonOption) {
|
4131 |
-
className = customButtonProps[this.iconOverrideCustomButtonOption];
|
4132 |
-
if (className) {
|
4133 |
-
return this.baseIconClass + ' ' + this.applyIconOverridePrefix(className);
|
4134 |
-
}
|
4135 |
-
}
|
4136 |
-
return '';
|
4137 |
-
};
|
4138 |
-
return Theme;
|
4139 |
-
}());
|
4140 |
-
Theme.prototype.classes = {};
|
4141 |
-
Theme.prototype.iconClasses = {};
|
4142 |
-
Theme.prototype.baseIconClass = '';
|
4143 |
-
Theme.prototype.iconOverridePrefix = '';
|
4144 |
|
4145 |
-
|
4146 |
-
|
4147 |
-
|
4148 |
-
|
4149 |
-
|
4150 |
-
|
4151 |
-
|
4152 |
-
this.uid = String(guid++);
|
4153 |
-
this.context = context;
|
4154 |
-
this.dateEnv = context.dateEnv;
|
4155 |
-
this.theme = context.theme;
|
4156 |
-
this.view = context.view;
|
4157 |
-
this.calendar = context.calendar;
|
4158 |
-
this.isRtl = this.opt('dir') === 'rtl';
|
4159 |
-
}
|
4160 |
-
Component.addEqualityFuncs = function (newFuncs) {
|
4161 |
-
this.prototype.equalityFuncs = __assign({}, this.prototype.equalityFuncs, newFuncs);
|
4162 |
-
};
|
4163 |
-
Component.prototype.opt = function (name) {
|
4164 |
-
return this.context.options[name];
|
4165 |
-
};
|
4166 |
-
Component.prototype.receiveProps = function (props) {
|
4167 |
-
var _a = recycleProps(this.props || {}, props, this.equalityFuncs), anyChanges = _a.anyChanges, comboProps = _a.comboProps;
|
4168 |
-
this.props = comboProps;
|
4169 |
-
if (anyChanges) {
|
4170 |
-
this.render(comboProps);
|
4171 |
-
}
|
4172 |
-
};
|
4173 |
-
Component.prototype.render = function (props) {
|
4174 |
-
};
|
4175 |
-
// after destroy is called, this component won't ever be used again
|
4176 |
-
Component.prototype.destroy = function () {
|
4177 |
-
};
|
4178 |
-
return Component;
|
4179 |
-
}());
|
4180 |
-
Component.prototype.equalityFuncs = {};
|
4181 |
-
/*
|
4182 |
-
Reuses old values when equal. If anything is unequal, returns newProps as-is.
|
4183 |
-
Great for PureComponent, but won't be feasible with React, so just eliminate and use React's DOM diffing.
|
4184 |
-
*/
|
4185 |
-
function recycleProps(oldProps, newProps, equalityFuncs) {
|
4186 |
-
var comboProps = {}; // some old, some new
|
4187 |
-
var anyChanges = false;
|
4188 |
-
for (var key in newProps) {
|
4189 |
-
if (key in oldProps && (oldProps[key] === newProps[key] ||
|
4190 |
-
(equalityFuncs[key] && equalityFuncs[key](oldProps[key], newProps[key])))) {
|
4191 |
-
// equal to old? use old prop
|
4192 |
-
comboProps[key] = oldProps[key];
|
4193 |
-
}
|
4194 |
-
else {
|
4195 |
-
comboProps[key] = newProps[key];
|
4196 |
-
anyChanges = true;
|
4197 |
-
}
|
4198 |
-
}
|
4199 |
-
for (var key in oldProps) {
|
4200 |
-
if (!(key in newProps)) {
|
4201 |
-
anyChanges = true;
|
4202 |
-
break;
|
4203 |
-
}
|
4204 |
-
}
|
4205 |
-
return { anyChanges: anyChanges, comboProps: comboProps };
|
4206 |
-
}
|
4207 |
|
4208 |
-
|
4209 |
-
PURPOSES:
|
4210 |
-
- hook up to fg, fill, and mirror renderers
|
4211 |
-
- interface for dragging and hits
|
4212 |
-
*/
|
4213 |
-
var DateComponent = /** @class */ (function (_super) {
|
4214 |
-
__extends(DateComponent, _super);
|
4215 |
-
function DateComponent(context, el, isView) {
|
4216 |
-
var _this = _super.call(this, context, isView) || this;
|
4217 |
-
_this.el = el;
|
4218 |
-
return _this;
|
4219 |
-
}
|
4220 |
-
DateComponent.prototype.destroy = function () {
|
4221 |
-
_super.prototype.destroy.call(this);
|
4222 |
-
removeElement(this.el);
|
4223 |
-
};
|
4224 |
-
// TODO: WHAT ABOUT (sourceSeg && sourceSeg.component.doesDragMirror)
|
4225 |
-
//
|
4226 |
-
// Event Drag-n-Drop Rendering (for both events and external elements)
|
4227 |
-
// ---------------------------------------------------------------------------------------------------------------
|
4228 |
-
/*
|
4229 |
-
renderEventDragSegs(state: EventSegUiInteractionState) {
|
4230 |
-
if (state) {
|
4231 |
-
let { isEvent, segs, sourceSeg } = state
|
4232 |
-
|
4233 |
-
if (this.eventRenderer) {
|
4234 |
-
this.eventRenderer.hideByHash(state.affectedInstances)
|
4235 |
-
}
|
4236 |
-
|
4237 |
-
// if the user is dragging something that is considered an event with real event data,
|
4238 |
-
// and this component likes to do drag mirrors OR the component where the seg came from
|
4239 |
-
// likes to do drag mirrors, then render a drag mirror.
|
4240 |
-
if (isEvent && (this.doesDragMirror || sourceSeg && sourceSeg.component.doesDragMirror)) {
|
4241 |
-
if (this.mirrorRenderer) {
|
4242 |
-
this.mirrorRenderer.renderSegs(segs, { isDragging: true, sourceSeg })
|
4243 |
-
}
|
4244 |
-
}
|
4245 |
-
|
4246 |
-
// if it would be impossible to render a drag mirror OR this component likes to render
|
4247 |
-
// highlights, then render a highlight.
|
4248 |
-
if (!isEvent || this.doesDragHighlight) {
|
4249 |
-
if (this.fillRenderer) {
|
4250 |
-
this.fillRenderer.renderSegs('highlight', segs)
|
4251 |
-
}
|
4252 |
-
}
|
4253 |
-
}
|
4254 |
-
}
|
4255 |
-
*/
|
4256 |
-
// Hit System
|
4257 |
-
// -----------------------------------------------------------------------------------------------------------------
|
4258 |
-
DateComponent.prototype.buildPositionCaches = function () {
|
4259 |
-
};
|
4260 |
-
DateComponent.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {
|
4261 |
-
return null; // this should be abstract
|
4262 |
-
};
|
4263 |
-
// Validation
|
4264 |
-
// -----------------------------------------------------------------------------------------------------------------
|
4265 |
-
DateComponent.prototype.isInteractionValid = function (interaction) {
|
4266 |
-
var calendar = this.calendar;
|
4267 |
-
var dateProfile = this.props.dateProfile; // HACK
|
4268 |
-
var instances = interaction.mutatedEvents.instances;
|
4269 |
-
if (dateProfile) { // HACK for DayTile
|
4270 |
-
for (var instanceId in instances) {
|
4271 |
-
if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {
|
4272 |
-
return false;
|
4273 |
-
}
|
4274 |
-
}
|
4275 |
-
}
|
4276 |
-
return isInteractionValid(interaction, calendar);
|
4277 |
-
};
|
4278 |
-
DateComponent.prototype.isDateSelectionValid = function (selection) {
|
4279 |
-
var dateProfile = this.props.dateProfile; // HACK
|
4280 |
-
if (dateProfile && // HACK for DayTile
|
4281 |
-
!rangeContainsRange(dateProfile.validRange, selection.range)) {
|
4282 |
-
return false;
|
4283 |
-
}
|
4284 |
-
return isDateSelectionValid(selection, this.calendar);
|
4285 |
-
};
|
4286 |
-
// Triggering
|
4287 |
-
// -----------------------------------------------------------------------------------------------------------------
|
4288 |
-
// TODO: move to Calendar
|
4289 |
-
DateComponent.prototype.publiclyTrigger = function (name, args) {
|
4290 |
-
var calendar = this.calendar;
|
4291 |
-
return calendar.publiclyTrigger(name, args);
|
4292 |
-
};
|
4293 |
-
DateComponent.prototype.publiclyTriggerAfterSizing = function (name, args) {
|
4294 |
-
var calendar = this.calendar;
|
4295 |
-
return calendar.publiclyTriggerAfterSizing(name, args);
|
4296 |
-
};
|
4297 |
-
DateComponent.prototype.hasPublicHandlers = function (name) {
|
4298 |
-
var calendar = this.calendar;
|
4299 |
-
return calendar.hasPublicHandlers(name);
|
4300 |
-
};
|
4301 |
-
DateComponent.prototype.triggerRenderedSegs = function (segs, isMirrors) {
|
4302 |
-
var calendar = this.calendar;
|
4303 |
-
if (this.hasPublicHandlers('eventPositioned')) {
|
4304 |
-
for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {
|
4305 |
-
var seg = segs_1[_i];
|
4306 |
-
this.publiclyTriggerAfterSizing('eventPositioned', [
|
4307 |
-
{
|
4308 |
-
event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance),
|
4309 |
-
isMirror: isMirrors,
|
4310 |
-
isStart: seg.isStart,
|
4311 |
-
isEnd: seg.isEnd,
|
4312 |
-
el: seg.el,
|
4313 |
-
view: this // safe to cast because this method is only called on context.view
|
4314 |
-
}
|
4315 |
-
]);
|
4316 |
-
}
|
4317 |
-
}
|
4318 |
-
if (!calendar.state.loadingLevel) { // avoid initial empty state while pending
|
4319 |
-
calendar.afterSizingTriggers._eventsPositioned = [null]; // fire once
|
4320 |
-
}
|
4321 |
-
};
|
4322 |
-
DateComponent.prototype.triggerWillRemoveSegs = function (segs, isMirrors) {
|
4323 |
-
var calendar = this.calendar;
|
4324 |
-
for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {
|
4325 |
-
var seg = segs_2[_i];
|
4326 |
-
calendar.trigger('eventElRemove', seg.el);
|
4327 |
-
}
|
4328 |
-
if (this.hasPublicHandlers('eventDestroy')) {
|
4329 |
-
for (var _a = 0, segs_3 = segs; _a < segs_3.length; _a++) {
|
4330 |
-
var seg = segs_3[_a];
|
4331 |
-
this.publiclyTrigger('eventDestroy', [
|
4332 |
-
{
|
4333 |
-
event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance),
|
4334 |
-
isMirror: isMirrors,
|
4335 |
-
el: seg.el,
|
4336 |
-
view: this // safe to cast because this method is only called on context.view
|
4337 |
-
}
|
4338 |
-
]);
|
4339 |
-
}
|
4340 |
-
}
|
4341 |
-
};
|
4342 |
-
// Pointer Interaction Utils
|
4343 |
-
// -----------------------------------------------------------------------------------------------------------------
|
4344 |
-
DateComponent.prototype.isValidSegDownEl = function (el) {
|
4345 |
-
return !this.props.eventDrag && // HACK
|
4346 |
-
!this.props.eventResize && // HACK
|
4347 |
-
!elementClosest(el, '.fc-mirror') &&
|
4348 |
-
(this.isPopover() || !this.isInPopover(el));
|
4349 |
-
// ^above line ensures we don't detect a seg interaction within a nested component.
|
4350 |
-
// it's a HACK because it only supports a popover as the nested component.
|
4351 |
-
};
|
4352 |
-
DateComponent.prototype.isValidDateDownEl = function (el) {
|
4353 |
-
var segEl = elementClosest(el, this.fgSegSelector);
|
4354 |
-
return (!segEl || segEl.classList.contains('fc-mirror')) &&
|
4355 |
-
!elementClosest(el, '.fc-more') && // a "more.." link
|
4356 |
-
!elementClosest(el, 'a[data-goto]') && // a clickable nav link
|
4357 |
-
!this.isInPopover(el);
|
4358 |
-
};
|
4359 |
-
DateComponent.prototype.isPopover = function () {
|
4360 |
-
return this.el.classList.contains('fc-popover');
|
4361 |
-
};
|
4362 |
-
DateComponent.prototype.isInPopover = function (el) {
|
4363 |
-
return Boolean(elementClosest(el, '.fc-popover'));
|
4364 |
-
};
|
4365 |
-
return DateComponent;
|
4366 |
-
}(Component));
|
4367 |
-
DateComponent.prototype.fgSegSelector = '.fc-event-container > *';
|
4368 |
-
DateComponent.prototype.bgSegSelector = '.fc-bgevent:not(.fc-nonbusiness)';
|
4369 |
|
4370 |
-
var uid$1 = 0;
|
4371 |
-
function createPlugin(input) {
|
4372 |
-
return {
|
4373 |
-
id: String(uid$1++),
|
4374 |
-
deps: input.deps || [],
|
4375 |
-
reducers: input.reducers || [],
|
4376 |
-
eventDefParsers: input.eventDefParsers || [],
|
4377 |
-
isDraggableTransformers: input.isDraggableTransformers || [],
|
4378 |
-
eventDragMutationMassagers: input.eventDragMutationMassagers || [],
|
4379 |
-
eventDefMutationAppliers: input.eventDefMutationAppliers || [],
|
4380 |
-
dateSelectionTransformers: input.dateSelectionTransformers || [],
|
4381 |
-
datePointTransforms: input.datePointTransforms || [],
|
4382 |
-
dateSpanTransforms: input.dateSpanTransforms || [],
|
4383 |
-
views: input.views || {},
|
4384 |
-
viewPropsTransformers: input.viewPropsTransformers || [],
|
4385 |
-
isPropsValid: input.isPropsValid || null,
|
4386 |
-
externalDefTransforms: input.externalDefTransforms || [],
|
4387 |
-
eventResizeJoinTransforms: input.eventResizeJoinTransforms || [],
|
4388 |
-
viewContainerModifiers: input.viewContainerModifiers || [],
|
4389 |
-
eventDropTransformers: input.eventDropTransformers || [],
|
4390 |
-
componentInteractions: input.componentInteractions || [],
|
4391 |
-
calendarInteractions: input.calendarInteractions || [],
|
4392 |
-
themeClasses: input.themeClasses || {},
|
4393 |
-
eventSourceDefs: input.eventSourceDefs || [],
|
4394 |
-
cmdFormatter: input.cmdFormatter,
|
4395 |
-
recurringTypes: input.recurringTypes || [],
|
4396 |
-
namedTimeZonedImpl: input.namedTimeZonedImpl,
|
4397 |
-
defaultView: input.defaultView || '',
|
4398 |
-
elementDraggingImpl: input.elementDraggingImpl,
|
4399 |
-
optionChangeHandlers: input.optionChangeHandlers || {}
|
4400 |
-
};
|
4401 |
-
}
|
4402 |
-
var PluginSystem = /** @class */ (function () {
|
4403 |
-
function PluginSystem() {
|
4404 |
-
this.hooks = {
|
4405 |
-
reducers: [],
|
4406 |
-
eventDefParsers: [],
|
4407 |
-
isDraggableTransformers: [],
|
4408 |
-
eventDragMutationMassagers: [],
|
4409 |
-
eventDefMutationAppliers: [],
|
4410 |
-
dateSelectionTransformers: [],
|
4411 |
-
datePointTransforms: [],
|
4412 |
-
dateSpanTransforms: [],
|
4413 |
-
views: {},
|
4414 |
-
viewPropsTransformers: [],
|
4415 |
-
isPropsValid: null,
|
4416 |
-
externalDefTransforms: [],
|
4417 |
-
eventResizeJoinTransforms: [],
|
4418 |
-
viewContainerModifiers: [],
|
4419 |
-
eventDropTransformers: [],
|
4420 |
-
componentInteractions: [],
|
4421 |
-
calendarInteractions: [],
|
4422 |
-
themeClasses: {},
|
4423 |
-
eventSourceDefs: [],
|
4424 |
-
cmdFormatter: null,
|
4425 |
-
recurringTypes: [],
|
4426 |
-
namedTimeZonedImpl: null,
|
4427 |
-
defaultView: '',
|
4428 |
-
elementDraggingImpl: null,
|
4429 |
-
optionChangeHandlers: {}
|
4430 |
-
};
|
4431 |
-
this.addedHash = {};
|
4432 |
-
}
|
4433 |
-
PluginSystem.prototype.add = function (plugin) {
|
4434 |
-
if (!this.addedHash[plugin.id]) {
|
4435 |
-
this.addedHash[plugin.id] = true;
|
4436 |
-
for (var _i = 0, _a = plugin.deps; _i < _a.length; _i++) {
|
4437 |
-
var dep = _a[_i];
|
4438 |
-
this.add(dep);
|
4439 |
-
}
|
4440 |
-
this.hooks = combineHooks(this.hooks, plugin);
|
4441 |
-
}
|
4442 |
-
};
|
4443 |
-
return PluginSystem;
|
4444 |
-
}());
|
4445 |
-
function combineHooks(hooks0, hooks1) {
|
4446 |
-
return {
|
4447 |
-
reducers: hooks0.reducers.concat(hooks1.reducers),
|
4448 |
-
eventDefParsers: hooks0.eventDefParsers.concat(hooks1.eventDefParsers),
|
4449 |
-
isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),
|
4450 |
-
eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),
|
4451 |
-
eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),
|
4452 |
-
dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),
|
4453 |
-
datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),
|
4454 |
-
dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),
|
4455 |
-
views: __assign({}, hooks0.views, hooks1.views),
|
4456 |
-
viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),
|
4457 |
-
isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,
|
4458 |
-
externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),
|
4459 |
-
eventResizeJoinTransforms: hooks0.eventResizeJoinTransforms.concat(hooks1.eventResizeJoinTransforms),
|
4460 |
-
viewContainerModifiers: hooks0.viewContainerModifiers.concat(hooks1.viewContainerModifiers),
|
4461 |
-
eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),
|
4462 |
-
calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),
|
4463 |
-
componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),
|
4464 |
-
themeClasses: __assign({}, hooks0.themeClasses, hooks1.themeClasses),
|
4465 |
-
eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),
|
4466 |
-
cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,
|
4467 |
-
recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),
|
4468 |
-
namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,
|
4469 |
-
defaultView: hooks0.defaultView || hooks1.defaultView,
|
4470 |
-
elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,
|
4471 |
-
optionChangeHandlers: __assign({}, hooks0.optionChangeHandlers, hooks1.optionChangeHandlers)
|
4472 |
-
};
|
4473 |
-
}
|
4474 |
|
4475 |
-
|
4476 |
-
ignoreRange: true,
|
4477 |
-
parseMeta: function (raw) {
|
4478 |
-
if (Array.isArray(raw)) { // short form
|
4479 |
-
return raw;
|
4480 |
-
}
|
4481 |
-
else if (Array.isArray(raw.events)) {
|
4482 |
-
return raw.events;
|
4483 |
-
}
|
4484 |
-
return null;
|
4485 |
-
},
|
4486 |
-
fetch: function (arg, success) {
|
4487 |
-
success({
|
4488 |
-
rawEvents: arg.eventSource.meta
|
4489 |
-
});
|
4490 |
-
}
|
4491 |
-
};
|
4492 |
-
var ArrayEventSourcePlugin = createPlugin({
|
4493 |
-
eventSourceDefs: [eventSourceDef]
|
4494 |
-
});
|
4495 |
|
4496 |
-
|
4497 |
-
|
4498 |
-
|
4499 |
-
|
4500 |
-
}
|
4501 |
-
else if (typeof raw.events === 'function') {
|
4502 |
-
return raw.events;
|
4503 |
-
}
|
4504 |
-
return null;
|
4505 |
-
},
|
4506 |
-
fetch: function (arg, success, failure) {
|
4507 |
-
var dateEnv = arg.calendar.dateEnv;
|
4508 |
-
var func = arg.eventSource.meta;
|
4509 |
-
unpromisify(func.bind(null, {
|
4510 |
-
start: dateEnv.toDate(arg.range.start),
|
4511 |
-
end: dateEnv.toDate(arg.range.end),
|
4512 |
-
startStr: dateEnv.formatIso(arg.range.start),
|
4513 |
-
endStr: dateEnv.formatIso(arg.range.end),
|
4514 |
-
timeZone: dateEnv.timeZone
|
4515 |
-
}), function (rawEvents) {
|
4516 |
-
success({ rawEvents: rawEvents }); // needs an object response
|
4517 |
-
}, failure // send errorObj directly to failure callback
|
4518 |
-
);
|
4519 |
-
}
|
4520 |
-
};
|
4521 |
-
var FuncEventSourcePlugin = createPlugin({
|
4522 |
-
eventSourceDefs: [eventSourceDef$1]
|
4523 |
-
});
|
4524 |
|
4525 |
-
|
4526 |
-
|
4527 |
-
|
4528 |
-
|
4529 |
-
url = injectQueryStringParams(url, params);
|
4530 |
-
}
|
4531 |
-
else {
|
4532 |
-
body = encodeParams(params);
|
4533 |
-
}
|
4534 |
-
var xhr = new XMLHttpRequest();
|
4535 |
-
xhr.open(method, url, true);
|
4536 |
-
if (method !== 'GET') {
|
4537 |
-
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
4538 |
-
}
|
4539 |
-
xhr.onload = function () {
|
4540 |
-
if (xhr.status >= 200 && xhr.status < 400) {
|
4541 |
-
try {
|
4542 |
-
var res = JSON.parse(xhr.responseText);
|
4543 |
-
successCallback(res, xhr);
|
4544 |
-
}
|
4545 |
-
catch (err) {
|
4546 |
-
failureCallback('Failure parsing JSON', xhr);
|
4547 |
-
}
|
4548 |
-
}
|
4549 |
-
else {
|
4550 |
-
failureCallback('Request failed', xhr);
|
4551 |
-
}
|
4552 |
-
};
|
4553 |
-
xhr.onerror = function () {
|
4554 |
-
failureCallback('Request failed', xhr);
|
4555 |
-
};
|
4556 |
-
xhr.send(body);
|
4557 |
-
}
|
4558 |
-
function injectQueryStringParams(url, params) {
|
4559 |
-
return url +
|
4560 |
-
(url.indexOf('?') === -1 ? '?' : '&') +
|
4561 |
-
encodeParams(params);
|
4562 |
-
}
|
4563 |
-
function encodeParams(params) {
|
4564 |
-
var parts = [];
|
4565 |
-
for (var key in params) {
|
4566 |
-
parts.push(encodeURIComponent(key) + '=' + encodeURIComponent(params[key]));
|
4567 |
-
}
|
4568 |
-
return parts.join('&');
|
4569 |
-
}
|
4570 |
|
4571 |
-
|
4572 |
-
|
4573 |
-
|
4574 |
-
|
4575 |
-
|
4576 |
-
|
4577 |
-
|
4578 |
-
|
4579 |
-
return {
|
4580 |
-
url: raw.url,
|
4581 |
-
method: (raw.method || 'GET').toUpperCase(),
|
4582 |
-
extraParams: raw.extraParams,
|
4583 |
-
startParam: raw.startParam,
|
4584 |
-
endParam: raw.endParam,
|
4585 |
-
timeZoneParam: raw.timeZoneParam
|
4586 |
-
};
|
4587 |
-
},
|
4588 |
-
fetch: function (arg, success, failure) {
|
4589 |
-
var meta = arg.eventSource.meta;
|
4590 |
-
var requestParams = buildRequestParams(meta, arg.range, arg.calendar);
|
4591 |
-
requestJson(meta.method, meta.url, requestParams, function (rawEvents, xhr) {
|
4592 |
-
success({ rawEvents: rawEvents, xhr: xhr });
|
4593 |
-
}, function (errorMessage, xhr) {
|
4594 |
-
failure({ message: errorMessage, xhr: xhr });
|
4595 |
-
});
|
4596 |
-
}
|
4597 |
-
};
|
4598 |
-
var JsonFeedEventSourcePlugin = createPlugin({
|
4599 |
-
eventSourceDefs: [eventSourceDef$2]
|
4600 |
-
});
|
4601 |
-
function buildRequestParams(meta, range, calendar) {
|
4602 |
-
var dateEnv = calendar.dateEnv;
|
4603 |
-
var startParam;
|
4604 |
-
var endParam;
|
4605 |
-
var timeZoneParam;
|
4606 |
-
var customRequestParams;
|
4607 |
-
var params = {};
|
4608 |
-
startParam = meta.startParam;
|
4609 |
-
if (startParam == null) {
|
4610 |
-
startParam = calendar.opt('startParam');
|
4611 |
-
}
|
4612 |
-
endParam = meta.endParam;
|
4613 |
-
if (endParam == null) {
|
4614 |
-
endParam = calendar.opt('endParam');
|
4615 |
-
}
|
4616 |
-
timeZoneParam = meta.timeZoneParam;
|
4617 |
-
if (timeZoneParam == null) {
|
4618 |
-
timeZoneParam = calendar.opt('timeZoneParam');
|
4619 |
-
}
|
4620 |
-
// retrieve any outbound GET/POST data from the options
|
4621 |
-
if (typeof meta.extraParams === 'function') {
|
4622 |
-
// supplied as a function that returns a key/value object
|
4623 |
-
customRequestParams = meta.extraParams();
|
4624 |
-
}
|
4625 |
-
else {
|
4626 |
-
// probably supplied as a straight key/value object
|
4627 |
-
customRequestParams = meta.extraParams || {};
|
4628 |
-
}
|
4629 |
-
__assign(params, customRequestParams);
|
4630 |
-
params[startParam] = dateEnv.formatIso(range.start);
|
4631 |
-
params[endParam] = dateEnv.formatIso(range.end);
|
4632 |
-
if (dateEnv.timeZone !== 'local') {
|
4633 |
-
params[timeZoneParam] = dateEnv.timeZone;
|
4634 |
-
}
|
4635 |
-
return params;
|
4636 |
-
}
|
4637 |
|
4638 |
-
|
4639 |
-
parse: function (rawEvent, leftoverProps, dateEnv) {
|
4640 |
-
var createMarker = dateEnv.createMarker.bind(dateEnv);
|
4641 |
-
var processors = {
|
4642 |
-
daysOfWeek: null,
|
4643 |
-
startTime: createDuration,
|
4644 |
-
endTime: createDuration,
|
4645 |
-
startRecur: createMarker,
|
4646 |
-
endRecur: createMarker
|
4647 |
-
};
|
4648 |
-
var props = refineProps(rawEvent, processors, {}, leftoverProps);
|
4649 |
-
var anyValid = false;
|
4650 |
-
for (var propName in props) {
|
4651 |
-
if (props[propName] != null) {
|
4652 |
-
anyValid = true;
|
4653 |
-
break;
|
4654 |
-
}
|
4655 |
-
}
|
4656 |
-
if (anyValid) {
|
4657 |
-
var duration = null;
|
4658 |
-
if ('duration' in leftoverProps) {
|
4659 |
-
duration = createDuration(leftoverProps.duration);
|
4660 |
-
delete leftoverProps.duration;
|
4661 |
-
}
|
4662 |
-
if (!duration && props.startTime && props.endTime) {
|
4663 |
-
duration = subtractDurations(props.endTime, props.startTime);
|
4664 |
-
}
|
4665 |
-
return {
|
4666 |
-
allDayGuess: Boolean(!props.startTime && !props.endTime),
|
4667 |
-
duration: duration,
|
4668 |
-
typeData: props // doesn't need endTime anymore but oh well
|
4669 |
-
};
|
4670 |
-
}
|
4671 |
-
return null;
|
4672 |
-
},
|
4673 |
-
expand: function (typeData, framingRange, dateEnv) {
|
4674 |
-
var clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });
|
4675 |
-
if (clippedFramingRange) {
|
4676 |
-
return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);
|
4677 |
-
}
|
4678 |
-
else {
|
4679 |
-
return [];
|
4680 |
-
}
|
4681 |
-
}
|
4682 |
-
};
|
4683 |
-
var SimpleRecurrencePlugin = createPlugin({
|
4684 |
-
recurringTypes: [recurring]
|
4685 |
-
});
|
4686 |
-
function expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {
|
4687 |
-
var dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;
|
4688 |
-
var dayMarker = startOfDay(framingRange.start);
|
4689 |
-
var endMarker = framingRange.end;
|
4690 |
-
var instanceStarts = [];
|
4691 |
-
while (dayMarker < endMarker) {
|
4692 |
-
var instanceStart
|
4693 |
-
// if everyday, or this particular day-of-week
|
4694 |
-
= void 0;
|
4695 |
-
// if everyday, or this particular day-of-week
|
4696 |
-
if (!dowHash || dowHash[dayMarker.getUTCDay()]) {
|
4697 |
-
if (startTime) {
|
4698 |
-
instanceStart = dateEnv.add(dayMarker, startTime);
|
4699 |
-
}
|
4700 |
-
else {
|
4701 |
-
instanceStart = dayMarker;
|
4702 |
-
}
|
4703 |
-
instanceStarts.push(instanceStart);
|
4704 |
-
}
|
4705 |
-
dayMarker = addDays(dayMarker, 1);
|
4706 |
-
}
|
4707 |
-
return instanceStarts;
|
4708 |
-
}
|
4709 |
|
4710 |
-
|
4711 |
-
|
4712 |
-
|
4713 |
-
|
4714 |
-
},
|
4715 |
-
eventSources: handleEventSources,
|
4716 |
-
plugins: handlePlugins
|
4717 |
-
}
|
4718 |
-
});
|
4719 |
-
function handleEventSources(inputs, calendar, deepEqual) {
|
4720 |
-
var unfoundSources = hashValuesToArray(calendar.state.eventSources);
|
4721 |
-
var newInputs = [];
|
4722 |
-
for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {
|
4723 |
-
var input = inputs_1[_i];
|
4724 |
-
var inputFound = false;
|
4725 |
-
for (var i = 0; i < unfoundSources.length; i++) {
|
4726 |
-
if (deepEqual(unfoundSources[i]._raw, input)) {
|
4727 |
-
unfoundSources.splice(i, 1); // delete
|
4728 |
-
inputFound = true;
|
4729 |
-
break;
|
4730 |
-
}
|
4731 |
-
}
|
4732 |
-
if (!inputFound) {
|
4733 |
-
newInputs.push(input);
|
4734 |
-
}
|
4735 |
-
}
|
4736 |
-
for (var _a = 0, unfoundSources_1 = unfoundSources; _a < unfoundSources_1.length; _a++) {
|
4737 |
-
var unfoundSource = unfoundSources_1[_a];
|
4738 |
-
calendar.dispatch({
|
4739 |
-
type: 'REMOVE_EVENT_SOURCE',
|
4740 |
-
sourceId: unfoundSource.sourceId
|
4741 |
-
});
|
4742 |
-
}
|
4743 |
-
for (var _b = 0, newInputs_1 = newInputs; _b < newInputs_1.length; _b++) {
|
4744 |
-
var newInput = newInputs_1[_b];
|
4745 |
-
calendar.addEventSource(newInput);
|
4746 |
-
}
|
4747 |
-
}
|
4748 |
-
// shortcoming: won't remove plugins
|
4749 |
-
function handlePlugins(inputs, calendar) {
|
4750 |
-
calendar.addPluginInputs(inputs); // will gracefully handle duplicates
|
4751 |
-
}
|
4752 |
|
4753 |
-
|
4754 |
-
|
4755 |
-
|
4756 |
-
|
4757 |
-
|
4758 |
-
|
4759 |
-
|
4760 |
-
nextDayThreshold: '00:00:00',
|
4761 |
-
// display
|
4762 |
-
columnHeader: true,
|
4763 |
-
defaultView: '',
|
4764 |
-
aspectRatio: 1.35,
|
4765 |
-
header: {
|
4766 |
-
left: 'title',
|
4767 |
-
center: '',
|
4768 |
-
right: 'today prev,next'
|
4769 |
-
},
|
4770 |
-
weekends: true,
|
4771 |
-
weekNumbers: false,
|
4772 |
-
weekNumberCalculation: 'local',
|
4773 |
-
editable: false,
|
4774 |
-
// nowIndicator: false,
|
4775 |
-
scrollTime: '06:00:00',
|
4776 |
-
minTime: '00:00:00',
|
4777 |
-
maxTime: '24:00:00',
|
4778 |
-
showNonCurrentDates: true,
|
4779 |
-
// event ajax
|
4780 |
-
lazyFetching: true,
|
4781 |
-
startParam: 'start',
|
4782 |
-
endParam: 'end',
|
4783 |
-
timeZoneParam: 'timeZone',
|
4784 |
-
timeZone: 'local',
|
4785 |
-
// allDayDefault: undefined,
|
4786 |
-
// locale
|
4787 |
-
locales: [],
|
4788 |
-
locale: '',
|
4789 |
-
// dir: will get this from the default locale
|
4790 |
-
// buttonIcons: null,
|
4791 |
-
// allows setting a min-height to the event segment to prevent short events overlapping each other
|
4792 |
-
timeGridEventMinHeight: 0,
|
4793 |
-
themeSystem: 'standard',
|
4794 |
-
// eventResizableFromStart: false,
|
4795 |
-
dragRevertDuration: 500,
|
4796 |
-
dragScroll: true,
|
4797 |
-
allDayMaintainDuration: false,
|
4798 |
-
// selectable: false,
|
4799 |
-
unselectAuto: true,
|
4800 |
-
// selectMinDistance: 0,
|
4801 |
-
dropAccept: '*',
|
4802 |
-
eventOrder: 'start,-duration,allDay,title',
|
4803 |
-
// ^ if start tie, longer events go before shorter. final tie-breaker is title text
|
4804 |
-
// rerenderDelay: null,
|
4805 |
-
eventLimit: false,
|
4806 |
-
eventLimitClick: 'popover',
|
4807 |
-
dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' },
|
4808 |
-
handleWindowResize: true,
|
4809 |
-
windowResizeDelay: 100,
|
4810 |
-
longPressDelay: 1000,
|
4811 |
-
eventDragMinDistance: 5 // only applies to mouse
|
4812 |
-
};
|
4813 |
-
var rtlDefaults = {
|
4814 |
-
header: {
|
4815 |
-
left: 'next,prev today',
|
4816 |
-
center: '',
|
4817 |
-
right: 'title'
|
4818 |
-
},
|
4819 |
-
buttonIcons: {
|
4820 |
-
// TODO: make RTL support the responibility of the theme
|
4821 |
-
prev: 'fc-icon-chevron-right',
|
4822 |
-
next: 'fc-icon-chevron-left',
|
4823 |
-
prevYear: 'fc-icon-chevrons-right',
|
4824 |
-
nextYear: 'fc-icon-chevrons-left'
|
4825 |
-
}
|
4826 |
-
};
|
4827 |
-
var complexOptions = [
|
4828 |
-
'header',
|
4829 |
-
'footer',
|
4830 |
-
'buttonText',
|
4831 |
-
'buttonIcons'
|
4832 |
-
];
|
4833 |
-
// Merges an array of option objects into a single object
|
4834 |
-
function mergeOptions(optionObjs) {
|
4835 |
-
return mergeProps(optionObjs, complexOptions);
|
4836 |
-
}
|
4837 |
-
// TODO: move this stuff to a "plugin"-related file...
|
4838 |
-
var INTERNAL_PLUGINS = [
|
4839 |
-
ArrayEventSourcePlugin,
|
4840 |
-
FuncEventSourcePlugin,
|
4841 |
-
JsonFeedEventSourcePlugin,
|
4842 |
-
SimpleRecurrencePlugin,
|
4843 |
-
DefaultOptionChangeHandlers
|
4844 |
-
];
|
4845 |
-
function refinePluginDefs(pluginInputs) {
|
4846 |
-
var plugins = [];
|
4847 |
-
for (var _i = 0, pluginInputs_1 = pluginInputs; _i < pluginInputs_1.length; _i++) {
|
4848 |
-
var pluginInput = pluginInputs_1[_i];
|
4849 |
-
if (typeof pluginInput === 'string') {
|
4850 |
-
var globalName = 'FullCalendar' + capitaliseFirstLetter(pluginInput);
|
4851 |
-
if (!window[globalName]) {
|
4852 |
-
console.warn('Plugin file not loaded for ' + pluginInput);
|
4853 |
-
}
|
4854 |
-
else {
|
4855 |
-
plugins.push(window[globalName].default); // is an ES6 module
|
4856 |
-
}
|
4857 |
-
}
|
4858 |
-
else {
|
4859 |
-
plugins.push(pluginInput);
|
4860 |
-
}
|
4861 |
-
}
|
4862 |
-
return INTERNAL_PLUGINS.concat(plugins);
|
4863 |
-
}
|
4864 |
|
4865 |
-
|
4866 |
-
|
4867 |
-
week: {
|
4868 |
-
dow: 0,
|
4869 |
-
doy: 4 // 4 days need to be within the year to be considered the first week
|
4870 |
-
},
|
4871 |
-
dir: 'ltr',
|
4872 |
-
buttonText: {
|
4873 |
-
prev: 'prev',
|
4874 |
-
next: 'next',
|
4875 |
-
prevYear: 'prev year',
|
4876 |
-
nextYear: 'next year',
|
4877 |
-
year: 'year',
|
4878 |
-
today: 'today',
|
4879 |
-
month: 'month',
|
4880 |
-
week: 'week',
|
4881 |
-
day: 'day',
|
4882 |
-
list: 'list'
|
4883 |
-
},
|
4884 |
-
weekLabel: 'W',
|
4885 |
-
allDayText: 'all-day',
|
4886 |
-
eventLimitText: 'more',
|
4887 |
-
noEventsMessage: 'No events to display'
|
4888 |
-
};
|
4889 |
-
function parseRawLocales(explicitRawLocales) {
|
4890 |
-
var defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';
|
4891 |
-
var globalArray = window['FullCalendarLocalesAll'] || []; // from locales-all.js
|
4892 |
-
var globalObject = window['FullCalendarLocales'] || {}; // from locales/*.js. keys are meaningless
|
4893 |
-
var allRawLocales = globalArray.concat(// globalArray is low prio
|
4894 |
-
hashValuesToArray(globalObject), // medium prio
|
4895 |
-
explicitRawLocales // highest prio
|
4896 |
-
);
|
4897 |
-
var rawLocaleMap = {
|
4898 |
-
en: RAW_EN_LOCALE // necessary?
|
4899 |
-
};
|
4900 |
-
for (var _i = 0, allRawLocales_1 = allRawLocales; _i < allRawLocales_1.length; _i++) {
|
4901 |
-
var rawLocale = allRawLocales_1[_i];
|
4902 |
-
rawLocaleMap[rawLocale.code] = rawLocale;
|
4903 |
-
}
|
4904 |
-
return {
|
4905 |
-
map: rawLocaleMap,
|
4906 |
-
defaultCode: defaultCode
|
4907 |
-
};
|
4908 |
-
}
|
4909 |
-
function buildLocale(inputSingular, available) {
|
4910 |
-
if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {
|
4911 |
-
return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);
|
4912 |
-
}
|
4913 |
-
else {
|
4914 |
-
return queryLocale(inputSingular, available);
|
4915 |
-
}
|
4916 |
-
}
|
4917 |
-
function queryLocale(codeArg, available) {
|
4918 |
-
var codes = [].concat(codeArg || []); // will convert to array
|
4919 |
-
var raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;
|
4920 |
-
return parseLocale(codeArg, codes, raw);
|
4921 |
-
}
|
4922 |
-
function queryRawLocale(codes, available) {
|
4923 |
-
for (var i = 0; i < codes.length; i++) {
|
4924 |
-
var parts = codes[i].toLocaleLowerCase().split('-');
|
4925 |
-
for (var j = parts.length; j > 0; j--) {
|
4926 |
-
var simpleId = parts.slice(0, j).join('-');
|
4927 |
-
if (available[simpleId]) {
|
4928 |
-
return available[simpleId];
|
4929 |
-
}
|
4930 |
-
}
|
4931 |
-
}
|
4932 |
-
return null;
|
4933 |
-
}
|
4934 |
-
function parseLocale(codeArg, codes, raw) {
|
4935 |
-
var merged = mergeProps([RAW_EN_LOCALE, raw], ['buttonText']);
|
4936 |
-
delete merged.code; // don't want this part of the options
|
4937 |
-
var week = merged.week;
|
4938 |
-
delete merged.week;
|
4939 |
-
return {
|
4940 |
-
codeArg: codeArg,
|
4941 |
-
codes: codes,
|
4942 |
-
week: week,
|
4943 |
-
simpleNumberFormat: new Intl.NumberFormat(codeArg),
|
4944 |
-
options: merged
|
4945 |
-
};
|
4946 |
-
}
|
4947 |
|
4948 |
-
|
4949 |
-
|
4950 |
-
|
4951 |
-
this.dynamicOverrides = {};
|
4952 |
-
this.compute();
|
4953 |
-
}
|
4954 |
-
OptionsManager.prototype.mutate = function (updates, removals, isDynamic) {
|
4955 |
-
var overrideHash = isDynamic ? this.dynamicOverrides : this.overrides;
|
4956 |
-
__assign(overrideHash, updates);
|
4957 |
-
for (var _i = 0, removals_1 = removals; _i < removals_1.length; _i++) {
|
4958 |
-
var propName = removals_1[_i];
|
4959 |
-
delete overrideHash[propName];
|
4960 |
-
}
|
4961 |
-
this.compute();
|
4962 |
-
};
|
4963 |
-
// Computes the flattened options hash for the calendar and assigns to `this.options`.
|
4964 |
-
// Assumes this.overrides and this.dynamicOverrides have already been initialized.
|
4965 |
-
OptionsManager.prototype.compute = function () {
|
4966 |
-
// TODO: not a very efficient system
|
4967 |
-
var locales = firstDefined(// explicit locale option given?
|
4968 |
-
this.dynamicOverrides.locales, this.overrides.locales, globalDefaults.locales);
|
4969 |
-
var locale = firstDefined(// explicit locales option given?
|
4970 |
-
this.dynamicOverrides.locale, this.overrides.locale, globalDefaults.locale);
|
4971 |
-
var available = parseRawLocales(locales);
|
4972 |
-
var localeDefaults = buildLocale(locale || available.defaultCode, available.map).options;
|
4973 |
-
var dir = firstDefined(// based on options computed so far, is direction RTL?
|
4974 |
-
this.dynamicOverrides.dir, this.overrides.dir, localeDefaults.dir);
|
4975 |
-
var dirDefaults = dir === 'rtl' ? rtlDefaults : {};
|
4976 |
-
this.dirDefaults = dirDefaults;
|
4977 |
-
this.localeDefaults = localeDefaults;
|
4978 |
-
this.computed = mergeOptions([
|
4979 |
-
globalDefaults,
|
4980 |
-
dirDefaults,
|
4981 |
-
localeDefaults,
|
4982 |
-
this.overrides,
|
4983 |
-
this.dynamicOverrides
|
4984 |
-
]);
|
4985 |
-
};
|
4986 |
-
return OptionsManager;
|
4987 |
-
}());
|
4988 |
|
4989 |
-
|
4990 |
-
|
4991 |
-
|
4992 |
-
}
|
4993 |
-
|
4994 |
-
|
4995 |
-
|
4996 |
-
var GregorianCalendarSystem = /** @class */ (function () {
|
4997 |
-
function GregorianCalendarSystem() {
|
4998 |
-
}
|
4999 |
-
GregorianCalendarSystem.prototype.getMarkerYear = function (d) {
|
5000 |
-
return d.getUTCFullYear();
|
5001 |
-
};
|
5002 |
-
GregorianCalendarSystem.prototype.getMarkerMonth = function (d) {
|
5003 |
-
return d.getUTCMonth();
|
5004 |
-
};
|
5005 |
-
GregorianCalendarSystem.prototype.getMarkerDay = function (d) {
|
5006 |
-
return d.getUTCDate();
|
5007 |
-
};
|
5008 |
-
GregorianCalendarSystem.prototype.arrayToMarker = function (arr) {
|
5009 |
-
return arrayToUtcDate(arr);
|
5010 |
-
};
|
5011 |
-
GregorianCalendarSystem.prototype.markerToArray = function (marker) {
|
5012 |
-
return dateToUtcArray(marker);
|
5013 |
-
};
|
5014 |
-
return GregorianCalendarSystem;
|
5015 |
-
}());
|
5016 |
-
registerCalendarSystem('gregory', GregorianCalendarSystem);
|
5017 |
|
5018 |
-
|
5019 |
-
|
5020 |
-
|
5021 |
-
|
5022 |
-
var marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number('0.' + m[12]) * 1000 : 0));
|
5023 |
-
if (isValidDate(marker)) {
|
5024 |
-
var timeZoneOffset = null;
|
5025 |
-
if (m[13]) {
|
5026 |
-
timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 +
|
5027 |
-
Number(m[18] || 0));
|
5028 |
-
}
|
5029 |
-
return {
|
5030 |
-
marker: marker,
|
5031 |
-
isTimeUnspecified: !m[6],
|
5032 |
-
timeZoneOffset: timeZoneOffset
|
5033 |
-
};
|
5034 |
-
}
|
5035 |
-
}
|
5036 |
-
return null;
|
5037 |
-
}
|
5038 |
|
5039 |
-
|
5040 |
-
|
5041 |
-
|
5042 |
-
|
5043 |
-
|
5044 |
-
|
5045 |
-
|
5046 |
-
this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl);
|
5047 |
-
this.calendarSystem = createCalendarSystem(settings.calendarSystem);
|
5048 |
-
this.locale = settings.locale;
|
5049 |
-
this.weekDow = settings.locale.week.dow;
|
5050 |
-
this.weekDoy = settings.locale.week.doy;
|
5051 |
-
if (settings.weekNumberCalculation === 'ISO') {
|
5052 |
-
this.weekDow = 1;
|
5053 |
-
this.weekDoy = 4;
|
5054 |
-
}
|
5055 |
-
if (typeof settings.firstDay === 'number') {
|
5056 |
-
this.weekDow = settings.firstDay;
|
5057 |
-
}
|
5058 |
-
if (typeof settings.weekNumberCalculation === 'function') {
|
5059 |
-
this.weekNumberFunc = settings.weekNumberCalculation;
|
5060 |
-
}
|
5061 |
-
this.weekLabel = settings.weekLabel != null ? settings.weekLabel : settings.locale.options.weekLabel;
|
5062 |
-
this.cmdFormatter = settings.cmdFormatter;
|
5063 |
-
}
|
5064 |
-
// Creating / Parsing
|
5065 |
-
DateEnv.prototype.createMarker = function (input) {
|
5066 |
-
var meta = this.createMarkerMeta(input);
|
5067 |
-
if (meta === null) {
|
5068 |
-
return null;
|
5069 |
-
}
|
5070 |
-
return meta.marker;
|
5071 |
-
};
|
5072 |
-
DateEnv.prototype.createNowMarker = function () {
|
5073 |
-
if (this.canComputeOffset) {
|
5074 |
-
return this.timestampToMarker(new Date().valueOf());
|
5075 |
-
}
|
5076 |
-
else {
|
5077 |
-
// if we can't compute the current date val for a timezone,
|
5078 |
-
// better to give the current local date vals than UTC
|
5079 |
-
return arrayToUtcDate(dateToLocalArray(new Date()));
|
5080 |
-
}
|
5081 |
-
};
|
5082 |
-
DateEnv.prototype.createMarkerMeta = function (input) {
|
5083 |
-
if (typeof input === 'string') {
|
5084 |
-
return this.parse(input);
|
5085 |
-
}
|
5086 |
-
var marker = null;
|
5087 |
-
if (typeof input === 'number') {
|
5088 |
-
marker = this.timestampToMarker(input);
|
5089 |
-
}
|
5090 |
-
else if (input instanceof Date) {
|
5091 |
-
input = input.valueOf();
|
5092 |
-
if (!isNaN(input)) {
|
5093 |
-
marker = this.timestampToMarker(input);
|
5094 |
-
}
|
5095 |
-
}
|
5096 |
-
else if (Array.isArray(input)) {
|
5097 |
-
marker = arrayToUtcDate(input);
|
5098 |
-
}
|
5099 |
-
if (marker === null || !isValidDate(marker)) {
|
5100 |
-
return null;
|
5101 |
-
}
|
5102 |
-
return { marker: marker, isTimeUnspecified: false, forcedTzo: null };
|
5103 |
-
};
|
5104 |
-
DateEnv.prototype.parse = function (s) {
|
5105 |
-
var parts = parse(s);
|
5106 |
-
if (parts === null) {
|
5107 |
-
return null;
|
5108 |
-
}
|
5109 |
-
var marker = parts.marker;
|
5110 |
-
var forcedTzo = null;
|
5111 |
-
if (parts.timeZoneOffset !== null) {
|
5112 |
-
if (this.canComputeOffset) {
|
5113 |
-
marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);
|
5114 |
-
}
|
5115 |
-
else {
|
5116 |
-
forcedTzo = parts.timeZoneOffset;
|
5117 |
-
}
|
5118 |
-
}
|
5119 |
-
return { marker: marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo: forcedTzo };
|
5120 |
-
};
|
5121 |
-
// Accessors
|
5122 |
-
DateEnv.prototype.getYear = function (marker) {
|
5123 |
-
return this.calendarSystem.getMarkerYear(marker);
|
5124 |
-
};
|
5125 |
-
DateEnv.prototype.getMonth = function (marker) {
|
5126 |
-
return this.calendarSystem.getMarkerMonth(marker);
|
5127 |
-
};
|
5128 |
-
// Adding / Subtracting
|
5129 |
-
DateEnv.prototype.add = function (marker, dur) {
|
5130 |
-
var a = this.calendarSystem.markerToArray(marker);
|
5131 |
-
a[0] += dur.years;
|
5132 |
-
a[1] += dur.months;
|
5133 |
-
a[2] += dur.days;
|
5134 |
-
a[6] += dur.milliseconds;
|
5135 |
-
return this.calendarSystem.arrayToMarker(a);
|
5136 |
-
};
|
5137 |
-
DateEnv.prototype.subtract = function (marker, dur) {
|
5138 |
-
var a = this.calendarSystem.markerToArray(marker);
|
5139 |
-
a[0] -= dur.years;
|
5140 |
-
a[1] -= dur.months;
|
5141 |
-
a[2] -= dur.days;
|
5142 |
-
a[6] -= dur.milliseconds;
|
5143 |
-
return this.calendarSystem.arrayToMarker(a);
|
5144 |
-
};
|
5145 |
-
DateEnv.prototype.addYears = function (marker, n) {
|
5146 |
-
var a = this.calendarSystem.markerToArray(marker);
|
5147 |
-
a[0] += n;
|
5148 |
-
return this.calendarSystem.arrayToMarker(a);
|
5149 |
-
};
|
5150 |
-
DateEnv.prototype.addMonths = function (marker, n) {
|
5151 |
-
var a = this.calendarSystem.markerToArray(marker);
|
5152 |
-
a[1] += n;
|
5153 |
-
return this.calendarSystem.arrayToMarker(a);
|
5154 |
-
};
|
5155 |
-
// Diffing Whole Units
|
5156 |
-
DateEnv.prototype.diffWholeYears = function (m0, m1) {
|
5157 |
-
var calendarSystem = this.calendarSystem;
|
5158 |
-
if (timeAsMs(m0) === timeAsMs(m1) &&
|
5159 |
-
calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) &&
|
5160 |
-
calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) {
|
5161 |
-
return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);
|
5162 |
-
}
|
5163 |
-
return null;
|
5164 |
-
};
|
5165 |
-
DateEnv.prototype.diffWholeMonths = function (m0, m1) {
|
5166 |
-
var calendarSystem = this.calendarSystem;
|
5167 |
-
if (timeAsMs(m0) === timeAsMs(m1) &&
|
5168 |
-
calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {
|
5169 |
-
return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) +
|
5170 |
-
(calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;
|
5171 |
-
}
|
5172 |
-
return null;
|
5173 |
-
};
|
5174 |
-
// Range / Duration
|
5175 |
-
DateEnv.prototype.greatestWholeUnit = function (m0, m1) {
|
5176 |
-
var n = this.diffWholeYears(m0, m1);
|
5177 |
-
if (n !== null) {
|
5178 |
-
return { unit: 'year', value: n };
|
5179 |
-
}
|
5180 |
-
n = this.diffWholeMonths(m0, m1);
|
5181 |
-
if (n !== null) {
|
5182 |
-
return { unit: 'month', value: n };
|
5183 |
-
}
|
5184 |
-
n = diffWholeWeeks(m0, m1);
|
5185 |
-
if (n !== null) {
|
5186 |
-
return { unit: 'week', value: n };
|
5187 |
-
}
|
5188 |
-
n = diffWholeDays(m0, m1);
|
5189 |
-
if (n !== null) {
|
5190 |
-
return { unit: 'day', value: n };
|
5191 |
-
}
|
5192 |
-
n = diffHours(m0, m1);
|
5193 |
-
if (isInt(n)) {
|
5194 |
-
return { unit: 'hour', value: n };
|
5195 |
-
}
|
5196 |
-
n = diffMinutes(m0, m1);
|
5197 |
-
if (isInt(n)) {
|
5198 |
-
return { unit: 'minute', value: n };
|
5199 |
-
}
|
5200 |
-
n = diffSeconds(m0, m1);
|
5201 |
-
if (isInt(n)) {
|
5202 |
-
return { unit: 'second', value: n };
|
5203 |
-
}
|
5204 |
-
return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() };
|
5205 |
-
};
|
5206 |
-
DateEnv.prototype.countDurationsBetween = function (m0, m1, d) {
|
5207 |
-
// TODO: can use greatestWholeUnit
|
5208 |
-
var diff;
|
5209 |
-
if (d.years) {
|
5210 |
-
diff = this.diffWholeYears(m0, m1);
|
5211 |
-
if (diff !== null) {
|
5212 |
-
return diff / asRoughYears(d);
|
5213 |
-
}
|
5214 |
-
}
|
5215 |
-
if (d.months) {
|
5216 |
-
diff = this.diffWholeMonths(m0, m1);
|
5217 |
-
if (diff !== null) {
|
5218 |
-
return diff / asRoughMonths(d);
|
5219 |
-
}
|
5220 |
-
}
|
5221 |
-
if (d.days) {
|
5222 |
-
diff = diffWholeDays(m0, m1);
|
5223 |
-
if (diff !== null) {
|
5224 |
-
return diff / asRoughDays(d);
|
5225 |
-
}
|
5226 |
-
}
|
5227 |
-
return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);
|
5228 |
-
};
|
5229 |
-
// Start-Of
|
5230 |
-
DateEnv.prototype.startOf = function (m, unit) {
|
5231 |
-
if (unit === 'year') {
|
5232 |
-
return this.startOfYear(m);
|
5233 |
-
}
|
5234 |
-
else if (unit === 'month') {
|
5235 |
-
return this.startOfMonth(m);
|
5236 |
-
}
|
5237 |
-
else if (unit === 'week') {
|
5238 |
-
return this.startOfWeek(m);
|
5239 |
-
}
|
5240 |
-
else if (unit === 'day') {
|
5241 |
-
return startOfDay(m);
|
5242 |
-
}
|
5243 |
-
else if (unit === 'hour') {
|
5244 |
-
return startOfHour(m);
|
5245 |
-
}
|
5246 |
-
else if (unit === 'minute') {
|
5247 |
-
return startOfMinute(m);
|
5248 |
-
}
|
5249 |
-
else if (unit === 'second') {
|
5250 |
-
return startOfSecond(m);
|
5251 |
-
}
|
5252 |
-
};
|
5253 |
-
DateEnv.prototype.startOfYear = function (m) {
|
5254 |
-
return this.calendarSystem.arrayToMarker([
|
5255 |
-
this.calendarSystem.getMarkerYear(m)
|
5256 |
-
]);
|
5257 |
-
};
|
5258 |
-
DateEnv.prototype.startOfMonth = function (m) {
|
5259 |
-
return this.calendarSystem.arrayToMarker([
|
5260 |
-
this.calendarSystem.getMarkerYear(m),
|
5261 |
-
this.calendarSystem.getMarkerMonth(m)
|
5262 |
-
]);
|
5263 |
-
};
|
5264 |
-
DateEnv.prototype.startOfWeek = function (m) {
|
5265 |
-
return this.calendarSystem.arrayToMarker([
|
5266 |
-
this.calendarSystem.getMarkerYear(m),
|
5267 |
-
this.calendarSystem.getMarkerMonth(m),
|
5268 |
-
m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7)
|
5269 |
-
]);
|
5270 |
-
};
|
5271 |
-
// Week Number
|
5272 |
-
DateEnv.prototype.computeWeekNumber = function (marker) {
|
5273 |
-
if (this.weekNumberFunc) {
|
5274 |
-
return this.weekNumberFunc(this.toDate(marker));
|
5275 |
-
}
|
5276 |
-
else {
|
5277 |
-
return weekOfYear(marker, this.weekDow, this.weekDoy);
|
5278 |
-
}
|
5279 |
-
};
|
5280 |
-
// TODO: choke on timeZoneName: long
|
5281 |
-
DateEnv.prototype.format = function (marker, formatter, dateOptions) {
|
5282 |
-
if (dateOptions === void 0) { dateOptions = {}; }
|
5283 |
-
return formatter.format({
|
5284 |
-
marker: marker,
|
5285 |
-
timeZoneOffset: dateOptions.forcedTzo != null ?
|
5286 |
-
dateOptions.forcedTzo :
|
5287 |
-
this.offsetForMarker(marker)
|
5288 |
-
}, this);
|
5289 |
-
};
|
5290 |
-
DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) {
|
5291 |
-
if (dateOptions === void 0) { dateOptions = {}; }
|
5292 |
-
if (dateOptions.isEndExclusive) {
|
5293 |
-
end = addMs(end, -1);
|
5294 |
-
}
|
5295 |
-
return formatter.formatRange({
|
5296 |
-
marker: start,
|
5297 |
-
timeZoneOffset: dateOptions.forcedStartTzo != null ?
|
5298 |
-
dateOptions.forcedStartTzo :
|
5299 |
-
this.offsetForMarker(start)
|
5300 |
-
}, {
|
5301 |
-
marker: end,
|
5302 |
-
timeZoneOffset: dateOptions.forcedEndTzo != null ?
|
5303 |
-
dateOptions.forcedEndTzo :
|
5304 |
-
this.offsetForMarker(end)
|
5305 |
-
}, this);
|
5306 |
-
};
|
5307 |
-
DateEnv.prototype.formatIso = function (marker, extraOptions) {
|
5308 |
-
if (extraOptions === void 0) { extraOptions = {}; }
|
5309 |
-
var timeZoneOffset = null;
|
5310 |
-
if (!extraOptions.omitTimeZoneOffset) {
|
5311 |
-
if (extraOptions.forcedTzo != null) {
|
5312 |
-
timeZoneOffset = extraOptions.forcedTzo;
|
5313 |
-
}
|
5314 |
-
else {
|
5315 |
-
timeZoneOffset = this.offsetForMarker(marker);
|
5316 |
-
}
|
5317 |
-
}
|
5318 |
-
return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);
|
5319 |
-
};
|
5320 |
-
// TimeZone
|
5321 |
-
DateEnv.prototype.timestampToMarker = function (ms) {
|
5322 |
-
if (this.timeZone === 'local') {
|
5323 |
-
return arrayToUtcDate(dateToLocalArray(new Date(ms)));
|
5324 |
-
}
|
5325 |
-
else if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {
|
5326 |
-
return new Date(ms);
|
5327 |
-
}
|
5328 |
-
else {
|
5329 |
-
return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));
|
5330 |
-
}
|
5331 |
-
};
|
5332 |
-
DateEnv.prototype.offsetForMarker = function (m) {
|
5333 |
-
if (this.timeZone === 'local') {
|
5334 |
-
return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert "inverse" offset to "normal" offset
|
5335 |
-
}
|
5336 |
-
else if (this.timeZone === 'UTC') {
|
5337 |
-
return 0;
|
5338 |
-
}
|
5339 |
-
else if (this.namedTimeZoneImpl) {
|
5340 |
-
return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));
|
5341 |
-
}
|
5342 |
-
return null;
|
5343 |
-
};
|
5344 |
-
// Conversion
|
5345 |
-
DateEnv.prototype.toDate = function (m, forcedTzo) {
|
5346 |
-
if (this.timeZone === 'local') {
|
5347 |
-
return arrayToLocalDate(dateToUtcArray(m));
|
5348 |
-
}
|
5349 |
-
else if (this.timeZone === 'UTC') {
|
5350 |
-
return new Date(m.valueOf()); // make sure it's a copy
|
5351 |
-
}
|
5352 |
-
else if (!this.namedTimeZoneImpl) {
|
5353 |
-
return new Date(m.valueOf() - (forcedTzo || 0));
|
5354 |
-
}
|
5355 |
-
else {
|
5356 |
-
return new Date(m.valueOf() -
|
5357 |
-
this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60 // convert minutes -> ms
|
5358 |
-
);
|
5359 |
-
}
|
5360 |
-
};
|
5361 |
-
return DateEnv;
|
5362 |
-
}());
|
5363 |
|
5364 |
-
|
5365 |
-
|
5366 |
-
|
5367 |
-
eventDataTransform: Function,
|
5368 |
-
success: Function,
|
5369 |
-
failure: Function
|
5370 |
-
};
|
5371 |
-
var uid$2 = 0;
|
5372 |
-
function doesSourceNeedRange(eventSource, calendar) {
|
5373 |
-
var defs = calendar.pluginSystem.hooks.eventSourceDefs;
|
5374 |
-
return !defs[eventSource.sourceDefId].ignoreRange;
|
5375 |
-
}
|
5376 |
-
function parseEventSource(raw, calendar) {
|
5377 |
-
var defs = calendar.pluginSystem.hooks.eventSourceDefs;
|
5378 |
-
for (var i = defs.length - 1; i >= 0; i--) { // later-added plugins take precedence
|
5379 |
-
var def = defs[i];
|
5380 |
-
var meta = def.parseMeta(raw);
|
5381 |
-
if (meta) {
|
5382 |
-
var res = parseEventSourceProps(typeof raw === 'object' ? raw : {}, meta, i, calendar);
|
5383 |
-
res._raw = raw;
|
5384 |
-
return res;
|
5385 |
-
}
|
5386 |
-
}
|
5387 |
-
return null;
|
5388 |
-
}
|
5389 |
-
function parseEventSourceProps(raw, meta, sourceDefId, calendar) {
|
5390 |
-
var leftovers0 = {};
|
5391 |
-
var props = refineProps(raw, SIMPLE_SOURCE_PROPS, {}, leftovers0);
|
5392 |
-
var leftovers1 = {};
|
5393 |
-
var ui = processUnscopedUiProps(leftovers0, calendar, leftovers1);
|
5394 |
-
props.isFetching = false;
|
5395 |
-
props.latestFetchId = '';
|
5396 |
-
props.fetchRange = null;
|
5397 |
-
props.publicId = String(raw.id || '');
|
5398 |
-
props.sourceId = String(uid$2++);
|
5399 |
-
props.sourceDefId = sourceDefId;
|
5400 |
-
props.meta = meta;
|
5401 |
-
props.ui = ui;
|
5402 |
-
props.extendedProps = leftovers1;
|
5403 |
-
return props;
|
5404 |
-
}
|
5405 |
|
5406 |
-
|
5407 |
-
|
5408 |
-
|
5409 |
-
|
5410 |
-
|
5411 |
-
|
5412 |
-
case 'PREV': // TODO: how do we track all actions that affect dateProfile :(
|
5413 |
-
case 'NEXT':
|
5414 |
-
case 'SET_DATE':
|
5415 |
-
case 'SET_VIEW_TYPE':
|
5416 |
-
if (dateProfile) {
|
5417 |
-
return fetchDirtySources(eventSources, dateProfile.activeRange, calendar);
|
5418 |
-
}
|
5419 |
-
else {
|
5420 |
-
return eventSources;
|
5421 |
-
}
|
5422 |
-
case 'FETCH_EVENT_SOURCES':
|
5423 |
-
case 'CHANGE_TIMEZONE':
|
5424 |
-
return fetchSourcesByIds(eventSources, action.sourceIds ?
|
5425 |
-
arrayToHash(action.sourceIds) :
|
5426 |
-
excludeStaticSources(eventSources, calendar), dateProfile ? dateProfile.activeRange : null, calendar);
|
5427 |
-
case 'RECEIVE_EVENTS':
|
5428 |
-
case 'RECEIVE_EVENT_ERROR':
|
5429 |
-
return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);
|
5430 |
-
case 'REMOVE_ALL_EVENT_SOURCES':
|
5431 |
-
return {};
|
5432 |
-
default:
|
5433 |
-
return eventSources;
|
5434 |
-
}
|
5435 |
-
}
|
5436 |
-
var uid$3 = 0;
|
5437 |
-
function addSources(eventSourceHash, sources, fetchRange, calendar) {
|
5438 |
-
var hash = {};
|
5439 |
-
for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) {
|
5440 |
-
var source = sources_1[_i];
|
5441 |
-
hash[source.sourceId] = source;
|
5442 |
-
}
|
5443 |
-
if (fetchRange) {
|
5444 |
-
hash = fetchDirtySources(hash, fetchRange, calendar);
|
5445 |
-
}
|
5446 |
-
return __assign({}, eventSourceHash, hash);
|
5447 |
-
}
|
5448 |
-
function removeSource(eventSourceHash, sourceId) {
|
5449 |
-
return filterHash(eventSourceHash, function (eventSource) {
|
5450 |
-
return eventSource.sourceId !== sourceId;
|
5451 |
-
});
|
5452 |
-
}
|
5453 |
-
function fetchDirtySources(sourceHash, fetchRange, calendar) {
|
5454 |
-
return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) {
|
5455 |
-
return isSourceDirty(eventSource, fetchRange, calendar);
|
5456 |
-
}), fetchRange, calendar);
|
5457 |
-
}
|
5458 |
-
function isSourceDirty(eventSource, fetchRange, calendar) {
|
5459 |
-
if (!doesSourceNeedRange(eventSource, calendar)) {
|
5460 |
-
return !eventSource.latestFetchId;
|
5461 |
-
}
|
5462 |
-
else {
|
5463 |
-
return !calendar.opt('lazyFetching') ||
|
5464 |
-
!eventSource.fetchRange ||
|
5465 |
-
fetchRange.start < eventSource.fetchRange.start ||
|
5466 |
-
fetchRange.end > eventSource.fetchRange.end;
|
5467 |
-
}
|
5468 |
-
}
|
5469 |
-
function fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, calendar) {
|
5470 |
-
var nextSources = {};
|
5471 |
-
for (var sourceId in prevSources) {
|
5472 |
-
var source = prevSources[sourceId];
|
5473 |
-
if (sourceIdHash[sourceId]) {
|
5474 |
-
nextSources[sourceId] = fetchSource(source, fetchRange, calendar);
|
5475 |
-
}
|
5476 |
-
else {
|
5477 |
-
nextSources[sourceId] = source;
|
5478 |
-
}
|
5479 |
-
}
|
5480 |
-
return nextSources;
|
5481 |
-
}
|
5482 |
-
function fetchSource(eventSource, fetchRange, calendar) {
|
5483 |
-
var sourceDef = calendar.pluginSystem.hooks.eventSourceDefs[eventSource.sourceDefId];
|
5484 |
-
var fetchId = String(uid$3++);
|
5485 |
-
sourceDef.fetch({
|
5486 |
-
eventSource: eventSource,
|
5487 |
-
calendar: calendar,
|
5488 |
-
range: fetchRange
|
5489 |
-
}, function (res) {
|
5490 |
-
var rawEvents = res.rawEvents;
|
5491 |
-
var calSuccess = calendar.opt('eventSourceSuccess');
|
5492 |
-
var calSuccessRes;
|
5493 |
-
var sourceSuccessRes;
|
5494 |
-
if (eventSource.success) {
|
5495 |
-
sourceSuccessRes = eventSource.success(rawEvents, res.xhr);
|
5496 |
-
}
|
5497 |
-
if (calSuccess) {
|
5498 |
-
calSuccessRes = calSuccess(rawEvents, res.xhr);
|
5499 |
-
}
|
5500 |
-
rawEvents = sourceSuccessRes || calSuccessRes || rawEvents;
|
5501 |
-
calendar.dispatch({
|
5502 |
-
type: 'RECEIVE_EVENTS',
|
5503 |
-
sourceId: eventSource.sourceId,
|
5504 |
-
fetchId: fetchId,
|
5505 |
-
fetchRange: fetchRange,
|
5506 |
-
rawEvents: rawEvents
|
5507 |
-
});
|
5508 |
-
}, function (error) {
|
5509 |
-
var callFailure = calendar.opt('eventSourceFailure');
|
5510 |
-
console.warn(error.message, error);
|
5511 |
-
if (eventSource.failure) {
|
5512 |
-
eventSource.failure(error);
|
5513 |
-
}
|
5514 |
-
if (callFailure) {
|
5515 |
-
callFailure(error);
|
5516 |
-
}
|
5517 |
-
calendar.dispatch({
|
5518 |
-
type: 'RECEIVE_EVENT_ERROR',
|
5519 |
-
sourceId: eventSource.sourceId,
|
5520 |
-
fetchId: fetchId,
|
5521 |
-
fetchRange: fetchRange,
|
5522 |
-
error: error
|
5523 |
-
});
|
5524 |
-
});
|
5525 |
-
return __assign({}, eventSource, { isFetching: true, latestFetchId: fetchId });
|
5526 |
-
}
|
5527 |
-
function receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {
|
5528 |
-
var _a;
|
5529 |
-
var eventSource = sourceHash[sourceId];
|
5530 |
-
if (eventSource && // not already removed
|
5531 |
-
fetchId === eventSource.latestFetchId) {
|
5532 |
-
return __assign({}, sourceHash, (_a = {}, _a[sourceId] = __assign({}, eventSource, { isFetching: false, fetchRange: fetchRange }), _a));
|
5533 |
-
}
|
5534 |
-
return sourceHash;
|
5535 |
-
}
|
5536 |
-
function excludeStaticSources(eventSources, calendar) {
|
5537 |
-
return filterHash(eventSources, function (eventSource) {
|
5538 |
-
return doesSourceNeedRange(eventSource, calendar);
|
5539 |
-
});
|
5540 |
-
}
|
5541 |
|
5542 |
-
|
5543 |
-
|
5544 |
-
|
5545 |
-
|
5546 |
-
|
5547 |
-
|
5548 |
-
this.initHiddenDays();
|
5549 |
-
}
|
5550 |
-
/* Date Range Computation
|
5551 |
-
------------------------------------------------------------------------------------------------------------------*/
|
5552 |
-
// Builds a structure with info about what the dates/ranges will be for the "prev" view.
|
5553 |
-
DateProfileGenerator.prototype.buildPrev = function (currentDateProfile, currentDate) {
|
5554 |
-
var dateEnv = this.dateEnv;
|
5555 |
-
var prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month
|
5556 |
-
currentDateProfile.dateIncrement);
|
5557 |
-
return this.build(prevDate, -1);
|
5558 |
-
};
|
5559 |
-
// Builds a structure with info about what the dates/ranges will be for the "next" view.
|
5560 |
-
DateProfileGenerator.prototype.buildNext = function (currentDateProfile, currentDate) {
|
5561 |
-
var dateEnv = this.dateEnv;
|
5562 |
-
var nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month
|
5563 |
-
currentDateProfile.dateIncrement);
|
5564 |
-
return this.build(nextDate, 1);
|
5565 |
-
};
|
5566 |
-
// Builds a structure holding dates/ranges for rendering around the given date.
|
5567 |
-
// Optional direction param indicates whether the date is being incremented/decremented
|
5568 |
-
// from its previous value. decremented = -1, incremented = 1 (default).
|
5569 |
-
DateProfileGenerator.prototype.build = function (currentDate, direction, forceToValid) {
|
5570 |
-
if (forceToValid === void 0) { forceToValid = false; }
|
5571 |
-
var validRange;
|
5572 |
-
var minTime = null;
|
5573 |
-
var maxTime = null;
|
5574 |
-
var currentInfo;
|
5575 |
-
var isRangeAllDay;
|
5576 |
-
var renderRange;
|
5577 |
-
var activeRange;
|
5578 |
-
var isValid;
|
5579 |
-
validRange = this.buildValidRange();
|
5580 |
-
validRange = this.trimHiddenDays(validRange);
|
5581 |
-
if (forceToValid) {
|
5582 |
-
currentDate = constrainMarkerToRange(currentDate, validRange);
|
5583 |
-
}
|
5584 |
-
currentInfo = this.buildCurrentRangeInfo(currentDate, direction);
|
5585 |
-
isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);
|
5586 |
-
renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay);
|
5587 |
-
renderRange = this.trimHiddenDays(renderRange);
|
5588 |
-
activeRange = renderRange;
|
5589 |
-
if (!this.options.showNonCurrentDates) {
|
5590 |
-
activeRange = intersectRanges(activeRange, currentInfo.range);
|
5591 |
-
}
|
5592 |
-
minTime = createDuration(this.options.minTime);
|
5593 |
-
maxTime = createDuration(this.options.maxTime);
|
5594 |
-
activeRange = this.adjustActiveRange(activeRange, minTime, maxTime);
|
5595 |
-
activeRange = intersectRanges(activeRange, validRange); // might return null
|
5596 |
-
// it's invalid if the originally requested date is not contained,
|
5597 |
-
// or if the range is completely outside of the valid range.
|
5598 |
-
isValid = rangesIntersect(currentInfo.range, validRange);
|
5599 |
-
return {
|
5600 |
-
// constraint for where prev/next operations can go and where events can be dragged/resized to.
|
5601 |
-
// an object with optional start and end properties.
|
5602 |
-
validRange: validRange,
|
5603 |
-
// range the view is formally responsible for.
|
5604 |
-
// for example, a month view might have 1st-31st, excluding padded dates
|
5605 |
-
currentRange: currentInfo.range,
|
5606 |
-
// name of largest unit being displayed, like "month" or "week"
|
5607 |
-
currentRangeUnit: currentInfo.unit,
|
5608 |
-
isRangeAllDay: isRangeAllDay,
|
5609 |
-
// dates that display events and accept drag-n-drop
|
5610 |
-
// will be `null` if no dates accept events
|
5611 |
-
activeRange: activeRange,
|
5612 |
-
// date range with a rendered skeleton
|
5613 |
-
// includes not-active days that need some sort of DOM
|
5614 |
-
renderRange: renderRange,
|
5615 |
-
// Duration object that denotes the first visible time of any given day
|
5616 |
-
minTime: minTime,
|
5617 |
-
// Duration object that denotes the exclusive visible end time of any given day
|
5618 |
-
maxTime: maxTime,
|
5619 |
-
isValid: isValid,
|
5620 |
-
// how far the current date will move for a prev/next operation
|
5621 |
-
dateIncrement: this.buildDateIncrement(currentInfo.duration)
|
5622 |
-
// pass a fallback (might be null) ^
|
5623 |
-
};
|
5624 |
-
};
|
5625 |
-
// Builds an object with optional start/end properties.
|
5626 |
-
// Indicates the minimum/maximum dates to display.
|
5627 |
-
// not responsible for trimming hidden days.
|
5628 |
-
DateProfileGenerator.prototype.buildValidRange = function () {
|
5629 |
-
return this.getRangeOption('validRange', this.calendar.getNow()) ||
|
5630 |
-
{ start: null, end: null }; // completely open-ended
|
5631 |
-
};
|
5632 |
-
// Builds a structure with info about the "current" range, the range that is
|
5633 |
-
// highlighted as being the current month for example.
|
5634 |
-
// See build() for a description of `direction`.
|
5635 |
-
// Guaranteed to have `range` and `unit` properties. `duration` is optional.
|
5636 |
-
DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) {
|
5637 |
-
var _a = this, viewSpec = _a.viewSpec, dateEnv = _a.dateEnv;
|
5638 |
-
var duration = null;
|
5639 |
-
var unit = null;
|
5640 |
-
var range = null;
|
5641 |
-
var dayCount;
|
5642 |
-
if (viewSpec.duration) {
|
5643 |
-
duration = viewSpec.duration;
|
5644 |
-
unit = viewSpec.durationUnit;
|
5645 |
-
range = this.buildRangeFromDuration(date, direction, duration, unit);
|
5646 |
-
}
|
5647 |
-
else if ((dayCount = this.options.dayCount)) {
|
5648 |
-
unit = 'day';
|
5649 |
-
range = this.buildRangeFromDayCount(date, direction, dayCount);
|
5650 |
-
}
|
5651 |
-
else if ((range = this.buildCustomVisibleRange(date))) {
|
5652 |
-
unit = dateEnv.greatestWholeUnit(range.start, range.end).unit;
|
5653 |
-
}
|
5654 |
-
else {
|
5655 |
-
duration = this.getFallbackDuration();
|
5656 |
-
unit = greatestDurationDenominator(duration).unit;
|
5657 |
-
range = this.buildRangeFromDuration(date, direction, duration, unit);
|
5658 |
-
}
|
5659 |
-
return { duration: duration, unit: unit, range: range };
|
5660 |
-
};
|
5661 |
-
DateProfileGenerator.prototype.getFallbackDuration = function () {
|
5662 |
-
return createDuration({ day: 1 });
|
5663 |
-
};
|
5664 |
-
// Returns a new activeRange to have time values (un-ambiguate)
|
5665 |
-
// minTime or maxTime causes the range to expand.
|
5666 |
-
DateProfileGenerator.prototype.adjustActiveRange = function (range, minTime, maxTime) {
|
5667 |
-
var dateEnv = this.dateEnv;
|
5668 |
-
var start = range.start;
|
5669 |
-
var end = range.end;
|
5670 |
-
if (this.viewSpec.class.prototype.usesMinMaxTime) {
|
5671 |
-
// expand active range if minTime is negative (why not when positive?)
|
5672 |
-
if (asRoughDays(minTime) < 0) {
|
5673 |
-
start = startOfDay(start); // necessary?
|
5674 |
-
start = dateEnv.add(start, minTime);
|
5675 |
-
}
|
5676 |
-
// expand active range if maxTime is beyond one day (why not when positive?)
|
5677 |
-
if (asRoughDays(maxTime) > 1) {
|
5678 |
-
end = startOfDay(end); // necessary?
|
5679 |
-
end = addDays(end, -1);
|
5680 |
-
end = dateEnv.add(end, maxTime);
|
5681 |
-
}
|
5682 |
-
}
|
5683 |
-
return { start: start, end: end };
|
5684 |
-
};
|
5685 |
-
// Builds the "current" range when it is specified as an explicit duration.
|
5686 |
-
// `unit` is the already-computed greatestDurationDenominator unit of duration.
|
5687 |
-
DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) {
|
5688 |
-
var dateEnv = this.dateEnv;
|
5689 |
-
var alignment = this.options.dateAlignment;
|
5690 |
-
var dateIncrementInput;
|
5691 |
-
var dateIncrementDuration;
|
5692 |
-
var start;
|
5693 |
-
var end;
|
5694 |
-
var res;
|
5695 |
-
// compute what the alignment should be
|
5696 |
-
if (!alignment) {
|
5697 |
-
dateIncrementInput = this.options.dateIncrement;
|
5698 |
-
if (dateIncrementInput) {
|
5699 |
-
dateIncrementDuration = createDuration(dateIncrementInput);
|
5700 |
-
// use the smaller of the two units
|
5701 |
-
if (asRoughMs(dateIncrementDuration) < asRoughMs(duration)) {
|
5702 |
-
alignment = greatestDurationDenominator(dateIncrementDuration, !getWeeksFromInput(dateIncrementInput)).unit;
|
5703 |
-
}
|
5704 |
-
else {
|
5705 |
-
alignment = unit;
|
5706 |
-
}
|
5707 |
-
}
|
5708 |
-
else {
|
5709 |
-
alignment = unit;
|
5710 |
-
}
|
5711 |
-
}
|
5712 |
-
// if the view displays a single day or smaller
|
5713 |
-
if (asRoughDays(duration) <= 1) {
|
5714 |
-
if (this.isHiddenDay(start)) {
|
5715 |
-
start = this.skipHiddenDays(start, direction);
|
5716 |
-
start = startOfDay(start);
|
5717 |
-
}
|
5718 |
-
}
|
5719 |
-
function computeRes() {
|
5720 |
-
start = dateEnv.startOf(date, alignment);
|
5721 |
-
end = dateEnv.add(start, duration);
|
5722 |
-
res = { start: start, end: end };
|
5723 |
-
}
|
5724 |
-
computeRes();
|
5725 |
-
// if range is completely enveloped by hidden days, go past the hidden days
|
5726 |
-
if (!this.trimHiddenDays(res)) {
|
5727 |
-
date = this.skipHiddenDays(date, direction);
|
5728 |
-
computeRes();
|
5729 |
-
}
|
5730 |
-
return res;
|
5731 |
-
};
|
5732 |
-
// Builds the "current" range when a dayCount is specified.
|
5733 |
-
DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) {
|
5734 |
-
var dateEnv = this.dateEnv;
|
5735 |
-
var customAlignment = this.options.dateAlignment;
|
5736 |
-
var runningCount = 0;
|
5737 |
-
var start = date;
|
5738 |
-
var end;
|
5739 |
-
if (customAlignment) {
|
5740 |
-
start = dateEnv.startOf(start, customAlignment);
|
5741 |
-
}
|
5742 |
-
start = startOfDay(start);
|
5743 |
-
start = this.skipHiddenDays(start, direction);
|
5744 |
-
end = start;
|
5745 |
-
do {
|
5746 |
-
end = addDays(end, 1);
|
5747 |
-
if (!this.isHiddenDay(end)) {
|
5748 |
-
runningCount++;
|
5749 |
-
}
|
5750 |
-
} while (runningCount < dayCount);
|
5751 |
-
return { start: start, end: end };
|
5752 |
-
};
|
5753 |
-
// Builds a normalized range object for the "visible" range,
|
5754 |
-
// which is a way to define the currentRange and activeRange at the same time.
|
5755 |
-
DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) {
|
5756 |
-
var dateEnv = this.dateEnv;
|
5757 |
-
var visibleRange = this.getRangeOption('visibleRange', dateEnv.toDate(date));
|
5758 |
-
if (visibleRange && (visibleRange.start == null || visibleRange.end == null)) {
|
5759 |
-
return null;
|
5760 |
-
}
|
5761 |
-
return visibleRange;
|
5762 |
-
};
|
5763 |
-
// Computes the range that will represent the element/cells for *rendering*,
|
5764 |
-
// but which may have voided days/times.
|
5765 |
-
// not responsible for trimming hidden days.
|
5766 |
-
DateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {
|
5767 |
-
return currentRange;
|
5768 |
-
};
|
5769 |
-
// Compute the duration value that should be added/substracted to the current date
|
5770 |
-
// when a prev/next operation happens.
|
5771 |
-
DateProfileGenerator.prototype.buildDateIncrement = function (fallback) {
|
5772 |
-
var dateIncrementInput = this.options.dateIncrement;
|
5773 |
-
var customAlignment;
|
5774 |
-
if (dateIncrementInput) {
|
5775 |
-
return createDuration(dateIncrementInput);
|
5776 |
-
}
|
5777 |
-
else if ((customAlignment = this.options.dateAlignment)) {
|
5778 |
-
return createDuration(1, customAlignment);
|
5779 |
-
}
|
5780 |
-
else if (fallback) {
|
5781 |
-
return fallback;
|
5782 |
-
}
|
5783 |
-
else {
|
5784 |
-
return createDuration({ days: 1 });
|
5785 |
-
}
|
5786 |
-
};
|
5787 |
-
// Arguments after name will be forwarded to a hypothetical function value
|
5788 |
-
// WARNING: passed-in arguments will be given to generator functions as-is and can cause side-effects.
|
5789 |
-
// Always clone your objects if you fear mutation.
|
5790 |
-
DateProfileGenerator.prototype.getRangeOption = function (name) {
|
5791 |
-
var otherArgs = [];
|
5792 |
-
for (var _i = 1; _i < arguments.length; _i++) {
|
5793 |
-
otherArgs[_i - 1] = arguments[_i];
|
5794 |
-
}
|
5795 |
-
var val = this.options[name];
|
5796 |
-
if (typeof val === 'function') {
|
5797 |
-
val = val.apply(null, otherArgs);
|
5798 |
-
}
|
5799 |
-
if (val) {
|
5800 |
-
val = parseRange(val, this.dateEnv);
|
5801 |
-
}
|
5802 |
-
if (val) {
|
5803 |
-
val = computeVisibleDayRange(val);
|
5804 |
-
}
|
5805 |
-
return val;
|
5806 |
-
};
|
5807 |
-
/* Hidden Days
|
5808 |
-
------------------------------------------------------------------------------------------------------------------*/
|
5809 |
-
// Initializes internal variables related to calculating hidden days-of-week
|
5810 |
-
DateProfileGenerator.prototype.initHiddenDays = function () {
|
5811 |
-
var hiddenDays = this.options.hiddenDays || []; // array of day-of-week indices that are hidden
|
5812 |
-
var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)
|
5813 |
-
var dayCnt = 0;
|
5814 |
-
var i;
|
5815 |
-
if (this.options.weekends === false) {
|
5816 |
-
hiddenDays.push(0, 6); // 0=sunday, 6=saturday
|
5817 |
-
}
|
5818 |
-
for (i = 0; i < 7; i++) {
|
5819 |
-
if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {
|
5820 |
-
dayCnt++;
|
5821 |
-
}
|
5822 |
-
}
|
5823 |
-
if (!dayCnt) {
|
5824 |
-
throw new Error('invalid hiddenDays'); // all days were hidden? bad.
|
5825 |
-
}
|
5826 |
-
this.isHiddenDayHash = isHiddenDayHash;
|
5827 |
-
};
|
5828 |
-
// Remove days from the beginning and end of the range that are computed as hidden.
|
5829 |
-
// If the whole range is trimmed off, returns null
|
5830 |
-
DateProfileGenerator.prototype.trimHiddenDays = function (range) {
|
5831 |
-
var start = range.start;
|
5832 |
-
var end = range.end;
|
5833 |
-
if (start) {
|
5834 |
-
start = this.skipHiddenDays(start);
|
5835 |
-
}
|
5836 |
-
if (end) {
|
5837 |
-
end = this.skipHiddenDays(end, -1, true);
|
5838 |
-
}
|
5839 |
-
if (start == null || end == null || start < end) {
|
5840 |
-
return { start: start, end: end };
|
5841 |
-
}
|
5842 |
-
return null;
|
5843 |
-
};
|
5844 |
-
// Is the current day hidden?
|
5845 |
-
// `day` is a day-of-week index (0-6), or a Date (used for UTC)
|
5846 |
-
DateProfileGenerator.prototype.isHiddenDay = function (day) {
|
5847 |
-
if (day instanceof Date) {
|
5848 |
-
day = day.getUTCDay();
|
5849 |
-
}
|
5850 |
-
return this.isHiddenDayHash[day];
|
5851 |
-
};
|
5852 |
-
// Incrementing the current day until it is no longer a hidden day, returning a copy.
|
5853 |
-
// DOES NOT CONSIDER validRange!
|
5854 |
-
// If the initial value of `date` is not a hidden day, don't do anything.
|
5855 |
-
// Pass `isExclusive` as `true` if you are dealing with an end date.
|
5856 |
-
// `inc` defaults to `1` (increment one day forward each time)
|
5857 |
-
DateProfileGenerator.prototype.skipHiddenDays = function (date, inc, isExclusive) {
|
5858 |
-
if (inc === void 0) { inc = 1; }
|
5859 |
-
if (isExclusive === void 0) { isExclusive = false; }
|
5860 |
-
while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) {
|
5861 |
-
date = addDays(date, inc);
|
5862 |
-
}
|
5863 |
-
return date;
|
5864 |
-
};
|
5865 |
-
return DateProfileGenerator;
|
5866 |
-
}());
|
5867 |
-
// TODO: find a way to avoid comparing DateProfiles. it's tedious
|
5868 |
-
function isDateProfilesEqual(p0, p1) {
|
5869 |
-
return rangesEqual(p0.validRange, p1.validRange) &&
|
5870 |
-
rangesEqual(p0.activeRange, p1.activeRange) &&
|
5871 |
-
rangesEqual(p0.renderRange, p1.renderRange) &&
|
5872 |
-
durationsEqual(p0.minTime, p1.minTime) &&
|
5873 |
-
durationsEqual(p0.maxTime, p1.maxTime);
|
5874 |
-
/*
|
5875 |
-
TODO: compare more?
|
5876 |
-
currentRange: DateRange
|
5877 |
-
currentRangeUnit: string
|
5878 |
-
isRangeAllDay: boolean
|
5879 |
-
isValid: boolean
|
5880 |
-
dateIncrement: Duration
|
5881 |
-
*/
|
5882 |
-
}
|
5883 |
|
5884 |
-
|
5885 |
-
|
5886 |
-
|
5887 |
-
|
5888 |
-
|
5889 |
-
|
5890 |
-
|
5891 |
-
|
5892 |
-
|
5893 |
-
|
5894 |
-
|
5895 |
-
|
5896 |
-
|
5897 |
-
|
5898 |
-
|
5899 |
-
|
5900 |
-
|
5901 |
-
|
5902 |
-
|
5903 |
-
|
5904 |
-
|
5905 |
-
|
5906 |
-
|
5907 |
-
switch (action.type) {
|
5908 |
-
case 'PREV':
|
5909 |
-
newDateProfile = calendar.dateProfileGenerators[viewType].buildPrev(currentDateProfile, currentDate);
|
5910 |
-
break;
|
5911 |
-
case 'NEXT':
|
5912 |
-
newDateProfile = calendar.dateProfileGenerators[viewType].buildNext(currentDateProfile, currentDate);
|
5913 |
-
break;
|
5914 |
-
case 'SET_DATE':
|
5915 |
-
if (!currentDateProfile.activeRange ||
|
5916 |
-
!rangeContainsMarker(currentDateProfile.currentRange, action.dateMarker)) {
|
5917 |
-
newDateProfile = calendar.dateProfileGenerators[viewType].build(action.dateMarker, undefined, true // forceToValid
|
5918 |
-
);
|
5919 |
-
}
|
5920 |
-
break;
|
5921 |
-
case 'SET_VIEW_TYPE':
|
5922 |
-
var generator = calendar.dateProfileGenerators[viewType];
|
5923 |
-
if (!generator) {
|
5924 |
-
throw new Error(viewType ?
|
5925 |
-
'The FullCalendar view "' + viewType + '" does not exist. Make sure your plugins are loaded correctly.' :
|
5926 |
-
'No available FullCalendar view plugins.');
|
5927 |
-
}
|
5928 |
-
newDateProfile = generator.build(action.dateMarker || currentDate, undefined, true // forceToValid
|
5929 |
-
);
|
5930 |
-
break;
|
5931 |
-
}
|
5932 |
-
if (newDateProfile &&
|
5933 |
-
newDateProfile.isValid &&
|
5934 |
-
!(currentDateProfile && isDateProfilesEqual(currentDateProfile, newDateProfile))) {
|
5935 |
-
return newDateProfile;
|
5936 |
-
}
|
5937 |
-
else {
|
5938 |
-
return currentDateProfile;
|
5939 |
-
}
|
5940 |
-
}
|
5941 |
-
function reduceCurrentDate(currentDate, action, dateProfile) {
|
5942 |
-
switch (action.type) {
|
5943 |
-
case 'PREV':
|
5944 |
-
case 'NEXT':
|
5945 |
-
if (!rangeContainsMarker(dateProfile.currentRange, currentDate)) {
|
5946 |
-
return dateProfile.currentRange.start;
|
5947 |
-
}
|
5948 |
-
else {
|
5949 |
-
return currentDate;
|
5950 |
-
}
|
5951 |
-
case 'SET_DATE':
|
5952 |
-
case 'SET_VIEW_TYPE':
|
5953 |
-
var newDate = action.dateMarker || currentDate;
|
5954 |
-
if (dateProfile.activeRange && !rangeContainsMarker(dateProfile.activeRange, newDate)) {
|
5955 |
-
return dateProfile.currentRange.start;
|
5956 |
-
}
|
5957 |
-
else {
|
5958 |
-
return newDate;
|
5959 |
-
}
|
5960 |
-
default:
|
5961 |
-
return currentDate;
|
5962 |
-
}
|
5963 |
-
}
|
5964 |
-
function reduceDateSelection(currentSelection, action, calendar) {
|
5965 |
-
switch (action.type) {
|
5966 |
-
case 'SELECT_DATES':
|
5967 |
-
return action.selection;
|
5968 |
-
case 'UNSELECT_DATES':
|
5969 |
-
return null;
|
5970 |
-
default:
|
5971 |
-
return currentSelection;
|
5972 |
-
}
|
5973 |
-
}
|
5974 |
-
function reduceSelectedEvent(currentInstanceId, action) {
|
5975 |
-
switch (action.type) {
|
5976 |
-
case 'SELECT_EVENT':
|
5977 |
-
return action.eventInstanceId;
|
5978 |
-
case 'UNSELECT_EVENT':
|
5979 |
-
return '';
|
5980 |
-
default:
|
5981 |
-
return currentInstanceId;
|
5982 |
-
}
|
5983 |
-
}
|
5984 |
-
function reduceEventDrag(currentDrag, action, sources, calendar) {
|
5985 |
-
switch (action.type) {
|
5986 |
-
case 'SET_EVENT_DRAG':
|
5987 |
-
var newDrag = action.state;
|
5988 |
-
return {
|
5989 |
-
affectedEvents: newDrag.affectedEvents,
|
5990 |
-
mutatedEvents: newDrag.mutatedEvents,
|
5991 |
-
isEvent: newDrag.isEvent,
|
5992 |
-
origSeg: newDrag.origSeg
|
5993 |
-
};
|
5994 |
-
case 'UNSET_EVENT_DRAG':
|
5995 |
-
return null;
|
5996 |
-
default:
|
5997 |
-
return currentDrag;
|
5998 |
-
}
|
5999 |
-
}
|
6000 |
-
function reduceEventResize(currentResize, action, sources, calendar) {
|
6001 |
-
switch (action.type) {
|
6002 |
-
case 'SET_EVENT_RESIZE':
|
6003 |
-
var newResize = action.state;
|
6004 |
-
return {
|
6005 |
-
affectedEvents: newResize.affectedEvents,
|
6006 |
-
mutatedEvents: newResize.mutatedEvents,
|
6007 |
-
isEvent: newResize.isEvent,
|
6008 |
-
origSeg: newResize.origSeg
|
6009 |
-
};
|
6010 |
-
case 'UNSET_EVENT_RESIZE':
|
6011 |
-
return null;
|
6012 |
-
default:
|
6013 |
-
return currentResize;
|
6014 |
-
}
|
6015 |
-
}
|
6016 |
-
function computeLoadingLevel(eventSources) {
|
6017 |
-
var cnt = 0;
|
6018 |
-
for (var sourceId in eventSources) {
|
6019 |
-
if (eventSources[sourceId].isFetching) {
|
6020 |
-
cnt++;
|
6021 |
-
}
|
6022 |
-
}
|
6023 |
-
return cnt;
|
6024 |
-
}
|
6025 |
|
6026 |
-
|
6027 |
-
|
6028 |
-
|
6029 |
-
allDay: Boolean
|
6030 |
-
};
|
6031 |
-
function parseDateSpan(raw, dateEnv, defaultDuration) {
|
6032 |
-
var span = parseOpenDateSpan(raw, dateEnv);
|
6033 |
-
var range = span.range;
|
6034 |
-
if (!range.start) {
|
6035 |
-
return null;
|
6036 |
-
}
|
6037 |
-
if (!range.end) {
|
6038 |
-
if (defaultDuration == null) {
|
6039 |
-
return null;
|
6040 |
-
}
|
6041 |
-
else {
|
6042 |
-
range.end = dateEnv.add(range.start, defaultDuration);
|
6043 |
-
}
|
6044 |
-
}
|
6045 |
-
return span;
|
6046 |
-
}
|
6047 |
-
/*
|
6048 |
-
TODO: somehow combine with parseRange?
|
6049 |
-
Will return null if the start/end props were present but parsed invalidly.
|
6050 |
-
*/
|
6051 |
-
function parseOpenDateSpan(raw, dateEnv) {
|
6052 |
-
var leftovers = {};
|
6053 |
-
var standardProps = refineProps(raw, STANDARD_PROPS, {}, leftovers);
|
6054 |
-
var startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null;
|
6055 |
-
var endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null;
|
6056 |
-
var allDay = standardProps.allDay;
|
6057 |
-
if (allDay == null) {
|
6058 |
-
allDay = (startMeta && startMeta.isTimeUnspecified) &&
|
6059 |
-
(!endMeta || endMeta.isTimeUnspecified);
|
6060 |
-
}
|
6061 |
-
// use this leftover object as the selection object
|
6062 |
-
leftovers.range = {
|
6063 |
-
start: startMeta ? startMeta.marker : null,
|
6064 |
-
end: endMeta ? endMeta.marker : null
|
6065 |
-
};
|
6066 |
-
leftovers.allDay = allDay;
|
6067 |
-
return leftovers;
|
6068 |
-
}
|
6069 |
-
function isDateSpansEqual(span0, span1) {
|
6070 |
-
return rangesEqual(span0.range, span1.range) &&
|
6071 |
-
span0.allDay === span1.allDay &&
|
6072 |
-
isSpanPropsEqual(span0, span1);
|
6073 |
-
}
|
6074 |
-
// the NON-DATE-RELATED props
|
6075 |
-
function isSpanPropsEqual(span0, span1) {
|
6076 |
-
for (var propName in span1) {
|
6077 |
-
if (propName !== 'range' && propName !== 'allDay') {
|
6078 |
-
if (span0[propName] !== span1[propName]) {
|
6079 |
-
return false;
|
6080 |
-
}
|
6081 |
-
}
|
6082 |
-
}
|
6083 |
-
// are there any props that span0 has that span1 DOESN'T have?
|
6084 |
-
// both have range/allDay, so no need to special-case.
|
6085 |
-
for (var propName in span0) {
|
6086 |
-
if (!(propName in span1)) {
|
6087 |
-
return false;
|
6088 |
-
}
|
6089 |
-
}
|
6090 |
-
return true;
|
6091 |
-
}
|
6092 |
-
function buildDateSpanApi(span, dateEnv) {
|
6093 |
-
return {
|
6094 |
-
start: dateEnv.toDate(span.range.start),
|
6095 |
-
end: dateEnv.toDate(span.range.end),
|
6096 |
-
startStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }),
|
6097 |
-
endStr: dateEnv.formatIso(span.range.end, { omitTime: span.allDay }),
|
6098 |
-
allDay: span.allDay
|
6099 |
-
};
|
6100 |
-
}
|
6101 |
-
function buildDatePointApi(span, dateEnv) {
|
6102 |
-
return {
|
6103 |
-
date: dateEnv.toDate(span.range.start),
|
6104 |
-
dateStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }),
|
6105 |
-
allDay: span.allDay
|
6106 |
-
};
|
6107 |
-
}
|
6108 |
-
function fabricateEventRange(dateSpan, eventUiBases, calendar) {
|
6109 |
-
var def = parseEventDef({ editable: false }, '', // sourceId
|
6110 |
-
dateSpan.allDay, true, // hasEnd
|
6111 |
-
calendar);
|
6112 |
-
return {
|
6113 |
-
def: def,
|
6114 |
-
ui: compileEventUi(def, eventUiBases),
|
6115 |
-
instance: createEventInstance(def.defId, dateSpan.range),
|
6116 |
-
range: dateSpan.range,
|
6117 |
-
isStart: true,
|
6118 |
-
isEnd: true
|
6119 |
-
};
|
6120 |
-
}
|
6121 |
|
6122 |
-
|
6123 |
-
|
6124 |
-
|
6125 |
-
|
6126 |
-
|
6127 |
-
|
6128 |
-
for (viewType in overrideConfigs) {
|
6129 |
-
ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);
|
6130 |
-
}
|
6131 |
-
return hash;
|
6132 |
-
}
|
6133 |
-
function ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {
|
6134 |
-
if (hash[viewType]) {
|
6135 |
-
return hash[viewType];
|
6136 |
-
}
|
6137 |
-
var viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);
|
6138 |
-
if (viewDef) {
|
6139 |
-
hash[viewType] = viewDef;
|
6140 |
-
}
|
6141 |
-
return viewDef;
|
6142 |
-
}
|
6143 |
-
function buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {
|
6144 |
-
var defaultConfig = defaultConfigs[viewType];
|
6145 |
-
var overrideConfig = overrideConfigs[viewType];
|
6146 |
-
var queryProp = function (name) {
|
6147 |
-
return (defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :
|
6148 |
-
((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null);
|
6149 |
-
};
|
6150 |
-
var theClass = queryProp('class');
|
6151 |
-
var superType = queryProp('superType');
|
6152 |
-
if (!superType && theClass) {
|
6153 |
-
superType =
|
6154 |
-
findViewNameBySubclass(theClass, overrideConfigs) ||
|
6155 |
-
findViewNameBySubclass(theClass, defaultConfigs);
|
6156 |
-
}
|
6157 |
-
var superDef = null;
|
6158 |
-
if (superType) {
|
6159 |
-
if (superType === viewType) {
|
6160 |
-
throw new Error('Can\'t have a custom view type that references itself');
|
6161 |
-
}
|
6162 |
-
superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);
|
6163 |
-
}
|
6164 |
-
if (!theClass && superDef) {
|
6165 |
-
theClass = superDef.class;
|
6166 |
-
}
|
6167 |
-
if (!theClass) {
|
6168 |
-
return null; // don't throw a warning, might be settings for a single-unit view
|
6169 |
-
}
|
6170 |
-
return {
|
6171 |
-
type: viewType,
|
6172 |
-
class: theClass,
|
6173 |
-
defaults: __assign({}, (superDef ? superDef.defaults : {}), (defaultConfig ? defaultConfig.options : {})),
|
6174 |
-
overrides: __assign({}, (superDef ? superDef.overrides : {}), (overrideConfig ? overrideConfig.options : {}))
|
6175 |
-
};
|
6176 |
-
}
|
6177 |
-
function findViewNameBySubclass(viewSubclass, configs) {
|
6178 |
-
var superProto = Object.getPrototypeOf(viewSubclass.prototype);
|
6179 |
-
for (var viewType in configs) {
|
6180 |
-
var parsed = configs[viewType];
|
6181 |
-
// need DIRECT subclass, so instanceof won't do it
|
6182 |
-
if (parsed.class && parsed.class.prototype === superProto) {
|
6183 |
-
return viewType;
|
6184 |
-
}
|
6185 |
-
}
|
6186 |
-
return '';
|
6187 |
-
}
|
6188 |
|
6189 |
-
|
6190 |
-
|
6191 |
-
|
6192 |
-
|
6193 |
-
type: String,
|
6194 |
-
class: null
|
6195 |
-
};
|
6196 |
-
function parseViewConfig(input) {
|
6197 |
-
if (typeof input === 'function') {
|
6198 |
-
input = { class: input };
|
6199 |
-
}
|
6200 |
-
var options = {};
|
6201 |
-
var props = refineProps(input, VIEW_DEF_PROPS, {}, options);
|
6202 |
-
return {
|
6203 |
-
superType: props.type,
|
6204 |
-
class: props.class,
|
6205 |
-
options: options
|
6206 |
-
};
|
6207 |
-
}
|
6208 |
|
6209 |
-
|
6210 |
-
|
6211 |
-
|
6212 |
-
|
6213 |
-
|
6214 |
-
|
6215 |
-
|
6216 |
-
|
6217 |
-
|
6218 |
-
|
6219 |
-
|
6220 |
-
|
6221 |
-
|
6222 |
-
|
6223 |
-
|
6224 |
-
|
6225 |
-
|
6226 |
-
|
6227 |
-
|
6228 |
-
|
6229 |
-
|
6230 |
-
|
6231 |
-
|
6232 |
-
|
6233 |
-
|
6234 |
-
|
6235 |
-
|
6236 |
-
|
6237 |
-
|
6238 |
-
|
6239 |
-
|
6240 |
-
|
6241 |
-
|
6242 |
-
|
6243 |
-
|
6244 |
-
|
6245 |
-
|
6246 |
-
|
6247 |
-
|
6248 |
-
|
6249 |
-
|
6250 |
-
|
6251 |
-
|
6252 |
-
|
6253 |
-
|
6254 |
-
|
6255 |
-
|
6256 |
-
|
6257 |
-
|
6258 |
-
|
6259 |
-
|
6260 |
-
|
6261 |
-
|
6262 |
-
|
6263 |
-
|
6264 |
-
|
6265 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6266 |
}
|
|
|
6267 |
|
6268 |
-
|
6269 |
-
|
6270 |
-
|
6271 |
-
|
6272 |
-
|
6273 |
-
|
6274 |
-
|
6275 |
-
|
6276 |
-
|
6277 |
-
|
6278 |
-
|
6279 |
-
|
6280 |
-
}
|
6281 |
-
Toolbar.prototype.destroy = function () {
|
6282 |
-
_super.prototype.destroy.call(this);
|
6283 |
-
this._renderLayout.unrender(); // should unrender everything else
|
6284 |
-
removeElement(this.el);
|
6285 |
-
};
|
6286 |
-
Toolbar.prototype.render = function (props) {
|
6287 |
-
this._renderLayout(props.layout);
|
6288 |
-
this._updateTitle(props.title);
|
6289 |
-
this._updateActiveButton(props.activeButton);
|
6290 |
-
this._updateToday(props.isTodayEnabled);
|
6291 |
-
this._updatePrev(props.isPrevEnabled);
|
6292 |
-
this._updateNext(props.isNextEnabled);
|
6293 |
-
};
|
6294 |
-
Toolbar.prototype.renderLayout = function (layout) {
|
6295 |
-
var el = this.el;
|
6296 |
-
this.viewsWithButtons = [];
|
6297 |
-
appendToElement(el, this.renderSection('left', layout.left));
|
6298 |
-
appendToElement(el, this.renderSection('center', layout.center));
|
6299 |
-
appendToElement(el, this.renderSection('right', layout.right));
|
6300 |
-
};
|
6301 |
-
Toolbar.prototype.unrenderLayout = function () {
|
6302 |
-
this.el.innerHTML = '';
|
6303 |
-
};
|
6304 |
-
Toolbar.prototype.renderSection = function (position, buttonStr) {
|
6305 |
-
var _this = this;
|
6306 |
-
var _a = this, theme = _a.theme, calendar = _a.calendar;
|
6307 |
-
var optionsManager = calendar.optionsManager;
|
6308 |
-
var viewSpecs = calendar.viewSpecs;
|
6309 |
-
var sectionEl = createElement('div', { className: 'fc-' + position });
|
6310 |
-
var calendarCustomButtons = optionsManager.computed.customButtons || {};
|
6311 |
-
var calendarButtonTextOverrides = optionsManager.overrides.buttonText || {};
|
6312 |
-
var calendarButtonText = optionsManager.computed.buttonText || {};
|
6313 |
-
if (buttonStr) {
|
6314 |
-
buttonStr.split(' ').forEach(function (buttonGroupStr, i) {
|
6315 |
-
var groupChildren = [];
|
6316 |
-
var isOnlyButtons = true;
|
6317 |
-
var groupEl;
|
6318 |
-
buttonGroupStr.split(',').forEach(function (buttonName, j) {
|
6319 |
-
var customButtonProps;
|
6320 |
-
var viewSpec;
|
6321 |
-
var buttonClick;
|
6322 |
-
var buttonIcon; // only one of these will be set
|
6323 |
-
var buttonText; // "
|
6324 |
-
var buttonInnerHtml;
|
6325 |
-
var buttonClasses;
|
6326 |
-
var buttonEl;
|
6327 |
-
var buttonAriaAttr;
|
6328 |
-
if (buttonName === 'title') {
|
6329 |
-
groupChildren.push(htmlToElement('<h2> </h2>')); // we always want it to take up height
|
6330 |
-
isOnlyButtons = false;
|
6331 |
-
}
|
6332 |
-
else {
|
6333 |
-
if ((customButtonProps = calendarCustomButtons[buttonName])) {
|
6334 |
-
buttonClick = function (ev) {
|
6335 |
-
if (customButtonProps.click) {
|
6336 |
-
customButtonProps.click.call(buttonEl, ev);
|
6337 |
-
}
|
6338 |
-
};
|
6339 |
-
(buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||
|
6340 |
-
(buttonIcon = theme.getIconClass(buttonName)) ||
|
6341 |
-
(buttonText = customButtonProps.text);
|
6342 |
-
}
|
6343 |
-
else if ((viewSpec = viewSpecs[buttonName])) {
|
6344 |
-
_this.viewsWithButtons.push(buttonName);
|
6345 |
-
buttonClick = function () {
|
6346 |
-
calendar.changeView(buttonName);
|
6347 |
-
};
|
6348 |
-
(buttonText = viewSpec.buttonTextOverride) ||
|
6349 |
-
(buttonIcon = theme.getIconClass(buttonName)) ||
|
6350 |
-
(buttonText = viewSpec.buttonTextDefault);
|
6351 |
-
}
|
6352 |
-
else if (calendar[buttonName]) { // a calendar method
|
6353 |
-
buttonClick = function () {
|
6354 |
-
calendar[buttonName]();
|
6355 |
-
};
|
6356 |
-
(buttonText = calendarButtonTextOverrides[buttonName]) ||
|
6357 |
-
(buttonIcon = theme.getIconClass(buttonName)) ||
|
6358 |
-
(buttonText = calendarButtonText[buttonName]);
|
6359 |
-
// ^ everything else is considered default
|
6360 |
-
}
|
6361 |
-
if (buttonClick) {
|
6362 |
-
buttonClasses = [
|
6363 |
-
'fc-' + buttonName + '-button',
|
6364 |
-
theme.getClass('button')
|
6365 |
-
];
|
6366 |
-
if (buttonText) {
|
6367 |
-
buttonInnerHtml = htmlEscape(buttonText);
|
6368 |
-
buttonAriaAttr = '';
|
6369 |
-
}
|
6370 |
-
else if (buttonIcon) {
|
6371 |
-
buttonInnerHtml = "<span class='" + buttonIcon + "'></span>";
|
6372 |
-
buttonAriaAttr = ' aria-label="' + buttonName + '"';
|
6373 |
-
}
|
6374 |
-
buttonEl = htmlToElement(// type="button" so that it doesn't submit a form
|
6375 |
-
'<button type="button" class="' + buttonClasses.join(' ') + '"' +
|
6376 |
-
buttonAriaAttr +
|
6377 |
-
'>' + buttonInnerHtml + '</button>');
|
6378 |
-
buttonEl.addEventListener('click', buttonClick);
|
6379 |
-
groupChildren.push(buttonEl);
|
6380 |
-
}
|
6381 |
-
}
|
6382 |
-
});
|
6383 |
-
if (groupChildren.length > 1) {
|
6384 |
-
groupEl = document.createElement('div');
|
6385 |
-
var buttonGroupClassName = theme.getClass('buttonGroup');
|
6386 |
-
if (isOnlyButtons && buttonGroupClassName) {
|
6387 |
-
groupEl.classList.add(buttonGroupClassName);
|
6388 |
-
}
|
6389 |
-
appendToElement(groupEl, groupChildren);
|
6390 |
-
sectionEl.appendChild(groupEl);
|
6391 |
-
}
|
6392 |
-
else {
|
6393 |
-
appendToElement(sectionEl, groupChildren); // 1 or 0 children
|
6394 |
-
}
|
6395 |
-
});
|
6396 |
-
}
|
6397 |
-
return sectionEl;
|
6398 |
-
};
|
6399 |
-
Toolbar.prototype.updateToday = function (isTodayEnabled) {
|
6400 |
-
this.toggleButtonEnabled('today', isTodayEnabled);
|
6401 |
-
};
|
6402 |
-
Toolbar.prototype.updatePrev = function (isPrevEnabled) {
|
6403 |
-
this.toggleButtonEnabled('prev', isPrevEnabled);
|
6404 |
-
};
|
6405 |
-
Toolbar.prototype.updateNext = function (isNextEnabled) {
|
6406 |
-
this.toggleButtonEnabled('next', isNextEnabled);
|
6407 |
-
};
|
6408 |
-
Toolbar.prototype.updateTitle = function (text) {
|
6409 |
-
findElements(this.el, 'h2').forEach(function (titleEl) {
|
6410 |
-
titleEl.innerText = text;
|
6411 |
-
});
|
6412 |
-
};
|
6413 |
-
Toolbar.prototype.updateActiveButton = function (buttonName) {
|
6414 |
-
var className = this.theme.getClass('buttonActive');
|
6415 |
-
findElements(this.el, 'button').forEach(function (buttonEl) {
|
6416 |
-
if (buttonName && buttonEl.classList.contains('fc-' + buttonName + '-button')) {
|
6417 |
-
buttonEl.classList.add(className);
|
6418 |
-
}
|
6419 |
-
else {
|
6420 |
-
buttonEl.classList.remove(className);
|
6421 |
-
}
|
6422 |
-
});
|
6423 |
-
};
|
6424 |
-
Toolbar.prototype.toggleButtonEnabled = function (buttonName, bool) {
|
6425 |
-
findElements(this.el, '.fc-' + buttonName + '-button').forEach(function (buttonEl) {
|
6426 |
-
buttonEl.disabled = !bool;
|
6427 |
-
});
|
6428 |
-
};
|
6429 |
-
return Toolbar;
|
6430 |
-
}(Component));
|
6431 |
|
6432 |
-
|
6433 |
-
__extends(CalendarComponent, _super);
|
6434 |
-
function CalendarComponent(context, el) {
|
6435 |
-
var _this = _super.call(this, context) || this;
|
6436 |
-
_this._renderToolbars = memoizeRendering(_this.renderToolbars);
|
6437 |
-
_this.buildViewPropTransformers = memoize(buildViewPropTransformers);
|
6438 |
-
_this.el = el;
|
6439 |
-
prependToElement(el, _this.contentEl = createElement('div', { className: 'fc-view-container' }));
|
6440 |
-
var calendar = _this.calendar;
|
6441 |
-
for (var _i = 0, _a = calendar.pluginSystem.hooks.viewContainerModifiers; _i < _a.length; _i++) {
|
6442 |
-
var modifyViewContainer = _a[_i];
|
6443 |
-
modifyViewContainer(_this.contentEl, calendar);
|
6444 |
-
}
|
6445 |
-
_this.toggleElClassNames(true);
|
6446 |
-
_this.computeTitle = memoize(computeTitle);
|
6447 |
-
_this.parseBusinessHours = memoize(function (input) {
|
6448 |
-
return parseBusinessHours(input, _this.calendar);
|
6449 |
-
});
|
6450 |
-
return _this;
|
6451 |
-
}
|
6452 |
-
CalendarComponent.prototype.destroy = function () {
|
6453 |
-
if (this.header) {
|
6454 |
-
this.header.destroy();
|
6455 |
-
}
|
6456 |
-
if (this.footer) {
|
6457 |
-
this.footer.destroy();
|
6458 |
-
}
|
6459 |
-
if (this.view) {
|
6460 |
-
this.view.destroy();
|
6461 |
-
}
|
6462 |
-
removeElement(this.contentEl);
|
6463 |
-
this.toggleElClassNames(false);
|
6464 |
-
_super.prototype.destroy.call(this);
|
6465 |
-
};
|
6466 |
-
CalendarComponent.prototype.toggleElClassNames = function (bool) {
|
6467 |
-
var classList = this.el.classList;
|
6468 |
-
var dirClassName = 'fc-' + this.opt('dir');
|
6469 |
-
var themeClassName = this.theme.getClass('widget');
|
6470 |
-
if (bool) {
|
6471 |
-
classList.add('fc');
|
6472 |
-
classList.add(dirClassName);
|
6473 |
-
classList.add(themeClassName);
|
6474 |
-
}
|
6475 |
-
else {
|
6476 |
-
classList.remove('fc');
|
6477 |
-
classList.remove(dirClassName);
|
6478 |
-
classList.remove(themeClassName);
|
6479 |
-
}
|
6480 |
-
};
|
6481 |
-
CalendarComponent.prototype.render = function (props) {
|
6482 |
-
this.freezeHeight();
|
6483 |
-
var title = this.computeTitle(props.dateProfile, props.viewSpec.options);
|
6484 |
-
this._renderToolbars(props.viewSpec, props.dateProfile, props.currentDate, props.dateProfileGenerator, title);
|
6485 |
-
this.renderView(props, title);
|
6486 |
-
this.updateSize();
|
6487 |
-
this.thawHeight();
|
6488 |
-
};
|
6489 |
-
CalendarComponent.prototype.renderToolbars = function (viewSpec, dateProfile, currentDate, dateProfileGenerator, title) {
|
6490 |
-
var headerLayout = this.opt('header');
|
6491 |
-
var footerLayout = this.opt('footer');
|
6492 |
-
var now = this.calendar.getNow();
|
6493 |
-
var todayInfo = dateProfileGenerator.build(now);
|
6494 |
-
var prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate);
|
6495 |
-
var nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate);
|
6496 |
-
var toolbarProps = {
|
6497 |
-
title: title,
|
6498 |
-
activeButton: viewSpec.type,
|
6499 |
-
isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),
|
6500 |
-
isPrevEnabled: prevInfo.isValid,
|
6501 |
-
isNextEnabled: nextInfo.isValid
|
6502 |
-
};
|
6503 |
-
if (headerLayout) {
|
6504 |
-
if (!this.header) {
|
6505 |
-
this.header = new Toolbar(this.context, 'fc-header-toolbar');
|
6506 |
-
prependToElement(this.el, this.header.el);
|
6507 |
-
}
|
6508 |
-
this.header.receiveProps(__assign({ layout: headerLayout }, toolbarProps));
|
6509 |
-
}
|
6510 |
-
else if (this.header) {
|
6511 |
-
this.header.destroy();
|
6512 |
-
this.header = null;
|
6513 |
-
}
|
6514 |
-
if (footerLayout) {
|
6515 |
-
if (!this.footer) {
|
6516 |
-
this.footer = new Toolbar(this.context, 'fc-footer-toolbar');
|
6517 |
-
appendToElement(this.el, this.footer.el);
|
6518 |
-
}
|
6519 |
-
this.footer.receiveProps(__assign({ layout: footerLayout }, toolbarProps));
|
6520 |
-
}
|
6521 |
-
else if (this.footer) {
|
6522 |
-
this.footer.destroy();
|
6523 |
-
this.footer = null;
|
6524 |
-
}
|
6525 |
-
};
|
6526 |
-
CalendarComponent.prototype.renderView = function (props, title) {
|
6527 |
-
var view = this.view;
|
6528 |
-
var viewSpec = props.viewSpec, dateProfileGenerator = props.dateProfileGenerator;
|
6529 |
-
if (!view || view.viewSpec !== viewSpec) {
|
6530 |
-
if (view) {
|
6531 |
-
view.destroy();
|
6532 |
-
}
|
6533 |
-
view = this.view = new viewSpec['class']({
|
6534 |
-
calendar: this.calendar,
|
6535 |
-
view: null,
|
6536 |
-
dateEnv: this.dateEnv,
|
6537 |
-
theme: this.theme,
|
6538 |
-
options: viewSpec.options
|
6539 |
-
}, viewSpec, dateProfileGenerator, this.contentEl);
|
6540 |
-
}
|
6541 |
-
else {
|
6542 |
-
view.addScroll(view.queryScroll());
|
6543 |
-
}
|
6544 |
-
view.title = title; // for the API
|
6545 |
-
var viewProps = {
|
6546 |
-
dateProfile: props.dateProfile,
|
6547 |
-
businessHours: this.parseBusinessHours(viewSpec.options.businessHours),
|
6548 |
-
eventStore: props.eventStore,
|
6549 |
-
eventUiBases: props.eventUiBases,
|
6550 |
-
dateSelection: props.dateSelection,
|
6551 |
-
eventSelection: props.eventSelection,
|
6552 |
-
eventDrag: props.eventDrag,
|
6553 |
-
eventResize: props.eventResize
|
6554 |
-
};
|
6555 |
-
var transformers = this.buildViewPropTransformers(this.calendar.pluginSystem.hooks.viewPropsTransformers);
|
6556 |
-
for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {
|
6557 |
-
var transformer = transformers_1[_i];
|
6558 |
-
__assign(viewProps, transformer.transform(viewProps, viewSpec, props, view));
|
6559 |
-
}
|
6560 |
-
view.receiveProps(viewProps);
|
6561 |
-
};
|
6562 |
-
// Sizing
|
6563 |
-
// -----------------------------------------------------------------------------------------------------------------
|
6564 |
-
CalendarComponent.prototype.updateSize = function (isResize) {
|
6565 |
-
if (isResize === void 0) { isResize = false; }
|
6566 |
-
var view = this.view;
|
6567 |
-
if (isResize) {
|
6568 |
-
view.addScroll(view.queryScroll());
|
6569 |
-
}
|
6570 |
-
if (isResize || this.isHeightAuto == null) {
|
6571 |
-
this.computeHeightVars();
|
6572 |
-
}
|
6573 |
-
view.updateSize(isResize, this.viewHeight, this.isHeightAuto);
|
6574 |
-
view.updateNowIndicator(); // we need to guarantee this will run after updateSize
|
6575 |
-
view.popScroll(isResize);
|
6576 |
-
};
|
6577 |
-
CalendarComponent.prototype.computeHeightVars = function () {
|
6578 |
-
var calendar = this.calendar; // yuck. need to handle dynamic options
|
6579 |
-
var heightInput = calendar.opt('height');
|
6580 |
-
var contentHeightInput = calendar.opt('contentHeight');
|
6581 |
-
this.isHeightAuto = heightInput === 'auto' || contentHeightInput === 'auto';
|
6582 |
-
if (typeof contentHeightInput === 'number') { // exists and not 'auto'
|
6583 |
-
this.viewHeight = contentHeightInput;
|
6584 |
-
}
|
6585 |
-
else if (typeof contentHeightInput === 'function') { // exists and is a function
|
6586 |
-
this.viewHeight = contentHeightInput();
|
6587 |
-
}
|
6588 |
-
else if (typeof heightInput === 'number') { // exists and not 'auto'
|
6589 |
-
this.viewHeight = heightInput - this.queryToolbarsHeight();
|
6590 |
-
}
|
6591 |
-
else if (typeof heightInput === 'function') { // exists and is a function
|
6592 |
-
this.viewHeight = heightInput() - this.queryToolbarsHeight();
|
6593 |
-
}
|
6594 |
-
else if (heightInput === 'parent') { // set to height of parent element
|
6595 |
-
var parentEl = this.el.parentNode;
|
6596 |
-
this.viewHeight = parentEl.getBoundingClientRect().height - this.queryToolbarsHeight();
|
6597 |
-
}
|
6598 |
-
else {
|
6599 |
-
this.viewHeight = Math.round(this.contentEl.getBoundingClientRect().width /
|
6600 |
-
Math.max(calendar.opt('aspectRatio'), .5));
|
6601 |
-
}
|
6602 |
-
};
|
6603 |
-
CalendarComponent.prototype.queryToolbarsHeight = function () {
|
6604 |
-
var height = 0;
|
6605 |
-
if (this.header) {
|
6606 |
-
height += computeHeightAndMargins(this.header.el);
|
6607 |
-
}
|
6608 |
-
if (this.footer) {
|
6609 |
-
height += computeHeightAndMargins(this.footer.el);
|
6610 |
-
}
|
6611 |
-
return height;
|
6612 |
-
};
|
6613 |
-
// Height "Freezing"
|
6614 |
-
// -----------------------------------------------------------------------------------------------------------------
|
6615 |
-
CalendarComponent.prototype.freezeHeight = function () {
|
6616 |
-
applyStyle(this.el, {
|
6617 |
-
height: this.el.getBoundingClientRect().height,
|
6618 |
-
overflow: 'hidden'
|
6619 |
-
});
|
6620 |
-
};
|
6621 |
-
CalendarComponent.prototype.thawHeight = function () {
|
6622 |
-
applyStyle(this.el, {
|
6623 |
-
height: '',
|
6624 |
-
overflow: ''
|
6625 |
-
});
|
6626 |
-
};
|
6627 |
-
return CalendarComponent;
|
6628 |
-
}(Component));
|
6629 |
-
// Title and Date Formatting
|
6630 |
-
// -----------------------------------------------------------------------------------------------------------------
|
6631 |
-
// Computes what the title at the top of the calendar should be for this view
|
6632 |
-
function computeTitle(dateProfile, viewOptions) {
|
6633 |
-
var range;
|
6634 |
-
// for views that span a large unit of time, show the proper interval, ignoring stray days before and after
|
6635 |
-
if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {
|
6636 |
-
range = dateProfile.currentRange;
|
6637 |
-
}
|
6638 |
-
else { // for day units or smaller, use the actual day range
|
6639 |
-
range = dateProfile.activeRange;
|
6640 |
-
}
|
6641 |
-
return this.dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || computeTitleFormat(dateProfile), viewOptions.titleRangeSeparator), { isEndExclusive: dateProfile.isRangeAllDay });
|
6642 |
-
}
|
6643 |
-
// Generates the format string that should be used to generate the title for the current date range.
|
6644 |
-
// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.
|
6645 |
-
function computeTitleFormat(dateProfile) {
|
6646 |
-
var currentRangeUnit = dateProfile.currentRangeUnit;
|
6647 |
-
if (currentRangeUnit === 'year') {
|
6648 |
-
return { year: 'numeric' };
|
6649 |
-
}
|
6650 |
-
else if (currentRangeUnit === 'month') {
|
6651 |
-
return { year: 'numeric', month: 'long' }; // like "September 2014"
|
6652 |
-
}
|
6653 |
-
else {
|
6654 |
-
var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);
|
6655 |
-
if (days !== null && days > 1) {
|
6656 |
-
// multi-day range. shorter, like "Sep 9 - 10 2014"
|
6657 |
-
return { year: 'numeric', month: 'short', day: 'numeric' };
|
6658 |
-
}
|
6659 |
-
else {
|
6660 |
-
// one day. longer, like "September 9 2014"
|
6661 |
-
return { year: 'numeric', month: 'long', day: 'numeric' };
|
6662 |
-
}
|
6663 |
-
}
|
6664 |
-
}
|
6665 |
-
// Plugin
|
6666 |
-
// -----------------------------------------------------------------------------------------------------------------
|
6667 |
-
function buildViewPropTransformers(theClasses) {
|
6668 |
-
return theClasses.map(function (theClass) {
|
6669 |
-
return new theClass();
|
6670 |
-
});
|
6671 |
-
}
|
6672 |
|
6673 |
-
|
6674 |
-
function Interaction(settings) {
|
6675 |
-
this.component = settings.component;
|
6676 |
-
}
|
6677 |
-
Interaction.prototype.destroy = function () {
|
6678 |
-
};
|
6679 |
-
return Interaction;
|
6680 |
-
}());
|
6681 |
-
function parseInteractionSettings(component, input) {
|
6682 |
-
return {
|
6683 |
-
component: component,
|
6684 |
-
el: input.el,
|
6685 |
-
useEventCenter: input.useEventCenter != null ? input.useEventCenter : true
|
6686 |
-
};
|
6687 |
-
}
|
6688 |
-
function interactionSettingsToStore(settings) {
|
6689 |
-
var _a;
|
6690 |
-
return _a = {},
|
6691 |
-
_a[settings.component.uid] = settings,
|
6692 |
-
_a;
|
6693 |
-
}
|
6694 |
-
// global state
|
6695 |
-
var interactionSettingsStore = {};
|
6696 |
|
6697 |
-
|
6698 |
-
|
6699 |
-
|
6700 |
-
|
6701 |
-
|
6702 |
-
|
6703 |
-
|
6704 |
-
_this.handleSegClick = function (ev, segEl) {
|
6705 |
-
var component = _this.component;
|
6706 |
-
var seg = getElSeg(segEl);
|
6707 |
-
if (seg && // might be the <div> surrounding the more link
|
6708 |
-
component.isValidSegDownEl(ev.target)) {
|
6709 |
-
// our way to simulate a link click for elements that can't be <a> tags
|
6710 |
-
// grab before trigger fired in case trigger trashes DOM thru rerendering
|
6711 |
-
var hasUrlContainer = elementClosest(ev.target, '.fc-has-url');
|
6712 |
-
var url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';
|
6713 |
-
component.publiclyTrigger('eventClick', [
|
6714 |
-
{
|
6715 |
-
el: segEl,
|
6716 |
-
event: new EventApi(component.calendar, seg.eventRange.def, seg.eventRange.instance),
|
6717 |
-
jsEvent: ev,
|
6718 |
-
view: component.view
|
6719 |
-
}
|
6720 |
-
]);
|
6721 |
-
if (url && !ev.defaultPrevented) {
|
6722 |
-
window.location.href = url;
|
6723 |
-
}
|
6724 |
-
}
|
6725 |
-
};
|
6726 |
-
var component = settings.component;
|
6727 |
-
_this.destroy = listenBySelector(component.el, 'click', component.fgSegSelector + ',' + component.bgSegSelector, _this.handleSegClick);
|
6728 |
-
return _this;
|
6729 |
-
}
|
6730 |
-
return EventClicking;
|
6731 |
-
}(Interaction));
|
6732 |
|
6733 |
-
|
6734 |
-
Triggers events and adds/removes core classNames when the user's pointer
|
6735 |
-
enters/leaves event-elements of a component.
|
6736 |
-
*/
|
6737 |
-
var EventHovering = /** @class */ (function (_super) {
|
6738 |
-
__extends(EventHovering, _super);
|
6739 |
-
function EventHovering(settings) {
|
6740 |
-
var _this = _super.call(this, settings) || this;
|
6741 |
-
// for simulating an eventMouseLeave when the event el is destroyed while mouse is over it
|
6742 |
-
_this.handleEventElRemove = function (el) {
|
6743 |
-
if (el === _this.currentSegEl) {
|
6744 |
-
_this.handleSegLeave(null, _this.currentSegEl);
|
6745 |
-
}
|
6746 |
-
};
|
6747 |
-
_this.handleSegEnter = function (ev, segEl) {
|
6748 |
-
if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper
|
6749 |
-
segEl.classList.add('fc-allow-mouse-resize');
|
6750 |
-
_this.currentSegEl = segEl;
|
6751 |
-
_this.triggerEvent('eventMouseEnter', ev, segEl);
|
6752 |
-
}
|
6753 |
-
};
|
6754 |
-
_this.handleSegLeave = function (ev, segEl) {
|
6755 |
-
if (_this.currentSegEl) {
|
6756 |
-
segEl.classList.remove('fc-allow-mouse-resize');
|
6757 |
-
_this.currentSegEl = null;
|
6758 |
-
_this.triggerEvent('eventMouseLeave', ev, segEl);
|
6759 |
-
}
|
6760 |
-
};
|
6761 |
-
var component = settings.component;
|
6762 |
-
_this.removeHoverListeners = listenToHoverBySelector(component.el, component.fgSegSelector + ',' + component.bgSegSelector, _this.handleSegEnter, _this.handleSegLeave);
|
6763 |
-
component.calendar.on('eventElRemove', _this.handleEventElRemove);
|
6764 |
-
return _this;
|
6765 |
-
}
|
6766 |
-
EventHovering.prototype.destroy = function () {
|
6767 |
-
this.removeHoverListeners();
|
6768 |
-
this.component.calendar.off('eventElRemove', this.handleEventElRemove);
|
6769 |
-
};
|
6770 |
-
EventHovering.prototype.triggerEvent = function (publicEvName, ev, segEl) {
|
6771 |
-
var component = this.component;
|
6772 |
-
var seg = getElSeg(segEl);
|
6773 |
-
if (!ev || component.isValidSegDownEl(ev.target)) {
|
6774 |
-
component.publiclyTrigger(publicEvName, [
|
6775 |
-
{
|
6776 |
-
el: segEl,
|
6777 |
-
event: new EventApi(this.component.calendar, seg.eventRange.def, seg.eventRange.instance),
|
6778 |
-
jsEvent: ev,
|
6779 |
-
view: component.view
|
6780 |
-
}
|
6781 |
-
]);
|
6782 |
-
}
|
6783 |
-
};
|
6784 |
-
return EventHovering;
|
6785 |
-
}(Interaction));
|
6786 |
|
6787 |
-
|
6788 |
-
|
6789 |
-
|
6790 |
-
|
6791 |
-
|
6792 |
-
|
6793 |
-
}(Theme));
|
6794 |
-
StandardTheme.prototype.classes = {
|
6795 |
-
widget: 'fc-unthemed',
|
6796 |
-
widgetHeader: 'fc-widget-header',
|
6797 |
-
widgetContent: 'fc-widget-content',
|
6798 |
-
buttonGroup: 'fc-button-group',
|
6799 |
-
button: 'fc-button fc-button-primary',
|
6800 |
-
buttonActive: 'fc-button-active',
|
6801 |
-
popoverHeader: 'fc-widget-header',
|
6802 |
-
popoverContent: 'fc-widget-content',
|
6803 |
-
// day grid
|
6804 |
-
headerRow: 'fc-widget-header',
|
6805 |
-
dayRow: 'fc-widget-content',
|
6806 |
-
// list view
|
6807 |
-
listView: 'fc-widget-content'
|
6808 |
-
};
|
6809 |
-
StandardTheme.prototype.baseIconClass = 'fc-icon';
|
6810 |
-
StandardTheme.prototype.iconClasses = {
|
6811 |
-
close: 'fc-icon-x',
|
6812 |
-
prev: 'fc-icon-chevron-left',
|
6813 |
-
next: 'fc-icon-chevron-right',
|
6814 |
-
prevYear: 'fc-icon-chevrons-left',
|
6815 |
-
nextYear: 'fc-icon-chevrons-right'
|
6816 |
-
};
|
6817 |
-
StandardTheme.prototype.iconOverrideOption = 'buttonIcons';
|
6818 |
-
StandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';
|
6819 |
-
StandardTheme.prototype.iconOverridePrefix = 'fc-icon-';
|
6820 |
-
|
6821 |
-
var Calendar = /** @class */ (function () {
|
6822 |
-
function Calendar(el, overrides) {
|
6823 |
-
var _this = this;
|
6824 |
-
this.parseRawLocales = memoize(parseRawLocales);
|
6825 |
-
this.buildLocale = memoize(buildLocale);
|
6826 |
-
this.buildDateEnv = memoize(buildDateEnv);
|
6827 |
-
this.buildTheme = memoize(buildTheme);
|
6828 |
-
this.buildEventUiSingleBase = memoize(this._buildEventUiSingleBase);
|
6829 |
-
this.buildSelectionConfig = memoize(this._buildSelectionConfig);
|
6830 |
-
this.buildEventUiBySource = memoizeOutput(buildEventUiBySource, isPropsEqual);
|
6831 |
-
this.buildEventUiBases = memoize(buildEventUiBases);
|
6832 |
-
this.interactionsStore = {};
|
6833 |
-
this.actionQueue = [];
|
6834 |
-
this.isReducing = false;
|
6835 |
-
// isDisplaying: boolean = false // installed in DOM? accepting renders?
|
6836 |
-
this.needsRerender = false; // needs a render?
|
6837 |
-
this.needsFullRerender = false;
|
6838 |
-
this.isRendering = false; // currently in the executeRender function?
|
6839 |
-
this.renderingPauseDepth = 0;
|
6840 |
-
this.buildDelayedRerender = memoize(buildDelayedRerender);
|
6841 |
-
this.afterSizingTriggers = {};
|
6842 |
-
this.isViewUpdated = false;
|
6843 |
-
this.isDatesUpdated = false;
|
6844 |
-
this.isEventsUpdated = false;
|
6845 |
-
this.el = el;
|
6846 |
-
this.optionsManager = new OptionsManager(overrides || {});
|
6847 |
-
this.pluginSystem = new PluginSystem();
|
6848 |
-
// only do once. don't do in handleOptions. because can't remove plugins
|
6849 |
-
this.addPluginInputs(this.optionsManager.computed.plugins || []);
|
6850 |
-
this.handleOptions(this.optionsManager.computed);
|
6851 |
-
this.publiclyTrigger('_init'); // for tests
|
6852 |
-
this.hydrate();
|
6853 |
-
this.calendarInteractions = this.pluginSystem.hooks.calendarInteractions
|
6854 |
-
.map(function (calendarInteractionClass) {
|
6855 |
-
return new calendarInteractionClass(_this);
|
6856 |
-
});
|
6857 |
-
}
|
6858 |
-
Calendar.prototype.addPluginInputs = function (pluginInputs) {
|
6859 |
-
var pluginDefs = refinePluginDefs(pluginInputs);
|
6860 |
-
for (var _i = 0, pluginDefs_1 = pluginDefs; _i < pluginDefs_1.length; _i++) {
|
6861 |
-
var pluginDef = pluginDefs_1[_i];
|
6862 |
-
this.pluginSystem.add(pluginDef);
|
6863 |
-
}
|
6864 |
-
};
|
6865 |
-
Object.defineProperty(Calendar.prototype, "view", {
|
6866 |
-
// public API
|
6867 |
-
get: function () {
|
6868 |
-
return this.component ? this.component.view : null;
|
6869 |
-
},
|
6870 |
-
enumerable: true,
|
6871 |
-
configurable: true
|
6872 |
-
});
|
6873 |
-
// Public API for rendering
|
6874 |
-
// -----------------------------------------------------------------------------------------------------------------
|
6875 |
-
Calendar.prototype.render = function () {
|
6876 |
-
if (!this.component) {
|
6877 |
-
this.renderableEventStore = createEmptyEventStore();
|
6878 |
-
this.bindHandlers();
|
6879 |
-
this.executeRender();
|
6880 |
-
}
|
6881 |
-
else {
|
6882 |
-
this.requestRerender(true);
|
6883 |
-
}
|
6884 |
-
};
|
6885 |
-
Calendar.prototype.destroy = function () {
|
6886 |
-
if (this.component) {
|
6887 |
-
this.unbindHandlers();
|
6888 |
-
this.component.destroy(); // don't null-out. in case API needs access
|
6889 |
-
this.component = null; // umm ???
|
6890 |
-
for (var _i = 0, _a = this.calendarInteractions; _i < _a.length; _i++) {
|
6891 |
-
var interaction = _a[_i];
|
6892 |
-
interaction.destroy();
|
6893 |
-
}
|
6894 |
-
this.publiclyTrigger('_destroyed');
|
6895 |
-
}
|
6896 |
-
};
|
6897 |
-
// Handlers
|
6898 |
-
// -----------------------------------------------------------------------------------------------------------------
|
6899 |
-
Calendar.prototype.bindHandlers = function () {
|
6900 |
-
var _this = this;
|
6901 |
-
// event delegation for nav links
|
6902 |
-
this.removeNavLinkListener = listenBySelector(this.el, 'click', 'a[data-goto]', function (ev, anchorEl) {
|
6903 |
-
var gotoOptions = anchorEl.getAttribute('data-goto');
|
6904 |
-
gotoOptions = gotoOptions ? JSON.parse(gotoOptions) : {};
|
6905 |
-
var dateEnv = _this.dateEnv;
|
6906 |
-
var dateMarker = dateEnv.createMarker(gotoOptions.date);
|
6907 |
-
var viewType = gotoOptions.type;
|
6908 |
-
// property like "navLinkDayClick". might be a string or a function
|
6909 |
-
var customAction = _this.viewOpt('navLink' + capitaliseFirstLetter(viewType) + 'Click');
|
6910 |
-
if (typeof customAction === 'function') {
|
6911 |
-
customAction(dateEnv.toDate(dateMarker), ev);
|
6912 |
-
}
|
6913 |
-
else {
|
6914 |
-
if (typeof customAction === 'string') {
|
6915 |
-
viewType = customAction;
|
6916 |
-
}
|
6917 |
-
_this.zoomTo(dateMarker, viewType);
|
6918 |
-
}
|
6919 |
-
});
|
6920 |
-
if (this.opt('handleWindowResize')) {
|
6921 |
-
window.addEventListener('resize', this.windowResizeProxy = debounce(// prevents rapid calls
|
6922 |
-
this.windowResize.bind(this), this.opt('windowResizeDelay')));
|
6923 |
-
}
|
6924 |
-
};
|
6925 |
-
Calendar.prototype.unbindHandlers = function () {
|
6926 |
-
this.removeNavLinkListener();
|
6927 |
-
if (this.windowResizeProxy) {
|
6928 |
-
window.removeEventListener('resize', this.windowResizeProxy);
|
6929 |
-
this.windowResizeProxy = null;
|
6930 |
-
}
|
6931 |
-
};
|
6932 |
-
// Dispatcher
|
6933 |
-
// -----------------------------------------------------------------------------------------------------------------
|
6934 |
-
Calendar.prototype.hydrate = function () {
|
6935 |
-
var _this = this;
|
6936 |
-
this.state = this.buildInitialState();
|
6937 |
-
var rawSources = this.opt('eventSources') || [];
|
6938 |
-
var singleRawSource = this.opt('events');
|
6939 |
-
var sources = []; // parsed
|
6940 |
-
if (singleRawSource) {
|
6941 |
-
rawSources.unshift(singleRawSource);
|
6942 |
-
}
|
6943 |
-
for (var _i = 0, rawSources_1 = rawSources; _i < rawSources_1.length; _i++) {
|
6944 |
-
var rawSource = rawSources_1[_i];
|
6945 |
-
var source = parseEventSource(rawSource, this);
|
6946 |
-
if (source) {
|
6947 |
-
sources.push(source);
|
6948 |
-
}
|
6949 |
-
}
|
6950 |
-
this.batchRendering(function () {
|
6951 |
-
_this.dispatch({ type: 'INIT' }); // pass in sources here?
|
6952 |
-
_this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: sources });
|
6953 |
-
_this.dispatch({
|
6954 |
-
type: 'SET_VIEW_TYPE',
|
6955 |
-
viewType: _this.opt('defaultView') || _this.pluginSystem.hooks.defaultView
|
6956 |
-
});
|
6957 |
-
});
|
6958 |
-
};
|
6959 |
-
Calendar.prototype.buildInitialState = function () {
|
6960 |
-
return {
|
6961 |
-
viewType: null,
|
6962 |
-
loadingLevel: 0,
|
6963 |
-
eventSourceLoadingLevel: 0,
|
6964 |
-
currentDate: this.getInitialDate(),
|
6965 |
-
dateProfile: null,
|
6966 |
-
eventSources: {},
|
6967 |
-
eventStore: createEmptyEventStore(),
|
6968 |
-
dateSelection: null,
|
6969 |
-
eventSelection: '',
|
6970 |
-
eventDrag: null,
|
6971 |
-
eventResize: null
|
6972 |
-
};
|
6973 |
-
};
|
6974 |
-
Calendar.prototype.dispatch = function (action) {
|
6975 |
-
this.actionQueue.push(action);
|
6976 |
-
if (!this.isReducing) {
|
6977 |
-
this.isReducing = true;
|
6978 |
-
var oldState = this.state;
|
6979 |
-
while (this.actionQueue.length) {
|
6980 |
-
this.state = this.reduce(this.state, this.actionQueue.shift(), this);
|
6981 |
-
}
|
6982 |
-
var newState = this.state;
|
6983 |
-
this.isReducing = false;
|
6984 |
-
if (!oldState.loadingLevel && newState.loadingLevel) {
|
6985 |
-
this.publiclyTrigger('loading', [true]);
|
6986 |
-
}
|
6987 |
-
else if (oldState.loadingLevel && !newState.loadingLevel) {
|
6988 |
-
this.publiclyTrigger('loading', [false]);
|
6989 |
-
}
|
6990 |
-
var view = this.component && this.component.view;
|
6991 |
-
if (oldState.eventStore !== newState.eventStore || this.needsFullRerender) {
|
6992 |
-
if (oldState.eventStore) {
|
6993 |
-
this.isEventsUpdated = true;
|
6994 |
-
}
|
6995 |
-
}
|
6996 |
-
if (oldState.dateProfile !== newState.dateProfile || this.needsFullRerender) {
|
6997 |
-
if (oldState.dateProfile && view) { // why would view be null!?
|
6998 |
-
this.publiclyTrigger('datesDestroy', [
|
6999 |
-
{
|
7000 |
-
view: view,
|
7001 |
-
el: view.el
|
7002 |
-
}
|
7003 |
-
]);
|
7004 |
-
}
|
7005 |
-
this.isDatesUpdated = true;
|
7006 |
-
}
|
7007 |
-
if (oldState.viewType !== newState.viewType || this.needsFullRerender) {
|
7008 |
-
if (oldState.viewType && view) { // why would view be null!?
|
7009 |
-
this.publiclyTrigger('viewSkeletonDestroy', [
|
7010 |
-
{
|
7011 |
-
view: view,
|
7012 |
-
el: view.el
|
7013 |
-
}
|
7014 |
-
]);
|
7015 |
-
}
|
7016 |
-
this.isViewUpdated = true;
|
7017 |
-
}
|
7018 |
-
this.requestRerender();
|
7019 |
-
}
|
7020 |
-
};
|
7021 |
-
Calendar.prototype.reduce = function (state, action, calendar) {
|
7022 |
-
return reduce(state, action, calendar);
|
7023 |
-
};
|
7024 |
-
// Render Queue
|
7025 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7026 |
-
Calendar.prototype.requestRerender = function (needsFull) {
|
7027 |
-
if (needsFull === void 0) { needsFull = false; }
|
7028 |
-
this.needsRerender = true;
|
7029 |
-
this.needsFullRerender = this.needsFullRerender || needsFull;
|
7030 |
-
this.delayedRerender(); // will call a debounced-version of tryRerender
|
7031 |
-
};
|
7032 |
-
Calendar.prototype.tryRerender = function () {
|
7033 |
-
if (this.component && // must be accepting renders
|
7034 |
-
this.needsRerender && // indicates that a rerender was requested
|
7035 |
-
!this.renderingPauseDepth && // not paused
|
7036 |
-
!this.isRendering // not currently in the render loop
|
7037 |
-
) {
|
7038 |
-
this.executeRender();
|
7039 |
-
}
|
7040 |
-
};
|
7041 |
-
Calendar.prototype.batchRendering = function (func) {
|
7042 |
-
this.renderingPauseDepth++;
|
7043 |
-
func();
|
7044 |
-
this.renderingPauseDepth--;
|
7045 |
-
if (this.needsRerender) {
|
7046 |
-
this.requestRerender();
|
7047 |
-
}
|
7048 |
-
};
|
7049 |
-
// Rendering
|
7050 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7051 |
-
Calendar.prototype.executeRender = function () {
|
7052 |
-
var needsFullRerender = this.needsFullRerender; // save before clearing
|
7053 |
-
// clear these BEFORE the render so that new values will accumulate during render
|
7054 |
-
this.needsRerender = false;
|
7055 |
-
this.needsFullRerender = false;
|
7056 |
-
this.isRendering = true;
|
7057 |
-
this.renderComponent(needsFullRerender);
|
7058 |
-
this.isRendering = false;
|
7059 |
-
// received a rerender request while rendering
|
7060 |
-
if (this.needsRerender) {
|
7061 |
-
this.delayedRerender();
|
7062 |
-
}
|
7063 |
-
};
|
7064 |
-
/*
|
7065 |
-
don't call this directly. use executeRender instead
|
7066 |
-
*/
|
7067 |
-
Calendar.prototype.renderComponent = function (needsFull) {
|
7068 |
-
var _a = this, state = _a.state, component = _a.component;
|
7069 |
-
var viewType = state.viewType;
|
7070 |
-
var viewSpec = this.viewSpecs[viewType];
|
7071 |
-
var savedScroll = (needsFull && component) ? component.view.queryScroll() : null;
|
7072 |
-
if (!viewSpec) {
|
7073 |
-
throw new Error("View type \"" + viewType + "\" is not valid");
|
7074 |
-
}
|
7075 |
-
// if event sources are still loading and progressive rendering hasn't been enabled,
|
7076 |
-
// keep rendering the last fully loaded set of events
|
7077 |
-
var renderableEventStore = this.renderableEventStore =
|
7078 |
-
(state.eventSourceLoadingLevel && !this.opt('progressiveEventRendering')) ?
|
7079 |
-
this.renderableEventStore :
|
7080 |
-
state.eventStore;
|
7081 |
-
var eventUiSingleBase = this.buildEventUiSingleBase(viewSpec.options);
|
7082 |
-
var eventUiBySource = this.buildEventUiBySource(state.eventSources);
|
7083 |
-
var eventUiBases = this.eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);
|
7084 |
-
if (needsFull || !component) {
|
7085 |
-
if (component) {
|
7086 |
-
component.freezeHeight(); // next component will unfreeze it
|
7087 |
-
component.destroy();
|
7088 |
-
}
|
7089 |
-
component = this.component = new CalendarComponent({
|
7090 |
-
calendar: this,
|
7091 |
-
view: null,
|
7092 |
-
dateEnv: this.dateEnv,
|
7093 |
-
theme: this.theme,
|
7094 |
-
options: this.optionsManager.computed
|
7095 |
-
}, this.el);
|
7096 |
-
this.isViewUpdated = true;
|
7097 |
-
this.isDatesUpdated = true;
|
7098 |
-
this.isEventsUpdated = true;
|
7099 |
-
}
|
7100 |
-
component.receiveProps(__assign({}, state, { viewSpec: viewSpec, dateProfile: state.dateProfile, dateProfileGenerator: this.dateProfileGenerators[viewType], eventStore: renderableEventStore, eventUiBases: eventUiBases, dateSelection: state.dateSelection, eventSelection: state.eventSelection, eventDrag: state.eventDrag, eventResize: state.eventResize }));
|
7101 |
-
if (savedScroll) {
|
7102 |
-
component.view.applyScroll(savedScroll, false);
|
7103 |
-
}
|
7104 |
-
if (this.isViewUpdated) {
|
7105 |
-
this.isViewUpdated = false;
|
7106 |
-
this.publiclyTrigger('viewSkeletonRender', [
|
7107 |
-
{
|
7108 |
-
view: component.view,
|
7109 |
-
el: component.view.el
|
7110 |
-
}
|
7111 |
-
]);
|
7112 |
-
}
|
7113 |
-
if (this.isDatesUpdated) {
|
7114 |
-
this.isDatesUpdated = false;
|
7115 |
-
this.publiclyTrigger('datesRender', [
|
7116 |
-
{
|
7117 |
-
view: component.view,
|
7118 |
-
el: component.view.el
|
7119 |
-
}
|
7120 |
-
]);
|
7121 |
-
}
|
7122 |
-
if (this.isEventsUpdated) {
|
7123 |
-
this.isEventsUpdated = false;
|
7124 |
-
}
|
7125 |
-
this.releaseAfterSizingTriggers();
|
7126 |
-
};
|
7127 |
-
// Options
|
7128 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7129 |
-
Calendar.prototype.setOption = function (name, val) {
|
7130 |
-
var _a;
|
7131 |
-
this.mutateOptions((_a = {}, _a[name] = val, _a), [], true);
|
7132 |
-
};
|
7133 |
-
Calendar.prototype.getOption = function (name) {
|
7134 |
-
return this.optionsManager.computed[name];
|
7135 |
-
};
|
7136 |
-
Calendar.prototype.opt = function (name) {
|
7137 |
-
return this.optionsManager.computed[name];
|
7138 |
-
};
|
7139 |
-
Calendar.prototype.viewOpt = function (name) {
|
7140 |
-
return this.viewOpts()[name];
|
7141 |
-
};
|
7142 |
-
Calendar.prototype.viewOpts = function () {
|
7143 |
-
return this.viewSpecs[this.state.viewType].options;
|
7144 |
-
};
|
7145 |
-
/*
|
7146 |
-
handles option changes (like a diff)
|
7147 |
-
*/
|
7148 |
-
Calendar.prototype.mutateOptions = function (updates, removals, isDynamic, deepEqual) {
|
7149 |
-
var _this = this;
|
7150 |
-
var changeHandlers = this.pluginSystem.hooks.optionChangeHandlers;
|
7151 |
-
var normalUpdates = {};
|
7152 |
-
var specialUpdates = {};
|
7153 |
-
var oldDateEnv = this.dateEnv; // do this before handleOptions
|
7154 |
-
var isTimeZoneDirty = false;
|
7155 |
-
var isSizeDirty = false;
|
7156 |
-
var anyDifficultOptions = Boolean(removals.length);
|
7157 |
-
for (var name_1 in updates) {
|
7158 |
-
if (changeHandlers[name_1]) {
|
7159 |
-
specialUpdates[name_1] = updates[name_1];
|
7160 |
-
}
|
7161 |
-
else {
|
7162 |
-
normalUpdates[name_1] = updates[name_1];
|
7163 |
-
}
|
7164 |
-
}
|
7165 |
-
for (var name_2 in normalUpdates) {
|
7166 |
-
if (/^(height|contentHeight|aspectRatio)$/.test(name_2)) {
|
7167 |
-
isSizeDirty = true;
|
7168 |
-
}
|
7169 |
-
else if (/^(defaultDate|defaultView)$/.test(name_2)) ;
|
7170 |
-
else {
|
7171 |
-
anyDifficultOptions = true;
|
7172 |
-
if (name_2 === 'timeZone') {
|
7173 |
-
isTimeZoneDirty = true;
|
7174 |
-
}
|
7175 |
-
}
|
7176 |
-
}
|
7177 |
-
this.optionsManager.mutate(normalUpdates, removals, isDynamic);
|
7178 |
-
if (anyDifficultOptions) {
|
7179 |
-
this.handleOptions(this.optionsManager.computed);
|
7180 |
-
this.needsFullRerender = true;
|
7181 |
-
}
|
7182 |
-
this.batchRendering(function () {
|
7183 |
-
if (anyDifficultOptions) {
|
7184 |
-
if (isTimeZoneDirty) {
|
7185 |
-
_this.dispatch({
|
7186 |
-
type: 'CHANGE_TIMEZONE',
|
7187 |
-
oldDateEnv: oldDateEnv
|
7188 |
-
});
|
7189 |
-
}
|
7190 |
-
/* HACK
|
7191 |
-
has the same effect as calling this.requestRerender(true)
|
7192 |
-
but recomputes the state's dateProfile
|
7193 |
-
*/
|
7194 |
-
_this.dispatch({
|
7195 |
-
type: 'SET_VIEW_TYPE',
|
7196 |
-
viewType: _this.state.viewType
|
7197 |
-
});
|
7198 |
-
}
|
7199 |
-
else if (isSizeDirty) {
|
7200 |
-
_this.updateSize();
|
7201 |
-
}
|
7202 |
-
// special updates
|
7203 |
-
if (deepEqual) {
|
7204 |
-
for (var name_3 in specialUpdates) {
|
7205 |
-
changeHandlers[name_3](specialUpdates[name_3], _this, deepEqual);
|
7206 |
-
}
|
7207 |
-
}
|
7208 |
-
});
|
7209 |
-
};
|
7210 |
-
/*
|
7211 |
-
rebuilds things based off of a complete set of refined options
|
7212 |
-
*/
|
7213 |
-
Calendar.prototype.handleOptions = function (options) {
|
7214 |
-
var _this = this;
|
7215 |
-
var pluginHooks = this.pluginSystem.hooks;
|
7216 |
-
this.defaultAllDayEventDuration = createDuration(options.defaultAllDayEventDuration);
|
7217 |
-
this.defaultTimedEventDuration = createDuration(options.defaultTimedEventDuration);
|
7218 |
-
this.delayedRerender = this.buildDelayedRerender(options.rerenderDelay);
|
7219 |
-
this.theme = this.buildTheme(options);
|
7220 |
-
var available = this.parseRawLocales(options.locales);
|
7221 |
-
this.availableRawLocales = available.map;
|
7222 |
-
var locale = this.buildLocale(options.locale || available.defaultCode, available.map);
|
7223 |
-
this.dateEnv = this.buildDateEnv(locale, options.timeZone, pluginHooks.namedTimeZonedImpl, options.firstDay, options.weekNumberCalculation, options.weekLabel, pluginHooks.cmdFormatter);
|
7224 |
-
this.selectionConfig = this.buildSelectionConfig(options); // needs dateEnv. do after :(
|
7225 |
-
// ineffecient to do every time?
|
7226 |
-
this.viewSpecs = buildViewSpecs(pluginHooks.views, this.optionsManager);
|
7227 |
-
// ineffecient to do every time?
|
7228 |
-
this.dateProfileGenerators = mapHash(this.viewSpecs, function (viewSpec) {
|
7229 |
-
return new viewSpec.class.prototype.dateProfileGeneratorClass(viewSpec, _this);
|
7230 |
-
});
|
7231 |
-
};
|
7232 |
-
Calendar.prototype.getAvailableLocaleCodes = function () {
|
7233 |
-
return Object.keys(this.availableRawLocales);
|
7234 |
-
};
|
7235 |
-
Calendar.prototype._buildSelectionConfig = function (rawOpts) {
|
7236 |
-
return processScopedUiProps('select', rawOpts, this);
|
7237 |
-
};
|
7238 |
-
Calendar.prototype._buildEventUiSingleBase = function (rawOpts) {
|
7239 |
-
if (rawOpts.editable) { // so 'editable' affected events
|
7240 |
-
rawOpts = __assign({}, rawOpts, { eventEditable: true });
|
7241 |
-
}
|
7242 |
-
return processScopedUiProps('event', rawOpts, this);
|
7243 |
-
};
|
7244 |
-
// Trigger
|
7245 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7246 |
-
Calendar.prototype.hasPublicHandlers = function (name) {
|
7247 |
-
return this.hasHandlers(name) ||
|
7248 |
-
this.opt(name); // handler specified in options
|
7249 |
-
};
|
7250 |
-
Calendar.prototype.publiclyTrigger = function (name, args) {
|
7251 |
-
var optHandler = this.opt(name);
|
7252 |
-
this.triggerWith(name, this, args);
|
7253 |
-
if (optHandler) {
|
7254 |
-
return optHandler.apply(this, args);
|
7255 |
-
}
|
7256 |
-
};
|
7257 |
-
Calendar.prototype.publiclyTriggerAfterSizing = function (name, args) {
|
7258 |
-
var afterSizingTriggers = this.afterSizingTriggers;
|
7259 |
-
(afterSizingTriggers[name] || (afterSizingTriggers[name] = [])).push(args);
|
7260 |
-
};
|
7261 |
-
Calendar.prototype.releaseAfterSizingTriggers = function () {
|
7262 |
-
var afterSizingTriggers = this.afterSizingTriggers;
|
7263 |
-
for (var name_4 in afterSizingTriggers) {
|
7264 |
-
for (var _i = 0, _a = afterSizingTriggers[name_4]; _i < _a.length; _i++) {
|
7265 |
-
var args = _a[_i];
|
7266 |
-
this.publiclyTrigger(name_4, args);
|
7267 |
-
}
|
7268 |
-
}
|
7269 |
-
this.afterSizingTriggers = {};
|
7270 |
-
};
|
7271 |
-
// View
|
7272 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7273 |
-
// Returns a boolean about whether the view is okay to instantiate at some point
|
7274 |
-
Calendar.prototype.isValidViewType = function (viewType) {
|
7275 |
-
return Boolean(this.viewSpecs[viewType]);
|
7276 |
-
};
|
7277 |
-
Calendar.prototype.changeView = function (viewType, dateOrRange) {
|
7278 |
-
var dateMarker = null;
|
7279 |
-
if (dateOrRange) {
|
7280 |
-
if (dateOrRange.start && dateOrRange.end) { // a range
|
7281 |
-
this.optionsManager.mutate({ visibleRange: dateOrRange }, []); // will not rerender
|
7282 |
-
this.handleOptions(this.optionsManager.computed); // ...but yuck
|
7283 |
-
}
|
7284 |
-
else { // a date
|
7285 |
-
dateMarker = this.dateEnv.createMarker(dateOrRange); // just like gotoDate
|
7286 |
-
}
|
7287 |
-
}
|
7288 |
-
this.unselect();
|
7289 |
-
this.dispatch({
|
7290 |
-
type: 'SET_VIEW_TYPE',
|
7291 |
-
viewType: viewType,
|
7292 |
-
dateMarker: dateMarker
|
7293 |
-
});
|
7294 |
-
};
|
7295 |
-
// Forces navigation to a view for the given date.
|
7296 |
-
// `viewType` can be a specific view name or a generic one like "week" or "day".
|
7297 |
-
// needs to change
|
7298 |
-
Calendar.prototype.zoomTo = function (dateMarker, viewType) {
|
7299 |
-
var spec;
|
7300 |
-
viewType = viewType || 'day'; // day is default zoom
|
7301 |
-
spec = this.viewSpecs[viewType] ||
|
7302 |
-
this.getUnitViewSpec(viewType);
|
7303 |
-
this.unselect();
|
7304 |
-
if (spec) {
|
7305 |
-
this.dispatch({
|
7306 |
-
type: 'SET_VIEW_TYPE',
|
7307 |
-
viewType: spec.type,
|
7308 |
-
dateMarker: dateMarker
|
7309 |
-
});
|
7310 |
-
}
|
7311 |
-
else {
|
7312 |
-
this.dispatch({
|
7313 |
-
type: 'SET_DATE',
|
7314 |
-
dateMarker: dateMarker
|
7315 |
-
});
|
7316 |
-
}
|
7317 |
-
};
|
7318 |
-
// Given a duration singular unit, like "week" or "day", finds a matching view spec.
|
7319 |
-
// Preference is given to views that have corresponding buttons.
|
7320 |
-
Calendar.prototype.getUnitViewSpec = function (unit) {
|
7321 |
-
var component = this.component;
|
7322 |
-
var viewTypes = [];
|
7323 |
-
var i;
|
7324 |
-
var spec;
|
7325 |
-
// put views that have buttons first. there will be duplicates, but oh
|
7326 |
-
if (component.header) {
|
7327 |
-
viewTypes.push.apply(viewTypes, component.header.viewsWithButtons);
|
7328 |
-
}
|
7329 |
-
if (component.footer) {
|
7330 |
-
viewTypes.push.apply(viewTypes, component.footer.viewsWithButtons);
|
7331 |
-
}
|
7332 |
-
for (var viewType in this.viewSpecs) {
|
7333 |
-
viewTypes.push(viewType);
|
7334 |
-
}
|
7335 |
-
for (i = 0; i < viewTypes.length; i++) {
|
7336 |
-
spec = this.viewSpecs[viewTypes[i]];
|
7337 |
-
if (spec) {
|
7338 |
-
if (spec.singleUnit === unit) {
|
7339 |
-
return spec;
|
7340 |
-
}
|
7341 |
-
}
|
7342 |
-
}
|
7343 |
-
};
|
7344 |
-
// Current Date
|
7345 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7346 |
-
Calendar.prototype.getInitialDate = function () {
|
7347 |
-
var defaultDateInput = this.opt('defaultDate');
|
7348 |
-
// compute the initial ambig-timezone date
|
7349 |
-
if (defaultDateInput != null) {
|
7350 |
-
return this.dateEnv.createMarker(defaultDateInput);
|
7351 |
-
}
|
7352 |
-
else {
|
7353 |
-
return this.getNow(); // getNow already returns unzoned
|
7354 |
-
}
|
7355 |
-
};
|
7356 |
-
Calendar.prototype.prev = function () {
|
7357 |
-
this.unselect();
|
7358 |
-
this.dispatch({ type: 'PREV' });
|
7359 |
-
};
|
7360 |
-
Calendar.prototype.next = function () {
|
7361 |
-
this.unselect();
|
7362 |
-
this.dispatch({ type: 'NEXT' });
|
7363 |
-
};
|
7364 |
-
Calendar.prototype.prevYear = function () {
|
7365 |
-
this.unselect();
|
7366 |
-
this.dispatch({
|
7367 |
-
type: 'SET_DATE',
|
7368 |
-
dateMarker: this.dateEnv.addYears(this.state.currentDate, -1)
|
7369 |
-
});
|
7370 |
-
};
|
7371 |
-
Calendar.prototype.nextYear = function () {
|
7372 |
-
this.unselect();
|
7373 |
-
this.dispatch({
|
7374 |
-
type: 'SET_DATE',
|
7375 |
-
dateMarker: this.dateEnv.addYears(this.state.currentDate, 1)
|
7376 |
-
});
|
7377 |
-
};
|
7378 |
-
Calendar.prototype.today = function () {
|
7379 |
-
this.unselect();
|
7380 |
-
this.dispatch({
|
7381 |
-
type: 'SET_DATE',
|
7382 |
-
dateMarker: this.getNow()
|
7383 |
-
});
|
7384 |
-
};
|
7385 |
-
Calendar.prototype.gotoDate = function (zonedDateInput) {
|
7386 |
-
this.unselect();
|
7387 |
-
this.dispatch({
|
7388 |
-
type: 'SET_DATE',
|
7389 |
-
dateMarker: this.dateEnv.createMarker(zonedDateInput)
|
7390 |
-
});
|
7391 |
-
};
|
7392 |
-
Calendar.prototype.incrementDate = function (deltaInput) {
|
7393 |
-
var delta = createDuration(deltaInput);
|
7394 |
-
if (delta) { // else, warn about invalid input?
|
7395 |
-
this.unselect();
|
7396 |
-
this.dispatch({
|
7397 |
-
type: 'SET_DATE',
|
7398 |
-
dateMarker: this.dateEnv.add(this.state.currentDate, delta)
|
7399 |
-
});
|
7400 |
-
}
|
7401 |
-
};
|
7402 |
-
// for external API
|
7403 |
-
Calendar.prototype.getDate = function () {
|
7404 |
-
return this.dateEnv.toDate(this.state.currentDate);
|
7405 |
-
};
|
7406 |
-
// Date Formatting Utils
|
7407 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7408 |
-
Calendar.prototype.formatDate = function (d, formatter) {
|
7409 |
-
var dateEnv = this.dateEnv;
|
7410 |
-
return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));
|
7411 |
-
};
|
7412 |
-
// `settings` is for formatter AND isEndExclusive
|
7413 |
-
Calendar.prototype.formatRange = function (d0, d1, settings) {
|
7414 |
-
var dateEnv = this.dateEnv;
|
7415 |
-
return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings, this.opt('defaultRangeSeparator')), settings);
|
7416 |
-
};
|
7417 |
-
Calendar.prototype.formatIso = function (d, omitTime) {
|
7418 |
-
var dateEnv = this.dateEnv;
|
7419 |
-
return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime: omitTime });
|
7420 |
-
};
|
7421 |
-
// Sizing
|
7422 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7423 |
-
Calendar.prototype.windowResize = function (ev) {
|
7424 |
-
if (!this.isHandlingWindowResize &&
|
7425 |
-
this.component && // why?
|
7426 |
-
ev.target === window // not a jqui resize event
|
7427 |
-
) {
|
7428 |
-
this.isHandlingWindowResize = true;
|
7429 |
-
this.updateSize();
|
7430 |
-
this.publiclyTrigger('windowResize', [this.view]);
|
7431 |
-
this.isHandlingWindowResize = false;
|
7432 |
-
}
|
7433 |
-
};
|
7434 |
-
Calendar.prototype.updateSize = function () {
|
7435 |
-
if (this.component) { // when?
|
7436 |
-
this.component.updateSize(true);
|
7437 |
-
}
|
7438 |
-
};
|
7439 |
-
// Component Registration
|
7440 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7441 |
-
Calendar.prototype.registerInteractiveComponent = function (component, settingsInput) {
|
7442 |
-
var settings = parseInteractionSettings(component, settingsInput);
|
7443 |
-
var DEFAULT_INTERACTIONS = [
|
7444 |
-
EventClicking,
|
7445 |
-
EventHovering
|
7446 |
-
];
|
7447 |
-
var interactionClasses = DEFAULT_INTERACTIONS.concat(this.pluginSystem.hooks.componentInteractions);
|
7448 |
-
var interactions = interactionClasses.map(function (interactionClass) {
|
7449 |
-
return new interactionClass(settings);
|
7450 |
-
});
|
7451 |
-
this.interactionsStore[component.uid] = interactions;
|
7452 |
-
interactionSettingsStore[component.uid] = settings;
|
7453 |
-
};
|
7454 |
-
Calendar.prototype.unregisterInteractiveComponent = function (component) {
|
7455 |
-
for (var _i = 0, _a = this.interactionsStore[component.uid]; _i < _a.length; _i++) {
|
7456 |
-
var listener = _a[_i];
|
7457 |
-
listener.destroy();
|
7458 |
-
}
|
7459 |
-
delete this.interactionsStore[component.uid];
|
7460 |
-
delete interactionSettingsStore[component.uid];
|
7461 |
-
};
|
7462 |
-
// Date Selection / Event Selection / DayClick
|
7463 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7464 |
-
// this public method receives start/end dates in any format, with any timezone
|
7465 |
-
// NOTE: args were changed from v3
|
7466 |
-
Calendar.prototype.select = function (dateOrObj, endDate) {
|
7467 |
-
var selectionInput;
|
7468 |
-
if (endDate == null) {
|
7469 |
-
if (dateOrObj.start != null) {
|
7470 |
-
selectionInput = dateOrObj;
|
7471 |
-
}
|
7472 |
-
else {
|
7473 |
-
selectionInput = {
|
7474 |
-
start: dateOrObj,
|
7475 |
-
end: null
|
7476 |
-
};
|
7477 |
-
}
|
7478 |
-
}
|
7479 |
-
else {
|
7480 |
-
selectionInput = {
|
7481 |
-
start: dateOrObj,
|
7482 |
-
end: endDate
|
7483 |
-
};
|
7484 |
-
}
|
7485 |
-
var selection = parseDateSpan(selectionInput, this.dateEnv, createDuration({ days: 1 }) // TODO: cache this?
|
7486 |
-
);
|
7487 |
-
if (selection) { // throw parse error otherwise?
|
7488 |
-
this.dispatch({ type: 'SELECT_DATES', selection: selection });
|
7489 |
-
this.triggerDateSelect(selection);
|
7490 |
-
}
|
7491 |
-
};
|
7492 |
-
// public method
|
7493 |
-
Calendar.prototype.unselect = function (pev) {
|
7494 |
-
if (this.state.dateSelection) {
|
7495 |
-
this.dispatch({ type: 'UNSELECT_DATES' });
|
7496 |
-
this.triggerDateUnselect(pev);
|
7497 |
-
}
|
7498 |
-
};
|
7499 |
-
Calendar.prototype.triggerDateSelect = function (selection, pev) {
|
7500 |
-
var arg = __assign({}, this.buildDateSpanApi(selection), { jsEvent: pev ? pev.origEvent : null, view: this.view });
|
7501 |
-
this.publiclyTrigger('select', [arg]);
|
7502 |
-
};
|
7503 |
-
Calendar.prototype.triggerDateUnselect = function (pev) {
|
7504 |
-
this.publiclyTrigger('unselect', [
|
7505 |
-
{
|
7506 |
-
jsEvent: pev ? pev.origEvent : null,
|
7507 |
-
view: this.view
|
7508 |
-
}
|
7509 |
-
]);
|
7510 |
-
};
|
7511 |
-
// TODO: receive pev?
|
7512 |
-
Calendar.prototype.triggerDateClick = function (dateSpan, dayEl, view, ev) {
|
7513 |
-
var arg = __assign({}, this.buildDatePointApi(dateSpan), { dayEl: dayEl, jsEvent: ev, // Is this always a mouse event? See #4655
|
7514 |
-
view: view });
|
7515 |
-
this.publiclyTrigger('dateClick', [arg]);
|
7516 |
-
};
|
7517 |
-
Calendar.prototype.buildDatePointApi = function (dateSpan) {
|
7518 |
-
var props = {};
|
7519 |
-
for (var _i = 0, _a = this.pluginSystem.hooks.datePointTransforms; _i < _a.length; _i++) {
|
7520 |
-
var transform = _a[_i];
|
7521 |
-
__assign(props, transform(dateSpan, this));
|
7522 |
-
}
|
7523 |
-
__assign(props, buildDatePointApi(dateSpan, this.dateEnv));
|
7524 |
-
return props;
|
7525 |
-
};
|
7526 |
-
Calendar.prototype.buildDateSpanApi = function (dateSpan) {
|
7527 |
-
var props = {};
|
7528 |
-
for (var _i = 0, _a = this.pluginSystem.hooks.dateSpanTransforms; _i < _a.length; _i++) {
|
7529 |
-
var transform = _a[_i];
|
7530 |
-
__assign(props, transform(dateSpan, this));
|
7531 |
-
}
|
7532 |
-
__assign(props, buildDateSpanApi(dateSpan, this.dateEnv));
|
7533 |
-
return props;
|
7534 |
-
};
|
7535 |
-
// Date Utils
|
7536 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7537 |
-
// Returns a DateMarker for the current date, as defined by the client's computer or from the `now` option
|
7538 |
-
Calendar.prototype.getNow = function () {
|
7539 |
-
var now = this.opt('now');
|
7540 |
-
if (typeof now === 'function') {
|
7541 |
-
now = now();
|
7542 |
-
}
|
7543 |
-
if (now == null) {
|
7544 |
-
return this.dateEnv.createNowMarker();
|
7545 |
-
}
|
7546 |
-
return this.dateEnv.createMarker(now);
|
7547 |
-
};
|
7548 |
-
// Event-Date Utilities
|
7549 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7550 |
-
// Given an event's allDay status and start date, return what its fallback end date should be.
|
7551 |
-
// TODO: rename to computeDefaultEventEnd
|
7552 |
-
Calendar.prototype.getDefaultEventEnd = function (allDay, marker) {
|
7553 |
-
var end = marker;
|
7554 |
-
if (allDay) {
|
7555 |
-
end = startOfDay(end);
|
7556 |
-
end = this.dateEnv.add(end, this.defaultAllDayEventDuration);
|
7557 |
-
}
|
7558 |
-
else {
|
7559 |
-
end = this.dateEnv.add(end, this.defaultTimedEventDuration);
|
7560 |
-
}
|
7561 |
-
return end;
|
7562 |
-
};
|
7563 |
-
// Public Events API
|
7564 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7565 |
-
Calendar.prototype.addEvent = function (eventInput, sourceInput) {
|
7566 |
-
if (eventInput instanceof EventApi) {
|
7567 |
-
var def = eventInput._def;
|
7568 |
-
var instance = eventInput._instance;
|
7569 |
-
// not already present? don't want to add an old snapshot
|
7570 |
-
if (!this.state.eventStore.defs[def.defId]) {
|
7571 |
-
this.dispatch({
|
7572 |
-
type: 'ADD_EVENTS',
|
7573 |
-
eventStore: eventTupleToStore({ def: def, instance: instance }) // TODO: better util for two args?
|
7574 |
-
});
|
7575 |
-
}
|
7576 |
-
return eventInput;
|
7577 |
-
}
|
7578 |
-
var sourceId;
|
7579 |
-
if (sourceInput instanceof EventSourceApi) {
|
7580 |
-
sourceId = sourceInput.internalEventSource.sourceId;
|
7581 |
-
}
|
7582 |
-
else if (sourceInput != null) {
|
7583 |
-
var sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function
|
7584 |
-
if (!sourceApi) {
|
7585 |
-
console.warn('Could not find an event source with ID "' + sourceInput + '"'); // TODO: test
|
7586 |
-
return null;
|
7587 |
-
}
|
7588 |
-
else {
|
7589 |
-
sourceId = sourceApi.internalEventSource.sourceId;
|
7590 |
-
}
|
7591 |
-
}
|
7592 |
-
var tuple = parseEvent(eventInput, sourceId, this);
|
7593 |
-
if (tuple) {
|
7594 |
-
this.dispatch({
|
7595 |
-
type: 'ADD_EVENTS',
|
7596 |
-
eventStore: eventTupleToStore(tuple)
|
7597 |
-
});
|
7598 |
-
return new EventApi(this, tuple.def, tuple.def.recurringDef ? null : tuple.instance);
|
7599 |
-
}
|
7600 |
-
return null;
|
7601 |
-
};
|
7602 |
-
// TODO: optimize
|
7603 |
-
Calendar.prototype.getEventById = function (id) {
|
7604 |
-
var _a = this.state.eventStore, defs = _a.defs, instances = _a.instances;
|
7605 |
-
id = String(id);
|
7606 |
-
for (var defId in defs) {
|
7607 |
-
var def = defs[defId];
|
7608 |
-
if (def.publicId === id) {
|
7609 |
-
if (def.recurringDef) {
|
7610 |
-
return new EventApi(this, def, null);
|
7611 |
-
}
|
7612 |
-
else {
|
7613 |
-
for (var instanceId in instances) {
|
7614 |
-
var instance = instances[instanceId];
|
7615 |
-
if (instance.defId === def.defId) {
|
7616 |
-
return new EventApi(this, def, instance);
|
7617 |
-
}
|
7618 |
-
}
|
7619 |
-
}
|
7620 |
-
}
|
7621 |
-
}
|
7622 |
-
return null;
|
7623 |
-
};
|
7624 |
-
Calendar.prototype.getEvents = function () {
|
7625 |
-
var _a = this.state.eventStore, defs = _a.defs, instances = _a.instances;
|
7626 |
-
var eventApis = [];
|
7627 |
-
for (var id in instances) {
|
7628 |
-
var instance = instances[id];
|
7629 |
-
var def = defs[instance.defId];
|
7630 |
-
eventApis.push(new EventApi(this, def, instance));
|
7631 |
-
}
|
7632 |
-
return eventApis;
|
7633 |
-
};
|
7634 |
-
Calendar.prototype.removeAllEvents = function () {
|
7635 |
-
this.dispatch({ type: 'REMOVE_ALL_EVENTS' });
|
7636 |
-
};
|
7637 |
-
Calendar.prototype.rerenderEvents = function () {
|
7638 |
-
this.dispatch({ type: 'RESET_EVENTS' });
|
7639 |
-
};
|
7640 |
-
// Public Event Sources API
|
7641 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7642 |
-
Calendar.prototype.getEventSources = function () {
|
7643 |
-
var sourceHash = this.state.eventSources;
|
7644 |
-
var sourceApis = [];
|
7645 |
-
for (var internalId in sourceHash) {
|
7646 |
-
sourceApis.push(new EventSourceApi(this, sourceHash[internalId]));
|
7647 |
-
}
|
7648 |
-
return sourceApis;
|
7649 |
-
};
|
7650 |
-
Calendar.prototype.getEventSourceById = function (id) {
|
7651 |
-
var sourceHash = this.state.eventSources;
|
7652 |
-
id = String(id);
|
7653 |
-
for (var sourceId in sourceHash) {
|
7654 |
-
if (sourceHash[sourceId].publicId === id) {
|
7655 |
-
return new EventSourceApi(this, sourceHash[sourceId]);
|
7656 |
-
}
|
7657 |
-
}
|
7658 |
-
return null;
|
7659 |
-
};
|
7660 |
-
Calendar.prototype.addEventSource = function (sourceInput) {
|
7661 |
-
if (sourceInput instanceof EventSourceApi) {
|
7662 |
-
// not already present? don't want to add an old snapshot
|
7663 |
-
if (!this.state.eventSources[sourceInput.internalEventSource.sourceId]) {
|
7664 |
-
this.dispatch({
|
7665 |
-
type: 'ADD_EVENT_SOURCES',
|
7666 |
-
sources: [sourceInput.internalEventSource]
|
7667 |
-
});
|
7668 |
-
}
|
7669 |
-
return sourceInput;
|
7670 |
-
}
|
7671 |
-
var eventSource = parseEventSource(sourceInput, this);
|
7672 |
-
if (eventSource) { // TODO: error otherwise?
|
7673 |
-
this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] });
|
7674 |
-
return new EventSourceApi(this, eventSource);
|
7675 |
-
}
|
7676 |
-
return null;
|
7677 |
-
};
|
7678 |
-
Calendar.prototype.removeAllEventSources = function () {
|
7679 |
-
this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' });
|
7680 |
-
};
|
7681 |
-
Calendar.prototype.refetchEvents = function () {
|
7682 |
-
this.dispatch({ type: 'FETCH_EVENT_SOURCES' });
|
7683 |
-
};
|
7684 |
-
// Scroll
|
7685 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7686 |
-
Calendar.prototype.scrollToTime = function (timeInput) {
|
7687 |
-
var duration = createDuration(timeInput);
|
7688 |
-
if (duration) {
|
7689 |
-
this.component.view.scrollToDuration(duration);
|
7690 |
-
}
|
7691 |
-
};
|
7692 |
-
return Calendar;
|
7693 |
-
}());
|
7694 |
-
EmitterMixin.mixInto(Calendar);
|
7695 |
-
// for memoizers
|
7696 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7697 |
-
function buildDateEnv(locale, timeZone, namedTimeZoneImpl, firstDay, weekNumberCalculation, weekLabel, cmdFormatter) {
|
7698 |
-
return new DateEnv({
|
7699 |
-
calendarSystem: 'gregory',
|
7700 |
-
timeZone: timeZone,
|
7701 |
-
namedTimeZoneImpl: namedTimeZoneImpl,
|
7702 |
-
locale: locale,
|
7703 |
-
weekNumberCalculation: weekNumberCalculation,
|
7704 |
-
firstDay: firstDay,
|
7705 |
-
weekLabel: weekLabel,
|
7706 |
-
cmdFormatter: cmdFormatter
|
7707 |
-
});
|
7708 |
-
}
|
7709 |
-
function buildTheme(calendarOptions) {
|
7710 |
-
var themeClass = this.pluginSystem.hooks.themeClasses[calendarOptions.themeSystem] || StandardTheme;
|
7711 |
-
return new themeClass(calendarOptions);
|
7712 |
-
}
|
7713 |
-
function buildDelayedRerender(wait) {
|
7714 |
-
var func = this.tryRerender.bind(this);
|
7715 |
-
if (wait != null) {
|
7716 |
-
func = debounce(func, wait);
|
7717 |
-
}
|
7718 |
-
return func;
|
7719 |
-
}
|
7720 |
-
function buildEventUiBySource(eventSources) {
|
7721 |
-
return mapHash(eventSources, function (eventSource) {
|
7722 |
-
return eventSource.ui;
|
7723 |
-
});
|
7724 |
-
}
|
7725 |
-
function buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {
|
7726 |
-
var eventUiBases = { '': eventUiSingleBase };
|
7727 |
-
for (var defId in eventDefs) {
|
7728 |
-
var def = eventDefs[defId];
|
7729 |
-
if (def.sourceId && eventUiBySource[def.sourceId]) {
|
7730 |
-
eventUiBases[defId] = eventUiBySource[def.sourceId];
|
7731 |
-
}
|
7732 |
-
}
|
7733 |
-
return eventUiBases;
|
7734 |
-
}
|
7735 |
-
|
7736 |
-
var View = /** @class */ (function (_super) {
|
7737 |
-
__extends(View, _super);
|
7738 |
-
function View(context, viewSpec, dateProfileGenerator, parentEl) {
|
7739 |
-
var _this = _super.call(this, context, createElement('div', { className: 'fc-view fc-' + viewSpec.type + '-view' }), true // isView (HACK)
|
7740 |
-
) || this;
|
7741 |
-
_this.renderDatesMem = memoizeRendering(_this.renderDatesWrap, _this.unrenderDatesWrap);
|
7742 |
-
_this.renderBusinessHoursMem = memoizeRendering(_this.renderBusinessHours, _this.unrenderBusinessHours, [_this.renderDatesMem]);
|
7743 |
-
_this.renderDateSelectionMem = memoizeRendering(_this.renderDateSelectionWrap, _this.unrenderDateSelectionWrap, [_this.renderDatesMem]);
|
7744 |
-
_this.renderEventsMem = memoizeRendering(_this.renderEvents, _this.unrenderEvents, [_this.renderDatesMem]);
|
7745 |
-
_this.renderEventSelectionMem = memoizeRendering(_this.renderEventSelectionWrap, _this.unrenderEventSelectionWrap, [_this.renderEventsMem]);
|
7746 |
-
_this.renderEventDragMem = memoizeRendering(_this.renderEventDragWrap, _this.unrenderEventDragWrap, [_this.renderDatesMem]);
|
7747 |
-
_this.renderEventResizeMem = memoizeRendering(_this.renderEventResizeWrap, _this.unrenderEventResizeWrap, [_this.renderDatesMem]);
|
7748 |
-
_this.viewSpec = viewSpec;
|
7749 |
-
_this.dateProfileGenerator = dateProfileGenerator;
|
7750 |
-
_this.type = viewSpec.type;
|
7751 |
-
_this.eventOrderSpecs = parseFieldSpecs(_this.opt('eventOrder'));
|
7752 |
-
_this.nextDayThreshold = createDuration(_this.opt('nextDayThreshold'));
|
7753 |
-
parentEl.appendChild(_this.el);
|
7754 |
-
_this.initialize();
|
7755 |
-
return _this;
|
7756 |
-
}
|
7757 |
-
View.prototype.initialize = function () {
|
7758 |
-
};
|
7759 |
-
Object.defineProperty(View.prototype, "activeStart", {
|
7760 |
-
// Date Setting/Unsetting
|
7761 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7762 |
-
get: function () {
|
7763 |
-
return this.dateEnv.toDate(this.props.dateProfile.activeRange.start);
|
7764 |
-
},
|
7765 |
-
enumerable: true,
|
7766 |
-
configurable: true
|
7767 |
-
});
|
7768 |
-
Object.defineProperty(View.prototype, "activeEnd", {
|
7769 |
-
get: function () {
|
7770 |
-
return this.dateEnv.toDate(this.props.dateProfile.activeRange.end);
|
7771 |
-
},
|
7772 |
-
enumerable: true,
|
7773 |
-
configurable: true
|
7774 |
-
});
|
7775 |
-
Object.defineProperty(View.prototype, "currentStart", {
|
7776 |
-
get: function () {
|
7777 |
-
return this.dateEnv.toDate(this.props.dateProfile.currentRange.start);
|
7778 |
-
},
|
7779 |
-
enumerable: true,
|
7780 |
-
configurable: true
|
7781 |
-
});
|
7782 |
-
Object.defineProperty(View.prototype, "currentEnd", {
|
7783 |
-
get: function () {
|
7784 |
-
return this.dateEnv.toDate(this.props.dateProfile.currentRange.end);
|
7785 |
-
},
|
7786 |
-
enumerable: true,
|
7787 |
-
configurable: true
|
7788 |
-
});
|
7789 |
-
// General Rendering
|
7790 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7791 |
-
View.prototype.render = function (props) {
|
7792 |
-
this.renderDatesMem(props.dateProfile);
|
7793 |
-
this.renderBusinessHoursMem(props.businessHours);
|
7794 |
-
this.renderDateSelectionMem(props.dateSelection);
|
7795 |
-
this.renderEventsMem(props.eventStore);
|
7796 |
-
this.renderEventSelectionMem(props.eventSelection);
|
7797 |
-
this.renderEventDragMem(props.eventDrag);
|
7798 |
-
this.renderEventResizeMem(props.eventResize);
|
7799 |
-
};
|
7800 |
-
View.prototype.destroy = function () {
|
7801 |
-
_super.prototype.destroy.call(this);
|
7802 |
-
this.renderDatesMem.unrender(); // should unrender everything else
|
7803 |
-
};
|
7804 |
-
// Sizing
|
7805 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7806 |
-
View.prototype.updateSize = function (isResize, viewHeight, isAuto) {
|
7807 |
-
var calendar = this.calendar;
|
7808 |
-
if (isResize || // HACKS...
|
7809 |
-
calendar.isViewUpdated ||
|
7810 |
-
calendar.isDatesUpdated ||
|
7811 |
-
calendar.isEventsUpdated) {
|
7812 |
-
// sort of the catch-all sizing
|
7813 |
-
// anything that might cause dimension changes
|
7814 |
-
this.updateBaseSize(isResize, viewHeight, isAuto);
|
7815 |
-
}
|
7816 |
-
};
|
7817 |
-
View.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) {
|
7818 |
-
};
|
7819 |
-
// Date Rendering
|
7820 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7821 |
-
View.prototype.renderDatesWrap = function (dateProfile) {
|
7822 |
-
this.renderDates(dateProfile);
|
7823 |
-
this.addScroll({
|
7824 |
-
duration: createDuration(this.opt('scrollTime'))
|
7825 |
-
});
|
7826 |
-
this.startNowIndicator(dateProfile); // shouldn't render yet because updateSize will be called soon
|
7827 |
-
};
|
7828 |
-
View.prototype.unrenderDatesWrap = function () {
|
7829 |
-
this.stopNowIndicator();
|
7830 |
-
this.unrenderDates();
|
7831 |
-
};
|
7832 |
-
View.prototype.renderDates = function (dateProfile) { };
|
7833 |
-
View.prototype.unrenderDates = function () { };
|
7834 |
-
// Business Hours
|
7835 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7836 |
-
View.prototype.renderBusinessHours = function (businessHours) { };
|
7837 |
-
View.prototype.unrenderBusinessHours = function () { };
|
7838 |
-
// Date Selection
|
7839 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7840 |
-
View.prototype.renderDateSelectionWrap = function (selection) {
|
7841 |
-
if (selection) {
|
7842 |
-
this.renderDateSelection(selection);
|
7843 |
-
}
|
7844 |
-
};
|
7845 |
-
View.prototype.unrenderDateSelectionWrap = function (selection) {
|
7846 |
-
if (selection) {
|
7847 |
-
this.unrenderDateSelection(selection);
|
7848 |
-
}
|
7849 |
-
};
|
7850 |
-
View.prototype.renderDateSelection = function (selection) { };
|
7851 |
-
View.prototype.unrenderDateSelection = function (selection) { };
|
7852 |
-
// Event Rendering
|
7853 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7854 |
-
View.prototype.renderEvents = function (eventStore) { };
|
7855 |
-
View.prototype.unrenderEvents = function () { };
|
7856 |
-
// util for subclasses
|
7857 |
-
View.prototype.sliceEvents = function (eventStore, allDay) {
|
7858 |
-
var props = this.props;
|
7859 |
-
return sliceEventStore(eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? this.nextDayThreshold : null).fg;
|
7860 |
-
};
|
7861 |
-
View.prototype.computeEventDraggable = function (eventDef, eventUi) {
|
7862 |
-
var transformers = this.calendar.pluginSystem.hooks.isDraggableTransformers;
|
7863 |
-
var val = eventUi.startEditable;
|
7864 |
-
for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {
|
7865 |
-
var transformer = transformers_1[_i];
|
7866 |
-
val = transformer(val, eventDef, eventUi, this);
|
7867 |
-
}
|
7868 |
-
return val;
|
7869 |
-
};
|
7870 |
-
View.prototype.computeEventStartResizable = function (eventDef, eventUi) {
|
7871 |
-
return eventUi.durationEditable && this.opt('eventResizableFromStart');
|
7872 |
-
};
|
7873 |
-
View.prototype.computeEventEndResizable = function (eventDef, eventUi) {
|
7874 |
-
return eventUi.durationEditable;
|
7875 |
-
};
|
7876 |
-
// Event Selection
|
7877 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7878 |
-
View.prototype.renderEventSelectionWrap = function (instanceId) {
|
7879 |
-
if (instanceId) {
|
7880 |
-
this.renderEventSelection(instanceId);
|
7881 |
-
}
|
7882 |
-
};
|
7883 |
-
View.prototype.unrenderEventSelectionWrap = function (instanceId) {
|
7884 |
-
if (instanceId) {
|
7885 |
-
this.unrenderEventSelection(instanceId);
|
7886 |
-
}
|
7887 |
-
};
|
7888 |
-
View.prototype.renderEventSelection = function (instanceId) { };
|
7889 |
-
View.prototype.unrenderEventSelection = function (instanceId) { };
|
7890 |
-
// Event Drag
|
7891 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7892 |
-
View.prototype.renderEventDragWrap = function (state) {
|
7893 |
-
if (state) {
|
7894 |
-
this.renderEventDrag(state);
|
7895 |
-
}
|
7896 |
-
};
|
7897 |
-
View.prototype.unrenderEventDragWrap = function (state) {
|
7898 |
-
if (state) {
|
7899 |
-
this.unrenderEventDrag(state);
|
7900 |
-
}
|
7901 |
-
};
|
7902 |
-
View.prototype.renderEventDrag = function (state) { };
|
7903 |
-
View.prototype.unrenderEventDrag = function (state) { };
|
7904 |
-
// Event Resize
|
7905 |
-
// -----------------------------------------------------------------------------------------------------------------
|
7906 |
-
View.prototype.renderEventResizeWrap = function (state) {
|
7907 |
-
if (state) {
|
7908 |
-
this.renderEventResize(state);
|
7909 |
-
}
|
7910 |
-
};
|
7911 |
-
View.prototype.unrenderEventResizeWrap = function (state) {
|
7912 |
-
if (state) {
|
7913 |
-
this.unrenderEventResize(state);
|
7914 |
-
}
|
7915 |
-
};
|
7916 |
-
View.prototype.renderEventResize = function (state) { };
|
7917 |
-
View.prototype.unrenderEventResize = function (state) { };
|
7918 |
-
/* Now Indicator
|
7919 |
-
------------------------------------------------------------------------------------------------------------------*/
|
7920 |
-
// Immediately render the current time indicator and begins re-rendering it at an interval,
|
7921 |
-
// which is defined by this.getNowIndicatorUnit().
|
7922 |
-
// TODO: somehow do this for the current whole day's background too
|
7923 |
-
View.prototype.startNowIndicator = function (dateProfile) {
|
7924 |
-
var _this = this;
|
7925 |
-
var dateEnv = this.dateEnv;
|
7926 |
-
var unit;
|
7927 |
-
var update;
|
7928 |
-
var delay; // ms wait value
|
7929 |
-
if (this.opt('nowIndicator')) {
|
7930 |
-
unit = this.getNowIndicatorUnit(dateProfile);
|
7931 |
-
if (unit) {
|
7932 |
-
update = this.updateNowIndicator.bind(this);
|
7933 |
-
this.initialNowDate = this.calendar.getNow();
|
7934 |
-
this.initialNowQueriedMs = new Date().valueOf();
|
7935 |
-
// wait until the beginning of the next interval
|
7936 |
-
delay = dateEnv.add(dateEnv.startOf(this.initialNowDate, unit), createDuration(1, unit)).valueOf() - this.initialNowDate.valueOf();
|
7937 |
-
// TODO: maybe always use setTimeout, waiting until start of next unit
|
7938 |
-
this.nowIndicatorTimeoutID = setTimeout(function () {
|
7939 |
-
_this.nowIndicatorTimeoutID = null;
|
7940 |
-
update();
|
7941 |
-
if (unit === 'second') {
|
7942 |
-
delay = 1000; // every second
|
7943 |
-
}
|
7944 |
-
else {
|
7945 |
-
delay = 1000 * 60; // otherwise, every minute
|
7946 |
-
}
|
7947 |
-
_this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval
|
7948 |
-
}, delay);
|
7949 |
-
}
|
7950 |
-
// rendering will be initiated in updateSize
|
7951 |
-
}
|
7952 |
-
};
|
7953 |
-
// rerenders the now indicator, computing the new current time from the amount of time that has passed
|
7954 |
-
// since the initial getNow call.
|
7955 |
-
View.prototype.updateNowIndicator = function () {
|
7956 |
-
if (this.props.dateProfile && // a way to determine if dates were rendered yet
|
7957 |
-
this.initialNowDate // activated before?
|
7958 |
-
) {
|
7959 |
-
this.unrenderNowIndicator(); // won't unrender if unnecessary
|
7960 |
-
this.renderNowIndicator(addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs));
|
7961 |
-
this.isNowIndicatorRendered = true;
|
7962 |
-
}
|
7963 |
-
};
|
7964 |
-
// Immediately unrenders the view's current time indicator and stops any re-rendering timers.
|
7965 |
-
// Won't cause side effects if indicator isn't rendered.
|
7966 |
-
View.prototype.stopNowIndicator = function () {
|
7967 |
-
if (this.isNowIndicatorRendered) {
|
7968 |
-
if (this.nowIndicatorTimeoutID) {
|
7969 |
-
clearTimeout(this.nowIndicatorTimeoutID);
|
7970 |
-
this.nowIndicatorTimeoutID = null;
|
7971 |
-
}
|
7972 |
-
if (this.nowIndicatorIntervalID) {
|
7973 |
-
clearInterval(this.nowIndicatorIntervalID);
|
7974 |
-
this.nowIndicatorIntervalID = null;
|
7975 |
-
}
|
7976 |
-
this.unrenderNowIndicator();
|
7977 |
-
this.isNowIndicatorRendered = false;
|
7978 |
-
}
|
7979 |
-
};
|
7980 |
-
View.prototype.getNowIndicatorUnit = function (dateProfile) {
|
7981 |
-
// subclasses should implement
|
7982 |
-
};
|
7983 |
-
// Renders a current time indicator at the given datetime
|
7984 |
-
View.prototype.renderNowIndicator = function (date) {
|
7985 |
-
// SUBCLASSES MUST PASS TO CHILDREN!
|
7986 |
-
};
|
7987 |
-
// Undoes the rendering actions from renderNowIndicator
|
7988 |
-
View.prototype.unrenderNowIndicator = function () {
|
7989 |
-
// SUBCLASSES MUST PASS TO CHILDREN!
|
7990 |
-
};
|
7991 |
-
/* Scroller
|
7992 |
-
------------------------------------------------------------------------------------------------------------------*/
|
7993 |
-
View.prototype.addScroll = function (scroll) {
|
7994 |
-
var queuedScroll = this.queuedScroll || (this.queuedScroll = {});
|
7995 |
-
__assign(queuedScroll, scroll);
|
7996 |
-
};
|
7997 |
-
View.prototype.popScroll = function (isResize) {
|
7998 |
-
this.applyQueuedScroll(isResize);
|
7999 |
-
this.queuedScroll = null;
|
8000 |
-
};
|
8001 |
-
View.prototype.applyQueuedScroll = function (isResize) {
|
8002 |
-
this.applyScroll(this.queuedScroll || {}, isResize);
|
8003 |
-
};
|
8004 |
-
View.prototype.queryScroll = function () {
|
8005 |
-
var scroll = {};
|
8006 |
-
if (this.props.dateProfile) { // dates rendered yet?
|
8007 |
-
__assign(scroll, this.queryDateScroll());
|
8008 |
-
}
|
8009 |
-
return scroll;
|
8010 |
-
};
|
8011 |
-
View.prototype.applyScroll = function (scroll, isResize) {
|
8012 |
-
var duration = scroll.duration;
|
8013 |
-
if (duration != null) {
|
8014 |
-
delete scroll.duration;
|
8015 |
-
if (this.props.dateProfile) { // dates rendered yet?
|
8016 |
-
__assign(scroll, this.computeDateScroll(duration));
|
8017 |
-
}
|
8018 |
-
}
|
8019 |
-
if (this.props.dateProfile) { // dates rendered yet?
|
8020 |
-
this.applyDateScroll(scroll);
|
8021 |
-
}
|
8022 |
-
};
|
8023 |
-
View.prototype.computeDateScroll = function (duration) {
|
8024 |
-
return {}; // subclasses must implement
|
8025 |
-
};
|
8026 |
-
View.prototype.queryDateScroll = function () {
|
8027 |
-
return {}; // subclasses must implement
|
8028 |
-
};
|
8029 |
-
View.prototype.applyDateScroll = function (scroll) {
|
8030 |
-
// subclasses must implement
|
8031 |
-
};
|
8032 |
-
// for API
|
8033 |
-
View.prototype.scrollToDuration = function (duration) {
|
8034 |
-
this.applyScroll({ duration: duration }, false);
|
8035 |
-
};
|
8036 |
-
return View;
|
8037 |
-
}(DateComponent));
|
8038 |
-
EmitterMixin.mixInto(View);
|
8039 |
-
View.prototype.usesMinMaxTime = false;
|
8040 |
-
View.prototype.dateProfileGeneratorClass = DateProfileGenerator;
|
8041 |
-
|
8042 |
-
var FgEventRenderer = /** @class */ (function () {
|
8043 |
-
function FgEventRenderer(context) {
|
8044 |
-
this.segs = [];
|
8045 |
-
this.isSizeDirty = false;
|
8046 |
-
this.context = context;
|
8047 |
-
}
|
8048 |
-
FgEventRenderer.prototype.renderSegs = function (segs, mirrorInfo) {
|
8049 |
-
this.rangeUpdated(); // called too frequently :(
|
8050 |
-
// render an `.el` on each seg
|
8051 |
-
// returns a subset of the segs. segs that were actually rendered
|
8052 |
-
segs = this.renderSegEls(segs, mirrorInfo);
|
8053 |
-
this.segs = segs;
|
8054 |
-
this.attachSegs(segs, mirrorInfo);
|
8055 |
-
this.isSizeDirty = true;
|
8056 |
-
this.context.view.triggerRenderedSegs(this.segs, Boolean(mirrorInfo));
|
8057 |
-
};
|
8058 |
-
FgEventRenderer.prototype.unrender = function (_segs, mirrorInfo) {
|
8059 |
-
this.context.view.triggerWillRemoveSegs(this.segs, Boolean(mirrorInfo));
|
8060 |
-
this.detachSegs(this.segs);
|
8061 |
-
this.segs = [];
|
8062 |
-
};
|
8063 |
-
// Updates values that rely on options and also relate to range
|
8064 |
-
FgEventRenderer.prototype.rangeUpdated = function () {
|
8065 |
-
var options = this.context.options;
|
8066 |
-
var displayEventTime;
|
8067 |
-
var displayEventEnd;
|
8068 |
-
this.eventTimeFormat = createFormatter(options.eventTimeFormat || this.computeEventTimeFormat(), options.defaultRangeSeparator);
|
8069 |
-
displayEventTime = options.displayEventTime;
|
8070 |
-
if (displayEventTime == null) {
|
8071 |
-
displayEventTime = this.computeDisplayEventTime(); // might be based off of range
|
8072 |
-
}
|
8073 |
-
displayEventEnd = options.displayEventEnd;
|
8074 |
-
if (displayEventEnd == null) {
|
8075 |
-
displayEventEnd = this.computeDisplayEventEnd(); // might be based off of range
|
8076 |
-
}
|
8077 |
-
this.displayEventTime = displayEventTime;
|
8078 |
-
this.displayEventEnd = displayEventEnd;
|
8079 |
-
};
|
8080 |
-
// Renders and assigns an `el` property for each foreground event segment.
|
8081 |
-
// Only returns segments that successfully rendered.
|
8082 |
-
FgEventRenderer.prototype.renderSegEls = function (segs, mirrorInfo) {
|
8083 |
-
var html = '';
|
8084 |
-
var i;
|
8085 |
-
if (segs.length) { // don't build an empty html string
|
8086 |
-
// build a large concatenation of event segment HTML
|
8087 |
-
for (i = 0; i < segs.length; i++) {
|
8088 |
-
html += this.renderSegHtml(segs[i], mirrorInfo);
|
8089 |
-
}
|
8090 |
-
// Grab individual elements from the combined HTML string. Use each as the default rendering.
|
8091 |
-
// Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false.
|
8092 |
-
htmlToElements(html).forEach(function (el, i) {
|
8093 |
-
var seg = segs[i];
|
8094 |
-
if (el) {
|
8095 |
-
seg.el = el;
|
8096 |
-
}
|
8097 |
-
});
|
8098 |
-
segs = filterSegsViaEls(this.context.view, segs, Boolean(mirrorInfo));
|
8099 |
-
}
|
8100 |
-
return segs;
|
8101 |
-
};
|
8102 |
-
// Generic utility for generating the HTML classNames for an event segment's element
|
8103 |
-
FgEventRenderer.prototype.getSegClasses = function (seg, isDraggable, isResizable, mirrorInfo) {
|
8104 |
-
var classes = [
|
8105 |
-
'fc-event',
|
8106 |
-
seg.isStart ? 'fc-start' : 'fc-not-start',
|
8107 |
-
seg.isEnd ? 'fc-end' : 'fc-not-end'
|
8108 |
-
].concat(seg.eventRange.ui.classNames);
|
8109 |
-
if (isDraggable) {
|
8110 |
-
classes.push('fc-draggable');
|
8111 |
-
}
|
8112 |
-
if (isResizable) {
|
8113 |
-
classes.push('fc-resizable');
|
8114 |
-
}
|
8115 |
-
if (mirrorInfo) {
|
8116 |
-
classes.push('fc-mirror');
|
8117 |
-
if (mirrorInfo.isDragging) {
|
8118 |
-
classes.push('fc-dragging');
|
8119 |
-
}
|
8120 |
-
if (mirrorInfo.isResizing) {
|
8121 |
-
classes.push('fc-resizing');
|
8122 |
-
}
|
8123 |
-
}
|
8124 |
-
return classes;
|
8125 |
-
};
|
8126 |
-
// Compute the text that should be displayed on an event's element.
|
8127 |
-
// `range` can be the Event object itself, or something range-like, with at least a `start`.
|
8128 |
-
// If event times are disabled, or the event has no time, will return a blank string.
|
8129 |
-
// If not specified, formatter will default to the eventTimeFormat setting,
|
8130 |
-
// and displayEnd will default to the displayEventEnd setting.
|
8131 |
-
FgEventRenderer.prototype.getTimeText = function (eventRange, formatter, displayEnd) {
|
8132 |
-
var def = eventRange.def, instance = eventRange.instance;
|
8133 |
-
return this._getTimeText(instance.range.start, def.hasEnd ? instance.range.end : null, def.allDay, formatter, displayEnd, instance.forcedStartTzo, instance.forcedEndTzo);
|
8134 |
-
};
|
8135 |
-
FgEventRenderer.prototype._getTimeText = function (start, end, allDay, formatter, displayEnd, forcedStartTzo, forcedEndTzo) {
|
8136 |
-
var dateEnv = this.context.dateEnv;
|
8137 |
-
if (formatter == null) {
|
8138 |
-
formatter = this.eventTimeFormat;
|
8139 |
-
}
|
8140 |
-
if (displayEnd == null) {
|
8141 |
-
displayEnd = this.displayEventEnd;
|
8142 |
-
}
|
8143 |
-
if (this.displayEventTime && !allDay) {
|
8144 |
-
if (displayEnd && end) {
|
8145 |
-
return dateEnv.formatRange(start, end, formatter, {
|
8146 |
-
forcedStartTzo: forcedStartTzo,
|
8147 |
-
forcedEndTzo: forcedEndTzo
|
8148 |
-
});
|
8149 |
-
}
|
8150 |
-
else {
|
8151 |
-
return dateEnv.format(start, formatter, {
|
8152 |
-
forcedTzo: forcedStartTzo
|
8153 |
-
});
|
8154 |
-
}
|
8155 |
-
}
|
8156 |
-
return '';
|
8157 |
-
};
|
8158 |
-
FgEventRenderer.prototype.computeEventTimeFormat = function () {
|
8159 |
-
return {
|
8160 |
-
hour: 'numeric',
|
8161 |
-
minute: '2-digit',
|
8162 |
-
omitZeroMinute: true
|
8163 |
-
};
|
8164 |
-
};
|
8165 |
-
FgEventRenderer.prototype.computeDisplayEventTime = function () {
|
8166 |
-
return true;
|
8167 |
-
};
|
8168 |
-
FgEventRenderer.prototype.computeDisplayEventEnd = function () {
|
8169 |
-
return true;
|
8170 |
-
};
|
8171 |
-
// Utility for generating event skin-related CSS properties
|
8172 |
-
FgEventRenderer.prototype.getSkinCss = function (ui) {
|
8173 |
-
return {
|
8174 |
-
'background-color': ui.backgroundColor,
|
8175 |
-
'border-color': ui.borderColor,
|
8176 |
-
color: ui.textColor
|
8177 |
-
};
|
8178 |
-
};
|
8179 |
-
FgEventRenderer.prototype.sortEventSegs = function (segs) {
|
8180 |
-
var specs = this.context.view.eventOrderSpecs;
|
8181 |
-
var objs = segs.map(buildSegCompareObj);
|
8182 |
-
objs.sort(function (obj0, obj1) {
|
8183 |
-
return compareByFieldSpecs(obj0, obj1, specs);
|
8184 |
-
});
|
8185 |
-
return objs.map(function (c) {
|
8186 |
-
return c._seg;
|
8187 |
-
});
|
8188 |
-
};
|
8189 |
-
FgEventRenderer.prototype.computeSizes = function (force) {
|
8190 |
-
if (force || this.isSizeDirty) {
|
8191 |
-
this.computeSegSizes(this.segs);
|
8192 |
-
}
|
8193 |
-
};
|
8194 |
-
FgEventRenderer.prototype.assignSizes = function (force) {
|
8195 |
-
if (force || this.isSizeDirty) {
|
8196 |
-
this.assignSegSizes(this.segs);
|
8197 |
-
this.isSizeDirty = false;
|
8198 |
-
}
|
8199 |
-
};
|
8200 |
-
FgEventRenderer.prototype.computeSegSizes = function (segs) {
|
8201 |
-
};
|
8202 |
-
FgEventRenderer.prototype.assignSegSizes = function (segs) {
|
8203 |
-
};
|
8204 |
-
// Manipulation on rendered segs
|
8205 |
-
FgEventRenderer.prototype.hideByHash = function (hash) {
|
8206 |
-
if (hash) {
|
8207 |
-
for (var _i = 0, _a = this.segs; _i < _a.length; _i++) {
|
8208 |
-
var seg = _a[_i];
|
8209 |
-
if (hash[seg.eventRange.instance.instanceId]) {
|
8210 |
-
seg.el.style.visibility = 'hidden';
|
8211 |
-
}
|
8212 |
-
}
|
8213 |
-
}
|
8214 |
-
};
|
8215 |
-
FgEventRenderer.prototype.showByHash = function (hash) {
|
8216 |
-
if (hash) {
|
8217 |
-
for (var _i = 0, _a = this.segs; _i < _a.length; _i++) {
|
8218 |
-
var seg = _a[_i];
|
8219 |
-
if (hash[seg.eventRange.instance.instanceId]) {
|
8220 |
-
seg.el.style.visibility = '';
|
8221 |
-
}
|
8222 |
-
}
|
8223 |
-
}
|
8224 |
-
};
|
8225 |
-
FgEventRenderer.prototype.selectByInstanceId = function (instanceId) {
|
8226 |
-
if (instanceId) {
|
8227 |
-
for (var _i = 0, _a = this.segs; _i < _a.length; _i++) {
|
8228 |
-
var seg = _a[_i];
|
8229 |
-
var eventInstance = seg.eventRange.instance;
|
8230 |
-
if (eventInstance && eventInstance.instanceId === instanceId &&
|
8231 |
-
seg.el // necessary?
|
8232 |
-
) {
|
8233 |
-
seg.el.classList.add('fc-selected');
|
8234 |
-
}
|
8235 |
-
}
|
8236 |
-
}
|
8237 |
-
};
|
8238 |
-
FgEventRenderer.prototype.unselectByInstanceId = function (instanceId) {
|
8239 |
-
if (instanceId) {
|
8240 |
-
for (var _i = 0, _a = this.segs; _i < _a.length; _i++) {
|
8241 |
-
var seg = _a[_i];
|
8242 |
-
if (seg.el) { // necessary?
|
8243 |
-
seg.el.classList.remove('fc-selected');
|
8244 |
-
}
|
8245 |
-
}
|
8246 |
-
}
|
8247 |
-
};
|
8248 |
-
return FgEventRenderer;
|
8249 |
-
}());
|
8250 |
-
// returns a object with all primitive props that can be compared
|
8251 |
-
function buildSegCompareObj(seg) {
|
8252 |
-
var eventDef = seg.eventRange.def;
|
8253 |
-
var range = seg.eventRange.instance.range;
|
8254 |
-
var start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events
|
8255 |
-
var end = range.end ? range.end.valueOf() : 0; // "
|
8256 |
-
return __assign({}, eventDef.extendedProps, eventDef, { id: eventDef.publicId, start: start,
|
8257 |
-
end: end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg // for later retrieval
|
8258 |
-
});
|
8259 |
-
}
|
8260 |
-
|
8261 |
-
var FillRenderer = /** @class */ (function () {
|
8262 |
-
function FillRenderer(context) {
|
8263 |
-
this.fillSegTag = 'div';
|
8264 |
-
this.dirtySizeFlags = {};
|
8265 |
-
this.context = context;
|
8266 |
-
this.containerElsByType = {};
|
8267 |
-
this.segsByType = {};
|
8268 |
-
}
|
8269 |
-
FillRenderer.prototype.getSegsByType = function (type) {
|
8270 |
-
return this.segsByType[type] || [];
|
8271 |
-
};
|
8272 |
-
FillRenderer.prototype.renderSegs = function (type, segs) {
|
8273 |
-
var _a;
|
8274 |
-
var renderedSegs = this.renderSegEls(type, segs); // assignes `.el` to each seg. returns successfully rendered segs
|
8275 |
-
var containerEls = this.attachSegs(type, renderedSegs);
|
8276 |
-
if (containerEls) {
|
8277 |
-
(_a = (this.containerElsByType[type] || (this.containerElsByType[type] = []))).push.apply(_a, containerEls);
|
8278 |
-
}
|
8279 |
-
this.segsByType[type] = renderedSegs;
|
8280 |
-
if (type === 'bgEvent') {
|
8281 |
-
this.context.view.triggerRenderedSegs(renderedSegs, false); // isMirror=false
|
8282 |
-
}
|
8283 |
-
this.dirtySizeFlags[type] = true;
|
8284 |
-
};
|
8285 |
-
// Unrenders a specific type of fill that is currently rendered on the grid
|
8286 |
-
FillRenderer.prototype.unrender = function (type) {
|
8287 |
-
var segs = this.segsByType[type];
|
8288 |
-
if (segs) {
|
8289 |
-
if (type === 'bgEvent') {
|
8290 |
-
this.context.view.triggerWillRemoveSegs(segs, false); // isMirror=false
|
8291 |
-
}
|
8292 |
-
this.detachSegs(type, segs);
|
8293 |
-
}
|
8294 |
-
};
|
8295 |
-
// Renders and assigns an `el` property for each fill segment. Generic enough to work with different types.
|
8296 |
-
// Only returns segments that successfully rendered.
|
8297 |
-
FillRenderer.prototype.renderSegEls = function (type, segs) {
|
8298 |
-
var _this = this;
|
8299 |
-
var html = '';
|
8300 |
-
var i;
|
8301 |
-
if (segs.length) {
|
8302 |
-
// build a large concatenation of segment HTML
|
8303 |
-
for (i = 0; i < segs.length; i++) {
|
8304 |
-
html += this.renderSegHtml(type, segs[i]);
|
8305 |
-
}
|
8306 |
-
// Grab individual elements from the combined HTML string. Use each as the default rendering.
|
8307 |
-
// Then, compute the 'el' for each segment.
|
8308 |
-
htmlToElements(html).forEach(function (el, i) {
|
8309 |
-
var seg = segs[i];
|
8310 |
-
if (el) {
|
8311 |
-
seg.el = el;
|
8312 |
-
}
|
8313 |
-
});
|
8314 |
-
if (type === 'bgEvent') {
|
8315 |
-
segs = filterSegsViaEls(this.context.view, segs, false // isMirror. background events can never be mirror elements
|
8316 |
-
);
|
8317 |
-
}
|
8318 |
-
// correct element type? (would be bad if a non-TD were inserted into a table for example)
|
8319 |
-
segs = segs.filter(function (seg) {
|
8320 |
-
return elementMatches(seg.el, _this.fillSegTag);
|
8321 |
-
});
|
8322 |
-
}
|
8323 |
-
return segs;
|
8324 |
-
};
|
8325 |
-
// Builds the HTML needed for one fill segment. Generic enough to work with different types.
|
8326 |
-
FillRenderer.prototype.renderSegHtml = function (type, seg) {
|
8327 |
-
var css = null;
|
8328 |
-
var classNames = [];
|
8329 |
-
if (type !== 'highlight' && type !== 'businessHours') {
|
8330 |
-
css = {
|
8331 |
-
'background-color': seg.eventRange.ui.backgroundColor
|
8332 |
-
};
|
8333 |
-
}
|
8334 |
-
if (type !== 'highlight') {
|
8335 |
-
classNames = classNames.concat(seg.eventRange.ui.classNames);
|
8336 |
-
}
|
8337 |
-
if (type === 'businessHours') {
|
8338 |
-
classNames.push('fc-bgevent');
|
8339 |
-
}
|
8340 |
-
else {
|
8341 |
-
classNames.push('fc-' + type.toLowerCase());
|
8342 |
-
}
|
8343 |
-
return '<' + this.fillSegTag +
|
8344 |
-
(classNames.length ? ' class="' + classNames.join(' ') + '"' : '') +
|
8345 |
-
(css ? ' style="' + cssToStr(css) + '"' : '') +
|
8346 |
-
'></' + this.fillSegTag + '>';
|
8347 |
-
};
|
8348 |
-
FillRenderer.prototype.detachSegs = function (type, segs) {
|
8349 |
-
var containerEls = this.containerElsByType[type];
|
8350 |
-
if (containerEls) {
|
8351 |
-
containerEls.forEach(removeElement);
|
8352 |
-
delete this.containerElsByType[type];
|
8353 |
-
}
|
8354 |
-
};
|
8355 |
-
FillRenderer.prototype.computeSizes = function (force) {
|
8356 |
-
for (var type in this.segsByType) {
|
8357 |
-
if (force || this.dirtySizeFlags[type]) {
|
8358 |
-
this.computeSegSizes(this.segsByType[type]);
|
8359 |
-
}
|
8360 |
-
}
|
8361 |
-
};
|
8362 |
-
FillRenderer.prototype.assignSizes = function (force) {
|
8363 |
-
for (var type in this.segsByType) {
|
8364 |
-
if (force || this.dirtySizeFlags[type]) {
|
8365 |
-
this.assignSegSizes(this.segsByType[type]);
|
8366 |
-
}
|
8367 |
-
}
|
8368 |
-
this.dirtySizeFlags = {};
|
8369 |
-
};
|
8370 |
-
FillRenderer.prototype.computeSegSizes = function (segs) {
|
8371 |
-
};
|
8372 |
-
FillRenderer.prototype.assignSegSizes = function (segs) {
|
8373 |
-
};
|
8374 |
-
return FillRenderer;
|
8375 |
-
}());
|
8376 |
-
|
8377 |
-
var NamedTimeZoneImpl = /** @class */ (function () {
|
8378 |
-
function NamedTimeZoneImpl(timeZoneName) {
|
8379 |
-
this.timeZoneName = timeZoneName;
|
8380 |
-
}
|
8381 |
-
return NamedTimeZoneImpl;
|
8382 |
-
}());
|
8383 |
-
|
8384 |
-
/*
|
8385 |
-
An abstraction for a dragging interaction originating on an event.
|
8386 |
-
Does higher-level things than PointerDragger, such as possibly:
|
8387 |
-
- a "mirror" that moves with the pointer
|
8388 |
-
- a minimum number of pixels or other criteria for a true drag to begin
|
8389 |
-
|
8390 |
-
subclasses must emit:
|
8391 |
-
- pointerdown
|
8392 |
-
- dragstart
|
8393 |
-
- dragmove
|
8394 |
-
- pointerup
|
8395 |
-
- dragend
|
8396 |
-
*/
|
8397 |
-
var ElementDragging = /** @class */ (function () {
|
8398 |
-
function ElementDragging(el) {
|
8399 |
-
this.emitter = new EmitterMixin();
|
8400 |
-
}
|
8401 |
-
ElementDragging.prototype.destroy = function () {
|
8402 |
-
};
|
8403 |
-
ElementDragging.prototype.setMirrorIsVisible = function (bool) {
|
8404 |
-
// optional if subclass doesn't want to support a mirror
|
8405 |
-
};
|
8406 |
-
ElementDragging.prototype.setMirrorNeedsRevert = function (bool) {
|
8407 |
-
// optional if subclass doesn't want to support a mirror
|
8408 |
-
};
|
8409 |
-
ElementDragging.prototype.setAutoScrollEnabled = function (bool) {
|
8410 |
-
// optional
|
8411 |
-
};
|
8412 |
-
return ElementDragging;
|
8413 |
-
}());
|
8414 |
-
|
8415 |
-
function formatDate(dateInput, settings) {
|
8416 |
-
if (settings === void 0) { settings = {}; }
|
8417 |
-
var dateEnv = buildDateEnv$1(settings);
|
8418 |
-
var formatter = createFormatter(settings);
|
8419 |
-
var dateMeta = dateEnv.createMarkerMeta(dateInput);
|
8420 |
-
if (!dateMeta) { // TODO: warning?
|
8421 |
-
return '';
|
8422 |
-
}
|
8423 |
-
return dateEnv.format(dateMeta.marker, formatter, {
|
8424 |
-
forcedTzo: dateMeta.forcedTzo
|
8425 |
-
});
|
8426 |
-
}
|
8427 |
-
function formatRange(startInput, endInput, settings // mixture of env and formatter settings
|
8428 |
-
) {
|
8429 |
-
var dateEnv = buildDateEnv$1(typeof settings === 'object' && settings ? settings : {}); // pass in if non-null object
|
8430 |
-
var formatter = createFormatter(settings, globalDefaults.defaultRangeSeparator);
|
8431 |
-
var startMeta = dateEnv.createMarkerMeta(startInput);
|
8432 |
-
var endMeta = dateEnv.createMarkerMeta(endInput);
|
8433 |
-
if (!startMeta || !endMeta) { // TODO: warning?
|
8434 |
-
return '';
|
8435 |
-
}
|
8436 |
-
return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {
|
8437 |
-
forcedStartTzo: startMeta.forcedTzo,
|
8438 |
-
forcedEndTzo: endMeta.forcedTzo,
|
8439 |
-
isEndExclusive: settings.isEndExclusive
|
8440 |
-
});
|
8441 |
-
}
|
8442 |
-
// TODO: more DRY and optimized
|
8443 |
-
function buildDateEnv$1(settings) {
|
8444 |
-
var locale = buildLocale(settings.locale || 'en', parseRawLocales([]).map); // TODO: don't hardcode 'en' everywhere
|
8445 |
-
// ensure required settings
|
8446 |
-
settings = __assign({ timeZone: globalDefaults.timeZone, calendarSystem: 'gregory' }, settings, { locale: locale });
|
8447 |
-
return new DateEnv(settings);
|
8448 |
-
}
|
8449 |
-
|
8450 |
-
var DRAG_META_PROPS = {
|
8451 |
-
startTime: createDuration,
|
8452 |
-
duration: createDuration,
|
8453 |
-
create: Boolean,
|
8454 |
-
sourceId: String
|
8455 |
-
};
|
8456 |
-
var DRAG_META_DEFAULTS = {
|
8457 |
-
create: true
|
8458 |
-
};
|
8459 |
-
function parseDragMeta(raw) {
|
8460 |
-
var leftoverProps = {};
|
8461 |
-
var refined = refineProps(raw, DRAG_META_PROPS, DRAG_META_DEFAULTS, leftoverProps);
|
8462 |
-
refined.leftoverProps = leftoverProps;
|
8463 |
-
return refined;
|
8464 |
-
}
|
8465 |
-
|
8466 |
-
// Computes a default column header formatting string if `colFormat` is not explicitly defined
|
8467 |
-
function computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) {
|
8468 |
-
// if more than one week row, or if there are a lot of columns with not much space,
|
8469 |
-
// put just the day numbers will be in each cell
|
8470 |
-
if (!datesRepDistinctDays || dayCnt > 10) {
|
8471 |
-
return { weekday: 'short' }; // "Sat"
|
8472 |
-
}
|
8473 |
-
else if (dayCnt > 1) {
|
8474 |
-
return { weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }; // "Sat 11/12"
|
8475 |
-
}
|
8476 |
-
else {
|
8477 |
-
return { weekday: 'long' }; // "Saturday"
|
8478 |
-
}
|
8479 |
-
}
|
8480 |
-
function renderDateCell(dateMarker, dateProfile, datesRepDistinctDays, colCnt, colHeadFormat, context, colspan, otherAttrs) {
|
8481 |
-
var view = context.view, dateEnv = context.dateEnv, theme = context.theme, options = context.options;
|
8482 |
-
var isDateValid = rangeContainsMarker(dateProfile.activeRange, dateMarker); // TODO: called too frequently. cache somehow.
|
8483 |
-
var classNames = [
|
8484 |
-
'fc-day-header',
|
8485 |
-
theme.getClass('widgetHeader')
|
8486 |
-
];
|
8487 |
-
var innerHtml;
|
8488 |
-
if (typeof options.columnHeaderHtml === 'function') {
|
8489 |
-
innerHtml = options.columnHeaderHtml(dateEnv.toDate(dateMarker));
|
8490 |
-
}
|
8491 |
-
else if (typeof options.columnHeaderText === 'function') {
|
8492 |
-
innerHtml = htmlEscape(options.columnHeaderText(dateEnv.toDate(dateMarker)));
|
8493 |
-
}
|
8494 |
-
else {
|
8495 |
-
innerHtml = htmlEscape(dateEnv.format(dateMarker, colHeadFormat));
|
8496 |
-
}
|
8497 |
-
// if only one row of days, the classNames on the header can represent the specific days beneath
|
8498 |
-
if (datesRepDistinctDays) {
|
8499 |
-
classNames = classNames.concat(
|
8500 |
-
// includes the day-of-week class
|
8501 |
-
// noThemeHighlight=true (don't highlight the header)
|
8502 |
-
getDayClasses(dateMarker, dateProfile, context, true));
|
8503 |
-
}
|
8504 |
-
else {
|
8505 |
-
classNames.push('fc-' + DAY_IDS[dateMarker.getUTCDay()]); // only add the day-of-week class
|
8506 |
-
}
|
8507 |
-
return '' +
|
8508 |
-
'<th class="' + classNames.join(' ') + '"' +
|
8509 |
-
((isDateValid && datesRepDistinctDays) ?
|
8510 |
-
' data-date="' + dateEnv.formatIso(dateMarker, { omitTime: true }) + '"' :
|
8511 |
-
'') +
|
8512 |
-
(colspan > 1 ?
|
8513 |
-
' colspan="' + colspan + '"' :
|
8514 |
-
'') +
|
8515 |
-
(otherAttrs ?
|
8516 |
-
' ' + otherAttrs :
|
8517 |
-
'') +
|
8518 |
-
'>' +
|
8519 |
-
(isDateValid ?
|
8520 |
-
// don't make a link if the heading could represent multiple days, or if there's only one day (forceOff)
|
8521 |
-
buildGotoAnchorHtml(view, { date: dateMarker, forceOff: !datesRepDistinctDays || colCnt === 1 }, innerHtml) :
|
8522 |
-
// if not valid, display text, but no link
|
8523 |
-
innerHtml) +
|
8524 |
-
'</th>';
|
8525 |
-
}
|
8526 |
-
|
8527 |
-
var DayHeader = /** @class */ (function (_super) {
|
8528 |
-
__extends(DayHeader, _super);
|
8529 |
-
function DayHeader(context, parentEl) {
|
8530 |
-
var _this = _super.call(this, context) || this;
|
8531 |
-
parentEl.innerHTML = ''; // because might be nbsp
|
8532 |
-
parentEl.appendChild(_this.el = htmlToElement('<div class="fc-row ' + _this.theme.getClass('headerRow') + '">' +
|
8533 |
-
'<table class="' + _this.theme.getClass('tableGrid') + '">' +
|
8534 |
-
'<thead></thead>' +
|
8535 |
-
'</table>' +
|
8536 |
-
'</div>'));
|
8537 |
-
_this.thead = _this.el.querySelector('thead');
|
8538 |
-
return _this;
|
8539 |
-
}
|
8540 |
-
DayHeader.prototype.destroy = function () {
|
8541 |
-
removeElement(this.el);
|
8542 |
-
};
|
8543 |
-
DayHeader.prototype.render = function (props) {
|
8544 |
-
var dates = props.dates, datesRepDistinctDays = props.datesRepDistinctDays;
|
8545 |
-
var parts = [];
|
8546 |
-
if (props.renderIntroHtml) {
|
8547 |
-
parts.push(props.renderIntroHtml());
|
8548 |
-
}
|
8549 |
-
var colHeadFormat = createFormatter(this.opt('columnHeaderFormat') ||
|
8550 |
-
computeFallbackHeaderFormat(datesRepDistinctDays, dates.length));
|
8551 |
-
for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) {
|
8552 |
-
var date = dates_1[_i];
|
8553 |
-
parts.push(renderDateCell(date, props.dateProfile, datesRepDistinctDays, dates.length, colHeadFormat, this.context));
|
8554 |
-
}
|
8555 |
-
if (this.isRtl) {
|
8556 |
-
parts.reverse();
|
8557 |
-
}
|
8558 |
-
this.thead.innerHTML = '<tr>' + parts.join('') + '</tr>';
|
8559 |
-
};
|
8560 |
-
return DayHeader;
|
8561 |
-
}(Component));
|
8562 |
-
|
8563 |
-
var DaySeries = /** @class */ (function () {
|
8564 |
-
function DaySeries(range, dateProfileGenerator) {
|
8565 |
-
var date = range.start;
|
8566 |
-
var end = range.end;
|
8567 |
-
var indices = [];
|
8568 |
-
var dates = [];
|
8569 |
-
var dayIndex = -1;
|
8570 |
-
while (date < end) { // loop each day from start to end
|
8571 |
-
if (dateProfileGenerator.isHiddenDay(date)) {
|
8572 |
-
indices.push(dayIndex + 0.5); // mark that it's between indices
|
8573 |
-
}
|
8574 |
-
else {
|
8575 |
-
dayIndex++;
|
8576 |
-
indices.push(dayIndex);
|
8577 |
-
dates.push(date);
|
8578 |
-
}
|
8579 |
-
date = addDays(date, 1);
|
8580 |
-
}
|
8581 |
-
this.dates = dates;
|
8582 |
-
this.indices = indices;
|
8583 |
-
this.cnt = dates.length;
|
8584 |
-
}
|
8585 |
-
DaySeries.prototype.sliceRange = function (range) {
|
8586 |
-
var firstIndex = this.getDateDayIndex(range.start); // inclusive first index
|
8587 |
-
var lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index
|
8588 |
-
var clippedFirstIndex = Math.max(0, firstIndex);
|
8589 |
-
var clippedLastIndex = Math.min(this.cnt - 1, lastIndex);
|
8590 |
-
// deal with in-between indices
|
8591 |
-
clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell
|
8592 |
-
clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell
|
8593 |
-
if (clippedFirstIndex <= clippedLastIndex) {
|
8594 |
-
return {
|
8595 |
-
firstIndex: clippedFirstIndex,
|
8596 |
-
lastIndex: clippedLastIndex,
|
8597 |
-
isStart: firstIndex === clippedFirstIndex,
|
8598 |
-
isEnd: lastIndex === clippedLastIndex
|
8599 |
-
};
|
8600 |
-
}
|
8601 |
-
else {
|
8602 |
-
return null;
|
8603 |
-
}
|
8604 |
-
};
|
8605 |
-
// Given a date, returns its chronolocial cell-index from the first cell of the grid.
|
8606 |
-
// If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.
|
8607 |
-
// If before the first offset, returns a negative number.
|
8608 |
-
// If after the last offset, returns an offset past the last cell offset.
|
8609 |
-
// Only works for *start* dates of cells. Will not work for exclusive end dates for cells.
|
8610 |
-
DaySeries.prototype.getDateDayIndex = function (date) {
|
8611 |
-
var indices = this.indices;
|
8612 |
-
var dayOffset = Math.floor(diffDays(this.dates[0], date));
|
8613 |
-
if (dayOffset < 0) {
|
8614 |
-
return indices[0] - 1;
|
8615 |
-
}
|
8616 |
-
else if (dayOffset >= indices.length) {
|
8617 |
-
return indices[indices.length - 1] + 1;
|
8618 |
-
}
|
8619 |
-
else {
|
8620 |
-
return indices[dayOffset];
|
8621 |
-
}
|
8622 |
-
};
|
8623 |
-
return DaySeries;
|
8624 |
-
}());
|
8625 |
-
|
8626 |
-
var DayTable = /** @class */ (function () {
|
8627 |
-
function DayTable(daySeries, breakOnWeeks) {
|
8628 |
-
var dates = daySeries.dates;
|
8629 |
-
var daysPerRow;
|
8630 |
-
var firstDay;
|
8631 |
-
var rowCnt;
|
8632 |
-
if (breakOnWeeks) {
|
8633 |
-
// count columns until the day-of-week repeats
|
8634 |
-
firstDay = dates[0].getUTCDay();
|
8635 |
-
for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow++) {
|
8636 |
-
if (dates[daysPerRow].getUTCDay() === firstDay) {
|
8637 |
-
break;
|
8638 |
-
}
|
8639 |
-
}
|
8640 |
-
rowCnt = Math.ceil(dates.length / daysPerRow);
|
8641 |
-
}
|
8642 |
-
else {
|
8643 |
-
rowCnt = 1;
|
8644 |
-
daysPerRow = dates.length;
|
8645 |
-
}
|
8646 |
-
this.rowCnt = rowCnt;
|
8647 |
-
this.colCnt = daysPerRow;
|
8648 |
-
this.daySeries = daySeries;
|
8649 |
-
this.cells = this.buildCells();
|
8650 |
-
this.headerDates = this.buildHeaderDates();
|
8651 |
-
}
|
8652 |
-
DayTable.prototype.buildCells = function () {
|
8653 |
-
var rows = [];
|
8654 |
-
for (var row = 0; row < this.rowCnt; row++) {
|
8655 |
-
var cells = [];
|
8656 |
-
for (var col = 0; col < this.colCnt; col++) {
|
8657 |
-
cells.push(this.buildCell(row, col));
|
8658 |
-
}
|
8659 |
-
rows.push(cells);
|
8660 |
-
}
|
8661 |
-
return rows;
|
8662 |
-
};
|
8663 |
-
DayTable.prototype.buildCell = function (row, col) {
|
8664 |
-
return {
|
8665 |
-
date: this.daySeries.dates[row * this.colCnt + col]
|
8666 |
-
};
|
8667 |
-
};
|
8668 |
-
DayTable.prototype.buildHeaderDates = function () {
|
8669 |
-
var dates = [];
|
8670 |
-
for (var col = 0; col < this.colCnt; col++) {
|
8671 |
-
dates.push(this.cells[0][col].date);
|
8672 |
-
}
|
8673 |
-
return dates;
|
8674 |
-
};
|
8675 |
-
DayTable.prototype.sliceRange = function (range) {
|
8676 |
-
var colCnt = this.colCnt;
|
8677 |
-
var seriesSeg = this.daySeries.sliceRange(range);
|
8678 |
-
var segs = [];
|
8679 |
-
if (seriesSeg) {
|
8680 |
-
var firstIndex = seriesSeg.firstIndex, lastIndex = seriesSeg.lastIndex;
|
8681 |
-
var index = firstIndex;
|
8682 |
-
while (index <= lastIndex) {
|
8683 |
-
var row = Math.floor(index / colCnt);
|
8684 |
-
var nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1);
|
8685 |
-
segs.push({
|
8686 |
-
row: row,
|
8687 |
-
firstCol: index % colCnt,
|
8688 |
-
lastCol: (nextIndex - 1) % colCnt,
|
8689 |
-
isStart: seriesSeg.isStart && index === firstIndex,
|
8690 |
-
isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex
|
8691 |
-
});
|
8692 |
-
index = nextIndex;
|
8693 |
-
}
|
8694 |
-
}
|
8695 |
-
return segs;
|
8696 |
-
};
|
8697 |
-
return DayTable;
|
8698 |
-
}());
|
8699 |
-
|
8700 |
-
var Slicer = /** @class */ (function () {
|
8701 |
-
function Slicer() {
|
8702 |
-
this.sliceBusinessHours = memoize(this._sliceBusinessHours);
|
8703 |
-
this.sliceDateSelection = memoize(this._sliceDateSpan);
|
8704 |
-
this.sliceEventStore = memoize(this._sliceEventStore);
|
8705 |
-
this.sliceEventDrag = memoize(this._sliceInteraction);
|
8706 |
-
this.sliceEventResize = memoize(this._sliceInteraction);
|
8707 |
-
}
|
8708 |
-
Slicer.prototype.sliceProps = function (props, dateProfile, nextDayThreshold, component) {
|
8709 |
-
var extraArgs = [];
|
8710 |
-
for (var _i = 4; _i < arguments.length; _i++) {
|
8711 |
-
extraArgs[_i - 4] = arguments[_i];
|
8712 |
-
}
|
8713 |
-
var eventUiBases = props.eventUiBases;
|
8714 |
-
var eventSegs = this.sliceEventStore.apply(this, [props.eventStore, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs));
|
8715 |
-
return {
|
8716 |
-
dateSelectionSegs: this.sliceDateSelection.apply(this, [props.dateSelection, eventUiBases, component].concat(extraArgs)),
|
8717 |
-
businessHourSegs: this.sliceBusinessHours.apply(this, [props.businessHours, dateProfile, nextDayThreshold, component].concat(extraArgs)),
|
8718 |
-
fgEventSegs: eventSegs.fg,
|
8719 |
-
bgEventSegs: eventSegs.bg,
|
8720 |
-
eventDrag: this.sliceEventDrag.apply(this, [props.eventDrag, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs)),
|
8721 |
-
eventResize: this.sliceEventResize.apply(this, [props.eventResize, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs)),
|
8722 |
-
eventSelection: props.eventSelection
|
8723 |
-
}; // TODO: give interactionSegs?
|
8724 |
-
};
|
8725 |
-
Slicer.prototype.sliceNowDate = function (// does not memoize
|
8726 |
-
date, component) {
|
8727 |
-
var extraArgs = [];
|
8728 |
-
for (var _i = 2; _i < arguments.length; _i++) {
|
8729 |
-
extraArgs[_i - 2] = arguments[_i];
|
8730 |
-
}
|
8731 |
-
return this._sliceDateSpan.apply(this, [{ range: { start: date, end: addMs(date, 1) }, allDay: false },
|
8732 |
-
{},
|
8733 |
-
component].concat(extraArgs));
|
8734 |
-
};
|
8735 |
-
Slicer.prototype._sliceBusinessHours = function (businessHours, dateProfile, nextDayThreshold, component) {
|
8736 |
-
var extraArgs = [];
|
8737 |
-
for (var _i = 4; _i < arguments.length; _i++) {
|
8738 |
-
extraArgs[_i - 4] = arguments[_i];
|
8739 |
-
}
|
8740 |
-
if (!businessHours) {
|
8741 |
-
return [];
|
8742 |
-
}
|
8743 |
-
return this._sliceEventStore.apply(this, [expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), component.calendar),
|
8744 |
-
{},
|
8745 |
-
dateProfile,
|
8746 |
-
nextDayThreshold,
|
8747 |
-
component].concat(extraArgs)).bg;
|
8748 |
-
};
|
8749 |
-
Slicer.prototype._sliceEventStore = function (eventStore, eventUiBases, dateProfile, nextDayThreshold, component) {
|
8750 |
-
var extraArgs = [];
|
8751 |
-
for (var _i = 5; _i < arguments.length; _i++) {
|
8752 |
-
extraArgs[_i - 5] = arguments[_i];
|
8753 |
-
}
|
8754 |
-
if (eventStore) {
|
8755 |
-
var rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);
|
8756 |
-
return {
|
8757 |
-
bg: this.sliceEventRanges(rangeRes.bg, component, extraArgs),
|
8758 |
-
fg: this.sliceEventRanges(rangeRes.fg, component, extraArgs)
|
8759 |
-
};
|
8760 |
-
}
|
8761 |
-
else {
|
8762 |
-
return { bg: [], fg: [] };
|
8763 |
-
}
|
8764 |
-
};
|
8765 |
-
Slicer.prototype._sliceInteraction = function (interaction, eventUiBases, dateProfile, nextDayThreshold, component) {
|
8766 |
-
var extraArgs = [];
|
8767 |
-
for (var _i = 5; _i < arguments.length; _i++) {
|
8768 |
-
extraArgs[_i - 5] = arguments[_i];
|
8769 |
-
}
|
8770 |
-
if (!interaction) {
|
8771 |
-
return null;
|
8772 |
-
}
|
8773 |
-
var rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);
|
8774 |
-
return {
|
8775 |
-
segs: this.sliceEventRanges(rangeRes.fg, component, extraArgs),
|
8776 |
-
affectedInstances: interaction.affectedEvents.instances,
|
8777 |
-
isEvent: interaction.isEvent,
|
8778 |
-
sourceSeg: interaction.origSeg
|
8779 |
-
};
|
8780 |
-
};
|
8781 |
-
Slicer.prototype._sliceDateSpan = function (dateSpan, eventUiBases, component) {
|
8782 |
-
var extraArgs = [];
|
8783 |
-
for (var _i = 3; _i < arguments.length; _i++) {
|
8784 |
-
extraArgs[_i - 3] = arguments[_i];
|
8785 |
-
}
|
8786 |
-
if (!dateSpan) {
|
8787 |
-
return [];
|
8788 |
-
}
|
8789 |
-
var eventRange = fabricateEventRange(dateSpan, eventUiBases, component.calendar);
|
8790 |
-
var segs = this.sliceRange.apply(this, [dateSpan.range].concat(extraArgs));
|
8791 |
-
for (var _a = 0, segs_1 = segs; _a < segs_1.length; _a++) {
|
8792 |
-
var seg = segs_1[_a];
|
8793 |
-
seg.component = component;
|
8794 |
-
seg.eventRange = eventRange;
|
8795 |
-
}
|
8796 |
-
return segs;
|
8797 |
-
};
|
8798 |
-
/*
|
8799 |
-
"complete" seg means it has component and eventRange
|
8800 |
-
*/
|
8801 |
-
Slicer.prototype.sliceEventRanges = function (eventRanges, component, // TODO: kill
|
8802 |
-
extraArgs) {
|
8803 |
-
var segs = [];
|
8804 |
-
for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) {
|
8805 |
-
var eventRange = eventRanges_1[_i];
|
8806 |
-
segs.push.apply(segs, this.sliceEventRange(eventRange, component, extraArgs));
|
8807 |
-
}
|
8808 |
-
return segs;
|
8809 |
-
};
|
8810 |
-
/*
|
8811 |
-
"complete" seg means it has component and eventRange
|
8812 |
-
*/
|
8813 |
-
Slicer.prototype.sliceEventRange = function (eventRange, component, // TODO: kill
|
8814 |
-
extraArgs) {
|
8815 |
-
var segs = this.sliceRange.apply(this, [eventRange.range].concat(extraArgs));
|
8816 |
-
for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {
|
8817 |
-
var seg = segs_2[_i];
|
8818 |
-
seg.component = component;
|
8819 |
-
seg.eventRange = eventRange;
|
8820 |
-
seg.isStart = eventRange.isStart && seg.isStart;
|
8821 |
-
seg.isEnd = eventRange.isEnd && seg.isEnd;
|
8822 |
-
}
|
8823 |
-
return segs;
|
8824 |
-
};
|
8825 |
-
return Slicer;
|
8826 |
-
}());
|
8827 |
-
/*
|
8828 |
-
for incorporating minTime/maxTime if appropriate
|
8829 |
-
TODO: should be part of DateProfile!
|
8830 |
-
TimelineDateProfile already does this btw
|
8831 |
-
*/
|
8832 |
-
function computeActiveRange(dateProfile, isComponentAllDay) {
|
8833 |
-
var range = dateProfile.activeRange;
|
8834 |
-
if (isComponentAllDay) {
|
8835 |
-
return range;
|
8836 |
-
}
|
8837 |
-
return {
|
8838 |
-
start: addMs(range.start, dateProfile.minTime.milliseconds),
|
8839 |
-
end: addMs(range.end, dateProfile.maxTime.milliseconds - 864e5) // 864e5 = ms in a day
|
8840 |
-
};
|
8841 |
-
}
|
8842 |
-
|
8843 |
-
// exports
|
8844 |
-
// --------------------------------------------------------------------------------------------------
|
8845 |
-
var version = '4.3.1';
|
8846 |
-
|
8847 |
-
exports.Calendar = Calendar;
|
8848 |
-
exports.Component = Component;
|
8849 |
-
exports.DateComponent = DateComponent;
|
8850 |
-
exports.DateEnv = DateEnv;
|
8851 |
-
exports.DateProfileGenerator = DateProfileGenerator;
|
8852 |
-
exports.DayHeader = DayHeader;
|
8853 |
-
exports.DaySeries = DaySeries;
|
8854 |
-
exports.DayTable = DayTable;
|
8855 |
-
exports.ElementDragging = ElementDragging;
|
8856 |
-
exports.ElementScrollController = ElementScrollController;
|
8857 |
-
exports.EmitterMixin = EmitterMixin;
|
8858 |
-
exports.EventApi = EventApi;
|
8859 |
-
exports.FgEventRenderer = FgEventRenderer;
|
8860 |
-
exports.FillRenderer = FillRenderer;
|
8861 |
-
exports.Interaction = Interaction;
|
8862 |
-
exports.Mixin = Mixin;
|
8863 |
-
exports.NamedTimeZoneImpl = NamedTimeZoneImpl;
|
8864 |
-
exports.PositionCache = PositionCache;
|
8865 |
-
exports.ScrollComponent = ScrollComponent;
|
8866 |
-
exports.ScrollController = ScrollController;
|
8867 |
-
exports.Slicer = Slicer;
|
8868 |
-
exports.Splitter = Splitter;
|
8869 |
-
exports.Theme = Theme;
|
8870 |
-
exports.View = View;
|
8871 |
-
exports.WindowScrollController = WindowScrollController;
|
8872 |
-
exports.addDays = addDays;
|
8873 |
-
exports.addDurations = addDurations;
|
8874 |
-
exports.addMs = addMs;
|
8875 |
-
exports.addWeeks = addWeeks;
|
8876 |
-
exports.allowContextMenu = allowContextMenu;
|
8877 |
-
exports.allowSelection = allowSelection;
|
8878 |
-
exports.appendToElement = appendToElement;
|
8879 |
-
exports.applyAll = applyAll;
|
8880 |
-
exports.applyMutationToEventStore = applyMutationToEventStore;
|
8881 |
-
exports.applyStyle = applyStyle;
|
8882 |
-
exports.applyStyleProp = applyStyleProp;
|
8883 |
-
exports.asRoughMinutes = asRoughMinutes;
|
8884 |
-
exports.asRoughMs = asRoughMs;
|
8885 |
-
exports.asRoughSeconds = asRoughSeconds;
|
8886 |
-
exports.buildGotoAnchorHtml = buildGotoAnchorHtml;
|
8887 |
-
exports.buildSegCompareObj = buildSegCompareObj;
|
8888 |
-
exports.capitaliseFirstLetter = capitaliseFirstLetter;
|
8889 |
-
exports.combineEventUis = combineEventUis;
|
8890 |
-
exports.compareByFieldSpec = compareByFieldSpec;
|
8891 |
-
exports.compareByFieldSpecs = compareByFieldSpecs;
|
8892 |
-
exports.compareNumbers = compareNumbers;
|
8893 |
-
exports.compensateScroll = compensateScroll;
|
8894 |
-
exports.computeClippingRect = computeClippingRect;
|
8895 |
-
exports.computeEdges = computeEdges;
|
8896 |
-
exports.computeFallbackHeaderFormat = computeFallbackHeaderFormat;
|
8897 |
-
exports.computeHeightAndMargins = computeHeightAndMargins;
|
8898 |
-
exports.computeInnerRect = computeInnerRect;
|
8899 |
-
exports.computeRect = computeRect;
|
8900 |
-
exports.computeVisibleDayRange = computeVisibleDayRange;
|
8901 |
-
exports.config = config;
|
8902 |
-
exports.constrainPoint = constrainPoint;
|
8903 |
-
exports.createDuration = createDuration;
|
8904 |
-
exports.createElement = createElement;
|
8905 |
-
exports.createEmptyEventStore = createEmptyEventStore;
|
8906 |
-
exports.createEventInstance = createEventInstance;
|
8907 |
-
exports.createFormatter = createFormatter;
|
8908 |
-
exports.createPlugin = createPlugin;
|
8909 |
-
exports.cssToStr = cssToStr;
|
8910 |
-
exports.debounce = debounce;
|
8911 |
-
exports.diffDates = diffDates;
|
8912 |
-
exports.diffDayAndTime = diffDayAndTime;
|
8913 |
-
exports.diffDays = diffDays;
|
8914 |
-
exports.diffPoints = diffPoints;
|
8915 |
-
exports.diffWeeks = diffWeeks;
|
8916 |
-
exports.diffWholeDays = diffWholeDays;
|
8917 |
-
exports.diffWholeWeeks = diffWholeWeeks;
|
8918 |
-
exports.disableCursor = disableCursor;
|
8919 |
-
exports.distributeHeight = distributeHeight;
|
8920 |
-
exports.elementClosest = elementClosest;
|
8921 |
-
exports.elementMatches = elementMatches;
|
8922 |
-
exports.enableCursor = enableCursor;
|
8923 |
-
exports.eventTupleToStore = eventTupleToStore;
|
8924 |
-
exports.filterEventStoreDefs = filterEventStoreDefs;
|
8925 |
-
exports.filterHash = filterHash;
|
8926 |
-
exports.findChildren = findChildren;
|
8927 |
-
exports.findElements = findElements;
|
8928 |
-
exports.flexibleCompare = flexibleCompare;
|
8929 |
-
exports.forceClassName = forceClassName;
|
8930 |
-
exports.formatDate = formatDate;
|
8931 |
-
exports.formatIsoTimeString = formatIsoTimeString;
|
8932 |
-
exports.formatRange = formatRange;
|
8933 |
-
exports.getAllDayHtml = getAllDayHtml;
|
8934 |
-
exports.getClippingParents = getClippingParents;
|
8935 |
-
exports.getDayClasses = getDayClasses;
|
8936 |
-
exports.getElSeg = getElSeg;
|
8937 |
-
exports.getRectCenter = getRectCenter;
|
8938 |
-
exports.getRelevantEvents = getRelevantEvents;
|
8939 |
-
exports.globalDefaults = globalDefaults;
|
8940 |
-
exports.greatestDurationDenominator = greatestDurationDenominator;
|
8941 |
-
exports.hasBgRendering = hasBgRendering;
|
8942 |
-
exports.htmlEscape = htmlEscape;
|
8943 |
-
exports.htmlToElement = htmlToElement;
|
8944 |
-
exports.insertAfterElement = insertAfterElement;
|
8945 |
-
exports.interactionSettingsStore = interactionSettingsStore;
|
8946 |
-
exports.interactionSettingsToStore = interactionSettingsToStore;
|
8947 |
-
exports.intersectRanges = intersectRanges;
|
8948 |
-
exports.intersectRects = intersectRects;
|
8949 |
-
exports.isArraysEqual = isArraysEqual;
|
8950 |
-
exports.isDateSpansEqual = isDateSpansEqual;
|
8951 |
-
exports.isInt = isInt;
|
8952 |
-
exports.isInteractionValid = isInteractionValid;
|
8953 |
-
exports.isMultiDayRange = isMultiDayRange;
|
8954 |
-
exports.isPropsEqual = isPropsEqual;
|
8955 |
-
exports.isPropsValid = isPropsValid;
|
8956 |
-
exports.isSingleDay = isSingleDay;
|
8957 |
-
exports.isValidDate = isValidDate;
|
8958 |
-
exports.listenBySelector = listenBySelector;
|
8959 |
-
exports.mapHash = mapHash;
|
8960 |
-
exports.matchCellWidths = matchCellWidths;
|
8961 |
-
exports.memoize = memoize;
|
8962 |
-
exports.memoizeOutput = memoizeOutput;
|
8963 |
-
exports.memoizeRendering = memoizeRendering;
|
8964 |
-
exports.mergeEventStores = mergeEventStores;
|
8965 |
-
exports.multiplyDuration = multiplyDuration;
|
8966 |
-
exports.padStart = padStart;
|
8967 |
-
exports.parseBusinessHours = parseBusinessHours;
|
8968 |
-
exports.parseDragMeta = parseDragMeta;
|
8969 |
-
exports.parseEventDef = parseEventDef;
|
8970 |
-
exports.parseFieldSpecs = parseFieldSpecs;
|
8971 |
-
exports.parseMarker = parse;
|
8972 |
-
exports.pointInsideRect = pointInsideRect;
|
8973 |
-
exports.prependToElement = prependToElement;
|
8974 |
-
exports.preventContextMenu = preventContextMenu;
|
8975 |
-
exports.preventDefault = preventDefault;
|
8976 |
-
exports.preventSelection = preventSelection;
|
8977 |
-
exports.processScopedUiProps = processScopedUiProps;
|
8978 |
-
exports.rangeContainsMarker = rangeContainsMarker;
|
8979 |
-
exports.rangeContainsRange = rangeContainsRange;
|
8980 |
-
exports.rangesEqual = rangesEqual;
|
8981 |
-
exports.rangesIntersect = rangesIntersect;
|
8982 |
-
exports.refineProps = refineProps;
|
8983 |
-
exports.removeElement = removeElement;
|
8984 |
-
exports.removeExact = removeExact;
|
8985 |
-
exports.renderDateCell = renderDateCell;
|
8986 |
-
exports.requestJson = requestJson;
|
8987 |
-
exports.sliceEventStore = sliceEventStore;
|
8988 |
-
exports.startOfDay = startOfDay;
|
8989 |
-
exports.subtractInnerElHeight = subtractInnerElHeight;
|
8990 |
-
exports.translateRect = translateRect;
|
8991 |
-
exports.uncompensateScroll = uncompensateScroll;
|
8992 |
-
exports.undistributeHeight = undistributeHeight;
|
8993 |
-
exports.unpromisify = unpromisify;
|
8994 |
-
exports.version = version;
|
8995 |
-
exports.whenTransitionDone = whenTransitionDone;
|
8996 |
-
exports.wholeDivideDurations = wholeDivideDurations;
|
8997 |
-
|
8998 |
-
Object.defineProperty(exports, '__esModule', { value: true });
|
8999 |
-
|
9000 |
-
}));
|
9001 |
-
|
9002 |
-
/*!
|
9003 |
-
FullCalendar Day Grid Plugin v4.3.0
|
9004 |
-
Docs & License: https://fullcalendar.io/
|
9005 |
-
(c) 2019 Adam Shaw
|
9006 |
-
*/
|
9007 |
-
|
9008 |
-
(function (global, factory) {
|
9009 |
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) :
|
9010 |
-
typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) :
|
9011 |
-
(global = global || self, factory(global.FullCalendarDayGrid = {}, global.FullCalendar));
|
9012 |
-
}(this, function (exports, core) { 'use strict';
|
9013 |
-
|
9014 |
-
/*! *****************************************************************************
|
9015 |
-
Copyright (c) Microsoft Corporation. All rights reserved.
|
9016 |
-
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
9017 |
-
this file except in compliance with the License. You may obtain a copy of the
|
9018 |
-
License at http://www.apache.org/licenses/LICENSE-2.0
|
9019 |
-
|
9020 |
-
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
9021 |
-
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
9022 |
-
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
9023 |
-
MERCHANTABLITY OR NON-INFRINGEMENT.
|
9024 |
-
|
9025 |
-
See the Apache Version 2.0 License for specific language governing permissions
|
9026 |
-
and limitations under the License.
|
9027 |
-
***************************************************************************** */
|
9028 |
-
/* global Reflect, Promise */
|
9029 |
-
|
9030 |
-
var extendStatics = function(d, b) {
|
9031 |
-
extendStatics = Object.setPrototypeOf ||
|
9032 |
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
9033 |
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
9034 |
-
return extendStatics(d, b);
|
9035 |
-
};
|
9036 |
-
|
9037 |
-
function __extends(d, b) {
|
9038 |
-
extendStatics(d, b);
|
9039 |
-
function __() { this.constructor = d; }
|
9040 |
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
9041 |
-
}
|
9042 |
-
|
9043 |
-
var __assign = function() {
|
9044 |
-
__assign = Object.assign || function __assign(t) {
|
9045 |
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
9046 |
-
s = arguments[i];
|
9047 |
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
9048 |
-
}
|
9049 |
-
return t;
|
9050 |
-
};
|
9051 |
-
return __assign.apply(this, arguments);
|
9052 |
-
};
|
9053 |
-
|
9054 |
-
var DayGridDateProfileGenerator = /** @class */ (function (_super) {
|
9055 |
-
__extends(DayGridDateProfileGenerator, _super);
|
9056 |
-
function DayGridDateProfileGenerator() {
|
9057 |
-
return _super !== null && _super.apply(this, arguments) || this;
|
9058 |
-
}
|
9059 |
-
// Computes the date range that will be rendered.
|
9060 |
-
DayGridDateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {
|
9061 |
-
var dateEnv = this.dateEnv;
|
9062 |
-
var renderRange = _super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay);
|
9063 |
-
var start = renderRange.start;
|
9064 |
-
var end = renderRange.end;
|
9065 |
-
var endOfWeek;
|
9066 |
-
// year and month views should be aligned with weeks. this is already done for week
|
9067 |
-
if (/^(year|month)$/.test(currentRangeUnit)) {
|
9068 |
-
start = dateEnv.startOfWeek(start);
|
9069 |
-
// make end-of-week if not already
|
9070 |
-
endOfWeek = dateEnv.startOfWeek(end);
|
9071 |
-
if (endOfWeek.valueOf() !== end.valueOf()) {
|
9072 |
-
end = core.addWeeks(endOfWeek, 1);
|
9073 |
-
}
|
9074 |
-
}
|
9075 |
-
// ensure 6 weeks
|
9076 |
-
if (this.options.monthMode &&
|
9077 |
-
this.options.fixedWeekCount) {
|
9078 |
-
var rowCnt = Math.ceil(// could be partial weeks due to hiddenDays
|
9079 |
-
core.diffWeeks(start, end));
|
9080 |
-
end = core.addWeeks(end, 6 - rowCnt);
|
9081 |
-
}
|
9082 |
-
return { start: start, end: end };
|
9083 |
-
};
|
9084 |
-
return DayGridDateProfileGenerator;
|
9085 |
-
}(core.DateProfileGenerator));
|
9086 |
-
|
9087 |
-
/* A rectangular panel that is absolutely positioned over other content
|
9088 |
-
------------------------------------------------------------------------------------------------------------------------
|
9089 |
-
Options:
|
9090 |
-
- className (string)
|
9091 |
-
- content (HTML string, element, or element array)
|
9092 |
-
- parentEl
|
9093 |
-
- top
|
9094 |
-
- left
|
9095 |
-
- right (the x coord of where the right edge should be. not a "CSS" right)
|
9096 |
-
- autoHide (boolean)
|
9097 |
-
- show (callback)
|
9098 |
-
- hide (callback)
|
9099 |
-
*/
|
9100 |
-
var Popover = /** @class */ (function () {
|
9101 |
-
function Popover(options) {
|
9102 |
-
var _this = this;
|
9103 |
-
this.isHidden = true;
|
9104 |
-
this.margin = 10; // the space required between the popover and the edges of the scroll container
|
9105 |
-
// Triggered when the user clicks *anywhere* in the document, for the autoHide feature
|
9106 |
-
this.documentMousedown = function (ev) {
|
9107 |
-
// only hide the popover if the click happened outside the popover
|
9108 |
-
if (_this.el && !_this.el.contains(ev.target)) {
|
9109 |
-
_this.hide();
|
9110 |
-
}
|
9111 |
-
};
|
9112 |
-
this.options = options;
|
9113 |
-
}
|
9114 |
-
// Shows the popover on the specified position. Renders it if not already
|
9115 |
-
Popover.prototype.show = function () {
|
9116 |
-
if (this.isHidden) {
|
9117 |
-
if (!this.el) {
|
9118 |
-
this.render();
|
9119 |
-
}
|
9120 |
-
this.el.style.display = '';
|
9121 |
-
this.position();
|
9122 |
-
this.isHidden = false;
|
9123 |
-
this.trigger('show');
|
9124 |
-
}
|
9125 |
-
};
|
9126 |
-
// Hides the popover, through CSS, but does not remove it from the DOM
|
9127 |
-
Popover.prototype.hide = function () {
|
9128 |
-
if (!this.isHidden) {
|
9129 |
-
this.el.style.display = 'none';
|
9130 |
-
this.isHidden = true;
|
9131 |
-
this.trigger('hide');
|
9132 |
-
}
|
9133 |
-
};
|
9134 |
-
// Creates `this.el` and renders content inside of it
|
9135 |
-
Popover.prototype.render = function () {
|
9136 |
-
var _this = this;
|
9137 |
-
var options = this.options;
|
9138 |
-
var el = this.el = core.createElement('div', {
|
9139 |
-
className: 'fc-popover ' + (options.className || ''),
|
9140 |
-
style: {
|
9141 |
-
top: '0',
|
9142 |
-
left: '0'
|
9143 |
-
}
|
9144 |
-
});
|
9145 |
-
if (typeof options.content === 'function') {
|
9146 |
-
options.content(el);
|
9147 |
-
}
|
9148 |
-
options.parentEl.appendChild(el);
|
9149 |
-
// when a click happens on anything inside with a 'fc-close' className, hide the popover
|
9150 |
-
core.listenBySelector(el, 'click', '.fc-close', function (ev) {
|
9151 |
-
_this.hide();
|
9152 |
-
});
|
9153 |
-
if (options.autoHide) {
|
9154 |
-
document.addEventListener('mousedown', this.documentMousedown);
|
9155 |
-
}
|
9156 |
-
};
|
9157 |
-
// Hides and unregisters any handlers
|
9158 |
-
Popover.prototype.destroy = function () {
|
9159 |
-
this.hide();
|
9160 |
-
if (this.el) {
|
9161 |
-
core.removeElement(this.el);
|
9162 |
-
this.el = null;
|
9163 |
-
}
|
9164 |
-
document.removeEventListener('mousedown', this.documentMousedown);
|
9165 |
-
};
|
9166 |
-
// Positions the popover optimally, using the top/left/right options
|
9167 |
-
Popover.prototype.position = function () {
|
9168 |
-
var options = this.options;
|
9169 |
-
var el = this.el;
|
9170 |
-
var elDims = el.getBoundingClientRect(); // only used for width,height
|
9171 |
-
var origin = core.computeRect(el.offsetParent);
|
9172 |
-
var clippingRect = core.computeClippingRect(options.parentEl);
|
9173 |
-
var top; // the "position" (not "offset") values for the popover
|
9174 |
-
var left; //
|
9175 |
-
// compute top and left
|
9176 |
-
top = options.top || 0;
|
9177 |
-
if (options.left !== undefined) {
|
9178 |
-
left = options.left;
|
9179 |
-
}
|
9180 |
-
else if (options.right !== undefined) {
|
9181 |
-
left = options.right - elDims.width; // derive the left value from the right value
|
9182 |
-
}
|
9183 |
-
else {
|
9184 |
-
left = 0;
|
9185 |
-
}
|
9186 |
-
// constrain to the view port. if constrained by two edges, give precedence to top/left
|
9187 |
-
top = Math.min(top, clippingRect.bottom - elDims.height - this.margin);
|
9188 |
-
top = Math.max(top, clippingRect.top + this.margin);
|
9189 |
-
left = Math.min(left, clippingRect.right - elDims.width - this.margin);
|
9190 |
-
left = Math.max(left, clippingRect.left + this.margin);
|
9191 |
-
core.applyStyle(el, {
|
9192 |
-
top: top - origin.top,
|
9193 |
-
left: left - origin.left
|
9194 |
-
});
|
9195 |
-
};
|
9196 |
-
// Triggers a callback. Calls a function in the option hash of the same name.
|
9197 |
-
// Arguments beyond the first `name` are forwarded on.
|
9198 |
-
// TODO: better code reuse for this. Repeat code
|
9199 |
-
// can kill this???
|
9200 |
-
Popover.prototype.trigger = function (name) {
|
9201 |
-
if (this.options[name]) {
|
9202 |
-
this.options[name].apply(this, Array.prototype.slice.call(arguments, 1));
|
9203 |
-
}
|
9204 |
-
};
|
9205 |
-
return Popover;
|
9206 |
-
}());
|
9207 |
-
|
9208 |
-
/* Event-rendering methods for the DayGrid class
|
9209 |
-
----------------------------------------------------------------------------------------------------------------------*/
|
9210 |
-
// "Simple" is bad a name. has nothing to do with SimpleDayGrid
|
9211 |
-
var SimpleDayGridEventRenderer = /** @class */ (function (_super) {
|
9212 |
-
__extends(SimpleDayGridEventRenderer, _super);
|
9213 |
-
function SimpleDayGridEventRenderer() {
|
9214 |
-
return _super !== null && _super.apply(this, arguments) || this;
|
9215 |
-
}
|
9216 |
-
// Builds the HTML to be used for the default element for an individual segment
|
9217 |
-
SimpleDayGridEventRenderer.prototype.renderSegHtml = function (seg, mirrorInfo) {
|
9218 |
-
var _a = this.context, view = _a.view, options = _a.options;
|
9219 |
-
var eventRange = seg.eventRange;
|
9220 |
-
var eventDef = eventRange.def;
|
9221 |
-
var eventUi = eventRange.ui;
|
9222 |
-
var allDay = eventDef.allDay;
|
9223 |
-
var isDraggable = view.computeEventDraggable(eventDef, eventUi);
|
9224 |
-
var isResizableFromStart = allDay && seg.isStart && view.computeEventStartResizable(eventDef, eventUi);
|
9225 |
-
var isResizableFromEnd = allDay && seg.isEnd && view.computeEventEndResizable(eventDef, eventUi);
|
9226 |
-
var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd, mirrorInfo);
|
9227 |
-
var skinCss = core.cssToStr(this.getSkinCss(eventUi));
|
9228 |
-
var timeHtml = '';
|
9229 |
-
var timeText;
|
9230 |
-
var titleHtml;
|
9231 |
-
classes.unshift('fc-day-grid-event', 'fc-h-event');
|
9232 |
-
// Only display a timed events time if it is the starting segment
|
9233 |
-
if (seg.isStart) {
|
9234 |
-
timeText = this.getTimeText(eventRange);
|
9235 |
-
if (timeText) {
|
9236 |
-
timeHtml = '<span class="fc-time">' + core.htmlEscape(timeText) + '</span>';
|
9237 |
-
}
|
9238 |
-
}
|
9239 |
-
titleHtml =
|
9240 |
-
'<span class="fc-title">' +
|
9241 |
-
(core.htmlEscape(eventDef.title || '') || ' ') + // we always want one line of height
|
9242 |
-
'</span>';
|
9243 |
-
return '<a class="' + classes.join(' ') + '"' +
|
9244 |
-
(eventDef.url ?
|
9245 |
-
' href="' + core.htmlEscape(eventDef.url) + '"' :
|
9246 |
-
'') +
|
9247 |
-
(skinCss ?
|
9248 |
-
' style="' + skinCss + '"' :
|
9249 |
-
'') +
|
9250 |
-
'>' +
|
9251 |
-
'<div class="fc-content">' +
|
9252 |
-
(options.dir === 'rtl' ?
|
9253 |
-
titleHtml + ' ' + timeHtml : // put a natural space in between
|
9254 |
-
timeHtml + ' ' + titleHtml //
|
9255 |
-
) +
|
9256 |
-
'</div>' +
|
9257 |
-
(isResizableFromStart ?
|
9258 |
-
'<div class="fc-resizer fc-start-resizer"></div>' :
|
9259 |
-
'') +
|
9260 |
-
(isResizableFromEnd ?
|
9261 |
-
'<div class="fc-resizer fc-end-resizer"></div>' :
|
9262 |
-
'') +
|
9263 |
-
'</a>';
|
9264 |
-
};
|
9265 |
-
// Computes a default event time formatting string if `eventTimeFormat` is not explicitly defined
|
9266 |
-
SimpleDayGridEventRenderer.prototype.computeEventTimeFormat = function () {
|
9267 |
-
return {
|
9268 |
-
hour: 'numeric',
|
9269 |
-
minute: '2-digit',
|
9270 |
-
omitZeroMinute: true,
|
9271 |
-
meridiem: 'narrow'
|
9272 |
-
};
|
9273 |
-
};
|
9274 |
-
SimpleDayGridEventRenderer.prototype.computeDisplayEventEnd = function () {
|
9275 |
-
return false; // TODO: somehow consider the originating DayGrid's column count
|
9276 |
-
};
|
9277 |
-
return SimpleDayGridEventRenderer;
|
9278 |
-
}(core.FgEventRenderer));
|
9279 |
-
|
9280 |
-
/* Event-rendering methods for the DayGrid class
|
9281 |
-
----------------------------------------------------------------------------------------------------------------------*/
|
9282 |
-
var DayGridEventRenderer = /** @class */ (function (_super) {
|
9283 |
-
__extends(DayGridEventRenderer, _super);
|
9284 |
-
function DayGridEventRenderer(dayGrid) {
|
9285 |
-
var _this = _super.call(this, dayGrid.context) || this;
|
9286 |
-
_this.dayGrid = dayGrid;
|
9287 |
-
return _this;
|
9288 |
-
}
|
9289 |
-
// Renders the given foreground event segments onto the grid
|
9290 |
-
DayGridEventRenderer.prototype.attachSegs = function (segs, mirrorInfo) {
|
9291 |
-
var rowStructs = this.rowStructs = this.renderSegRows(segs);
|
9292 |
-
// append to each row's content skeleton
|
9293 |
-
this.dayGrid.rowEls.forEach(function (rowNode, i) {
|
9294 |
-
rowNode.querySelector('.fc-content-skeleton > table').appendChild(rowStructs[i].tbodyEl);
|
9295 |
-
});
|
9296 |
-
// removes the "more.." events popover
|
9297 |
-
if (!mirrorInfo) {
|
9298 |
-
this.dayGrid.removeSegPopover();
|
9299 |
-
}
|
9300 |
-
};
|
9301 |
-
// Unrenders all currently rendered foreground event segments
|
9302 |
-
DayGridEventRenderer.prototype.detachSegs = function () {
|
9303 |
-
var rowStructs = this.rowStructs || [];
|
9304 |
-
var rowStruct;
|
9305 |
-
while ((rowStruct = rowStructs.pop())) {
|
9306 |
-
core.removeElement(rowStruct.tbodyEl);
|
9307 |
-
}
|
9308 |
-
this.rowStructs = null;
|
9309 |
-
};
|
9310 |
-
// Uses the given events array to generate <tbody> elements that should be appended to each row's content skeleton.
|
9311 |
-
// Returns an array of rowStruct objects (see the bottom of `renderSegRow`).
|
9312 |
-
// PRECONDITION: each segment shoud already have a rendered and assigned `.el`
|
9313 |
-
DayGridEventRenderer.prototype.renderSegRows = function (segs) {
|
9314 |
-
var rowStructs = [];
|
9315 |
-
var segRows;
|
9316 |
-
var row;
|
9317 |
-
segRows = this.groupSegRows(segs); // group into nested arrays
|
9318 |
-
// iterate each row of segment groupings
|
9319 |
-
for (row = 0; row < segRows.length; row++) {
|
9320 |
-
rowStructs.push(this.renderSegRow(row, segRows[row]));
|
9321 |
-
}
|
9322 |
-
return rowStructs;
|
9323 |
-
};
|
9324 |
-
// Given a row # and an array of segments all in the same row, render a <tbody> element, a skeleton that contains
|
9325 |
-
// the segments. Returns object with a bunch of internal data about how the render was calculated.
|
9326 |
-
// NOTE: modifies rowSegs
|
9327 |
-
DayGridEventRenderer.prototype.renderSegRow = function (row, rowSegs) {
|
9328 |
-
var dayGrid = this.dayGrid;
|
9329 |
-
var colCnt = dayGrid.colCnt, isRtl = dayGrid.isRtl;
|
9330 |
-
var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels
|
9331 |
-
var levelCnt = Math.max(1, segLevels.length); // ensure at least one level
|
9332 |
-
var tbody = document.createElement('tbody');
|
9333 |
-
var segMatrix = []; // lookup for which segments are rendered into which level+col cells
|
9334 |
-
var cellMatrix = []; // lookup for all <td> elements of the level+col matrix
|
9335 |
-
var loneCellMatrix = []; // lookup for <td> elements that only take up a single column
|
9336 |
-
var i;
|
9337 |
-
var levelSegs;
|
9338 |
-
var col;
|
9339 |
-
var tr;
|
9340 |
-
var j;
|
9341 |
-
var seg;
|
9342 |
-
var td;
|
9343 |
-
// populates empty cells from the current column (`col`) to `endCol`
|
9344 |
-
function emptyCellsUntil(endCol) {
|
9345 |
-
while (col < endCol) {
|
9346 |
-
// try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell
|
9347 |
-
td = (loneCellMatrix[i - 1] || [])[col];
|
9348 |
-
if (td) {
|
9349 |
-
td.rowSpan = (td.rowSpan || 1) + 1;
|
9350 |
-
}
|
9351 |
-
else {
|
9352 |
-
td = document.createElement('td');
|
9353 |
-
tr.appendChild(td);
|
9354 |
-
}
|
9355 |
-
cellMatrix[i][col] = td;
|
9356 |
-
loneCellMatrix[i][col] = td;
|
9357 |
-
col++;
|
9358 |
-
}
|
9359 |
-
}
|
9360 |
-
for (i = 0; i < levelCnt; i++) { // iterate through all levels
|
9361 |
-
levelSegs = segLevels[i];
|
9362 |
-
col = 0;
|
9363 |
-
tr = document.createElement('tr');
|
9364 |
-
segMatrix.push([]);
|
9365 |
-
cellMatrix.push([]);
|
9366 |
-
loneCellMatrix.push([]);
|
9367 |
-
// levelCnt might be 1 even though there are no actual levels. protect against this.
|
9368 |
-
// this single empty row is useful for styling.
|
9369 |
-
if (levelSegs) {
|
9370 |
-
for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level
|
9371 |
-
seg = levelSegs[j];
|
9372 |
-
var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol;
|
9373 |
-
var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol;
|
9374 |
-
emptyCellsUntil(leftCol);
|
9375 |
-
// create a container that occupies or more columns. append the event element.
|
9376 |
-
td = core.createElement('td', { className: 'fc-event-container' }, seg.el);
|
9377 |
-
if (leftCol !== rightCol) {
|
9378 |
-
td.colSpan = rightCol - leftCol + 1;
|
9379 |
-
}
|
9380 |
-
else { // a single-column segment
|
9381 |
-
loneCellMatrix[i][col] = td;
|
9382 |
-
}
|
9383 |
-
while (col <= rightCol) {
|
9384 |
-
cellMatrix[i][col] = td;
|
9385 |
-
segMatrix[i][col] = seg;
|
9386 |
-
col++;
|
9387 |
-
}
|
9388 |
-
tr.appendChild(td);
|
9389 |
-
}
|
9390 |
-
}
|
9391 |
-
emptyCellsUntil(colCnt); // finish off the row
|
9392 |
-
var introHtml = dayGrid.renderProps.renderIntroHtml();
|
9393 |
-
if (introHtml) {
|
9394 |
-
if (dayGrid.isRtl) {
|
9395 |
-
core.appendToElement(tr, introHtml);
|
9396 |
-
}
|
9397 |
-
else {
|
9398 |
-
core.prependToElement(tr, introHtml);
|
9399 |
-
}
|
9400 |
-
}
|
9401 |
-
tbody.appendChild(tr);
|
9402 |
-
}
|
9403 |
-
return {
|
9404 |
-
row: row,
|
9405 |
-
tbodyEl: tbody,
|
9406 |
-
cellMatrix: cellMatrix,
|
9407 |
-
segMatrix: segMatrix,
|
9408 |
-
segLevels: segLevels,
|
9409 |
-
segs: rowSegs
|
9410 |
-
};
|
9411 |
-
};
|
9412 |
-
// Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels.
|
9413 |
-
// NOTE: modifies segs
|
9414 |
-
DayGridEventRenderer.prototype.buildSegLevels = function (segs) {
|
9415 |
-
var _a = this.dayGrid, isRtl = _a.isRtl, colCnt = _a.colCnt;
|
9416 |
-
var levels = [];
|
9417 |
-
var i;
|
9418 |
-
var seg;
|
9419 |
-
var j;
|
9420 |
-
// Give preference to elements with certain criteria, so they have
|
9421 |
-
// a chance to be closer to the top.
|
9422 |
-
segs = this.sortEventSegs(segs);
|
9423 |
-
for (i = 0; i < segs.length; i++) {
|
9424 |
-
seg = segs[i];
|
9425 |
-
// loop through levels, starting with the topmost, until the segment doesn't collide with other segments
|
9426 |
-
for (j = 0; j < levels.length; j++) {
|
9427 |
-
if (!isDaySegCollision(seg, levels[j])) {
|
9428 |
-
break;
|
9429 |
-
}
|
9430 |
-
}
|
9431 |
-
// `j` now holds the desired subrow index
|
9432 |
-
seg.level = j;
|
9433 |
-
seg.leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; // for sorting only
|
9434 |
-
seg.rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol // for sorting only
|
9435 |
-
;
|
9436 |
-
(levels[j] || (levels[j] = [])).push(seg);
|
9437 |
-
}
|
9438 |
-
// order segments left-to-right. very important if calendar is RTL
|
9439 |
-
for (j = 0; j < levels.length; j++) {
|
9440 |
-
levels[j].sort(compareDaySegCols);
|
9441 |
-
}
|
9442 |
-
return levels;
|
9443 |
-
};
|
9444 |
-
// Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row
|
9445 |
-
DayGridEventRenderer.prototype.groupSegRows = function (segs) {
|
9446 |
-
var segRows = [];
|
9447 |
-
var i;
|
9448 |
-
for (i = 0; i < this.dayGrid.rowCnt; i++) {
|
9449 |
-
segRows.push([]);
|
9450 |
-
}
|
9451 |
-
for (i = 0; i < segs.length; i++) {
|
9452 |
-
segRows[segs[i].row].push(segs[i]);
|
9453 |
-
}
|
9454 |
-
return segRows;
|
9455 |
-
};
|
9456 |
-
// Computes a default `displayEventEnd` value if one is not expliclty defined
|
9457 |
-
DayGridEventRenderer.prototype.computeDisplayEventEnd = function () {
|
9458 |
-
return this.dayGrid.colCnt === 1; // we'll likely have space if there's only one day
|
9459 |
-
};
|
9460 |
-
return DayGridEventRenderer;
|
9461 |
-
}(SimpleDayGridEventRenderer));
|
9462 |
-
// Computes whether two segments' columns collide. They are assumed to be in the same row.
|
9463 |
-
function isDaySegCollision(seg, otherSegs) {
|
9464 |
-
var i;
|
9465 |
-
var otherSeg;
|
9466 |
-
for (i = 0; i < otherSegs.length; i++) {
|
9467 |
-
otherSeg = otherSegs[i];
|
9468 |
-
if (otherSeg.firstCol <= seg.lastCol &&
|
9469 |
-
otherSeg.lastCol >= seg.firstCol) {
|
9470 |
-
return true;
|
9471 |
-
}
|
9472 |
-
}
|
9473 |
-
return false;
|
9474 |
-
}
|
9475 |
-
// A cmp function for determining the leftmost event
|
9476 |
-
function compareDaySegCols(a, b) {
|
9477 |
-
return a.leftCol - b.leftCol;
|
9478 |
-
}
|
9479 |
-
|
9480 |
-
var DayGridMirrorRenderer = /** @class */ (function (_super) {
|
9481 |
-
__extends(DayGridMirrorRenderer, _super);
|
9482 |
-
function DayGridMirrorRenderer() {
|
9483 |
-
return _super !== null && _super.apply(this, arguments) || this;
|
9484 |
-
}
|
9485 |
-
DayGridMirrorRenderer.prototype.attachSegs = function (segs, mirrorInfo) {
|
9486 |
-
var sourceSeg = mirrorInfo.sourceSeg;
|
9487 |
-
var rowStructs = this.rowStructs = this.renderSegRows(segs);
|
9488 |
-
// inject each new event skeleton into each associated row
|
9489 |
-
this.dayGrid.rowEls.forEach(function (rowNode, row) {
|
9490 |
-
var skeletonEl = core.htmlToElement('<div class="fc-mirror-skeleton"><table></table></div>'); // will be absolutely positioned
|
9491 |
-
var skeletonTopEl;
|
9492 |
-
var skeletonTop;
|
9493 |
-
// If there is an original segment, match the top position. Otherwise, put it at the row's top level
|
9494 |
-
if (sourceSeg && sourceSeg.row === row) {
|
9495 |
-
skeletonTopEl = sourceSeg.el;
|
9496 |
-
}
|
9497 |
-
else {
|
9498 |
-
skeletonTopEl = rowNode.querySelector('.fc-content-skeleton tbody');
|
9499 |
-
if (!skeletonTopEl) { // when no events
|
9500 |
-
skeletonTopEl = rowNode.querySelector('.fc-content-skeleton table');
|
9501 |
-
}
|
9502 |
-
}
|
9503 |
-
skeletonTop = skeletonTopEl.getBoundingClientRect().top -
|
9504 |
-
rowNode.getBoundingClientRect().top; // the offsetParent origin
|
9505 |
-
skeletonEl.style.top = skeletonTop + 'px';
|
9506 |
-
skeletonEl.querySelector('table').appendChild(rowStructs[row].tbodyEl);
|
9507 |
-
rowNode.appendChild(skeletonEl);
|
9508 |
-
});
|
9509 |
-
};
|
9510 |
-
return DayGridMirrorRenderer;
|
9511 |
-
}(DayGridEventRenderer));
|
9512 |
-
|
9513 |
-
var EMPTY_CELL_HTML = '<td style="pointer-events:none"></td>';
|
9514 |
-
var DayGridFillRenderer = /** @class */ (function (_super) {
|
9515 |
-
__extends(DayGridFillRenderer, _super);
|
9516 |
-
function DayGridFillRenderer(dayGrid) {
|
9517 |
-
var _this = _super.call(this, dayGrid.context) || this;
|
9518 |
-
_this.fillSegTag = 'td'; // override the default tag name
|
9519 |
-
_this.dayGrid = dayGrid;
|
9520 |
-
return _this;
|
9521 |
-
}
|
9522 |
-
DayGridFillRenderer.prototype.renderSegs = function (type, segs) {
|
9523 |
-
// don't render timed background events
|
9524 |
-
if (type === 'bgEvent') {
|
9525 |
-
segs = segs.filter(function (seg) {
|
9526 |
-
return seg.eventRange.def.allDay;
|
9527 |
-
});
|
9528 |
-
}
|
9529 |
-
_super.prototype.renderSegs.call(this, type, segs);
|
9530 |
-
};
|
9531 |
-
DayGridFillRenderer.prototype.attachSegs = function (type, segs) {
|
9532 |
-
var els = [];
|
9533 |
-
var i;
|
9534 |
-
var seg;
|
9535 |
-
var skeletonEl;
|
9536 |
-
for (i = 0; i < segs.length; i++) {
|
9537 |
-
seg = segs[i];
|
9538 |
-
skeletonEl = this.renderFillRow(type, seg);
|
9539 |
-
this.dayGrid.rowEls[seg.row].appendChild(skeletonEl);
|
9540 |
-
els.push(skeletonEl);
|
9541 |
-
}
|
9542 |
-
return els;
|
9543 |
-
};
|
9544 |
-
// Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered.
|
9545 |
-
DayGridFillRenderer.prototype.renderFillRow = function (type, seg) {
|
9546 |
-
var dayGrid = this.dayGrid;
|
9547 |
-
var colCnt = dayGrid.colCnt, isRtl = dayGrid.isRtl;
|
9548 |
-
var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol;
|
9549 |
-
var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol;
|
9550 |
-
var startCol = leftCol;
|
9551 |
-
var endCol = rightCol + 1;
|
9552 |
-
var className;
|
9553 |
-
var skeletonEl;
|
9554 |
-
var trEl;
|
9555 |
-
if (type === 'businessHours') {
|
9556 |
-
className = 'bgevent';
|
9557 |
-
}
|
9558 |
-
else {
|
9559 |
-
className = type.toLowerCase();
|
9560 |
-
}
|
9561 |
-
skeletonEl = core.htmlToElement('<div class="fc-' + className + '-skeleton">' +
|
9562 |
-
'<table><tr></tr></table>' +
|
9563 |
-
'</div>');
|
9564 |
-
trEl = skeletonEl.getElementsByTagName('tr')[0];
|
9565 |
-
if (startCol > 0) {
|
9566 |
-
core.appendToElement(trEl,
|
9567 |
-
// will create (startCol + 1) td's
|
9568 |
-
new Array(startCol + 1).join(EMPTY_CELL_HTML));
|
9569 |
-
}
|
9570 |
-
seg.el.colSpan = endCol - startCol;
|
9571 |
-
trEl.appendChild(seg.el);
|
9572 |
-
if (endCol < colCnt) {
|
9573 |
-
core.appendToElement(trEl,
|
9574 |
-
// will create (colCnt - endCol) td's
|
9575 |
-
new Array(colCnt - endCol + 1).join(EMPTY_CELL_HTML));
|
9576 |
-
}
|
9577 |
-
var introHtml = dayGrid.renderProps.renderIntroHtml();
|
9578 |
-
if (introHtml) {
|
9579 |
-
if (dayGrid.isRtl) {
|
9580 |
-
core.appendToElement(trEl, introHtml);
|
9581 |
-
}
|
9582 |
-
else {
|
9583 |
-
core.prependToElement(trEl, introHtml);
|
9584 |
-
}
|
9585 |
-
}
|
9586 |
-
return skeletonEl;
|
9587 |
-
};
|
9588 |
-
return DayGridFillRenderer;
|
9589 |
-
}(core.FillRenderer));
|
9590 |
-
|
9591 |
-
var DayTile = /** @class */ (function (_super) {
|
9592 |
-
__extends(DayTile, _super);
|
9593 |
-
function DayTile(context, el) {
|
9594 |
-
var _this = _super.call(this, context, el) || this;
|
9595 |
-
var eventRenderer = _this.eventRenderer = new DayTileEventRenderer(_this);
|
9596 |
-
var renderFrame = _this.renderFrame = core.memoizeRendering(_this._renderFrame);
|
9597 |
-
_this.renderFgEvents = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderFrame]);
|
9598 |
-
_this.renderEventSelection = core.memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]);
|
9599 |
-
_this.renderEventDrag = core.memoizeRendering(eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [renderFrame]);
|
9600 |
-
_this.renderEventResize = core.memoizeRendering(eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [renderFrame]);
|
9601 |
-
context.calendar.registerInteractiveComponent(_this, {
|
9602 |
-
el: _this.el,
|
9603 |
-
useEventCenter: false
|
9604 |
-
});
|
9605 |
-
return _this;
|
9606 |
-
}
|
9607 |
-
DayTile.prototype.render = function (props) {
|
9608 |
-
this.renderFrame(props.date);
|
9609 |
-
this.renderFgEvents(props.fgSegs);
|
9610 |
-
this.renderEventSelection(props.eventSelection);
|
9611 |
-
this.renderEventDrag(props.eventDragInstances);
|
9612 |
-
this.renderEventResize(props.eventResizeInstances);
|
9613 |
-
};
|
9614 |
-
DayTile.prototype.destroy = function () {
|
9615 |
-
_super.prototype.destroy.call(this);
|
9616 |
-
this.renderFrame.unrender(); // should unrender everything else
|
9617 |
-
this.calendar.unregisterInteractiveComponent(this);
|
9618 |
-
};
|
9619 |
-
DayTile.prototype._renderFrame = function (date) {
|
9620 |
-
var _a = this, theme = _a.theme, dateEnv = _a.dateEnv;
|
9621 |
-
var title = dateEnv.format(date, core.createFormatter(this.opt('dayPopoverFormat')) // TODO: cache
|
9622 |
-
);
|
9623 |
-
this.el.innerHTML =
|
9624 |
-
'<div class="fc-header ' + theme.getClass('popoverHeader') + '">' +
|
9625 |
-
'<span class="fc-title">' +
|
9626 |
-
core.htmlEscape(title) +
|
9627 |
-
'</span>' +
|
9628 |
-
'<span class="fc-close ' + theme.getIconClass('close') + '"></span>' +
|
9629 |
-
'</div>' +
|
9630 |
-
'<div class="fc-body ' + theme.getClass('popoverContent') + '">' +
|
9631 |
-
'<div class="fc-event-container"></div>' +
|
9632 |
-
'</div>';
|
9633 |
-
this.segContainerEl = this.el.querySelector('.fc-event-container');
|
9634 |
-
};
|
9635 |
-
DayTile.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {
|
9636 |
-
var date = this.props.date; // HACK
|
9637 |
-
if (positionLeft < elWidth && positionTop < elHeight) {
|
9638 |
-
return {
|
9639 |
-
component: this,
|
9640 |
-
dateSpan: {
|
9641 |
-
allDay: true,
|
9642 |
-
range: { start: date, end: core.addDays(date, 1) }
|
9643 |
-
},
|
9644 |
-
dayEl: this.el,
|
9645 |
-
rect: {
|
9646 |
-
left: 0,
|
9647 |
-
top: 0,
|
9648 |
-
right: elWidth,
|
9649 |
-
bottom: elHeight
|
9650 |
-
},
|
9651 |
-
layer: 1
|
9652 |
-
};
|
9653 |
-
}
|
9654 |
-
};
|
9655 |
-
return DayTile;
|
9656 |
-
}(core.DateComponent));
|
9657 |
-
var DayTileEventRenderer = /** @class */ (function (_super) {
|
9658 |
-
__extends(DayTileEventRenderer, _super);
|
9659 |
-
function DayTileEventRenderer(dayTile) {
|
9660 |
-
var _this = _super.call(this, dayTile.context) || this;
|
9661 |
-
_this.dayTile = dayTile;
|
9662 |
-
return _this;
|
9663 |
-
}
|
9664 |
-
DayTileEventRenderer.prototype.attachSegs = function (segs) {
|
9665 |
-
for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {
|
9666 |
-
var seg = segs_1[_i];
|
9667 |
-
this.dayTile.segContainerEl.appendChild(seg.el);
|
9668 |
-
}
|
9669 |
-
};
|
9670 |
-
DayTileEventRenderer.prototype.detachSegs = function (segs) {
|
9671 |
-
for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {
|
9672 |
-
var seg = segs_2[_i];
|
9673 |
-
core.removeElement(seg.el);
|
9674 |
-
}
|
9675 |
-
};
|
9676 |
-
return DayTileEventRenderer;
|
9677 |
-
}(SimpleDayGridEventRenderer));
|
9678 |
-
|
9679 |
-
var DayBgRow = /** @class */ (function () {
|
9680 |
-
function DayBgRow(context) {
|
9681 |
-
this.context = context;
|
9682 |
-
}
|
9683 |
-
DayBgRow.prototype.renderHtml = function (props) {
|
9684 |
-
var parts = [];
|
9685 |
-
if (props.renderIntroHtml) {
|
9686 |
-
parts.push(props.renderIntroHtml());
|
9687 |
-
}
|
9688 |
-
for (var _i = 0, _a = props.cells; _i < _a.length; _i++) {
|
9689 |
-
var cell = _a[_i];
|
9690 |
-
parts.push(renderCellHtml(cell.date, props.dateProfile, this.context, cell.htmlAttrs));
|
9691 |
-
}
|
9692 |
-
if (!props.cells.length) {
|
9693 |
-
parts.push('<td class="fc-day ' + this.context.theme.getClass('widgetContent') + '"></td>');
|
9694 |
-
}
|
9695 |
-
if (this.context.options.dir === 'rtl') {
|
9696 |
-
parts.reverse();
|
9697 |
-
}
|
9698 |
-
return '<tr>' + parts.join('') + '</tr>';
|
9699 |
-
};
|
9700 |
-
return DayBgRow;
|
9701 |
-
}());
|
9702 |
-
function renderCellHtml(date, dateProfile, context, otherAttrs) {
|
9703 |
-
var dateEnv = context.dateEnv, theme = context.theme;
|
9704 |
-
var isDateValid = core.rangeContainsMarker(dateProfile.activeRange, date); // TODO: called too frequently. cache somehow.
|
9705 |
-
var classes = core.getDayClasses(date, dateProfile, context);
|
9706 |
-
classes.unshift('fc-day', theme.getClass('widgetContent'));
|
9707 |
-
return '<td class="' + classes.join(' ') + '"' +
|
9708 |
-
(isDateValid ?
|
9709 |
-
' data-date="' + dateEnv.formatIso(date, { omitTime: true }) + '"' :
|
9710 |
-
'') +
|
9711 |
-
(otherAttrs ?
|
9712 |
-
' ' + otherAttrs :
|
9713 |
-
'') +
|
9714 |
-
'></td>';
|
9715 |
-
}
|
9716 |
-
|
9717 |
-
var DAY_NUM_FORMAT = core.createFormatter({ day: 'numeric' });
|
9718 |
-
var WEEK_NUM_FORMAT = core.createFormatter({ week: 'numeric' });
|
9719 |
-
var DayGrid = /** @class */ (function (_super) {
|
9720 |
-
__extends(DayGrid, _super);
|
9721 |
-
function DayGrid(context, el, renderProps) {
|
9722 |
-
var _this = _super.call(this, context, el) || this;
|
9723 |
-
_this.bottomCoordPadding = 0; // hack for extending the hit area for the last row of the coordinate grid
|
9724 |
-
_this.isCellSizesDirty = false;
|
9725 |
-
var eventRenderer = _this.eventRenderer = new DayGridEventRenderer(_this);
|
9726 |
-
var fillRenderer = _this.fillRenderer = new DayGridFillRenderer(_this);
|
9727 |
-
_this.mirrorRenderer = new DayGridMirrorRenderer(_this);
|
9728 |
-
var renderCells = _this.renderCells = core.memoizeRendering(_this._renderCells, _this._unrenderCells);
|
9729 |
-
_this.renderBusinessHours = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'businessHours'), fillRenderer.unrender.bind(fillRenderer, 'businessHours'), [renderCells]);
|
9730 |
-
_this.renderDateSelection = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'highlight'), fillRenderer.unrender.bind(fillRenderer, 'highlight'), [renderCells]);
|
9731 |
-
_this.renderBgEvents = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'bgEvent'), fillRenderer.unrender.bind(fillRenderer, 'bgEvent'), [renderCells]);
|
9732 |
-
_this.renderFgEvents = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderCells]);
|
9733 |
-
_this.renderEventSelection = core.memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]);
|
9734 |
-
_this.renderEventDrag = core.memoizeRendering(_this._renderEventDrag, _this._unrenderEventDrag, [renderCells]);
|
9735 |
-
_this.renderEventResize = core.memoizeRendering(_this._renderEventResize, _this._unrenderEventResize, [renderCells]);
|
9736 |
-
_this.renderProps = renderProps;
|
9737 |
-
return _this;
|
9738 |
-
}
|
9739 |
-
DayGrid.prototype.render = function (props) {
|
9740 |
-
var cells = props.cells;
|
9741 |
-
this.rowCnt = cells.length;
|
9742 |
-
this.colCnt = cells[0].length;
|
9743 |
-
this.renderCells(cells, props.isRigid);
|
9744 |
-
this.renderBusinessHours(props.businessHourSegs);
|
9745 |
-
this.renderDateSelection(props.dateSelectionSegs);
|
9746 |
-
this.renderBgEvents(props.bgEventSegs);
|
9747 |
-
this.renderFgEvents(props.fgEventSegs);
|
9748 |
-
this.renderEventSelection(props.eventSelection);
|
9749 |
-
this.renderEventDrag(props.eventDrag);
|
9750 |
-
this.renderEventResize(props.eventResize);
|
9751 |
-
if (this.segPopoverTile) {
|
9752 |
-
this.updateSegPopoverTile();
|
9753 |
-
}
|
9754 |
-
};
|
9755 |
-
DayGrid.prototype.destroy = function () {
|
9756 |
-
_super.prototype.destroy.call(this);
|
9757 |
-
this.renderCells.unrender(); // will unrender everything else
|
9758 |
-
};
|
9759 |
-
DayGrid.prototype.getCellRange = function (row, col) {
|
9760 |
-
var start = this.props.cells[row][col].date;
|
9761 |
-
var end = core.addDays(start, 1);
|
9762 |
-
return { start: start, end: end };
|
9763 |
-
};
|
9764 |
-
DayGrid.prototype.updateSegPopoverTile = function (date, segs) {
|
9765 |
-
var ownProps = this.props;
|
9766 |
-
this.segPopoverTile.receiveProps({
|
9767 |
-
date: date || this.segPopoverTile.props.date,
|
9768 |
-
fgSegs: segs || this.segPopoverTile.props.fgSegs,
|
9769 |
-
eventSelection: ownProps.eventSelection,
|
9770 |
-
eventDragInstances: ownProps.eventDrag ? ownProps.eventDrag.affectedInstances : null,
|
9771 |
-
eventResizeInstances: ownProps.eventResize ? ownProps.eventResize.affectedInstances : null
|
9772 |
-
});
|
9773 |
-
};
|
9774 |
-
/* Date Rendering
|
9775 |
-
------------------------------------------------------------------------------------------------------------------*/
|
9776 |
-
DayGrid.prototype._renderCells = function (cells, isRigid) {
|
9777 |
-
var _a = this, view = _a.view, dateEnv = _a.dateEnv;
|
9778 |
-
var _b = this, rowCnt = _b.rowCnt, colCnt = _b.colCnt;
|
9779 |
-
var html = '';
|
9780 |
-
var row;
|
9781 |
-
var col;
|
9782 |
-
for (row = 0; row < rowCnt; row++) {
|
9783 |
-
html += this.renderDayRowHtml(row, isRigid);
|
9784 |
-
}
|
9785 |
-
this.el.innerHTML = html;
|
9786 |
-
this.rowEls = core.findElements(this.el, '.fc-row');
|
9787 |
-
this.cellEls = core.findElements(this.el, '.fc-day, .fc-disabled-day');
|
9788 |
-
if (this.isRtl) {
|
9789 |
-
this.cellEls.reverse();
|
9790 |
-
}
|
9791 |
-
this.rowPositions = new core.PositionCache(this.el, this.rowEls, false, true // vertical
|
9792 |
-
);
|
9793 |
-
this.colPositions = new core.PositionCache(this.el, this.cellEls.slice(0, colCnt), // only the first row
|
9794 |
-
true, false // horizontal
|
9795 |
-
);
|
9796 |
-
// trigger dayRender with each cell's element
|
9797 |
-
for (row = 0; row < rowCnt; row++) {
|
9798 |
-
for (col = 0; col < colCnt; col++) {
|
9799 |
-
this.publiclyTrigger('dayRender', [
|
9800 |
-
{
|
9801 |
-
date: dateEnv.toDate(cells[row][col].date),
|
9802 |
-
el: this.getCellEl(row, col),
|
9803 |
-
view: view
|
9804 |
-
}
|
9805 |
-
]);
|
9806 |
-
}
|
9807 |
-
}
|
9808 |
-
this.isCellSizesDirty = true;
|
9809 |
-
};
|
9810 |
-
DayGrid.prototype._unrenderCells = function () {
|
9811 |
-
this.removeSegPopover();
|
9812 |
-
};
|
9813 |
-
// Generates the HTML for a single row, which is a div that wraps a table.
|
9814 |
-
// `row` is the row number.
|
9815 |
-
DayGrid.prototype.renderDayRowHtml = function (row, isRigid) {
|
9816 |
-
var theme = this.theme;
|
9817 |
-
var classes = ['fc-row', 'fc-week', theme.getClass('dayRow')];
|
9818 |
-
if (isRigid) {
|
9819 |
-
classes.push('fc-rigid');
|
9820 |
-
}
|
9821 |
-
var bgRow = new DayBgRow(this.context);
|
9822 |
-
return '' +
|
9823 |
-
'<div class="' + classes.join(' ') + '">' +
|
9824 |
-
'<div class="fc-bg">' +
|
9825 |
-
'<table class="' + theme.getClass('tableGrid') + '">' +
|
9826 |
-
bgRow.renderHtml({
|
9827 |
-
cells: this.props.cells[row],
|
9828 |
-
dateProfile: this.props.dateProfile,
|
9829 |
-
renderIntroHtml: this.renderProps.renderBgIntroHtml
|
9830 |
-
}) +
|
9831 |
-
'</table>' +
|
9832 |
-
'</div>' +
|
9833 |
-
'<div class="fc-content-skeleton">' +
|
9834 |
-
'<table>' +
|
9835 |
-
(this.getIsNumbersVisible() ?
|
9836 |
-
'<thead>' +
|
9837 |
-
this.renderNumberTrHtml(row) +
|
9838 |
-
'</thead>' :
|
9839 |
-
'') +
|
9840 |
-
'</table>' +
|
9841 |
-
'</div>' +
|
9842 |
-
'</div>';
|
9843 |
-
};
|
9844 |
-
DayGrid.prototype.getIsNumbersVisible = function () {
|
9845 |
-
return this.getIsDayNumbersVisible() ||
|
9846 |
-
this.renderProps.cellWeekNumbersVisible ||
|
9847 |
-
this.renderProps.colWeekNumbersVisible;
|
9848 |
-
};
|
9849 |
-
DayGrid.prototype.getIsDayNumbersVisible = function () {
|
9850 |
-
return this.rowCnt > 1;
|
9851 |
-
};
|
9852 |
-
/* Grid Number Rendering
|
9853 |
-
------------------------------------------------------------------------------------------------------------------*/
|
9854 |
-
DayGrid.prototype.renderNumberTrHtml = function (row) {
|
9855 |
-
var intro = this.renderProps.renderNumberIntroHtml(row, this);
|
9856 |
-
return '' +
|
9857 |
-
'<tr>' +
|
9858 |
-
(this.isRtl ? '' : intro) +
|
9859 |
-
this.renderNumberCellsHtml(row) +
|
9860 |
-
(this.isRtl ? intro : '') +
|
9861 |
-
'</tr>';
|
9862 |
-
};
|
9863 |
-
DayGrid.prototype.renderNumberCellsHtml = function (row) {
|
9864 |
-
var htmls = [];
|
9865 |
-
var col;
|
9866 |
-
var date;
|
9867 |
-
for (col = 0; col < this.colCnt; col++) {
|
9868 |
-
date = this.props.cells[row][col].date;
|
9869 |
-
htmls.push(this.renderNumberCellHtml(date));
|
9870 |
-
}
|
9871 |
-
if (this.isRtl) {
|
9872 |
-
htmls.reverse();
|
9873 |
-
}
|
9874 |
-
return htmls.join('');
|
9875 |
-
};
|
9876 |
-
// Generates the HTML for the <td>s of the "number" row in the DayGrid's content skeleton.
|
9877 |
-
// The number row will only exist if either day numbers or week numbers are turned on.
|
9878 |
-
DayGrid.prototype.renderNumberCellHtml = function (date) {
|
9879 |
-
var _a = this, view = _a.view, dateEnv = _a.dateEnv;
|
9880 |
-
var html = '';
|
9881 |
-
var isDateValid = core.rangeContainsMarker(this.props.dateProfile.activeRange, date); // TODO: called too frequently. cache somehow.
|
9882 |
-
var isDayNumberVisible = this.getIsDayNumbersVisible() && isDateValid;
|
9883 |
-
var classes;
|
9884 |
-
var weekCalcFirstDow;
|
9885 |
-
if (!isDayNumberVisible && !this.renderProps.cellWeekNumbersVisible) {
|
9886 |
-
// no numbers in day cell (week number must be along the side)
|
9887 |
-
return '<td></td>'; // will create an empty space above events :(
|
9888 |
-
}
|
9889 |
-
classes = core.getDayClasses(date, this.props.dateProfile, this.context);
|
9890 |
-
classes.unshift('fc-day-top');
|
9891 |
-
if (this.renderProps.cellWeekNumbersVisible) {
|
9892 |
-
weekCalcFirstDow = dateEnv.weekDow;
|
9893 |
-
}
|
9894 |
-
html += '<td class="' + classes.join(' ') + '"' +
|
9895 |
-
(isDateValid ?
|
9896 |
-
' data-date="' + dateEnv.formatIso(date, { omitTime: true }) + '"' :
|
9897 |
-
'') +
|
9898 |
-
'>';
|
9899 |
-
if (this.renderProps.cellWeekNumbersVisible && (date.getUTCDay() === weekCalcFirstDow)) {
|
9900 |
-
html += core.buildGotoAnchorHtml(view, { date: date, type: 'week' }, { 'class': 'fc-week-number' }, dateEnv.format(date, WEEK_NUM_FORMAT) // inner HTML
|
9901 |
-
);
|
9902 |
-
}
|
9903 |
-
if (isDayNumberVisible) {
|
9904 |
-
html += core.buildGotoAnchorHtml(view, date, { 'class': 'fc-day-number' }, dateEnv.format(date, DAY_NUM_FORMAT) // inner HTML
|
9905 |
-
);
|
9906 |
-
}
|
9907 |
-
html += '</td>';
|
9908 |
-
return html;
|
9909 |
-
};
|
9910 |
-
/* Sizing
|
9911 |
-
------------------------------------------------------------------------------------------------------------------*/
|
9912 |
-
DayGrid.prototype.updateSize = function (isResize) {
|
9913 |
-
var _a = this, fillRenderer = _a.fillRenderer, eventRenderer = _a.eventRenderer, mirrorRenderer = _a.mirrorRenderer;
|
9914 |
-
if (isResize ||
|
9915 |
-
this.isCellSizesDirty ||
|
9916 |
-
this.view.calendar.isEventsUpdated // hack
|
9917 |
-
) {
|
9918 |
-
this.buildPositionCaches();
|
9919 |
-
this.isCellSizesDirty = false;
|
9920 |
-
}
|
9921 |
-
fillRenderer.computeSizes(isResize);
|
9922 |
-
eventRenderer.computeSizes(isResize);
|
9923 |
-
mirrorRenderer.computeSizes(isResize);
|
9924 |
-
fillRenderer.assignSizes(isResize);
|
9925 |
-
eventRenderer.assignSizes(isResize);
|
9926 |
-
mirrorRenderer.assignSizes(isResize);
|
9927 |
-
};
|
9928 |
-
DayGrid.prototype.buildPositionCaches = function () {
|
9929 |
-
this.buildColPositions();
|
9930 |
-
this.buildRowPositions();
|
9931 |
-
};
|
9932 |
-
DayGrid.prototype.buildColPositions = function () {
|
9933 |
-
this.colPositions.build();
|
9934 |
-
};
|
9935 |
-
DayGrid.prototype.buildRowPositions = function () {
|
9936 |
-
this.rowPositions.build();
|
9937 |
-
this.rowPositions.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack
|
9938 |
-
};
|
9939 |
-
/* Hit System
|
9940 |
-
------------------------------------------------------------------------------------------------------------------*/
|
9941 |
-
DayGrid.prototype.positionToHit = function (leftPosition, topPosition) {
|
9942 |
-
var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions;
|
9943 |
-
var col = colPositions.leftToIndex(leftPosition);
|
9944 |
-
var row = rowPositions.topToIndex(topPosition);
|
9945 |
-
if (row != null && col != null) {
|
9946 |
-
return {
|
9947 |
-
row: row,
|
9948 |
-
col: col,
|
9949 |
-
dateSpan: {
|
9950 |
-
range: this.getCellRange(row, col),
|
9951 |
-
allDay: true
|
9952 |
-
},
|
9953 |
-
dayEl: this.getCellEl(row, col),
|
9954 |
-
relativeRect: {
|
9955 |
-
left: colPositions.lefts[col],
|
9956 |
-
right: colPositions.rights[col],
|
9957 |
-
top: rowPositions.tops[row],
|
9958 |
-
bottom: rowPositions.bottoms[row]
|
9959 |
-
}
|
9960 |
-
};
|
9961 |
-
}
|
9962 |
-
};
|
9963 |
-
/* Cell System
|
9964 |
-
------------------------------------------------------------------------------------------------------------------*/
|
9965 |
-
// FYI: the first column is the leftmost column, regardless of date
|
9966 |
-
DayGrid.prototype.getCellEl = function (row, col) {
|
9967 |
-
return this.cellEls[row * this.colCnt + col];
|
9968 |
-
};
|
9969 |
-
/* Event Drag Visualization
|
9970 |
-
------------------------------------------------------------------------------------------------------------------*/
|
9971 |
-
DayGrid.prototype._renderEventDrag = function (state) {
|
9972 |
-
if (state) {
|
9973 |
-
this.eventRenderer.hideByHash(state.affectedInstances);
|
9974 |
-
this.fillRenderer.renderSegs('highlight', state.segs);
|
9975 |
-
}
|
9976 |
-
};
|
9977 |
-
DayGrid.prototype._unrenderEventDrag = function (state) {
|
9978 |
-
if (state) {
|
9979 |
-
this.eventRenderer.showByHash(state.affectedInstances);
|
9980 |
-
this.fillRenderer.unrender('highlight');
|
9981 |
-
}
|
9982 |
-
};
|
9983 |
-
/* Event Resize Visualization
|
9984 |
-
------------------------------------------------------------------------------------------------------------------*/
|
9985 |
-
DayGrid.prototype._renderEventResize = function (state) {
|
9986 |
-
if (state) {
|
9987 |
-
this.eventRenderer.hideByHash(state.affectedInstances);
|
9988 |
-
this.fillRenderer.renderSegs('highlight', state.segs);
|
9989 |
-
this.mirrorRenderer.renderSegs(state.segs, { isResizing: true, sourceSeg: state.sourceSeg });
|
9990 |
-
}
|
9991 |
-
};
|
9992 |
-
DayGrid.prototype._unrenderEventResize = function (state) {
|
9993 |
-
if (state) {
|
9994 |
-
this.eventRenderer.showByHash(state.affectedInstances);
|
9995 |
-
this.fillRenderer.unrender('highlight');
|
9996 |
-
this.mirrorRenderer.unrender(state.segs, { isResizing: true, sourceSeg: state.sourceSeg });
|
9997 |
-
}
|
9998 |
-
};
|
9999 |
-
/* More+ Link Popover
|
10000 |
-
------------------------------------------------------------------------------------------------------------------*/
|
10001 |
-
DayGrid.prototype.removeSegPopover = function () {
|
10002 |
-
if (this.segPopover) {
|
10003 |
-
this.segPopover.hide(); // in handler, will call segPopover's removeElement
|
10004 |
-
}
|
10005 |
-
};
|
10006 |
-
// Limits the number of "levels" (vertically stacking layers of events) for each row of the grid.
|
10007 |
-
// `levelLimit` can be false (don't limit), a number, or true (should be computed).
|
10008 |
-
DayGrid.prototype.limitRows = function (levelLimit) {
|
10009 |
-
var rowStructs = this.eventRenderer.rowStructs || [];
|
10010 |
-
var row; // row #
|
10011 |
-
var rowLevelLimit;
|
10012 |
-
for (row = 0; row < rowStructs.length; row++) {
|
10013 |
-
this.unlimitRow(row);
|
10014 |
-
if (!levelLimit) {
|
10015 |
-
rowLevelLimit = false;
|
10016 |
-
}
|
10017 |
-
else if (typeof levelLimit === 'number') {
|
10018 |
-
rowLevelLimit = levelLimit;
|
10019 |
-
}
|
10020 |
-
else {
|
10021 |
-
rowLevelLimit = this.computeRowLevelLimit(row);
|
10022 |
-
}
|
10023 |
-
if (rowLevelLimit !== false) {
|
10024 |
-
this.limitRow(row, rowLevelLimit);
|
10025 |
-
}
|
10026 |
-
}
|
10027 |
-
};
|
10028 |
-
// Computes the number of levels a row will accomodate without going outside its bounds.
|
10029 |
-
// Assumes the row is "rigid" (maintains a constant height regardless of what is inside).
|
10030 |
-
// `row` is the row number.
|
10031 |
-
DayGrid.prototype.computeRowLevelLimit = function (row) {
|
10032 |
-
var rowEl = this.rowEls[row]; // the containing "fake" row div
|
10033 |
-
var rowBottom = rowEl.getBoundingClientRect().bottom; // relative to viewport!
|
10034 |
-
var trEls = core.findChildren(this.eventRenderer.rowStructs[row].tbodyEl);
|
10035 |
-
var i;
|
10036 |
-
var trEl;
|
10037 |
-
// Reveal one level <tr> at a time and stop when we find one out of bounds
|
10038 |
-
for (i = 0; i < trEls.length; i++) {
|
10039 |
-
trEl = trEls[i];
|
10040 |
-
trEl.classList.remove('fc-limited'); // reset to original state (reveal)
|
10041 |
-
if (trEl.getBoundingClientRect().bottom > rowBottom) {
|
10042 |
-
return i;
|
10043 |
-
}
|
10044 |
-
}
|
10045 |
-
return false; // should not limit at all
|
10046 |
-
};
|
10047 |
-
// Limits the given grid row to the maximum number of levels and injects "more" links if necessary.
|
10048 |
-
// `row` is the row number.
|
10049 |
-
// `levelLimit` is a number for the maximum (inclusive) number of levels allowed.
|
10050 |
-
DayGrid.prototype.limitRow = function (row, levelLimit) {
|
10051 |
-
var _this = this;
|
10052 |
-
var _a = this, colCnt = _a.colCnt, isRtl = _a.isRtl;
|
10053 |
-
var rowStruct = this.eventRenderer.rowStructs[row];
|
10054 |
-
var moreNodes = []; // array of "more" <a> links and <td> DOM nodes
|
10055 |
-
var col = 0; // col #, left-to-right (not chronologically)
|
10056 |
-
var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right
|
10057 |
-
var cellMatrix; // a matrix (by level, then column) of all <td> elements in the row
|
10058 |
-
var limitedNodes; // array of temporarily hidden level <tr> and segment <td> DOM nodes
|
10059 |
-
var i;
|
10060 |
-
var seg;
|
10061 |
-
var segsBelow; // array of segment objects below `seg` in the current `col`
|
10062 |
-
var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies
|
10063 |
-
var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column)
|
10064 |
-
var td;
|
10065 |
-
var rowSpan;
|
10066 |
-
var segMoreNodes; // array of "more" <td> cells that will stand-in for the current seg's cell
|
10067 |
-
var j;
|
10068 |
-
var moreTd;
|
10069 |
-
var moreWrap;
|
10070 |
-
var moreLink;
|
10071 |
-
// Iterates through empty level cells and places "more" links inside if need be
|
10072 |
-
var emptyCellsUntil = function (endCol) {
|
10073 |
-
while (col < endCol) {
|
10074 |
-
segsBelow = _this.getCellSegs(row, col, levelLimit);
|
10075 |
-
if (segsBelow.length) {
|
10076 |
-
td = cellMatrix[levelLimit - 1][col];
|
10077 |
-
moreLink = _this.renderMoreLink(row, col, segsBelow);
|
10078 |
-
moreWrap = core.createElement('div', null, moreLink);
|
10079 |
-
td.appendChild(moreWrap);
|
10080 |
-
moreNodes.push(moreWrap);
|
10081 |
-
}
|
10082 |
-
col++;
|
10083 |
-
}
|
10084 |
-
};
|
10085 |
-
if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit?
|
10086 |
-
levelSegs = rowStruct.segLevels[levelLimit - 1];
|
10087 |
-
cellMatrix = rowStruct.cellMatrix;
|
10088 |
-
limitedNodes = core.findChildren(rowStruct.tbodyEl).slice(levelLimit); // get level <tr> elements past the limit
|
10089 |
-
limitedNodes.forEach(function (node) {
|
10090 |
-
node.classList.add('fc-limited'); // hide elements and get a simple DOM-nodes array
|
10091 |
-
});
|
10092 |
-
// iterate though segments in the last allowable level
|
10093 |
-
for (i = 0; i < levelSegs.length; i++) {
|
10094 |
-
seg = levelSegs[i];
|
10095 |
-
var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol;
|
10096 |
-
var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol;
|
10097 |
-
emptyCellsUntil(leftCol); // process empty cells before the segment
|
10098 |
-
// determine *all* segments below `seg` that occupy the same columns
|
10099 |
-
colSegsBelow = [];
|
10100 |
-
totalSegsBelow = 0;
|
10101 |
-
while (col <= rightCol) {
|
10102 |
-
segsBelow = this.getCellSegs(row, col, levelLimit);
|
10103 |
-
colSegsBelow.push(segsBelow);
|
10104 |
-
totalSegsBelow += segsBelow.length;
|
10105 |
-
col++;
|
10106 |
-
}
|
10107 |
-
if (totalSegsBelow) { // do we need to replace this segment with one or many "more" links?
|
10108 |
-
td = cellMatrix[levelLimit - 1][leftCol]; // the segment's parent cell
|
10109 |
-
rowSpan = td.rowSpan || 1;
|
10110 |
-
segMoreNodes = [];
|
10111 |
-
// make a replacement <td> for each column the segment occupies. will be one for each colspan
|
10112 |
-
for (j = 0; j < colSegsBelow.length; j++) {
|
10113 |
-
moreTd = core.createElement('td', { className: 'fc-more-cell', rowSpan: rowSpan });
|
10114 |
-
segsBelow = colSegsBelow[j];
|
10115 |
-
moreLink = this.renderMoreLink(row, leftCol + j, [seg].concat(segsBelow) // count seg as hidden too
|
10116 |
-
);
|
10117 |
-
moreWrap = core.createElement('div', null, moreLink);
|
10118 |
-
moreTd.appendChild(moreWrap);
|
10119 |
-
segMoreNodes.push(moreTd);
|
10120 |
-
moreNodes.push(moreTd);
|
10121 |
-
}
|
10122 |
-
td.classList.add('fc-limited');
|
10123 |
-
core.insertAfterElement(td, segMoreNodes);
|
10124 |
-
limitedNodes.push(td);
|
10125 |
-
}
|
10126 |
-
}
|
10127 |
-
emptyCellsUntil(this.colCnt); // finish off the level
|
10128 |
-
rowStruct.moreEls = moreNodes; // for easy undoing later
|
10129 |
-
rowStruct.limitedEls = limitedNodes; // for easy undoing later
|
10130 |
-
}
|
10131 |
-
};
|
10132 |
-
// Reveals all levels and removes all "more"-related elements for a grid's row.
|
10133 |
-
// `row` is a row number.
|
10134 |
-
DayGrid.prototype.unlimitRow = function (row) {
|
10135 |
-
var rowStruct = this.eventRenderer.rowStructs[row];
|
10136 |
-
if (rowStruct.moreEls) {
|
10137 |
-
rowStruct.moreEls.forEach(core.removeElement);
|
10138 |
-
rowStruct.moreEls = null;
|
10139 |
-
}
|
10140 |
-
if (rowStruct.limitedEls) {
|
10141 |
-
rowStruct.limitedEls.forEach(function (limitedEl) {
|
10142 |
-
limitedEl.classList.remove('fc-limited');
|
10143 |
-
});
|
10144 |
-
rowStruct.limitedEls = null;
|
10145 |
-
}
|
10146 |
-
};
|
10147 |
-
// Renders an <a> element that represents hidden event element for a cell.
|
10148 |
-
// Responsible for attaching click handler as well.
|
10149 |
-
DayGrid.prototype.renderMoreLink = function (row, col, hiddenSegs) {
|
10150 |
-
var _this = this;
|
10151 |
-
var _a = this, view = _a.view, dateEnv = _a.dateEnv;
|
10152 |
-
var a = core.createElement('a', { className: 'fc-more' });
|
10153 |
-
a.innerText = this.getMoreLinkText(hiddenSegs.length);
|
10154 |
-
a.addEventListener('click', function (ev) {
|
10155 |
-
var clickOption = _this.opt('eventLimitClick');
|
10156 |
-
var _col = _this.isRtl ? _this.colCnt - col - 1 : col; // HACK: props.cells has different dir system?
|
10157 |
-
var date = _this.props.cells[row][_col].date;
|
10158 |
-
var moreEl = ev.currentTarget;
|
10159 |
-
var dayEl = _this.getCellEl(row, col);
|
10160 |
-
var allSegs = _this.getCellSegs(row, col);
|
10161 |
-
// rescope the segments to be within the cell's date
|
10162 |
-
var reslicedAllSegs = _this.resliceDaySegs(allSegs, date);
|
10163 |
-
var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date);
|
10164 |
-
if (typeof clickOption === 'function') {
|
10165 |
-
// the returned value can be an atomic option
|
10166 |
-
clickOption = _this.publiclyTrigger('eventLimitClick', [
|
10167 |
-
{
|
10168 |
-
date: dateEnv.toDate(date),
|
10169 |
-
allDay: true,
|
10170 |
-
dayEl: dayEl,
|
10171 |
-
moreEl: moreEl,
|
10172 |
-
segs: reslicedAllSegs,
|
10173 |
-
hiddenSegs: reslicedHiddenSegs,
|
10174 |
-
jsEvent: ev,
|
10175 |
-
view: view
|
10176 |
-
}
|
10177 |
-
]);
|
10178 |
-
}
|
10179 |
-
if (clickOption === 'popover') {
|
10180 |
-
_this.showSegPopover(row, col, moreEl, reslicedAllSegs);
|
10181 |
-
}
|
10182 |
-
else if (typeof clickOption === 'string') { // a view name
|
10183 |
-
view.calendar.zoomTo(date, clickOption);
|
10184 |
-
}
|
10185 |
-
});
|
10186 |
-
return a;
|
10187 |
-
};
|
10188 |
-
// Reveals the popover that displays all events within a cell
|
10189 |
-
DayGrid.prototype.showSegPopover = function (row, col, moreLink, segs) {
|
10190 |
-
var _this = this;
|
10191 |
-
var _a = this, calendar = _a.calendar, view = _a.view, theme = _a.theme;
|
10192 |
-
var _col = this.isRtl ? this.colCnt - col - 1 : col; // HACK: props.cells has different dir system?
|
10193 |
-
var moreWrap = moreLink.parentNode; // the <div> wrapper around the <a>
|
10194 |
-
var topEl; // the element we want to match the top coordinate of
|
10195 |
-
var options;
|
10196 |
-
if (this.rowCnt === 1) {
|
10197 |
-
topEl = view.el; // will cause the popover to cover any sort of header
|
10198 |
-
}
|
10199 |
-
else {
|
10200 |
-
topEl = this.rowEls[row]; // will align with top of row
|
10201 |
-
}
|
10202 |
-
options = {
|
10203 |
-
className: 'fc-more-popover ' + theme.getClass('popover'),
|
10204 |
-
parentEl: view.el,
|
10205 |
-
top: core.computeRect(topEl).top,
|
10206 |
-
autoHide: true,
|
10207 |
-
content: function (el) {
|
10208 |
-
_this.segPopoverTile = new DayTile(_this.context, el);
|
10209 |
-
_this.updateSegPopoverTile(_this.props.cells[row][_col].date, segs);
|
10210 |
-
},
|
10211 |
-
hide: function () {
|
10212 |
-
_this.segPopoverTile.destroy();
|
10213 |
-
_this.segPopoverTile = null;
|
10214 |
-
_this.segPopover.destroy();
|
10215 |
-
_this.segPopover = null;
|
10216 |
-
}
|
10217 |
-
};
|
10218 |
-
// Determine horizontal coordinate.
|
10219 |
-
// We use the moreWrap instead of the <td> to avoid border confusion.
|
10220 |
-
if (this.isRtl) {
|
10221 |
-
options.right = core.computeRect(moreWrap).right + 1; // +1 to be over cell border
|
10222 |
-
}
|
10223 |
-
else {
|
10224 |
-
options.left = core.computeRect(moreWrap).left - 1; // -1 to be over cell border
|
10225 |
-
}
|
10226 |
-
this.segPopover = new Popover(options);
|
10227 |
-
this.segPopover.show();
|
10228 |
-
calendar.releaseAfterSizingTriggers(); // hack for eventPositioned
|
10229 |
-
};
|
10230 |
-
// Given the events within an array of segment objects, reslice them to be in a single day
|
10231 |
-
DayGrid.prototype.resliceDaySegs = function (segs, dayDate) {
|
10232 |
-
var dayStart = dayDate;
|
10233 |
-
var dayEnd = core.addDays(dayStart, 1);
|
10234 |
-
var dayRange = { start: dayStart, end: dayEnd };
|
10235 |
-
var newSegs = [];
|
10236 |
-
for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {
|
10237 |
-
var seg = segs_1[_i];
|
10238 |
-
var eventRange = seg.eventRange;
|
10239 |
-
var origRange = eventRange.range;
|
10240 |
-
var slicedRange = core.intersectRanges(origRange, dayRange);
|
10241 |
-
if (slicedRange) {
|
10242 |
-
newSegs.push(__assign({}, seg, { eventRange: {
|
10243 |
-
def: eventRange.def,
|
10244 |
-
ui: __assign({}, eventRange.ui, { durationEditable: false }),
|
10245 |
-
instance: eventRange.instance,
|
10246 |
-
range: slicedRange
|
10247 |
-
}, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() }));
|
10248 |
-
}
|
10249 |
-
}
|
10250 |
-
return newSegs;
|
10251 |
-
};
|
10252 |
-
// Generates the text that should be inside a "more" link, given the number of events it represents
|
10253 |
-
DayGrid.prototype.getMoreLinkText = function (num) {
|
10254 |
-
var opt = this.opt('eventLimitText');
|
10255 |
-
if (typeof opt === 'function') {
|
10256 |
-
return opt(num);
|
10257 |
-
}
|
10258 |
-
else {
|
10259 |
-
return '+' + num + ' ' + opt;
|
10260 |
-
}
|
10261 |
-
};
|
10262 |
-
// Returns segments within a given cell.
|
10263 |
-
// If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs.
|
10264 |
-
DayGrid.prototype.getCellSegs = function (row, col, startLevel) {
|
10265 |
-
var segMatrix = this.eventRenderer.rowStructs[row].segMatrix;
|
10266 |
-
var level = startLevel || 0;
|
10267 |
-
var segs = [];
|
10268 |
-
var seg;
|
10269 |
-
while (level < segMatrix.length) {
|
10270 |
-
seg = segMatrix[level][col];
|
10271 |
-
if (seg) {
|
10272 |
-
segs.push(seg);
|
10273 |
-
}
|
10274 |
-
level++;
|
10275 |
-
}
|
10276 |
-
return segs;
|
10277 |
-
};
|
10278 |
-
return DayGrid;
|
10279 |
-
}(core.DateComponent));
|
10280 |
-
|
10281 |
-
var WEEK_NUM_FORMAT$1 = core.createFormatter({ week: 'numeric' });
|
10282 |
-
/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.
|
10283 |
-
----------------------------------------------------------------------------------------------------------------------*/
|
10284 |
-
// It is a manager for a DayGrid subcomponent, which does most of the heavy lifting.
|
10285 |
-
// It is responsible for managing width/height.
|
10286 |
-
var DayGridView = /** @class */ (function (_super) {
|
10287 |
-
__extends(DayGridView, _super);
|
10288 |
-
function DayGridView(context, viewSpec, dateProfileGenerator, parentEl) {
|
10289 |
-
var _this = _super.call(this, context, viewSpec, dateProfileGenerator, parentEl) || this;
|
10290 |
-
/* Header Rendering
|
10291 |
-
------------------------------------------------------------------------------------------------------------------*/
|
10292 |
-
// Generates the HTML that will go before the day-of week header cells
|
10293 |
-
_this.renderHeadIntroHtml = function () {
|
10294 |
-
var theme = _this.theme;
|
10295 |
-
if (_this.colWeekNumbersVisible) {
|
10296 |
-
return '' +
|
10297 |
-
'<th class="fc-week-number ' + theme.getClass('widgetHeader') + '" ' + _this.weekNumberStyleAttr() + '>' +
|
10298 |
-
'<span>' + // needed for matchCellWidths
|
10299 |
-
core.htmlEscape(_this.opt('weekLabel')) +
|
10300 |
-
'</span>' +
|
10301 |
-
'</th>';
|
10302 |
-
}
|
10303 |
-
return '';
|
10304 |
-
};
|
10305 |
-
/* Day Grid Rendering
|
10306 |
-
------------------------------------------------------------------------------------------------------------------*/
|
10307 |
-
// Generates the HTML that will go before content-skeleton cells that display the day/week numbers
|
10308 |
-
_this.renderDayGridNumberIntroHtml = function (row, dayGrid) {
|
10309 |
-
var dateEnv = _this.dateEnv;
|
10310 |
-
var weekStart = dayGrid.props.cells[row][0].date;
|
10311 |
-
if (_this.colWeekNumbersVisible) {
|
10312 |
-
return '' +
|
10313 |
-
'<td class="fc-week-number" ' + _this.weekNumberStyleAttr() + '>' +
|
10314 |
-
core.buildGotoAnchorHtml(// aside from link, important for matchCellWidths
|
10315 |
-
_this, { date: weekStart, type: 'week', forceOff: dayGrid.colCnt === 1 }, dateEnv.format(weekStart, WEEK_NUM_FORMAT$1) // inner HTML
|
10316 |
-
) +
|
10317 |
-
'</td>';
|
10318 |
-
}
|
10319 |
-
return '';
|
10320 |
-
};
|
10321 |
-
// Generates the HTML that goes before the day bg cells for each day-row
|
10322 |
-
_this.renderDayGridBgIntroHtml = function () {
|
10323 |
-
var theme = _this.theme;
|
10324 |
-
if (_this.colWeekNumbersVisible) {
|
10325 |
-
return '<td class="fc-week-number ' + theme.getClass('widgetContent') + '" ' + _this.weekNumberStyleAttr() + '></td>';
|
10326 |
-
}
|
10327 |
-
return '';
|
10328 |
-
};
|
10329 |
-
// Generates the HTML that goes before every other type of row generated by DayGrid.
|
10330 |
-
// Affects mirror-skeleton and highlight-skeleton rows.
|
10331 |
-
_this.renderDayGridIntroHtml = function () {
|
10332 |
-
if (_this.colWeekNumbersVisible) {
|
10333 |
-
return '<td class="fc-week-number" ' + _this.weekNumberStyleAttr() + '></td>';
|
10334 |
-
}
|
10335 |
-
return '';
|
10336 |
-
};
|
10337 |
-
_this.el.classList.add('fc-dayGrid-view');
|
10338 |
-
_this.el.innerHTML = _this.renderSkeletonHtml();
|
10339 |
-
_this.scroller = new core.ScrollComponent('hidden', // overflow x
|
10340 |
-
'auto' // overflow y
|
10341 |
-
);
|
10342 |
-
var dayGridContainerEl = _this.scroller.el;
|
10343 |
-
_this.el.querySelector('.fc-body > tr > td').appendChild(dayGridContainerEl);
|
10344 |
-
dayGridContainerEl.classList.add('fc-day-grid-container');
|
10345 |
-
var dayGridEl = core.createElement('div', { className: 'fc-day-grid' });
|
10346 |
-
dayGridContainerEl.appendChild(dayGridEl);
|
10347 |
-
var cellWeekNumbersVisible;
|
10348 |
-
if (_this.opt('weekNumbers')) {
|
10349 |
-
if (_this.opt('weekNumbersWithinDays')) {
|
10350 |
-
cellWeekNumbersVisible = true;
|
10351 |
-
_this.colWeekNumbersVisible = false;
|
10352 |
-
}
|
10353 |
-
else {
|
10354 |
-
cellWeekNumbersVisible = false;
|
10355 |
-
_this.colWeekNumbersVisible = true;
|
10356 |
-
}
|
10357 |
-
}
|
10358 |
-
else {
|
10359 |
-
_this.colWeekNumbersVisible = false;
|
10360 |
-
cellWeekNumbersVisible = false;
|
10361 |
-
}
|
10362 |
-
_this.dayGrid = new DayGrid(_this.context, dayGridEl, {
|
10363 |
-
renderNumberIntroHtml: _this.renderDayGridNumberIntroHtml,
|
10364 |
-
renderBgIntroHtml: _this.renderDayGridBgIntroHtml,
|
10365 |
-
renderIntroHtml: _this.renderDayGridIntroHtml,
|
10366 |
-
colWeekNumbersVisible: _this.colWeekNumbersVisible,
|
10367 |
-
cellWeekNumbersVisible: cellWeekNumbersVisible
|
10368 |
-
});
|
10369 |
-
return _this;
|
10370 |
-
}
|
10371 |
-
DayGridView.prototype.destroy = function () {
|
10372 |
-
_super.prototype.destroy.call(this);
|
10373 |
-
this.dayGrid.destroy();
|
10374 |
-
this.scroller.destroy();
|
10375 |
-
};
|
10376 |
-
// Builds the HTML skeleton for the view.
|
10377 |
-
// The day-grid component will render inside of a container defined by this HTML.
|
10378 |
-
DayGridView.prototype.renderSkeletonHtml = function () {
|
10379 |
-
var theme = this.theme;
|
10380 |
-
return '' +
|
10381 |
-
'<table class="' + theme.getClass('tableGrid') + '">' +
|
10382 |
-
(this.opt('columnHeader') ?
|
10383 |
-
'<thead class="fc-head">' +
|
10384 |
-
'<tr>' +
|
10385 |
-
'<td class="fc-head-container ' + theme.getClass('widgetHeader') + '"> </td>' +
|
10386 |
-
'</tr>' +
|
10387 |
-
'</thead>' :
|
10388 |
-
'') +
|
10389 |
-
'<tbody class="fc-body">' +
|
10390 |
-
'<tr>' +
|
10391 |
-
'<td class="' + theme.getClass('widgetContent') + '"></td>' +
|
10392 |
-
'</tr>' +
|
10393 |
-
'</tbody>' +
|
10394 |
-
'</table>';
|
10395 |
-
};
|
10396 |
-
// Generates an HTML attribute string for setting the width of the week number column, if it is known
|
10397 |
-
DayGridView.prototype.weekNumberStyleAttr = function () {
|
10398 |
-
if (this.weekNumberWidth != null) {
|
10399 |
-
return 'style="width:' + this.weekNumberWidth + 'px"';
|
10400 |
-
}
|
10401 |
-
return '';
|
10402 |
-
};
|
10403 |
-
// Determines whether each row should have a constant height
|
10404 |
-
DayGridView.prototype.hasRigidRows = function () {
|
10405 |
-
var eventLimit = this.opt('eventLimit');
|
10406 |
-
return eventLimit && typeof eventLimit !== 'number';
|
10407 |
-
};
|
10408 |
-
/* Dimensions
|
10409 |
-
------------------------------------------------------------------------------------------------------------------*/
|
10410 |
-
DayGridView.prototype.updateSize = function (isResize, viewHeight, isAuto) {
|
10411 |
-
_super.prototype.updateSize.call(this, isResize, viewHeight, isAuto); // will call updateBaseSize. important that executes first
|
10412 |
-
this.dayGrid.updateSize(isResize);
|
10413 |
-
};
|
10414 |
-
// Refreshes the horizontal dimensions of the view
|
10415 |
-
DayGridView.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) {
|
10416 |
-
var dayGrid = this.dayGrid;
|
10417 |
-
var eventLimit = this.opt('eventLimit');
|
10418 |
-
var headRowEl = this.header ? this.header.el : null; // HACK
|
10419 |
-
var scrollerHeight;
|
10420 |
-
var scrollbarWidths;
|
10421 |
-
// hack to give the view some height prior to dayGrid's columns being rendered
|
10422 |
-
// TODO: separate setting height from scroller VS dayGrid.
|
10423 |
-
if (!dayGrid.rowEls) {
|
10424 |
-
if (!isAuto) {
|
10425 |
-
scrollerHeight = this.computeScrollerHeight(viewHeight);
|
10426 |
-
this.scroller.setHeight(scrollerHeight);
|
10427 |
-
}
|
10428 |
-
return;
|
10429 |
-
}
|
10430 |
-
if (this.colWeekNumbersVisible) {
|
10431 |
-
// Make sure all week number cells running down the side have the same width.
|
10432 |
-
this.weekNumberWidth = core.matchCellWidths(core.findElements(this.el, '.fc-week-number'));
|
10433 |
-
}
|
10434 |
-
// reset all heights to be natural
|
10435 |
-
this.scroller.clear();
|
10436 |
-
if (headRowEl) {
|
10437 |
-
core.uncompensateScroll(headRowEl);
|
10438 |
-
}
|
10439 |
-
dayGrid.removeSegPopover(); // kill the "more" popover if displayed
|
10440 |
-
// is the event limit a constant level number?
|
10441 |
-
if (eventLimit && typeof eventLimit === 'number') {
|
10442 |
-
dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after
|
10443 |
-
}
|
10444 |
-
// distribute the height to the rows
|
10445 |
-
// (viewHeight is a "recommended" value if isAuto)
|
10446 |
-
scrollerHeight = this.computeScrollerHeight(viewHeight);
|
10447 |
-
this.setGridHeight(scrollerHeight, isAuto);
|
10448 |
-
// is the event limit dynamically calculated?
|
10449 |
-
if (eventLimit && typeof eventLimit !== 'number') {
|
10450 |
-
dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set
|
10451 |
-
}
|
10452 |
-
if (!isAuto) { // should we force dimensions of the scroll container?
|
10453 |
-
this.scroller.setHeight(scrollerHeight);
|
10454 |
-
scrollbarWidths = this.scroller.getScrollbarWidths();
|
10455 |
-
if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?
|
10456 |
-
if (headRowEl) {
|
10457 |
-
core.compensateScroll(headRowEl, scrollbarWidths);
|
10458 |
-
}
|
10459 |
-
// doing the scrollbar compensation might have created text overflow which created more height. redo
|
10460 |
-
scrollerHeight = this.computeScrollerHeight(viewHeight);
|
10461 |
-
this.scroller.setHeight(scrollerHeight);
|
10462 |
-
}
|
10463 |
-
// guarantees the same scrollbar widths
|
10464 |
-
this.scroller.lockOverflow(scrollbarWidths);
|
10465 |
-
}
|
10466 |
-
};
|
10467 |
-
// given a desired total height of the view, returns what the height of the scroller should be
|
10468 |
-
DayGridView.prototype.computeScrollerHeight = function (viewHeight) {
|
10469 |
-
return viewHeight -
|
10470 |
-
core.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller
|
10471 |
-
};
|
10472 |
-
// Sets the height of just the DayGrid component in this view
|
10473 |
-
DayGridView.prototype.setGridHeight = function (height, isAuto) {
|
10474 |
-
if (this.opt('monthMode')) {
|
10475 |
-
// if auto, make the height of each row the height that it would be if there were 6 weeks
|
10476 |
-
if (isAuto) {
|
10477 |
-
height *= this.dayGrid.rowCnt / 6;
|
10478 |
-
}
|
10479 |
-
core.distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows
|
10480 |
-
}
|
10481 |
-
else {
|
10482 |
-
if (isAuto) {
|
10483 |
-
core.undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding
|
10484 |
-
}
|
10485 |
-
else {
|
10486 |
-
core.distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows
|
10487 |
-
}
|
10488 |
-
}
|
10489 |
-
};
|
10490 |
-
/* Scroll
|
10491 |
-
------------------------------------------------------------------------------------------------------------------*/
|
10492 |
-
DayGridView.prototype.computeDateScroll = function (duration) {
|
10493 |
-
return { top: 0 };
|
10494 |
-
};
|
10495 |
-
DayGridView.prototype.queryDateScroll = function () {
|
10496 |
-
return { top: this.scroller.getScrollTop() };
|
10497 |
-
};
|
10498 |
-
DayGridView.prototype.applyDateScroll = function (scroll) {
|
10499 |
-
if (scroll.top !== undefined) {
|
10500 |
-
this.scroller.setScrollTop(scroll.top);
|
10501 |
-
}
|
10502 |
-
};
|
10503 |
-
return DayGridView;
|
10504 |
-
}(core.View));
|
10505 |
-
DayGridView.prototype.dateProfileGeneratorClass = DayGridDateProfileGenerator;
|
10506 |
-
|
10507 |
-
var SimpleDayGrid = /** @class */ (function (_super) {
|
10508 |
-
__extends(SimpleDayGrid, _super);
|
10509 |
-
function SimpleDayGrid(context, dayGrid) {
|
10510 |
-
var _this = _super.call(this, context, dayGrid.el) || this;
|
10511 |
-
_this.slicer = new DayGridSlicer();
|
10512 |
-
_this.dayGrid = dayGrid;
|
10513 |
-
context.calendar.registerInteractiveComponent(_this, { el: _this.dayGrid.el });
|
10514 |
-
return _this;
|
10515 |
-
}
|
10516 |
-
SimpleDayGrid.prototype.destroy = function () {
|
10517 |
-
_super.prototype.destroy.call(this);
|
10518 |
-
this.calendar.unregisterInteractiveComponent(this);
|
10519 |
-
};
|
10520 |
-
SimpleDayGrid.prototype.render = function (props) {
|
10521 |
-
var dayGrid = this.dayGrid;
|
10522 |
-
var dateProfile = props.dateProfile, dayTable = props.dayTable;
|
10523 |
-
dayGrid.receiveProps(__assign({}, this.slicer.sliceProps(props, dateProfile, props.nextDayThreshold, dayGrid, dayTable), { dateProfile: dateProfile, cells: dayTable.cells, isRigid: props.isRigid }));
|
10524 |
-
};
|
10525 |
-
SimpleDayGrid.prototype.buildPositionCaches = function () {
|
10526 |
-
this.dayGrid.buildPositionCaches();
|
10527 |
-
};
|
10528 |
-
SimpleDayGrid.prototype.queryHit = function (positionLeft, positionTop) {
|
10529 |
-
var rawHit = this.dayGrid.positionToHit(positionLeft, positionTop);
|
10530 |
-
if (rawHit) {
|
10531 |
-
return {
|
10532 |
-
component: this.dayGrid,
|
10533 |
-
dateSpan: rawHit.dateSpan,
|
10534 |
-
dayEl: rawHit.dayEl,
|
10535 |
-
rect: {
|
10536 |
-
left: rawHit.relativeRect.left,
|
10537 |
-
right: rawHit.relativeRect.right,
|
10538 |
-
top: rawHit.relativeRect.top,
|
10539 |
-
bottom: rawHit.relativeRect.bottom
|
10540 |
-
},
|
10541 |
-
layer: 0
|
10542 |
-
};
|
10543 |
-
}
|
10544 |
-
};
|
10545 |
-
return SimpleDayGrid;
|
10546 |
-
}(core.DateComponent));
|
10547 |
-
var DayGridSlicer = /** @class */ (function (_super) {
|
10548 |
-
__extends(DayGridSlicer, _super);
|
10549 |
-
function DayGridSlicer() {
|
10550 |
-
return _super !== null && _super.apply(this, arguments) || this;
|
10551 |
-
}
|
10552 |
-
DayGridSlicer.prototype.sliceRange = function (dateRange, dayTable) {
|
10553 |
-
return dayTable.sliceRange(dateRange);
|
10554 |
-
};
|
10555 |
-
return DayGridSlicer;
|
10556 |
-
}(core.Slicer));
|
10557 |
-
|
10558 |
-
var DayGridView$1 = /** @class */ (function (_super) {
|
10559 |
-
__extends(DayGridView, _super);
|
10560 |
-
function DayGridView(_context, viewSpec, dateProfileGenerator, parentEl) {
|
10561 |
-
var _this = _super.call(this, _context, viewSpec, dateProfileGenerator, parentEl) || this;
|
10562 |
-
_this.buildDayTable = core.memoize(buildDayTable);
|
10563 |
-
if (_this.opt('columnHeader')) {
|
10564 |
-
_this.header = new core.DayHeader(_this.context, _this.el.querySelector('.fc-head-container'));
|
10565 |
-
}
|
10566 |
-
_this.simpleDayGrid = new SimpleDayGrid(_this.context, _this.dayGrid);
|
10567 |
-
return _this;
|
10568 |
-
}
|
10569 |
-
DayGridView.prototype.destroy = function () {
|
10570 |
-
_super.prototype.destroy.call(this);
|
10571 |
-
if (this.header) {
|
10572 |
-
this.header.destroy();
|
10573 |
-
}
|
10574 |
-
this.simpleDayGrid.destroy();
|
10575 |
-
};
|
10576 |
-
DayGridView.prototype.render = function (props) {
|
10577 |
-
_super.prototype.render.call(this, props);
|
10578 |
-
var dateProfile = this.props.dateProfile;
|
10579 |
-
var dayTable = this.dayTable =
|
10580 |
-
this.buildDayTable(dateProfile, this.dateProfileGenerator);
|
10581 |
-
if (this.header) {
|
10582 |
-
this.header.receiveProps({
|
10583 |
-
dateProfile: dateProfile,
|
10584 |
-
dates: dayTable.headerDates,
|
10585 |
-
datesRepDistinctDays: dayTable.rowCnt === 1,
|
10586 |
-
renderIntroHtml: this.renderHeadIntroHtml
|
10587 |
-
});
|
10588 |
-
}
|
10589 |
-
this.simpleDayGrid.receiveProps({
|
10590 |
-
dateProfile: dateProfile,
|
10591 |
-
dayTable: dayTable,
|
10592 |
-
businessHours: props.businessHours,
|
10593 |
-
dateSelection: props.dateSelection,
|
10594 |
-
eventStore: props.eventStore,
|
10595 |
-
eventUiBases: props.eventUiBases,
|
10596 |
-
eventSelection: props.eventSelection,
|
10597 |
-
eventDrag: props.eventDrag,
|
10598 |
-
eventResize: props.eventResize,
|
10599 |
-
isRigid: this.hasRigidRows(),
|
10600 |
-
nextDayThreshold: this.nextDayThreshold
|
10601 |
-
});
|
10602 |
-
};
|
10603 |
-
return DayGridView;
|
10604 |
-
}(DayGridView));
|
10605 |
-
function buildDayTable(dateProfile, dateProfileGenerator) {
|
10606 |
-
var daySeries = new core.DaySeries(dateProfile.renderRange, dateProfileGenerator);
|
10607 |
-
return new core.DayTable(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit));
|
10608 |
-
}
|
10609 |
-
|
10610 |
-
var main = core.createPlugin({
|
10611 |
-
defaultView: 'dayGridMonth',
|
10612 |
-
views: {
|
10613 |
-
dayGrid: DayGridView$1,
|
10614 |
-
dayGridDay: {
|
10615 |
-
type: 'dayGrid',
|
10616 |
-
duration: { days: 1 }
|
10617 |
-
},
|
10618 |
-
dayGridWeek: {
|
10619 |
-
type: 'dayGrid',
|
10620 |
-
duration: { weeks: 1 }
|
10621 |
-
},
|
10622 |
-
dayGridMonth: {
|
10623 |
-
type: 'dayGrid',
|
10624 |
-
duration: { months: 1 },
|
10625 |
-
monthMode: true,
|
10626 |
-
fixedWeekCount: true
|
10627 |
-
}
|
10628 |
-
}
|
10629 |
-
});
|
10630 |
-
|
10631 |
-
exports.AbstractDayGridView = DayGridView;
|
10632 |
-
exports.DayBgRow = DayBgRow;
|
10633 |
-
exports.DayGrid = DayGrid;
|
10634 |
-
exports.DayGridSlicer = DayGridSlicer;
|
10635 |
-
exports.DayGridView = DayGridView$1;
|
10636 |
-
exports.SimpleDayGrid = SimpleDayGrid;
|
10637 |
-
exports.buildBasicDayTable = buildDayTable;
|
10638 |
-
exports.default = main;
|
10639 |
-
|
10640 |
-
Object.defineProperty(exports, '__esModule', { value: true });
|
10641 |
-
|
10642 |
-
}));
|
10643 |
-
|
10644 |
-
/*!
|
10645 |
-
FullCalendar List View Plugin v4.3.0
|
10646 |
-
Docs & License: https://fullcalendar.io/
|
10647 |
-
(c) 2019 Adam Shaw
|
10648 |
-
*/
|
10649 |
-
|
10650 |
-
(function (global, factory) {
|
10651 |
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) :
|
10652 |
-
typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) :
|
10653 |
-
(global = global || self, factory(global.FullCalendarList = {}, global.FullCalendar));
|
10654 |
-
}(this, function (exports, core) { 'use strict';
|
10655 |
-
|
10656 |
-
/*! *****************************************************************************
|
10657 |
-
Copyright (c) Microsoft Corporation. All rights reserved.
|
10658 |
-
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
10659 |
-
this file except in compliance with the License. You may obtain a copy of the
|
10660 |
-
License at http://www.apache.org/licenses/LICENSE-2.0
|
10661 |
-
|
10662 |
-
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
10663 |
-
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
10664 |
-
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
10665 |
-
MERCHANTABLITY OR NON-INFRINGEMENT.
|
10666 |
-
|
10667 |
-
See the Apache Version 2.0 License for specific language governing permissions
|
10668 |
-
and limitations under the License.
|
10669 |
-
***************************************************************************** */
|
10670 |
-
/* global Reflect, Promise */
|
10671 |
-
|
10672 |
-
var extendStatics = function(d, b) {
|
10673 |
-
extendStatics = Object.setPrototypeOf ||
|
10674 |
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
10675 |
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
10676 |
-
return extendStatics(d, b);
|
10677 |
-
};
|
10678 |
-
|
10679 |
-
function __extends(d, b) {
|
10680 |
-
extendStatics(d, b);
|
10681 |
-
function __() { this.constructor = d; }
|
10682 |
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
10683 |
-
}
|
10684 |
-
|
10685 |
-
var ListEventRenderer = /** @class */ (function (_super) {
|
10686 |
-
__extends(ListEventRenderer, _super);
|
10687 |
-
function ListEventRenderer(listView) {
|
10688 |
-
var _this = _super.call(this, listView.context) || this;
|
10689 |
-
_this.listView = listView;
|
10690 |
-
return _this;
|
10691 |
-
}
|
10692 |
-
ListEventRenderer.prototype.attachSegs = function (segs) {
|
10693 |
-
if (!segs.length) {
|
10694 |
-
this.listView.renderEmptyMessage();
|
10695 |
-
}
|
10696 |
-
else {
|
10697 |
-
this.listView.renderSegList(segs);
|
10698 |
-
}
|
10699 |
-
};
|
10700 |
-
ListEventRenderer.prototype.detachSegs = function () {
|
10701 |
-
};
|
10702 |
-
// generates the HTML for a single event row
|
10703 |
-
ListEventRenderer.prototype.renderSegHtml = function (seg) {
|
10704 |
-
var _a = this.context, view = _a.view, theme = _a.theme;
|
10705 |
-
var eventRange = seg.eventRange;
|
10706 |
-
var eventDef = eventRange.def;
|
10707 |
-
var eventInstance = eventRange.instance;
|
10708 |
-
var eventUi = eventRange.ui;
|
10709 |
-
var url = eventDef.url;
|
10710 |
-
var classes = ['fc-list-item'].concat(eventUi.classNames);
|
10711 |
-
var bgColor = eventUi.backgroundColor;
|
10712 |
-
var timeHtml;
|
10713 |
-
if (eventDef.allDay) {
|
10714 |
-
timeHtml = core.getAllDayHtml(view);
|
10715 |
-
}
|
10716 |
-
else if (core.isMultiDayRange(eventRange.range)) {
|
10717 |
-
if (seg.isStart) {
|
10718 |
-
timeHtml = core.htmlEscape(this._getTimeText(eventInstance.range.start, seg.end, false // allDay
|
10719 |
-
));
|
10720 |
-
}
|
10721 |
-
else if (seg.isEnd) {
|
10722 |
-
timeHtml = core.htmlEscape(this._getTimeText(seg.start, eventInstance.range.end, false // allDay
|
10723 |
-
));
|
10724 |
-
}
|
10725 |
-
else { // inner segment that lasts the whole day
|
10726 |
-
timeHtml = core.getAllDayHtml(view);
|
10727 |
-
}
|
10728 |
-
}
|
10729 |
-
else {
|
10730 |
-
// Display the normal time text for the *event's* times
|
10731 |
-
timeHtml = core.htmlEscape(this.getTimeText(eventRange));
|
10732 |
-
}
|
10733 |
-
if (url) {
|
10734 |
-
classes.push('fc-has-url');
|
10735 |
-
}
|
10736 |
-
return '<tr class="' + classes.join(' ') + '">' +
|
10737 |
-
(this.displayEventTime ?
|
10738 |
-
'<td class="fc-list-item-time ' + theme.getClass('widgetContent') + '">' +
|
10739 |
-
(timeHtml || '') +
|
10740 |
-
'</td>' :
|
10741 |
-
'') +
|
10742 |
-
'<td class="fc-list-item-marker ' + theme.getClass('widgetContent') + '">' +
|
10743 |
-
'<span class="fc-event-dot"' +
|
10744 |
-
(bgColor ?
|
10745 |
-
' style="background-color:' + bgColor + '"' :
|
10746 |
-
'') +
|
10747 |
-
'></span>' +
|
10748 |
-
'</td>' +
|
10749 |
-
'<td class="fc-list-item-title ' + theme.getClass('widgetContent') + '">' +
|
10750 |
-
'<a' + (url ? ' href="' + core.htmlEscape(url) + '"' : '') + '>' +
|
10751 |
-
core.htmlEscape(eventDef.title || '') +
|
10752 |
-
'</a>' +
|
10753 |
-
'</td>' +
|
10754 |
-
'</tr>';
|
10755 |
-
};
|
10756 |
-
// like "4:00am"
|
10757 |
-
ListEventRenderer.prototype.computeEventTimeFormat = function () {
|
10758 |
-
return {
|
10759 |
-
hour: 'numeric',
|
10760 |
-
minute: '2-digit',
|
10761 |
-
meridiem: 'short'
|
10762 |
-
};
|
10763 |
-
};
|
10764 |
-
return ListEventRenderer;
|
10765 |
-
}(core.FgEventRenderer));
|
10766 |
-
|
10767 |
-
/*
|
10768 |
-
Responsible for the scroller, and forwarding event-related actions into the "grid".
|
10769 |
-
*/
|
10770 |
-
var ListView = /** @class */ (function (_super) {
|
10771 |
-
__extends(ListView, _super);
|
10772 |
-
function ListView(context, viewSpec, dateProfileGenerator, parentEl) {
|
10773 |
-
var _this = _super.call(this, context, viewSpec, dateProfileGenerator, parentEl) || this;
|
10774 |
-
_this.computeDateVars = core.memoize(computeDateVars);
|
10775 |
-
_this.eventStoreToSegs = core.memoize(_this._eventStoreToSegs);
|
10776 |
-
var eventRenderer = _this.eventRenderer = new ListEventRenderer(_this);
|
10777 |
-
_this.renderContent = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer));
|
10778 |
-
_this.el.classList.add('fc-list-view');
|
10779 |
-
var listViewClassNames = (_this.theme.getClass('listView') || '').split(' '); // wish we didn't have to do this
|
10780 |
-
for (var _i = 0, listViewClassNames_1 = listViewClassNames; _i < listViewClassNames_1.length; _i++) {
|
10781 |
-
var listViewClassName = listViewClassNames_1[_i];
|
10782 |
-
if (listViewClassName) { // in case input was empty string
|
10783 |
-
_this.el.classList.add(listViewClassName);
|
10784 |
-
}
|
10785 |
-
}
|
10786 |
-
_this.scroller = new core.ScrollComponent('hidden', // overflow x
|
10787 |
-
'auto' // overflow y
|
10788 |
-
);
|
10789 |
-
_this.el.appendChild(_this.scroller.el);
|
10790 |
-
_this.contentEl = _this.scroller.el; // shortcut
|
10791 |
-
context.calendar.registerInteractiveComponent(_this, {
|
10792 |
-
el: _this.el
|
10793 |
-
// TODO: make aware that it doesn't do Hits
|
10794 |
-
});
|
10795 |
-
return _this;
|
10796 |
-
}
|
10797 |
-
ListView.prototype.render = function (props) {
|
10798 |
-
var _a = this.computeDateVars(props.dateProfile), dayDates = _a.dayDates, dayRanges = _a.dayRanges;
|
10799 |
-
this.dayDates = dayDates;
|
10800 |
-
this.renderContent(this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges));
|
10801 |
-
};
|
10802 |
-
ListView.prototype.destroy = function () {
|
10803 |
-
_super.prototype.destroy.call(this);
|
10804 |
-
this.renderContent.unrender();
|
10805 |
-
this.scroller.destroy(); // will remove the Grid too
|
10806 |
-
this.calendar.unregisterInteractiveComponent(this);
|
10807 |
-
};
|
10808 |
-
ListView.prototype.updateSize = function (isResize, viewHeight, isAuto) {
|
10809 |
-
_super.prototype.updateSize.call(this, isResize, viewHeight, isAuto);
|
10810 |
-
this.eventRenderer.computeSizes(isResize);
|
10811 |
-
this.eventRenderer.assignSizes(isResize);
|
10812 |
-
this.scroller.clear(); // sets height to 'auto' and clears overflow
|
10813 |
-
if (!isAuto) {
|
10814 |
-
this.scroller.setHeight(this.computeScrollerHeight(viewHeight));
|
10815 |
-
}
|
10816 |
-
};
|
10817 |
-
ListView.prototype.computeScrollerHeight = function (viewHeight) {
|
10818 |
-
return viewHeight -
|
10819 |
-
core.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller
|
10820 |
-
};
|
10821 |
-
ListView.prototype._eventStoreToSegs = function (eventStore, eventUiBases, dayRanges) {
|
10822 |
-
return this.eventRangesToSegs(core.sliceEventStore(eventStore, eventUiBases, this.props.dateProfile.activeRange, this.nextDayThreshold).fg, dayRanges);
|
10823 |
-
};
|
10824 |
-
ListView.prototype.eventRangesToSegs = function (eventRanges, dayRanges) {
|
10825 |
-
var segs = [];
|
10826 |
-
for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) {
|
10827 |
-
var eventRange = eventRanges_1[_i];
|
10828 |
-
segs.push.apply(segs, this.eventRangeToSegs(eventRange, dayRanges));
|
10829 |
-
}
|
10830 |
-
return segs;
|
10831 |
-
};
|
10832 |
-
ListView.prototype.eventRangeToSegs = function (eventRange, dayRanges) {
|
10833 |
-
var _a = this, dateEnv = _a.dateEnv, nextDayThreshold = _a.nextDayThreshold;
|
10834 |
-
var range = eventRange.range;
|
10835 |
-
var allDay = eventRange.def.allDay;
|
10836 |
-
var dayIndex;
|
10837 |
-
var segRange;
|
10838 |
-
var seg;
|
10839 |
-
var segs = [];
|
10840 |
-
for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex++) {
|
10841 |
-
segRange = core.intersectRanges(range, dayRanges[dayIndex]);
|
10842 |
-
if (segRange) {
|
10843 |
-
seg = {
|
10844 |
-
component: this,
|
10845 |
-
eventRange: eventRange,
|
10846 |
-
start: segRange.start,
|
10847 |
-
end: segRange.end,
|
10848 |
-
isStart: eventRange.isStart && segRange.start.valueOf() === range.start.valueOf(),
|
10849 |
-
isEnd: eventRange.isEnd && segRange.end.valueOf() === range.end.valueOf(),
|
10850 |
-
dayIndex: dayIndex
|
10851 |
-
};
|
10852 |
-
segs.push(seg);
|
10853 |
-
// detect when range won't go fully into the next day,
|
10854 |
-
// and mutate the latest seg to the be the end.
|
10855 |
-
if (!seg.isEnd && !allDay &&
|
10856 |
-
dayIndex + 1 < dayRanges.length &&
|
10857 |
-
range.end <
|
10858 |
-
dateEnv.add(dayRanges[dayIndex + 1].start, nextDayThreshold)) {
|
10859 |
-
seg.end = range.end;
|
10860 |
-
seg.isEnd = true;
|
10861 |
-
break;
|
10862 |
-
}
|
10863 |
-
}
|
10864 |
-
}
|
10865 |
-
return segs;
|
10866 |
-
};
|
10867 |
-
ListView.prototype.renderEmptyMessage = function () {
|
10868 |
-
this.contentEl.innerHTML =
|
10869 |
-
'<div class="fc-list-empty-wrap2">' + // TODO: try less wraps
|
10870 |
-
'<div class="fc-list-empty-wrap1">' +
|
10871 |
-
'<div class="fc-list-empty">' +
|
10872 |
-
core.htmlEscape(this.opt('noEventsMessage')) +
|
10873 |
-
'</div>' +
|
10874 |
-
'</div>' +
|
10875 |
-
'</div>';
|
10876 |
-
};
|
10877 |
-
// called by ListEventRenderer
|
10878 |
-
ListView.prototype.renderSegList = function (allSegs) {
|
10879 |
-
var segsByDay = this.groupSegsByDay(allSegs); // sparse array
|
10880 |
-
var dayIndex;
|
10881 |
-
var daySegs;
|
10882 |
-
var i;
|
10883 |
-
var tableEl = core.htmlToElement('<table class="fc-list-table ' + this.calendar.theme.getClass('tableList') + '"><tbody></tbody></table>');
|
10884 |
-
var tbodyEl = tableEl.querySelector('tbody');
|
10885 |
-
for (dayIndex = 0; dayIndex < segsByDay.length; dayIndex++) {
|
10886 |
-
daySegs = segsByDay[dayIndex];
|
10887 |
-
if (daySegs) { // sparse array, so might be undefined
|
10888 |
-
// append a day header
|
10889 |
-
tbodyEl.appendChild(this.buildDayHeaderRow(this.dayDates[dayIndex]));
|
10890 |
-
daySegs = this.eventRenderer.sortEventSegs(daySegs);
|
10891 |
-
for (i = 0; i < daySegs.length; i++) {
|
10892 |
-
tbodyEl.appendChild(daySegs[i].el); // append event row
|
10893 |
-
}
|
10894 |
-
}
|
10895 |
-
}
|
10896 |
-
this.contentEl.innerHTML = '';
|
10897 |
-
this.contentEl.appendChild(tableEl);
|
10898 |
-
};
|
10899 |
-
// Returns a sparse array of arrays, segs grouped by their dayIndex
|
10900 |
-
ListView.prototype.groupSegsByDay = function (segs) {
|
10901 |
-
var segsByDay = []; // sparse array
|
10902 |
-
var i;
|
10903 |
-
var seg;
|
10904 |
-
for (i = 0; i < segs.length; i++) {
|
10905 |
-
seg = segs[i];
|
10906 |
-
(segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = []))
|
10907 |
-
.push(seg);
|
10908 |
-
}
|
10909 |
-
return segsByDay;
|
10910 |
-
};
|
10911 |
-
// generates the HTML for the day headers that live amongst the event rows
|
10912 |
-
ListView.prototype.buildDayHeaderRow = function (dayDate) {
|
10913 |
-
var dateEnv = this.dateEnv;
|
10914 |
-
var mainFormat = core.createFormatter(this.opt('listDayFormat')); // TODO: cache
|
10915 |
-
var altFormat = core.createFormatter(this.opt('listDayAltFormat')); // TODO: cache
|
10916 |
-
return core.createElement('tr', {
|
10917 |
-
className: 'fc-list-heading',
|
10918 |
-
'data-date': dateEnv.formatIso(dayDate, { omitTime: true })
|
10919 |
-
}, '<td class="' + (this.calendar.theme.getClass('tableListHeading') ||
|
10920 |
-
this.calendar.theme.getClass('widgetHeader')) + '" colspan="3">' +
|
10921 |
-
(mainFormat ?
|
10922 |
-
core.buildGotoAnchorHtml(this, dayDate, { 'class': 'fc-list-heading-main' }, core.htmlEscape(dateEnv.format(dayDate, mainFormat)) // inner HTML
|
10923 |
-
) :
|
10924 |
-
'') +
|
10925 |
-
(altFormat ?
|
10926 |
-
core.buildGotoAnchorHtml(this, dayDate, { 'class': 'fc-list-heading-alt' }, core.htmlEscape(dateEnv.format(dayDate, altFormat)) // inner HTML
|
10927 |
-
) :
|
10928 |
-
'') +
|
10929 |
-
'</td>');
|
10930 |
-
};
|
10931 |
-
return ListView;
|
10932 |
-
}(core.View));
|
10933 |
-
ListView.prototype.fgSegSelector = '.fc-list-item'; // which elements accept event actions
|
10934 |
-
function computeDateVars(dateProfile) {
|
10935 |
-
var dayStart = core.startOfDay(dateProfile.renderRange.start);
|
10936 |
-
var viewEnd = dateProfile.renderRange.end;
|
10937 |
-
var dayDates = [];
|
10938 |
-
var dayRanges = [];
|
10939 |
-
while (dayStart < viewEnd) {
|
10940 |
-
dayDates.push(dayStart);
|
10941 |
-
dayRanges.push({
|
10942 |
-
start: dayStart,
|
10943 |
-
end: core.addDays(dayStart, 1)
|
10944 |
-
});
|
10945 |
-
dayStart = core.addDays(dayStart, 1);
|
10946 |
-
}
|
10947 |
-
return { dayDates: dayDates, dayRanges: dayRanges };
|
10948 |
-
}
|
10949 |
-
|
10950 |
-
var main = core.createPlugin({
|
10951 |
-
views: {
|
10952 |
-
list: {
|
10953 |
-
class: ListView,
|
10954 |
-
buttonTextKey: 'list',
|
10955 |
-
listDayFormat: { month: 'long', day: 'numeric', year: 'numeric' } // like "January 1, 2016"
|
10956 |
-
},
|
10957 |
-
listDay: {
|
10958 |
-
type: 'list',
|
10959 |
-
duration: { days: 1 },
|
10960 |
-
listDayFormat: { weekday: 'long' } // day-of-week is all we need. full date is probably in header
|
10961 |
-
},
|
10962 |
-
listWeek: {
|
10963 |
-
type: 'list',
|
10964 |
-
duration: { weeks: 1 },
|
10965 |
-
listDayFormat: { weekday: 'long' },
|
10966 |
-
listDayAltFormat: { month: 'long', day: 'numeric', year: 'numeric' }
|
10967 |
-
},
|
10968 |
-
listMonth: {
|
10969 |
-
type: 'list',
|
10970 |
-
duration: { month: 1 },
|
10971 |
-
listDayAltFormat: { weekday: 'long' } // day-of-week is nice-to-have
|
10972 |
-
},
|
10973 |
-
listYear: {
|
10974 |
-
type: 'list',
|
10975 |
-
duration: { year: 1 },
|
10976 |
-
listDayAltFormat: { weekday: 'long' } // day-of-week is nice-to-have
|
10977 |
-
}
|
10978 |
-
}
|
10979 |
-
});
|
10980 |
-
|
10981 |
-
exports.ListView = ListView;
|
10982 |
-
exports.default = main;
|
10983 |
-
|
10984 |
-
Object.defineProperty(exports, '__esModule', { value: true });
|
10985 |
-
|
10986 |
-
}));
|
10987 |
-
|
10988 |
-
/*!
|
10989 |
-
FullCalendar Time Grid Plugin v4.3.0
|
10990 |
-
Docs & License: https://fullcalendar.io/
|
10991 |
-
(c) 2019 Adam Shaw
|
10992 |
-
*/
|
10993 |
-
|
10994 |
-
(function (global, factory) {
|
10995 |
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core'), require('@fullcalendar/daygrid')) :
|
10996 |
-
typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core', '@fullcalendar/daygrid'], factory) :
|
10997 |
-
(global = global || self, factory(global.FullCalendarTimeGrid = {}, global.FullCalendar, global.FullCalendarDayGrid));
|
10998 |
-
}(this, function (exports, core, daygrid) { 'use strict';
|
10999 |
-
|
11000 |
-
/*! *****************************************************************************
|
11001 |
-
Copyright (c) Microsoft Corporation. All rights reserved.
|
11002 |
-
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
11003 |
-
this file except in compliance with the License. You may obtain a copy of the
|
11004 |
-
License at http://www.apache.org/licenses/LICENSE-2.0
|
11005 |
-
|
11006 |
-
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
11007 |
-
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
11008 |
-
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
11009 |
-
MERCHANTABLITY OR NON-INFRINGEMENT.
|
11010 |
-
|
11011 |
-
See the Apache Version 2.0 License for specific language governing permissions
|
11012 |
-
and limitations under the License.
|
11013 |
-
***************************************************************************** */
|
11014 |
-
/* global Reflect, Promise */
|
11015 |
-
|
11016 |
-
var extendStatics = function(d, b) {
|
11017 |
-
extendStatics = Object.setPrototypeOf ||
|
11018 |
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
11019 |
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
11020 |
-
return extendStatics(d, b);
|
11021 |
-
};
|
11022 |
-
|
11023 |
-
function __extends(d, b) {
|
11024 |
-
extendStatics(d, b);
|
11025 |
-
function __() { this.constructor = d; }
|
11026 |
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
11027 |
-
}
|
11028 |
-
|
11029 |
-
var __assign = function() {
|
11030 |
-
__assign = Object.assign || function __assign(t) {
|
11031 |
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
11032 |
-
s = arguments[i];
|
11033 |
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
11034 |
-
}
|
11035 |
-
return t;
|
11036 |
-
};
|
11037 |
-
return __assign.apply(this, arguments);
|
11038 |
-
};
|
11039 |
-
|
11040 |
-
/*
|
11041 |
-
Only handles foreground segs.
|
11042 |
-
Does not own rendering. Use for low-level util methods by TimeGrid.
|
11043 |
-
*/
|
11044 |
-
var TimeGridEventRenderer = /** @class */ (function (_super) {
|
11045 |
-
__extends(TimeGridEventRenderer, _super);
|
11046 |
-
function TimeGridEventRenderer(timeGrid) {
|
11047 |
-
var _this = _super.call(this, timeGrid.context) || this;
|
11048 |
-
_this.timeGrid = timeGrid;
|
11049 |
-
_this.fullTimeFormat = core.createFormatter({
|
11050 |
-
hour: 'numeric',
|
11051 |
-
minute: '2-digit',
|
11052 |
-
separator: _this.context.options.defaultRangeSeparator
|
11053 |
-
});
|
11054 |
-
return _this;
|
11055 |
-
}
|
11056 |
-
// Given an array of foreground segments, render a DOM element for each, computes position,
|
11057 |
-
// and attaches to the column inner-container elements.
|
11058 |
-
TimeGridEventRenderer.prototype.attachSegs = function (segs, mirrorInfo) {
|
11059 |
-
var segsByCol = this.timeGrid.groupSegsByCol(segs);
|
11060 |
-
// order the segs within each column
|
11061 |
-
// TODO: have groupSegsByCol do this?
|
11062 |
-
for (var col = 0; col < segsByCol.length; col++) {
|
11063 |
-
segsByCol[col] = this.sortEventSegs(segsByCol[col]);
|
11064 |
-
}
|
11065 |
-
this.segsByCol = segsByCol;
|
11066 |
-
this.timeGrid.attachSegsByCol(segsByCol, this.timeGrid.fgContainerEls);
|
11067 |
-
};
|
11068 |
-
TimeGridEventRenderer.prototype.detachSegs = function (segs) {
|
11069 |
-
segs.forEach(function (seg) {
|
11070 |
-
core.removeElement(seg.el);
|
11071 |
-
});
|
11072 |
-
this.segsByCol = null;
|
11073 |
-
};
|
11074 |
-
TimeGridEventRenderer.prototype.computeSegSizes = function (allSegs) {
|
11075 |
-
var _a = this, timeGrid = _a.timeGrid, segsByCol = _a.segsByCol;
|
11076 |
-
var colCnt = timeGrid.colCnt;
|
11077 |
-
timeGrid.computeSegVerticals(allSegs); // horizontals relies on this
|
11078 |
-
if (segsByCol) {
|
11079 |
-
for (var col = 0; col < colCnt; col++) {
|
11080 |
-
this.computeSegHorizontals(segsByCol[col]); // compute horizontal coordinates, z-index's, and reorder the array
|
11081 |
-
}
|
11082 |
-
}
|
11083 |
-
};
|
11084 |
-
TimeGridEventRenderer.prototype.assignSegSizes = function (allSegs) {
|
11085 |
-
var _a = this, timeGrid = _a.timeGrid, segsByCol = _a.segsByCol;
|
11086 |
-
var colCnt = timeGrid.colCnt;
|
11087 |
-
timeGrid.assignSegVerticals(allSegs); // horizontals relies on this
|
11088 |
-
if (segsByCol) {
|
11089 |
-
for (var col = 0; col < colCnt; col++) {
|
11090 |
-
this.assignSegCss(segsByCol[col]);
|
11091 |
-
}
|
11092 |
-
}
|
11093 |
-
};
|
11094 |
-
// Computes a default event time formatting string if `eventTimeFormat` is not explicitly defined
|
11095 |
-
TimeGridEventRenderer.prototype.computeEventTimeFormat = function () {
|
11096 |
-
return {
|
11097 |
-
hour: 'numeric',
|
11098 |
-
minute: '2-digit',
|
11099 |
-
meridiem: false
|
11100 |
-
};
|
11101 |
-
};
|
11102 |
-
// Computes a default `displayEventEnd` value if one is not expliclty defined
|
11103 |
-
TimeGridEventRenderer.prototype.computeDisplayEventEnd = function () {
|
11104 |
-
return true;
|
11105 |
-
};
|
11106 |
-
// Renders the HTML for a single event segment's default rendering
|
11107 |
-
TimeGridEventRenderer.prototype.renderSegHtml = function (seg, mirrorInfo) {
|
11108 |
-
var view = this.context.view;
|
11109 |
-
var eventRange = seg.eventRange;
|
11110 |
-
var eventDef = eventRange.def;
|
11111 |
-
var eventUi = eventRange.ui;
|
11112 |
-
var allDay = eventDef.allDay;
|
11113 |
-
var isDraggable = view.computeEventDraggable(eventDef, eventUi);
|
11114 |
-
var isResizableFromStart = seg.isStart && view.computeEventStartResizable(eventDef, eventUi);
|
11115 |
-
var isResizableFromEnd = seg.isEnd && view.computeEventEndResizable(eventDef, eventUi);
|
11116 |
-
var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd, mirrorInfo);
|
11117 |
-
var skinCss = core.cssToStr(this.getSkinCss(eventUi));
|
11118 |
-
var timeText;
|
11119 |
-
var fullTimeText; // more verbose time text. for the print stylesheet
|
11120 |
-
var startTimeText; // just the start time text
|
11121 |
-
classes.unshift('fc-time-grid-event');
|
11122 |
-
// if the event appears to span more than one day...
|
11123 |
-
if (core.isMultiDayRange(eventRange.range)) {
|
11124 |
-
// Don't display time text on segments that run entirely through a day.
|
11125 |
-
// That would appear as midnight-midnight and would look dumb.
|
11126 |
-
// Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am)
|
11127 |
-
if (seg.isStart || seg.isEnd) {
|
11128 |
-
var unzonedStart = seg.start;
|
11129 |
-
var unzonedEnd = seg.end;
|
11130 |
-
timeText = this._getTimeText(unzonedStart, unzonedEnd, allDay); // TODO: give the timezones
|
11131 |
-
fullTimeText = this._getTimeText(unzonedStart, unzonedEnd, allDay, this.fullTimeFormat);
|
11132 |
-
startTimeText = this._getTimeText(unzonedStart, unzonedEnd, allDay, null, false); // displayEnd=false
|
11133 |
-
}
|
11134 |
-
}
|
11135 |
-
else {
|
11136 |
-
// Display the normal time text for the *event's* times
|
11137 |
-
timeText = this.getTimeText(eventRange);
|
11138 |
-
fullTimeText = this.getTimeText(eventRange, this.fullTimeFormat);
|
11139 |
-
startTimeText = this.getTimeText(eventRange, null, false); // displayEnd=false
|
11140 |
-
}
|
11141 |
-
return '<a class="' + classes.join(' ') + '"' +
|
11142 |
-
(eventDef.url ?
|
11143 |
-
' href="' + core.htmlEscape(eventDef.url) + '"' :
|
11144 |
-
'') +
|
11145 |
-
(skinCss ?
|
11146 |
-
' style="' + skinCss + '"' :
|
11147 |
-
'') +
|
11148 |
-
'>' +
|
11149 |
-
'<div class="fc-content">' +
|
11150 |
-
(timeText ?
|
11151 |
-
'<div class="fc-time"' +
|
11152 |
-
' data-start="' + core.htmlEscape(startTimeText) + '"' +
|
11153 |
-
' data-full="' + core.htmlEscape(fullTimeText) + '"' +
|
11154 |
-
'>' +
|
11155 |
-
'<span>' + core.htmlEscape(timeText) + '</span>' +
|
11156 |
-
'</div>' :
|
11157 |
-
'') +
|
11158 |
-
(eventDef.title ?
|
11159 |
-
'<div class="fc-title">' +
|
11160 |
-
core.htmlEscape(eventDef.title) +
|
11161 |
-
'</div>' :
|
11162 |
-
'') +
|
11163 |
-
'</div>' +
|
11164 |
-
/* TODO: write CSS for this
|
11165 |
-
(isResizableFromStart ?
|
11166 |
-
'<div class="fc-resizer fc-start-resizer"></div>' :
|
11167 |
-
''
|
11168 |
-
) +
|
11169 |
-
*/
|
11170 |
-
(isResizableFromEnd ?
|
11171 |
-
'<div class="fc-resizer fc-end-resizer"></div>' :
|
11172 |
-
'') +
|
11173 |
-
'</a>';
|
11174 |
-
};
|
11175 |
-
// Given an array of segments that are all in the same column, sets the backwardCoord and forwardCoord on each.
|
11176 |
-
// Assumed the segs are already ordered.
|
11177 |
-
// NOTE: Also reorders the given array by date!
|
11178 |
-
TimeGridEventRenderer.prototype.computeSegHorizontals = function (segs) {
|
11179 |
-
var levels;
|
11180 |
-
var level0;
|
11181 |
-
var i;
|
11182 |
-
levels = buildSlotSegLevels(segs);
|
11183 |
-
computeForwardSlotSegs(levels);
|
11184 |
-
if ((level0 = levels[0])) {
|
11185 |
-
for (i = 0; i < level0.length; i++) {
|
11186 |
-
computeSlotSegPressures(level0[i]);
|
11187 |
-
}
|
11188 |
-
for (i = 0; i < level0.length; i++) {
|
11189 |
-
this.computeSegForwardBack(level0[i], 0, 0);
|
11190 |
-
}
|
11191 |
-
}
|
11192 |
-
};
|
11193 |
-
// Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range
|
11194 |
-
// from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to "left" and
|
11195 |
-
// seg.forwardCoord maps to "right" (via percentage). Vice-versa if the calendar is right-to-left.
|
11196 |
-
//
|
11197 |
-
// The segment might be part of a "series", which means consecutive segments with the same pressure
|
11198 |
-
// who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of
|
11199 |
-
// segments behind this one in the current series, and `seriesBackwardCoord` is the starting
|
11200 |
-
// coordinate of the first segment in the series.
|
11201 |
-
TimeGridEventRenderer.prototype.computeSegForwardBack = function (seg, seriesBackwardPressure, seriesBackwardCoord) {
|
11202 |
-
var forwardSegs = seg.forwardSegs;
|
11203 |
-
var i;
|
11204 |
-
if (seg.forwardCoord === undefined) { // not already computed
|
11205 |
-
if (!forwardSegs.length) {
|
11206 |
-
// if there are no forward segments, this segment should butt up against the edge
|
11207 |
-
seg.forwardCoord = 1;
|
11208 |
-
}
|
11209 |
-
else {
|
11210 |
-
// sort highest pressure first
|
11211 |
-
this.sortForwardSegs(forwardSegs);
|
11212 |
-
// this segment's forwardCoord will be calculated from the backwardCoord of the
|
11213 |
-
// highest-pressure forward segment.
|
11214 |
-
this.computeSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord);
|
11215 |
-
seg.forwardCoord = forwardSegs[0].backwardCoord;
|
11216 |
-
}
|
11217 |
-
// calculate the backwardCoord from the forwardCoord. consider the series
|
11218 |
-
seg.backwardCoord = seg.forwardCoord -
|
11219 |
-
(seg.forwardCoord - seriesBackwardCoord) / // available width for series
|
11220 |
-
(seriesBackwardPressure + 1); // # of segments in the series
|
11221 |
-
// use this segment's coordinates to computed the coordinates of the less-pressurized
|
11222 |
-
// forward segments
|
11223 |
-
for (i = 0; i < forwardSegs.length; i++) {
|
11224 |
-
this.computeSegForwardBack(forwardSegs[i], 0, seg.forwardCoord);
|
11225 |
-
}
|
11226 |
-
}
|
11227 |
-
};
|
11228 |
-
TimeGridEventRenderer.prototype.sortForwardSegs = function (forwardSegs) {
|
11229 |
-
var objs = forwardSegs.map(buildTimeGridSegCompareObj);
|
11230 |
-
var specs = [
|
11231 |
-
// put higher-pressure first
|
11232 |
-
{ field: 'forwardPressure', order: -1 },
|
11233 |
-
// put segments that are closer to initial edge first (and favor ones with no coords yet)
|
11234 |
-
{ field: 'backwardCoord', order: 1 }
|
11235 |
-
].concat(this.context.view.eventOrderSpecs);
|
11236 |
-
objs.sort(function (obj0, obj1) {
|
11237 |
-
return core.compareByFieldSpecs(obj0, obj1, specs);
|
11238 |
-
});
|
11239 |
-
return objs.map(function (c) {
|
11240 |
-
return c._seg;
|
11241 |
-
});
|
11242 |
-
};
|
11243 |
-
// Given foreground event segments that have already had their position coordinates computed,
|
11244 |
-
// assigns position-related CSS values to their elements.
|
11245 |
-
TimeGridEventRenderer.prototype.assignSegCss = function (segs) {
|
11246 |
-
for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {
|
11247 |
-
var seg = segs_1[_i];
|
11248 |
-
core.applyStyle(seg.el, this.generateSegCss(seg));
|
11249 |
-
if (seg.level > 0) {
|
11250 |
-
seg.el.classList.add('fc-time-grid-event-inset');
|
11251 |
-
}
|
11252 |
-
// if the event is short that the title will be cut off,
|
11253 |
-
// attach a className that condenses the title into the time area.
|
11254 |
-
if (seg.eventRange.def.title && seg.bottom - seg.top < 30) {
|
11255 |
-
seg.el.classList.add('fc-short'); // TODO: "condensed" is a better name
|
11256 |
-
}
|
11257 |
-
}
|
11258 |
-
};
|
11259 |
-
// Generates an object with CSS properties/values that should be applied to an event segment element.
|
11260 |
-
// Contains important positioning-related properties that should be applied to any event element, customized or not.
|
11261 |
-
TimeGridEventRenderer.prototype.generateSegCss = function (seg) {
|
11262 |
-
var shouldOverlap = this.context.options.slotEventOverlap;
|
11263 |
-
var backwardCoord = seg.backwardCoord; // the left side if LTR. the right side if RTL. floating-point
|
11264 |
-
var forwardCoord = seg.forwardCoord; // the right side if LTR. the left side if RTL. floating-point
|
11265 |
-
var props = this.timeGrid.generateSegVerticalCss(seg); // get top/bottom first
|
11266 |
-
var isRtl = this.timeGrid.isRtl;
|
11267 |
-
var left; // amount of space from left edge, a fraction of the total width
|
11268 |
-
var right; // amount of space from right edge, a fraction of the total width
|
11269 |
-
if (shouldOverlap) {
|
11270 |
-
// double the width, but don't go beyond the maximum forward coordinate (1.0)
|
11271 |
-
forwardCoord = Math.min(1, backwardCoord + (forwardCoord - backwardCoord) * 2);
|
11272 |
-
}
|
11273 |
-
if (isRtl) {
|
11274 |
-
left = 1 - forwardCoord;
|
11275 |
-
right = backwardCoord;
|
11276 |
-
}
|
11277 |
-
else {
|
11278 |
-
left = backwardCoord;
|
11279 |
-
right = 1 - forwardCoord;
|
11280 |
-
}
|
11281 |
-
props.zIndex = seg.level + 1; // convert from 0-base to 1-based
|
11282 |
-
props.left = left * 100 + '%';
|
11283 |
-
props.right = right * 100 + '%';
|
11284 |
-
if (shouldOverlap && seg.forwardPressure) {
|
11285 |
-
// add padding to the edge so that forward stacked events don't cover the resizer's icon
|
11286 |
-
props[isRtl ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width
|
11287 |
-
}
|
11288 |
-
return props;
|
11289 |
-
};
|
11290 |
-
return TimeGridEventRenderer;
|
11291 |
-
}(core.FgEventRenderer));
|
11292 |
-
// Builds an array of segments "levels". The first level will be the leftmost tier of segments if the calendar is
|
11293 |
-
// left-to-right, or the rightmost if the calendar is right-to-left. Assumes the segments are already ordered by date.
|
11294 |
-
function buildSlotSegLevels(segs) {
|
11295 |
-
var levels = [];
|
11296 |
-
var i;
|
11297 |
-
var seg;
|
11298 |
-
var j;
|
11299 |
-
for (i = 0; i < segs.length; i++) {
|
11300 |
-
seg = segs[i];
|
11301 |
-
// go through all the levels and stop on the first level where there are no collisions
|
11302 |
-
for (j = 0; j < levels.length; j++) {
|
11303 |
-
if (!computeSlotSegCollisions(seg, levels[j]).length) {
|
11304 |
-
break;
|
11305 |
-
}
|
11306 |
-
}
|
11307 |
-
seg.level = j;
|
11308 |
-
(levels[j] || (levels[j] = [])).push(seg);
|
11309 |
-
}
|
11310 |
-
return levels;
|
11311 |
-
}
|
11312 |
-
// For every segment, figure out the other segments that are in subsequent
|
11313 |
-
// levels that also occupy the same vertical space. Accumulate in seg.forwardSegs
|
11314 |
-
function computeForwardSlotSegs(levels) {
|
11315 |
-
var i;
|
11316 |
-
var level;
|
11317 |
-
var j;
|
11318 |
-
var seg;
|
11319 |
-
var k;
|
11320 |
-
for (i = 0; i < levels.length; i++) {
|
11321 |
-
level = levels[i];
|
11322 |
-
for (j = 0; j < level.length; j++) {
|
11323 |
-
seg = level[j];
|
11324 |
-
seg.forwardSegs = [];
|
11325 |
-
for (k = i + 1; k < levels.length; k++) {
|
11326 |
-
computeSlotSegCollisions(seg, levels[k], seg.forwardSegs);
|
11327 |
-
}
|
11328 |
-
}
|
11329 |
-
}
|
11330 |
-
}
|
11331 |
-
// Figure out which path forward (via seg.forwardSegs) results in the longest path until
|
11332 |
-
// the furthest edge is reached. The number of segments in this path will be seg.forwardPressure
|
11333 |
-
function computeSlotSegPressures(seg) {
|
11334 |
-
var forwardSegs = seg.forwardSegs;
|
11335 |
-
var forwardPressure = 0;
|
11336 |
-
var i;
|
11337 |
-
var forwardSeg;
|
11338 |
-
if (seg.forwardPressure === undefined) { // not already computed
|
11339 |
-
for (i = 0; i < forwardSegs.length; i++) {
|
11340 |
-
forwardSeg = forwardSegs[i];
|
11341 |
-
// figure out the child's maximum forward path
|
11342 |
-
computeSlotSegPressures(forwardSeg);
|
11343 |
-
// either use the existing maximum, or use the child's forward pressure
|
11344 |
-
// plus one (for the forwardSeg itself)
|
11345 |
-
forwardPressure = Math.max(forwardPressure, 1 + forwardSeg.forwardPressure);
|
11346 |
-
}
|
11347 |
-
seg.forwardPressure = forwardPressure;
|
11348 |
-
}
|
11349 |
-
}
|
11350 |
-
// Find all the segments in `otherSegs` that vertically collide with `seg`.
|
11351 |
-
// Append into an optionally-supplied `results` array and return.
|
11352 |
-
function computeSlotSegCollisions(seg, otherSegs, results) {
|
11353 |
-
if (results === void 0) { results = []; }
|
11354 |
-
for (var i = 0; i < otherSegs.length; i++) {
|
11355 |
-
if (isSlotSegCollision(seg, otherSegs[i])) {
|
11356 |
-
results.push(otherSegs[i]);
|
11357 |
-
}
|
11358 |
-
}
|
11359 |
-
return results;
|
11360 |
-
}
|
11361 |
-
// Do these segments occupy the same vertical space?
|
11362 |
-
function isSlotSegCollision(seg1, seg2) {
|
11363 |
-
return seg1.bottom > seg2.top && seg1.top < seg2.bottom;
|
11364 |
-
}
|
11365 |
-
function buildTimeGridSegCompareObj(seg) {
|
11366 |
-
var obj = core.buildSegCompareObj(seg);
|
11367 |
-
obj.forwardPressure = seg.forwardPressure;
|
11368 |
-
obj.backwardCoord = seg.backwardCoord;
|
11369 |
-
return obj;
|
11370 |
-
}
|
11371 |
-
|
11372 |
-
var TimeGridMirrorRenderer = /** @class */ (function (_super) {
|
11373 |
-
__extends(TimeGridMirrorRenderer, _super);
|
11374 |
-
function TimeGridMirrorRenderer() {
|
11375 |
-
return _super !== null && _super.apply(this, arguments) || this;
|
11376 |
-
}
|
11377 |
-
TimeGridMirrorRenderer.prototype.attachSegs = function (segs, mirrorInfo) {
|
11378 |
-
this.segsByCol = this.timeGrid.groupSegsByCol(segs);
|
11379 |
-
this.timeGrid.attachSegsByCol(this.segsByCol, this.timeGrid.mirrorContainerEls);
|
11380 |
-
this.sourceSeg = mirrorInfo.sourceSeg;
|
11381 |
-
};
|
11382 |
-
TimeGridMirrorRenderer.prototype.generateSegCss = function (seg) {
|
11383 |
-
var props = _super.prototype.generateSegCss.call(this, seg);
|
11384 |
-
var sourceSeg = this.sourceSeg;
|
11385 |
-
if (sourceSeg && sourceSeg.col === seg.col) {
|
11386 |
-
var sourceSegProps = _super.prototype.generateSegCss.call(this, sourceSeg);
|
11387 |
-
props.left = sourceSegProps.left;
|
11388 |
-
props.right = sourceSegProps.right;
|
11389 |
-
props.marginLeft = sourceSegProps.marginLeft;
|
11390 |
-
props.marginRight = sourceSegProps.marginRight;
|
11391 |
-
}
|
11392 |
-
return props;
|
11393 |
-
};
|
11394 |
-
return TimeGridMirrorRenderer;
|
11395 |
-
}(TimeGridEventRenderer));
|
11396 |
-
|
11397 |
-
var TimeGridFillRenderer = /** @class */ (function (_super) {
|
11398 |
-
__extends(TimeGridFillRenderer, _super);
|
11399 |
-
function TimeGridFillRenderer(timeGrid) {
|
11400 |
-
var _this = _super.call(this, timeGrid.context) || this;
|
11401 |
-
_this.timeGrid = timeGrid;
|
11402 |
-
return _this;
|
11403 |
-
}
|
11404 |
-
TimeGridFillRenderer.prototype.attachSegs = function (type, segs) {
|
11405 |
-
var timeGrid = this.timeGrid;
|
11406 |
-
var containerEls;
|
11407 |
-
// TODO: more efficient lookup
|
11408 |
-
if (type === 'bgEvent') {
|
11409 |
-
containerEls = timeGrid.bgContainerEls;
|
11410 |
-
}
|
11411 |
-
else if (type === 'businessHours') {
|
11412 |
-
containerEls = timeGrid.businessContainerEls;
|
11413 |
-
}
|
11414 |
-
else if (type === 'highlight') {
|
11415 |
-
containerEls = timeGrid.highlightContainerEls;
|
11416 |
-
}
|
11417 |
-
timeGrid.attachSegsByCol(timeGrid.groupSegsByCol(segs), containerEls);
|
11418 |
-
return segs.map(function (seg) {
|
11419 |
-
return seg.el;
|
11420 |
-
});
|
11421 |
-
};
|
11422 |
-
TimeGridFillRenderer.prototype.computeSegSizes = function (segs) {
|
11423 |
-
this.timeGrid.computeSegVerticals(segs);
|
11424 |
-
};
|
11425 |
-
TimeGridFillRenderer.prototype.assignSegSizes = function (segs) {
|
11426 |
-
this.timeGrid.assignSegVerticals(segs);
|
11427 |
-
};
|
11428 |
-
return TimeGridFillRenderer;
|
11429 |
-
}(core.FillRenderer));
|
11430 |
-
|
11431 |
-
/* A component that renders one or more columns of vertical time slots
|
11432 |
-
----------------------------------------------------------------------------------------------------------------------*/
|
11433 |
-
// potential nice values for the slot-duration and interval-duration
|
11434 |
-
// from largest to smallest
|
11435 |
-
var AGENDA_STOCK_SUB_DURATIONS = [
|
11436 |
-
{ hours: 1 },
|
11437 |
-
{ minutes: 30 },
|
11438 |
-
{ minutes: 15 },
|
11439 |
-
{ seconds: 30 },
|
11440 |
-
{ seconds: 15 }
|
11441 |
-
];
|
11442 |
-
var TimeGrid = /** @class */ (function (_super) {
|
11443 |
-
__extends(TimeGrid, _super);
|
11444 |
-
function TimeGrid(context, el, renderProps) {
|
11445 |
-
var _this = _super.call(this, context, el) || this;
|
11446 |
-
_this.isSlatSizesDirty = false;
|
11447 |
-
_this.isColSizesDirty = false;
|
11448 |
-
_this.renderSlats = core.memoizeRendering(_this._renderSlats);
|
11449 |
-
var eventRenderer = _this.eventRenderer = new TimeGridEventRenderer(_this);
|
11450 |
-
var fillRenderer = _this.fillRenderer = new TimeGridFillRenderer(_this);
|
11451 |
-
_this.mirrorRenderer = new TimeGridMirrorRenderer(_this);
|
11452 |
-
var renderColumns = _this.renderColumns = core.memoizeRendering(_this._renderColumns, _this._unrenderColumns);
|
11453 |
-
_this.renderBusinessHours = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'businessHours'), fillRenderer.unrender.bind(fillRenderer, 'businessHours'), [renderColumns]);
|
11454 |
-
_this.renderDateSelection = core.memoizeRendering(_this._renderDateSelection, _this._unrenderDateSelection, [renderColumns]);
|
11455 |
-
_this.renderFgEvents = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderColumns]);
|
11456 |
-
_this.renderBgEvents = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'bgEvent'), fillRenderer.unrender.bind(fillRenderer, 'bgEvent'), [renderColumns]);
|
11457 |
-
_this.renderEventSelection = core.memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]);
|
11458 |
-
_this.renderEventDrag = core.memoizeRendering(_this._renderEventDrag, _this._unrenderEventDrag, [renderColumns]);
|
11459 |
-
_this.renderEventResize = core.memoizeRendering(_this._renderEventResize, _this._unrenderEventResize, [renderColumns]);
|
11460 |
-
_this.processOptions();
|
11461 |
-
el.innerHTML =
|
11462 |
-
'<div class="fc-bg"></div>' +
|
11463 |
-
'<div class="fc-slats"></div>' +
|
11464 |
-
'<hr class="fc-divider ' + _this.theme.getClass('widgetHeader') + '" style="display:none" />';
|
11465 |
-
_this.rootBgContainerEl = el.querySelector('.fc-bg');
|
11466 |
-
_this.slatContainerEl = el.querySelector('.fc-slats');
|
11467 |
-
_this.bottomRuleEl = el.querySelector('.fc-divider');
|
11468 |
-
_this.renderProps = renderProps;
|
11469 |
-
return _this;
|
11470 |
-
}
|
11471 |
-
/* Options
|
11472 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11473 |
-
// Parses various options into properties of this object
|
11474 |
-
TimeGrid.prototype.processOptions = function () {
|
11475 |
-
var slotDuration = this.opt('slotDuration');
|
11476 |
-
var snapDuration = this.opt('snapDuration');
|
11477 |
-
var snapsPerSlot;
|
11478 |
-
var input;
|
11479 |
-
slotDuration = core.createDuration(slotDuration);
|
11480 |
-
snapDuration = snapDuration ? core.createDuration(snapDuration) : slotDuration;
|
11481 |
-
snapsPerSlot = core.wholeDivideDurations(slotDuration, snapDuration);
|
11482 |
-
if (snapsPerSlot === null) {
|
11483 |
-
snapDuration = slotDuration;
|
11484 |
-
snapsPerSlot = 1;
|
11485 |
-
// TODO: say warning?
|
11486 |
-
}
|
11487 |
-
this.slotDuration = slotDuration;
|
11488 |
-
this.snapDuration = snapDuration;
|
11489 |
-
this.snapsPerSlot = snapsPerSlot;
|
11490 |
-
// might be an array value (for TimelineView).
|
11491 |
-
// if so, getting the most granular entry (the last one probably).
|
11492 |
-
input = this.opt('slotLabelFormat');
|
11493 |
-
if (Array.isArray(input)) {
|
11494 |
-
input = input[input.length - 1];
|
11495 |
-
}
|
11496 |
-
this.labelFormat = core.createFormatter(input || {
|
11497 |
-
hour: 'numeric',
|
11498 |
-
minute: '2-digit',
|
11499 |
-
omitZeroMinute: true,
|
11500 |
-
meridiem: 'short'
|
11501 |
-
});
|
11502 |
-
input = this.opt('slotLabelInterval');
|
11503 |
-
this.labelInterval = input ?
|
11504 |
-
core.createDuration(input) :
|
11505 |
-
this.computeLabelInterval(slotDuration);
|
11506 |
-
};
|
11507 |
-
// Computes an automatic value for slotLabelInterval
|
11508 |
-
TimeGrid.prototype.computeLabelInterval = function (slotDuration) {
|
11509 |
-
var i;
|
11510 |
-
var labelInterval;
|
11511 |
-
var slotsPerLabel;
|
11512 |
-
// find the smallest stock label interval that results in more than one slots-per-label
|
11513 |
-
for (i = AGENDA_STOCK_SUB_DURATIONS.length - 1; i >= 0; i--) {
|
11514 |
-
labelInterval = core.createDuration(AGENDA_STOCK_SUB_DURATIONS[i]);
|
11515 |
-
slotsPerLabel = core.wholeDivideDurations(labelInterval, slotDuration);
|
11516 |
-
if (slotsPerLabel !== null && slotsPerLabel > 1) {
|
11517 |
-
return labelInterval;
|
11518 |
-
}
|
11519 |
-
}
|
11520 |
-
return slotDuration; // fall back
|
11521 |
-
};
|
11522 |
-
/* Rendering
|
11523 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11524 |
-
TimeGrid.prototype.render = function (props) {
|
11525 |
-
var cells = props.cells;
|
11526 |
-
this.colCnt = cells.length;
|
11527 |
-
this.renderSlats(props.dateProfile);
|
11528 |
-
this.renderColumns(props.cells, props.dateProfile);
|
11529 |
-
this.renderBusinessHours(props.businessHourSegs);
|
11530 |
-
this.renderDateSelection(props.dateSelectionSegs);
|
11531 |
-
this.renderFgEvents(props.fgEventSegs);
|
11532 |
-
this.renderBgEvents(props.bgEventSegs);
|
11533 |
-
this.renderEventSelection(props.eventSelection);
|
11534 |
-
this.renderEventDrag(props.eventDrag);
|
11535 |
-
this.renderEventResize(props.eventResize);
|
11536 |
-
};
|
11537 |
-
TimeGrid.prototype.destroy = function () {
|
11538 |
-
_super.prototype.destroy.call(this);
|
11539 |
-
// should unrender everything else too
|
11540 |
-
this.renderSlats.unrender();
|
11541 |
-
this.renderColumns.unrender();
|
11542 |
-
};
|
11543 |
-
TimeGrid.prototype.updateSize = function (isResize) {
|
11544 |
-
var _a = this, fillRenderer = _a.fillRenderer, eventRenderer = _a.eventRenderer, mirrorRenderer = _a.mirrorRenderer;
|
11545 |
-
if (isResize || this.isSlatSizesDirty) {
|
11546 |
-
this.buildSlatPositions();
|
11547 |
-
this.isSlatSizesDirty = false;
|
11548 |
-
}
|
11549 |
-
if (isResize || this.isColSizesDirty) {
|
11550 |
-
this.buildColPositions();
|
11551 |
-
this.isColSizesDirty = false;
|
11552 |
-
}
|
11553 |
-
fillRenderer.computeSizes(isResize);
|
11554 |
-
eventRenderer.computeSizes(isResize);
|
11555 |
-
mirrorRenderer.computeSizes(isResize);
|
11556 |
-
fillRenderer.assignSizes(isResize);
|
11557 |
-
eventRenderer.assignSizes(isResize);
|
11558 |
-
mirrorRenderer.assignSizes(isResize);
|
11559 |
-
};
|
11560 |
-
TimeGrid.prototype._renderSlats = function (dateProfile) {
|
11561 |
-
var theme = this.theme;
|
11562 |
-
this.slatContainerEl.innerHTML =
|
11563 |
-
'<table class="' + theme.getClass('tableGrid') + '">' +
|
11564 |
-
this.renderSlatRowHtml(dateProfile) +
|
11565 |
-
'</table>';
|
11566 |
-
this.slatEls = core.findElements(this.slatContainerEl, 'tr');
|
11567 |
-
this.slatPositions = new core.PositionCache(this.el, this.slatEls, false, true // vertical
|
11568 |
-
);
|
11569 |
-
this.isSlatSizesDirty = true;
|
11570 |
-
};
|
11571 |
-
// Generates the HTML for the horizontal "slats" that run width-wise. Has a time axis on a side. Depends on RTL.
|
11572 |
-
TimeGrid.prototype.renderSlatRowHtml = function (dateProfile) {
|
11573 |
-
var _a = this, dateEnv = _a.dateEnv, theme = _a.theme, isRtl = _a.isRtl;
|
11574 |
-
var html = '';
|
11575 |
-
var dayStart = core.startOfDay(dateProfile.renderRange.start);
|
11576 |
-
var slotTime = dateProfile.minTime;
|
11577 |
-
var slotIterator = core.createDuration(0);
|
11578 |
-
var slotDate; // will be on the view's first day, but we only care about its time
|
11579 |
-
var isLabeled;
|
11580 |
-
var axisHtml;
|
11581 |
-
// Calculate the time for each slot
|
11582 |
-
while (core.asRoughMs(slotTime) < core.asRoughMs(dateProfile.maxTime)) {
|
11583 |
-
slotDate = dateEnv.add(dayStart, slotTime);
|
11584 |
-
isLabeled = core.wholeDivideDurations(slotIterator, this.labelInterval) !== null;
|
11585 |
-
axisHtml =
|
11586 |
-
'<td class="fc-axis fc-time ' + theme.getClass('widgetContent') + '">' +
|
11587 |
-
(isLabeled ?
|
11588 |
-
'<span>' + // for matchCellWidths
|
11589 |
-
core.htmlEscape(dateEnv.format(slotDate, this.labelFormat)) +
|
11590 |
-
'</span>' :
|
11591 |
-
'') +
|
11592 |
-
'</td>';
|
11593 |
-
html +=
|
11594 |
-
'<tr data-time="' + core.formatIsoTimeString(slotDate) + '"' +
|
11595 |
-
(isLabeled ? '' : ' class="fc-minor"') +
|
11596 |
-
'>' +
|
11597 |
-
(!isRtl ? axisHtml : '') +
|
11598 |
-
'<td class="' + theme.getClass('widgetContent') + '"></td>' +
|
11599 |
-
(isRtl ? axisHtml : '') +
|
11600 |
-
'</tr>';
|
11601 |
-
slotTime = core.addDurations(slotTime, this.slotDuration);
|
11602 |
-
slotIterator = core.addDurations(slotIterator, this.slotDuration);
|
11603 |
-
}
|
11604 |
-
return html;
|
11605 |
-
};
|
11606 |
-
TimeGrid.prototype._renderColumns = function (cells, dateProfile) {
|
11607 |
-
var _a = this, theme = _a.theme, dateEnv = _a.dateEnv, view = _a.view;
|
11608 |
-
var bgRow = new daygrid.DayBgRow(this.context);
|
11609 |
-
this.rootBgContainerEl.innerHTML =
|
11610 |
-
'<table class="' + theme.getClass('tableGrid') + '">' +
|
11611 |
-
bgRow.renderHtml({
|
11612 |
-
cells: cells,
|
11613 |
-
dateProfile: dateProfile,
|
11614 |
-
renderIntroHtml: this.renderProps.renderBgIntroHtml
|
11615 |
-
}) +
|
11616 |
-
'</table>';
|
11617 |
-
this.colEls = core.findElements(this.el, '.fc-day, .fc-disabled-day');
|
11618 |
-
for (var col = 0; col < this.colCnt; col++) {
|
11619 |
-
this.publiclyTrigger('dayRender', [
|
11620 |
-
{
|
11621 |
-
date: dateEnv.toDate(cells[col].date),
|
11622 |
-
el: this.colEls[col],
|
11623 |
-
view: view
|
11624 |
-
}
|
11625 |
-
]);
|
11626 |
-
}
|
11627 |
-
if (this.isRtl) {
|
11628 |
-
this.colEls.reverse();
|
11629 |
-
}
|
11630 |
-
this.colPositions = new core.PositionCache(this.el, this.colEls, true, // horizontal
|
11631 |
-
false);
|
11632 |
-
this.renderContentSkeleton();
|
11633 |
-
this.isColSizesDirty = true;
|
11634 |
-
};
|
11635 |
-
TimeGrid.prototype._unrenderColumns = function () {
|
11636 |
-
this.unrenderContentSkeleton();
|
11637 |
-
};
|
11638 |
-
/* Content Skeleton
|
11639 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11640 |
-
// Renders the DOM that the view's content will live in
|
11641 |
-
TimeGrid.prototype.renderContentSkeleton = function () {
|
11642 |
-
var parts = [];
|
11643 |
-
var skeletonEl;
|
11644 |
-
parts.push(this.renderProps.renderIntroHtml());
|
11645 |
-
for (var i = 0; i < this.colCnt; i++) {
|
11646 |
-
parts.push('<td>' +
|
11647 |
-
'<div class="fc-content-col">' +
|
11648 |
-
'<div class="fc-event-container fc-mirror-container"></div>' +
|
11649 |
-
'<div class="fc-event-container"></div>' +
|
11650 |
-
'<div class="fc-highlight-container"></div>' +
|
11651 |
-
'<div class="fc-bgevent-container"></div>' +
|
11652 |
-
'<div class="fc-business-container"></div>' +
|
11653 |
-
'</div>' +
|
11654 |
-
'</td>');
|
11655 |
-
}
|
11656 |
-
if (this.isRtl) {
|
11657 |
-
parts.reverse();
|
11658 |
-
}
|
11659 |
-
skeletonEl = this.contentSkeletonEl = core.htmlToElement('<div class="fc-content-skeleton">' +
|
11660 |
-
'<table>' +
|
11661 |
-
'<tr>' + parts.join('') + '</tr>' +
|
11662 |
-
'</table>' +
|
11663 |
-
'</div>');
|
11664 |
-
this.colContainerEls = core.findElements(skeletonEl, '.fc-content-col');
|
11665 |
-
this.mirrorContainerEls = core.findElements(skeletonEl, '.fc-mirror-container');
|
11666 |
-
this.fgContainerEls = core.findElements(skeletonEl, '.fc-event-container:not(.fc-mirror-container)');
|
11667 |
-
this.bgContainerEls = core.findElements(skeletonEl, '.fc-bgevent-container');
|
11668 |
-
this.highlightContainerEls = core.findElements(skeletonEl, '.fc-highlight-container');
|
11669 |
-
this.businessContainerEls = core.findElements(skeletonEl, '.fc-business-container');
|
11670 |
-
if (this.isRtl) {
|
11671 |
-
this.colContainerEls.reverse();
|
11672 |
-
this.mirrorContainerEls.reverse();
|
11673 |
-
this.fgContainerEls.reverse();
|
11674 |
-
this.bgContainerEls.reverse();
|
11675 |
-
this.highlightContainerEls.reverse();
|
11676 |
-
this.businessContainerEls.reverse();
|
11677 |
-
}
|
11678 |
-
this.el.appendChild(skeletonEl);
|
11679 |
-
};
|
11680 |
-
TimeGrid.prototype.unrenderContentSkeleton = function () {
|
11681 |
-
core.removeElement(this.contentSkeletonEl);
|
11682 |
-
};
|
11683 |
-
// Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col
|
11684 |
-
TimeGrid.prototype.groupSegsByCol = function (segs) {
|
11685 |
-
var segsByCol = [];
|
11686 |
-
var i;
|
11687 |
-
for (i = 0; i < this.colCnt; i++) {
|
11688 |
-
segsByCol.push([]);
|
11689 |
-
}
|
11690 |
-
for (i = 0; i < segs.length; i++) {
|
11691 |
-
segsByCol[segs[i].col].push(segs[i]);
|
11692 |
-
}
|
11693 |
-
return segsByCol;
|
11694 |
-
};
|
11695 |
-
// Given segments grouped by column, insert the segments' elements into a parallel array of container
|
11696 |
-
// elements, each living within a column.
|
11697 |
-
TimeGrid.prototype.attachSegsByCol = function (segsByCol, containerEls) {
|
11698 |
-
var col;
|
11699 |
-
var segs;
|
11700 |
-
var i;
|
11701 |
-
for (col = 0; col < this.colCnt; col++) { // iterate each column grouping
|
11702 |
-
segs = segsByCol[col];
|
11703 |
-
for (i = 0; i < segs.length; i++) {
|
11704 |
-
containerEls[col].appendChild(segs[i].el);
|
11705 |
-
}
|
11706 |
-
}
|
11707 |
-
};
|
11708 |
-
/* Now Indicator
|
11709 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11710 |
-
TimeGrid.prototype.getNowIndicatorUnit = function () {
|
11711 |
-
return 'minute'; // will refresh on the minute
|
11712 |
-
};
|
11713 |
-
TimeGrid.prototype.renderNowIndicator = function (segs, date) {
|
11714 |
-
// HACK: if date columns not ready for some reason (scheduler)
|
11715 |
-
if (!this.colContainerEls) {
|
11716 |
-
return;
|
11717 |
-
}
|
11718 |
-
var top = this.computeDateTop(date);
|
11719 |
-
var nodes = [];
|
11720 |
-
var i;
|
11721 |
-
// render lines within the columns
|
11722 |
-
for (i = 0; i < segs.length; i++) {
|
11723 |
-
var lineEl = core.createElement('div', { className: 'fc-now-indicator fc-now-indicator-line' });
|
11724 |
-
lineEl.style.top = top + 'px';
|
11725 |
-
this.colContainerEls[segs[i].col].appendChild(lineEl);
|
11726 |
-
nodes.push(lineEl);
|
11727 |
-
}
|
11728 |
-
// render an arrow over the axis
|
11729 |
-
if (segs.length > 0) { // is the current time in view?
|
11730 |
-
var arrowEl = core.createElement('div', { className: 'fc-now-indicator fc-now-indicator-arrow' });
|
11731 |
-
arrowEl.style.top = top + 'px';
|
11732 |
-
this.contentSkeletonEl.appendChild(arrowEl);
|
11733 |
-
nodes.push(arrowEl);
|
11734 |
-
}
|
11735 |
-
this.nowIndicatorEls = nodes;
|
11736 |
-
};
|
11737 |
-
TimeGrid.prototype.unrenderNowIndicator = function () {
|
11738 |
-
if (this.nowIndicatorEls) {
|
11739 |
-
this.nowIndicatorEls.forEach(core.removeElement);
|
11740 |
-
this.nowIndicatorEls = null;
|
11741 |
-
}
|
11742 |
-
};
|
11743 |
-
/* Coordinates
|
11744 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11745 |
-
TimeGrid.prototype.getTotalSlatHeight = function () {
|
11746 |
-
return this.slatContainerEl.getBoundingClientRect().height;
|
11747 |
-
};
|
11748 |
-
// Computes the top coordinate, relative to the bounds of the grid, of the given date.
|
11749 |
-
// A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.
|
11750 |
-
TimeGrid.prototype.computeDateTop = function (when, startOfDayDate) {
|
11751 |
-
if (!startOfDayDate) {
|
11752 |
-
startOfDayDate = core.startOfDay(when);
|
11753 |
-
}
|
11754 |
-
return this.computeTimeTop(core.createDuration(when.valueOf() - startOfDayDate.valueOf()));
|
11755 |
-
};
|
11756 |
-
// Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).
|
11757 |
-
TimeGrid.prototype.computeTimeTop = function (duration) {
|
11758 |
-
var len = this.slatEls.length;
|
11759 |
-
var dateProfile = this.props.dateProfile;
|
11760 |
-
var slatCoverage = (duration.milliseconds - core.asRoughMs(dateProfile.minTime)) / core.asRoughMs(this.slotDuration); // floating-point value of # of slots covered
|
11761 |
-
var slatIndex;
|
11762 |
-
var slatRemainder;
|
11763 |
-
// compute a floating-point number for how many slats should be progressed through.
|
11764 |
-
// from 0 to number of slats (inclusive)
|
11765 |
-
// constrained because minTime/maxTime might be customized.
|
11766 |
-
slatCoverage = Math.max(0, slatCoverage);
|
11767 |
-
slatCoverage = Math.min(len, slatCoverage);
|
11768 |
-
// an integer index of the furthest whole slat
|
11769 |
-
// from 0 to number slats (*exclusive*, so len-1)
|
11770 |
-
slatIndex = Math.floor(slatCoverage);
|
11771 |
-
slatIndex = Math.min(slatIndex, len - 1);
|
11772 |
-
// how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.
|
11773 |
-
// could be 1.0 if slatCoverage is covering *all* the slots
|
11774 |
-
slatRemainder = slatCoverage - slatIndex;
|
11775 |
-
return this.slatPositions.tops[slatIndex] +
|
11776 |
-
this.slatPositions.getHeight(slatIndex) * slatRemainder;
|
11777 |
-
};
|
11778 |
-
// For each segment in an array, computes and assigns its top and bottom properties
|
11779 |
-
TimeGrid.prototype.computeSegVerticals = function (segs) {
|
11780 |
-
var eventMinHeight = this.opt('timeGridEventMinHeight');
|
11781 |
-
var i;
|
11782 |
-
var seg;
|
11783 |
-
var dayDate;
|
11784 |
-
for (i = 0; i < segs.length; i++) {
|
11785 |
-
seg = segs[i];
|
11786 |
-
dayDate = this.props.cells[seg.col].date;
|
11787 |
-
seg.top = this.computeDateTop(seg.start, dayDate);
|
11788 |
-
seg.bottom = Math.max(seg.top + eventMinHeight, this.computeDateTop(seg.end, dayDate));
|
11789 |
-
}
|
11790 |
-
};
|
11791 |
-
// Given segments that already have their top/bottom properties computed, applies those values to
|
11792 |
-
// the segments' elements.
|
11793 |
-
TimeGrid.prototype.assignSegVerticals = function (segs) {
|
11794 |
-
var i;
|
11795 |
-
var seg;
|
11796 |
-
for (i = 0; i < segs.length; i++) {
|
11797 |
-
seg = segs[i];
|
11798 |
-
core.applyStyle(seg.el, this.generateSegVerticalCss(seg));
|
11799 |
-
}
|
11800 |
-
};
|
11801 |
-
// Generates an object with CSS properties for the top/bottom coordinates of a segment element
|
11802 |
-
TimeGrid.prototype.generateSegVerticalCss = function (seg) {
|
11803 |
-
return {
|
11804 |
-
top: seg.top,
|
11805 |
-
bottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container
|
11806 |
-
};
|
11807 |
-
};
|
11808 |
-
/* Sizing
|
11809 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11810 |
-
TimeGrid.prototype.buildPositionCaches = function () {
|
11811 |
-
this.buildColPositions();
|
11812 |
-
this.buildSlatPositions();
|
11813 |
-
};
|
11814 |
-
TimeGrid.prototype.buildColPositions = function () {
|
11815 |
-
this.colPositions.build();
|
11816 |
-
};
|
11817 |
-
TimeGrid.prototype.buildSlatPositions = function () {
|
11818 |
-
this.slatPositions.build();
|
11819 |
-
};
|
11820 |
-
/* Hit System
|
11821 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11822 |
-
TimeGrid.prototype.positionToHit = function (positionLeft, positionTop) {
|
11823 |
-
var _a = this, dateEnv = _a.dateEnv, snapsPerSlot = _a.snapsPerSlot, slatPositions = _a.slatPositions, colPositions = _a.colPositions;
|
11824 |
-
var colIndex = colPositions.leftToIndex(positionLeft);
|
11825 |
-
var slatIndex = slatPositions.topToIndex(positionTop);
|
11826 |
-
if (colIndex != null && slatIndex != null) {
|
11827 |
-
var slatTop = slatPositions.tops[slatIndex];
|
11828 |
-
var slatHeight = slatPositions.getHeight(slatIndex);
|
11829 |
-
var partial = (positionTop - slatTop) / slatHeight; // floating point number between 0 and 1
|
11830 |
-
var localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat
|
11831 |
-
var snapIndex = slatIndex * snapsPerSlot + localSnapIndex;
|
11832 |
-
var dayDate = this.props.cells[colIndex].date;
|
11833 |
-
var time = core.addDurations(this.props.dateProfile.minTime, core.multiplyDuration(this.snapDuration, snapIndex));
|
11834 |
-
var start = dateEnv.add(dayDate, time);
|
11835 |
-
var end = dateEnv.add(start, this.snapDuration);
|
11836 |
-
return {
|
11837 |
-
col: colIndex,
|
11838 |
-
dateSpan: {
|
11839 |
-
range: { start: start, end: end },
|
11840 |
-
allDay: false
|
11841 |
-
},
|
11842 |
-
dayEl: this.colEls[colIndex],
|
11843 |
-
relativeRect: {
|
11844 |
-
left: colPositions.lefts[colIndex],
|
11845 |
-
right: colPositions.rights[colIndex],
|
11846 |
-
top: slatTop,
|
11847 |
-
bottom: slatTop + slatHeight
|
11848 |
-
}
|
11849 |
-
};
|
11850 |
-
}
|
11851 |
-
};
|
11852 |
-
/* Event Drag Visualization
|
11853 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11854 |
-
TimeGrid.prototype._renderEventDrag = function (state) {
|
11855 |
-
if (state) {
|
11856 |
-
this.eventRenderer.hideByHash(state.affectedInstances);
|
11857 |
-
if (state.isEvent) {
|
11858 |
-
this.mirrorRenderer.renderSegs(state.segs, { isDragging: true, sourceSeg: state.sourceSeg });
|
11859 |
-
}
|
11860 |
-
else {
|
11861 |
-
this.fillRenderer.renderSegs('highlight', state.segs);
|
11862 |
-
}
|
11863 |
-
}
|
11864 |
-
};
|
11865 |
-
TimeGrid.prototype._unrenderEventDrag = function (state) {
|
11866 |
-
if (state) {
|
11867 |
-
this.eventRenderer.showByHash(state.affectedInstances);
|
11868 |
-
this.mirrorRenderer.unrender(state.segs, { isDragging: true, sourceSeg: state.sourceSeg });
|
11869 |
-
this.fillRenderer.unrender('highlight');
|
11870 |
-
}
|
11871 |
-
};
|
11872 |
-
/* Event Resize Visualization
|
11873 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11874 |
-
TimeGrid.prototype._renderEventResize = function (state) {
|
11875 |
-
if (state) {
|
11876 |
-
this.eventRenderer.hideByHash(state.affectedInstances);
|
11877 |
-
this.mirrorRenderer.renderSegs(state.segs, { isResizing: true, sourceSeg: state.sourceSeg });
|
11878 |
-
}
|
11879 |
-
};
|
11880 |
-
TimeGrid.prototype._unrenderEventResize = function (state) {
|
11881 |
-
if (state) {
|
11882 |
-
this.eventRenderer.showByHash(state.affectedInstances);
|
11883 |
-
this.mirrorRenderer.unrender(state.segs, { isResizing: true, sourceSeg: state.sourceSeg });
|
11884 |
-
}
|
11885 |
-
};
|
11886 |
-
/* Selection
|
11887 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11888 |
-
// Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight.
|
11889 |
-
TimeGrid.prototype._renderDateSelection = function (segs) {
|
11890 |
-
if (segs) {
|
11891 |
-
if (this.opt('selectMirror')) {
|
11892 |
-
this.mirrorRenderer.renderSegs(segs, { isSelecting: true });
|
11893 |
-
}
|
11894 |
-
else {
|
11895 |
-
this.fillRenderer.renderSegs('highlight', segs);
|
11896 |
-
}
|
11897 |
-
}
|
11898 |
-
};
|
11899 |
-
TimeGrid.prototype._unrenderDateSelection = function (segs) {
|
11900 |
-
this.mirrorRenderer.unrender(segs, { isSelecting: true });
|
11901 |
-
this.fillRenderer.unrender('highlight');
|
11902 |
-
};
|
11903 |
-
return TimeGrid;
|
11904 |
-
}(core.DateComponent));
|
11905 |
-
|
11906 |
-
var AllDaySplitter = /** @class */ (function (_super) {
|
11907 |
-
__extends(AllDaySplitter, _super);
|
11908 |
-
function AllDaySplitter() {
|
11909 |
-
return _super !== null && _super.apply(this, arguments) || this;
|
11910 |
-
}
|
11911 |
-
AllDaySplitter.prototype.getKeyInfo = function () {
|
11912 |
-
return {
|
11913 |
-
allDay: {},
|
11914 |
-
timed: {}
|
11915 |
-
};
|
11916 |
-
};
|
11917 |
-
AllDaySplitter.prototype.getKeysForDateSpan = function (dateSpan) {
|
11918 |
-
if (dateSpan.allDay) {
|
11919 |
-
return ['allDay'];
|
11920 |
-
}
|
11921 |
-
else {
|
11922 |
-
return ['timed'];
|
11923 |
-
}
|
11924 |
-
};
|
11925 |
-
AllDaySplitter.prototype.getKeysForEventDef = function (eventDef) {
|
11926 |
-
if (!eventDef.allDay) {
|
11927 |
-
return ['timed'];
|
11928 |
-
}
|
11929 |
-
else if (core.hasBgRendering(eventDef)) {
|
11930 |
-
return ['timed', 'allDay'];
|
11931 |
-
}
|
11932 |
-
else {
|
11933 |
-
return ['allDay'];
|
11934 |
-
}
|
11935 |
-
};
|
11936 |
-
return AllDaySplitter;
|
11937 |
-
}(core.Splitter));
|
11938 |
-
|
11939 |
-
var TIMEGRID_ALL_DAY_EVENT_LIMIT = 5;
|
11940 |
-
var WEEK_HEADER_FORMAT = core.createFormatter({ week: 'short' });
|
11941 |
-
/* An abstract class for all timegrid-related views. Displays one more columns with time slots running vertically.
|
11942 |
-
----------------------------------------------------------------------------------------------------------------------*/
|
11943 |
-
// Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on).
|
11944 |
-
// Responsible for managing width/height.
|
11945 |
-
var TimeGridView = /** @class */ (function (_super) {
|
11946 |
-
__extends(TimeGridView, _super);
|
11947 |
-
function TimeGridView(context, viewSpec, dateProfileGenerator, parentEl) {
|
11948 |
-
var _this = _super.call(this, context, viewSpec, dateProfileGenerator, parentEl) || this;
|
11949 |
-
_this.splitter = new AllDaySplitter();
|
11950 |
-
/* Header Render Methods
|
11951 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11952 |
-
// Generates the HTML that will go before the day-of week header cells
|
11953 |
-
_this.renderHeadIntroHtml = function () {
|
11954 |
-
var _a = _this, theme = _a.theme, dateEnv = _a.dateEnv;
|
11955 |
-
var range = _this.props.dateProfile.renderRange;
|
11956 |
-
var dayCnt = core.diffDays(range.start, range.end);
|
11957 |
-
var weekText;
|
11958 |
-
if (_this.opt('weekNumbers')) {
|
11959 |
-
weekText = dateEnv.format(range.start, WEEK_HEADER_FORMAT);
|
11960 |
-
return '' +
|
11961 |
-
'<th class="fc-axis fc-week-number ' + theme.getClass('widgetHeader') + '" ' + _this.axisStyleAttr() + '>' +
|
11962 |
-
core.buildGotoAnchorHtml(// aside from link, important for matchCellWidths
|
11963 |
-
_this, { date: range.start, type: 'week', forceOff: dayCnt > 1 }, core.htmlEscape(weekText) // inner HTML
|
11964 |
-
) +
|
11965 |
-
'</th>';
|
11966 |
-
}
|
11967 |
-
else {
|
11968 |
-
return '<th class="fc-axis ' + theme.getClass('widgetHeader') + '" ' + _this.axisStyleAttr() + '></th>';
|
11969 |
-
}
|
11970 |
-
};
|
11971 |
-
/* Time Grid Render Methods
|
11972 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11973 |
-
// Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column.
|
11974 |
-
_this.renderTimeGridBgIntroHtml = function () {
|
11975 |
-
var theme = _this.theme;
|
11976 |
-
return '<td class="fc-axis ' + theme.getClass('widgetContent') + '" ' + _this.axisStyleAttr() + '></td>';
|
11977 |
-
};
|
11978 |
-
// Generates the HTML that goes before all other types of cells.
|
11979 |
-
// Affects content-skeleton, mirror-skeleton, highlight-skeleton for both the time-grid and day-grid.
|
11980 |
-
_this.renderTimeGridIntroHtml = function () {
|
11981 |
-
return '<td class="fc-axis" ' + _this.axisStyleAttr() + '></td>';
|
11982 |
-
};
|
11983 |
-
/* Day Grid Render Methods
|
11984 |
-
------------------------------------------------------------------------------------------------------------------*/
|
11985 |
-
// Generates the HTML that goes before the all-day cells
|
11986 |
-
_this.renderDayGridBgIntroHtml = function () {
|
11987 |
-
var theme = _this.theme;
|
11988 |
-
return '' +
|
11989 |
-
'<td class="fc-axis ' + theme.getClass('widgetContent') + '" ' + _this.axisStyleAttr() + '>' +
|
11990 |
-
'<span>' + // needed for matchCellWidths
|
11991 |
-
core.getAllDayHtml(_this) +
|
11992 |
-
'</span>' +
|
11993 |
-
'</td>';
|
11994 |
-
};
|
11995 |
-
// Generates the HTML that goes before all other types of cells.
|
11996 |
-
// Affects content-skeleton, mirror-skeleton, highlight-skeleton for both the time-grid and day-grid.
|
11997 |
-
_this.renderDayGridIntroHtml = function () {
|
11998 |
-
return '<td class="fc-axis" ' + _this.axisStyleAttr() + '></td>';
|
11999 |
-
};
|
12000 |
-
_this.el.classList.add('fc-timeGrid-view');
|
12001 |
-
_this.el.innerHTML = _this.renderSkeletonHtml();
|
12002 |
-
_this.scroller = new core.ScrollComponent('hidden', // overflow x
|
12003 |
-
'auto' // overflow y
|
12004 |
-
);
|
12005 |
-
var timeGridWrapEl = _this.scroller.el;
|
12006 |
-
_this.el.querySelector('.fc-body > tr > td').appendChild(timeGridWrapEl);
|
12007 |
-
timeGridWrapEl.classList.add('fc-time-grid-container');
|
12008 |
-
var timeGridEl = core.createElement('div', { className: 'fc-time-grid' });
|
12009 |
-
timeGridWrapEl.appendChild(timeGridEl);
|
12010 |
-
_this.timeGrid = new TimeGrid(_this.context, timeGridEl, {
|
12011 |
-
renderBgIntroHtml: _this.renderTimeGridBgIntroHtml,
|
12012 |
-
renderIntroHtml: _this.renderTimeGridIntroHtml
|
12013 |
-
});
|
12014 |
-
if (_this.opt('allDaySlot')) { // should we display the "all-day" area?
|
12015 |
-
_this.dayGrid = new daygrid.DayGrid(// the all-day subcomponent of this view
|
12016 |
-
_this.context, _this.el.querySelector('.fc-day-grid'), {
|
12017 |
-
renderNumberIntroHtml: _this.renderDayGridIntroHtml,
|
12018 |
-
renderBgIntroHtml: _this.renderDayGridBgIntroHtml,
|
12019 |
-
renderIntroHtml: _this.renderDayGridIntroHtml,
|
12020 |
-
colWeekNumbersVisible: false,
|
12021 |
-
cellWeekNumbersVisible: false
|
12022 |
-
});
|
12023 |
-
// have the day-grid extend it's coordinate area over the <hr> dividing the two grids
|
12024 |
-
var dividerEl = _this.el.querySelector('.fc-divider');
|
12025 |
-
_this.dayGrid.bottomCoordPadding = dividerEl.getBoundingClientRect().height;
|
12026 |
-
}
|
12027 |
-
return _this;
|
12028 |
-
}
|
12029 |
-
TimeGridView.prototype.destroy = function () {
|
12030 |
-
_super.prototype.destroy.call(this);
|
12031 |
-
this.timeGrid.destroy();
|
12032 |
-
if (this.dayGrid) {
|
12033 |
-
this.dayGrid.destroy();
|
12034 |
-
}
|
12035 |
-
this.scroller.destroy();
|
12036 |
-
};
|
12037 |
-
/* Rendering
|
12038 |
-
------------------------------------------------------------------------------------------------------------------*/
|
12039 |
-
// Builds the HTML skeleton for the view.
|
12040 |
-
// The day-grid and time-grid components will render inside containers defined by this HTML.
|
12041 |
-
TimeGridView.prototype.renderSkeletonHtml = function () {
|
12042 |
-
var theme = this.theme;
|
12043 |
-
return '' +
|
12044 |
-
'<table class="' + theme.getClass('tableGrid') + '">' +
|
12045 |
-
(this.opt('columnHeader') ?
|
12046 |
-
'<thead class="fc-head">' +
|
12047 |
-
'<tr>' +
|
12048 |
-
'<td class="fc-head-container ' + theme.getClass('widgetHeader') + '"> </td>' +
|
12049 |
-
'</tr>' +
|
12050 |
-
'</thead>' :
|
12051 |
-
'') +
|
12052 |
-
'<tbody class="fc-body">' +
|
12053 |
-
'<tr>' +
|
12054 |
-
'<td class="' + theme.getClass('widgetContent') + '">' +
|
12055 |
-
(this.opt('allDaySlot') ?
|
12056 |
-
'<div class="fc-day-grid"></div>' +
|
12057 |
-
'<hr class="fc-divider ' + theme.getClass('widgetHeader') + '" />' :
|
12058 |
-
'') +
|
12059 |
-
'</td>' +
|
12060 |
-
'</tr>' +
|
12061 |
-
'</tbody>' +
|
12062 |
-
'</table>';
|
12063 |
-
};
|
12064 |
-
/* Now Indicator
|
12065 |
-
------------------------------------------------------------------------------------------------------------------*/
|
12066 |
-
TimeGridView.prototype.getNowIndicatorUnit = function () {
|
12067 |
-
return this.timeGrid.getNowIndicatorUnit();
|
12068 |
-
};
|
12069 |
-
// subclasses should implement
|
12070 |
-
// renderNowIndicator(date: DateMarker) {
|
12071 |
-
// }
|
12072 |
-
TimeGridView.prototype.unrenderNowIndicator = function () {
|
12073 |
-
this.timeGrid.unrenderNowIndicator();
|
12074 |
-
};
|
12075 |
-
/* Dimensions
|
12076 |
-
------------------------------------------------------------------------------------------------------------------*/
|
12077 |
-
TimeGridView.prototype.updateSize = function (isResize, viewHeight, isAuto) {
|
12078 |
-
_super.prototype.updateSize.call(this, isResize, viewHeight, isAuto); // will call updateBaseSize. important that executes first
|
12079 |
-
this.timeGrid.updateSize(isResize);
|
12080 |
-
if (this.dayGrid) {
|
12081 |
-
this.dayGrid.updateSize(isResize);
|
12082 |
-
}
|
12083 |
-
};
|
12084 |
-
// Adjusts the vertical dimensions of the view to the specified values
|
12085 |
-
TimeGridView.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) {
|
12086 |
-
var _this = this;
|
12087 |
-
var eventLimit;
|
12088 |
-
var scrollerHeight;
|
12089 |
-
var scrollbarWidths;
|
12090 |
-
// make all axis cells line up
|
12091 |
-
this.axisWidth = core.matchCellWidths(core.findElements(this.el, '.fc-axis'));
|
12092 |
-
// hack to give the view some height prior to timeGrid's columns being rendered
|
12093 |
-
// TODO: separate setting height from scroller VS timeGrid.
|
12094 |
-
if (!this.timeGrid.colEls) {
|
12095 |
-
if (!isAuto) {
|
12096 |
-
scrollerHeight = this.computeScrollerHeight(viewHeight);
|
12097 |
-
this.scroller.setHeight(scrollerHeight);
|
12098 |
-
}
|
12099 |
-
return;
|
12100 |
-
}
|
12101 |
-
// set of fake row elements that must compensate when scroller has scrollbars
|
12102 |
-
var noScrollRowEls = core.findElements(this.el, '.fc-row').filter(function (node) {
|
12103 |
-
return !_this.scroller.el.contains(node);
|
12104 |
-
});
|
12105 |
-
// reset all dimensions back to the original state
|
12106 |
-
this.timeGrid.bottomRuleEl.style.display = 'none'; // will be shown later if this <hr> is necessary
|
12107 |
-
this.scroller.clear(); // sets height to 'auto' and clears overflow
|
12108 |
-
noScrollRowEls.forEach(core.uncompensateScroll);
|
12109 |
-
// limit number of events in the all-day area
|
12110 |
-
if (this.dayGrid) {
|
12111 |
-
this.dayGrid.removeSegPopover(); // kill the "more" popover if displayed
|
12112 |
-
eventLimit = this.opt('eventLimit');
|
12113 |
-
if (eventLimit && typeof eventLimit !== 'number') {
|
12114 |
-
eventLimit = TIMEGRID_ALL_DAY_EVENT_LIMIT; // make sure "auto" goes to a real number
|
12115 |
-
}
|
12116 |
-
if (eventLimit) {
|
12117 |
-
this.dayGrid.limitRows(eventLimit);
|
12118 |
-
}
|
12119 |
-
}
|
12120 |
-
if (!isAuto) { // should we force dimensions of the scroll container?
|
12121 |
-
scrollerHeight = this.computeScrollerHeight(viewHeight);
|
12122 |
-
this.scroller.setHeight(scrollerHeight);
|
12123 |
-
scrollbarWidths = this.scroller.getScrollbarWidths();
|
12124 |
-
if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?
|
12125 |
-
// make the all-day and header rows lines up
|
12126 |
-
noScrollRowEls.forEach(function (rowEl) {
|
12127 |
-
core.compensateScroll(rowEl, scrollbarWidths);
|
12128 |
-
});
|
12129 |
-
// the scrollbar compensation might have changed text flow, which might affect height, so recalculate
|
12130 |
-
// and reapply the desired height to the scroller.
|
12131 |
-
scrollerHeight = this.computeScrollerHeight(viewHeight);
|
12132 |
-
this.scroller.setHeight(scrollerHeight);
|
12133 |
-
}
|
12134 |
-
// guarantees the same scrollbar widths
|
12135 |
-
this.scroller.lockOverflow(scrollbarWidths);
|
12136 |
-
// if there's any space below the slats, show the horizontal rule.
|
12137 |
-
// this won't cause any new overflow, because lockOverflow already called.
|
12138 |
-
if (this.timeGrid.getTotalSlatHeight() < scrollerHeight) {
|
12139 |
-
this.timeGrid.bottomRuleEl.style.display = '';
|
12140 |
-
}
|
12141 |
-
}
|
12142 |
-
};
|
12143 |
-
// given a desired total height of the view, returns what the height of the scroller should be
|
12144 |
-
TimeGridView.prototype.computeScrollerHeight = function (viewHeight) {
|
12145 |
-
return viewHeight -
|
12146 |
-
core.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller
|
12147 |
-
};
|
12148 |
-
/* Scroll
|
12149 |
-
------------------------------------------------------------------------------------------------------------------*/
|
12150 |
-
// Computes the initial pre-configured scroll state prior to allowing the user to change it
|
12151 |
-
TimeGridView.prototype.computeDateScroll = function (duration) {
|
12152 |
-
var top = this.timeGrid.computeTimeTop(duration);
|
12153 |
-
// zoom can give weird floating-point values. rather scroll a little bit further
|
12154 |
-
top = Math.ceil(top);
|
12155 |
-
if (top) {
|
12156 |
-
top++; // to overcome top border that slots beyond the first have. looks better
|
12157 |
-
}
|
12158 |
-
return { top: top };
|
12159 |
-
};
|
12160 |
-
TimeGridView.prototype.queryDateScroll = function () {
|
12161 |
-
return { top: this.scroller.getScrollTop() };
|
12162 |
-
};
|
12163 |
-
TimeGridView.prototype.applyDateScroll = function (scroll) {
|
12164 |
-
if (scroll.top !== undefined) {
|
12165 |
-
this.scroller.setScrollTop(scroll.top);
|
12166 |
-
}
|
12167 |
-
};
|
12168 |
-
// Generates an HTML attribute string for setting the width of the axis, if it is known
|
12169 |
-
TimeGridView.prototype.axisStyleAttr = function () {
|
12170 |
-
if (this.axisWidth != null) {
|
12171 |
-
return 'style="width:' + this.axisWidth + 'px"';
|
12172 |
-
}
|
12173 |
-
return '';
|
12174 |
-
};
|
12175 |
-
return TimeGridView;
|
12176 |
-
}(core.View));
|
12177 |
-
TimeGridView.prototype.usesMinMaxTime = true; // indicates that minTime/maxTime affects rendering
|
12178 |
-
|
12179 |
-
var SimpleTimeGrid = /** @class */ (function (_super) {
|
12180 |
-
__extends(SimpleTimeGrid, _super);
|
12181 |
-
function SimpleTimeGrid(context, timeGrid) {
|
12182 |
-
var _this = _super.call(this, context, timeGrid.el) || this;
|
12183 |
-
_this.buildDayRanges = core.memoize(buildDayRanges);
|
12184 |
-
_this.slicer = new TimeGridSlicer();
|
12185 |
-
_this.timeGrid = timeGrid;
|
12186 |
-
context.calendar.registerInteractiveComponent(_this, {
|
12187 |
-
el: _this.timeGrid.el
|
12188 |
-
});
|
12189 |
-
return _this;
|
12190 |
-
}
|
12191 |
-
SimpleTimeGrid.prototype.destroy = function () {
|
12192 |
-
_super.prototype.destroy.call(this);
|
12193 |
-
this.calendar.unregisterInteractiveComponent(this);
|
12194 |
-
};
|
12195 |
-
SimpleTimeGrid.prototype.render = function (props) {
|
12196 |
-
var dateProfile = props.dateProfile, dayTable = props.dayTable;
|
12197 |
-
var dayRanges = this.dayRanges = this.buildDayRanges(dayTable, dateProfile, this.dateEnv);
|
12198 |
-
this.timeGrid.receiveProps(__assign({}, this.slicer.sliceProps(props, dateProfile, null, this.timeGrid, dayRanges), { dateProfile: dateProfile, cells: dayTable.cells[0] }));
|
12199 |
-
};
|
12200 |
-
SimpleTimeGrid.prototype.renderNowIndicator = function (date) {
|
12201 |
-
this.timeGrid.renderNowIndicator(this.slicer.sliceNowDate(date, this.timeGrid, this.dayRanges), date);
|
12202 |
-
};
|
12203 |
-
SimpleTimeGrid.prototype.buildPositionCaches = function () {
|
12204 |
-
this.timeGrid.buildPositionCaches();
|
12205 |
-
};
|
12206 |
-
SimpleTimeGrid.prototype.queryHit = function (positionLeft, positionTop) {
|
12207 |
-
var rawHit = this.timeGrid.positionToHit(positionLeft, positionTop);
|
12208 |
-
if (rawHit) {
|
12209 |
-
return {
|
12210 |
-
component: this.timeGrid,
|
12211 |
-
dateSpan: rawHit.dateSpan,
|
12212 |
-
dayEl: rawHit.dayEl,
|
12213 |
-
rect: {
|
12214 |
-
left: rawHit.relativeRect.left,
|
12215 |
-
right: rawHit.relativeRect.right,
|
12216 |
-
top: rawHit.relativeRect.top,
|
12217 |
-
bottom: rawHit.relativeRect.bottom
|
12218 |
-
},
|
12219 |
-
layer: 0
|
12220 |
-
};
|
12221 |
-
}
|
12222 |
-
};
|
12223 |
-
return SimpleTimeGrid;
|
12224 |
-
}(core.DateComponent));
|
12225 |
-
function buildDayRanges(dayTable, dateProfile, dateEnv) {
|
12226 |
-
var ranges = [];
|
12227 |
-
for (var _i = 0, _a = dayTable.headerDates; _i < _a.length; _i++) {
|
12228 |
-
var date = _a[_i];
|
12229 |
-
ranges.push({
|
12230 |
-
start: dateEnv.add(date, dateProfile.minTime),
|
12231 |
-
end: dateEnv.add(date, dateProfile.maxTime)
|
12232 |
-
});
|
12233 |
-
}
|
12234 |
-
return ranges;
|
12235 |
-
}
|
12236 |
-
var TimeGridSlicer = /** @class */ (function (_super) {
|
12237 |
-
__extends(TimeGridSlicer, _super);
|
12238 |
-
function TimeGridSlicer() {
|
12239 |
-
return _super !== null && _super.apply(this, arguments) || this;
|
12240 |
-
}
|
12241 |
-
TimeGridSlicer.prototype.sliceRange = function (range, dayRanges) {
|
12242 |
-
var segs = [];
|
12243 |
-
for (var col = 0; col < dayRanges.length; col++) {
|
12244 |
-
var segRange = core.intersectRanges(range, dayRanges[col]);
|
12245 |
-
if (segRange) {
|
12246 |
-
segs.push({
|
12247 |
-
start: segRange.start,
|
12248 |
-
end: segRange.end,
|
12249 |
-
isStart: segRange.start.valueOf() === range.start.valueOf(),
|
12250 |
-
isEnd: segRange.end.valueOf() === range.end.valueOf(),
|
12251 |
-
col: col
|
12252 |
-
});
|
12253 |
-
}
|
12254 |
-
}
|
12255 |
-
return segs;
|
12256 |
-
};
|
12257 |
-
return TimeGridSlicer;
|
12258 |
-
}(core.Slicer));
|
12259 |
-
|
12260 |
-
var TimeGridView$1 = /** @class */ (function (_super) {
|
12261 |
-
__extends(TimeGridView, _super);
|
12262 |
-
function TimeGridView(_context, viewSpec, dateProfileGenerator, parentEl) {
|
12263 |
-
var _this = _super.call(this, _context, viewSpec, dateProfileGenerator, parentEl) || this;
|
12264 |
-
_this.buildDayTable = core.memoize(buildDayTable);
|
12265 |
-
if (_this.opt('columnHeader')) {
|
12266 |
-
_this.header = new core.DayHeader(_this.context, _this.el.querySelector('.fc-head-container'));
|
12267 |
-
}
|
12268 |
-
_this.simpleTimeGrid = new SimpleTimeGrid(_this.context, _this.timeGrid);
|
12269 |
-
if (_this.dayGrid) {
|
12270 |
-
_this.simpleDayGrid = new daygrid.SimpleDayGrid(_this.context, _this.dayGrid);
|
12271 |
-
}
|
12272 |
-
return _this;
|
12273 |
-
}
|
12274 |
-
TimeGridView.prototype.destroy = function () {
|
12275 |
-
_super.prototype.destroy.call(this);
|
12276 |
-
if (this.header) {
|
12277 |
-
this.header.destroy();
|
12278 |
-
}
|
12279 |
-
this.simpleTimeGrid.destroy();
|
12280 |
-
if (this.simpleDayGrid) {
|
12281 |
-
this.simpleDayGrid.destroy();
|
12282 |
-
}
|
12283 |
-
};
|
12284 |
-
TimeGridView.prototype.render = function (props) {
|
12285 |
-
_super.prototype.render.call(this, props); // for flags for updateSize
|
12286 |
-
var dateProfile = this.props.dateProfile;
|
12287 |
-
var dayTable = this.buildDayTable(dateProfile, this.dateProfileGenerator);
|
12288 |
-
var splitProps = this.splitter.splitProps(props);
|
12289 |
-
if (this.header) {
|
12290 |
-
this.header.receiveProps({
|
12291 |
-
dateProfile: dateProfile,
|
12292 |
-
dates: dayTable.headerDates,
|
12293 |
-
datesRepDistinctDays: true,
|
12294 |
-
renderIntroHtml: this.renderHeadIntroHtml
|
12295 |
-
});
|
12296 |
-
}
|
12297 |
-
this.simpleTimeGrid.receiveProps(__assign({}, splitProps['timed'], { dateProfile: dateProfile,
|
12298 |
-
dayTable: dayTable }));
|
12299 |
-
if (this.simpleDayGrid) {
|
12300 |
-
this.simpleDayGrid.receiveProps(__assign({}, splitProps['allDay'], { dateProfile: dateProfile,
|
12301 |
-
dayTable: dayTable, nextDayThreshold: this.nextDayThreshold, isRigid: false }));
|
12302 |
-
}
|
12303 |
-
};
|
12304 |
-
TimeGridView.prototype.renderNowIndicator = function (date) {
|
12305 |
-
this.simpleTimeGrid.renderNowIndicator(date);
|
12306 |
-
};
|
12307 |
-
return TimeGridView;
|
12308 |
-
}(TimeGridView));
|
12309 |
-
function buildDayTable(dateProfile, dateProfileGenerator) {
|
12310 |
-
var daySeries = new core.DaySeries(dateProfile.renderRange, dateProfileGenerator);
|
12311 |
-
return new core.DayTable(daySeries, false);
|
12312 |
-
}
|
12313 |
-
|
12314 |
-
var main = core.createPlugin({
|
12315 |
-
defaultView: 'timeGridWeek',
|
12316 |
-
views: {
|
12317 |
-
timeGrid: {
|
12318 |
-
class: TimeGridView$1,
|
12319 |
-
allDaySlot: true,
|
12320 |
-
slotDuration: '00:30:00',
|
12321 |
-
slotEventOverlap: true // a bad name. confused with overlap/constraint system
|
12322 |
-
},
|
12323 |
-
timeGridDay: {
|
12324 |
-
type: 'timeGrid',
|
12325 |
-
duration: { days: 1 }
|
12326 |
-
},
|
12327 |
-
timeGridWeek: {
|
12328 |
-
type: 'timeGrid',
|
12329 |
-
duration: { weeks: 1 }
|
12330 |
-
}
|
12331 |
-
}
|
12332 |
-
});
|
12333 |
-
|
12334 |
-
exports.AbstractTimeGridView = TimeGridView;
|
12335 |
-
exports.TimeGrid = TimeGrid;
|
12336 |
-
exports.TimeGridSlicer = TimeGridSlicer;
|
12337 |
-
exports.TimeGridView = TimeGridView$1;
|
12338 |
-
exports.buildDayRanges = buildDayRanges;
|
12339 |
-
exports.buildDayTable = buildDayTable;
|
12340 |
-
exports.default = main;
|
12341 |
-
|
12342 |
-
Object.defineProperty(exports, '__esModule', { value: true });
|
12343 |
-
|
12344 |
-
}));
|
12345 |
-
|
12346 |
-
!function(t,s,e){"use strict";var i=function(t,s){var i=this;this.el=t,this.options={},Object.keys(r).forEach(function(t){i.options[t]=r[t]}),Object.keys(s).forEach(function(t){i.options[t]=s[t]}),this.isInput="input"===this.el.tagName.toLowerCase(),this.attr=this.options.attr,this.showCursor=!this.isInput&&this.options.showCursor,this.elContent=this.attr?this.el.getAttribute(this.attr):this.el.textContent,this.contentType=this.options.contentType,this.typeSpeed=this.options.typeSpeed,this.startDelay=this.options.startDelay,this.backSpeed=this.options.backSpeed,this.backDelay=this.options.backDelay,e&&this.options.stringsElement instanceof e?this.stringsElement=this.options.stringsElement[0]:this.stringsElement=this.options.stringsElement,this.strings=this.options.strings,this.strPos=0,this.arrayPos=0,this.stopNum=0,this.loop=this.options.loop,this.loopCount=this.options.loopCount,this.curLoop=0,this.stop=!1,this.cursorChar=this.options.cursorChar,this.shuffle=this.options.shuffle,this.sequence=[],this.build()};i.prototype={constructor:i,init:function(){var t=this;t.timeout=setTimeout(function(){for(var s=0;s<t.strings.length;++s)t.sequence[s]=s;t.shuffle&&(t.sequence=t.shuffleArray(t.sequence)),t.typewrite(t.strings[t.sequence[t.arrayPos]],t.strPos)},t.startDelay)},build:function(){var t=this;if(this.showCursor===!0&&(this.cursor=s.createElement("span"),this.cursor.className="typed-cursor",this.cursor.innerHTML=this.cursorChar,this.el.parentNode&&this.el.parentNode.insertBefore(this.cursor,this.el.nextSibling)),this.stringsElement){this.strings=[],this.stringsElement.style.display="none";var e=Array.prototype.slice.apply(this.stringsElement.children);e.forEach(function(s){t.strings.push(s.innerHTML)})}this.init()},typewrite:function(t,s){if(this.stop!==!0){var e=Math.round(70*Math.random())+this.typeSpeed,i=this;i.timeout=setTimeout(function(){var e=0,r=t.substr(s);if("^"===r.charAt(0)){var o=1;/^\^\d+/.test(r)&&(r=/\d+/.exec(r)[0],o+=r.length,e=parseInt(r)),t=t.substring(0,s)+t.substring(s+o)}if("html"===i.contentType){var n=t.substr(s).charAt(0);if("<"===n||"&"===n){var a="",h="";for(h="<"===n?">":";";t.substr(s+1).charAt(0)!==h&&(a+=t.substr(s).charAt(0),s++,!(s+1>t.length)););s++,a+=h}}i.timeout=setTimeout(function(){if(s===t.length){if(i.options.onStringTyped(i.arrayPos),i.arrayPos===i.strings.length-1&&(i.options.callback(),i.curLoop++,i.loop===!1||i.curLoop===i.loopCount))return;i.timeout=setTimeout(function(){i.backspace(t,s)},i.backDelay)}else{0===s&&i.options.preStringTyped(i.arrayPos);var e=t.substr(0,s+1);i.attr?i.el.setAttribute(i.attr,e):i.isInput?i.el.value=e:"html"===i.contentType?i.el.innerHTML=e:i.el.textContent=e,s++,i.typewrite(t,s)}},e)},e)}},backspace:function(t,s){if(this.stop!==!0){var e=Math.round(70*Math.random())+this.backSpeed,i=this;i.timeout=setTimeout(function(){if("html"===i.contentType&&">"===t.substr(s).charAt(0)){for(var e="";"<"!==t.substr(s-1).charAt(0)&&(e-=t.substr(s).charAt(0),s--,!(s<0)););s--,e+="<"}var r=t.substr(0,s);i.attr?i.el.setAttribute(i.attr,r):i.isInput?i.el.value=r:"html"===i.contentType?i.el.innerHTML=r:i.el.textContent=r,s>i.stopNum?(s--,i.backspace(t,s)):s<=i.stopNum&&(i.arrayPos++,i.arrayPos===i.strings.length?(i.arrayPos=0,i.shuffle&&(i.sequence=i.shuffleArray(i.sequence)),i.init()):i.typewrite(i.strings[i.sequence[i.arrayPos]],s))},e)}},shuffleArray:function(t){var s,e,i=t.length;if(i)for(;--i;)e=Math.floor(Math.random()*(i+1)),s=t[e],t[e]=t[i],t[i]=s;return t},reset:function(){var t=this;clearInterval(t.timeout);this.el.getAttribute("id");this.el.textContent="","undefined"!=typeof this.cursor&&"undefined"!=typeof this.cursor.parentNode&&this.cursor.parentNode.removeChild(this.cursor),this.strPos=0,this.arrayPos=0,this.curLoop=0,this.options.resetCallback()}},i["new"]=function(t,e){var r=Array.prototype.slice.apply(s.querySelectorAll(t));r.forEach(function(t){var s=t._typed,r="object"==typeof e&&e;s&&s.reset(),t._typed=s=new i(t,r),"string"==typeof e&&s[e]()})},e&&(e.fn.typed=function(t){return this.each(function(){var s=e(this),r=s.data("typed"),o="object"==typeof t&&t;r&&r.reset(),s.data("typed",r=new i(this,o)),"string"==typeof t&&r[t]()})}),t.Typed=i;var r={strings:["These are the default values...","You know what you should do?","Use your own!","Have a great day!"],stringsElement:null,typeSpeed:0,startDelay:0,backSpeed:0,shuffle:!1,backDelay:500,loop:!1,loopCount:!1,showCursor:!0,cursorChar:"|",attr:null,contentType:"html",callback:function(){},preStringTyped:function(){},onStringTyped:function(){},resetCallback:function(){}}}(window,document,window.jQuery);
|
12347 |
-
!function(a){"use strict";function b(b,c){this.element=a(b),this.settings=a.extend({},d,c),this._defaults=d,this._init()}var c="Morphext",d={animation:"bounceIn",separator:",",speed:2e3,complete:a.noop};b.prototype={_init:function(){var b=this;this.phrases=[],this.element.addClass("morphext"),a.each(this.element.text().split(this.settings.separator),function(c,d){b.phrases.push(a.trim(d))}),this.index=-1,this.animate(),this.start()},animate:function(){this.index=++this.index%this.phrases.length,this.element[0].innerHTML='<span class="animated '+this.settings.animation+'">'+this.phrases[this.index]+"</span>",a.isFunction(this.settings.complete)&&this.settings.complete.call(this)},start:function(){var a=this;this._interval=setInterval(function(){a.animate()},this.settings.speed)},stop:function(){this._interval=clearInterval(this._interval)}},a.fn[c]=function(d){return this.each(function(){a.data(this,"plugin_"+c)||a.data(this,"plugin_"+c,new b(this,d))})}}(jQuery);
|
12348 |
-
|
12349 |
-
/*!
|
12350 |
-
* Morphext - Text Rotating Plugin for jQuery
|
12351 |
-
* https://github.com/MrSaints/Morphext
|
12352 |
-
*
|
12353 |
-
* Built on jQuery Boilerplate
|
12354 |
-
* http://jqueryboilerplate.com/
|
12355 |
-
*
|
12356 |
-
* Copyright 2014 Ian Lai and other contributors
|
12357 |
-
* Released under the MIT license
|
12358 |
-
* http://ian.mit-license.org/
|
12359 |
-
*/
|
12360 |
-
|
12361 |
-
/*eslint-env browser */
|
12362 |
-
/*global jQuery:false */
|
12363 |
-
/*eslint-disable no-underscore-dangle */
|
12364 |
-
|
12365 |
-
(function ($) {
|
12366 |
-
"use strict";
|
12367 |
-
|
12368 |
-
var pluginName = "Morphext",
|
12369 |
-
defaults = {
|
12370 |
-
animation: "bounceIn",
|
12371 |
-
separator: ",",
|
12372 |
-
speed: 2000,
|
12373 |
-
complete: $.noop
|
12374 |
-
};
|
12375 |
-
|
12376 |
-
function Plugin (element, options) {
|
12377 |
-
this.element = $(element);
|
12378 |
-
|
12379 |
-
this.settings = $.extend({}, defaults, options);
|
12380 |
-
this._defaults = defaults;
|
12381 |
-
this._init();
|
12382 |
-
}
|
12383 |
-
|
12384 |
-
Plugin.prototype = {
|
12385 |
-
_init: function () {
|
12386 |
-
var $that = this;
|
12387 |
-
this.phrases = [];
|
12388 |
-
|
12389 |
-
this.element.addClass("morphext");
|
12390 |
-
|
12391 |
-
$.each(this.element.text().split(this.settings.separator), function (key, value) {
|
12392 |
-
$that.phrases.push($.trim(value));
|
12393 |
-
});
|
12394 |
-
|
12395 |
-
this.index = -1;
|
12396 |
-
this.animate();
|
12397 |
-
this.start();
|
12398 |
-
},
|
12399 |
-
animate: function () {
|
12400 |
-
this.index = ++this.index % this.phrases.length;
|
12401 |
-
this.element[0].innerHTML = "<span class=\"animated " + this.settings.animation + "\">" + this.phrases[this.index] + "</span>";
|
12402 |
-
|
12403 |
-
if ($.isFunction(this.settings.complete)) {
|
12404 |
-
this.settings.complete.call(this);
|
12405 |
-
}
|
12406 |
-
},
|
12407 |
-
start: function () {
|
12408 |
-
var $that = this;
|
12409 |
-
this._interval = setInterval(function () {
|
12410 |
-
$that.animate();
|
12411 |
-
}, this.settings.speed);
|
12412 |
-
},
|
12413 |
-
stop: function () {
|
12414 |
-
this._interval = clearInterval(this._interval);
|
12415 |
-
}
|
12416 |
-
};
|
12417 |
-
|
12418 |
-
$.fn[pluginName] = function (options) {
|
12419 |
-
return this.each(function() {
|
12420 |
-
if (!$.data(this, "plugin_" + pluginName)) {
|
12421 |
-
$.data(this, "plugin_" + pluginName, new Plugin(this, options));
|
12422 |
-
}
|
12423 |
-
});
|
12424 |
-
};
|
12425 |
-
})(jQuery);
|
12426 |
-
|
12427 |
-
/*!
|
12428 |
-
*
|
12429 |
-
* typed.js - A JavaScript Typing Animation Library
|
12430 |
-
* Author: Matt Boldt <me@mattboldt.com>
|
12431 |
-
* Version: v2.0.9
|
12432 |
-
* Url: https://github.com/mattboldt/typed.js
|
12433 |
-
* License(s): MIT
|
12434 |
-
*
|
12435 |
-
*/
|
12436 |
-
(function webpackUniversalModuleDefinition(root, factory) {
|
12437 |
-
if(typeof exports === 'object' && typeof module === 'object')
|
12438 |
-
module.exports = factory();
|
12439 |
-
else if(typeof define === 'function' && define.amd)
|
12440 |
-
define([], factory);
|
12441 |
-
else if(typeof exports === 'object')
|
12442 |
-
exports["Typed"] = factory();
|
12443 |
-
else
|
12444 |
-
root["Typed"] = factory();
|
12445 |
-
})(this, function() {
|
12446 |
-
return /******/ (function(modules) { // webpackBootstrap
|
12447 |
-
/******/ // The module cache
|
12448 |
-
/******/ var installedModules = {};
|
12449 |
-
/******/
|
12450 |
-
/******/ // The require function
|
12451 |
-
/******/ function __webpack_require__(moduleId) {
|
12452 |
-
/******/
|
12453 |
-
/******/ // Check if module is in cache
|
12454 |
-
/******/ if(installedModules[moduleId])
|
12455 |
-
/******/ return installedModules[moduleId].exports;
|
12456 |
-
/******/
|
12457 |
-
/******/ // Create a new module (and put it into the cache)
|
12458 |
-
/******/ var module = installedModules[moduleId] = {
|
12459 |
-
/******/ exports: {},
|
12460 |
-
/******/ id: moduleId,
|
12461 |
-
/******/ loaded: false
|
12462 |
-
/******/ };
|
12463 |
-
/******/
|
12464 |
-
/******/ // Execute the module function
|
12465 |
-
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
12466 |
-
/******/
|
12467 |
-
/******/ // Flag the module as loaded
|
12468 |
-
/******/ module.loaded = true;
|
12469 |
-
/******/
|
12470 |
-
/******/ // Return the exports of the module
|
12471 |
-
/******/ return module.exports;
|
12472 |
-
/******/ }
|
12473 |
-
/******/
|
12474 |
-
/******/
|
12475 |
-
/******/ // expose the modules object (__webpack_modules__)
|
12476 |
-
/******/ __webpack_require__.m = modules;
|
12477 |
-
/******/
|
12478 |
-
/******/ // expose the module cache
|
12479 |
-
/******/ __webpack_require__.c = installedModules;
|
12480 |
-
/******/
|
12481 |
-
/******/ // __webpack_public_path__
|
12482 |
-
/******/ __webpack_require__.p = "";
|
12483 |
-
/******/
|
12484 |
-
/******/ // Load entry module and return exports
|
12485 |
-
/******/ return __webpack_require__(0);
|
12486 |
-
/******/ })
|
12487 |
-
/************************************************************************/
|
12488 |
-
/******/ ([
|
12489 |
-
/* 0 */
|
12490 |
-
/***/ (function(module, exports, __webpack_require__) {
|
12491 |
-
|
12492 |
-
'use strict';
|
12493 |
-
|
12494 |
-
Object.defineProperty(exports, '__esModule', {
|
12495 |
-
value: true
|
12496 |
-
});
|
12497 |
-
|
12498 |
-
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
12499 |
-
|
12500 |
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
12501 |
-
|
12502 |
-
var _initializerJs = __webpack_require__(1);
|
12503 |
-
|
12504 |
-
var _htmlParserJs = __webpack_require__(3);
|
12505 |
-
|
12506 |
-
/**
|
12507 |
-
* Welcome to Typed.js!
|
12508 |
-
* @param {string} elementId HTML element ID _OR_ HTML element
|
12509 |
-
* @param {object} options options object
|
12510 |
-
* @returns {object} a new Typed object
|
12511 |
-
*/
|
12512 |
-
|
12513 |
-
var Typed = (function () {
|
12514 |
-
function Typed(elementId, options) {
|
12515 |
-
_classCallCheck(this, Typed);
|
12516 |
-
|
12517 |
-
// Initialize it up
|
12518 |
-
_initializerJs.initializer.load(this, options, elementId);
|
12519 |
-
// All systems go!
|
12520 |
-
this.begin();
|
12521 |
-
}
|
12522 |
-
|
12523 |
-
/**
|
12524 |
-
* Toggle start() and stop() of the Typed instance
|
12525 |
-
* @public
|
12526 |
-
*/
|
12527 |
-
|
12528 |
-
_createClass(Typed, [{
|
12529 |
-
key: 'toggle',
|
12530 |
-
value: function toggle() {
|
12531 |
-
this.pause.status ? this.start() : this.stop();
|
12532 |
-
}
|
12533 |
-
|
12534 |
-
/**
|
12535 |
-
* Stop typing / backspacing and enable cursor blinking
|
12536 |
-
* @public
|
12537 |
-
*/
|
12538 |
-
}, {
|
12539 |
-
key: 'stop',
|
12540 |
-
value: function stop() {
|
12541 |
-
if (this.typingComplete) return;
|
12542 |
-
if (this.pause.status) return;
|
12543 |
-
this.toggleBlinking(true);
|
12544 |
-
this.pause.status = true;
|
12545 |
-
this.options.onStop(this.arrayPos, this);
|
12546 |
-
}
|
12547 |
-
|
12548 |
-
/**
|
12549 |
-
* Start typing / backspacing after being stopped
|
12550 |
-
* @public
|
12551 |
-
*/
|
12552 |
-
}, {
|
12553 |
-
key: 'start',
|
12554 |
-
value: function start() {
|
12555 |
-
if (this.typingComplete) return;
|
12556 |
-
if (!this.pause.status) return;
|
12557 |
-
this.pause.status = false;
|
12558 |
-
if (this.pause.typewrite) {
|
12559 |
-
this.typewrite(this.pause.curString, this.pause.curStrPos);
|
12560 |
-
} else {
|
12561 |
-
this.backspace(this.pause.curString, this.pause.curStrPos);
|
12562 |
-
}
|
12563 |
-
this.options.onStart(this.arrayPos, this);
|
12564 |
-
}
|
12565 |
-
|
12566 |
-
/**
|
12567 |
-
* Destroy this instance of Typed
|
12568 |
-
* @public
|
12569 |
-
*/
|
12570 |
-
}, {
|
12571 |
-
key: 'destroy',
|
12572 |
-
value: function destroy() {
|
12573 |
-
this.reset(false);
|
12574 |
-
this.options.onDestroy(this);
|
12575 |
-
}
|
12576 |
-
|
12577 |
-
/**
|
12578 |
-
* Reset Typed and optionally restarts
|
12579 |
-
* @param {boolean} restart
|
12580 |
-
* @public
|
12581 |
-
*/
|
12582 |
-
}, {
|
12583 |
-
key: 'reset',
|
12584 |
-
value: function reset() {
|
12585 |
-
var restart = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];
|
12586 |
-
|
12587 |
-
clearInterval(this.timeout);
|
12588 |
-
this.replaceText('');
|
12589 |
-
if (this.cursor && this.cursor.parentNode) {
|
12590 |
-
this.cursor.parentNode.removeChild(this.cursor);
|
12591 |
-
this.cursor = null;
|
12592 |
-
}
|
12593 |
-
this.strPos = 0;
|
12594 |
-
this.arrayPos = 0;
|
12595 |
-
this.curLoop = 0;
|
12596 |
-
if (restart) {
|
12597 |
-
this.insertCursor();
|
12598 |
-
this.options.onReset(this);
|
12599 |
-
this.begin();
|
12600 |
-
}
|
12601 |
-
}
|
12602 |
-
|
12603 |
-
/**
|
12604 |
-
* Begins the typing animation
|
12605 |
-
* @private
|
12606 |
-
*/
|
12607 |
-
}, {
|
12608 |
-
key: 'begin',
|
12609 |
-
value: function begin() {
|
12610 |
-
var _this = this;
|
12611 |
-
|
12612 |
-
this.typingComplete = false;
|
12613 |
-
this.shuffleStringsIfNeeded(this);
|
12614 |
-
this.insertCursor();
|
12615 |
-
if (this.bindInputFocusEvents) this.bindFocusEvents();
|
12616 |
-
this.timeout = setTimeout(function () {
|
12617 |
-
// Check if there is some text in the element, if yes start by backspacing the default message
|
12618 |
-
if (!_this.currentElContent || _this.currentElContent.length === 0) {
|
12619 |
-
_this.typewrite(_this.strings[_this.sequence[_this.arrayPos]], _this.strPos);
|
12620 |
-
} else {
|
12621 |
-
// Start typing
|
12622 |
-
_this.backspace(_this.currentElContent, _this.currentElContent.length);
|
12623 |
-
}
|
12624 |
-
}, this.startDelay);
|
12625 |
-
}
|
12626 |
-
|
12627 |
-
/**
|
12628 |
-
* Called for each character typed
|
12629 |
-
* @param {string} curString the current string in the strings array
|
12630 |
-
* @param {number} curStrPos the current position in the curString
|
12631 |
-
* @private
|
12632 |
-
*/
|
12633 |
-
}, {
|
12634 |
-
key: 'typewrite',
|
12635 |
-
value: function typewrite(curString, curStrPos) {
|
12636 |
-
var _this2 = this;
|
12637 |
-
|
12638 |
-
if (this.fadeOut && this.el.classList.contains(this.fadeOutClass)) {
|
12639 |
-
this.el.classList.remove(this.fadeOutClass);
|
12640 |
-
if (this.cursor) this.cursor.classList.remove(this.fadeOutClass);
|
12641 |
-
}
|
12642 |
-
|
12643 |
-
var humanize = this.humanizer(this.typeSpeed);
|
12644 |
-
var numChars = 1;
|
12645 |
-
|
12646 |
-
if (this.pause.status === true) {
|
12647 |
-
this.setPauseStatus(curString, curStrPos, true);
|
12648 |
-
return;
|
12649 |
-
}
|
12650 |
-
|
12651 |
-
// contain typing function in a timeout humanize'd delay
|
12652 |
-
this.timeout = setTimeout(function () {
|
12653 |
-
// skip over any HTML chars
|
12654 |
-
curStrPos = _htmlParserJs.htmlParser.typeHtmlChars(curString, curStrPos, _this2);
|
12655 |
-
|
12656 |
-
var pauseTime = 0;
|
12657 |
-
var substr = curString.substr(curStrPos);
|
12658 |
-
// check for an escape character before a pause value
|
12659 |
-
// format: \^\d+ .. eg: ^1000 .. should be able to print the ^ too using ^^
|
12660 |
-
// single ^ are removed from string
|
12661 |
-
if (substr.charAt(0) === '^') {
|
12662 |
-
if (/^\^\d+/.test(substr)) {
|
12663 |
-
var skip = 1; // skip at least 1
|
12664 |
-
substr = /\d+/.exec(substr)[0];
|
12665 |
-
skip += substr.length;
|
12666 |
-
pauseTime = parseInt(substr);
|
12667 |
-
_this2.temporaryPause = true;
|
12668 |
-
_this2.options.onTypingPaused(_this2.arrayPos, _this2);
|
12669 |
-
// strip out the escape character and pause value so they're not printed
|
12670 |
-
curString = curString.substring(0, curStrPos) + curString.substring(curStrPos + skip);
|
12671 |
-
_this2.toggleBlinking(true);
|
12672 |
-
}
|
12673 |
-
}
|
12674 |
-
|
12675 |
-
// check for skip characters formatted as
|
12676 |
-
// "this is a `string to print NOW` ..."
|
12677 |
-
if (substr.charAt(0) === '`') {
|
12678 |
-
while (curString.substr(curStrPos + numChars).charAt(0) !== '`') {
|
12679 |
-
numChars++;
|
12680 |
-
if (curStrPos + numChars > curString.length) break;
|
12681 |
-
}
|
12682 |
-
// strip out the escape characters and append all the string in between
|
12683 |
-
var stringBeforeSkip = curString.substring(0, curStrPos);
|
12684 |
-
var stringSkipped = curString.substring(stringBeforeSkip.length + 1, curStrPos + numChars);
|
12685 |
-
var stringAfterSkip = curString.substring(curStrPos + numChars + 1);
|
12686 |
-
curString = stringBeforeSkip + stringSkipped + stringAfterSkip;
|
12687 |
-
numChars--;
|
12688 |
-
}
|
12689 |
-
|
12690 |
-
// timeout for any pause after a character
|
12691 |
-
_this2.timeout = setTimeout(function () {
|
12692 |
-
// Accounts for blinking while paused
|
12693 |
-
_this2.toggleBlinking(false);
|
12694 |
-
|
12695 |
-
// We're done with this sentence!
|
12696 |
-
if (curStrPos >= curString.length) {
|
12697 |
-
_this2.doneTyping(curString, curStrPos);
|
12698 |
-
} else {
|
12699 |
-
_this2.keepTyping(curString, curStrPos, numChars);
|
12700 |
-
}
|
12701 |
-
// end of character pause
|
12702 |
-
if (_this2.temporaryPause) {
|
12703 |
-
_this2.temporaryPause = false;
|
12704 |
-
_this2.options.onTypingResumed(_this2.arrayPos, _this2);
|
12705 |
-
}
|
12706 |
-
}, pauseTime);
|
12707 |
-
|
12708 |
-
// humanized value for typing
|
12709 |
-
}, humanize);
|
12710 |
-
}
|
12711 |
-
|
12712 |
-
/**
|
12713 |
-
* Continue to the next string & begin typing
|
12714 |
-
* @param {string} curString the current string in the strings array
|
12715 |
-
* @param {number} curStrPos the current position in the curString
|
12716 |
-
* @private
|
12717 |
-
*/
|
12718 |
-
}, {
|
12719 |
-
key: 'keepTyping',
|
12720 |
-
value: function keepTyping(curString, curStrPos, numChars) {
|
12721 |
-
// call before functions if applicable
|
12722 |
-
if (curStrPos === 0) {
|
12723 |
-
this.toggleBlinking(false);
|
12724 |
-
this.options.preStringTyped(this.arrayPos, this);
|
12725 |
-
}
|
12726 |
-
// start typing each new char into existing string
|
12727 |
-
// curString: arg, this.el.html: original text inside element
|
12728 |
-
curStrPos += numChars;
|
12729 |
-
var nextString = curString.substr(0, curStrPos);
|
12730 |
-
this.replaceText(nextString);
|
12731 |
-
// loop the function
|
12732 |
-
this.typewrite(curString, curStrPos);
|
12733 |
-
}
|
12734 |
-
|
12735 |
-
/**
|
12736 |
-
* We're done typing all strings
|
12737 |
-
* @param {string} curString the current string in the strings array
|
12738 |
-
* @param {number} curStrPos the current position in the curString
|
12739 |
-
* @private
|
12740 |
-
*/
|
12741 |
-
}, {
|
12742 |
-
key: 'doneTyping',
|
12743 |
-
value: function doneTyping(curString, curStrPos) {
|
12744 |
-
var _this3 = this;
|
12745 |
-
|
12746 |
-
// fires callback function
|
12747 |
-
this.options.onStringTyped(this.arrayPos, this);
|
12748 |
-
this.toggleBlinking(true);
|
12749 |
-
// is this the final string
|
12750 |
-
if (this.arrayPos === this.strings.length - 1) {
|
12751 |
-
// callback that occurs on the last typed string
|
12752 |
-
this.complete();
|
12753 |
-
// quit if we wont loop back
|
12754 |
-
if (this.loop === false || this.curLoop === this.loopCount) {
|
12755 |
-
return;
|
12756 |
-
}
|
12757 |
-
}
|
12758 |
-
this.timeout = setTimeout(function () {
|
12759 |
-
_this3.backspace(curString, curStrPos);
|
12760 |
-
}, this.backDelay);
|
12761 |
-
}
|
12762 |
-
|
12763 |
-
/**
|
12764 |
-
* Backspaces 1 character at a time
|
12765 |
-
* @param {string} curString the current string in the strings array
|
12766 |
-
* @param {number} curStrPos the current position in the curString
|
12767 |
-
* @private
|
12768 |
-
*/
|
12769 |
-
}, {
|
12770 |
-
key: 'backspace',
|
12771 |
-
value: function backspace(curString, curStrPos) {
|
12772 |
-
var _this4 = this;
|
12773 |
-
|
12774 |
-
if (this.pause.status === true) {
|
12775 |
-
this.setPauseStatus(curString, curStrPos, true);
|
12776 |
-
return;
|
12777 |
-
}
|
12778 |
-
if (this.fadeOut) return this.initFadeOut();
|
12779 |
-
|
12780 |
-
this.toggleBlinking(false);
|
12781 |
-
var humanize = this.humanizer(this.backSpeed);
|
12782 |
-
|
12783 |
-
this.timeout = setTimeout(function () {
|
12784 |
-
curStrPos = _htmlParserJs.htmlParser.backSpaceHtmlChars(curString, curStrPos, _this4);
|
12785 |
-
// replace text with base text + typed characters
|
12786 |
-
var curStringAtPosition = curString.substr(0, curStrPos);
|
12787 |
-
_this4.replaceText(curStringAtPosition);
|
12788 |
-
|
12789 |
-
// if smartBack is enabled
|
12790 |
-
if (_this4.smartBackspace) {
|
12791 |
-
// the remaining part of the current string is equal of the same part of the new string
|
12792 |
-
var nextString = _this4.strings[_this4.arrayPos + 1];
|
12793 |
-
if (nextString && curStringAtPosition === nextString.substr(0, curStrPos)) {
|
12794 |
-
_this4.stopNum = curStrPos;
|
12795 |
-
} else {
|
12796 |
-
_this4.stopNum = 0;
|
12797 |
-
}
|
12798 |
-
}
|
12799 |
-
|
12800 |
-
// if the number (id of character in current string) is
|
12801 |
-
// less than the stop number, keep going
|
12802 |
-
if (curStrPos > _this4.stopNum) {
|
12803 |
-
// subtract characters one by one
|
12804 |
-
curStrPos--;
|
12805 |
-
// loop the function
|
12806 |
-
_this4.backspace(curString, curStrPos);
|
12807 |
-
} else if (curStrPos <= _this4.stopNum) {
|
12808 |
-
// if the stop number has been reached, increase
|
12809 |
-
// array position to next string
|
12810 |
-
_this4.arrayPos++;
|
12811 |
-
// When looping, begin at the beginning after backspace complete
|
12812 |
-
if (_this4.arrayPos === _this4.strings.length) {
|
12813 |
-
_this4.arrayPos = 0;
|
12814 |
-
_this4.options.onLastStringBackspaced();
|
12815 |
-
_this4.shuffleStringsIfNeeded();
|
12816 |
-
_this4.begin();
|
12817 |
-
} else {
|
12818 |
-
_this4.typewrite(_this4.strings[_this4.sequence[_this4.arrayPos]], curStrPos);
|
12819 |
-
}
|
12820 |
-
}
|
12821 |
-
// humanized value for typing
|
12822 |
-
}, humanize);
|
12823 |
-
}
|
12824 |
-
|
12825 |
-
/**
|
12826 |
-
* Full animation is complete
|
12827 |
-
* @private
|
12828 |
-
*/
|
12829 |
-
}, {
|
12830 |
-
key: 'complete',
|
12831 |
-
value: function complete() {
|
12832 |
-
this.options.onComplete(this);
|
12833 |
-
if (this.loop) {
|
12834 |
-
this.curLoop++;
|
12835 |
-
} else {
|
12836 |
-
this.typingComplete = true;
|
12837 |
-
}
|
12838 |
-
}
|
12839 |
-
|
12840 |
-
/**
|
12841 |
-
* Has the typing been stopped
|
12842 |
-
* @param {string} curString the current string in the strings array
|
12843 |
-
* @param {number} curStrPos the current position in the curString
|
12844 |
-
* @param {boolean} isTyping
|
12845 |
-
* @private
|
12846 |
-
*/
|
12847 |
-
}, {
|
12848 |
-
key: 'setPauseStatus',
|
12849 |
-
value: function setPauseStatus(curString, curStrPos, isTyping) {
|
12850 |
-
this.pause.typewrite = isTyping;
|
12851 |
-
this.pause.curString = curString;
|
12852 |
-
this.pause.curStrPos = curStrPos;
|
12853 |
-
}
|
12854 |
-
|
12855 |
-
/**
|
12856 |
-
* Toggle the blinking cursor
|
12857 |
-
* @param {boolean} isBlinking
|
12858 |
-
* @private
|
12859 |
-
*/
|
12860 |
-
}, {
|
12861 |
-
key: 'toggleBlinking',
|
12862 |
-
value: function toggleBlinking(isBlinking) {
|
12863 |
-
if (!this.cursor) return;
|
12864 |
-
// if in paused state, don't toggle blinking a 2nd time
|
12865 |
-
if (this.pause.status) return;
|
12866 |
-
if (this.cursorBlinking === isBlinking) return;
|
12867 |
-
this.cursorBlinking = isBlinking;
|
12868 |
-
if (isBlinking) {
|
12869 |
-
this.cursor.classList.add('typed-cursor--blink');
|
12870 |
-
} else {
|
12871 |
-
this.cursor.classList.remove('typed-cursor--blink');
|
12872 |
-
}
|
12873 |
-
}
|
12874 |
-
|
12875 |
-
/**
|
12876 |
-
* Speed in MS to type
|
12877 |
-
* @param {number} speed
|
12878 |
-
* @private
|
12879 |
-
*/
|
12880 |
-
}, {
|
12881 |
-
key: 'humanizer',
|
12882 |
-
value: function humanizer(speed) {
|
12883 |
-
return Math.round(Math.random() * speed / 2) + speed;
|
12884 |
-
}
|
12885 |
-
|
12886 |
-
/**
|
12887 |
-
* Shuffle the sequence of the strings array
|
12888 |
-
* @private
|
12889 |
-
*/
|
12890 |
-
}, {
|
12891 |
-
key: 'shuffleStringsIfNeeded',
|
12892 |
-
value: function shuffleStringsIfNeeded() {
|
12893 |
-
if (!this.shuffle) return;
|
12894 |
-
this.sequence = this.sequence.sort(function () {
|
12895 |
-
return Math.random() - 0.5;
|
12896 |
-
});
|
12897 |
-
}
|
12898 |
-
|
12899 |
-
/**
|
12900 |
-
* Adds a CSS class to fade out current string
|
12901 |
-
* @private
|
12902 |
-
*/
|
12903 |
-
}, {
|
12904 |
-
key: 'initFadeOut',
|
12905 |
-
value: function initFadeOut() {
|
12906 |
-
var _this5 = this;
|
12907 |
-
|
12908 |
-
this.el.className += ' ' + this.fadeOutClass;
|
12909 |
-
if (this.cursor) this.cursor.className += ' ' + this.fadeOutClass;
|
12910 |
-
return setTimeout(function () {
|
12911 |
-
_this5.arrayPos++;
|
12912 |
-
_this5.replaceText('');
|
12913 |
-
|
12914 |
-
// Resets current string if end of loop reached
|
12915 |
-
if (_this5.strings.length > _this5.arrayPos) {
|
12916 |
-
_this5.typewrite(_this5.strings[_this5.sequence[_this5.arrayPos]], 0);
|
12917 |
-
} else {
|
12918 |
-
_this5.typewrite(_this5.strings[0], 0);
|
12919 |
-
_this5.arrayPos = 0;
|
12920 |
-
}
|
12921 |
-
}, this.fadeOutDelay);
|
12922 |
-
}
|
12923 |
-
|
12924 |
-
/**
|
12925 |
-
* Replaces current text in the HTML element
|
12926 |
-
* depending on element type
|
12927 |
-
* @param {string} str
|
12928 |
-
* @private
|
12929 |
-
*/
|
12930 |
-
}, {
|
12931 |
-
key: 'replaceText',
|
12932 |
-
value: function replaceText(str) {
|
12933 |
-
if (this.attr) {
|
12934 |
-
this.el.setAttribute(this.attr, str);
|
12935 |
-
} else {
|
12936 |
-
if (this.isInput) {
|
12937 |
-
this.el.value = str;
|
12938 |
-
} else if (this.contentType === 'html') {
|
12939 |
-
this.el.innerHTML = str;
|
12940 |
-
} else {
|
12941 |
-
this.el.textContent = str;
|
12942 |
-
}
|
12943 |
-
}
|
12944 |
-
}
|
12945 |
-
|
12946 |
-
/**
|
12947 |
-
* If using input elements, bind focus in order to
|
12948 |
-
* start and stop the animation
|
12949 |
-
* @private
|
12950 |
-
*/
|
12951 |
-
}, {
|
12952 |
-
key: 'bindFocusEvents',
|
12953 |
-
value: function bindFocusEvents() {
|
12954 |
-
var _this6 = this;
|
12955 |
-
|
12956 |
-
if (!this.isInput) return;
|
12957 |
-
this.el.addEventListener('focus', function (e) {
|
12958 |
-
_this6.stop();
|
12959 |
-
});
|
12960 |
-
this.el.addEventListener('blur', function (e) {
|
12961 |
-
if (_this6.el.value && _this6.el.value.length !== 0) {
|
12962 |
-
return;
|
12963 |
-
}
|
12964 |
-
_this6.start();
|
12965 |
-
});
|
12966 |
-
}
|
12967 |
-
|
12968 |
-
/**
|
12969 |
-
* On init, insert the cursor element
|
12970 |
-
* @private
|
12971 |
-
*/
|
12972 |
-
}, {
|
12973 |
-
key: 'insertCursor',
|
12974 |
-
value: function insertCursor() {
|
12975 |
-
if (!this.showCursor) return;
|
12976 |
-
if (this.cursor) return;
|
12977 |
-
this.cursor = document.createElement('span');
|
12978 |
-
this.cursor.className = 'typed-cursor';
|
12979 |
-
this.cursor.innerHTML = this.cursorChar;
|
12980 |
-
this.el.parentNode && this.el.parentNode.insertBefore(this.cursor, this.el.nextSibling);
|
12981 |
-
}
|
12982 |
-
}]);
|
12983 |
-
|
12984 |
-
return Typed;
|
12985 |
-
})();
|
12986 |
-
|
12987 |
-
exports['default'] = Typed;
|
12988 |
-
module.exports = exports['default'];
|
12989 |
-
|
12990 |
-
/***/ }),
|
12991 |
-
/* 1 */
|
12992 |
-
/***/ (function(module, exports, __webpack_require__) {
|
12993 |
-
|
12994 |
-
'use strict';
|
12995 |
-
|
12996 |
-
Object.defineProperty(exports, '__esModule', {
|
12997 |
-
value: true
|
12998 |
-
});
|
12999 |
-
|
13000 |
-
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
13001 |
-
|
13002 |
-
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
13003 |
-
|
13004 |
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
13005 |
-
|
13006 |
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
13007 |
-
|
13008 |
-
var _defaultsJs = __webpack_require__(2);
|
13009 |
-
|
13010 |
-
var _defaultsJs2 = _interopRequireDefault(_defaultsJs);
|
13011 |
-
|
13012 |
-
/**
|
13013 |
-
* Initialize the Typed object
|
13014 |
-
*/
|
13015 |
-
|
13016 |
-
var Initializer = (function () {
|
13017 |
-
function Initializer() {
|
13018 |
-
_classCallCheck(this, Initializer);
|
13019 |
-
}
|
13020 |
-
|
13021 |
-
_createClass(Initializer, [{
|
13022 |
-
key: 'load',
|
13023 |
-
|
13024 |
-
/**
|
13025 |
-
* Load up defaults & options on the Typed instance
|
13026 |
-
* @param {Typed} self instance of Typed
|
13027 |
-
* @param {object} options options object
|
13028 |
-
* @param {string} elementId HTML element ID _OR_ instance of HTML element
|
13029 |
-
* @private
|
13030 |
-
*/
|
13031 |
-
|
13032 |
-
value: function load(self, options, elementId) {
|
13033 |
-
// chosen element to manipulate text
|
13034 |
-
if (typeof elementId === 'string') {
|
13035 |
-
self.el = document.querySelector(elementId);
|
13036 |
-
} else {
|
13037 |
-
self.el = elementId;
|
13038 |
-
}
|
13039 |
-
|
13040 |
-
self.options = _extends({}, _defaultsJs2['default'], options);
|
13041 |
-
|
13042 |
-
// attribute to type into
|
13043 |
-
self.isInput = self.el.tagName.toLowerCase() === 'input';
|
13044 |
-
self.attr = self.options.attr;
|
13045 |
-
self.bindInputFocusEvents = self.options.bindInputFocusEvents;
|
13046 |
-
|
13047 |
-
// show cursor
|
13048 |
-
self.showCursor = self.isInput ? false : self.options.showCursor;
|
13049 |
-
|
13050 |
-
// custom cursor
|
13051 |
-
self.cursorChar = self.options.cursorChar;
|
13052 |
-
|
13053 |
-
// Is the cursor blinking
|
13054 |
-
self.cursorBlinking = true;
|
13055 |
-
|
13056 |
-
// text content of element
|
13057 |
-
self.elContent = self.attr ? self.el.getAttribute(self.attr) : self.el.textContent;
|
13058 |
-
|
13059 |
-
// html or plain text
|
13060 |
-
self.contentType = self.options.contentType;
|
13061 |
-
|
13062 |
-
// typing speed
|
13063 |
-
self.typeSpeed = self.options.typeSpeed;
|
13064 |
-
|
13065 |
-
// add a delay before typing starts
|
13066 |
-
self.startDelay = self.options.startDelay;
|
13067 |
-
|
13068 |
-
// backspacing speed
|
13069 |
-
self.backSpeed = self.options.backSpeed;
|
13070 |
-
|
13071 |
-
// only backspace what doesn't match the previous string
|
13072 |
-
self.smartBackspace = self.options.smartBackspace;
|
13073 |
-
|
13074 |
-
// amount of time to wait before backspacing
|
13075 |
-
self.backDelay = self.options.backDelay;
|
13076 |
-
|
13077 |
-
// Fade out instead of backspace
|
13078 |
-
self.fadeOut = self.options.fadeOut;
|
13079 |
-
self.fadeOutClass = self.options.fadeOutClass;
|
13080 |
-
self.fadeOutDelay = self.options.fadeOutDelay;
|
13081 |
-
|
13082 |
-
// variable to check whether typing is currently paused
|
13083 |
-
self.isPaused = false;
|
13084 |
-
|
13085 |
-
// input strings of text
|
13086 |
-
self.strings = self.options.strings.map(function (s) {
|
13087 |
-
return s.trim();
|
13088 |
-
});
|
13089 |
-
|
13090 |
-
// div containing strings
|
13091 |
-
if (typeof self.options.stringsElement === 'string') {
|
13092 |
-
self.stringsElement = document.querySelector(self.options.stringsElement);
|
13093 |
-
} else {
|
13094 |
-
self.stringsElement = self.options.stringsElement;
|
13095 |
-
}
|
13096 |
-
|
13097 |
-
if (self.stringsElement) {
|
13098 |
-
self.strings = [];
|
13099 |
-
self.stringsElement.style.display = 'none';
|
13100 |
-
var strings = Array.prototype.slice.apply(self.stringsElement.children);
|
13101 |
-
var stringsLength = strings.length;
|
13102 |
-
|
13103 |
-
if (stringsLength) {
|
13104 |
-
for (var i = 0; i < stringsLength; i += 1) {
|
13105 |
-
var stringEl = strings[i];
|
13106 |
-
self.strings.push(stringEl.innerHTML.trim());
|
13107 |
-
}
|
13108 |
-
}
|
13109 |
-
}
|
13110 |
-
|
13111 |
-
// character number position of current string
|
13112 |
-
self.strPos = 0;
|
13113 |
-
|
13114 |
-
// current array position
|
13115 |
-
self.arrayPos = 0;
|
13116 |
-
|
13117 |
-
// index of string to stop backspacing on
|
13118 |
-
self.stopNum = 0;
|
13119 |
-
|
13120 |
-
// Looping logic
|
13121 |
-
self.loop = self.options.loop;
|
13122 |
-
self.loopCount = self.options.loopCount;
|
13123 |
-
self.curLoop = 0;
|
13124 |
-
|
13125 |
-
// shuffle the strings
|
13126 |
-
self.shuffle = self.options.shuffle;
|
13127 |
-
// the order of strings
|
13128 |
-
self.sequence = [];
|
13129 |
-
|
13130 |
-
self.pause = {
|
13131 |
-
status: false,
|
13132 |
-
typewrite: true,
|
13133 |
-
curString: '',
|
13134 |
-
curStrPos: 0
|
13135 |
-
};
|
13136 |
-
|
13137 |
-
// When the typing is complete (when not looped)
|
13138 |
-
self.typingComplete = false;
|
13139 |
-
|
13140 |
-
// Set the order in which the strings are typed
|
13141 |
-
for (var i in self.strings) {
|
13142 |
-
self.sequence[i] = i;
|
13143 |
-
}
|
13144 |
-
|
13145 |
-
// If there is some text in the element
|
13146 |
-
self.currentElContent = this.getCurrentElContent(self);
|
13147 |
-
|
13148 |
-
self.autoInsertCss = self.options.autoInsertCss;
|
13149 |
-
|
13150 |
-
this.appendAnimationCss(self);
|
13151 |
-
}
|
13152 |
-
}, {
|
13153 |
-
key: 'getCurrentElContent',
|
13154 |
-
value: function getCurrentElContent(self) {
|
13155 |
-
var elContent = '';
|
13156 |
-
if (self.attr) {
|
13157 |
-
elContent = self.el.getAttribute(self.attr);
|
13158 |
-
} else if (self.isInput) {
|
13159 |
-
elContent = self.el.value;
|
13160 |
-
} else if (self.contentType === 'html') {
|
13161 |
-
elContent = self.el.innerHTML;
|
13162 |
-
} else {
|
13163 |
-
elContent = self.el.textContent;
|
13164 |
-
}
|
13165 |
-
return elContent;
|
13166 |
-
}
|
13167 |
-
}, {
|
13168 |
-
key: 'appendAnimationCss',
|
13169 |
-
value: function appendAnimationCss(self) {
|
13170 |
-
var cssDataName = 'data-typed-js-css';
|
13171 |
-
if (!self.autoInsertCss) {
|
13172 |
-
return;
|
13173 |
-
}
|
13174 |
-
if (!self.showCursor && !self.fadeOut) {
|
13175 |
-
return;
|
13176 |
-
}
|
13177 |
-
if (document.querySelector('[' + cssDataName + ']')) {
|
13178 |
-
return;
|
13179 |
-
}
|
13180 |
-
|
13181 |
-
var css = document.createElement('style');
|
13182 |
-
css.type = 'text/css';
|
13183 |
-
css.setAttribute(cssDataName, true);
|
13184 |
-
|
13185 |
-
var innerCss = '';
|
13186 |
-
if (self.showCursor) {
|
13187 |
-
innerCss += '\n .typed-cursor{\n opacity: 1;\n }\n .typed-cursor.typed-cursor--blink{\n animation: typedjsBlink 0.7s infinite;\n -webkit-animation: typedjsBlink 0.7s infinite;\n animation: typedjsBlink 0.7s infinite;\n }\n @keyframes typedjsBlink{\n 50% { opacity: 0.0; }\n }\n @-webkit-keyframes typedjsBlink{\n 0% { opacity: 1; }\n 50% { opacity: 0.0; }\n 100% { opacity: 1; }\n }\n ';
|
13188 |
-
}
|
13189 |
-
if (self.fadeOut) {
|
13190 |
-
innerCss += '\n .typed-fade-out{\n opacity: 0;\n transition: opacity .25s;\n }\n .typed-cursor.typed-cursor--blink.typed-fade-out{\n -webkit-animation: 0;\n animation: 0;\n }\n ';
|
13191 |
-
}
|
13192 |
-
if (css.length === 0) {
|
13193 |
-
return;
|
13194 |
-
}
|
13195 |
-
css.innerHTML = innerCss;
|
13196 |
-
document.body.appendChild(css);
|
13197 |
-
}
|
13198 |
-
}]);
|
13199 |
-
|
13200 |
-
return Initializer;
|
13201 |
-
})();
|
13202 |
-
|
13203 |
-
exports['default'] = Initializer;
|
13204 |
-
var initializer = new Initializer();
|
13205 |
-
exports.initializer = initializer;
|
13206 |
-
|
13207 |
-
/***/ }),
|
13208 |
-
/* 2 */
|
13209 |
-
/***/ (function(module, exports) {
|
13210 |
-
|
13211 |
-
/**
|
13212 |
-
* Defaults & options
|
13213 |
-
* @returns {object} Typed defaults & options
|
13214 |
-
* @public
|
13215 |
-
*/
|
13216 |
-
|
13217 |
-
'use strict';
|
13218 |
-
|
13219 |
-
Object.defineProperty(exports, '__esModule', {
|
13220 |
-
value: true
|
13221 |
-
});
|
13222 |
-
var defaults = {
|
13223 |
-
/**
|
13224 |
-
* @property {array} strings strings to be typed
|
13225 |
-
* @property {string} stringsElement ID of element containing string children
|
13226 |
-
*/
|
13227 |
-
strings: ['These are the default values...', 'You know what you should do?', 'Use your own!', 'Have a great day!'],
|
13228 |
-
stringsElement: null,
|
13229 |
-
|
13230 |
-
/**
|
13231 |
-
* @property {number} typeSpeed type speed in milliseconds
|
13232 |
-
*/
|
13233 |
-
typeSpeed: 0,
|
13234 |
-
|
13235 |
-
/**
|
13236 |
-
* @property {number} startDelay time before typing starts in milliseconds
|
13237 |
-
*/
|
13238 |
-
startDelay: 0,
|
13239 |
-
|
13240 |
-
/**
|
13241 |
-
* @property {number} backSpeed backspacing speed in milliseconds
|
13242 |
-
*/
|
13243 |
-
backSpeed: 0,
|
13244 |
-
|
13245 |
-
/**
|
13246 |
-
* @property {boolean} smartBackspace only backspace what doesn't match the previous string
|
13247 |
-
*/
|
13248 |
-
smartBackspace: true,
|
13249 |
-
|
13250 |
-
/**
|
13251 |
-
* @property {boolean} shuffle shuffle the strings
|
13252 |
-
*/
|
13253 |
-
shuffle: false,
|
13254 |
-
|
13255 |
-
/**
|
13256 |
-
* @property {number} backDelay time before backspacing in milliseconds
|
13257 |
-
*/
|
13258 |
-
backDelay: 700,
|
13259 |
-
|
13260 |
-
/**
|
13261 |
-
* @property {boolean} fadeOut Fade out instead of backspace
|
13262 |
-
* @property {string} fadeOutClass css class for fade animation
|
13263 |
-
* @property {boolean} fadeOutDelay Fade out delay in milliseconds
|
13264 |
-
*/
|
13265 |
-
fadeOut: false,
|
13266 |
-
fadeOutClass: 'typed-fade-out',
|
13267 |
-
fadeOutDelay: 500,
|
13268 |
-
|
13269 |
-
/**
|
13270 |
-
* @property {boolean} loop loop strings
|
13271 |
-
* @property {number} loopCount amount of loops
|
13272 |
-
*/
|
13273 |
-
loop: false,
|
13274 |
-
loopCount: Infinity,
|
13275 |
-
|
13276 |
-
/**
|
13277 |
-
* @property {boolean} showCursor show cursor
|
13278 |
-
* @property {string} cursorChar character for cursor
|
13279 |
-
* @property {boolean} autoInsertCss insert CSS for cursor and fadeOut into HTML <head>
|
13280 |
-
*/
|
13281 |
-
showCursor: true,
|
13282 |
-
cursorChar: '|',
|
13283 |
-
autoInsertCss: true,
|
13284 |
-
|
13285 |
-
/**
|
13286 |
-
* @property {string} attr attribute for typing
|
13287 |
-
* Ex: input placeholder, value, or just HTML text
|
13288 |
-
*/
|
13289 |
-
attr: null,
|
13290 |
-
|
13291 |
-
/**
|
13292 |
-
* @property {boolean} bindInputFocusEvents bind to focus and blur if el is text input
|
13293 |
-
*/
|
13294 |
-
bindInputFocusEvents: false,
|
13295 |
-
|
13296 |
-
/**
|
13297 |
-
* @property {string} contentType 'html' or 'null' for plaintext
|
13298 |
-
*/
|
13299 |
-
contentType: 'html',
|
13300 |
-
|
13301 |
-
/**
|
13302 |
-
* All typing is complete
|
13303 |
-
* @param {Typed} self
|
13304 |
-
*/
|
13305 |
-
onComplete: function onComplete(self) {},
|
13306 |
-
|
13307 |
-
/**
|
13308 |
-
* Before each string is typed
|
13309 |
-
* @param {number} arrayPos
|
13310 |
-
* @param {Typed} self
|
13311 |
-
*/
|
13312 |
-
preStringTyped: function preStringTyped(arrayPos, self) {},
|
13313 |
-
|
13314 |
-
/**
|
13315 |
-
* After each string is typed
|
13316 |
-
* @param {number} arrayPos
|
13317 |
-
* @param {Typed} self
|
13318 |
-
*/
|
13319 |
-
onStringTyped: function onStringTyped(arrayPos, self) {},
|
13320 |
-
|
13321 |
-
/**
|
13322 |
-
* During looping, after last string is typed
|
13323 |
-
* @param {Typed} self
|
13324 |
-
*/
|
13325 |
-
onLastStringBackspaced: function onLastStringBackspaced(self) {},
|
13326 |
-
|
13327 |
-
/**
|
13328 |
-
* Typing has been stopped
|
13329 |
-
* @param {number} arrayPos
|
13330 |
-
* @param {Typed} self
|
13331 |
-
*/
|
13332 |
-
onTypingPaused: function onTypingPaused(arrayPos, self) {},
|
13333 |
-
|
13334 |
-
/**
|
13335 |
-
* Typing has been started after being stopped
|
13336 |
-
* @param {number} arrayPos
|
13337 |
-
* @param {Typed} self
|
13338 |
-
*/
|
13339 |
-
onTypingResumed: function onTypingResumed(arrayPos, self) {},
|
13340 |
-
|
13341 |
-
/**
|
13342 |
-
* After reset
|
13343 |
-
* @param {Typed} self
|
13344 |
-
*/
|
13345 |
-
onReset: function onReset(self) {},
|
13346 |
-
|
13347 |
-
/**
|
13348 |
-
* After stop
|
13349 |
-
* @param {number} arrayPos
|
13350 |
-
* @param {Typed} self
|
13351 |
-
*/
|
13352 |
-
onStop: function onStop(arrayPos, self) {},
|
13353 |
-
|
13354 |
-
/**
|
13355 |
-
* After start
|
13356 |
-
* @param {number} arrayPos
|
13357 |
-
* @param {Typed} self
|
13358 |
-
*/
|
13359 |
-
onStart: function onStart(arrayPos, self) {},
|
13360 |
-
|
13361 |
-
/**
|
13362 |
-
* After destroy
|
13363 |
-
* @param {Typed} self
|
13364 |
-
*/
|
13365 |
-
onDestroy: function onDestroy(self) {}
|
13366 |
-
};
|
13367 |
-
|
13368 |
-
exports['default'] = defaults;
|
13369 |
-
module.exports = exports['default'];
|
13370 |
-
|
13371 |
-
/***/ }),
|
13372 |
-
/* 3 */
|
13373 |
-
/***/ (function(module, exports) {
|
13374 |
-
|
13375 |
-
|
13376 |
-
/**
|
13377 |
-
* TODO: These methods can probably be combined somehow
|
13378 |
-
* Parse HTML tags & HTML Characters
|
13379 |
-
*/
|
13380 |
-
|
13381 |
-
'use strict';
|
13382 |
-
|
13383 |
-
Object.defineProperty(exports, '__esModule', {
|
13384 |
-
value: true
|
13385 |
-
});
|
13386 |
-
|
13387 |
-
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
13388 |
-
|
13389 |
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
13390 |
-
|
13391 |
-
var HTMLParser = (function () {
|
13392 |
-
function HTMLParser() {
|
13393 |
-
_classCallCheck(this, HTMLParser);
|
13394 |
-
}
|
13395 |
-
|
13396 |
-
_createClass(HTMLParser, [{
|
13397 |
-
key: 'typeHtmlChars',
|
13398 |
-
|
13399 |
-
/**
|
13400 |
-
* Type HTML tags & HTML Characters
|
13401 |
-
* @param {string} curString Current string
|
13402 |
-
* @param {number} curStrPos Position in current string
|
13403 |
-
* @param {Typed} self instance of Typed
|
13404 |
-
* @returns {number} a new string position
|
13405 |
-
* @private
|
13406 |
-
*/
|
13407 |
-
|
13408 |
-
value: function typeHtmlChars(curString, curStrPos, self) {
|
13409 |
-
if (self.contentType !== 'html') return curStrPos;
|
13410 |
-
var curChar = curString.substr(curStrPos).charAt(0);
|
13411 |
-
if (curChar === '<' || curChar === '&') {
|
13412 |
-
var endTag = '';
|
13413 |
-
if (curChar === '<') {
|
13414 |
-
endTag = '>';
|
13415 |
-
} else {
|
13416 |
-
endTag = ';';
|
13417 |
-
}
|
13418 |
-
while (curString.substr(curStrPos + 1).charAt(0) !== endTag) {
|
13419 |
-
curStrPos++;
|
13420 |
-
if (curStrPos + 1 > curString.length) {
|
13421 |
-
break;
|
13422 |
-
}
|
13423 |
-
}
|
13424 |
-
curStrPos++;
|
13425 |
-
}
|
13426 |
-
return curStrPos;
|
13427 |
-
}
|
13428 |
-
|
13429 |
-
/**
|
13430 |
-
* Backspace HTML tags and HTML Characters
|
13431 |
-
* @param {string} curString Current string
|
13432 |
-
* @param {number} curStrPos Position in current string
|
13433 |
-
* @param {Typed} self instance of Typed
|
13434 |
-
* @returns {number} a new string position
|
13435 |
-
* @private
|
13436 |
-
*/
|
13437 |
-
}, {
|
13438 |
-
key: 'backSpaceHtmlChars',
|
13439 |
-
value: function backSpaceHtmlChars(curString, curStrPos, self) {
|
13440 |
-
if (self.contentType !== 'html') return curStrPos;
|
13441 |
-
var curChar = curString.substr(curStrPos).charAt(0);
|
13442 |
-
if (curChar === '>' || curChar === ';') {
|
13443 |
-
var endTag = '';
|
13444 |
-
if (curChar === '>') {
|
13445 |
-
endTag = '<';
|
13446 |
-
} else {
|
13447 |
-
endTag = '&';
|
13448 |
-
}
|
13449 |
-
while (curString.substr(curStrPos - 1).charAt(0) !== endTag) {
|
13450 |
-
curStrPos--;
|
13451 |
-
if (curStrPos < 0) {
|
13452 |
-
break;
|
13453 |
-
}
|
13454 |
-
}
|
13455 |
-
curStrPos--;
|
13456 |
-
}
|
13457 |
-
return curStrPos;
|
13458 |
-
}
|
13459 |
-
}]);
|
13460 |
-
|
13461 |
-
return HTMLParser;
|
13462 |
-
})();
|
13463 |
-
|
13464 |
-
exports['default'] = HTMLParser;
|
13465 |
-
var htmlParser = new HTMLParser();
|
13466 |
-
exports.htmlParser = htmlParser;
|
13467 |
-
|
13468 |
-
/***/ })
|
13469 |
-
/******/ ])
|
13470 |
-
});
|
13471 |
-
;
|
13472 |
-
/*!
|
13473 |
-
* imagesLoaded PACKAGED v4.1.4
|
13474 |
-
* JavaScript is all like "You images are done yet or what?"
|
13475 |
-
* MIT License
|
13476 |
-
*/
|
13477 |
-
|
13478 |
-
/**
|
13479 |
-
* EvEmitter v1.1.0
|
13480 |
-
* Lil' event emitter
|
13481 |
-
* MIT License
|
13482 |
-
*/
|
13483 |
-
|
13484 |
-
/* jshint unused: true, undef: true, strict: true */
|
13485 |
-
|
13486 |
-
( function( global, factory ) {
|
13487 |
-
// universal module definition
|
13488 |
-
/* jshint strict: false */ /* globals define, module, window */
|
13489 |
-
if ( typeof define == 'function' && define.amd ) {
|
13490 |
-
// AMD - RequireJS
|
13491 |
-
define( 'ev-emitter/ev-emitter',factory );
|
13492 |
-
} else if ( typeof module == 'object' && module.exports ) {
|
13493 |
-
// CommonJS - Browserify, Webpack
|
13494 |
-
module.exports = factory();
|
13495 |
-
} else {
|
13496 |
-
// Browser globals
|
13497 |
-
global.EvEmitter = factory();
|
13498 |
-
}
|
13499 |
-
|
13500 |
-
}( typeof window != 'undefined' ? window : this, function() {
|
13501 |
-
|
13502 |
-
|
13503 |
-
|
13504 |
-
function EvEmitter() {}
|
13505 |
-
|
13506 |
-
var proto = EvEmitter.prototype;
|
13507 |
-
|
13508 |
-
proto.on = function( eventName, listener ) {
|
13509 |
-
if ( !eventName || !listener ) {
|
13510 |
-
return;
|
13511 |
-
}
|
13512 |
-
// set events hash
|
13513 |
-
var events = this._events = this._events || {};
|
13514 |
-
// set listeners array
|
13515 |
-
var listeners = events[ eventName ] = events[ eventName ] || [];
|
13516 |
-
// only add once
|
13517 |
-
if ( listeners.indexOf( listener ) == -1 ) {
|
13518 |
-
listeners.push( listener );
|
13519 |
-
}
|
13520 |
-
|
13521 |
-
return this;
|
13522 |
-
};
|
13523 |
-
|
13524 |
-
proto.once = function( eventName, listener ) {
|
13525 |
-
if ( !eventName || !listener ) {
|
13526 |
-
return;
|
13527 |
-
}
|
13528 |
-
// add event
|
13529 |
-
this.on( eventName, listener );
|
13530 |
-
// set once flag
|
13531 |
-
// set onceEvents hash
|
13532 |
-
var onceEvents = this._onceEvents = this._onceEvents || {};
|
13533 |
-
// set onceListeners object
|
13534 |
-
var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};
|
13535 |
-
// set flag
|
13536 |
-
onceListeners[ listener ] = true;
|
13537 |
-
|
13538 |
-
return this;
|
13539 |
-
};
|
13540 |
-
|
13541 |
-
proto.off = function( eventName, listener ) {
|
13542 |
-
var listeners = this._events && this._events[ eventName ];
|
13543 |
-
if ( !listeners || !listeners.length ) {
|
13544 |
-
return;
|
13545 |
-
}
|
13546 |
-
var index = listeners.indexOf( listener );
|
13547 |
-
if ( index != -1 ) {
|
13548 |
-
listeners.splice( index, 1 );
|
13549 |
-
}
|
13550 |
-
|
13551 |
-
return this;
|
13552 |
-
};
|
13553 |
-
|
13554 |
-
proto.emitEvent = function( eventName, args ) {
|
13555 |
-
var listeners = this._events && this._events[ eventName ];
|
13556 |
-
if ( !listeners || !listeners.length ) {
|
13557 |
-
return;
|
13558 |
-
}
|
13559 |
-
// copy over to avoid interference if .off() in listener
|
13560 |
-
listeners = listeners.slice(0);
|
13561 |
-
args = args || [];
|
13562 |
-
// once stuff
|
13563 |
-
var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
|
13564 |
-
|
13565 |
-
for ( var i=0; i < listeners.length; i++ ) {
|
13566 |
-
var listener = listeners[i]
|
13567 |
-
var isOnce = onceListeners && onceListeners[ listener ];
|
13568 |
-
if ( isOnce ) {
|
13569 |
-
// remove listener
|
13570 |
-
// remove before trigger to prevent recursion
|
13571 |
-
this.off( eventName, listener );
|
13572 |
-
// unset once flag
|
13573 |
-
delete onceListeners[ listener ];
|
13574 |
-
}
|
13575 |
-
// trigger listener
|
13576 |
-
listener.apply( this, args );
|
13577 |
-
}
|
13578 |
-
|
13579 |
-
return this;
|
13580 |
-
};
|
13581 |
-
|
13582 |
-
proto.allOff = function() {
|
13583 |
-
delete this._events;
|
13584 |
-
delete this._onceEvents;
|
13585 |
-
};
|
13586 |
-
|
13587 |
-
return EvEmitter;
|
13588 |
-
|
13589 |
-
}));
|
13590 |
-
|
13591 |
-
/*!
|
13592 |
-
* imagesLoaded v4.1.4
|
13593 |
-
* JavaScript is all like "You images are done yet or what?"
|
13594 |
-
* MIT License
|
13595 |
-
*/
|
13596 |
-
|
13597 |
-
( function( window, factory ) { 'use strict';
|
13598 |
-
// universal module definition
|
13599 |
-
|
13600 |
-
/*global define: false, module: false, require: false */
|
13601 |
-
|
13602 |
-
if ( typeof define == 'function' && define.amd ) {
|
13603 |
-
// AMD
|
13604 |
-
define( [
|
13605 |
-
'ev-emitter/ev-emitter'
|
13606 |
-
], function( EvEmitter ) {
|
13607 |
-
return factory( window, EvEmitter );
|
13608 |
-
});
|
13609 |
-
} else if ( typeof module == 'object' && module.exports ) {
|
13610 |
-
// CommonJS
|
13611 |
-
module.exports = factory(
|
13612 |
-
window,
|
13613 |
-
require('ev-emitter')
|
13614 |
-
);
|
13615 |
-
} else {
|
13616 |
-
// browser global
|
13617 |
-
window.imagesLoaded = factory(
|
13618 |
-
window,
|
13619 |
-
window.EvEmitter
|
13620 |
-
);
|
13621 |
-
}
|
13622 |
-
|
13623 |
-
})( typeof window !== 'undefined' ? window : this,
|
13624 |
-
|
13625 |
-
// -------------------------- factory -------------------------- //
|
13626 |
-
|
13627 |
-
function factory( window, EvEmitter ) {
|
13628 |
-
|
13629 |
-
|
13630 |
-
|
13631 |
-
var $ = window.jQuery;
|
13632 |
-
var console = window.console;
|
13633 |
-
|
13634 |
-
// -------------------------- helpers -------------------------- //
|
13635 |
-
|
13636 |
-
// extend objects
|
13637 |
-
function extend( a, b ) {
|
13638 |
-
for ( var prop in b ) {
|
13639 |
-
a[ prop ] = b[ prop ];
|
13640 |
-
}
|
13641 |
-
return a;
|
13642 |
-
}
|
13643 |
-
|
13644 |
-
var arraySlice = Array.prototype.slice;
|
13645 |
-
|
13646 |
-
// turn element or nodeList into an array
|
13647 |
-
function makeArray( obj ) {
|
13648 |
-
if ( Array.isArray( obj ) ) {
|
13649 |
-
// use object if already an array
|
13650 |
-
return obj;
|
13651 |
-
}
|
13652 |
-
|
13653 |
-
var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';
|
13654 |
-
if ( isArrayLike ) {
|
13655 |
-
// convert nodeList to array
|
13656 |
-
return arraySlice.call( obj );
|
13657 |
-
}
|
13658 |
-
|
13659 |
-
// array of single index
|
13660 |
-
return [ obj ];
|
13661 |
-
}
|
13662 |
-
|
13663 |
-
// -------------------------- imagesLoaded -------------------------- //
|
13664 |
-
|
13665 |
-
/**
|
13666 |
-
* @param {Array, Element, NodeList, String} elem
|
13667 |
-
* @param {Object or Function} options - if function, use as callback
|
13668 |
-
* @param {Function} onAlways - callback function
|
13669 |
-
*/
|
13670 |
-
function ImagesLoaded( elem, options, onAlways ) {
|
13671 |
-
// coerce ImagesLoaded() without new, to be new ImagesLoaded()
|
13672 |
-
if ( !( this instanceof ImagesLoaded ) ) {
|
13673 |
-
return new ImagesLoaded( elem, options, onAlways );
|
13674 |
-
}
|
13675 |
-
// use elem as selector string
|
13676 |
-
var queryElem = elem;
|
13677 |
-
if ( typeof elem == 'string' ) {
|
13678 |
-
queryElem = document.querySelectorAll( elem );
|
13679 |
-
}
|
13680 |
-
// bail if bad element
|
13681 |
-
if ( !queryElem ) {
|
13682 |
-
console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );
|
13683 |
-
return;
|
13684 |
-
}
|
13685 |
-
|
13686 |
-
this.elements = makeArray( queryElem );
|
13687 |
-
this.options = extend( {}, this.options );
|
13688 |
-
// shift arguments if no options set
|
13689 |
-
if ( typeof options == 'function' ) {
|
13690 |
-
onAlways = options;
|
13691 |
-
} else {
|
13692 |
-
extend( this.options, options );
|
13693 |
-
}
|
13694 |
-
|
13695 |
-
if ( onAlways ) {
|
13696 |
-
this.on( 'always', onAlways );
|
13697 |
-
}
|
13698 |
-
|
13699 |
-
this.getImages();
|
13700 |
-
|
13701 |
-
if ( $ ) {
|
13702 |
-
// add jQuery Deferred object
|
13703 |
-
this.jqDeferred = new $.Deferred();
|
13704 |
-
}
|
13705 |
-
|
13706 |
-
// HACK check async to allow time to bind listeners
|
13707 |
-
setTimeout( this.check.bind( this ) );
|
13708 |
-
}
|
13709 |
-
|
13710 |
-
ImagesLoaded.prototype = Object.create( EvEmitter.prototype );
|
13711 |
-
|
13712 |
-
ImagesLoaded.prototype.options = {};
|
13713 |
-
|
13714 |
-
ImagesLoaded.prototype.getImages = function() {
|
13715 |
-
this.images = [];
|
13716 |
-
|
13717 |
-
// filter & find items if we have an item selector
|
13718 |
-
this.elements.forEach( this.addElementImages, this );
|
13719 |
-
};
|
13720 |
-
|
13721 |
-
/**
|
13722 |
-
* @param {Node} element
|
13723 |
-
*/
|
13724 |
-
ImagesLoaded.prototype.addElementImages = function( elem ) {
|
13725 |
-
// filter siblings
|
13726 |
-
if ( elem.nodeName == 'IMG' ) {
|
13727 |
-
this.addImage( elem );
|
13728 |
-
}
|
13729 |
-
// get background image on element
|
13730 |
-
if ( this.options.background === true ) {
|
13731 |
-
this.addElementBackgroundImages( elem );
|
13732 |
-
}
|
13733 |
-
|
13734 |
-
// find children
|
13735 |
-
// no non-element nodes, #143
|
13736 |
-
var nodeType = elem.nodeType;
|
13737 |
-
if ( !nodeType || !elementNodeTypes[ nodeType ] ) {
|
13738 |
-
return;
|
13739 |
-
}
|
13740 |
-
var childImgs = elem.querySelectorAll('img');
|
13741 |
-
// concat childElems to filterFound array
|
13742 |
-
for ( var i=0; i < childImgs.length; i++ ) {
|
13743 |
-
var img = childImgs[i];
|
13744 |
-
this.addImage( img );
|
13745 |
-
}
|
13746 |
-
|
13747 |
-
// get child background images
|
13748 |
-
if ( typeof this.options.background == 'string' ) {
|
13749 |
-
var children = elem.querySelectorAll( this.options.background );
|
13750 |
-
for ( i=0; i < children.length; i++ ) {
|
13751 |
-
var child = children[i];
|
13752 |
-
this.addElementBackgroundImages( child );
|
13753 |
-
}
|
13754 |
-
}
|
13755 |
-
};
|
13756 |
-
|
13757 |
-
var elementNodeTypes = {
|
13758 |
-
1: true,
|
13759 |
-
9: true,
|
13760 |
-
11: true
|
13761 |
-
};
|
13762 |
-
|
13763 |
-
ImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {
|
13764 |
-
var style = getComputedStyle( elem );
|
13765 |
-
if ( !style ) {
|
13766 |
-
// Firefox returns null if in a hidden iframe https://bugzil.la/548397
|
13767 |
-
return;
|
13768 |
-
}
|
13769 |
-
// get url inside url("...")
|
13770 |
-
var reURL = /url\((['"])?(.*?)\1\)/gi;
|
13771 |
-
var matches = reURL.exec( style.backgroundImage );
|
13772 |
-
while ( matches !== null ) {
|
13773 |
-
var url = matches && matches[2];
|
13774 |
-
if ( url ) {
|
13775 |
-
this.addBackground( url, elem );
|
13776 |
-
}
|
13777 |
-
matches = reURL.exec( style.backgroundImage );
|
13778 |
-
}
|
13779 |
-
};
|
13780 |
-
|
13781 |
-
/**
|
13782 |
-
* @param {Image} img
|
13783 |
-
*/
|
13784 |
-
ImagesLoaded.prototype.addImage = function( img ) {
|
13785 |
-
var loadingImage = new LoadingImage( img );
|
13786 |
-
this.images.push( loadingImage );
|
13787 |
-
};
|
13788 |
-
|
13789 |
-
ImagesLoaded.prototype.addBackground = function( url, elem ) {
|
13790 |
-
var background = new Background( url, elem );
|
13791 |
-
this.images.push( background );
|
13792 |
-
};
|
13793 |
-
|
13794 |
-
ImagesLoaded.prototype.check = function() {
|
13795 |
-
var _this = this;
|
13796 |
-
this.progressedCount = 0;
|
13797 |
-
this.hasAnyBroken = false;
|
13798 |
-
// complete if no images
|
13799 |
-
if ( !this.images.length ) {
|
13800 |
-
this.complete();
|
13801 |
-
return;
|
13802 |
-
}
|
13803 |
-
|
13804 |
-
function onProgress( image, elem, message ) {
|
13805 |
-
// HACK - Chrome triggers event before object properties have changed. #83
|
13806 |
-
setTimeout( function() {
|
13807 |
-
_this.progress( image, elem, message );
|
13808 |
-
});
|
13809 |
-
}
|
13810 |
-
|
13811 |
-
this.images.forEach( function( loadingImage ) {
|
13812 |
-
loadingImage.once( 'progress', onProgress );
|
13813 |
-
loadingImage.check();
|
13814 |
-
});
|
13815 |
-
};
|
13816 |
-
|
13817 |
-
ImagesLoaded.prototype.progress = function( image, elem, message ) {
|
13818 |
-
this.progressedCount++;
|
13819 |
-
this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
|
13820 |
-
// progress event
|
13821 |
-
this.emitEvent( 'progress', [ this, image, elem ] );
|
13822 |
-
if ( this.jqDeferred && this.jqDeferred.notify ) {
|
13823 |
-
this.jqDeferred.notify( this, image );
|
13824 |
-
}
|
13825 |
-
// check if completed
|
13826 |
-
if ( this.progressedCount == this.images.length ) {
|
13827 |
-
this.complete();
|
13828 |
-
}
|
13829 |
-
|
13830 |
-
if ( this.options.debug && console ) {
|
13831 |
-
console.log( 'progress: ' + message, image, elem );
|
13832 |
-
}
|
13833 |
-
};
|
13834 |
-
|
13835 |
-
ImagesLoaded.prototype.complete = function() {
|
13836 |
-
var eventName = this.hasAnyBroken ? 'fail' : 'done';
|
13837 |
-
this.isComplete = true;
|
13838 |
-
this.emitEvent( eventName, [ this ] );
|
13839 |
-
this.emitEvent( 'always', [ this ] );
|
13840 |
-
if ( this.jqDeferred ) {
|
13841 |
-
var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
|
13842 |
-
this.jqDeferred[ jqMethod ]( this );
|
13843 |
-
}
|
13844 |
-
};
|
13845 |
-
|
13846 |
-
// -------------------------- -------------------------- //
|
13847 |
-
|
13848 |
-
function LoadingImage( img ) {
|
13849 |
-
this.img = img;
|
13850 |
-
}
|
13851 |
-
|
13852 |
-
LoadingImage.prototype = Object.create( EvEmitter.prototype );
|
13853 |
-
|
13854 |
-
LoadingImage.prototype.check = function() {
|
13855 |
-
// If complete is true and browser supports natural sizes,
|
13856 |
-
// try to check for image status manually.
|
13857 |
-
var isComplete = this.getIsImageComplete();
|
13858 |
-
if ( isComplete ) {
|
13859 |
-
// report based on naturalWidth
|
13860 |
-
this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
|
13861 |
-
return;
|
13862 |
-
}
|
13863 |
-
|
13864 |
-
// If none of the checks above matched, simulate loading on detached element.
|
13865 |
-
this.proxyImage = new Image();
|
13866 |
-
this.proxyImage.addEventListener( 'load', this );
|
13867 |
-
this.proxyImage.addEventListener( 'error', this );
|
13868 |
-
// bind to image as well for Firefox. #191
|
13869 |
-
this.img.addEventListener( 'load', this );
|
13870 |
-
this.img.addEventListener( 'error', this );
|
13871 |
-
this.proxyImage.src = this.img.src;
|
13872 |
-
};
|
13873 |
-
|
13874 |
-
LoadingImage.prototype.getIsImageComplete = function() {
|
13875 |
-
// check for non-zero, non-undefined naturalWidth
|
13876 |
-
// fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671
|
13877 |
-
return this.img.complete && this.img.naturalWidth;
|
13878 |
-
};
|
13879 |
-
|
13880 |
-
LoadingImage.prototype.confirm = function( isLoaded, message ) {
|
13881 |
-
this.isLoaded = isLoaded;
|
13882 |
-
this.emitEvent( 'progress', [ this, this.img, message ] );
|
13883 |
-
};
|
13884 |
-
|
13885 |
-
// ----- events ----- //
|
13886 |
-
|
13887 |
-
// trigger specified handler for event type
|
13888 |
-
LoadingImage.prototype.handleEvent = function( event ) {
|
13889 |
-
var method = 'on' + event.type;
|
13890 |
-
if ( this[ method ] ) {
|
13891 |
-
this[ method ]( event );
|
13892 |
-
}
|
13893 |
-
};
|
13894 |
-
|
13895 |
-
LoadingImage.prototype.onload = function() {
|
13896 |
-
this.confirm( true, 'onload' );
|
13897 |
-
this.unbindEvents();
|
13898 |
-
};
|
13899 |
-
|
13900 |
-
LoadingImage.prototype.onerror = function() {
|
13901 |
-
this.confirm( false, 'onerror' );
|
13902 |
-
this.unbindEvents();
|
13903 |
-
};
|
13904 |
-
|
13905 |
-
LoadingImage.prototype.unbindEvents = function() {
|
13906 |
-
this.proxyImage.removeEventListener( 'load', this );
|
13907 |
-
this.proxyImage.removeEventListener( 'error', this );
|
13908 |
-
this.img.removeEventListener( 'load', this );
|
13909 |
-
this.img.removeEventListener( 'error', this );
|
13910 |
-
};
|
13911 |
-
|
13912 |
-
// -------------------------- Background -------------------------- //
|
13913 |
-
|
13914 |
-
function Background( url, element ) {
|
13915 |
-
this.url = url;
|
13916 |
-
this.element = element;
|
13917 |
-
this.img = new Image();
|
13918 |
-
}
|
13919 |
-
|
13920 |
-
// inherit LoadingImage prototype
|
13921 |
-
Background.prototype = Object.create( LoadingImage.prototype );
|
13922 |
-
|
13923 |
-
Background.prototype.check = function() {
|
13924 |
-
this.img.addEventListener( 'load', this );
|
13925 |
-
this.img.addEventListener( 'error', this );
|
13926 |
-
this.img.src = this.url;
|
13927 |
-
// check if image is already complete
|
13928 |
-
var isComplete = this.getIsImageComplete();
|
13929 |
-
if ( isComplete ) {
|
13930 |
-
this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
|
13931 |
-
this.unbindEvents();
|
13932 |
-
}
|
13933 |
-
};
|
13934 |
-
|
13935 |
-
Background.prototype.unbindEvents = function() {
|
13936 |
-
this.img.removeEventListener( 'load', this );
|
13937 |
-
this.img.removeEventListener( 'error', this );
|
13938 |
-
};
|
13939 |
-
|
13940 |
-
Background.prototype.confirm = function( isLoaded, message ) {
|
13941 |
-
this.isLoaded = isLoaded;
|
13942 |
-
this.emitEvent( 'progress', [ this, this.element, message ] );
|
13943 |
-
};
|
13944 |
-
|
13945 |
-
// -------------------------- jQuery -------------------------- //
|
13946 |
-
|
13947 |
-
ImagesLoaded.makeJQueryPlugin = function( jQuery ) {
|
13948 |
-
jQuery = jQuery || window.jQuery;
|
13949 |
-
if ( !jQuery ) {
|
13950 |
-
return;
|
13951 |
-
}
|
13952 |
-
// set local variable
|
13953 |
-
$ = jQuery;
|
13954 |
-
// $().imagesLoaded()
|
13955 |
-
$.fn.imagesLoaded = function( options, callback ) {
|
13956 |
-
var instance = new ImagesLoaded( this, options, callback );
|
13957 |
-
return instance.jqDeferred.promise( $(this) );
|
13958 |
-
};
|
13959 |
-
};
|
13960 |
-
// try making plugin
|
13961 |
-
ImagesLoaded.makeJQueryPlugin();
|
13962 |
-
|
13963 |
-
// -------------------------- -------------------------- //
|
13964 |
-
|
13965 |
-
return ImagesLoaded;
|
13966 |
-
|
13967 |
-
});
|
13968 |
-
|
13969 |
-
|
13970 |
-
/**
|
13971 |
-
* author Christopher Blum
|
13972 |
-
* - based on the idea of Remy Sharp, http://remysharp.com/2009/01/26/element-in-view-event-plugin/
|
13973 |
-
* - forked from http://github.com/zuk/jquery.inview/
|
13974 |
-
*/
|
13975 |
-
(function (factory) {
|
13976 |
-
if (typeof define == 'function' && define.amd) {
|
13977 |
-
// AMD
|
13978 |
-
define(['jquery'], factory);
|
13979 |
-
} else if (typeof exports === 'object') {
|
13980 |
-
// Node, CommonJS
|
13981 |
-
module.exports = factory(require('jquery'));
|
13982 |
-
} else {
|
13983 |
-
// Browser globals
|
13984 |
-
factory(jQuery);
|
13985 |
-
}
|
13986 |
-
}(function ($) {
|
13987 |
-
|
13988 |
-
var inviewObjects = [], viewportSize, viewportOffset,
|
13989 |
-
d = document, w = window, documentElement = d.documentElement, timer;
|
13990 |
-
|
13991 |
-
$.event.special.inview = {
|
13992 |
-
add: function (data) {
|
13993 |
-
inviewObjects.push({ data: data, $element: $(this), element: this });
|
13994 |
-
// Use setInterval in order to also make sure this captures elements within
|
13995 |
-
// "overflow:scroll" elements or elements that appeared in the dom tree due to
|
13996 |
-
// dom manipulation and reflow
|
13997 |
-
// old: $(window).scroll(checkInView);
|
13998 |
-
//
|
13999 |
-
// By the way, iOS (iPad, iPhone, ...) seems to not execute, or at least delays
|
14000 |
-
// intervals while the user scrolls. Therefore the inview event might fire a bit late there
|
14001 |
-
//
|
14002 |
-
// Don't waste cycles with an interval until we get at least one element that
|
14003 |
-
// has bound to the inview event.
|
14004 |
-
if (!timer && inviewObjects.length) {
|
14005 |
-
timer = setInterval(checkInView, 250);
|
14006 |
-
}
|
14007 |
-
},
|
14008 |
-
|
14009 |
-
remove: function (data) {
|
14010 |
-
for (var i = 0; i < inviewObjects.length; i++) {
|
14011 |
-
var inviewObject = inviewObjects[i];
|
14012 |
-
if (inviewObject.element === this && inviewObject.data.guid === data.guid) {
|
14013 |
-
inviewObjects.splice(i, 1);
|
14014 |
-
break;
|
14015 |
-
}
|
14016 |
-
}
|
14017 |
-
|
14018 |
-
// Clear interval when we no longer have any elements listening
|
14019 |
-
if (!inviewObjects.length) {
|
14020 |
-
clearInterval(timer);
|
14021 |
-
timer = null;
|
14022 |
-
}
|
14023 |
-
}
|
14024 |
-
};
|
14025 |
-
|
14026 |
-
function getViewportSize() {
|
14027 |
-
var mode, domObject, size = { height: w.innerHeight, width: w.innerWidth };
|
14028 |
-
|
14029 |
-
// if this is correct then return it. iPad has compat Mode, so will
|
14030 |
-
// go into check clientHeight/clientWidth (which has the wrong value).
|
14031 |
-
if (!size.height) {
|
14032 |
-
mode = d.compatMode;
|
14033 |
-
if (mode || !$.support.boxModel) { // IE, Gecko
|
14034 |
-
domObject = mode === 'CSS1Compat' ?
|
14035 |
-
documentElement : // Standards
|
14036 |
-
d.body; // Quirks
|
14037 |
-
size = {
|
14038 |
-
height: domObject.clientHeight,
|
14039 |
-
width: domObject.clientWidth
|
14040 |
-
};
|
14041 |
-
}
|
14042 |
-
}
|
14043 |
-
|
14044 |
-
return size;
|
14045 |
-
}
|
14046 |
-
|
14047 |
-
function getViewportOffset() {
|
14048 |
-
return {
|
14049 |
-
top: w.pageYOffset || documentElement.scrollTop || d.body.scrollTop,
|
14050 |
-
left: w.pageXOffset || documentElement.scrollLeft || d.body.scrollLeft
|
14051 |
-
};
|
14052 |
-
}
|
14053 |
-
|
14054 |
-
function checkInView() {
|
14055 |
-
if (!inviewObjects.length) {
|
14056 |
-
return;
|
14057 |
-
}
|
14058 |
-
|
14059 |
-
var i = 0, $elements = $.map(inviewObjects, function (inviewObject) {
|
14060 |
-
var selector = inviewObject.data.selector,
|
14061 |
-
$element = inviewObject.$element;
|
14062 |
-
return selector ? $element.find(selector) : $element;
|
14063 |
-
});
|
14064 |
-
|
14065 |
-
viewportSize = viewportSize || getViewportSize();
|
14066 |
-
viewportOffset = viewportOffset || getViewportOffset();
|
14067 |
-
|
14068 |
-
for (; i < inviewObjects.length; i++) {
|
14069 |
-
// Ignore elements that are not in the DOM tree
|
14070 |
-
if (!$.contains(documentElement, $elements[i][0])) {
|
14071 |
-
continue;
|
14072 |
-
}
|
14073 |
-
|
14074 |
-
var $element = $($elements[i]),
|
14075 |
-
elementSize = { height: $element[0].offsetHeight, width: $element[0].offsetWidth },
|
14076 |
-
elementOffset = $element.offset(),
|
14077 |
-
inView = $element.data('inview');
|
14078 |
-
|
14079 |
-
// Don't ask me why because I haven't figured out yet:
|
14080 |
-
// viewportOffset and viewportSize are sometimes suddenly null in Firefox 5.
|
14081 |
-
// Even though it sounds weird:
|
14082 |
-
// It seems that the execution of this function is interferred by the onresize/onscroll event
|
14083 |
-
// where viewportOffset and viewportSize are unset
|
14084 |
-
if (!viewportOffset || !viewportSize) {
|
14085 |
-
return;
|
14086 |
-
}
|
14087 |
-
|
14088 |
-
if (elementOffset.top + elementSize.height > viewportOffset.top &&
|
14089 |
-
elementOffset.top < viewportOffset.top + viewportSize.height &&
|
14090 |
-
elementOffset.left + elementSize.width > viewportOffset.left &&
|
14091 |
-
elementOffset.left < viewportOffset.left + viewportSize.width) {
|
14092 |
-
if (!inView) {
|
14093 |
-
$element.data('inview', true).trigger('inview', [true]);
|
14094 |
-
}
|
14095 |
-
} else if (inView) {
|
14096 |
-
$element.data('inview', false).trigger('inview', [false]);
|
14097 |
-
}
|
14098 |
-
}
|
14099 |
-
}
|
14100 |
-
|
14101 |
-
$(w).on("scroll resize scrollstop", function () {
|
14102 |
-
viewportSize = viewportOffset = null;
|
14103 |
-
});
|
14104 |
-
|
14105 |
-
// IE < 9 scrolls to focused elements without firing the "scroll" event
|
14106 |
-
if (!documentElement.addEventListener && documentElement.attachEvent) {
|
14107 |
-
documentElement.attachEvent("onfocusin", function () {
|
14108 |
-
viewportOffset = null;
|
14109 |
-
});
|
14110 |
-
}
|
14111 |
-
}));
|
14112 |
-
/*!
|
14113 |
-
* Isotope PACKAGED v3.0.6
|
14114 |
-
*
|
14115 |
-
* Licensed GPLv3 for open source use
|
14116 |
-
* or Isotope Commercial License for commercial use
|
14117 |
-
*
|
14118 |
-
* https://isotope.metafizzy.co
|
14119 |
-
* Copyright 2010-2018 Metafizzy
|
14120 |
-
*/
|
14121 |
-
|
14122 |
-
/**
|
14123 |
-
* Bridget makes jQuery widgets
|
14124 |
-
* v2.0.1
|
14125 |
-
* MIT license
|
14126 |
-
*/
|
14127 |
-
|
14128 |
-
/* jshint browser: true, strict: true, undef: true, unused: true */
|
14129 |
-
|
14130 |
-
( function( window, factory ) {
|
14131 |
-
// universal module definition
|
14132 |
-
/*jshint strict: false */ /* globals define, module, require */
|
14133 |
-
if ( typeof define == 'function' && define.amd ) {
|
14134 |
-
// AMD
|
14135 |
-
define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {
|
14136 |
-
return factory( window, jQuery );
|
14137 |
-
});
|
14138 |
-
} else if ( typeof module == 'object' && module.exports ) {
|
14139 |
-
// CommonJS
|
14140 |
-
module.exports = factory(
|
14141 |
-
window,
|
14142 |
-
require('jquery')
|
14143 |
-
);
|
14144 |
-
} else {
|
14145 |
-
// browser global
|
14146 |
-
window.jQueryBridget = factory(
|
14147 |
-
window,
|
14148 |
-
window.jQuery
|
14149 |
-
);
|
14150 |
-
}
|
14151 |
-
|
14152 |
-
}( window, function factory( window, jQuery ) {
|
14153 |
-
'use strict';
|
14154 |
-
|
14155 |
-
// ----- utils ----- //
|
14156 |
-
|
14157 |
-
var arraySlice = Array.prototype.slice;
|
14158 |
-
|
14159 |
-
// helper function for logging errors
|
14160 |
-
// $.error breaks jQuery chaining
|
14161 |
-
var console = window.console;
|
14162 |
-
var logError = typeof console == 'undefined' ? function() {} :
|
14163 |
-
function( message ) {
|
14164 |
-
console.error( message );
|
14165 |
-
};
|
14166 |
-
|
14167 |
-
// ----- jQueryBridget ----- //
|
14168 |
-
|
14169 |
-
function jQueryBridget( namespace, PluginClass, $ ) {
|
14170 |
-
$ = $ || jQuery || window.jQuery;
|
14171 |
-
if ( !$ ) {
|
14172 |
-
return;
|
14173 |
-
}
|
14174 |
-
|
14175 |
-
// add option method -> $().plugin('option', {...})
|
14176 |
-
if ( !PluginClass.prototype.option ) {
|
14177 |
-
// option setter
|
14178 |
-
PluginClass.prototype.option = function( opts ) {
|
14179 |
-
// bail out if not an object
|
14180 |
-
if ( !$.isPlainObject( opts ) ){
|
14181 |
-
return;
|
14182 |
-
}
|
14183 |
-
this.options = $.extend( true, this.options, opts );
|
14184 |
-
};
|
14185 |
-
}
|
14186 |
-
|
14187 |
-
// make jQuery plugin
|
14188 |
-
$.fn[ namespace ] = function( arg0 /*, arg1 */ ) {
|
14189 |
-
if ( typeof arg0 == 'string' ) {
|
14190 |
-
// method call $().plugin( 'methodName', { options } )
|
14191 |
-
// shift arguments by 1
|
14192 |
-
var args = arraySlice.call( arguments, 1 );
|
14193 |
-
return methodCall( this, arg0, args );
|
14194 |
-
}
|
14195 |
-
// just $().plugin({ options })
|
14196 |
-
plainCall( this, arg0 );
|
14197 |
-
return this;
|
14198 |
-
};
|
14199 |
-
|
14200 |
-
// $().plugin('methodName')
|
14201 |
-
function methodCall( $elems, methodName, args ) {
|
14202 |
-
var returnValue;
|
14203 |
-
var pluginMethodStr = '$().' + namespace + '("' + methodName + '")';
|
14204 |
-
|
14205 |
-
$elems.each( function( i, elem ) {
|
14206 |
-
// get instance
|
14207 |
-
var instance = $.data( elem, namespace );
|
14208 |
-
if ( !instance ) {
|
14209 |
-
logError( namespace + ' not initialized. Cannot call methods, i.e. ' +
|
14210 |
-
pluginMethodStr );
|
14211 |
-
return;
|
14212 |
-
}
|
14213 |
-
|
14214 |
-
var method = instance[ methodName ];
|
14215 |
-
if ( !method || methodName.charAt(0) == '_' ) {
|
14216 |
-
logError( pluginMethodStr + ' is not a valid method' );
|
14217 |
-
return;
|
14218 |
-
}
|
14219 |
-
|
14220 |
-
// apply method, get return value
|
14221 |
-
var value = method.apply( instance, args );
|
14222 |
-
// set return value if value is returned, use only first value
|
14223 |
-
returnValue = returnValue === undefined ? value : returnValue;
|
14224 |
-
});
|
14225 |
-
|
14226 |
-
return returnValue !== undefined ? returnValue : $elems;
|
14227 |
-
}
|
14228 |
-
|
14229 |
-
function plainCall( $elems, options ) {
|
14230 |
-
$elems.each( function( i, elem ) {
|
14231 |
-
var instance = $.data( elem, namespace );
|
14232 |
-
if ( instance ) {
|
14233 |
-
// set options & init
|
14234 |
-
instance.option( options );
|
14235 |
-
instance._init();
|
14236 |
-
} else {
|
14237 |
-
// initialize new instance
|
14238 |
-
instance = new PluginClass( elem, options );
|
14239 |
-
$.data( elem, namespace, instance );
|
14240 |
-
}
|
14241 |
-
});
|
14242 |
-
}
|
14243 |
-
|
14244 |
-
updateJQuery( $ );
|
14245 |
-
|
14246 |
-
}
|
14247 |
-
|
14248 |
-
// ----- updateJQuery ----- //
|
14249 |
-
|
14250 |
-
// set $.bridget for v1 backwards compatibility
|
14251 |
-
function updateJQuery( $ ) {
|
14252 |
-
if ( !$ || ( $ && $.bridget ) ) {
|
14253 |
-
return;
|
14254 |
-
}
|
14255 |
-
$.bridget = jQueryBridget;
|
14256 |
-
}
|
14257 |
-
|
14258 |
-
updateJQuery( jQuery || window.jQuery );
|
14259 |
-
|
14260 |
-
// ----- ----- //
|
14261 |
-
|
14262 |
-
return jQueryBridget;
|
14263 |
-
|
14264 |
-
}));
|
14265 |
-
|
14266 |
-
/**
|
14267 |
-
* EvEmitter v1.1.0
|
14268 |
-
* Lil' event emitter
|
14269 |
-
* MIT License
|
14270 |
-
*/
|
14271 |
-
|
14272 |
-
/* jshint unused: true, undef: true, strict: true */
|
14273 |
-
|
14274 |
-
( function( global, factory ) {
|
14275 |
-
// universal module definition
|
14276 |
-
/* jshint strict: false */ /* globals define, module, window */
|
14277 |
-
if ( typeof define == 'function' && define.amd ) {
|
14278 |
-
// AMD - RequireJS
|
14279 |
-
define( 'ev-emitter/ev-emitter',factory );
|
14280 |
-
} else if ( typeof module == 'object' && module.exports ) {
|
14281 |
-
// CommonJS - Browserify, Webpack
|
14282 |
-
module.exports = factory();
|
14283 |
-
} else {
|
14284 |
-
// Browser globals
|
14285 |
-
global.EvEmitter = factory();
|
14286 |
-
}
|
14287 |
-
|
14288 |
-
}( typeof window != 'undefined' ? window : this, function() {
|
14289 |
-
|
14290 |
-
|
14291 |
-
|
14292 |
-
function EvEmitter() {}
|
14293 |
-
|
14294 |
-
var proto = EvEmitter.prototype;
|
14295 |
-
|
14296 |
-
proto.on = function( eventName, listener ) {
|
14297 |
-
if ( !eventName || !listener ) {
|
14298 |
-
return;
|
14299 |
-
}
|
14300 |
-
// set events hash
|
14301 |
-
var events = this._events = this._events || {};
|
14302 |
-
// set listeners array
|
14303 |
-
var listeners = events[ eventName ] = events[ eventName ] || [];
|
14304 |
-
// only add once
|
14305 |
-
if ( listeners.indexOf( listener ) == -1 ) {
|
14306 |
-
listeners.push( listener );
|
14307 |
-
}
|
14308 |
-
|
14309 |
-
return this;
|
14310 |
-
};
|
14311 |
-
|
14312 |
-
proto.once = function( eventName, listener ) {
|
14313 |
-
if ( !eventName || !listener ) {
|
14314 |
-
return;
|
14315 |
-
}
|
14316 |
-
// add event
|
14317 |
-
this.on( eventName, listener );
|
14318 |
-
// set once flag
|
14319 |
-
// set onceEvents hash
|
14320 |
-
var onceEvents = this._onceEvents = this._onceEvents || {};
|
14321 |
-
// set onceListeners object
|
14322 |
-
var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};
|
14323 |
-
// set flag
|
14324 |
-
onceListeners[ listener ] = true;
|
14325 |
-
|
14326 |
-
return this;
|
14327 |
-
};
|
14328 |
-
|
14329 |
-
proto.off = function( eventName, listener ) {
|
14330 |
-
var listeners = this._events && this._events[ eventName ];
|
14331 |
-
if ( !listeners || !listeners.length ) {
|
14332 |
-
return;
|
14333 |
-
}
|
14334 |
-
var index = listeners.indexOf( listener );
|
14335 |
-
if ( index != -1 ) {
|
14336 |
-
listeners.splice( index, 1 );
|
14337 |
-
}
|
14338 |
-
|
14339 |
-
return this;
|
14340 |
-
};
|
14341 |
-
|
14342 |
-
proto.emitEvent = function( eventName, args ) {
|
14343 |
-
var listeners = this._events && this._events[ eventName ];
|
14344 |
-
if ( !listeners || !listeners.length ) {
|
14345 |
-
return;
|
14346 |
-
}
|
14347 |
-
// copy over to avoid interference if .off() in listener
|
14348 |
-
listeners = listeners.slice(0);
|
14349 |
-
args = args || [];
|
14350 |
-
// once stuff
|
14351 |
-
var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
|
14352 |
-
|
14353 |
-
for ( var i=0; i < listeners.length; i++ ) {
|
14354 |
-
var listener = listeners[i]
|
14355 |
-
var isOnce = onceListeners && onceListeners[ listener ];
|
14356 |
-
if ( isOnce ) {
|
14357 |
-
// remove listener
|
14358 |
-
// remove before trigger to prevent recursion
|
14359 |
-
this.off( eventName, listener );
|
14360 |
-
// unset once flag
|
14361 |
-
delete onceListeners[ listener ];
|
14362 |
-
}
|
14363 |
-
// trigger listener
|
14364 |
-
listener.apply( this, args );
|
14365 |
-
}
|
14366 |
-
|
14367 |
-
return this;
|
14368 |
-
};
|
14369 |
-
|
14370 |
-
proto.allOff = function() {
|
14371 |
-
delete this._events;
|
14372 |
-
delete this._onceEvents;
|
14373 |
-
};
|
14374 |
-
|
14375 |
-
return EvEmitter;
|
14376 |
-
|
14377 |
-
}));
|
14378 |
-
|
14379 |
-
/*!
|
14380 |
-
* getSize v2.0.3
|
14381 |
-
* measure size of elements
|
14382 |
-
* MIT license
|
14383 |
-
*/
|
14384 |
-
|
14385 |
-
/* jshint browser: true, strict: true, undef: true, unused: true */
|
14386 |
-
/* globals console: false */
|
14387 |
-
|
14388 |
-
( function( window, factory ) {
|
14389 |
-
/* jshint strict: false */ /* globals define, module */
|
14390 |
-
if ( typeof define == 'function' && define.amd ) {
|
14391 |
-
// AMD
|
14392 |
-
define( 'get-size/get-size',factory );
|
14393 |
-
} else if ( typeof module == 'object' && module.exports ) {
|
14394 |
-
// CommonJS
|
14395 |
-
module.exports = factory();
|
14396 |
-
} else {
|
14397 |
-
// browser global
|
14398 |
-
window.getSize = factory();
|
14399 |
-
}
|
14400 |
-
|
14401 |
-
})( window, function factory() {
|
14402 |
-
'use strict';
|
14403 |
-
|
14404 |
-
// -------------------------- helpers -------------------------- //
|
14405 |
-
|
14406 |
-
// get a number from a string, not a percentage
|
14407 |
-
function getStyleSize( value ) {
|
14408 |
-
var num = parseFloat( value );
|
14409 |
-
// not a percent like '100%', and a number
|
14410 |
-
var isValid = value.indexOf('%') == -1 && !isNaN( num );
|
14411 |
-
return isValid && num;
|
14412 |
-
}
|
14413 |
-
|
14414 |
-
function noop() {}
|
14415 |
-
|
14416 |
-
var logError = typeof console == 'undefined' ? noop :
|
14417 |
-
function( message ) {
|
14418 |
-
console.error( message );
|
14419 |
-
};
|
14420 |
-
|
14421 |
-
// -------------------------- measurements -------------------------- //
|
14422 |
-
|
14423 |
-
var measurements = [
|
14424 |
-
'paddingLeft',
|
14425 |
-
'paddingRight',
|
14426 |
-
'paddingTop',
|
14427 |
-
'paddingBottom',
|
14428 |
-
'marginLeft',
|
14429 |
-
'marginRight',
|
14430 |
-
'marginTop',
|
14431 |
-
'marginBottom',
|
14432 |
-
'borderLeftWidth',
|
14433 |
-
'borderRightWidth',
|
14434 |
-
'borderTopWidth',
|
14435 |
-
'borderBottomWidth'
|
14436 |
-
];
|
14437 |
-
|
14438 |
-
var measurementsLength = measurements.length;
|
14439 |
-
|
14440 |
-
function getZeroSize() {
|
14441 |
-
var size = {
|
14442 |
-
width: 0,
|
14443 |
-
height: 0,
|
14444 |
-
innerWidth: 0,
|
14445 |
-
innerHeight: 0,
|
14446 |
-
outerWidth: 0,
|
14447 |
-
outerHeight: 0
|
14448 |
-
};
|
14449 |
-
for ( var i=0; i < measurementsLength; i++ ) {
|
14450 |
-
var measurement = measurements[i];
|
14451 |
-
size[ measurement ] = 0;
|
14452 |
-
}
|
14453 |
-
return size;
|
14454 |
-
}
|
14455 |
-
|
14456 |
-
// -------------------------- getStyle -------------------------- //
|
14457 |
-
|
14458 |
-
/**
|
14459 |
-
* getStyle, get style of element, check for Firefox bug
|
14460 |
-
* https://bugzilla.mozilla.org/show_bug.cgi?id=548397
|
14461 |
-
*/
|
14462 |
-
function getStyle( elem ) {
|
14463 |
-
var style = getComputedStyle( elem );
|
14464 |
-
if ( !style ) {
|
14465 |
-
logError( 'Style returned ' + style +
|
14466 |
-
'. Are you running this code in a hidden iframe on Firefox? ' +
|
14467 |
-
'See https://bit.ly/getsizebug1' );
|
14468 |
-
}
|
14469 |
-
return style;
|
14470 |
-
}
|
14471 |
-
|
14472 |
-
// -------------------------- setup -------------------------- //
|
14473 |
-
|
14474 |
-
var isSetup = false;
|
14475 |
-
|
14476 |
-
var isBoxSizeOuter;
|
14477 |
-
|
14478 |
-
/**
|
14479 |
-
* setup
|
14480 |
-
* check isBoxSizerOuter
|
14481 |
-
* do on first getSize() rather than on page load for Firefox bug
|
14482 |
-
*/
|
14483 |
-
function setup() {
|
14484 |
-
// setup once
|
14485 |
-
if ( isSetup ) {
|
14486 |
-
return;
|
14487 |
-
}
|
14488 |
-
isSetup = true;
|
14489 |
-
|
14490 |
-
// -------------------------- box sizing -------------------------- //
|
14491 |
-
|
14492 |
-
/**
|
14493 |
-
* Chrome & Safari measure the outer-width on style.width on border-box elems
|
14494 |
-
* IE11 & Firefox<29 measures the inner-width
|
14495 |
-
*/
|
14496 |
-
var div = document.createElement('div');
|
14497 |
-
div.style.width = '200px';
|
14498 |
-
div.style.padding = '1px 2px 3px 4px';
|
14499 |
-
div.style.borderStyle = 'solid';
|
14500 |
-
div.style.borderWidth = '1px 2px 3px 4px';
|
14501 |
-
div.style.boxSizing = 'border-box';
|
14502 |
-
|
14503 |
-
var body = document.body || document.documentElement;
|
14504 |
-
body.appendChild( div );
|
14505 |
-
var style = getStyle( div );
|
14506 |
-
// round value for browser zoom. desandro/masonry#928
|
14507 |
-
isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;
|
14508 |
-
getSize.isBoxSizeOuter = isBoxSizeOuter;
|
14509 |
-
|
14510 |
-
body.removeChild( div );
|
14511 |
-
}
|
14512 |
-
|
14513 |
-
// -------------------------- getSize -------------------------- //
|
14514 |
-
|
14515 |
-
function getSize( elem ) {
|
14516 |
-
setup();
|
14517 |
-
|
14518 |
-
// use querySeletor if elem is string
|
14519 |
-
if ( typeof elem == 'string' ) {
|
14520 |
-
elem = document.querySelector( elem );
|
14521 |
-
}
|
14522 |
-
|
14523 |
-
// do not proceed on non-objects
|
14524 |
-
if ( !elem || typeof elem != 'object' || !elem.nodeType ) {
|
14525 |
-
return;
|
14526 |
-
}
|
14527 |
-
|
14528 |
-
var style = getStyle( elem );
|
14529 |
-
|
14530 |
-
// if hidden, everything is 0
|
14531 |
-
if ( style.display == 'none' ) {
|
14532 |
-
return getZeroSize();
|
14533 |
-
}
|
14534 |
-
|
14535 |
-
var size = {};
|
14536 |
-
size.width = elem.offsetWidth;
|
14537 |
-
size.height = elem.offsetHeight;
|
14538 |
-
|
14539 |
-
var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';
|
14540 |
-
|
14541 |
-
// get all measurements
|
14542 |
-
for ( var i=0; i < measurementsLength; i++ ) {
|
14543 |
-
var measurement = measurements[i];
|
14544 |
-
var value = style[ measurement ];
|
14545 |
-
var num = parseFloat( value );
|
14546 |
-
// any 'auto', 'medium' value will be 0
|
14547 |
-
size[ measurement ] = !isNaN( num ) ? num : 0;
|
14548 |
-
}
|
14549 |
-
|
14550 |
-
var paddingWidth = size.paddingLeft + size.paddingRight;
|
14551 |
-
var paddingHeight = size.paddingTop + size.paddingBottom;
|
14552 |
-
var marginWidth = size.marginLeft + size.marginRight;
|
14553 |
-
var marginHeight = size.marginTop + size.marginBottom;
|
14554 |
-
var borderWidth = size.borderLeftWidth + size.borderRightWidth;
|
14555 |
-
var borderHeight = size.borderTopWidth + size.borderBottomWidth;
|
14556 |
-
|
14557 |
-
var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;
|
14558 |
-
|
14559 |
-
// overwrite width and height if we can get it from style
|
14560 |
-
var styleWidth = getStyleSize( style.width );
|
14561 |
-
if ( styleWidth !== false ) {
|
14562 |
-
size.width = styleWidth +
|
14563 |
-
// add padding and border unless it's already including it
|
14564 |
-
( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );
|
14565 |
-
}
|
14566 |
-
|
14567 |
-
var styleHeight = getStyleSize( style.height );
|
14568 |
-
if ( styleHeight !== false ) {
|
14569 |
-
size.height = styleHeight +
|
14570 |
-
// add padding and border unless it's already including it
|
14571 |
-
( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );
|
14572 |
-
}
|
14573 |
-
|
14574 |
-
size.innerWidth = size.width - ( paddingWidth + borderWidth );
|
14575 |
-
size.innerHeight = size.height - ( paddingHeight + borderHeight );
|
14576 |
-
|
14577 |
-
size.outerWidth = size.width + marginWidth;
|
14578 |
-
size.outerHeight = size.height + marginHeight;
|
14579 |
-
|
14580 |
-
return size;
|
14581 |
-
}
|
14582 |
-
|
14583 |
-
return getSize;
|
14584 |
-
|
14585 |
-
});
|
14586 |
-
|
14587 |
-
/**
|
14588 |
-
* matchesSelector v2.0.2
|
14589 |
-
* matchesSelector( element, '.selector' )
|
14590 |
-
* MIT license
|
14591 |
-
*/
|
14592 |
-
|
14593 |
-
/*jshint browser: true, strict: true, undef: true, unused: true */
|
14594 |
-
|
14595 |
-
( function( window, factory ) {
|
14596 |
-
/*global define: false, module: false */
|
14597 |
-
'use strict';
|
14598 |
-
// universal module definition
|
14599 |
-
if ( typeof define == 'function' && define.amd ) {
|
14600 |
-
// AMD
|
14601 |
-
define( 'desandro-matches-selector/matches-selector',factory );
|
14602 |
-
} else if ( typeof module == 'object' && module.exports ) {
|
14603 |
-
// CommonJS
|
14604 |
-
module.exports = factory();
|
14605 |
-
} else {
|
14606 |
-
// browser global
|
14607 |
-
window.matchesSelector = factory();
|
14608 |
-
}
|
14609 |
-
|
14610 |
-
}( window, function factory() {
|
14611 |
-
'use strict';
|
14612 |
-
|
14613 |
-
var matchesMethod = ( function() {
|
14614 |
-
var ElemProto = window.Element.prototype;
|
14615 |
-
// check for the standard method name first
|
14616 |
-
if ( ElemProto.matches ) {
|
14617 |
-
return 'matches';
|
14618 |
-
}
|
14619 |
-
// check un-prefixed
|
14620 |
-
if ( ElemProto.matchesSelector ) {
|
14621 |
-
return 'matchesSelector';
|
14622 |
-
}
|
14623 |
-
// check vendor prefixes
|
14624 |
-
var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];
|
14625 |
-
|
14626 |
-
for ( var i=0; i < prefixes.length; i++ ) {
|
14627 |
-
var prefix = prefixes[i];
|
14628 |
-
var method = prefix + 'MatchesSelector';
|
14629 |
-
if ( ElemProto[ method ] ) {
|
14630 |
-
return method;
|
14631 |
-
}
|
14632 |
-
}
|
14633 |
-
})();
|
14634 |
-
|
14635 |
-
return function matchesSelector( elem, selector ) {
|
14636 |
-
return elem[ matchesMethod ]( selector );
|
14637 |
-
};
|
14638 |
-
|
14639 |
-
}));
|
14640 |
-
|
14641 |
-
/**
|
14642 |
-
* Fizzy UI utils v2.0.7
|
14643 |
-
* MIT license
|
14644 |
-
*/
|
14645 |
-
|
14646 |
-
/*jshint browser: true, undef: true, unused: true, strict: true */
|
14647 |
-
|
14648 |
-
( function( window, factory ) {
|
14649 |
-
// universal module definition
|
14650 |
-
/*jshint strict: false */ /*globals define, module, require */
|
14651 |
-
|
14652 |
-
if ( typeof define == 'function' && define.amd ) {
|
14653 |
-
// AMD
|
14654 |
-
define( 'fizzy-ui-utils/utils',[
|
14655 |
-
'desandro-matches-selector/matches-selector'
|
14656 |
-
], function( matchesSelector ) {
|
14657 |
-
return factory( window, matchesSelector );
|
14658 |
-
});
|
14659 |
-
} else if ( typeof module == 'object' && module.exports ) {
|
14660 |
-
// CommonJS
|
14661 |
-
module.exports = factory(
|
14662 |
-
window,
|
14663 |
-
require('desandro-matches-selector')
|
14664 |
-
);
|
14665 |
-
} else {
|
14666 |
-
// browser global
|
14667 |
-
window.fizzyUIUtils = factory(
|
14668 |
-
window,
|
14669 |
-
window.matchesSelector
|
14670 |
-
);
|
14671 |
-
}
|
14672 |
-
|
14673 |
-
}( window, function factory( window, matchesSelector ) {
|
14674 |
-
|
14675 |
-
|
14676 |
-
|
14677 |
-
var utils = {};
|
14678 |
-
|
14679 |
-
// ----- extend ----- //
|
14680 |
-
|
14681 |
-
// extends objects
|
14682 |
-
utils.extend = function( a, b ) {
|
14683 |
-
for ( var prop in b ) {
|
14684 |
-
a[ prop ] = b[ prop ];
|
14685 |
-
}
|
14686 |
-
return a;
|
14687 |
-
};
|
14688 |
-
|
14689 |
-
// ----- modulo ----- //
|
14690 |
-
|
14691 |
-
utils.modulo = function( num, div ) {
|
14692 |
-
return ( ( num % div ) + div ) % div;
|
14693 |
-
};
|
14694 |
-
|
14695 |
-
// ----- makeArray ----- //
|
14696 |
-
|
14697 |
-
var arraySlice = Array.prototype.slice;
|
14698 |
-
|
14699 |
-
// turn element or nodeList into an array
|
14700 |
-
utils.makeArray = function( obj ) {
|
14701 |
-
if ( Array.isArray( obj ) ) {
|
14702 |
-
// use object if already an array
|
14703 |
-
return obj;
|
14704 |
-
}
|
14705 |
-
// return empty array if undefined or null. #6
|
14706 |
-
if ( obj === null || obj === undefined ) {
|
14707 |
-
return [];
|
14708 |
-
}
|
14709 |
-
|
14710 |
-
var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';
|
14711 |
-
if ( isArrayLike ) {
|
14712 |
-
// convert nodeList to array
|
14713 |
-
return arraySlice.call( obj );
|
14714 |
-
}
|
14715 |
-
|
14716 |
-
// array of single index
|
14717 |
-
return [ obj ];
|
14718 |
-
};
|
14719 |
-
|
14720 |
-
// ----- removeFrom ----- //
|
14721 |
-
|
14722 |
-
utils.removeFrom = function( ary, obj ) {
|
14723 |
-
var index = ary.indexOf( obj );
|
14724 |
-
if ( index != -1 ) {
|
14725 |
-
ary.splice( index, 1 );
|
14726 |
-
}
|
14727 |
-
};
|
14728 |
-
|
14729 |
-
// ----- getParent ----- //
|
14730 |
-
|
14731 |
-
utils.getParent = function( elem, selector ) {
|
14732 |
-
while ( elem.parentNode && elem != document.body ) {
|
14733 |
-
elem = elem.parentNode;
|
14734 |
-
if ( matchesSelector( elem, selector ) ) {
|
14735 |
-
return elem;
|
14736 |
-
}
|
14737 |
-
}
|
14738 |
-
};
|
14739 |
-
|
14740 |
-
// ----- getQueryElement ----- //
|
14741 |
-
|
14742 |
-
// use element as selector string
|
14743 |
-
utils.getQueryElement = function( elem ) {
|
14744 |
-
if ( typeof elem == 'string' ) {
|
14745 |
-
return document.querySelector( elem );
|
14746 |
-
}
|
14747 |
-
return elem;
|
14748 |
-
};
|
14749 |
-
|
14750 |
-
// ----- handleEvent ----- //
|
14751 |
-
|
14752 |
-
// enable .ontype to trigger from .addEventListener( elem, 'type' )
|
14753 |
-
utils.handleEvent = function( event ) {
|
14754 |
-
var method = 'on' + event.type;
|
14755 |
-
if ( this[ method ] ) {
|
14756 |
-
this[ method ]( event );
|
14757 |
-
}
|
14758 |
-
};
|
14759 |
-
|
14760 |
-
// ----- filterFindElements ----- //
|
14761 |
-
|
14762 |
-
utils.filterFindElements = function( elems, selector ) {
|
14763 |
-
// make array of elems
|
14764 |
-
elems = utils.makeArray( elems );
|
14765 |
-
var ffElems = [];
|
14766 |
-
|
14767 |
-
elems.forEach( function( elem ) {
|
14768 |
-
// check that elem is an actual element
|
14769 |
-
if ( !( elem instanceof HTMLElement ) ) {
|
14770 |
-
return;
|
14771 |
-
}
|
14772 |
-
// add elem if no selector
|
14773 |
-
if ( !selector ) {
|
14774 |
-
ffElems.push( elem );
|
14775 |
-
return;
|
14776 |
-
}
|
14777 |
-
// filter & find items if we have a selector
|
14778 |
-
// filter
|
14779 |
-
if ( matchesSelector( elem, selector ) ) {
|
14780 |
-
ffElems.push( elem );
|
14781 |
-
}
|
14782 |
-
// find children
|
14783 |
-
var childElems = elem.querySelectorAll( selector );
|
14784 |
-
// concat childElems to filterFound array
|
14785 |
-
for ( var i=0; i < childElems.length; i++ ) {
|
14786 |
-
ffElems.push( childElems[i] );
|
14787 |
-
}
|
14788 |
-
});
|
14789 |
-
|
14790 |
-
return ffElems;
|
14791 |
-
};
|
14792 |
-
|
14793 |
-
// ----- debounceMethod ----- //
|
14794 |
-
|
14795 |
-
utils.debounceMethod = function( _class, methodName, threshold ) {
|
14796 |
-
threshold = threshold || 100;
|
14797 |
-
// original method
|
14798 |
-
var method = _class.prototype[ methodName ];
|
14799 |
-
var timeoutName = methodName + 'Timeout';
|
14800 |
-
|
14801 |
-
_class.prototype[ methodName ] = function() {
|
14802 |
-
var timeout = this[ timeoutName ];
|
14803 |
-
clearTimeout( timeout );
|
14804 |
-
|
14805 |
-
var args = arguments;
|
14806 |
-
var _this = this;
|
14807 |
-
this[ timeoutName ] = setTimeout( function() {
|
14808 |
-
method.apply( _this, args );
|
14809 |
-
delete _this[ timeoutName ];
|
14810 |
-
}, threshold );
|
14811 |
-
};
|
14812 |
-
};
|
14813 |
-
|
14814 |
-
// ----- docReady ----- //
|
14815 |
-
|
14816 |
-
utils.docReady = function( callback ) {
|
14817 |
-
var readyState = document.readyState;
|
14818 |
-
if ( readyState == 'complete' || readyState == 'interactive' ) {
|
14819 |
-
// do async to allow for other scripts to run. metafizzy/flickity#441
|
14820 |
-
setTimeout( callback );
|
14821 |
-
} else {
|
14822 |
-
document.addEventListener( 'DOMContentLoaded', callback );
|
14823 |
-
}
|
14824 |
-
};
|
14825 |
-
|
14826 |
-
// ----- htmlInit ----- //
|
14827 |
-
|
14828 |
-
// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/
|
14829 |
-
utils.toDashed = function( str ) {
|
14830 |
-
return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {
|
14831 |
-
return $1 + '-' + $2;
|
14832 |
-
}).toLowerCase();
|
14833 |
-
};
|
14834 |
-
|
14835 |
-
var console = window.console;
|
14836 |
-
/**
|
14837 |
-
* allow user to initialize classes via [data-namespace] or .js-namespace class
|
14838 |
-
* htmlInit( Widget, 'widgetName' )
|
14839 |
-
* options are parsed from data-namespace-options
|
14840 |
-
*/
|
14841 |
-
utils.htmlInit = function( WidgetClass, namespace ) {
|
14842 |
-
utils.docReady( function() {
|
14843 |
-
var dashedNamespace = utils.toDashed( namespace );
|
14844 |
-
var dataAttr = 'data-' + dashedNamespace;
|
14845 |
-
var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );
|
14846 |
-
var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );
|
14847 |
-
var elems = utils.makeArray( dataAttrElems )
|
14848 |
-
.concat( utils.makeArray( jsDashElems ) );
|
14849 |
-
var dataOptionsAttr = dataAttr + '-options';
|
14850 |
-
var jQuery = window.jQuery;
|
14851 |
-
|
14852 |
-
elems.forEach( function( elem ) {
|
14853 |
-
var attr = elem.getAttribute( dataAttr ) ||
|
14854 |
-
elem.getAttribute( dataOptionsAttr );
|
14855 |
-
var options;
|
14856 |
-
try {
|
14857 |
-
options = attr && JSON.parse( attr );
|
14858 |
-
} catch ( error ) {
|
14859 |
-
// log error, do not initialize
|
14860 |
-
if ( console ) {
|
14861 |
-
console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +
|
14862 |
-
': ' + error );
|
14863 |
-
}
|
14864 |
-
return;
|
14865 |
-
}
|
14866 |
-
// initialize
|
14867 |
-
var instance = new WidgetClass( elem, options );
|
14868 |
-
// make available via $().data('namespace')
|
14869 |
-
if ( jQuery ) {
|
14870 |
-
jQuery.data( elem, namespace, instance );
|
14871 |
-
}
|
14872 |
-
});
|
14873 |
-
|
14874 |
-
});
|
14875 |
-
};
|
14876 |
-
|
14877 |
-
// ----- ----- //
|
14878 |
-
|
14879 |
-
return utils;
|
14880 |
-
|
14881 |
-
}));
|
14882 |
-
|
14883 |
-
/**
|
14884 |
-
* Outlayer Item
|
14885 |
-
*/
|
14886 |
-
|
14887 |
-
( function( window, factory ) {
|
14888 |
-
// universal module definition
|
14889 |
-
/* jshint strict: false */ /* globals define, module, require */
|
14890 |
-
if ( typeof define == 'function' && define.amd ) {
|
14891 |
-
// AMD - RequireJS
|
14892 |
-
define( 'outlayer/item',[
|
14893 |
-
'ev-emitter/ev-emitter',
|
14894 |
-
'get-size/get-size'
|
14895 |
-
],
|
14896 |
-
factory
|
14897 |
-
);
|
14898 |
-
} else if ( typeof module == 'object' && module.exports ) {
|
14899 |
-
// CommonJS - Browserify, Webpack
|
14900 |
-
module.exports = factory(
|
14901 |
-
require('ev-emitter'),
|
14902 |
-
require('get-size')
|
14903 |
-
);
|
14904 |
-
} else {
|
14905 |
-
// browser global
|
14906 |
-
window.Outlayer = {};
|
14907 |
-
window.Outlayer.Item = factory(
|
14908 |
-
window.EvEmitter,
|
14909 |
-
window.getSize
|
14910 |
-
);
|
14911 |
-
}
|
14912 |
-
|
14913 |
-
}( window, function factory( EvEmitter, getSize ) {
|
14914 |
-
'use strict';
|
14915 |
-
|
14916 |
-
// ----- helpers ----- //
|
14917 |
-
|
14918 |
-
function isEmptyObj( obj ) {
|
14919 |
-
for ( var prop in obj ) {
|
14920 |
-
return false;
|
14921 |
-
}
|
14922 |
-
prop = null;
|
14923 |
-
return true;
|
14924 |
-
}
|
14925 |
-
|
14926 |
-
// -------------------------- CSS3 support -------------------------- //
|
14927 |
-
|
14928 |
-
|
14929 |
-
var docElemStyle = document.documentElement.style;
|
14930 |
-
|
14931 |
-
var transitionProperty = typeof docElemStyle.transition == 'string' ?
|
14932 |
-
'transition' : 'WebkitTransition';
|
14933 |
-
var transformProperty = typeof docElemStyle.transform == 'string' ?
|
14934 |
-
'transform' : 'WebkitTransform';
|
14935 |
-
|
14936 |
-
var transitionEndEvent = {
|
14937 |
-
WebkitTransition: 'webkitTransitionEnd',
|
14938 |
-
transition: 'transitionend'
|
14939 |
-
}[ transitionProperty ];
|
14940 |
-
|
14941 |
-
// cache all vendor properties that could have vendor prefix
|
14942 |
-
var vendorProperties = {
|
14943 |
-
transform: transformProperty,
|
14944 |
-
transition: transitionProperty,
|
14945 |
-
transitionDuration: transitionProperty + 'Duration',
|
14946 |
-
transitionProperty: transitionProperty + 'Property',
|
14947 |
-
transitionDelay: transitionProperty + 'Delay'
|
14948 |
-
};
|
14949 |
-
|
14950 |
-
// -------------------------- Item -------------------------- //
|
14951 |
-
|
14952 |
-
function Item( element, layout ) {
|
14953 |
-
if ( !element ) {
|
14954 |
-
return;
|
14955 |
-
}
|
14956 |
-
|
14957 |
-
this.element = element;
|
14958 |
-
// parent layout class, i.e. Masonry, Isotope, or Packery
|
14959 |
-
this.layout = layout;
|
14960 |
-
this.position = {
|
14961 |
-
x: 0,
|
14962 |
-
y: 0
|
14963 |
-
};
|
14964 |
-
|
14965 |
-
this._create();
|
14966 |
-
}
|
14967 |
-
|
14968 |
-
// inherit EvEmitter
|
14969 |
-
var proto = Item.prototype = Object.create( EvEmitter.prototype );
|
14970 |
-
proto.constructor = Item;
|
14971 |
-
|
14972 |
-
proto._create = function() {
|
14973 |
-
// transition objects
|
14974 |
-
this._transn = {
|
14975 |
-
ingProperties: {},
|
14976 |
-
clean: {},
|
14977 |
-
onEnd: {}
|
14978 |
-
};
|
14979 |
-
|
14980 |
-
this.css({
|
14981 |
-
position: 'absolute'
|
14982 |
-
});
|
14983 |
-
};
|
14984 |
-
|
14985 |
-
// trigger specified handler for event type
|
14986 |
-
proto.handleEvent = function( event ) {
|
14987 |
-
var method = 'on' + event.type;
|
14988 |
-
if ( this[ method ] ) {
|
14989 |
-
this[ method ]( event );
|
14990 |
-
}
|
14991 |
-
};
|
14992 |
-
|
14993 |
-
proto.getSize = function() {
|
14994 |
-
this.size = getSize( this.element );
|
14995 |
-
};
|
14996 |
-
|
14997 |
-
/**
|
14998 |
-
* apply CSS styles to element
|
14999 |
-
* @param {Object} style
|
15000 |
-
*/
|
15001 |
-
proto.css = function( style ) {
|
15002 |
-
var elemStyle = this.element.style;
|
15003 |
-
|
15004 |
-
for ( var prop in style ) {
|
15005 |
-
// use vendor property if available
|
15006 |
-
var supportedProp = vendorProperties[ prop ] || prop;
|
15007 |
-
elemStyle[ supportedProp ] = style[ prop ];
|
15008 |
-
}
|
15009 |
-
};
|
15010 |
-
|
15011 |
-
// measure position, and sets it
|
15012 |
-
proto.getPosition = function() {
|
15013 |
-
var style = getComputedStyle( this.element );
|
15014 |
-
var isOriginLeft = this.layout._getOption('originLeft');
|
15015 |
-
var isOriginTop = this.layout._getOption('originTop');
|
15016 |
-
var xValue = style[ isOriginLeft ? 'left' : 'right' ];
|
15017 |
-
var yValue = style[ isOriginTop ? 'top' : 'bottom' ];
|
15018 |
-
var x = parseFloat( xValue );
|
15019 |
-
var y = parseFloat( yValue );
|
15020 |
-
// convert percent to pixels
|
15021 |
-
var layoutSize = this.layout.size;
|
15022 |
-
if ( xValue.indexOf('%') != -1 ) {
|
15023 |
-
x = ( x / 100 ) * layoutSize.width;
|
15024 |
-
}
|
15025 |
-
if ( yValue.indexOf('%') != -1 ) {
|
15026 |
-
y = ( y / 100 ) * layoutSize.height;
|
15027 |
-
}
|
15028 |
-
// clean up 'auto' or other non-integer values
|
15029 |
-
x = isNaN( x ) ? 0 : x;
|
15030 |
-
y = isNaN( y ) ? 0 : y;
|
15031 |
-
// remove padding from measurement
|
15032 |
-
x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;
|
15033 |
-
y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;
|
15034 |
-
|
15035 |
-
this.position.x = x;
|
15036 |
-
this.position.y = y;
|
15037 |
-
};
|
15038 |
-
|
15039 |
-
// set settled position, apply padding
|
15040 |
-
proto.layoutPosition = function() {
|
15041 |
-
var layoutSize = this.layout.size;
|
15042 |
-
var style = {};
|
15043 |
-
var isOriginLeft = this.layout._getOption('originLeft');
|
15044 |
-
var isOriginTop = this.layout._getOption('originTop');
|
15045 |
-
|
15046 |
-
// x
|
15047 |
-
var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';
|
15048 |
-
var xProperty = isOriginLeft ? 'left' : 'right';
|
15049 |
-
var xResetProperty = isOriginLeft ? 'right' : 'left';
|
15050 |
-
|
15051 |
-
var x = this.position.x + layoutSize[ xPadding ];
|
15052 |
-
// set in percentage or pixels
|
15053 |
-
style[ xProperty ] = this.getXValue( x );
|
15054 |
-
// reset other property
|
15055 |
-
style[ xResetProperty ] = '';
|
15056 |
-
|
15057 |
-
// y
|
15058 |
-
var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';
|
15059 |
-
var yProperty = isOriginTop ? 'top' : 'bottom';
|
15060 |
-
var yResetProperty = isOriginTop ? 'bottom' : 'top';
|
15061 |
-
|
15062 |
-
var y = this.position.y + layoutSize[ yPadding ];
|
15063 |
-
// set in percentage or pixels
|
15064 |
-
style[ yProperty ] = this.getYValue( y );
|
15065 |
-
// reset other property
|
15066 |
-
style[ yResetProperty ] = '';
|
15067 |
-
|
15068 |
-
this.css( style );
|
15069 |
-
this.emitEvent( 'layout', [ this ] );
|
15070 |
-
};
|
15071 |
-
|
15072 |
-
proto.getXValue = function( x ) {
|
15073 |
-
var isHorizontal = this.layout._getOption('horizontal');
|
15074 |
-
return this.layout.options.percentPosition && !isHorizontal ?
|
15075 |
-
( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';
|
15076 |
-
};
|
15077 |
-
|
15078 |
-
proto.getYValue = function( y ) {
|
15079 |
-
var isHorizontal = this.layout._getOption('horizontal');
|
15080 |
-
return this.layout.options.percentPosition && isHorizontal ?
|
15081 |
-
( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';
|
15082 |
-
};
|
15083 |
-
|
15084 |
-
proto._transitionTo = function( x, y ) {
|
15085 |
-
this.getPosition();
|
15086 |
-
// get current x & y from top/left
|
15087 |
-
var curX = this.position.x;
|
15088 |
-
var curY = this.position.y;
|
15089 |
-
|
15090 |
-
var didNotMove = x == this.position.x && y == this.position.y;
|
15091 |
-
|
15092 |
-
// save end position
|
15093 |
-
this.setPosition( x, y );
|
15094 |
-
|
15095 |
-
// if did not move and not transitioning, just go to layout
|
15096 |
-
if ( didNotMove && !this.isTransitioning ) {
|
15097 |
-
this.layoutPosition();
|
15098 |
-
return;
|
15099 |
-
}
|
15100 |
-
|
15101 |
-
var transX = x - curX;
|
15102 |
-
var transY = y - curY;
|
15103 |
-
var transitionStyle = {};
|
15104 |
-
transitionStyle.transform = this.getTranslate( transX, transY );
|
15105 |
-
|
15106 |
-
this.transition({
|
15107 |
-
to: transitionStyle,
|
15108 |
-
onTransitionEnd: {
|
15109 |
-
transform: this.layoutPosition
|
15110 |
-
},
|
15111 |
-
isCleaning: true
|
15112 |
-
});
|
15113 |
-
};
|
15114 |
-
|
15115 |
-
proto.getTranslate = function( x, y ) {
|
15116 |
-
// flip cooridinates if origin on right or bottom
|
15117 |
-
var isOriginLeft = this.layout._getOption('originLeft');
|
15118 |
-
var isOriginTop = this.layout._getOption('originTop');
|
15119 |
-
x = isOriginLeft ? x : -x;
|
15120 |
-
y = isOriginTop ? y : -y;
|
15121 |
-
return 'translate3d(' + x + 'px, ' + y + 'px, 0)';
|
15122 |
-
};
|
15123 |
-
|
15124 |
-
// non transition + transform support
|
15125 |
-
proto.goTo = function( x, y ) {
|
15126 |
-
this.setPosition( x, y );
|
15127 |
-
this.layoutPosition();
|
15128 |
-
};
|
15129 |
-
|
15130 |
-
proto.moveTo = proto._transitionTo;
|
15131 |
-
|
15132 |
-
proto.setPosition = function( x, y ) {
|
15133 |
-
this.position.x = parseFloat( x );
|
15134 |
-
this.position.y = parseFloat( y );
|
15135 |
-
};
|
15136 |
-
|
15137 |
-
// ----- transition ----- //
|
15138 |
-
|
15139 |
-
/**
|
15140 |
-
* @param {Object} style - CSS
|
15141 |
-
* @param {Function} onTransitionEnd
|
15142 |
-
*/
|
15143 |
-
|
15144 |
-
// non transition, just trigger callback
|
15145 |
-
proto._nonTransition = function( args ) {
|
15146 |
-
this.css( args.to );
|
15147 |
-
if ( args.isCleaning ) {
|
15148 |
-
this._removeStyles( args.to );
|
15149 |
-
}
|
15150 |
-
for ( var prop in args.onTransitionEnd ) {
|
15151 |
-
args.onTransitionEnd[ prop ].call( this );
|
15152 |
-
}
|
15153 |
-
};
|
15154 |
-
|
15155 |
-
/**
|
15156 |
-
* proper transition
|
15157 |
-
* @param {Object} args - arguments
|
15158 |
-
* @param {Object} to - style to transition to
|
15159 |
-
* @param {Object} from - style to start transition from
|
15160 |
-
* @param {Boolean} isCleaning - removes transition styles after transition
|
15161 |
-
* @param {Function} onTransitionEnd - callback
|
15162 |
-
*/
|
15163 |
-
proto.transition = function( args ) {
|
15164 |
-
// redirect to nonTransition if no transition duration
|
15165 |
-
if ( !parseFloat( this.layout.options.transitionDuration ) ) {
|
15166 |
-
this._nonTransition( args );
|
15167 |
-
return;
|
15168 |
-
}
|
15169 |
-
|
15170 |
-
var _transition = this._transn;
|
15171 |
-
// keep track of onTransitionEnd callback by css property
|
15172 |
-
for ( var prop in args.onTransitionEnd ) {
|
15173 |
-
_transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];
|
15174 |
-
}
|
15175 |
-
// keep track of properties that are transitioning
|
15176 |
-
for ( prop in args.to ) {
|
15177 |
-
_transition.ingProperties[ prop ] = true;
|
15178 |
-
// keep track of properties to clean up when transition is done
|
15179 |
-
if ( args.isCleaning ) {
|
15180 |
-
_transition.clean[ prop ] = true;
|
15181 |
-
}
|
15182 |
-
}
|
15183 |
-
|
15184 |
-
// set from styles
|
15185 |
-
if ( args.from ) {
|
15186 |
-
this.css( args.from );
|
15187 |
-
// force redraw. http://blog.alexmaccaw.com/css-transitions
|
15188 |
-
var h = this.element.offsetHeight;
|
15189 |
-
// hack for JSHint to hush about unused var
|
15190 |
-
h = null;
|
15191 |
-
}
|
15192 |
-
// enable transition
|
15193 |
-
this.enableTransition( args.to );
|
15194 |
-
// set styles that are transitioning
|
15195 |
-
this.css( args.to );
|
15196 |
-
|
15197 |
-
this.isTransitioning = true;
|
15198 |
-
|
15199 |
-
};
|
15200 |
-
|
15201 |
-
// dash before all cap letters, including first for
|
15202 |
-
// WebkitTransform => -webkit-transform
|
15203 |
-
function toDashedAll( str ) {
|
15204 |
-
return str.replace( /([A-Z])/g, function( $1 ) {
|
15205 |
-
return '-' + $1.toLowerCase();
|
15206 |
-
});
|
15207 |
-
}
|
15208 |
-
|
15209 |
-
var transitionProps = 'opacity,' + toDashedAll( transformProperty );
|
15210 |
-
|
15211 |
-
proto.enableTransition = function(/* style */) {
|
15212 |
-
// HACK changing transitionProperty during a transition
|
15213 |
-
// will cause transition to jump
|
15214 |
-
if ( this.isTransitioning ) {
|
15215 |
-
return;
|
15216 |
-
}
|
15217 |
|
15218 |
// make `transition: foo, bar, baz` from style object
|
15219 |
// HACK un-comment this when enableTransition can work
|
@@ -38888,8 +25688,13208 @@ $.tooltipster._plugin({
|
|
38888 |
}
|
38889 |
});
|
38890 |
|
38891 |
-
/* a build task will add "return $;" here */
|
38892 |
-
return $;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
269 |
|
270 |
});
|
271 |
|
272 |
+
/*!
|
273 |
+
* imagesLoaded PACKAGED v4.1.4
|
274 |
+
* JavaScript is all like "You images are done yet or what?"
|
275 |
+
* MIT License
|
276 |
+
*/
|
|
|
|
|
277 |
|
278 |
+
/**
|
279 |
+
* EvEmitter v1.1.0
|
280 |
+
* Lil' event emitter
|
281 |
+
* MIT License
|
282 |
+
*/
|
283 |
|
284 |
+
/* jshint unused: true, undef: true, strict: true */
|
285 |
|
286 |
+
( function( global, factory ) {
|
287 |
+
// universal module definition
|
288 |
+
/* jshint strict: false */ /* globals define, module, window */
|
289 |
+
if ( typeof define == 'function' && define.amd ) {
|
290 |
+
// AMD - RequireJS
|
291 |
+
define( 'ev-emitter/ev-emitter',factory );
|
292 |
+
} else if ( typeof module == 'object' && module.exports ) {
|
293 |
+
// CommonJS - Browserify, Webpack
|
294 |
+
module.exports = factory();
|
295 |
+
} else {
|
296 |
+
// Browser globals
|
297 |
+
global.EvEmitter = factory();
|
298 |
+
}
|
299 |
|
300 |
+
}( typeof window != 'undefined' ? window : this, function() {
|
301 |
|
|
|
|
|
|
|
|
|
|
|
302 |
|
|
|
|
|
|
|
|
|
|
|
303 |
|
304 |
+
function EvEmitter() {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
305 |
|
306 |
+
var proto = EvEmitter.prototype;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
307 |
|
308 |
+
proto.on = function( eventName, listener ) {
|
309 |
+
if ( !eventName || !listener ) {
|
310 |
+
return;
|
311 |
+
}
|
312 |
+
// set events hash
|
313 |
+
var events = this._events = this._events || {};
|
314 |
+
// set listeners array
|
315 |
+
var listeners = events[ eventName ] = events[ eventName ] || [];
|
316 |
+
// only add once
|
317 |
+
if ( listeners.indexOf( listener ) == -1 ) {
|
318 |
+
listeners.push( listener );
|
319 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
320 |
|
321 |
+
return this;
|
322 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
323 |
|
324 |
+
proto.once = function( eventName, listener ) {
|
325 |
+
if ( !eventName || !listener ) {
|
326 |
+
return;
|
327 |
+
}
|
328 |
+
// add event
|
329 |
+
this.on( eventName, listener );
|
330 |
+
// set once flag
|
331 |
+
// set onceEvents hash
|
332 |
+
var onceEvents = this._onceEvents = this._onceEvents || {};
|
333 |
+
// set onceListeners object
|
334 |
+
var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};
|
335 |
+
// set flag
|
336 |
+
onceListeners[ listener ] = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
337 |
|
338 |
+
return this;
|
339 |
+
};
|
340 |
+
|
341 |
+
proto.off = function( eventName, listener ) {
|
342 |
+
var listeners = this._events && this._events[ eventName ];
|
343 |
+
if ( !listeners || !listeners.length ) {
|
344 |
+
return;
|
345 |
+
}
|
346 |
+
var index = listeners.indexOf( listener );
|
347 |
+
if ( index != -1 ) {
|
348 |
+
listeners.splice( index, 1 );
|
349 |
+
}
|
350 |
+
|
351 |
+
return this;
|
352 |
+
};
|
353 |
+
|
354 |
+
proto.emitEvent = function( eventName, args ) {
|
355 |
+
var listeners = this._events && this._events[ eventName ];
|
356 |
+
if ( !listeners || !listeners.length ) {
|
357 |
+
return;
|
358 |
+
}
|
359 |
+
// copy over to avoid interference if .off() in listener
|
360 |
+
listeners = listeners.slice(0);
|
361 |
+
args = args || [];
|
362 |
+
// once stuff
|
363 |
+
var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
|
364 |
+
|
365 |
+
for ( var i=0; i < listeners.length; i++ ) {
|
366 |
+
var listener = listeners[i]
|
367 |
+
var isOnce = onceListeners && onceListeners[ listener ];
|
368 |
+
if ( isOnce ) {
|
369 |
+
// remove listener
|
370 |
+
// remove before trigger to prevent recursion
|
371 |
+
this.off( eventName, listener );
|
372 |
+
// unset once flag
|
373 |
+
delete onceListeners[ listener ];
|
374 |
}
|
375 |
+
// trigger listener
|
376 |
+
listener.apply( this, args );
|
377 |
+
}
|
378 |
+
|
379 |
+
return this;
|
380 |
+
};
|
381 |
+
|
382 |
+
proto.allOff = function() {
|
383 |
+
delete this._events;
|
384 |
+
delete this._onceEvents;
|
385 |
+
};
|
386 |
+
|
387 |
+
return EvEmitter;
|
388 |
+
|
389 |
+
}));
|
390 |
+
|
391 |
+
/*!
|
392 |
+
* imagesLoaded v4.1.4
|
393 |
+
* JavaScript is all like "You images are done yet or what?"
|
394 |
+
* MIT License
|
395 |
+
*/
|
396 |
+
|
397 |
+
( function( window, factory ) { 'use strict';
|
398 |
+
// universal module definition
|
399 |
+
|
400 |
+
/*global define: false, module: false, require: false */
|
401 |
+
|
402 |
+
if ( typeof define == 'function' && define.amd ) {
|
403 |
+
// AMD
|
404 |
+
define( [
|
405 |
+
'ev-emitter/ev-emitter'
|
406 |
+
], function( EvEmitter ) {
|
407 |
+
return factory( window, EvEmitter );
|
408 |
+
});
|
409 |
+
} else if ( typeof module == 'object' && module.exports ) {
|
410 |
+
// CommonJS
|
411 |
+
module.exports = factory(
|
412 |
+
window,
|
413 |
+
require('ev-emitter')
|
414 |
+
);
|
415 |
+
} else {
|
416 |
+
// browser global
|
417 |
+
window.imagesLoaded = factory(
|
418 |
+
window,
|
419 |
+
window.EvEmitter
|
420 |
+
);
|
421 |
+
}
|
422 |
+
|
423 |
+
})( typeof window !== 'undefined' ? window : this,
|
424 |
+
|
425 |
+
// -------------------------- factory -------------------------- //
|
426 |
+
|
427 |
+
function factory( window, EvEmitter ) {
|
428 |
+
|
429 |
+
|
430 |
+
|
431 |
+
var $ = window.jQuery;
|
432 |
+
var console = window.console;
|
433 |
+
|
434 |
+
// -------------------------- helpers -------------------------- //
|
435 |
+
|
436 |
+
// extend objects
|
437 |
+
function extend( a, b ) {
|
438 |
+
for ( var prop in b ) {
|
439 |
+
a[ prop ] = b[ prop ];
|
440 |
+
}
|
441 |
+
return a;
|
442 |
+
}
|
443 |
+
|
444 |
+
var arraySlice = Array.prototype.slice;
|
445 |
+
|
446 |
+
// turn element or nodeList into an array
|
447 |
+
function makeArray( obj ) {
|
448 |
+
if ( Array.isArray( obj ) ) {
|
449 |
+
// use object if already an array
|
450 |
+
return obj;
|
451 |
+
}
|
452 |
+
|
453 |
+
var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';
|
454 |
+
if ( isArrayLike ) {
|
455 |
+
// convert nodeList to array
|
456 |
+
return arraySlice.call( obj );
|
457 |
+
}
|
458 |
+
|
459 |
+
// array of single index
|
460 |
+
return [ obj ];
|
461 |
+
}
|
462 |
+
|
463 |
+
// -------------------------- imagesLoaded -------------------------- //
|
464 |
+
|
465 |
+
/**
|
466 |
+
* @param {Array, Element, NodeList, String} elem
|
467 |
+
* @param {Object or Function} options - if function, use as callback
|
468 |
+
* @param {Function} onAlways - callback function
|
469 |
+
*/
|
470 |
+
function ImagesLoaded( elem, options, onAlways ) {
|
471 |
+
// coerce ImagesLoaded() without new, to be new ImagesLoaded()
|
472 |
+
if ( !( this instanceof ImagesLoaded ) ) {
|
473 |
+
return new ImagesLoaded( elem, options, onAlways );
|
474 |
+
}
|
475 |
+
// use elem as selector string
|
476 |
+
var queryElem = elem;
|
477 |
+
if ( typeof elem == 'string' ) {
|
478 |
+
queryElem = document.querySelectorAll( elem );
|
479 |
+
}
|
480 |
+
// bail if bad element
|
481 |
+
if ( !queryElem ) {
|
482 |
+
console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );
|
483 |
+
return;
|
484 |
+
}
|
485 |
+
|
486 |
+
this.elements = makeArray( queryElem );
|
487 |
+
this.options = extend( {}, this.options );
|
488 |
+
// shift arguments if no options set
|
489 |
+
if ( typeof options == 'function' ) {
|
490 |
+
onAlways = options;
|
491 |
+
} else {
|
492 |
+
extend( this.options, options );
|
493 |
+
}
|
494 |
+
|
495 |
+
if ( onAlways ) {
|
496 |
+
this.on( 'always', onAlways );
|
497 |
+
}
|
498 |
+
|
499 |
+
this.getImages();
|
500 |
+
|
501 |
+
if ( $ ) {
|
502 |
+
// add jQuery Deferred object
|
503 |
+
this.jqDeferred = new $.Deferred();
|
504 |
+
}
|
505 |
+
|
506 |
+
// HACK check async to allow time to bind listeners
|
507 |
+
setTimeout( this.check.bind( this ) );
|
508 |
+
}
|
509 |
+
|
510 |
+
ImagesLoaded.prototype = Object.create( EvEmitter.prototype );
|
511 |
+
|
512 |
+
ImagesLoaded.prototype.options = {};
|
513 |
+
|
514 |
+
ImagesLoaded.prototype.getImages = function() {
|
515 |
+
this.images = [];
|
516 |
+
|
517 |
+
// filter & find items if we have an item selector
|
518 |
+
this.elements.forEach( this.addElementImages, this );
|
519 |
+
};
|
520 |
+
|
521 |
+
/**
|
522 |
+
* @param {Node} element
|
523 |
+
*/
|
524 |
+
ImagesLoaded.prototype.addElementImages = function( elem ) {
|
525 |
+
// filter siblings
|
526 |
+
if ( elem.nodeName == 'IMG' ) {
|
527 |
+
this.addImage( elem );
|
528 |
+
}
|
529 |
+
// get background image on element
|
530 |
+
if ( this.options.background === true ) {
|
531 |
+
this.addElementBackgroundImages( elem );
|
532 |
+
}
|
533 |
+
|
534 |
+
// find children
|
535 |
+
// no non-element nodes, #143
|
536 |
+
var nodeType = elem.nodeType;
|
537 |
+
if ( !nodeType || !elementNodeTypes[ nodeType ] ) {
|
538 |
+
return;
|
539 |
+
}
|
540 |
+
var childImgs = elem.querySelectorAll('img');
|
541 |
+
// concat childElems to filterFound array
|
542 |
+
for ( var i=0; i < childImgs.length; i++ ) {
|
543 |
+
var img = childImgs[i];
|
544 |
+
this.addImage( img );
|
545 |
+
}
|
546 |
+
|
547 |
+
// get child background images
|
548 |
+
if ( typeof this.options.background == 'string' ) {
|
549 |
+
var children = elem.querySelectorAll( this.options.background );
|
550 |
+
for ( i=0; i < children.length; i++ ) {
|
551 |
+
var child = children[i];
|
552 |
+
this.addElementBackgroundImages( child );
|
553 |
}
|
554 |
+
}
|
555 |
+
};
|
556 |
+
|
557 |
+
var elementNodeTypes = {
|
558 |
+
1: true,
|
559 |
+
9: true,
|
560 |
+
11: true
|
561 |
+
};
|
562 |
+
|
563 |
+
ImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {
|
564 |
+
var style = getComputedStyle( elem );
|
565 |
+
if ( !style ) {
|
566 |
+
// Firefox returns null if in a hidden iframe https://bugzil.la/548397
|
567 |
+
return;
|
568 |
+
}
|
569 |
+
// get url inside url("...")
|
570 |
+
var reURL = /url\((['"])?(.*?)\1\)/gi;
|
571 |
+
var matches = reURL.exec( style.backgroundImage );
|
572 |
+
while ( matches !== null ) {
|
573 |
+
var url = matches && matches[2];
|
574 |
+
if ( url ) {
|
575 |
+
this.addBackground( url, elem );
|
576 |
}
|
577 |
+
matches = reURL.exec( style.backgroundImage );
|
578 |
+
}
|
579 |
+
};
|
580 |
+
|
581 |
+
/**
|
582 |
+
* @param {Image} img
|
583 |
+
*/
|
584 |
+
ImagesLoaded.prototype.addImage = function( img ) {
|
585 |
+
var loadingImage = new LoadingImage( img );
|
586 |
+
this.images.push( loadingImage );
|
587 |
+
};
|
588 |
+
|
589 |
+
ImagesLoaded.prototype.addBackground = function( url, elem ) {
|
590 |
+
var background = new Background( url, elem );
|
591 |
+
this.images.push( background );
|
592 |
+
};
|
593 |
+
|
594 |
+
ImagesLoaded.prototype.check = function() {
|
595 |
+
var _this = this;
|
596 |
+
this.progressedCount = 0;
|
597 |
+
this.hasAnyBroken = false;
|
598 |
+
// complete if no images
|
599 |
+
if ( !this.images.length ) {
|
600 |
+
this.complete();
|
601 |
+
return;
|
602 |
+
}
|
603 |
+
|
604 |
+
function onProgress( image, elem, message ) {
|
605 |
+
// HACK - Chrome triggers event before object properties have changed. #83
|
606 |
+
setTimeout( function() {
|
607 |
+
_this.progress( image, elem, message );
|
608 |
+
});
|
609 |
+
}
|
610 |
+
|
611 |
+
this.images.forEach( function( loadingImage ) {
|
612 |
+
loadingImage.once( 'progress', onProgress );
|
613 |
+
loadingImage.check();
|
614 |
+
});
|
615 |
+
};
|
616 |
+
|
617 |
+
ImagesLoaded.prototype.progress = function( image, elem, message ) {
|
618 |
+
this.progressedCount++;
|
619 |
+
this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
|
620 |
+
// progress event
|
621 |
+
this.emitEvent( 'progress', [ this, image, elem ] );
|
622 |
+
if ( this.jqDeferred && this.jqDeferred.notify ) {
|
623 |
+
this.jqDeferred.notify( this, image );
|
624 |
+
}
|
625 |
+
// check if completed
|
626 |
+
if ( this.progressedCount == this.images.length ) {
|
627 |
+
this.complete();
|
628 |
+
}
|
629 |
+
|
630 |
+
if ( this.options.debug && console ) {
|
631 |
+
console.log( 'progress: ' + message, image, elem );
|
632 |
+
}
|
633 |
+
};
|
634 |
+
|
635 |
+
ImagesLoaded.prototype.complete = function() {
|
636 |
+
var eventName = this.hasAnyBroken ? 'fail' : 'done';
|
637 |
+
this.isComplete = true;
|
638 |
+
this.emitEvent( eventName, [ this ] );
|
639 |
+
this.emitEvent( 'always', [ this ] );
|
640 |
+
if ( this.jqDeferred ) {
|
641 |
+
var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
|
642 |
+
this.jqDeferred[ jqMethod ]( this );
|
643 |
+
}
|
644 |
+
};
|
645 |
+
|
646 |
+
// -------------------------- -------------------------- //
|
647 |
+
|
648 |
+
function LoadingImage( img ) {
|
649 |
+
this.img = img;
|
650 |
+
}
|
651 |
+
|
652 |
+
LoadingImage.prototype = Object.create( EvEmitter.prototype );
|
653 |
+
|
654 |
+
LoadingImage.prototype.check = function() {
|
655 |
+
// If complete is true and browser supports natural sizes,
|
656 |
+
// try to check for image status manually.
|
657 |
+
var isComplete = this.getIsImageComplete();
|
658 |
+
if ( isComplete ) {
|
659 |
+
// report based on naturalWidth
|
660 |
+
this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
|
661 |
+
return;
|
662 |
+
}
|
663 |
+
|
664 |
+
// If none of the checks above matched, simulate loading on detached element.
|
665 |
+
this.proxyImage = new Image();
|
666 |
+
this.proxyImage.addEventListener( 'load', this );
|
667 |
+
this.proxyImage.addEventListener( 'error', this );
|
668 |
+
// bind to image as well for Firefox. #191
|
669 |
+
this.img.addEventListener( 'load', this );
|
670 |
+
this.img.addEventListener( 'error', this );
|
671 |
+
this.proxyImage.src = this.img.src;
|
672 |
+
};
|
673 |
+
|
674 |
+
LoadingImage.prototype.getIsImageComplete = function() {
|
675 |
+
// check for non-zero, non-undefined naturalWidth
|
676 |
+
// fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671
|
677 |
+
return this.img.complete && this.img.naturalWidth;
|
678 |
+
};
|
679 |
+
|
680 |
+
LoadingImage.prototype.confirm = function( isLoaded, message ) {
|
681 |
+
this.isLoaded = isLoaded;
|
682 |
+
this.emitEvent( 'progress', [ this, this.img, message ] );
|
683 |
+
};
|
684 |
+
|
685 |
+
// ----- events ----- //
|
686 |
+
|
687 |
+
// trigger specified handler for event type
|
688 |
+
LoadingImage.prototype.handleEvent = function( event ) {
|
689 |
+
var method = 'on' + event.type;
|
690 |
+
if ( this[ method ] ) {
|
691 |
+
this[ method ]( event );
|
692 |
+
}
|
693 |
+
};
|
694 |
+
|
695 |
+
LoadingImage.prototype.onload = function() {
|
696 |
+
this.confirm( true, 'onload' );
|
697 |
+
this.unbindEvents();
|
698 |
+
};
|
699 |
+
|
700 |
+
LoadingImage.prototype.onerror = function() {
|
701 |
+
this.confirm( false, 'onerror' );
|
702 |
+
this.unbindEvents();
|
703 |
+
};
|
704 |
+
|
705 |
+
LoadingImage.prototype.unbindEvents = function() {
|
706 |
+
this.proxyImage.removeEventListener( 'load', this );
|
707 |
+
this.proxyImage.removeEventListener( 'error', this );
|
708 |
+
this.img.removeEventListener( 'load', this );
|
709 |
+
this.img.removeEventListener( 'error', this );
|
710 |
+
};
|
711 |
+
|
712 |
+
// -------------------------- Background -------------------------- //
|
713 |
+
|
714 |
+
function Background( url, element ) {
|
715 |
+
this.url = url;
|
716 |
+
this.element = element;
|
717 |
+
this.img = new Image();
|
718 |
+
}
|
719 |
+
|
720 |
+
// inherit LoadingImage prototype
|
721 |
+
Background.prototype = Object.create( LoadingImage.prototype );
|
722 |
+
|
723 |
+
Background.prototype.check = function() {
|
724 |
+
this.img.addEventListener( 'load', this );
|
725 |
+
this.img.addEventListener( 'error', this );
|
726 |
+
this.img.src = this.url;
|
727 |
+
// check if image is already complete
|
728 |
+
var isComplete = this.getIsImageComplete();
|
729 |
+
if ( isComplete ) {
|
730 |
+
this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
|
731 |
+
this.unbindEvents();
|
732 |
+
}
|
733 |
+
};
|
734 |
+
|
735 |
+
Background.prototype.unbindEvents = function() {
|
736 |
+
this.img.removeEventListener( 'load', this );
|
737 |
+
this.img.removeEventListener( 'error', this );
|
738 |
+
};
|
739 |
+
|
740 |
+
Background.prototype.confirm = function( isLoaded, message ) {
|
741 |
+
this.isLoaded = isLoaded;
|
742 |
+
this.emitEvent( 'progress', [ this, this.element, message ] );
|
743 |
+
};
|
744 |
+
|
745 |
+
// -------------------------- jQuery -------------------------- //
|
746 |
+
|
747 |
+
ImagesLoaded.makeJQueryPlugin = function( jQuery ) {
|
748 |
+
jQuery = jQuery || window.jQuery;
|
749 |
+
if ( !jQuery ) {
|
750 |
+
return;
|
751 |
+
}
|
752 |
+
// set local variable
|
753 |
+
$ = jQuery;
|
754 |
+
// $().imagesLoaded()
|
755 |
+
$.fn.imagesLoaded = function( options, callback ) {
|
756 |
+
var instance = new ImagesLoaded( this, options, callback );
|
757 |
+
return instance.jqDeferred.promise( $(this) );
|
758 |
+
};
|
759 |
+
};
|
760 |
+
// try making plugin
|
761 |
+
ImagesLoaded.makeJQueryPlugin();
|
762 |
+
|
763 |
+
// -------------------------- -------------------------- //
|
764 |
+
|
765 |
+
return ImagesLoaded;
|
766 |
+
|
767 |
+
});
|
768 |
+
|
769 |
+
|
770 |
+
/**
|
771 |
+
* author Christopher Blum
|
772 |
+
* - based on the idea of Remy Sharp, http://remysharp.com/2009/01/26/element-in-view-event-plugin/
|
773 |
+
* - forked from http://github.com/zuk/jquery.inview/
|
774 |
+
*/
|
775 |
+
(function (factory) {
|
776 |
+
if (typeof define == 'function' && define.amd) {
|
777 |
+
// AMD
|
778 |
+
define(['jquery'], factory);
|
779 |
+
} else if (typeof exports === 'object') {
|
780 |
+
// Node, CommonJS
|
781 |
+
module.exports = factory(require('jquery'));
|
782 |
+
} else {
|
783 |
+
// Browser globals
|
784 |
+
factory(jQuery);
|
785 |
}
|
786 |
+
}(function ($) {
|
787 |
+
|
788 |
+
var inviewObjects = [], viewportSize, viewportOffset,
|
789 |
+
d = document, w = window, documentElement = d.documentElement, timer;
|
790 |
+
|
791 |
+
$.event.special.inview = {
|
792 |
+
add: function (data) {
|
793 |
+
inviewObjects.push({ data: data, $element: $(this), element: this });
|
794 |
+
// Use setInterval in order to also make sure this captures elements within
|
795 |
+
// "overflow:scroll" elements or elements that appeared in the dom tree due to
|
796 |
+
// dom manipulation and reflow
|
797 |
+
// old: $(window).scroll(checkInView);
|
798 |
+
//
|
799 |
+
// By the way, iOS (iPad, iPhone, ...) seems to not execute, or at least delays
|
800 |
+
// intervals while the user scrolls. Therefore the inview event might fire a bit late there
|
801 |
+
//
|
802 |
+
// Don't waste cycles with an interval until we get at least one element that
|
803 |
+
// has bound to the inview event.
|
804 |
+
if (!timer && inviewObjects.length) {
|
805 |
+
timer = setInterval(checkInView, 250);
|
806 |
+
}
|
807 |
+
},
|
808 |
+
|
809 |
+
remove: function (data) {
|
810 |
+
for (var i = 0; i < inviewObjects.length; i++) {
|
811 |
+
var inviewObject = inviewObjects[i];
|
812 |
+
if (inviewObject.element === this && inviewObject.data.guid === data.guid) {
|
813 |
+
inviewObjects.splice(i, 1);
|
814 |
+
break;
|
815 |
+
}
|
816 |
+
}
|
817 |
+
|
818 |
+
// Clear interval when we no longer have any elements listening
|
819 |
+
if (!inviewObjects.length) {
|
820 |
+
clearInterval(timer);
|
821 |
+
timer = null;
|
822 |
+
}
|
823 |
}
|
824 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
825 |
|
826 |
+
function getViewportSize() {
|
827 |
+
var mode, domObject, size = { height: w.innerHeight, width: w.innerWidth };
|
828 |
+
|
829 |
+
// if this is correct then return it. iPad has compat Mode, so will
|
830 |
+
// go into check clientHeight/clientWidth (which has the wrong value).
|
831 |
+
if (!size.height) {
|
832 |
+
mode = d.compatMode;
|
833 |
+
if (mode || !$.support.boxModel) { // IE, Gecko
|
834 |
+
domObject = mode === 'CSS1Compat' ?
|
835 |
+
documentElement : // Standards
|
836 |
+
d.body; // Quirks
|
837 |
+
size = {
|
838 |
+
height: domObject.clientHeight,
|
839 |
+
width: domObject.clientWidth
|
840 |
+
};
|
841 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
842 |
}
|
843 |
+
|
844 |
+
return size;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
845 |
}
|
846 |
+
|
847 |
+
function getViewportOffset() {
|
848 |
return {
|
849 |
+
top: w.pageYOffset || documentElement.scrollTop || d.body.scrollTop,
|
850 |
+
left: w.pageXOffset || documentElement.scrollLeft || d.body.scrollLeft
|
|
|
|
|
851 |
};
|
852 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
853 |
|
854 |
+
function checkInView() {
|
855 |
+
if (!inviewObjects.length) {
|
856 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
857 |
}
|
858 |
+
|
859 |
+
var i = 0, $elements = $.map(inviewObjects, function (inviewObject) {
|
860 |
+
var selector = inviewObject.data.selector,
|
861 |
+
$element = inviewObject.$element;
|
862 |
+
return selector ? $element.find(selector) : $element;
|
|
|
|
|
|
|
863 |
});
|
864 |
+
|
865 |
+
viewportSize = viewportSize || getViewportSize();
|
866 |
+
viewportOffset = viewportOffset || getViewportOffset();
|
867 |
+
|
868 |
+
for (; i < inviewObjects.length; i++) {
|
869 |
+
// Ignore elements that are not in the DOM tree
|
870 |
+
if (!$.contains(documentElement, $elements[i][0])) {
|
871 |
+
continue;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
872 |
}
|
873 |
+
|
874 |
+
var $element = $($elements[i]),
|
875 |
+
elementSize = { height: $element[0].offsetHeight, width: $element[0].offsetWidth },
|
876 |
+
elementOffset = $element.offset(),
|
877 |
+
inView = $element.data('inview');
|
878 |
+
|
879 |
+
// Don't ask me why because I haven't figured out yet:
|
880 |
+
// viewportOffset and viewportSize are sometimes suddenly null in Firefox 5.
|
881 |
+
// Even though it sounds weird:
|
882 |
+
// It seems that the execution of this function is interferred by the onresize/onscroll event
|
883 |
+
// where viewportOffset and viewportSize are unset
|
884 |
+
if (!viewportOffset || !viewportSize) {
|
885 |
+
return;
|
|
|
|
|
886 |
}
|
887 |
+
|
888 |
+
if (elementOffset.top + elementSize.height > viewportOffset.top &&
|
889 |
+
elementOffset.top < viewportOffset.top + viewportSize.height &&
|
890 |
+
elementOffset.left + elementSize.width > viewportOffset.left &&
|
891 |
+
elementOffset.left < viewportOffset.left + viewportSize.width) {
|
892 |
+
if (!inView) {
|
893 |
+
$element.data('inview', true).trigger('inview', [true]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
894 |
}
|
895 |
+
} else if (inView) {
|
896 |
+
$element.data('inview', false).trigger('inview', [false]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
897 |
}
|
898 |
}
|
|
|
899 |
}
|
900 |
+
|
901 |
+
$(w).on("scroll resize scrollstop", function () {
|
902 |
+
viewportSize = viewportOffset = null;
|
903 |
+
});
|
904 |
+
|
905 |
+
// IE < 9 scrolls to focused elements without firing the "scroll" event
|
906 |
+
if (!documentElement.addEventListener && documentElement.attachEvent) {
|
907 |
+
documentElement.attachEvent("onfocusin", function () {
|
908 |
+
viewportOffset = null;
|
909 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
910 |
}
|
911 |
+
}));
|
912 |
+
/*!
|
913 |
+
* Isotope PACKAGED v3.0.6
|
914 |
+
*
|
915 |
+
* Licensed GPLv3 for open source use
|
916 |
+
* or Isotope Commercial License for commercial use
|
917 |
+
*
|
918 |
+
* https://isotope.metafizzy.co
|
919 |
+
* Copyright 2010-2018 Metafizzy
|
920 |
+
*/
|
921 |
|
922 |
+
/**
|
923 |
+
* Bridget makes jQuery widgets
|
924 |
+
* v2.0.1
|
925 |
+
* MIT license
|
926 |
+
*/
|
927 |
|
928 |
+
/* jshint browser: true, strict: true, undef: true, unused: true */
|
|
|
|
|
|
|
929 |
|
930 |
+
( function( window, factory ) {
|
931 |
+
// universal module definition
|
932 |
+
/*jshint strict: false */ /* globals define, module, require */
|
933 |
+
if ( typeof define == 'function' && define.amd ) {
|
934 |
+
// AMD
|
935 |
+
define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {
|
936 |
+
return factory( window, jQuery );
|
937 |
+
});
|
938 |
+
} else if ( typeof module == 'object' && module.exports ) {
|
939 |
+
// CommonJS
|
940 |
+
module.exports = factory(
|
941 |
+
window,
|
942 |
+
require('jquery')
|
943 |
+
);
|
944 |
+
} else {
|
945 |
+
// browser global
|
946 |
+
window.jQueryBridget = factory(
|
947 |
+
window,
|
948 |
+
window.jQuery
|
949 |
+
);
|
950 |
+
}
|
951 |
|
952 |
+
}( window, function factory( window, jQuery ) {
|
953 |
+
'use strict';
|
|
|
|
|
|
|
|
|
954 |
|
955 |
+
// ----- utils ----- //
|
|
|
|
|
|
|
|
|
956 |
|
957 |
+
var arraySlice = Array.prototype.slice;
|
958 |
+
|
959 |
+
// helper function for logging errors
|
960 |
+
// $.error breaks jQuery chaining
|
961 |
+
var console = window.console;
|
962 |
+
var logError = typeof console == 'undefined' ? function() {} :
|
963 |
+
function( message ) {
|
964 |
+
console.error( message );
|
965 |
+
};
|
966 |
+
|
967 |
+
// ----- jQueryBridget ----- //
|
968 |
+
|
969 |
+
function jQueryBridget( namespace, PluginClass, $ ) {
|
970 |
+
$ = $ || jQuery || window.jQuery;
|
971 |
+
if ( !$ ) {
|
972 |
+
return;
|
973 |
+
}
|
974 |
+
|
975 |
+
// add option method -> $().plugin('option', {...})
|
976 |
+
if ( !PluginClass.prototype.option ) {
|
977 |
+
// option setter
|
978 |
+
PluginClass.prototype.option = function( opts ) {
|
979 |
+
// bail out if not an object
|
980 |
+
if ( !$.isPlainObject( opts ) ){
|
981 |
+
return;
|
982 |
+
}
|
983 |
+
this.options = $.extend( true, this.options, opts );
|
984 |
};
|
985 |
+
}
|
986 |
|
987 |
+
// make jQuery plugin
|
988 |
+
$.fn[ namespace ] = function( arg0 /*, arg1 */ ) {
|
989 |
+
if ( typeof arg0 == 'string' ) {
|
990 |
+
// method call $().plugin( 'methodName', { options } )
|
991 |
+
// shift arguments by 1
|
992 |
+
var args = arraySlice.call( arguments, 1 );
|
993 |
+
return methodCall( this, arg0, args );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
994 |
}
|
995 |
+
// just $().plugin({ options })
|
996 |
+
plainCall( this, arg0 );
|
997 |
+
return this;
|
998 |
+
};
|
999 |
|
1000 |
+
// $().plugin('methodName')
|
1001 |
+
function methodCall( $elems, methodName, args ) {
|
1002 |
+
var returnValue;
|
1003 |
+
var pluginMethodStr = '$().' + namespace + '("' + methodName + '")';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1004 |
|
1005 |
+
$elems.each( function( i, elem ) {
|
1006 |
+
// get instance
|
1007 |
+
var instance = $.data( elem, namespace );
|
1008 |
+
if ( !instance ) {
|
1009 |
+
logError( namespace + ' not initialized. Cannot call methods, i.e. ' +
|
1010 |
+
pluginMethodStr );
|
1011 |
+
return;
|
1012 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1013 |
|
1014 |
+
var method = instance[ methodName ];
|
1015 |
+
if ( !method || methodName.charAt(0) == '_' ) {
|
1016 |
+
logError( pluginMethodStr + ' is not a valid method' );
|
1017 |
+
return;
|
1018 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1019 |
|
1020 |
+
// apply method, get return value
|
1021 |
+
var value = method.apply( instance, args );
|
1022 |
+
// set return value if value is returned, use only first value
|
1023 |
+
returnValue = returnValue === undefined ? value : returnValue;
|
1024 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1025 |
|
1026 |
+
return returnValue !== undefined ? returnValue : $elems;
|
1027 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1028 |
|
1029 |
+
function plainCall( $elems, options ) {
|
1030 |
+
$elems.each( function( i, elem ) {
|
1031 |
+
var instance = $.data( elem, namespace );
|
1032 |
+
if ( instance ) {
|
1033 |
+
// set options & init
|
1034 |
+
instance.option( options );
|
1035 |
+
instance._init();
|
1036 |
+
} else {
|
1037 |
+
// initialize new instance
|
1038 |
+
instance = new PluginClass( elem, options );
|
1039 |
+
$.data( elem, namespace, instance );
|
1040 |
+
}
|
1041 |
+
});
|
1042 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1043 |
|
1044 |
+
updateJQuery( $ );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1045 |
|
1046 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1047 |
|
1048 |
+
// ----- updateJQuery ----- //
|
1049 |
+
|
1050 |
+
// set $.bridget for v1 backwards compatibility
|
1051 |
+
function updateJQuery( $ ) {
|
1052 |
+
if ( !$ || ( $ && $.bridget ) ) {
|
1053 |
+
return;
|
1054 |
+
}
|
1055 |
+
$.bridget = jQueryBridget;
|
1056 |
+
}
|
1057 |
+
|
1058 |
+
updateJQuery( jQuery || window.jQuery );
|
1059 |
+
|
1060 |
+
// ----- ----- //
|
1061 |
+
|
1062 |
+
return jQueryBridget;
|
1063 |
+
|
1064 |
+
}));
|
1065 |
+
|
1066 |
+
/**
|
1067 |
+
* EvEmitter v1.1.0
|
1068 |
+
* Lil' event emitter
|
1069 |
+
* MIT License
|
1070 |
+
*/
|
1071 |
+
|
1072 |
+
/* jshint unused: true, undef: true, strict: true */
|
1073 |
+
|
1074 |
+
( function( global, factory ) {
|
1075 |
+
// universal module definition
|
1076 |
+
/* jshint strict: false */ /* globals define, module, window */
|
1077 |
+
if ( typeof define == 'function' && define.amd ) {
|
1078 |
+
// AMD - RequireJS
|
1079 |
+
define( 'ev-emitter/ev-emitter',factory );
|
1080 |
+
} else if ( typeof module == 'object' && module.exports ) {
|
1081 |
+
// CommonJS - Browserify, Webpack
|
1082 |
+
module.exports = factory();
|
1083 |
+
} else {
|
1084 |
+
// Browser globals
|
1085 |
+
global.EvEmitter = factory();
|
1086 |
+
}
|
1087 |
+
|
1088 |
+
}( typeof window != 'undefined' ? window : this, function() {
|
1089 |
+
|
1090 |
+
|
1091 |
+
|
1092 |
+
function EvEmitter() {}
|
1093 |
+
|
1094 |
+
var proto = EvEmitter.prototype;
|
1095 |
+
|
1096 |
+
proto.on = function( eventName, listener ) {
|
1097 |
+
if ( !eventName || !listener ) {
|
1098 |
+
return;
|
1099 |
+
}
|
1100 |
+
// set events hash
|
1101 |
+
var events = this._events = this._events || {};
|
1102 |
+
// set listeners array
|
1103 |
+
var listeners = events[ eventName ] = events[ eventName ] || [];
|
1104 |
+
// only add once
|
1105 |
+
if ( listeners.indexOf( listener ) == -1 ) {
|
1106 |
+
listeners.push( listener );
|
1107 |
+
}
|
1108 |
+
|
1109 |
+
return this;
|
1110 |
+
};
|
1111 |
+
|
1112 |
+
proto.once = function( eventName, listener ) {
|
1113 |
+
if ( !eventName || !listener ) {
|
1114 |
+
return;
|
1115 |
+
}
|
1116 |
+
// add event
|
1117 |
+
this.on( eventName, listener );
|
1118 |
+
// set once flag
|
1119 |
+
// set onceEvents hash
|
1120 |
+
var onceEvents = this._onceEvents = this._onceEvents || {};
|
1121 |
+
// set onceListeners object
|
1122 |
+
var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};
|
1123 |
+
// set flag
|
1124 |
+
onceListeners[ listener ] = true;
|
1125 |
+
|
1126 |
+
return this;
|
1127 |
+
};
|
1128 |
+
|
1129 |
+
proto.off = function( eventName, listener ) {
|
1130 |
+
var listeners = this._events && this._events[ eventName ];
|
1131 |
+
if ( !listeners || !listeners.length ) {
|
1132 |
+
return;
|
1133 |
+
}
|
1134 |
+
var index = listeners.indexOf( listener );
|
1135 |
+
if ( index != -1 ) {
|
1136 |
+
listeners.splice( index, 1 );
|
1137 |
+
}
|
1138 |
+
|
1139 |
+
return this;
|
1140 |
+
};
|
1141 |
+
|
1142 |
+
proto.emitEvent = function( eventName, args ) {
|
1143 |
+
var listeners = this._events && this._events[ eventName ];
|
1144 |
+
if ( !listeners || !listeners.length ) {
|
1145 |
+
return;
|
1146 |
+
}
|
1147 |
+
// copy over to avoid interference if .off() in listener
|
1148 |
+
listeners = listeners.slice(0);
|
1149 |
+
args = args || [];
|
1150 |
+
// once stuff
|
1151 |
+
var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
|
1152 |
+
|
1153 |
+
for ( var i=0; i < listeners.length; i++ ) {
|
1154 |
+
var listener = listeners[i]
|
1155 |
+
var isOnce = onceListeners && onceListeners[ listener ];
|
1156 |
+
if ( isOnce ) {
|
1157 |
+
// remove listener
|
1158 |
+
// remove before trigger to prevent recursion
|
1159 |
+
this.off( eventName, listener );
|
1160 |
+
// unset once flag
|
1161 |
+
delete onceListeners[ listener ];
|
1162 |
}
|
1163 |
+
// trigger listener
|
1164 |
+
listener.apply( this, args );
|
1165 |
+
}
|
1166 |
+
|
1167 |
+
return this;
|
1168 |
+
};
|
1169 |
+
|
1170 |
+
proto.allOff = function() {
|
1171 |
+
delete this._events;
|
1172 |
+
delete this._onceEvents;
|
1173 |
+
};
|
1174 |
+
|
1175 |
+
return EvEmitter;
|
1176 |
+
|
1177 |
+
}));
|
1178 |
+
|
1179 |
+
/*!
|
1180 |
+
* getSize v2.0.3
|
1181 |
+
* measure size of elements
|
1182 |
+
* MIT license
|
1183 |
+
*/
|
1184 |
+
|
1185 |
+
/* jshint browser: true, strict: true, undef: true, unused: true */
|
1186 |
+
/* globals console: false */
|
1187 |
+
|
1188 |
+
( function( window, factory ) {
|
1189 |
+
/* jshint strict: false */ /* globals define, module */
|
1190 |
+
if ( typeof define == 'function' && define.amd ) {
|
1191 |
+
// AMD
|
1192 |
+
define( 'get-size/get-size',factory );
|
1193 |
+
} else if ( typeof module == 'object' && module.exports ) {
|
1194 |
+
// CommonJS
|
1195 |
+
module.exports = factory();
|
1196 |
+
} else {
|
1197 |
+
// browser global
|
1198 |
+
window.getSize = factory();
|
1199 |
+
}
|
1200 |
+
|
1201 |
+
})( window, function factory() {
|
1202 |
+
'use strict';
|
1203 |
+
|
1204 |
+
// -------------------------- helpers -------------------------- //
|
1205 |
+
|
1206 |
+
// get a number from a string, not a percentage
|
1207 |
+
function getStyleSize( value ) {
|
1208 |
+
var num = parseFloat( value );
|
1209 |
+
// not a percent like '100%', and a number
|
1210 |
+
var isValid = value.indexOf('%') == -1 && !isNaN( num );
|
1211 |
+
return isValid && num;
|
1212 |
+
}
|
1213 |
+
|
1214 |
+
function noop() {}
|
1215 |
+
|
1216 |
+
var logError = typeof console == 'undefined' ? noop :
|
1217 |
+
function( message ) {
|
1218 |
+
console.error( message );
|
1219 |
+
};
|
1220 |
+
|
1221 |
+
// -------------------------- measurements -------------------------- //
|
1222 |
+
|
1223 |
+
var measurements = [
|
1224 |
+
'paddingLeft',
|
1225 |
+
'paddingRight',
|
1226 |
+
'paddingTop',
|
1227 |
+
'paddingBottom',
|
1228 |
+
'marginLeft',
|
1229 |
+
'marginRight',
|
1230 |
+
'marginTop',
|
1231 |
+
'marginBottom',
|
1232 |
+
'borderLeftWidth',
|
1233 |
+
'borderRightWidth',
|
1234 |
+
'borderTopWidth',
|
1235 |
+
'borderBottomWidth'
|
1236 |
+
];
|
1237 |
+
|
1238 |
+
var measurementsLength = measurements.length;
|
1239 |
+
|
1240 |
+
function getZeroSize() {
|
1241 |
+
var size = {
|
1242 |
+
width: 0,
|
1243 |
+
height: 0,
|
1244 |
+
innerWidth: 0,
|
1245 |
+
innerHeight: 0,
|
1246 |
+
outerWidth: 0,
|
1247 |
+
outerHeight: 0
|
1248 |
+
};
|
1249 |
+
for ( var i=0; i < measurementsLength; i++ ) {
|
1250 |
+
var measurement = measurements[i];
|
1251 |
+
size[ measurement ] = 0;
|
1252 |
+
}
|
1253 |
+
return size;
|
1254 |
+
}
|
1255 |
+
|
1256 |
+
// -------------------------- getStyle -------------------------- //
|
1257 |
+
|
1258 |
+
/**
|
1259 |
+
* getStyle, get style of element, check for Firefox bug
|
1260 |
+
* https://bugzilla.mozilla.org/show_bug.cgi?id=548397
|
1261 |
+
*/
|
1262 |
+
function getStyle( elem ) {
|
1263 |
+
var style = getComputedStyle( elem );
|
1264 |
+
if ( !style ) {
|
1265 |
+
logError( 'Style returned ' + style +
|
1266 |
+
'. Are you running this code in a hidden iframe on Firefox? ' +
|
1267 |
+
'See https://bit.ly/getsizebug1' );
|
1268 |
+
}
|
1269 |
+
return style;
|
1270 |
+
}
|
1271 |
+
|
1272 |
+
// -------------------------- setup -------------------------- //
|
1273 |
+
|
1274 |
+
var isSetup = false;
|
1275 |
+
|
1276 |
+
var isBoxSizeOuter;
|
1277 |
+
|
1278 |
+
/**
|
1279 |
+
* setup
|
1280 |
+
* check isBoxSizerOuter
|
1281 |
+
* do on first getSize() rather than on page load for Firefox bug
|
1282 |
+
*/
|
1283 |
+
function setup() {
|
1284 |
+
// setup once
|
1285 |
+
if ( isSetup ) {
|
1286 |
+
return;
|
1287 |
+
}
|
1288 |
+
isSetup = true;
|
1289 |
+
|
1290 |
+
// -------------------------- box sizing -------------------------- //
|
1291 |
+
|
1292 |
+
/**
|
1293 |
+
* Chrome & Safari measure the outer-width on style.width on border-box elems
|
1294 |
+
* IE11 & Firefox<29 measures the inner-width
|
1295 |
+
*/
|
1296 |
+
var div = document.createElement('div');
|
1297 |
+
div.style.width = '200px';
|
1298 |
+
div.style.padding = '1px 2px 3px 4px';
|
1299 |
+
div.style.borderStyle = 'solid';
|
1300 |
+
div.style.borderWidth = '1px 2px 3px 4px';
|
1301 |
+
div.style.boxSizing = 'border-box';
|
1302 |
+
|
1303 |
+
var body = document.body || document.documentElement;
|
1304 |
+
body.appendChild( div );
|
1305 |
+
var style = getStyle( div );
|
1306 |
+
// round value for browser zoom. desandro/masonry#928
|
1307 |
+
isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;
|
1308 |
+
getSize.isBoxSizeOuter = isBoxSizeOuter;
|
1309 |
+
|
1310 |
+
body.removeChild( div );
|
1311 |
+
}
|
1312 |
+
|
1313 |
+
// -------------------------- getSize -------------------------- //
|
1314 |
+
|
1315 |
+
function getSize( elem ) {
|
1316 |
+
setup();
|
1317 |
+
|
1318 |
+
// use querySeletor if elem is string
|
1319 |
+
if ( typeof elem == 'string' ) {
|
1320 |
+
elem = document.querySelector( elem );
|
1321 |
+
}
|
1322 |
+
|
1323 |
+
// do not proceed on non-objects
|
1324 |
+
if ( !elem || typeof elem != 'object' || !elem.nodeType ) {
|
1325 |
+
return;
|
1326 |
+
}
|
1327 |
+
|
1328 |
+
var style = getStyle( elem );
|
1329 |
+
|
1330 |
+
// if hidden, everything is 0
|
1331 |
+
if ( style.display == 'none' ) {
|
1332 |
+
return getZeroSize();
|
1333 |
+
}
|
1334 |
+
|
1335 |
+
var size = {};
|
1336 |
+
size.width = elem.offsetWidth;
|
1337 |
+
size.height = elem.offsetHeight;
|
1338 |
+
|
1339 |
+
var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';
|
1340 |
+
|
1341 |
+
// get all measurements
|
1342 |
+
for ( var i=0; i < measurementsLength; i++ ) {
|
1343 |
+
var measurement = measurements[i];
|
1344 |
+
var value = style[ measurement ];
|
1345 |
+
var num = parseFloat( value );
|
1346 |
+
// any 'auto', 'medium' value will be 0
|
1347 |
+
size[ measurement ] = !isNaN( num ) ? num : 0;
|
1348 |
+
}
|
1349 |
+
|
1350 |
+
var paddingWidth = size.paddingLeft + size.paddingRight;
|
1351 |
+
var paddingHeight = size.paddingTop + size.paddingBottom;
|
1352 |
+
var marginWidth = size.marginLeft + size.marginRight;
|
1353 |
+
var marginHeight = size.marginTop + size.marginBottom;
|
1354 |
+
var borderWidth = size.borderLeftWidth + size.borderRightWidth;
|
1355 |
+
var borderHeight = size.borderTopWidth + size.borderBottomWidth;
|
1356 |
+
|
1357 |
+
var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;
|
1358 |
+
|
1359 |
+
// overwrite width and height if we can get it from style
|
1360 |
+
var styleWidth = getStyleSize( style.width );
|
1361 |
+
if ( styleWidth !== false ) {
|
1362 |
+
size.width = styleWidth +
|
1363 |
+
// add padding and border unless it's already including it
|
1364 |
+
( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );
|
1365 |
+
}
|
1366 |
+
|
1367 |
+
var styleHeight = getStyleSize( style.height );
|
1368 |
+
if ( styleHeight !== false ) {
|
1369 |
+
size.height = styleHeight +
|
1370 |
+
// add padding and border unless it's already including it
|
1371 |
+
( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );
|
1372 |
+
}
|
1373 |
+
|
1374 |
+
size.innerWidth = size.width - ( paddingWidth + borderWidth );
|
1375 |
+
size.innerHeight = size.height - ( paddingHeight + borderHeight );
|
1376 |
+
|
1377 |
+
size.outerWidth = size.width + marginWidth;
|
1378 |
+
size.outerHeight = size.height + marginHeight;
|
1379 |
+
|
1380 |
+
return size;
|
1381 |
+
}
|
1382 |
+
|
1383 |
+
return getSize;
|
1384 |
+
|
1385 |
+
});
|
1386 |
+
|
1387 |
+
/**
|
1388 |
+
* matchesSelector v2.0.2
|
1389 |
+
* matchesSelector( element, '.selector' )
|
1390 |
+
* MIT license
|
1391 |
+
*/
|
1392 |
+
|
1393 |
+
/*jshint browser: true, strict: true, undef: true, unused: true */
|
1394 |
+
|
1395 |
+
( function( window, factory ) {
|
1396 |
+
/*global define: false, module: false */
|
1397 |
+
'use strict';
|
1398 |
+
// universal module definition
|
1399 |
+
if ( typeof define == 'function' && define.amd ) {
|
1400 |
+
// AMD
|
1401 |
+
define( 'desandro-matches-selector/matches-selector',factory );
|
1402 |
+
} else if ( typeof module == 'object' && module.exports ) {
|
1403 |
+
// CommonJS
|
1404 |
+
module.exports = factory();
|
1405 |
+
} else {
|
1406 |
+
// browser global
|
1407 |
+
window.matchesSelector = factory();
|
1408 |
+
}
|
1409 |
+
|
1410 |
+
}( window, function factory() {
|
1411 |
+
'use strict';
|
1412 |
+
|
1413 |
+
var matchesMethod = ( function() {
|
1414 |
+
var ElemProto = window.Element.prototype;
|
1415 |
+
// check for the standard method name first
|
1416 |
+
if ( ElemProto.matches ) {
|
1417 |
+
return 'matches';
|
1418 |
}
|
1419 |
+
// check un-prefixed
|
1420 |
+
if ( ElemProto.matchesSelector ) {
|
1421 |
+
return 'matchesSelector';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1422 |
}
|
1423 |
+
// check vendor prefixes
|
1424 |
+
var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];
|
1425 |
+
|
1426 |
+
for ( var i=0; i < prefixes.length; i++ ) {
|
1427 |
+
var prefix = prefixes[i];
|
1428 |
+
var method = prefix + 'MatchesSelector';
|
1429 |
+
if ( ElemProto[ method ] ) {
|
1430 |
+
return method;
|
1431 |
+
}
|
|
|
|
|
|
|
|
|
|
|
1432 |
}
|
1433 |
+
})();
|
1434 |
|
1435 |
+
return function matchesSelector( elem, selector ) {
|
1436 |
+
return elem[ matchesMethod ]( selector );
|
1437 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1438 |
|
1439 |
+
}));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1440 |
|
1441 |
+
/**
|
1442 |
+
* Fizzy UI utils v2.0.7
|
1443 |
+
* MIT license
|
1444 |
+
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1445 |
|
1446 |
+
/*jshint browser: true, undef: true, unused: true, strict: true */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1447 |
|
1448 |
+
( function( window, factory ) {
|
1449 |
+
// universal module definition
|
1450 |
+
/*jshint strict: false */ /*globals define, module, require */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1451 |
|
1452 |
+
if ( typeof define == 'function' && define.amd ) {
|
1453 |
+
// AMD
|
1454 |
+
define( 'fizzy-ui-utils/utils',[
|
1455 |
+
'desandro-matches-selector/matches-selector'
|
1456 |
+
], function( matchesSelector ) {
|
1457 |
+
return factory( window, matchesSelector );
|
1458 |
+
});
|
1459 |
+
} else if ( typeof module == 'object' && module.exports ) {
|
1460 |
+
// CommonJS
|
1461 |
+
module.exports = factory(
|
1462 |
+
window,
|
1463 |
+
require('desandro-matches-selector')
|
1464 |
+
);
|
1465 |
+
} else {
|
1466 |
+
// browser global
|
1467 |
+
window.fizzyUIUtils = factory(
|
1468 |
+
window,
|
1469 |
+
window.matchesSelector
|
1470 |
+
);
|
1471 |
+
}
|
1472 |
+
|
1473 |
+
}( window, function factory( window, matchesSelector ) {
|
1474 |
+
|
1475 |
+
|
1476 |
+
|
1477 |
+
var utils = {};
|
1478 |
+
|
1479 |
+
// ----- extend ----- //
|
1480 |
+
|
1481 |
+
// extends objects
|
1482 |
+
utils.extend = function( a, b ) {
|
1483 |
+
for ( var prop in b ) {
|
1484 |
+
a[ prop ] = b[ prop ];
|
1485 |
+
}
|
1486 |
+
return a;
|
1487 |
+
};
|
1488 |
+
|
1489 |
+
// ----- modulo ----- //
|
1490 |
+
|
1491 |
+
utils.modulo = function( num, div ) {
|
1492 |
+
return ( ( num % div ) + div ) % div;
|
1493 |
+
};
|
1494 |
+
|
1495 |
+
// ----- makeArray ----- //
|
1496 |
+
|
1497 |
+
var arraySlice = Array.prototype.slice;
|
1498 |
+
|
1499 |
+
// turn element or nodeList into an array
|
1500 |
+
utils.makeArray = function( obj ) {
|
1501 |
+
if ( Array.isArray( obj ) ) {
|
1502 |
+
// use object if already an array
|
1503 |
+
return obj;
|
1504 |
+
}
|
1505 |
+
// return empty array if undefined or null. #6
|
1506 |
+
if ( obj === null || obj === undefined ) {
|
1507 |
+
return [];
|
1508 |
+
}
|
1509 |
+
|
1510 |
+
var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';
|
1511 |
+
if ( isArrayLike ) {
|
1512 |
+
// convert nodeList to array
|
1513 |
+
return arraySlice.call( obj );
|
1514 |
+
}
|
1515 |
+
|
1516 |
+
// array of single index
|
1517 |
+
return [ obj ];
|
1518 |
+
};
|
1519 |
+
|
1520 |
+
// ----- removeFrom ----- //
|
1521 |
+
|
1522 |
+
utils.removeFrom = function( ary, obj ) {
|
1523 |
+
var index = ary.indexOf( obj );
|
1524 |
+
if ( index != -1 ) {
|
1525 |
+
ary.splice( index, 1 );
|
1526 |
+
}
|
1527 |
+
};
|
1528 |
+
|
1529 |
+
// ----- getParent ----- //
|
1530 |
+
|
1531 |
+
utils.getParent = function( elem, selector ) {
|
1532 |
+
while ( elem.parentNode && elem != document.body ) {
|
1533 |
+
elem = elem.parentNode;
|
1534 |
+
if ( matchesSelector( elem, selector ) ) {
|
1535 |
+
return elem;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1536 |
}
|
1537 |
+
}
|
1538 |
+
};
|
1539 |
|
1540 |
+
// ----- getQueryElement ----- //
|
1541 |
+
|
1542 |
+
// use element as selector string
|
1543 |
+
utils.getQueryElement = function( elem ) {
|
1544 |
+
if ( typeof elem == 'string' ) {
|
1545 |
+
return document.querySelector( elem );
|
1546 |
+
}
|
1547 |
+
return elem;
|
1548 |
+
};
|
1549 |
+
|
1550 |
+
// ----- handleEvent ----- //
|
1551 |
+
|
1552 |
+
// enable .ontype to trigger from .addEventListener( elem, 'type' )
|
1553 |
+
utils.handleEvent = function( event ) {
|
1554 |
+
var method = 'on' + event.type;
|
1555 |
+
if ( this[ method ] ) {
|
1556 |
+
this[ method ]( event );
|
1557 |
+
}
|
1558 |
+
};
|
1559 |
+
|
1560 |
+
// ----- filterFindElements ----- //
|
1561 |
+
|
1562 |
+
utils.filterFindElements = function( elems, selector ) {
|
1563 |
+
// make array of elems
|
1564 |
+
elems = utils.makeArray( elems );
|
1565 |
+
var ffElems = [];
|
1566 |
+
|
1567 |
+
elems.forEach( function( elem ) {
|
1568 |
+
// check that elem is an actual element
|
1569 |
+
if ( !( elem instanceof HTMLElement ) ) {
|
1570 |
+
return;
|
1571 |
}
|
1572 |
+
// add elem if no selector
|
1573 |
+
if ( !selector ) {
|
1574 |
+
ffElems.push( elem );
|
1575 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1576 |
}
|
1577 |
+
// filter & find items if we have a selector
|
1578 |
+
// filter
|
1579 |
+
if ( matchesSelector( elem, selector ) ) {
|
1580 |
+
ffElems.push( elem );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1581 |
}
|
1582 |
+
// find children
|
1583 |
+
var childElems = elem.querySelectorAll( selector );
|
1584 |
+
// concat childElems to filterFound array
|
1585 |
+
for ( var i=0; i < childElems.length; i++ ) {
|
1586 |
+
ffElems.push( childElems[i] );
|
|
|
|
|
|
|
|
|
|
|
1587 |
}
|
1588 |
+
});
|
1589 |
|
1590 |
+
return ffElems;
|
1591 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1592 |
|
1593 |
+
// ----- debounceMethod ----- //
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1594 |
|
1595 |
+
utils.debounceMethod = function( _class, methodName, threshold ) {
|
1596 |
+
threshold = threshold || 100;
|
1597 |
+
// original method
|
1598 |
+
var method = _class.prototype[ methodName ];
|
1599 |
+
var timeoutName = methodName + 'Timeout';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1600 |
|
1601 |
+
_class.prototype[ methodName ] = function() {
|
1602 |
+
var timeout = this[ timeoutName ];
|
1603 |
+
clearTimeout( timeout );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1604 |
|
1605 |
+
var args = arguments;
|
1606 |
+
var _this = this;
|
1607 |
+
this[ timeoutName ] = setTimeout( function() {
|
1608 |
+
method.apply( _this, args );
|
1609 |
+
delete _this[ timeoutName ];
|
1610 |
+
}, threshold );
|
1611 |
+
};
|
1612 |
+
};
|
1613 |
+
|
1614 |
+
// ----- docReady ----- //
|
1615 |
+
|
1616 |
+
utils.docReady = function( callback ) {
|
1617 |
+
var readyState = document.readyState;
|
1618 |
+
if ( readyState == 'complete' || readyState == 'interactive' ) {
|
1619 |
+
// do async to allow for other scripts to run. metafizzy/flickity#441
|
1620 |
+
setTimeout( callback );
|
1621 |
+
} else {
|
1622 |
+
document.addEventListener( 'DOMContentLoaded', callback );
|
1623 |
+
}
|
1624 |
+
};
|
1625 |
+
|
1626 |
+
// ----- htmlInit ----- //
|
1627 |
+
|
1628 |
+
// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/
|
1629 |
+
utils.toDashed = function( str ) {
|
1630 |
+
return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {
|
1631 |
+
return $1 + '-' + $2;
|
1632 |
+
}).toLowerCase();
|
1633 |
+
};
|
1634 |
+
|
1635 |
+
var console = window.console;
|
1636 |
+
/**
|
1637 |
+
* allow user to initialize classes via [data-namespace] or .js-namespace class
|
1638 |
+
* htmlInit( Widget, 'widgetName' )
|
1639 |
+
* options are parsed from data-namespace-options
|
1640 |
+
*/
|
1641 |
+
utils.htmlInit = function( WidgetClass, namespace ) {
|
1642 |
+
utils.docReady( function() {
|
1643 |
+
var dashedNamespace = utils.toDashed( namespace );
|
1644 |
+
var dataAttr = 'data-' + dashedNamespace;
|
1645 |
+
var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );
|
1646 |
+
var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );
|
1647 |
+
var elems = utils.makeArray( dataAttrElems )
|
1648 |
+
.concat( utils.makeArray( jsDashElems ) );
|
1649 |
+
var dataOptionsAttr = dataAttr + '-options';
|
1650 |
+
var jQuery = window.jQuery;
|
1651 |
+
|
1652 |
+
elems.forEach( function( elem ) {
|
1653 |
+
var attr = elem.getAttribute( dataAttr ) ||
|
1654 |
+
elem.getAttribute( dataOptionsAttr );
|
1655 |
+
var options;
|
1656 |
+
try {
|
1657 |
+
options = attr && JSON.parse( attr );
|
1658 |
+
} catch ( error ) {
|
1659 |
+
// log error, do not initialize
|
1660 |
+
if ( console ) {
|
1661 |
+
console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +
|
1662 |
+
': ' + error );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1663 |
}
|
1664 |
+
return;
|
1665 |
+
}
|
1666 |
+
// initialize
|
1667 |
+
var instance = new WidgetClass( elem, options );
|
1668 |
+
// make available via $().data('namespace')
|
1669 |
+
if ( jQuery ) {
|
1670 |
+
jQuery.data( elem, namespace, instance );
|
1671 |
+
}
|
1672 |
+
});
|
1673 |
|
1674 |
+
});
|
1675 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1676 |
|
1677 |
+
// ----- ----- //
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1678 |
|
1679 |
+
return utils;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1680 |
|
1681 |
+
}));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1682 |
|
1683 |
+
/**
|
1684 |
+
* Outlayer Item
|
1685 |
+
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1686 |
|
1687 |
+
( function( window, factory ) {
|
1688 |
+
// universal module definition
|
1689 |
+
/* jshint strict: false */ /* globals define, module, require */
|
1690 |
+
if ( typeof define == 'function' && define.amd ) {
|
1691 |
+
// AMD - RequireJS
|
1692 |
+
define( 'outlayer/item',[
|
1693 |
+
'ev-emitter/ev-emitter',
|
1694 |
+
'get-size/get-size'
|
1695 |
+
],
|
1696 |
+
factory
|
1697 |
+
);
|
1698 |
+
} else if ( typeof module == 'object' && module.exports ) {
|
1699 |
+
// CommonJS - Browserify, Webpack
|
1700 |
+
module.exports = factory(
|
1701 |
+
require('ev-emitter'),
|
1702 |
+
require('get-size')
|
1703 |
+
);
|
1704 |
+
} else {
|
1705 |
+
// browser global
|
1706 |
+
window.Outlayer = {};
|
1707 |
+
window.Outlayer.Item = factory(
|
1708 |
+
window.EvEmitter,
|
1709 |
+
window.getSize
|
1710 |
+
);
|
1711 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1712 |
|
1713 |
+
}( window, function factory( EvEmitter, getSize ) {
|
1714 |
+
'use strict';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1715 |
|
1716 |
+
// ----- helpers ----- //
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1717 |
|
1718 |
+
function isEmptyObj( obj ) {
|
1719 |
+
for ( var prop in obj ) {
|
1720 |
+
return false;
|
1721 |
+
}
|
1722 |
+
prop = null;
|
1723 |
+
return true;
|
1724 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1725 |
|
1726 |
+
// -------------------------- CSS3 support -------------------------- //
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1727 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1728 |
|
1729 |
+
var docElemStyle = document.documentElement.style;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1730 |
|
1731 |
+
var transitionProperty = typeof docElemStyle.transition == 'string' ?
|
1732 |
+
'transition' : 'WebkitTransition';
|
1733 |
+
var transformProperty = typeof docElemStyle.transform == 'string' ?
|
1734 |
+
'transform' : 'WebkitTransform';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1735 |
|
1736 |
+
var transitionEndEvent = {
|
1737 |
+
WebkitTransition: 'webkitTransitionEnd',
|
1738 |
+
transition: 'transitionend'
|
1739 |
+
}[ transitionProperty ];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1740 |
|
1741 |
+
// cache all vendor properties that could have vendor prefix
|
1742 |
+
var vendorProperties = {
|
1743 |
+
transform: transformProperty,
|
1744 |
+
transition: transitionProperty,
|
1745 |
+
transitionDuration: transitionProperty + 'Duration',
|
1746 |
+
transitionProperty: transitionProperty + 'Property',
|
1747 |
+
transitionDelay: transitionProperty + 'Delay'
|
1748 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1749 |
|
1750 |
+
// -------------------------- Item -------------------------- //
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1751 |
|
1752 |
+
function Item( element, layout ) {
|
1753 |
+
if ( !element ) {
|
1754 |
+
return;
|
1755 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1756 |
|
1757 |
+
this.element = element;
|
1758 |
+
// parent layout class, i.e. Masonry, Isotope, or Packery
|
1759 |
+
this.layout = layout;
|
1760 |
+
this.position = {
|
1761 |
+
x: 0,
|
1762 |
+
y: 0
|
1763 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1764 |
|
1765 |
+
this._create();
|
1766 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1767 |
|
1768 |
+
// inherit EvEmitter
|
1769 |
+
var proto = Item.prototype = Object.create( EvEmitter.prototype );
|
1770 |
+
proto.constructor = Item;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1771 |
|
1772 |
+
proto._create = function() {
|
1773 |
+
// transition objects
|
1774 |
+
this._transn = {
|
1775 |
+
ingProperties: {},
|
1776 |
+
clean: {},
|
1777 |
+
onEnd: {}
|
1778 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1779 |
|
1780 |
+
this.css({
|
1781 |
+
position: 'absolute'
|
1782 |
+
});
|
1783 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1784 |
|
1785 |
+
// trigger specified handler for event type
|
1786 |
+
proto.handleEvent = function( event ) {
|
1787 |
+
var method = 'on' + event.type;
|
1788 |
+
if ( this[ method ] ) {
|
1789 |
+
this[ method ]( event );
|
1790 |
+
}
|
1791 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1792 |
|
1793 |
+
proto.getSize = function() {
|
1794 |
+
this.size = getSize( this.element );
|
1795 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1796 |
|
1797 |
+
/**
|
1798 |
+
* apply CSS styles to element
|
1799 |
+
* @param {Object} style
|
1800 |
+
*/
|
1801 |
+
proto.css = function( style ) {
|
1802 |
+
var elemStyle = this.element.style;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1803 |
|
1804 |
+
for ( var prop in style ) {
|
1805 |
+
// use vendor property if available
|
1806 |
+
var supportedProp = vendorProperties[ prop ] || prop;
|
1807 |
+
elemStyle[ supportedProp ] = style[ prop ];
|
1808 |
+
}
|
1809 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1810 |
|
1811 |
+
// measure position, and sets it
|
1812 |
+
proto.getPosition = function() {
|
1813 |
+
var style = getComputedStyle( this.element );
|
1814 |
+
var isOriginLeft = this.layout._getOption('originLeft');
|
1815 |
+
var isOriginTop = this.layout._getOption('originTop');
|
1816 |
+
var xValue = style[ isOriginLeft ? 'left' : 'right' ];
|
1817 |
+
var yValue = style[ isOriginTop ? 'top' : 'bottom' ];
|
1818 |
+
var x = parseFloat( xValue );
|
1819 |
+
var y = parseFloat( yValue );
|
1820 |
+
// convert percent to pixels
|
1821 |
+
var layoutSize = this.layout.size;
|
1822 |
+
if ( xValue.indexOf('%') != -1 ) {
|
1823 |
+
x = ( x / 100 ) * layoutSize.width;
|
1824 |
+
}
|
1825 |
+
if ( yValue.indexOf('%') != -1 ) {
|
1826 |
+
y = ( y / 100 ) * layoutSize.height;
|
1827 |
+
}
|
1828 |
+
// clean up 'auto' or other non-integer values
|
1829 |
+
x = isNaN( x ) ? 0 : x;
|
1830 |
+
y = isNaN( y ) ? 0 : y;
|
1831 |
+
// remove padding from measurement
|
1832 |
+
x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;
|
1833 |
+
y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1834 |
|
1835 |
+
this.position.x = x;
|
1836 |
+
this.position.y = y;
|
1837 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1838 |
|
1839 |
+
// set settled position, apply padding
|
1840 |
+
proto.layoutPosition = function() {
|
1841 |
+
var layoutSize = this.layout.size;
|
1842 |
+
var style = {};
|
1843 |
+
var isOriginLeft = this.layout._getOption('originLeft');
|
1844 |
+
var isOriginTop = this.layout._getOption('originTop');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1845 |
|
1846 |
+
// x
|
1847 |
+
var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';
|
1848 |
+
var xProperty = isOriginLeft ? 'left' : 'right';
|
1849 |
+
var xResetProperty = isOriginLeft ? 'right' : 'left';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1850 |
|
1851 |
+
var x = this.position.x + layoutSize[ xPadding ];
|
1852 |
+
// set in percentage or pixels
|
1853 |
+
style[ xProperty ] = this.getXValue( x );
|
1854 |
+
// reset other property
|
1855 |
+
style[ xResetProperty ] = '';
|
1856 |
+
|
1857 |
+
// y
|
1858 |
+
var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';
|
1859 |
+
var yProperty = isOriginTop ? 'top' : 'bottom';
|
1860 |
+
var yResetProperty = isOriginTop ? 'bottom' : 'top';
|
1861 |
+
|
1862 |
+
var y = this.position.y + layoutSize[ yPadding ];
|
1863 |
+
// set in percentage or pixels
|
1864 |
+
style[ yProperty ] = this.getYValue( y );
|
1865 |
+
// reset other property
|
1866 |
+
style[ yResetProperty ] = '';
|
1867 |
+
|
1868 |
+
this.css( style );
|
1869 |
+
this.emitEvent( 'layout', [ this ] );
|
1870 |
+
};
|
1871 |
+
|
1872 |
+
proto.getXValue = function( x ) {
|
1873 |
+
var isHorizontal = this.layout._getOption('horizontal');
|
1874 |
+
return this.layout.options.percentPosition && !isHorizontal ?
|
1875 |
+
( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';
|
1876 |
+
};
|
1877 |
+
|
1878 |
+
proto.getYValue = function( y ) {
|
1879 |
+
var isHorizontal = this.layout._getOption('horizontal');
|
1880 |
+
return this.layout.options.percentPosition && isHorizontal ?
|
1881 |
+
( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';
|
1882 |
+
};
|
1883 |
+
|
1884 |
+
proto._transitionTo = function( x, y ) {
|
1885 |
+
this.getPosition();
|
1886 |
+
// get current x & y from top/left
|
1887 |
+
var curX = this.position.x;
|
1888 |
+
var curY = this.position.y;
|
1889 |
+
|
1890 |
+
var didNotMove = x == this.position.x && y == this.position.y;
|
1891 |
+
|
1892 |
+
// save end position
|
1893 |
+
this.setPosition( x, y );
|
1894 |
+
|
1895 |
+
// if did not move and not transitioning, just go to layout
|
1896 |
+
if ( didNotMove && !this.isTransitioning ) {
|
1897 |
+
this.layoutPosition();
|
1898 |
+
return;
|
1899 |
+
}
|
1900 |
+
|
1901 |
+
var transX = x - curX;
|
1902 |
+
var transY = y - curY;
|
1903 |
+
var transitionStyle = {};
|
1904 |
+
transitionStyle.transform = this.getTranslate( transX, transY );
|
1905 |
+
|
1906 |
+
this.transition({
|
1907 |
+
to: transitionStyle,
|
1908 |
+
onTransitionEnd: {
|
1909 |
+
transform: this.layoutPosition
|
1910 |
+
},
|
1911 |
+
isCleaning: true
|
1912 |
+
});
|
1913 |
+
};
|
1914 |
+
|
1915 |
+
proto.getTranslate = function( x, y ) {
|
1916 |
+
// flip cooridinates if origin on right or bottom
|
1917 |
+
var isOriginLeft = this.layout._getOption('originLeft');
|
1918 |
+
var isOriginTop = this.layout._getOption('originTop');
|
1919 |
+
x = isOriginLeft ? x : -x;
|
1920 |
+
y = isOriginTop ? y : -y;
|
1921 |
+
return 'translate3d(' + x + 'px, ' + y + 'px, 0)';
|
1922 |
+
};
|
1923 |
+
|
1924 |
+
// non transition + transform support
|
1925 |
+
proto.goTo = function( x, y ) {
|
1926 |
+
this.setPosition( x, y );
|
1927 |
+
this.layoutPosition();
|
1928 |
+
};
|
1929 |
+
|
1930 |
+
proto.moveTo = proto._transitionTo;
|
1931 |
+
|
1932 |
+
proto.setPosition = function( x, y ) {
|
1933 |
+
this.position.x = parseFloat( x );
|
1934 |
+
this.position.y = parseFloat( y );
|
1935 |
+
};
|
1936 |
+
|
1937 |
+
// ----- transition ----- //
|
1938 |
+
|
1939 |
+
/**
|
1940 |
+
* @param {Object} style - CSS
|
1941 |
+
* @param {Function} onTransitionEnd
|
1942 |
+
*/
|
1943 |
+
|
1944 |
+
// non transition, just trigger callback
|
1945 |
+
proto._nonTransition = function( args ) {
|
1946 |
+
this.css( args.to );
|
1947 |
+
if ( args.isCleaning ) {
|
1948 |
+
this._removeStyles( args.to );
|
1949 |
+
}
|
1950 |
+
for ( var prop in args.onTransitionEnd ) {
|
1951 |
+
args.onTransitionEnd[ prop ].call( this );
|
1952 |
+
}
|
1953 |
+
};
|
1954 |
+
|
1955 |
+
/**
|
1956 |
+
* proper transition
|
1957 |
+
* @param {Object} args - arguments
|
1958 |
+
* @param {Object} to - style to transition to
|
1959 |
+
* @param {Object} from - style to start transition from
|
1960 |
+
* @param {Boolean} isCleaning - removes transition styles after transition
|
1961 |
+
* @param {Function} onTransitionEnd - callback
|
1962 |
+
*/
|
1963 |
+
proto.transition = function( args ) {
|
1964 |
+
// redirect to nonTransition if no transition duration
|
1965 |
+
if ( !parseFloat( this.layout.options.transitionDuration ) ) {
|
1966 |
+
this._nonTransition( args );
|
1967 |
+
return;
|
1968 |
+
}
|
1969 |
+
|
1970 |
+
var _transition = this._transn;
|
1971 |
+
// keep track of onTransitionEnd callback by css property
|
1972 |
+
for ( var prop in args.onTransitionEnd ) {
|
1973 |
+
_transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];
|
1974 |
+
}
|
1975 |
+
// keep track of properties that are transitioning
|
1976 |
+
for ( prop in args.to ) {
|
1977 |
+
_transition.ingProperties[ prop ] = true;
|
1978 |
+
// keep track of properties to clean up when transition is done
|
1979 |
+
if ( args.isCleaning ) {
|
1980 |
+
_transition.clean[ prop ] = true;
|
1981 |
}
|
1982 |
+
}
|
1983 |
|
1984 |
+
// set from styles
|
1985 |
+
if ( args.from ) {
|
1986 |
+
this.css( args.from );
|
1987 |
+
// force redraw. http://blog.alexmaccaw.com/css-transitions
|
1988 |
+
var h = this.element.offsetHeight;
|
1989 |
+
// hack for JSHint to hush about unused var
|
1990 |
+
h = null;
|
1991 |
+
}
|
1992 |
+
// enable transition
|
1993 |
+
this.enableTransition( args.to );
|
1994 |
+
// set styles that are transitioning
|
1995 |
+
this.css( args.to );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1996 |
|
1997 |
+
this.isTransitioning = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1998 |
|
1999 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000 |
|
2001 |
+
// dash before all cap letters, including first for
|
2002 |
+
// WebkitTransform => -webkit-transform
|
2003 |
+
function toDashedAll( str ) {
|
2004 |
+
return str.replace( /([A-Z])/g, function( $1 ) {
|
2005 |
+
return '-' + $1.toLowerCase();
|
2006 |
+
});
|
2007 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008 |
|
2009 |
+
var transitionProps = 'opacity,' + toDashedAll( transformProperty );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010 |
|
2011 |
+
proto.enableTransition = function(/* style */) {
|
2012 |
+
// HACK changing transitionProperty during a transition
|
2013 |
+
// will cause transition to jump
|
2014 |
+
if ( this.isTransitioning ) {
|
2015 |
+
return;
|
2016 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017 |
|
2018 |
// make `transition: foo, bar, baz` from style object
|
2019 |
// HACK un-comment this when enableTransition can work
|
25688 |
}
|
25689 |
});
|
25690 |
|
25691 |
+
/* a build task will add "return $;" here */
|
25692 |
+
return $;
|
25693 |
+
|
25694 |
+
}));
|
25695 |
+
|
25696 |
+
!function(t,s,e){"use strict";var i=function(t,s){var i=this;this.el=t,this.options={},Object.keys(r).forEach(function(t){i.options[t]=r[t]}),Object.keys(s).forEach(function(t){i.options[t]=s[t]}),this.isInput="input"===this.el.tagName.toLowerCase(),this.attr=this.options.attr,this.showCursor=!this.isInput&&this.options.showCursor,this.elContent=this.attr?this.el.getAttribute(this.attr):this.el.textContent,this.contentType=this.options.contentType,this.typeSpeed=this.options.typeSpeed,this.startDelay=this.options.startDelay,this.backSpeed=this.options.backSpeed,this.backDelay=this.options.backDelay,e&&this.options.stringsElement instanceof e?this.stringsElement=this.options.stringsElement[0]:this.stringsElement=this.options.stringsElement,this.strings=this.options.strings,this.strPos=0,this.arrayPos=0,this.stopNum=0,this.loop=this.options.loop,this.loopCount=this.options.loopCount,this.curLoop=0,this.stop=!1,this.cursorChar=this.options.cursorChar,this.shuffle=this.options.shuffle,this.sequence=[],this.build()};i.prototype={constructor:i,init:function(){var t=this;t.timeout=setTimeout(function(){for(var s=0;s<t.strings.length;++s)t.sequence[s]=s;t.shuffle&&(t.sequence=t.shuffleArray(t.sequence)),t.typewrite(t.strings[t.sequence[t.arrayPos]],t.strPos)},t.startDelay)},build:function(){var t=this;if(this.showCursor===!0&&(this.cursor=s.createElement("span"),this.cursor.className="typed-cursor",this.cursor.innerHTML=this.cursorChar,this.el.parentNode&&this.el.parentNode.insertBefore(this.cursor,this.el.nextSibling)),this.stringsElement){this.strings=[],this.stringsElement.style.display="none";var e=Array.prototype.slice.apply(this.stringsElement.children);e.forEach(function(s){t.strings.push(s.innerHTML)})}this.init()},typewrite:function(t,s){if(this.stop!==!0){var e=Math.round(70*Math.random())+this.typeSpeed,i=this;i.timeout=setTimeout(function(){var e=0,r=t.substr(s);if("^"===r.charAt(0)){var o=1;/^\^\d+/.test(r)&&(r=/\d+/.exec(r)[0],o+=r.length,e=parseInt(r)),t=t.substring(0,s)+t.substring(s+o)}if("html"===i.contentType){var n=t.substr(s).charAt(0);if("<"===n||"&"===n){var a="",h="";for(h="<"===n?">":";";t.substr(s+1).charAt(0)!==h&&(a+=t.substr(s).charAt(0),s++,!(s+1>t.length)););s++,a+=h}}i.timeout=setTimeout(function(){if(s===t.length){if(i.options.onStringTyped(i.arrayPos),i.arrayPos===i.strings.length-1&&(i.options.callback(),i.curLoop++,i.loop===!1||i.curLoop===i.loopCount))return;i.timeout=setTimeout(function(){i.backspace(t,s)},i.backDelay)}else{0===s&&i.options.preStringTyped(i.arrayPos);var e=t.substr(0,s+1);i.attr?i.el.setAttribute(i.attr,e):i.isInput?i.el.value=e:"html"===i.contentType?i.el.innerHTML=e:i.el.textContent=e,s++,i.typewrite(t,s)}},e)},e)}},backspace:function(t,s){if(this.stop!==!0){var e=Math.round(70*Math.random())+this.backSpeed,i=this;i.timeout=setTimeout(function(){if("html"===i.contentType&&">"===t.substr(s).charAt(0)){for(var e="";"<"!==t.substr(s-1).charAt(0)&&(e-=t.substr(s).charAt(0),s--,!(s<0)););s--,e+="<"}var r=t.substr(0,s);i.attr?i.el.setAttribute(i.attr,r):i.isInput?i.el.value=r:"html"===i.contentType?i.el.innerHTML=r:i.el.textContent=r,s>i.stopNum?(s--,i.backspace(t,s)):s<=i.stopNum&&(i.arrayPos++,i.arrayPos===i.strings.length?(i.arrayPos=0,i.shuffle&&(i.sequence=i.shuffleArray(i.sequence)),i.init()):i.typewrite(i.strings[i.sequence[i.arrayPos]],s))},e)}},shuffleArray:function(t){var s,e,i=t.length;if(i)for(;--i;)e=Math.floor(Math.random()*(i+1)),s=t[e],t[e]=t[i],t[i]=s;return t},reset:function(){var t=this;clearInterval(t.timeout);this.el.getAttribute("id");this.el.textContent="","undefined"!=typeof this.cursor&&"undefined"!=typeof this.cursor.parentNode&&this.cursor.parentNode.removeChild(this.cursor),this.strPos=0,this.arrayPos=0,this.curLoop=0,this.options.resetCallback()}},i["new"]=function(t,e){var r=Array.prototype.slice.apply(s.querySelectorAll(t));r.forEach(function(t){var s=t._typed,r="object"==typeof e&&e;s&&s.reset(),t._typed=s=new i(t,r),"string"==typeof e&&s[e]()})},e&&(e.fn.typed=function(t){return this.each(function(){var s=e(this),r=s.data("typed"),o="object"==typeof t&&t;r&&r.reset(),s.data("typed",r=new i(this,o)),"string"==typeof t&&r[t]()})}),t.Typed=i;var r={strings:["These are the default values...","You know what you should do?","Use your own!","Have a great day!"],stringsElement:null,typeSpeed:0,startDelay:0,backSpeed:0,shuffle:!1,backDelay:500,loop:!1,loopCount:!1,showCursor:!0,cursorChar:"|",attr:null,contentType:"html",callback:function(){},preStringTyped:function(){},onStringTyped:function(){},resetCallback:function(){}}}(window,document,window.jQuery);
|
25697 |
+
!function(a){"use strict";function b(b,c){this.element=a(b),this.settings=a.extend({},d,c),this._defaults=d,this._init()}var c="Morphext",d={animation:"bounceIn",separator:",",speed:2e3,complete:a.noop};b.prototype={_init:function(){var b=this;this.phrases=[],this.element.addClass("morphext"),a.each(this.element.text().split(this.settings.separator),function(c,d){b.phrases.push(a.trim(d))}),this.index=-1,this.animate(),this.start()},animate:function(){this.index=++this.index%this.phrases.length,this.element[0].innerHTML='<span class="animated '+this.settings.animation+'">'+this.phrases[this.index]+"</span>",a.isFunction(this.settings.complete)&&this.settings.complete.call(this)},start:function(){var a=this;this._interval=setInterval(function(){a.animate()},this.settings.speed)},stop:function(){this._interval=clearInterval(this._interval)}},a.fn[c]=function(d){return this.each(function(){a.data(this,"plugin_"+c)||a.data(this,"plugin_"+c,new b(this,d))})}}(jQuery);
|
25698 |
+
|
25699 |
+
/*!
|
25700 |
+
* Morphext - Text Rotating Plugin for jQuery
|
25701 |
+
* https://github.com/MrSaints/Morphext
|
25702 |
+
*
|
25703 |
+
* Built on jQuery Boilerplate
|
25704 |
+
* http://jqueryboilerplate.com/
|
25705 |
+
*
|
25706 |
+
* Copyright 2014 Ian Lai and other contributors
|
25707 |
+
* Released under the MIT license
|
25708 |
+
* http://ian.mit-license.org/
|
25709 |
+
*/
|
25710 |
+
|
25711 |
+
/*eslint-env browser */
|
25712 |
+
/*global jQuery:false */
|
25713 |
+
/*eslint-disable no-underscore-dangle */
|
25714 |
+
|
25715 |
+
(function ($) {
|
25716 |
+
"use strict";
|
25717 |
+
|
25718 |
+
var pluginName = "Morphext",
|
25719 |
+
defaults = {
|
25720 |
+
animation: "bounceIn",
|
25721 |
+
separator: ",",
|
25722 |
+
speed: 2000,
|
25723 |
+
complete: $.noop
|
25724 |
+
};
|
25725 |
+
|
25726 |
+
function Plugin (element, options) {
|
25727 |
+
this.element = $(element);
|
25728 |
+
|
25729 |
+
this.settings = $.extend({}, defaults, options);
|
25730 |
+
this._defaults = defaults;
|
25731 |
+
this._init();
|
25732 |
+
}
|
25733 |
+
|
25734 |
+
Plugin.prototype = {
|
25735 |
+
_init: function () {
|
25736 |
+
var $that = this;
|
25737 |
+
this.phrases = [];
|
25738 |
+
|
25739 |
+
this.element.addClass("morphext");
|
25740 |
+
|
25741 |
+
$.each(this.element.text().split(this.settings.separator), function (key, value) {
|
25742 |
+
$that.phrases.push($.trim(value));
|
25743 |
+
});
|
25744 |
+
|
25745 |
+
this.index = -1;
|
25746 |
+
this.animate();
|
25747 |
+
this.start();
|
25748 |
+
},
|
25749 |
+
animate: function () {
|
25750 |
+
this.index = ++this.index % this.phrases.length;
|
25751 |
+
this.element[0].innerHTML = "<span class=\"animated " + this.settings.animation + "\">" + this.phrases[this.index] + "</span>";
|
25752 |
+
|
25753 |
+
if ($.isFunction(this.settings.complete)) {
|
25754 |
+
this.settings.complete.call(this);
|
25755 |
+
}
|
25756 |
+
},
|
25757 |
+
start: function () {
|
25758 |
+
var $that = this;
|
25759 |
+
this._interval = setInterval(function () {
|
25760 |
+
$that.animate();
|
25761 |
+
}, this.settings.speed);
|
25762 |
+
},
|
25763 |
+
stop: function () {
|
25764 |
+
this._interval = clearInterval(this._interval);
|
25765 |
+
}
|
25766 |
+
};
|
25767 |
+
|
25768 |
+
$.fn[pluginName] = function (options) {
|
25769 |
+
return this.each(function() {
|
25770 |
+
if (!$.data(this, "plugin_" + pluginName)) {
|
25771 |
+
$.data(this, "plugin_" + pluginName, new Plugin(this, options));
|
25772 |
+
}
|
25773 |
+
});
|
25774 |
+
};
|
25775 |
+
})(jQuery);
|
25776 |
+
|
25777 |
+
/*!
|
25778 |
+
*
|
25779 |
+
* typed.js - A JavaScript Typing Animation Library
|
25780 |
+
* Author: Matt Boldt <me@mattboldt.com>
|
25781 |
+
* Version: v2.0.9
|
25782 |
+
* Url: https://github.com/mattboldt/typed.js
|
25783 |
+
* License(s): MIT
|
25784 |
+
*
|
25785 |
+
*/
|
25786 |
+
(function webpackUniversalModuleDefinition(root, factory) {
|
25787 |
+
if(typeof exports === 'object' && typeof module === 'object')
|
25788 |
+
module.exports = factory();
|
25789 |
+
else if(typeof define === 'function' && define.amd)
|
25790 |
+
define([], factory);
|
25791 |
+
else if(typeof exports === 'object')
|
25792 |
+
exports["Typed"] = factory();
|
25793 |
+
else
|
25794 |
+
root["Typed"] = factory();
|
25795 |
+
})(this, function() {
|
25796 |
+
return /******/ (function(modules) { // webpackBootstrap
|
25797 |
+
/******/ // The module cache
|
25798 |
+
/******/ var installedModules = {};
|
25799 |
+
/******/
|
25800 |
+
/******/ // The require function
|
25801 |
+
/******/ function __webpack_require__(moduleId) {
|
25802 |
+
/******/
|
25803 |
+
/******/ // Check if module is in cache
|
25804 |
+
/******/ if(installedModules[moduleId])
|
25805 |
+
/******/ return installedModules[moduleId].exports;
|
25806 |
+
/******/
|
25807 |
+
/******/ // Create a new module (and put it into the cache)
|
25808 |
+
/******/ var module = installedModules[moduleId] = {
|
25809 |
+
/******/ exports: {},
|
25810 |
+
/******/ id: moduleId,
|
25811 |
+
/******/ loaded: false
|
25812 |
+
/******/ };
|
25813 |
+
/******/
|
25814 |
+
/******/ // Execute the module function
|
25815 |
+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
25816 |
+
/******/
|
25817 |
+
/******/ // Flag the module as loaded
|
25818 |
+
/******/ module.loaded = true;
|
25819 |
+
/******/
|
25820 |
+
/******/ // Return the exports of the module
|
25821 |
+
/******/ return module.exports;
|
25822 |
+
/******/ }
|
25823 |
+
/******/
|
25824 |
+
/******/
|
25825 |
+
/******/ // expose the modules object (__webpack_modules__)
|
25826 |
+
/******/ __webpack_require__.m = modules;
|
25827 |
+
/******/
|
25828 |
+
/******/ // expose the module cache
|
25829 |
+
/******/ __webpack_require__.c = installedModules;
|
25830 |
+
/******/
|
25831 |
+
/******/ // __webpack_public_path__
|
25832 |
+
/******/ __webpack_require__.p = "";
|
25833 |
+
/******/
|
25834 |
+
/******/ // Load entry module and return exports
|
25835 |
+
/******/ return __webpack_require__(0);
|
25836 |
+
/******/ })
|
25837 |
+
/************************************************************************/
|
25838 |
+
/******/ ([
|
25839 |
+
/* 0 */
|
25840 |
+
/***/ (function(module, exports, __webpack_require__) {
|
25841 |
+
|
25842 |
+
'use strict';
|
25843 |
+
|
25844 |
+
Object.defineProperty(exports, '__esModule', {
|
25845 |
+
value: true
|
25846 |
+
});
|
25847 |
+
|
25848 |
+
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
25849 |
+
|
25850 |
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
25851 |
+
|
25852 |
+
var _initializerJs = __webpack_require__(1);
|
25853 |
+
|
25854 |
+
var _htmlParserJs = __webpack_require__(3);
|
25855 |
+
|
25856 |
+
/**
|
25857 |
+
* Welcome to Typed.js!
|
25858 |
+
* @param {string} elementId HTML element ID _OR_ HTML element
|
25859 |
+
* @param {object} options options object
|
25860 |
+
* @returns {object} a new Typed object
|
25861 |
+
*/
|
25862 |
+
|
25863 |
+
var Typed = (function () {
|
25864 |
+
function Typed(elementId, options) {
|
25865 |
+
_classCallCheck(this, Typed);
|
25866 |
+
|
25867 |
+
// Initialize it up
|
25868 |
+
_initializerJs.initializer.load(this, options, elementId);
|
25869 |
+
// All systems go!
|
25870 |
+
this.begin();
|
25871 |
+
}
|
25872 |
+
|
25873 |
+
/**
|
25874 |
+
* Toggle start() and stop() of the Typed instance
|
25875 |
+
* @public
|
25876 |
+
*/
|
25877 |
+
|
25878 |
+
_createClass(Typed, [{
|
25879 |
+
key: 'toggle',
|
25880 |
+
value: function toggle() {
|
25881 |
+
this.pause.status ? this.start() : this.stop();
|
25882 |
+
}
|
25883 |
+
|
25884 |
+
/**
|
25885 |
+
* Stop typing / backspacing and enable cursor blinking
|
25886 |
+
* @public
|
25887 |
+
*/
|
25888 |
+
}, {
|
25889 |
+
key: 'stop',
|
25890 |
+
value: function stop() {
|
25891 |
+
if (this.typingComplete) return;
|
25892 |
+
if (this.pause.status) return;
|
25893 |
+
this.toggleBlinking(true);
|
25894 |
+
this.pause.status = true;
|
25895 |
+
this.options.onStop(this.arrayPos, this);
|
25896 |
+
}
|
25897 |
+
|
25898 |
+
/**
|
25899 |
+
* Start typing / backspacing after being stopped
|
25900 |
+
* @public
|
25901 |
+
*/
|
25902 |
+
}, {
|
25903 |
+
key: 'start',
|
25904 |
+
value: function start() {
|
25905 |
+
if (this.typingComplete) return;
|
25906 |
+
if (!this.pause.status) return;
|
25907 |
+
this.pause.status = false;
|
25908 |
+
if (this.pause.typewrite) {
|
25909 |
+
this.typewrite(this.pause.curString, this.pause.curStrPos);
|
25910 |
+
} else {
|
25911 |
+
this.backspace(this.pause.curString, this.pause.curStrPos);
|
25912 |
+
}
|
25913 |
+
this.options.onStart(this.arrayPos, this);
|
25914 |
+
}
|
25915 |
+
|
25916 |
+
/**
|
25917 |
+
* Destroy this instance of Typed
|
25918 |
+
* @public
|
25919 |
+
*/
|
25920 |
+
}, {
|
25921 |
+
key: 'destroy',
|
25922 |
+
value: function destroy() {
|
25923 |
+
this.reset(false);
|
25924 |
+
this.options.onDestroy(this);
|
25925 |
+
}
|
25926 |
+
|
25927 |
+
/**
|
25928 |
+
* Reset Typed and optionally restarts
|
25929 |
+
* @param {boolean} restart
|
25930 |
+
* @public
|
25931 |
+
*/
|
25932 |
+
}, {
|
25933 |
+
key: 'reset',
|
25934 |
+
value: function reset() {
|
25935 |
+
var restart = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];
|
25936 |
+
|
25937 |
+
clearInterval(this.timeout);
|
25938 |
+
this.replaceText('');
|
25939 |
+
if (this.cursor && this.cursor.parentNode) {
|
25940 |
+
this.cursor.parentNode.removeChild(this.cursor);
|
25941 |
+
this.cursor = null;
|
25942 |
+
}
|
25943 |
+
this.strPos = 0;
|
25944 |
+
this.arrayPos = 0;
|
25945 |
+
this.curLoop = 0;
|
25946 |
+
if (restart) {
|
25947 |
+
this.insertCursor();
|
25948 |
+
this.options.onReset(this);
|
25949 |
+
this.begin();
|
25950 |
+
}
|
25951 |
+
}
|
25952 |
+
|
25953 |
+
/**
|
25954 |
+
* Begins the typing animation
|
25955 |
+
* @private
|
25956 |
+
*/
|
25957 |
+
}, {
|
25958 |
+
key: 'begin',
|
25959 |
+
value: function begin() {
|
25960 |
+
var _this = this;
|
25961 |
+
|
25962 |
+
this.typingComplete = false;
|
25963 |
+
this.shuffleStringsIfNeeded(this);
|
25964 |
+
this.insertCursor();
|
25965 |
+
if (this.bindInputFocusEvents) this.bindFocusEvents();
|
25966 |
+
this.timeout = setTimeout(function () {
|
25967 |
+
// Check if there is some text in the element, if yes start by backspacing the default message
|
25968 |
+
if (!_this.currentElContent || _this.currentElContent.length === 0) {
|
25969 |
+
_this.typewrite(_this.strings[_this.sequence[_this.arrayPos]], _this.strPos);
|
25970 |
+
} else {
|
25971 |
+
// Start typing
|
25972 |
+
_this.backspace(_this.currentElContent, _this.currentElContent.length);
|
25973 |
+
}
|
25974 |
+
}, this.startDelay);
|
25975 |
+
}
|
25976 |
+
|
25977 |
+
/**
|
25978 |
+
* Called for each character typed
|
25979 |
+
* @param {string} curString the current string in the strings array
|
25980 |
+
* @param {number} curStrPos the current position in the curString
|
25981 |
+
* @private
|
25982 |
+
*/
|
25983 |
+
}, {
|
25984 |
+
key: 'typewrite',
|
25985 |
+
value: function typewrite(curString, curStrPos) {
|
25986 |
+
var _this2 = this;
|
25987 |
+
|
25988 |
+
if (this.fadeOut && this.el.classList.contains(this.fadeOutClass)) {
|
25989 |
+
this.el.classList.remove(this.fadeOutClass);
|
25990 |
+
if (this.cursor) this.cursor.classList.remove(this.fadeOutClass);
|
25991 |
+
}
|
25992 |
+
|
25993 |
+
var humanize = this.humanizer(this.typeSpeed);
|
25994 |
+
var numChars = 1;
|
25995 |
+
|
25996 |
+
if (this.pause.status === true) {
|
25997 |
+
this.setPauseStatus(curString, curStrPos, true);
|
25998 |
+
return;
|
25999 |
+
}
|
26000 |
+
|
26001 |
+
// contain typing function in a timeout humanize'd delay
|
26002 |
+
this.timeout = setTimeout(function () {
|
26003 |
+
// skip over any HTML chars
|
26004 |
+
curStrPos = _htmlParserJs.htmlParser.typeHtmlChars(curString, curStrPos, _this2);
|
26005 |
+
|
26006 |
+
var pauseTime = 0;
|
26007 |
+
var substr = curString.substr(curStrPos);
|
26008 |
+
// check for an escape character before a pause value
|
26009 |
+
// format: \^\d+ .. eg: ^1000 .. should be able to print the ^ too using ^^
|
26010 |
+
// single ^ are removed from string
|
26011 |
+
if (substr.charAt(0) === '^') {
|
26012 |
+
if (/^\^\d+/.test(substr)) {
|
26013 |
+
var skip = 1; // skip at least 1
|
26014 |
+
substr = /\d+/.exec(substr)[0];
|
26015 |
+
skip += substr.length;
|
26016 |
+
pauseTime = parseInt(substr);
|
26017 |
+
_this2.temporaryPause = true;
|
26018 |
+
_this2.options.onTypingPaused(_this2.arrayPos, _this2);
|
26019 |
+
// strip out the escape character and pause value so they're not printed
|
26020 |
+
curString = curString.substring(0, curStrPos) + curString.substring(curStrPos + skip);
|
26021 |
+
_this2.toggleBlinking(true);
|
26022 |
+
}
|
26023 |
+
}
|
26024 |
+
|
26025 |
+
// check for skip characters formatted as
|
26026 |
+
// "this is a `string to print NOW` ..."
|
26027 |
+
if (substr.charAt(0) === '`') {
|
26028 |
+
while (curString.substr(curStrPos + numChars).charAt(0) !== '`') {
|
26029 |
+
numChars++;
|
26030 |
+
if (curStrPos + numChars > curString.length) break;
|
26031 |
+
}
|
26032 |
+
// strip out the escape characters and append all the string in between
|
26033 |
+
var stringBeforeSkip = curString.substring(0, curStrPos);
|
26034 |
+
var stringSkipped = curString.substring(stringBeforeSkip.length + 1, curStrPos + numChars);
|
26035 |
+
var stringAfterSkip = curString.substring(curStrPos + numChars + 1);
|
26036 |
+
curString = stringBeforeSkip + stringSkipped + stringAfterSkip;
|
26037 |
+
numChars--;
|
26038 |
+
}
|
26039 |
+
|
26040 |
+
// timeout for any pause after a character
|
26041 |
+
_this2.timeout = setTimeout(function () {
|
26042 |
+
// Accounts for blinking while paused
|
26043 |
+
_this2.toggleBlinking(false);
|
26044 |
+
|
26045 |
+
// We're done with this sentence!
|
26046 |
+
if (curStrPos >= curString.length) {
|
26047 |
+
_this2.doneTyping(curString, curStrPos);
|
26048 |
+
} else {
|
26049 |
+
_this2.keepTyping(curString, curStrPos, numChars);
|
26050 |
+
}
|
26051 |
+
// end of character pause
|
26052 |
+
if (_this2.temporaryPause) {
|
26053 |
+
_this2.temporaryPause = false;
|
26054 |
+
_this2.options.onTypingResumed(_this2.arrayPos, _this2);
|
26055 |
+
}
|
26056 |
+
}, pauseTime);
|
26057 |
+
|
26058 |
+
// humanized value for typing
|
26059 |
+
}, humanize);
|
26060 |
+
}
|
26061 |
+
|
26062 |
+
/**
|
26063 |
+
* Continue to the next string & begin typing
|
26064 |
+
* @param {string} curString the current string in the strings array
|
26065 |
+
* @param {number} curStrPos the current position in the curString
|
26066 |
+
* @private
|
26067 |
+
*/
|
26068 |
+
}, {
|
26069 |
+
key: 'keepTyping',
|
26070 |
+
value: function keepTyping(curString, curStrPos, numChars) {
|
26071 |
+
// call before functions if applicable
|
26072 |
+
if (curStrPos === 0) {
|
26073 |
+
this.toggleBlinking(false);
|
26074 |
+
this.options.preStringTyped(this.arrayPos, this);
|
26075 |
+
}
|
26076 |
+
// start typing each new char into existing string
|
26077 |
+
// curString: arg, this.el.html: original text inside element
|
26078 |
+
curStrPos += numChars;
|
26079 |
+
var nextString = curString.substr(0, curStrPos);
|
26080 |
+
this.replaceText(nextString);
|
26081 |
+
// loop the function
|
26082 |
+
this.typewrite(curString, curStrPos);
|
26083 |
+
}
|
26084 |
+
|
26085 |
+
/**
|
26086 |
+
* We're done typing all strings
|
26087 |
+
* @param {string} curString the current string in the strings array
|
26088 |
+
* @param {number} curStrPos the current position in the curString
|
26089 |
+
* @private
|
26090 |
+
*/
|
26091 |
+
}, {
|
26092 |
+
key: 'doneTyping',
|
26093 |
+
value: function doneTyping(curString, curStrPos) {
|
26094 |
+
var _this3 = this;
|
26095 |
+
|
26096 |
+
// fires callback function
|
26097 |
+
this.options.onStringTyped(this.arrayPos, this);
|
26098 |
+
this.toggleBlinking(true);
|
26099 |
+
// is this the final string
|
26100 |
+
if (this.arrayPos === this.strings.length - 1) {
|
26101 |
+
// callback that occurs on the last typed string
|
26102 |
+
this.complete();
|
26103 |
+
// quit if we wont loop back
|
26104 |
+
if (this.loop === false || this.curLoop === this.loopCount) {
|
26105 |
+
return;
|
26106 |
+
}
|
26107 |
+
}
|
26108 |
+
this.timeout = setTimeout(function () {
|
26109 |
+
_this3.backspace(curString, curStrPos);
|
26110 |
+
}, this.backDelay);
|
26111 |
+
}
|
26112 |
+
|
26113 |
+
/**
|
26114 |
+
* Backspaces 1 character at a time
|
26115 |
+
* @param {string} curString the current string in the strings array
|
26116 |
+
* @param {number} curStrPos the current position in the curString
|
26117 |
+
* @private
|
26118 |
+
*/
|
26119 |
+
}, {
|
26120 |
+
key: 'backspace',
|
26121 |
+
value: function backspace(curString, curStrPos) {
|
26122 |
+
var _this4 = this;
|
26123 |
+
|
26124 |
+
if (this.pause.status === true) {
|
26125 |
+
this.setPauseStatus(curString, curStrPos, true);
|
26126 |
+
return;
|
26127 |
+
}
|
26128 |
+
if (this.fadeOut) return this.initFadeOut();
|
26129 |
+
|
26130 |
+
this.toggleBlinking(false);
|
26131 |
+
var humanize = this.humanizer(this.backSpeed);
|
26132 |
+
|
26133 |
+
this.timeout = setTimeout(function () {
|
26134 |
+
curStrPos = _htmlParserJs.htmlParser.backSpaceHtmlChars(curString, curStrPos, _this4);
|
26135 |
+
// replace text with base text + typed characters
|
26136 |
+
var curStringAtPosition = curString.substr(0, curStrPos);
|
26137 |
+
_this4.replaceText(curStringAtPosition);
|
26138 |
+
|
26139 |
+
// if smartBack is enabled
|
26140 |
+
if (_this4.smartBackspace) {
|
26141 |
+
// the remaining part of the current string is equal of the same part of the new string
|
26142 |
+
var nextString = _this4.strings[_this4.arrayPos + 1];
|
26143 |
+
if (nextString && curStringAtPosition === nextString.substr(0, curStrPos)) {
|
26144 |
+
_this4.stopNum = curStrPos;
|
26145 |
+
} else {
|
26146 |
+
_this4.stopNum = 0;
|
26147 |
+
}
|
26148 |
+
}
|
26149 |
+
|
26150 |
+
// if the number (id of character in current string) is
|
26151 |
+
// less than the stop number, keep going
|
26152 |
+
if (curStrPos > _this4.stopNum) {
|
26153 |
+
// subtract characters one by one
|
26154 |
+
curStrPos--;
|
26155 |
+
// loop the function
|
26156 |
+
_this4.backspace(curString, curStrPos);
|
26157 |
+
} else if (curStrPos <= _this4.stopNum) {
|
26158 |
+
// if the stop number has been reached, increase
|
26159 |
+
// array position to next string
|
26160 |
+
_this4.arrayPos++;
|
26161 |
+
// When looping, begin at the beginning after backspace complete
|
26162 |
+
if (_this4.arrayPos === _this4.strings.length) {
|
26163 |
+
_this4.arrayPos = 0;
|
26164 |
+
_this4.options.onLastStringBackspaced();
|
26165 |
+
_this4.shuffleStringsIfNeeded();
|
26166 |
+
_this4.begin();
|
26167 |
+
} else {
|
26168 |
+
_this4.typewrite(_this4.strings[_this4.sequence[_this4.arrayPos]], curStrPos);
|
26169 |
+
}
|
26170 |
+
}
|
26171 |
+
// humanized value for typing
|
26172 |
+
}, humanize);
|
26173 |
+
}
|
26174 |
+
|
26175 |
+
/**
|
26176 |
+
* Full animation is complete
|
26177 |
+
* @private
|
26178 |
+
*/
|
26179 |
+
}, {
|
26180 |
+
key: 'complete',
|
26181 |
+
value: function complete() {
|
26182 |
+
this.options.onComplete(this);
|
26183 |
+
if (this.loop) {
|
26184 |
+
this.curLoop++;
|
26185 |
+
} else {
|
26186 |
+
this.typingComplete = true;
|
26187 |
+
}
|
26188 |
+
}
|
26189 |
+
|
26190 |
+
/**
|
26191 |
+
* Has the typing been stopped
|
26192 |
+
* @param {string} curString the current string in the strings array
|
26193 |
+
* @param {number} curStrPos the current position in the curString
|
26194 |
+
* @param {boolean} isTyping
|
26195 |
+
* @private
|
26196 |
+
*/
|
26197 |
+
}, {
|
26198 |
+
key: 'setPauseStatus',
|
26199 |
+
value: function setPauseStatus(curString, curStrPos, isTyping) {
|
26200 |
+
this.pause.typewrite = isTyping;
|
26201 |
+
this.pause.curString = curString;
|
26202 |
+
this.pause.curStrPos = curStrPos;
|
26203 |
+
}
|
26204 |
+
|
26205 |
+
/**
|
26206 |
+
* Toggle the blinking cursor
|
26207 |
+
* @param {boolean} isBlinking
|
26208 |
+
* @private
|
26209 |
+
*/
|
26210 |
+
}, {
|
26211 |
+
key: 'toggleBlinking',
|
26212 |
+
value: function toggleBlinking(isBlinking) {
|
26213 |
+
if (!this.cursor) return;
|
26214 |
+
// if in paused state, don't toggle blinking a 2nd time
|
26215 |
+
if (this.pause.status) return;
|
26216 |
+
if (this.cursorBlinking === isBlinking) return;
|
26217 |
+
this.cursorBlinking = isBlinking;
|
26218 |
+
if (isBlinking) {
|
26219 |
+
this.cursor.classList.add('typed-cursor--blink');
|
26220 |
+
} else {
|
26221 |
+
this.cursor.classList.remove('typed-cursor--blink');
|
26222 |
+
}
|
26223 |
+
}
|
26224 |
+
|
26225 |
+
/**
|
26226 |
+
* Speed in MS to type
|
26227 |
+
* @param {number} speed
|
26228 |
+
* @private
|
26229 |
+
*/
|
26230 |
+
}, {
|
26231 |
+
key: 'humanizer',
|
26232 |
+
value: function humanizer(speed) {
|
26233 |
+
return Math.round(Math.random() * speed / 2) + speed;
|
26234 |
+
}
|
26235 |
+
|
26236 |
+
/**
|
26237 |
+
* Shuffle the sequence of the strings array
|
26238 |
+
* @private
|
26239 |
+
*/
|
26240 |
+
}, {
|
26241 |
+
key: 'shuffleStringsIfNeeded',
|
26242 |
+
value: function shuffleStringsIfNeeded() {
|
26243 |
+
if (!this.shuffle) return;
|
26244 |
+
this.sequence = this.sequence.sort(function () {
|
26245 |
+
return Math.random() - 0.5;
|
26246 |
+
});
|
26247 |
+
}
|
26248 |
+
|
26249 |
+
/**
|
26250 |
+
* Adds a CSS class to fade out current string
|
26251 |
+
* @private
|
26252 |
+
*/
|
26253 |
+
}, {
|
26254 |
+
key: 'initFadeOut',
|
26255 |
+
value: function initFadeOut() {
|
26256 |
+
var _this5 = this;
|
26257 |
+
|
26258 |
+
this.el.className += ' ' + this.fadeOutClass;
|
26259 |
+
if (this.cursor) this.cursor.className += ' ' + this.fadeOutClass;
|
26260 |
+
return setTimeout(function () {
|
26261 |
+
_this5.arrayPos++;
|
26262 |
+
_this5.replaceText('');
|
26263 |
+
|
26264 |
+
// Resets current string if end of loop reached
|
26265 |
+
if (_this5.strings.length > _this5.arrayPos) {
|
26266 |
+
_this5.typewrite(_this5.strings[_this5.sequence[_this5.arrayPos]], 0);
|
26267 |
+
} else {
|
26268 |
+
_this5.typewrite(_this5.strings[0], 0);
|
26269 |
+
_this5.arrayPos = 0;
|
26270 |
+
}
|
26271 |
+
}, this.fadeOutDelay);
|
26272 |
+
}
|
26273 |
+
|
26274 |
+
/**
|
26275 |
+
* Replaces current text in the HTML element
|
26276 |
+
* depending on element type
|
26277 |
+
* @param {string} str
|
26278 |
+
* @private
|
26279 |
+
*/
|
26280 |
+
}, {
|
26281 |
+
key: 'replaceText',
|
26282 |
+
value: function replaceText(str) {
|
26283 |
+
if (this.attr) {
|
26284 |
+
this.el.setAttribute(this.attr, str);
|
26285 |
+
} else {
|
26286 |
+
if (this.isInput) {
|
26287 |
+
this.el.value = str;
|
26288 |
+
} else if (this.contentType === 'html') {
|
26289 |
+
this.el.innerHTML = str;
|
26290 |
+
} else {
|
26291 |
+
this.el.textContent = str;
|
26292 |
+
}
|
26293 |
+
}
|
26294 |
+
}
|
26295 |
+
|
26296 |
+
/**
|
26297 |
+
* If using input elements, bind focus in order to
|
26298 |
+
* start and stop the animation
|
26299 |
+
* @private
|
26300 |
+
*/
|
26301 |
+
}, {
|
26302 |
+
key: 'bindFocusEvents',
|
26303 |
+
value: function bindFocusEvents() {
|
26304 |
+
var _this6 = this;
|
26305 |
+
|
26306 |
+
if (!this.isInput) return;
|
26307 |
+
this.el.addEventListener('focus', function (e) {
|
26308 |
+
_this6.stop();
|
26309 |
+
});
|
26310 |
+
this.el.addEventListener('blur', function (e) {
|
26311 |
+
if (_this6.el.value && _this6.el.value.length !== 0) {
|
26312 |
+
return;
|
26313 |
+
}
|
26314 |
+
_this6.start();
|
26315 |
+
});
|
26316 |
+
}
|
26317 |
+
|
26318 |
+
/**
|
26319 |
+
* On init, insert the cursor element
|
26320 |
+
* @private
|
26321 |
+
*/
|
26322 |
+
}, {
|
26323 |
+
key: 'insertCursor',
|
26324 |
+
value: function insertCursor() {
|
26325 |
+
if (!this.showCursor) return;
|
26326 |
+
if (this.cursor) return;
|
26327 |
+
this.cursor = document.createElement('span');
|
26328 |
+
this.cursor.className = 'typed-cursor';
|
26329 |
+
this.cursor.innerHTML = this.cursorChar;
|
26330 |
+
this.el.parentNode && this.el.parentNode.insertBefore(this.cursor, this.el.nextSibling);
|
26331 |
+
}
|
26332 |
+
}]);
|
26333 |
+
|
26334 |
+
return Typed;
|
26335 |
+
})();
|
26336 |
+
|
26337 |
+
exports['default'] = Typed;
|
26338 |
+
module.exports = exports['default'];
|
26339 |
+
|
26340 |
+
/***/ }),
|
26341 |
+
/* 1 */
|
26342 |
+
/***/ (function(module, exports, __webpack_require__) {
|
26343 |
+
|
26344 |
+
'use strict';
|
26345 |
+
|
26346 |
+
Object.defineProperty(exports, '__esModule', {
|
26347 |
+
value: true
|
26348 |
+
});
|
26349 |
+
|
26350 |
+
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
26351 |
+
|
26352 |
+
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
26353 |
+
|
26354 |
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
26355 |
+
|
26356 |
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
26357 |
+
|
26358 |
+
var _defaultsJs = __webpack_require__(2);
|
26359 |
+
|
26360 |
+
var _defaultsJs2 = _interopRequireDefault(_defaultsJs);
|
26361 |
+
|
26362 |
+
/**
|
26363 |
+
* Initialize the Typed object
|
26364 |
+
*/
|
26365 |
+
|
26366 |
+
var Initializer = (function () {
|
26367 |
+
function Initializer() {
|
26368 |
+
_classCallCheck(this, Initializer);
|
26369 |
+
}
|
26370 |
+
|
26371 |
+
_createClass(Initializer, [{
|
26372 |
+
key: 'load',
|
26373 |
+
|
26374 |
+
/**
|
26375 |
+
* Load up defaults & options on the Typed instance
|
26376 |
+
* @param {Typed} self instance of Typed
|
26377 |
+
* @param {object} options options object
|
26378 |
+
* @param {string} elementId HTML element ID _OR_ instance of HTML element
|
26379 |
+
* @private
|
26380 |
+
*/
|
26381 |
+
|
26382 |
+
value: function load(self, options, elementId) {
|
26383 |
+
// chosen element to manipulate text
|
26384 |
+
if (typeof elementId === 'string') {
|
26385 |
+
self.el = document.querySelector(elementId);
|
26386 |
+
} else {
|
26387 |
+
self.el = elementId;
|
26388 |
+
}
|
26389 |
+
|
26390 |
+
self.options = _extends({}, _defaultsJs2['default'], options);
|
26391 |
+
|
26392 |
+
// attribute to type into
|
26393 |
+
self.isInput = self.el.tagName.toLowerCase() === 'input';
|
26394 |
+
self.attr = self.options.attr;
|
26395 |
+
self.bindInputFocusEvents = self.options.bindInputFocusEvents;
|
26396 |
+
|
26397 |
+
// show cursor
|
26398 |
+
self.showCursor = self.isInput ? false : self.options.showCursor;
|
26399 |
+
|
26400 |
+
// custom cursor
|
26401 |
+
self.cursorChar = self.options.cursorChar;
|
26402 |
+
|
26403 |
+
// Is the cursor blinking
|
26404 |
+
self.cursorBlinking = true;
|
26405 |
+
|
26406 |
+
// text content of element
|
26407 |
+
self.elContent = self.attr ? self.el.getAttribute(self.attr) : self.el.textContent;
|
26408 |
+
|
26409 |
+
// html or plain text
|
26410 |
+
self.contentType = self.options.contentType;
|
26411 |
+
|
26412 |
+
// typing speed
|
26413 |
+
self.typeSpeed = self.options.typeSpeed;
|
26414 |
+
|
26415 |
+
// add a delay before typing starts
|
26416 |
+
self.startDelay = self.options.startDelay;
|
26417 |
+
|
26418 |
+
// backspacing speed
|
26419 |
+
self.backSpeed = self.options.backSpeed;
|
26420 |
+
|
26421 |
+
// only backspace what doesn't match the previous string
|
26422 |
+
self.smartBackspace = self.options.smartBackspace;
|
26423 |
+
|
26424 |
+
// amount of time to wait before backspacing
|
26425 |
+
self.backDelay = self.options.backDelay;
|
26426 |
+
|
26427 |
+
// Fade out instead of backspace
|
26428 |
+
self.fadeOut = self.options.fadeOut;
|
26429 |
+
self.fadeOutClass = self.options.fadeOutClass;
|
26430 |
+
self.fadeOutDelay = self.options.fadeOutDelay;
|
26431 |
+
|
26432 |
+
// variable to check whether typing is currently paused
|
26433 |
+
self.isPaused = false;
|
26434 |
+
|
26435 |
+
// input strings of text
|
26436 |
+
self.strings = self.options.strings.map(function (s) {
|
26437 |
+
return s.trim();
|
26438 |
+
});
|
26439 |
+
|
26440 |
+
// div containing strings
|
26441 |
+
if (typeof self.options.stringsElement === 'string') {
|
26442 |
+
self.stringsElement = document.querySelector(self.options.stringsElement);
|
26443 |
+
} else {
|
26444 |
+
self.stringsElement = self.options.stringsElement;
|
26445 |
+
}
|
26446 |
+
|
26447 |
+
if (self.stringsElement) {
|
26448 |
+
self.strings = [];
|
26449 |
+
self.stringsElement.style.display = 'none';
|
26450 |
+
var strings = Array.prototype.slice.apply(self.stringsElement.children);
|
26451 |
+
var stringsLength = strings.length;
|
26452 |
+
|
26453 |
+
if (stringsLength) {
|
26454 |
+
for (var i = 0; i < stringsLength; i += 1) {
|
26455 |
+
var stringEl = strings[i];
|
26456 |
+
self.strings.push(stringEl.innerHTML.trim());
|
26457 |
+
}
|
26458 |
+
}
|
26459 |
+
}
|
26460 |
+
|
26461 |
+
// character number position of current string
|
26462 |
+
self.strPos = 0;
|
26463 |
+
|
26464 |
+
// current array position
|
26465 |
+
self.arrayPos = 0;
|
26466 |
+
|
26467 |
+
// index of string to stop backspacing on
|
26468 |
+
self.stopNum = 0;
|
26469 |
+
|
26470 |
+
// Looping logic
|
26471 |
+
self.loop = self.options.loop;
|
26472 |
+
self.loopCount = self.options.loopCount;
|
26473 |
+
self.curLoop = 0;
|
26474 |
+
|
26475 |
+
// shuffle the strings
|
26476 |
+
self.shuffle = self.options.shuffle;
|
26477 |
+
// the order of strings
|
26478 |
+
self.sequence = [];
|
26479 |
+
|
26480 |
+
self.pause = {
|
26481 |
+
status: false,
|
26482 |
+
typewrite: true,
|
26483 |
+
curString: '',
|
26484 |
+
curStrPos: 0
|
26485 |
+
};
|
26486 |
+
|
26487 |
+
// When the typing is complete (when not looped)
|
26488 |
+
self.typingComplete = false;
|
26489 |
+
|
26490 |
+
// Set the order in which the strings are typed
|
26491 |
+
for (var i in self.strings) {
|
26492 |
+
self.sequence[i] = i;
|
26493 |
+
}
|
26494 |
+
|
26495 |
+
// If there is some text in the element
|
26496 |
+
self.currentElContent = this.getCurrentElContent(self);
|
26497 |
+
|
26498 |
+
self.autoInsertCss = self.options.autoInsertCss;
|
26499 |
+
|
26500 |
+
this.appendAnimationCss(self);
|
26501 |
+
}
|
26502 |
+
}, {
|
26503 |
+
key: 'getCurrentElContent',
|
26504 |
+
value: function getCurrentElContent(self) {
|
26505 |
+
var elContent = '';
|
26506 |
+
if (self.attr) {
|
26507 |
+
elContent = self.el.getAttribute(self.attr);
|
26508 |
+
} else if (self.isInput) {
|
26509 |
+
elContent = self.el.value;
|
26510 |
+
} else if (self.contentType === 'html') {
|
26511 |
+
elContent = self.el.innerHTML;
|
26512 |
+
} else {
|
26513 |
+
elContent = self.el.textContent;
|
26514 |
+
}
|
26515 |
+
return elContent;
|
26516 |
+
}
|
26517 |
+
}, {
|
26518 |
+
key: 'appendAnimationCss',
|
26519 |
+
value: function appendAnimationCss(self) {
|
26520 |
+
var cssDataName = 'data-typed-js-css';
|
26521 |
+
if (!self.autoInsertCss) {
|
26522 |
+
return;
|
26523 |
+
}
|
26524 |
+
if (!self.showCursor && !self.fadeOut) {
|
26525 |
+
return;
|
26526 |
+
}
|
26527 |
+
if (document.querySelector('[' + cssDataName + ']')) {
|
26528 |
+
return;
|
26529 |
+
}
|
26530 |
+
|
26531 |
+
var css = document.createElement('style');
|
26532 |
+
css.type = 'text/css';
|
26533 |
+
css.setAttribute(cssDataName, true);
|
26534 |
+
|
26535 |
+
var innerCss = '';
|
26536 |
+
if (self.showCursor) {
|
26537 |
+
innerCss += '\n .typed-cursor{\n opacity: 1;\n }\n .typed-cursor.typed-cursor--blink{\n animation: typedjsBlink 0.7s infinite;\n -webkit-animation: typedjsBlink 0.7s infinite;\n animation: typedjsBlink 0.7s infinite;\n }\n @keyframes typedjsBlink{\n 50% { opacity: 0.0; }\n }\n @-webkit-keyframes typedjsBlink{\n 0% { opacity: 1; }\n 50% { opacity: 0.0; }\n 100% { opacity: 1; }\n }\n ';
|
26538 |
+
}
|
26539 |
+
if (self.fadeOut) {
|
26540 |
+
innerCss += '\n .typed-fade-out{\n opacity: 0;\n transition: opacity .25s;\n }\n .typed-cursor.typed-cursor--blink.typed-fade-out{\n -webkit-animation: 0;\n animation: 0;\n }\n ';
|
26541 |
+
}
|
26542 |
+
if (css.length === 0) {
|
26543 |
+
return;
|
26544 |
+
}
|
26545 |
+
css.innerHTML = innerCss;
|
26546 |
+
document.body.appendChild(css);
|
26547 |
+
}
|
26548 |
+
}]);
|
26549 |
+
|
26550 |
+
return Initializer;
|
26551 |
+
})();
|
26552 |
+
|
26553 |
+
exports['default'] = Initializer;
|
26554 |
+
var initializer = new Initializer();
|
26555 |
+
exports.initializer = initializer;
|
26556 |
+
|
26557 |
+
/***/ }),
|
26558 |
+
/* 2 */
|
26559 |
+
/***/ (function(module, exports) {
|
26560 |
+
|
26561 |
+
/**
|
26562 |
+
* Defaults & options
|
26563 |
+
* @returns {object} Typed defaults & options
|
26564 |
+
* @public
|
26565 |
+
*/
|
26566 |
+
|
26567 |
+
'use strict';
|
26568 |
+
|
26569 |
+
Object.defineProperty(exports, '__esModule', {
|
26570 |
+
value: true
|
26571 |
+
});
|
26572 |
+
var defaults = {
|
26573 |
+
/**
|
26574 |
+
* @property {array} strings strings to be typed
|
26575 |
+
* @property {string} stringsElement ID of element containing string children
|
26576 |
+
*/
|
26577 |
+
strings: ['These are the default values...', 'You know what you should do?', 'Use your own!', 'Have a great day!'],
|
26578 |
+
stringsElement: null,
|
26579 |
+
|
26580 |
+
/**
|
26581 |
+
* @property {number} typeSpeed type speed in milliseconds
|
26582 |
+
*/
|
26583 |
+
typeSpeed: 0,
|
26584 |
+
|
26585 |
+
/**
|
26586 |
+
* @property {number} startDelay time before typing starts in milliseconds
|
26587 |
+
*/
|
26588 |
+
startDelay: 0,
|
26589 |
+
|
26590 |
+
/**
|
26591 |
+
* @property {number} backSpeed backspacing speed in milliseconds
|
26592 |
+
*/
|
26593 |
+
backSpeed: 0,
|
26594 |
+
|
26595 |
+
/**
|
26596 |
+
* @property {boolean} smartBackspace only backspace what doesn't match the previous string
|
26597 |
+
*/
|
26598 |
+
smartBackspace: true,
|
26599 |
+
|
26600 |
+
/**
|
26601 |
+
* @property {boolean} shuffle shuffle the strings
|
26602 |
+
*/
|
26603 |
+
shuffle: false,
|
26604 |
+
|
26605 |
+
/**
|
26606 |
+
* @property {number} backDelay time before backspacing in milliseconds
|
26607 |
+
*/
|
26608 |
+
backDelay: 700,
|
26609 |
+
|
26610 |
+
/**
|
26611 |
+
* @property {boolean} fadeOut Fade out instead of backspace
|
26612 |
+
* @property {string} fadeOutClass css class for fade animation
|
26613 |
+
* @property {boolean} fadeOutDelay Fade out delay in milliseconds
|
26614 |
+
*/
|
26615 |
+
fadeOut: false,
|
26616 |
+
fadeOutClass: 'typed-fade-out',
|
26617 |
+
fadeOutDelay: 500,
|
26618 |
+
|
26619 |
+
/**
|
26620 |
+
* @property {boolean} loop loop strings
|
26621 |
+
* @property {number} loopCount amount of loops
|
26622 |
+
*/
|
26623 |
+
loop: false,
|
26624 |
+
loopCount: Infinity,
|
26625 |
+
|
26626 |
+
/**
|
26627 |
+
* @property {boolean} showCursor show cursor
|
26628 |
+
* @property {string} cursorChar character for cursor
|
26629 |
+
* @property {boolean} autoInsertCss insert CSS for cursor and fadeOut into HTML <head>
|
26630 |
+
*/
|
26631 |
+
showCursor: true,
|
26632 |
+
cursorChar: '|',
|
26633 |
+
autoInsertCss: true,
|
26634 |
+
|
26635 |
+
/**
|
26636 |
+
* @property {string} attr attribute for typing
|
26637 |
+
* Ex: input placeholder, value, or just HTML text
|
26638 |
+
*/
|
26639 |
+
attr: null,
|
26640 |
+
|
26641 |
+
/**
|
26642 |
+
* @property {boolean} bindInputFocusEvents bind to focus and blur if el is text input
|
26643 |
+
*/
|
26644 |
+
bindInputFocusEvents: false,
|
26645 |
+
|
26646 |
+
/**
|
26647 |
+
* @property {string} contentType 'html' or 'null' for plaintext
|
26648 |
+
*/
|
26649 |
+
contentType: 'html',
|
26650 |
+
|
26651 |
+
/**
|
26652 |
+
* All typing is complete
|
26653 |
+
* @param {Typed} self
|
26654 |
+
*/
|
26655 |
+
onComplete: function onComplete(self) {},
|
26656 |
+
|
26657 |
+
/**
|
26658 |
+
* Before each string is typed
|
26659 |
+
* @param {number} arrayPos
|
26660 |
+
* @param {Typed} self
|
26661 |
+
*/
|
26662 |
+
preStringTyped: function preStringTyped(arrayPos, self) {},
|
26663 |
+
|
26664 |
+
/**
|
26665 |
+
* After each string is typed
|
26666 |
+
* @param {number} arrayPos
|
26667 |
+
* @param {Typed} self
|
26668 |
+
*/
|
26669 |
+
onStringTyped: function onStringTyped(arrayPos, self) {},
|
26670 |
+
|
26671 |
+
/**
|
26672 |
+
* During looping, after last string is typed
|
26673 |
+
* @param {Typed} self
|
26674 |
+
*/
|
26675 |
+
onLastStringBackspaced: function onLastStringBackspaced(self) {},
|
26676 |
+
|
26677 |
+
/**
|
26678 |
+
* Typing has been stopped
|
26679 |
+
* @param {number} arrayPos
|
26680 |
+
* @param {Typed} self
|
26681 |
+
*/
|
26682 |
+
onTypingPaused: function onTypingPaused(arrayPos, self) {},
|
26683 |
+
|
26684 |
+
/**
|
26685 |
+
* Typing has been started after being stopped
|
26686 |
+
* @param {number} arrayPos
|
26687 |
+
* @param {Typed} self
|
26688 |
+
*/
|
26689 |
+
onTypingResumed: function onTypingResumed(arrayPos, self) {},
|
26690 |
+
|
26691 |
+
/**
|
26692 |
+
* After reset
|
26693 |
+
* @param {Typed} self
|
26694 |
+
*/
|
26695 |
+
onReset: function onReset(self) {},
|
26696 |
+
|
26697 |
+
/**
|
26698 |
+
* After stop
|
26699 |
+
* @param {number} arrayPos
|
26700 |
+
* @param {Typed} self
|
26701 |
+
*/
|
26702 |
+
onStop: function onStop(arrayPos, self) {},
|
26703 |
+
|
26704 |
+
/**
|
26705 |
+
* After start
|
26706 |
+
* @param {number} arrayPos
|
26707 |
+
* @param {Typed} self
|
26708 |
+
*/
|
26709 |
+
onStart: function onStart(arrayPos, self) {},
|
26710 |
+
|
26711 |
+
/**
|
26712 |
+
* After destroy
|
26713 |
+
* @param {Typed} self
|
26714 |
+
*/
|
26715 |
+
onDestroy: function onDestroy(self) {}
|
26716 |
+
};
|
26717 |
+
|
26718 |
+
exports['default'] = defaults;
|
26719 |
+
module.exports = exports['default'];
|
26720 |
+
|
26721 |
+
/***/ }),
|
26722 |
+
/* 3 */
|
26723 |
+
/***/ (function(module, exports) {
|
26724 |
+
|
26725 |
+
|
26726 |
+
/**
|
26727 |
+
* TODO: These methods can probably be combined somehow
|
26728 |
+
* Parse HTML tags & HTML Characters
|
26729 |
+
*/
|
26730 |
+
|
26731 |
+
'use strict';
|
26732 |
+
|
26733 |
+
Object.defineProperty(exports, '__esModule', {
|
26734 |
+
value: true
|
26735 |
+
});
|
26736 |
+
|
26737 |
+
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
26738 |
+
|
26739 |
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
26740 |
+
|
26741 |
+
var HTMLParser = (function () {
|
26742 |
+
function HTMLParser() {
|
26743 |
+
_classCallCheck(this, HTMLParser);
|
26744 |
+
}
|
26745 |
+
|
26746 |
+
_createClass(HTMLParser, [{
|
26747 |
+
key: 'typeHtmlChars',
|
26748 |
+
|
26749 |
+
/**
|
26750 |
+
* Type HTML tags & HTML Characters
|
26751 |
+
* @param {string} curString Current string
|
26752 |
+
* @param {number} curStrPos Position in current string
|
26753 |
+
* @param {Typed} self instance of Typed
|
26754 |
+
* @returns {number} a new string position
|
26755 |
+
* @private
|
26756 |
+
*/
|
26757 |
+
|
26758 |
+
value: function typeHtmlChars(curString, curStrPos, self) {
|
26759 |
+
if (self.contentType !== 'html') return curStrPos;
|
26760 |
+
var curChar = curString.substr(curStrPos).charAt(0);
|
26761 |
+
if (curChar === '<' || curChar === '&') {
|
26762 |
+
var endTag = '';
|
26763 |
+
if (curChar === '<') {
|
26764 |
+
endTag = '>';
|
26765 |
+
} else {
|
26766 |
+
endTag = ';';
|
26767 |
+
}
|
26768 |
+
while (curString.substr(curStrPos + 1).charAt(0) !== endTag) {
|
26769 |
+
curStrPos++;
|
26770 |
+
if (curStrPos + 1 > curString.length) {
|
26771 |
+
break;
|
26772 |
+
}
|
26773 |
+
}
|
26774 |
+
curStrPos++;
|
26775 |
+
}
|
26776 |
+
return curStrPos;
|
26777 |
+
}
|
26778 |
+
|
26779 |
+
/**
|
26780 |
+
* Backspace HTML tags and HTML Characters
|
26781 |
+
* @param {string} curString Current string
|
26782 |
+
* @param {number} curStrPos Position in current string
|
26783 |
+
* @param {Typed} self instance of Typed
|
26784 |
+
* @returns {number} a new string position
|
26785 |
+
* @private
|
26786 |
+
*/
|
26787 |
+
}, {
|
26788 |
+
key: 'backSpaceHtmlChars',
|
26789 |
+
value: function backSpaceHtmlChars(curString, curStrPos, self) {
|
26790 |
+
if (self.contentType !== 'html') return curStrPos;
|
26791 |
+
var curChar = curString.substr(curStrPos).charAt(0);
|
26792 |
+
if (curChar === '>' || curChar === ';') {
|
26793 |
+
var endTag = '';
|
26794 |
+
if (curChar === '>') {
|
26795 |
+
endTag = '<';
|
26796 |
+
} else {
|
26797 |
+
endTag = '&';
|
26798 |
+
}
|
26799 |
+
while (curString.substr(curStrPos - 1).charAt(0) !== endTag) {
|
26800 |
+
curStrPos--;
|
26801 |
+
if (curStrPos < 0) {
|
26802 |
+
break;
|
26803 |
+
}
|
26804 |
+
}
|
26805 |
+
curStrPos--;
|
26806 |
+
}
|
26807 |
+
return curStrPos;
|
26808 |
+
}
|
26809 |
+
}]);
|
26810 |
+
|
26811 |
+
return HTMLParser;
|
26812 |
+
})();
|
26813 |
+
|
26814 |
+
exports['default'] = HTMLParser;
|
26815 |
+
var htmlParser = new HTMLParser();
|
26816 |
+
exports.htmlParser = htmlParser;
|
26817 |
+
|
26818 |
+
/***/ })
|
26819 |
+
/******/ ])
|
26820 |
+
});
|
26821 |
+
;
|
26822 |
+
//! moment.js
|
26823 |
+
//! version : 2.18.1
|
26824 |
+
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
|
26825 |
+
//! license : MIT
|
26826 |
+
//! momentjs.com
|
26827 |
+
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return sd.apply(null,arguments)}function b(a){sd=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return null!=a&&"[object Object]"===Object.prototype.toString.call(a)}function e(a){var b;for(b in a)return!1;return!0}function f(a){return void 0===a}function g(a){return"number"==typeof a||"[object Number]"===Object.prototype.toString.call(a)}function h(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function i(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function j(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function k(a,b){for(var c in b)j(b,c)
|