wpDataTables Lite - Version 2.1.3

Version Description

  • Feature: New table type - Create a simple table with any data, merged cells, styling, star rating and a lot more.
  • Feature: Added Slovenian translation
  • Improvement: Update French translation
  • Improvement: Added new color picker
  • Other small bug fixes and stability improvements.
Download this release

Release Info

Developer wpDataTables
Plugin Icon 128x128 wpDataTables Lite
Version 2.1.3
Comparing to
See all releases

Code changes from version 2.1.2 to 2.1.3

assets/css/admin/admin.css CHANGED
@@ -743,6 +743,8 @@ div.mce-widget button i.mce-i-wpdatachart{
743
  .wpdt-c #wdt-rb-backend-close-modal .modal-content .modal-footer #wdt-rb-backend-close-button,
744
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-continue-button,
745
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-close-button,
 
 
746
  .wpdt-c #wdt-error-modal .modal-content .modal-footer button,
747
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-cancel-delete-button,
748
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-browse-delete-button,
@@ -758,6 +760,7 @@ div.mce-widget button i.mce-i-wpdatachart{
758
 
759
  .wpdt-c #wdt-rb-backend-close-modal .modal-content .modal-footer #wdt-rb-backend-continue-button,
760
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-continue-button,
 
761
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-cancel-delete-button,
762
  .wpdt-c #wdt-error-modal .modal-content .modal-footer button,
763
  .wpdt-c #wdt-range-picker .modal-content .modal-footer #wdt-cancel-range {
@@ -769,6 +772,7 @@ div.mce-widget button i.mce-i-wpdatachart{
769
  }
770
  .wpdt-c #wdt-rb-backend-close-modal .modal-content .modal-footer #wdt-rb-backend-continue-button:hover,
771
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-continue-button:hover,
 
772
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-cancel-delete-button:hover,
773
  .wpdt-c #wdt-error-modal .modal-content .modal-footer button:hover,
774
  .wpdt-c #wdt-range-picker .modal-content .modal-footer #wdt-cancel-range:hover {
@@ -780,6 +784,7 @@ div.mce-widget button i.mce-i-wpdatachart{
780
  .wpdt-c #separate-connection .wdt-my-sql-delete,
781
  .wpdt-c #wdt-rb-backend-close-modal .modal-content .modal-footer #wdt-rb-backend-close-button,
782
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-close-button,
 
783
  .wpdt-c #wdt-remove-column-modal #wdt-remove-column-submit,
784
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-browse-delete-button{
785
  background: #F03E3E;
@@ -787,6 +792,7 @@ div.mce-widget button i.mce-i-wpdatachart{
787
  }
788
  .wpdt-c #separate-connection .wdt-my-sql-delete:hover,
789
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-close-button:hover,
 
790
  .wpdt-c #wdt-rb-backend-close-modal .modal-content .modal-footer #wdt-rb-backend-close-button:hover,
791
  .wpdt-c #wdt-remove-column-modal #wdt-remove-column-submit:hover,
792
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-browse-delete-button:hover{
@@ -923,10 +929,18 @@ div.mce-widget button i.mce-i-wpdatachart{
923
  top: 50%;
924
  }
925
 
926
- .wpdt-c .wpcolorpicker {
927
  width: 100%;
928
  }
929
 
 
 
 
 
 
 
 
 
930
  .wpdt-c .wpcolorpicker-icon.input-group-addon {
931
  position: absolute;
932
  right: 1px;
@@ -935,15 +949,19 @@ div.mce-widget button i.mce-i-wpdatachart{
935
  height: 25px;
936
  width: 25px;
937
  padding: 0;
 
938
  }
939
  .wpdt-c #column-conditional-formatting-settings .wdt-conditional-formatting-rule .wpcolorpicker-icon.input-group-addon {
940
  right: 13px;
941
  }
942
 
943
- .wpdt-c .colorpicker-element .wpcolorpicker-icon.add-on>i,
944
- .wpdt-c .colorpicker-element .wpcolorpicker-icon.input-group-addon>i {
945
  height: 28px;
946
  width: 28px;
 
 
 
947
  }
948
  .wpdt-c .wdt-conditional-formatting-rule {
949
  padding-top: 12px;
@@ -1204,6 +1222,7 @@ div.mce-widget button i.mce-i-wpdatachart{
1204
  .wpdt-c #separate-connection .wdt-my-sql-delete i,
1205
  .wpdt-c .wdt-store-activate-plugin i,
1206
  .wpdt-c .wdt-envato-activation .wdt-envato-deactivation-button i,
 
1207
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-close-button i,
1208
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-cancel-delete-button i{
1209
  margin-right: 8px;
@@ -1436,6 +1455,37 @@ div.mce-widget button i.mce-i-wpdatachart{
1436
  background: #F8F8FA;
1437
  border-radius: 0 2px 2px 0;
1438
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1439
  .wpdt-c #wdt-premium-modal .modal-title {
1440
  font-family: Inter;
1441
  font-style: normal;
743
  .wpdt-c #wdt-rb-backend-close-modal .modal-content .modal-footer #wdt-rb-backend-close-button,
744
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-continue-button,
745
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-close-button,
746
+ .wpdt-c #wdt-backend-warning-modal .modal-content .modal-footer #wdt-backend-warning-continue-button,
747
+ .wpdt-c #wdt-backend-warning-modal .modal-content .modal-footer #wdt-backend-clear-table-data-button,
748
  .wpdt-c #wdt-error-modal .modal-content .modal-footer button,
749
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-cancel-delete-button,
750
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-browse-delete-button,
760
 
761
  .wpdt-c #wdt-rb-backend-close-modal .modal-content .modal-footer #wdt-rb-backend-continue-button,
762
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-continue-button,
763
+ .wpdt-c #wdt-backend-warning-modal .modal-content .modal-footer #wdt-backend-warning-continue-button,
764
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-cancel-delete-button,
765
  .wpdt-c #wdt-error-modal .modal-content .modal-footer button,
766
  .wpdt-c #wdt-range-picker .modal-content .modal-footer #wdt-cancel-range {
772
  }
773
  .wpdt-c #wdt-rb-backend-close-modal .modal-content .modal-footer #wdt-rb-backend-continue-button:hover,
774
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-continue-button:hover,
775
+ .wpdt-c #wdt-backend-warning-modal .modal-content .modal-footer #wdt-backend-warning-continue-button:hover,
776
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-cancel-delete-button:hover,
777
  .wpdt-c #wdt-error-modal .modal-content .modal-footer button:hover,
778
  .wpdt-c #wdt-range-picker .modal-content .modal-footer #wdt-cancel-range:hover {
784
  .wpdt-c #separate-connection .wdt-my-sql-delete,
785
  .wpdt-c #wdt-rb-backend-close-modal .modal-content .modal-footer #wdt-rb-backend-close-button,
786
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-close-button,
787
+ .wpdt-c #wdt-backend-warning-modal .modal-content .modal-footer #wdt-backend-clear-table-data-button,
788
  .wpdt-c #wdt-remove-column-modal #wdt-remove-column-submit,
789
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-browse-delete-button{
790
  background: #F03E3E;
792
  }
793
  .wpdt-c #separate-connection .wdt-my-sql-delete:hover,
794
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-close-button:hover,
795
+ .wpdt-c #wdt-backend-warning-modal .modal-content .modal-footer #wdt-backend-clear-table-data-button:hover,
796
  .wpdt-c #wdt-rb-backend-close-modal .modal-content .modal-footer #wdt-rb-backend-close-button:hover,
797
  .wpdt-c #wdt-remove-column-modal #wdt-remove-column-submit:hover,
798
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-browse-delete-button:hover{
929
  top: 50%;
930
  }
931
 
932
+ .wpdt-c .wdt-color-picker {
933
  width: 100%;
934
  }
935
 
936
+ .wpdt-c #wpdt-table-editor img{
937
+ max-width: 100%;
938
+ height: auto;
939
+ }
940
+ .wpdt-c #wpdt-table-editor .ht_clone_left table tbody tr th{
941
+ vertical-align: middle;
942
+ }
943
+
944
  .wpdt-c .wpcolorpicker-icon.input-group-addon {
945
  position: absolute;
946
  right: 1px;
949
  height: 25px;
950
  width: 25px;
951
  padding: 0;
952
+ pointer-events: none;
953
  }
954
  .wpdt-c #column-conditional-formatting-settings .wdt-conditional-formatting-rule .wpcolorpicker-icon.input-group-addon {
955
  right: 13px;
956
  }
957
 
958
+ .wpdt-c .wpcolorpicker-icon.add-on>i,
959
+ .wpdt-c .wpcolorpicker-icon.input-group-addon>i {
960
  height: 28px;
961
  width: 28px;
962
+ display: inline-block;
963
+ cursor: pointer;
964
+ vertical-align: text-top;
965
  }
966
  .wpdt-c .wdt-conditional-formatting-rule {
967
  padding-top: 12px;
1222
  .wpdt-c #separate-connection .wdt-my-sql-delete i,
1223
  .wpdt-c .wdt-store-activate-plugin i,
1224
  .wpdt-c .wdt-envato-activation .wdt-envato-deactivation-button i,
1225
+ .wpdt-c #wdt-backend-warning-modal .modal-content .modal-footer #wdt-backend-clear-table-data-button i,
1226
  .wpdt-c #wdt-backend-close-modal .modal-content .modal-footer #wdt-backend-close-button i,
1227
  .wpdt-c #wdt-delete-modal .modal-content .modal-footer .wdt-cancel-delete-button i{
1228
  margin-right: 8px;
1455
  background: #F8F8FA;
1456
  border-radius: 0 2px 2px 0;
1457
  }
1458
+ #wpdt-views {
1459
+ display: flex;
1460
+ justify-content: flex-start;
1461
+ }
1462
+ #wpdt-views .nav-link {
1463
+ font-family: Inter;
1464
+ font-style: normal;
1465
+ font-weight: 500;
1466
+ font-size: 14px;
1467
+ line-height: 20px;
1468
+ color: #5A6C89;
1469
+ background-color: #fff !important;
1470
+ }
1471
+ #wpdt-views .nav-item {
1472
+ cursor: pointer;
1473
+ }
1474
+ #wpdt-views .nav-item:hover {
1475
+ border-bottom: 1px solid #008CFF;
1476
+ color: #008CFF;
1477
+ background-color: #fff !important;
1478
+ }
1479
+ #wpdt-views .nav-item.active {
1480
+ border-bottom: 1px solid #008CFF;
1481
+ }
1482
+
1483
+ #wpdt-views .nav-item .nav-link:hover,
1484
+ #wpdt-views .nav-item.active .nav-link{
1485
+ color: #008CFF;
1486
+ background-color: #fff !important;
1487
+ }
1488
+
1489
  .wpdt-c #wdt-premium-modal .modal-title {
1490
  font-family: Inter;
1491
  font-style: normal;
assets/css/admin/constructor.css CHANGED
@@ -394,6 +394,7 @@
394
  font-weight: 600;
395
  font-size: 14px;
396
  margin-top: 1px;
 
397
  }
398
  .wpdt-c .btn-group.wdt-constructor-create-buttons > .btn:first-child i {
399
  font-size: 14px;
@@ -505,17 +506,8 @@
505
  padding: 0 20px 0 0;
506
  margin-bottom: 15px;
507
  margin-top: 13px;
 
508
  }
509
-
510
- .wpdt-c .wdt-table-constructor .wdt-constructor-type-selecter-block .card.wdt-premium-feature {
511
- border: 1px solid #FFE8CC !important;
512
- }
513
- .wpdt-c .wdt-table-constructor .wdt-constructor-type-selecter-block .card.wdt-premium-feature:focus,
514
- .wpdt-c .wdt-table-constructor .wdt-constructor-type-selecter-block .card.wdt-premium-feature:hover {
515
- background: linear-gradient(0deg, rgba(255, 244, 230, 0.25), rgba(255, 244, 230, 0.25)), #FFFFFF;
516
- border: 1px solid #FFA94D !important;
517
- }
518
-
519
  .wpdt-c .wdt-table-constructor .wdt-constructor-type-selecter-block .card.selected {
520
  border: 1px solid #008CFF;
521
  box-shadow: 0 3px 2px rgba(23, 43, 77, 0.04), 0 0 2px rgba(23, 43, 77, 0.03), 0 0 0 3px rgb(230, 240, 255);
@@ -555,7 +547,6 @@
555
  max-width: 58px;
556
  }
557
 
558
-
559
  .wpdt-c .wdt-table-constructor .wdt-constructor-type-selecter-block .wdt-constructor-overlay {
560
  border-radius: 4px;
561
  transition: .5s ease;
@@ -590,8 +581,6 @@
590
  opacity: 1;
591
  }
592
 
593
-
594
-
595
  .wpdt-c .wdt-table-constructor #wdt-constructor-post-add-grouping-rule,
596
  .wpdt-c .wdt-table-constructor #wdt-constructor-add-post-condition,
597
  .wpdt-c .wdt-table-constructor #wdt-constructor-add-mysql-condition,
@@ -692,7 +681,6 @@
692
  text-overflow: ellipsis;
693
  }
694
 
695
-
696
  .wpdt-c .wdt-table-constructor .wdt-constructor-step[data-step="1-2"] .fg-line {
697
  width: 75%;
698
  }
@@ -721,4 +709,71 @@
721
 
722
  .wpdt-c .wdt-constructor-create-buttons button {
723
  text-transform: uppercase;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
724
  }
394
  font-weight: 600;
395
  font-size: 14px;
396
  margin-top: 1px;
397
+ z-index: 1200;
398
  }
399
  .wpdt-c .btn-group.wdt-constructor-create-buttons > .btn:first-child i {
400
  font-size: 14px;
506
  padding: 0 20px 0 0;
507
  margin-bottom: 15px;
508
  margin-top: 13px;
509
+ min-height: 107px;
510
  }
 
 
 
 
 
 
 
 
 
 
511
  .wpdt-c .wdt-table-constructor .wdt-constructor-type-selecter-block .card.selected {
512
  border: 1px solid #008CFF;
513
  box-shadow: 0 3px 2px rgba(23, 43, 77, 0.04), 0 0 2px rgba(23, 43, 77, 0.03), 0 0 0 3px rgb(230, 240, 255);
547
  max-width: 58px;
548
  }
549
 
 
550
  .wpdt-c .wdt-table-constructor .wdt-constructor-type-selecter-block .wdt-constructor-overlay {
551
  border-radius: 4px;
552
  transition: .5s ease;
581
  opacity: 1;
582
  }
583
 
 
 
584
  .wpdt-c .wdt-table-constructor #wdt-constructor-post-add-grouping-rule,
585
  .wpdt-c .wdt-table-constructor #wdt-constructor-add-post-condition,
586
  .wpdt-c .wdt-table-constructor #wdt-constructor-add-mysql-condition,
681
  text-overflow: ellipsis;
682
  }
683
 
 
684
  .wpdt-c .wdt-table-constructor .wdt-constructor-step[data-step="1-2"] .fg-line {
685
  width: 75%;
686
  }
709
 
710
  .wpdt-c .wdt-constructor-create-buttons button {
711
  text-transform: uppercase;
712
+ }
713
+ .wpdt-c #wdt-simple-table-constructor{
714
+ background: #008CFF;
715
+ border: none;
716
+ box-sizing: border-box;
717
+ font-style: normal;
718
+ color: #FFFFFF;
719
+ font-family: Inter;
720
+ font-weight: 500;
721
+ font-size: 14px;
722
+ line-height: 20px;
723
+ padding: 8px 16px;
724
+ border-radius: 5px;
725
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.06) !important;
726
+ }
727
+ .wdt-constructor-type-selecter-block .card .ribbon {
728
+ position: absolute;
729
+ right: -5px;
730
+ top: -5px;
731
+ z-index: 1;
732
+ overflow: hidden;
733
+ width: 75px;
734
+ height: 75px;
735
+ text-align: right;
736
+ }
737
+
738
+ .wdt-constructor-type-selecter-block .card .ribbon span {
739
+ font-size: 10px;
740
+ font-weight: 700;
741
+ color: #fff;
742
+ text-transform: uppercase;
743
+ text-align: center;
744
+ line-height: 20px;
745
+ transform: rotate(45deg);
746
+ -webkit-transform: rotate(45deg);
747
+ width: 100px;
748
+ display: block;
749
+ background: #79a70a;
750
+ background: linear-gradient(#091D70 0, #091D70 100%);
751
+ box-shadow: 0 3px 10px -5px rgba(0, 0, 0, 1);
752
+ position: absolute;
753
+ top: 19px;
754
+ right: -21px;
755
+ }
756
+
757
+ .wdt-constructor-type-selecter-block .card .ribbon span::before {
758
+ content: "";
759
+ position: absolute;
760
+ left: 0;
761
+ top: 100%;
762
+ z-index: -1;
763
+ border-left: 3px solid #091D70;
764
+ border-right: 3px solid transparent;
765
+ border-bottom: 3px solid transparent;
766
+ border-top: 3px solid #091D70;
767
+ }
768
+
769
+ .wdt-constructor-type-selecter-block .card .ribbon span::after {
770
+ content: "";
771
+ position: absolute;
772
+ right: 0;
773
+ top: 100%;
774
+ z-index: -1;
775
+ border-left: 3px solid transparent;
776
+ border-right: 3px solid #091D70;
777
+ border-bottom: 3px solid transparent;
778
+ border-top: 3px solid #091D70;
779
  }
assets/css/admin/dashboard.css CHANGED
@@ -164,6 +164,7 @@
164
  .wdt-datatables-admin-wrap .wdt-premium-features-card .wdt-premium-features i{
165
  font-weight: 900;
166
  font-size: 13px;
 
167
  line-height: 20px;
168
  color: #008CFF;
169
  }
164
  .wdt-datatables-admin-wrap .wdt-premium-features-card .wdt-premium-features i{
165
  font-weight: 900;
166
  font-size: 13px;
167
+ margin-right: 5px;
168
  line-height: 20px;
169
  color: #008CFF;
170
  }
assets/css/admin/edit_table.css CHANGED
@@ -636,10 +636,369 @@ div.wdt-column-block.gu-mirror span {
636
  background: #F8F8FA;
637
  border-radius: 0 2px 2px 0;
638
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
639
  @media (max-width: 768px) {
 
640
  .wpdt-c .wdt-datatables-admin-wrap div.column-settings-panel {
641
  width: 100% !important;
642
  max-width: 100% !important;
643
  }
 
 
 
 
 
 
644
 
645
  }
636
  background: #F8F8FA;
637
  border-radius: 0 2px 2px 0;
638
  }
639
+
640
+ .wpdt-c .wdt-simple-table-settings .tab-content {
641
+ padding: 0 !important;
642
+ }
643
+ .wpdt-c .wdt-simple-table-settings #edit-table-settings .btn.disabled{
644
+ opacity: 1;
645
+ color: #ced0d1 !important;
646
+ }
647
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerSimpleTable,
648
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerConfigSimpleTable{
649
+ position: relative;
650
+ margin: auto;
651
+ background: #fff;
652
+ text-align: center;
653
+ }
654
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerConfigSimpleTable {
655
+ margin: 0;
656
+ padding: 0;
657
+ }
658
+
659
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerSimpleTable {
660
+ margin-top: 0;
661
+ margin-bottom: 20px;
662
+ padding: 0;
663
+ }
664
+
665
+ .wpdt-c .wdt-datatables-admin-wrap .wpdt-row-flex {
666
+ margin: 20px 0;
667
+ display: flex;
668
+ flex-direction: column;
669
+ }
670
+ .wpdt-c .wdt-datatables-admin-wrap #wpdt-star-size,
671
+ .wpdt-c .wdt-datatables-admin-wrap #wpdt-star-number {
672
+ border-radius: 4px;
673
+ border: solid 1px #dcdfe6;
674
+ font-family: Roboto;
675
+ font-size: 14px;
676
+ font-weight: normal;
677
+ font-style: normal;
678
+ font-stretch: normal;
679
+ line-height: 1;
680
+ letter-spacing: normal;
681
+ color: #606266;
682
+ height: 36px !important;
683
+ }
684
+
685
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerConfigSimpleTable {
686
+ justify-content: center;
687
+ margin-bottom: 10px;
688
+ }
689
+
690
+ .wpdt-c .wdt-datatables-admin-wrap .wpdt-actions-main-wrap {
691
+ border: 3px solid #eee;
692
+ }
693
+ .wpdt-c .wdt-datatables-admin-wrap .wpdt-manage-title,
694
+ .wpdt-c .wdt-datatables-admin-wrap .wpdt-cell-data-title {
695
+ text-align: center;
696
+ }
697
+
698
+ .wpdt-c .wdt-datatables-admin-wrap div.wpdt-cell-action-buttons .btn {
699
+ padding: 6px 8px;
700
+ font-size: 16px;
701
+ font-weight: 500;
702
+ text-transform: none !important;
703
+ min-width: 34px;
704
+ }
705
+
706
+ .wpdt-c .wdt-datatables-admin-wrap .wpdt-cell-actions-titles {
707
+ margin-top: 10px;
708
+ }
709
+
710
+ #wpdt-table-editor {
711
+ width: 100%;
712
+ z-index: 10;
713
+ }
714
+
715
+
716
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerConfigSimpleTable .wpdtSimpleTable{
717
+ table-layout: fixed;
718
+ display: table;
719
+ border-collapse: collapse !important;
720
+ overflow-x: auto;
721
+ overflow-y: hidden;
722
+ min-width: 1000px;
723
+ width: 100%;
724
+ }
725
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerConfigSimpleTable#wpdatatable-preview-container{
726
+ max-width: 1200px;
727
+ overflow: auto;
728
+ }
729
+
730
+
731
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerConfigSimpleTable .wpdtSimpleTable td {
732
+ padding: 25px;
733
+ position: relative;
734
+ }
735
+
736
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerSimpleTable .wpdtSimpleTable td img {
737
+ max-width: 100%;
738
+ height: auto;
739
+ }
740
+
741
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerSimpleTable .wpdtSimpleTable td.selected {
742
+ border: 1px solid royalblue;
743
+ }
744
+
745
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerConfigSimpleTable .wpdtSimpleTable td.wpdt-cell {
746
+ width: 150px;
747
+ border: 1px dashed #969fa6;
748
+
749
+ }
750
+
751
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerConfigSimpleTable .wpdtSimpleTable td.wpdt-cell input {
752
+ width: 100%;
753
+ }
754
+
755
+
756
+ .wpdt-c .wdt-datatables-admin-wrap #wpdt-cell-action-buttons button:active,
757
+ .wpdt-c .wdt-datatables-admin-wrap #wpdt-table-action-buttons button:active,
758
+ .wpdt-c .wdt-datatables-admin-wrap #wpdt-cell-action-buttons button:focus,
759
+ .wpdt-c .wdt-datatables-admin-wrap #wpdt-table-action-buttons button:focus,
760
+ .wpdt-c .wdt-datatables-admin-wrap #wpdt-cell-action-buttons button,
761
+ .wpdt-c .wdt-datatables-admin-wrap #wpdt-table-action-buttons button {
762
+ color: #5f6368 !important;
763
+ background-color: #FFFFFF !important;
764
+ }
765
+
766
+ .wpdt-c .wdt-datatables-admin-wrap #wpdt-cell-action-buttons button.selected,
767
+ .wpdt-c .wdt-datatables-admin-wrap #wpdt-cell-action-buttons button:hover:not(.disabled),
768
+ .wpdt-c .wdt-datatables-admin-wrap #wpdt-table-action-buttons button:hover:not(.disabled) {
769
+ color: #FFFFFF !important;
770
+ background-color: #5f6368 !important;
771
+ }
772
+
773
+ .wpdt-c #wdt-cell-modal .modal-body input {
774
+ width: 100%;
775
+ display: block;
776
+ }
777
+ .wpdt-c .wdt-datatables-admin-wrap #wpdt-cell-action-buttons {
778
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
779
+ border-radius: 4px;
780
+ width: fit-content;
781
+ }
782
+ .wpdt-c .wdt-datatables-admin-wrap div.wpdt-cell-action-buttons {
783
+ display: inline-block;
784
+ }
785
+ .wpdt-c #wpdt-align-button, #wpdt-valign-button{
786
+ position: relative;
787
+ }
788
+ .wpdt-c #wpdt-row-button, #wpdt-column-button {
789
+ position: relative;
790
+ padding: 6px 4px;
791
+ }
792
+ .wpdt-c #wpdt-cell-action-buttons .btn-separator,
793
+ .wpdt-c #wpdt-table-action-buttons .btn-separator {
794
+ border-left: 1px solid #dadce0;
795
+ margin: 5px 0;
796
+ user-select: none;
797
+ vertical-align: top;
798
+ line-height: normal;
799
+ list-style: none;
800
+ outline: none;
801
+ overflow: hidden;
802
+ padding: 0;
803
+ text-decoration: none;
804
+ width: 0;
805
+ position: relative;
806
+ display: -moz-inline-box;
807
+ display: inline-block;
808
+ }
809
+ .wpdt-c #wpdt-cell-action-buttons .btn-separator {
810
+ height: 26px;
811
+ }
812
+ .wpdt-c #wpdt-expand-buttons,
813
+ .wpdt-c #wpdt-table-action-buttons{
814
+ display: inline-block;
815
+ }
816
+ .wpdt-c #wpdt-expand-wrap-buttons,
817
+ .wpdt-c #wpdt-expand-align-buttons,
818
+ .wpdt-c #wpdt-expand-valign-buttons,
819
+ .wpdt-c #wpdt-column-action-buttons,
820
+ .wpdt-c #wpdt-row-action-buttons{
821
+ position: relative;
822
+ display: inline-block;
823
+ }
824
+ .wpdt-c #wpdt-table-action-buttons *:after{
825
+ font-size: 16px;
826
+ }
827
+ .wpdt-c #wpdt-column-actions, .wpdt-c #wpdt-row-actions,
828
+ .wpdt-c #wpdt-align-buttons, .wpdt-c #wpdt-valign-buttons,
829
+ .wpdt-c #wpdt-wrap-buttons{
830
+ position: absolute;
831
+ z-index: 10000;
832
+ background-color: #fff;
833
+ border: 1px solid transparent;
834
+ border-radius: 4px;
835
+ box-shadow: 0 2px 6px 2px rgba(60,64,67,.15);
836
+ transition: opacity 0.218s;
837
+ cursor: default;
838
+ font-size: 13px;
839
+ margin: 0;
840
+ outline: none;
841
+ }
842
+ .wpdt-c #wpdt-align-buttons {
843
+ height: 35px;
844
+ width: 149px;
845
+ }
846
+ .wpdt-c #wpdt-valign-buttons,
847
+ .wpdt-c #wpdt-wrap-buttons{
848
+ height: 35px;
849
+ width: 112px;
850
+ }
851
+ .wpdt-c #wpdt-column-actions, .wpdt-c #wpdt-row-actions{
852
+ width: 187px;
853
+ height: 35px;
854
+ }
855
+ .wpdt-c #wpdt-wrap-buttons .btn,
856
+ .wpdt-c #wpdt-align-buttons .btn,
857
+ .wpdt-c #wpdt-valign-buttons .btn,
858
+ .wpdt-c #wpdt-column-actions .btn,
859
+ .wpdt-c #wpdt-row-actions .btn{
860
+ z-index: 10001;
861
+ margin: 0;
862
+ }
863
+
864
+
865
+ .wpdt-c #wpdt-text-color,
866
+ .wpdt-c #wpdt-background-color {
867
+ position: relative;
868
+ border-bottom: 5px solid transparent;
869
+ border-radius: 3px 3px 0 0 !important;
870
+ }
871
+ .wpdt-c #wpdt-text-color {
872
+ border-bottom-color: #000;
873
+ }
874
+ .wpdt-c #wpdt-background-color {
875
+ border-bottom-color: #FFF;
876
+ }
877
+ .wpdt-c #wpdt-background-color span {
878
+ background:#FFF;
879
+ }
880
+ .wpdt-c #wpdt-text-color span {
881
+ background: #000;
882
+ }
883
+
884
+ .wpdt-c #wpdt-align-button,
885
+ .wpdt-c #wpdt-valign-button,
886
+ .wpdt-c #wpdt-wrap-button{
887
+ position: relative;
888
+ padding: 6px 16px 6px 6px;
889
+ }
890
+ .wpdt-c #wpdt-align-button .wpdt-icon-sort-down,
891
+ .wpdt-c #wpdt-valign-button .wpdt-icon-sort-down,
892
+ .wpdt-c #wpdt-wrap-button .wpdt-icon-sort-down{
893
+ position: absolute;
894
+ right: 3px;
895
+ font-size: 13px;
896
+ top: 9px;
897
+ }
898
+ .wpdt-c #wdt-backend-html-modal .mce-container iframe {
899
+ border: 1px solid #eee;
900
+ }
901
+ .wpdt-c #wdt-backend-html-modal .mce-container iframe {
902
+ border: 1px solid #eee;
903
+ }
904
+ .wpdt-c #wdt-backend-link-modal .modal-dialog,
905
+ .wpdt-c #wdt-backend-html-modal .modal-dialog{
906
+ width: 500px !important;
907
+ }
908
+ .wpdt-c #wdt-backend-link-modal .modal-dialog .form-group {
909
+ margin-bottom: 15px !important;
910
+ }
911
+ .wpdt-c #wdt-backend-shortcode-modal .modal-dialog .modal-content .modal-header,
912
+ .wpdt-c #wdt-backend-star-modal .modal-dialog .modal-content .modal-header,
913
+ .wpdt-c #wdt-backend-html-modal .modal-dialog .modal-content .modal-header,
914
+ .wpdt-c #wdt-backend-link-modal .modal-dialog .modal-content .modal-header {
915
+ border-bottom: 1px solid #ebeef5;
916
+ margin-bottom: 20px;
917
+ padding: 23px 20px;
918
+ }
919
+ .wpdt-c #wdt-backend-insert-shortcode-button,
920
+ .wpdt-c #wdt-backend-insert-star-button,
921
+ .wpdt-c #wdt-backend-insert-html-button,
922
+ .wpdt-c #wdt-backend-insert-link-button,
923
+ .wpdt-c .wdt-backend-close-modal-button {
924
+ font-family: Inter;
925
+ font-style: normal;
926
+ font-weight: 500;
927
+ font-size: 14px;
928
+ line-height: 20px;
929
+ padding: 8px 16px;
930
+ border-radius: 5px;
931
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.06) !important;
932
+ }
933
+ .wpdt-c #wdt-backend-insert-html-button,
934
+ .wpdt-c #wdt-backend-insert-shortcode-button,
935
+ .wpdt-c #wdt-backend-insert-star-button,
936
+ .wpdt-c #wdt-backend-insert-link-button {
937
+ background-color: #008CFF;
938
+ color: #FFF;
939
+ }
940
+ .wpdt-c .wdt-backend-close-modal-button {
941
+ background-color: #E03131;
942
+ }
943
+ .wpdt-c .wpdt-modals .error-msg{
944
+ color: #dc3545;
945
+ }
946
+ .wpdt-c .wpdt-modals .error-border{
947
+ border:1px solid #dc3545 !important;
948
+ }
949
+ .wpdt-c #wdt-backend-insert-shortcode-button i,
950
+ .wpdt-c #wdt-backend-insert-star-button i,
951
+ .wpdt-c #wdt-backend-insert-html-button i,
952
+ .wpdt-c #wdt-backend-insert-link-button i,
953
+ .wpdt-c .wdt-backend-close-modal-button i {
954
+ margin-right: 8px;
955
+ vertical-align: baseline;
956
+ }
957
+
958
+ .wpdt-c #wdt-backend-link-modal .modal-dialog .modal-content .modal-body input:not([type="checkbox"]) {
959
+ border-radius: 4px;
960
+ border: solid 1px #dcdfe6;
961
+ font-family: Roboto;
962
+ font-size: 14px;
963
+ font-weight: normal;
964
+ font-style: normal;
965
+ font-stretch: normal;
966
+ line-height: 1;
967
+ letter-spacing: normal;
968
+ color: #606266;
969
+ height: 36px !important;
970
+ width: 100% !important;
971
+ padding: 11px 13px !important;
972
+ }
973
+ .wpdt-c #wdt-backend-shortcode-modal .modal-dialog .modal-content .modal-body textarea {
974
+ border-radius: 4px;
975
+ border: solid 1px #dcdfe6;
976
+ width: 100%;
977
+ padding: 11px 15px;
978
+ font-size: 16px;
979
+ resize: none;
980
+ }
981
+ .wpdt-c #wdt-backend-shortcode-modal .modal-dialog .modal-content .modal-body label,
982
+ .wpdt-c #wdt-backend-html-modal .modal-dialog .modal-content .modal-body label,
983
+ .wpdt-c #wdt-backend-link-modal .modal-dialog .modal-content .modal-body label,
984
+ .wpdt-c #wdt-backend-star-modal .modal-dialog .modal-content .modal-body label {
985
+ font-size: 16px;
986
+ }
987
+ .wpdt-c #wdt-backend-shortcode-modal .modal-dialog .modal-content .modal-body textarea:focus {
988
+ box-shadow: none;
989
+ }
990
+
991
  @media (max-width: 768px) {
992
+
993
  .wpdt-c .wdt-datatables-admin-wrap div.column-settings-panel {
994
  width: 100% !important;
995
  max-width: 100% !important;
996
  }
997
+ }
998
+ @media (max-width: 480px) {
999
+
1000
+ .wpdt-c #wpdt-cell-action-buttons .btn.btn-primary {
1001
+ width: auto !important;
1002
+ }
1003
 
1004
  }
assets/css/admin/getting-started.css CHANGED
@@ -20,7 +20,6 @@
20
  vertical-align: bottom;
21
  }
22
 
23
-
24
  .wdt-datatables-admin-wrap .wdt-getting-started-block {
25
  padding: 28px 32px 14px 32px !important;
26
  background: #FFFFFF;
@@ -47,7 +46,7 @@
47
  color: #304463;
48
  }
49
  .wdt-datatables-admin-wrap .wdt-getting-started-block .wdt-getting-started-img-section {
50
- min-height: 668px;
51
  position: absolute;
52
  top: 0;
53
  right: -90px;
20
  vertical-align: bottom;
21
  }
22
 
 
23
  .wdt-datatables-admin-wrap .wdt-getting-started-block {
24
  padding: 28px 32px 14px 32px !important;
25
  background: #FFFFFF;
46
  color: #304463;
47
  }
48
  .wdt-datatables-admin-wrap .wdt-getting-started-block .wdt-getting-started-img-section {
49
+ min-height: 868px;
50
  position: absolute;
51
  top: 0;
52
  right: -90px;
assets/css/admin/starRating.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .jq-ry-container{position:relative;padding:0 5px 5px 0px;line-height:0;margin:50px 0 0px;display:inline-block;cursor:pointer;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;direction:ltr}.jq-ry-container>.jq-ry-group-wrapper{position:relative;width:100%}.jq-ry-container>.jq-ry-group-wrapper>.jq-ry-group{position:relative;line-height:0;z-index:10;white-space:nowrap}.jq-ry-container>.jq-ry-group-wrapper>.jq-ry-group>svg{display:inline-block}.jq-ry-container>.jq-ry-group-wrapper>.jq-ry-group.jq-ry-normal-group{width:100%}.jq-ry-container>.jq-ry-group-wrapper>.jq-ry-group.jq-ry-rated-group{width:0;z-index:11;position:absolute;top:0;left:0;overflow:hidden}
assets/css/bootstrap/wpdatatables-bootstrap.css CHANGED
@@ -8266,22 +8266,6 @@ select.input-group-lg > .input-group-btn > .btn {
8266
  margin-top: 10px !important;
8267
  }
8268
 
8269
- .wpdt-c .m-b-8 {
8270
- margin-bottom: 8px !important;
8271
- }
8272
-
8273
- .wpdt-c .m-l-8 {
8274
- margin-left: 8px !important;
8275
- }
8276
-
8277
- .wpdt-c .m-r-8 {
8278
- margin-right: 8px !important;
8279
- }
8280
-
8281
- .wpdt-c .m-t-8 {
8282
- margin-top: 8px !important;
8283
- }
8284
-
8285
  .wpdt-c .m-b-10 {
8286
  margin-bottom: 10px !important;
8287
  }
@@ -8317,10 +8301,6 @@ select.input-group-lg > .input-group-btn > .btn {
8317
  .wpdt-c .m-r-15 {
8318
  margin-right: 15px !important;
8319
  }
8320
- .wpdt-c .m-20 {
8321
- margin: 20px !important;
8322
- }
8323
-
8324
  .wpdt-c .m-t-18 {
8325
  margin-top: 18px !important;
8326
  }
@@ -8338,6 +8318,9 @@ select.input-group-lg > .input-group-btn > .btn {
8338
  .wpdt-c .m-18 {
8339
  margin: 18px !important;
8340
  }
 
 
 
8341
 
8342
  .wpdt-c .m-t-20 {
8343
  margin-top: 20px !important;
@@ -8565,21 +8548,7 @@ select.input-group-lg > .input-group-btn > .btn {
8565
  .wpdt-c .p-r-30 {
8566
  padding-right: 30px !important;
8567
  }
8568
- .wpdt-c .p-t-48 {
8569
- padding-top: 48px !important;
8570
- }
8571
-
8572
- .wpdt-c .p-b-48 {
8573
- padding-bottom: 48px !important;
8574
- }
8575
 
8576
- .wpdt-c .p-l-48 {
8577
- padding-left: 48px !important;
8578
- }
8579
-
8580
- .wpdt-c .p-r-48 {
8581
- padding-right: 48px !important;
8582
- }
8583
  /*---------------------------------------------------------------------------
8584
  Generate Font-Size Classes (8px - 20px)
8585
  ----------------------------------------------------------------------------*/
@@ -9994,7 +9963,7 @@ select.input-group-lg > .input-group-btn > .btn {
9994
  .wpdt-c .col-xs-6 button,
9995
  .wpdt-c .col-xs-6 input,
9996
  .wpdt-c .wdt-table-settings .input-path-block .fg-line,
9997
- .wpdt-c .pull-right:not(.wdt-column-settings),
9998
  .wpdt-c .pull-left,
9999
  .wpdt-c .btn.btn-default.wdt-documentation,
10000
  .wpdt-c .btn.btn-primary,
@@ -13682,6 +13651,9 @@ input:focus {
13682
  .wpdt-c .wdt-datetimepicker-modal .datepicker {
13683
  width: 100% !important;
13684
  }
 
 
 
13685
 
13686
  .wpdt-c .media-modal * {
13687
  box-sizing: content-box;
@@ -13732,7 +13704,6 @@ input:focus {
13732
  #wdt-frontend-modal .wdt-search-filters-button-container .wdt_checkbox_option span.wdt-checkbox-label {
13733
  vertical-align: text-bottom;
13734
  margin-bottom: 2px;
13735
- display: inline-block;
13736
  }
13737
 
13738
  #wdt-frontend-modal .wdt_checkbox_option input[type="checkbox"],
@@ -13771,3 +13742,7 @@ input:focus {
13771
  top: -1px;
13772
  opacity: 1
13773
  }
 
 
 
 
8266
  margin-top: 10px !important;
8267
  }
8268
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8269
  .wpdt-c .m-b-10 {
8270
  margin-bottom: 10px !important;
8271
  }
8301
  .wpdt-c .m-r-15 {
8302
  margin-right: 15px !important;
8303
  }
 
 
 
 
8304
  .wpdt-c .m-t-18 {
8305
  margin-top: 18px !important;
8306
  }
8318
  .wpdt-c .m-18 {
8319
  margin: 18px !important;
8320
  }
8321
+ .wpdt-c .m-20 {
8322
+ margin: 20px !important;
8323
+ }
8324
 
8325
  .wpdt-c .m-t-20 {
8326
  margin-top: 20px !important;
8548
  .wpdt-c .p-r-30 {
8549
  padding-right: 30px !important;
8550
  }
 
 
 
 
 
 
 
8551
 
 
 
 
 
 
 
 
8552
  /*---------------------------------------------------------------------------
8553
  Generate Font-Size Classes (8px - 20px)
8554
  ----------------------------------------------------------------------------*/
9963
  .wpdt-c .col-xs-6 button,
9964
  .wpdt-c .col-xs-6 input,
9965
  .wpdt-c .wdt-table-settings .input-path-block .fg-line,
9966
+ .wpdt-c .pull-right:not(.wdt-column-settings):not(.wdt-column-block-icon):not(.wdt-column-move-arrows),
9967
  .wpdt-c .pull-left,
9968
  .wpdt-c .btn.btn-default.wdt-documentation,
9969
  .wpdt-c .btn.btn-primary,
13651
  .wpdt-c .wdt-datetimepicker-modal .datepicker {
13652
  width: 100% !important;
13653
  }
13654
+ .wpdt-c .wdt-datetimepicker-modal > ul li{
13655
+ margin: 0;
13656
+ }
13657
 
13658
  .wpdt-c .media-modal * {
13659
  box-sizing: content-box;
13704
  #wdt-frontend-modal .wdt-search-filters-button-container .wdt_checkbox_option span.wdt-checkbox-label {
13705
  vertical-align: text-bottom;
13706
  margin-bottom: 2px;
 
13707
  }
13708
 
13709
  #wdt-frontend-modal .wdt_checkbox_option input[type="checkbox"],
13742
  top: -1px;
13743
  opacity: 1
13744
  }
13745
+ .wpdt-c .wpdt-custom-center-flex{
13746
+ display: flex;
13747
+ justify-content: center;
13748
+ }
assets/css/color-pickr/classic-theme.min.css ADDED
@@ -0,0 +1 @@
 
1
+ /*! Pickr 1.7.1 MIT | https://github.com/Simonwep/pickr */.pickr{position:relative;overflow:visible;transform:translateY(0)}.pickr *{box-sizing:border-box;outline:none;border:none;-webkit-appearance:none}.pickr .pcr-button{position:relative;height:2em;width:2em;padding:.5em;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;border-radius:.15em;background:url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" stroke="%2342445A" stroke-width="5px" stroke-linecap="round"><path d="M45,45L5,5"></path><path d="M45,5L5,45"></path></svg>') no-repeat 50%;background-size:0;transition:all .3s}.pickr .pcr-button:before{background:url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');background-size:.5em;z-index:-1;z-index:auto}.pickr .pcr-button:after,.pickr .pcr-button:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;border-radius:.15em}.pickr .pcr-button:after{transition:background .3s;background:currentColor}.pickr .pcr-button.clear{background-size:70%}.pickr .pcr-button.clear:before{opacity:0}.pickr .pcr-button.clear:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px currentColor}.pickr .pcr-button.disabled{cursor:not-allowed}.pcr-app *,.pickr *{box-sizing:border-box;outline:none;border:none;-webkit-appearance:none}.pcr-app button.pcr-active,.pcr-app button:focus,.pcr-app input.pcr-active,.pcr-app input:focus,.pickr button.pcr-active,.pickr button:focus,.pickr input.pcr-active,.pickr input:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px currentColor}.pcr-app .pcr-palette,.pcr-app .pcr-slider,.pickr .pcr-palette,.pickr .pcr-slider{transition:box-shadow .3s}.pcr-app .pcr-palette:focus,.pcr-app .pcr-slider:focus,.pickr .pcr-palette:focus,.pickr .pcr-slider:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px rgba(0,0,0,.25)}.pcr-app{position:fixed;display:flex;flex-direction:column;z-index:10000;border-radius:.1em;background:#fff;opacity:0;visibility:hidden;transition:opacity .3s,visibility 0s .3s;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;box-shadow:0 .15em 1.5em 0 rgba(0,0,0,.1),0 0 1em 0 rgba(0,0,0,.03);left:0;top:0}.pcr-app.visible{transition:opacity .3s;visibility:visible;opacity:1}.pcr-app .pcr-swatches{display:flex;flex-wrap:wrap;margin-top:.75em}.pcr-app .pcr-swatches.pcr-last{margin:0}@supports (display:grid){.pcr-app .pcr-swatches{display:grid;align-items:center;grid-template-columns:repeat(auto-fit,1.75em)}}.pcr-app .pcr-swatches>button{font-size:1em;position:relative;width:calc(1.75em - 5px);height:calc(1.75em - 5px);border-radius:.15em;cursor:pointer;margin:2.5px;flex-shrink:0;justify-self:center;transition:all .15s;overflow:hidden;background:transparent;z-index:1}.pcr-app .pcr-swatches>button:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');background-size:6px;border-radius:.15em;z-index:-1}.pcr-app .pcr-swatches>button:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:currentColor;border:1px solid rgba(0,0,0,.05);border-radius:.15em;box-sizing:border-box}.pcr-app .pcr-swatches>button:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05)}.pcr-app .pcr-swatches>button:not(.pcr-active){box-shadow:none}.pcr-app .pcr-interaction{display:flex;flex-wrap:wrap;align-items:center;margin:0 -.2em}.pcr-app .pcr-interaction>*{margin:0 .2em}.pcr-app .pcr-interaction input{letter-spacing:.07em;font-size:.75em;text-align:center;cursor:pointer;color:#75797e;background:#f1f3f4;border-radius:.15em;transition:all .15s;padding:.45em .5em;margin-top:.75em}.pcr-app .pcr-interaction input:hover{-webkit-filter:brightness(.975);filter:brightness(.975)}.pcr-app .pcr-interaction input:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px rgba(66,133,244,.75)}.pcr-app .pcr-interaction .pcr-result{color:#75797e;text-align:left;flex:1 1 8em;min-width:8em;transition:all .2s;border-radius:.15em;background:#f1f3f4;cursor:text}.pcr-app .pcr-interaction .pcr-result::-moz-selection{background:#4285f4;color:#fff}.pcr-app .pcr-interaction .pcr-result::selection{background:#4285f4;color:#fff}.pcr-app .pcr-interaction .pcr-type.active{color:#fff;background:#4285f4 !important;}.pcr-app .pcr-interaction .pcr-cancel,.pcr-app .pcr-interaction .pcr-clear,.pcr-app .pcr-interaction .pcr-save{width:auto;color:#fff}.pcr-app .pcr-interaction .pcr-cancel:hover,.pcr-app .pcr-interaction .pcr-clear:hover,.pcr-app .pcr-interaction .pcr-save:hover{-webkit-filter:brightness(.925);filter:brightness(.925)}.pcr-app .pcr-interaction .pcr-save{background:#4285f4}.pcr-app .pcr-interaction .pcr-cancel,.pcr-app .pcr-interaction .pcr-clear{background:#f44250}.pcr-app .pcr-interaction .pcr-cancel:focus,.pcr-app .pcr-interaction .pcr-clear:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px rgba(244,66,80,.75)}.pcr-app .pcr-selection .pcr-picker{position:absolute;height:18px;width:18px;border:2px solid #fff;border-radius:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pcr-app .pcr-selection .pcr-color-chooser,.pcr-app .pcr-selection .pcr-color-opacity,.pcr-app .pcr-selection .pcr-color-palette{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;cursor:grab;cursor:-webkit-grab}.pcr-app .pcr-selection .pcr-color-chooser:active,.pcr-app .pcr-selection .pcr-color-opacity:active,.pcr-app .pcr-selection .pcr-color-palette:active{cursor:grabbing;cursor:-webkit-grabbing}.pcr-app[data-theme=classic]{width:28.5em;max-width:95vw;padding:.8em}.pcr-app[data-theme=classic] .pcr-selection{display:flex;justify-content:space-between;flex-grow:1}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-preview{position:relative;z-index:1;width:2em;display:flex;flex-direction:column;justify-content:space-between;margin-right:.75em}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-preview:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');background-size:.5em;border-radius:.15em;z-index:-1}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-preview .pcr-last-color{cursor:pointer;transition:background-color .3s,box-shadow .3s;border-radius:.15em .15em 0 0;z-index:2}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-preview .pcr-current-color{border-radius:0 0 .15em .15em}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-preview .pcr-current-color,.pcr-app[data-theme=classic] .pcr-selection .pcr-color-preview .pcr-last-color{background:currentColor;width:100%;height:50%}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-palette{width:100%;height:8em;z-index:1}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-palette .pcr-palette{flex-grow:1;border-radius:.15em}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-palette .pcr-palette:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');background-size:.5em;border-radius:.15em;z-index:-1}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-chooser,.pcr-app[data-theme=classic] .pcr-selection .pcr-color-opacity{margin-left:.75em}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-chooser .pcr-picker,.pcr-app[data-theme=classic] .pcr-selection .pcr-color-opacity .pcr-picker{left:50%;transform:translateX(-50%)}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-chooser .pcr-slider,.pcr-app[data-theme=classic] .pcr-selection .pcr-color-opacity .pcr-slider{width:8px;flex-grow:1;border-radius:50em}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-chooser .pcr-slider{background:linear-gradient(180deg,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-opacity .pcr-slider{background:linear-gradient(180deg,transparent,#000),url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');background-size:100%,50%}
assets/css/handsontable.full.min.css CHANGED
@@ -1,31 +1,37 @@
1
- @charset "UTF-8";/*!
2
- (The MIT License)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
- Copyright (c) 2012-2014 Marcin Warpechowski
5
- Copyright (c) 2015 Handsoncode sp. z o.o. <hello@handsoncode.net>
6
-
7
- Permission is hereby granted, free of charge, to any person obtaining
8
- a copy of this software and associated documentation files (the
9
- 'Software'), to deal in the Software without restriction, including
10
- without limitation the rights to use, copy, modify, merge, publish,
11
- distribute, sublicense, and/or sell copies of the Software, and to
12
- permit persons to whom the Software is furnished to do so, subject to
13
- the following conditions:
14
-
15
- The above copyright notice and this permission notice shall be
16
- included in all copies or substantial portions of the Software.
17
-
18
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
19
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
-
26
- */.handsontable{position:relative}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable.htAutoSize{visibility:hidden;left:-99000px;position:absolute;top:-99000px}.handsontable .wtHider{width:0}.handsontable .wtSpreader{position:relative;width:0;height:auto}.handsontable table,.handsontable tbody,.handsontable thead,.handsontable td,.handsontable th,.handsontable input,.handsontable textarea,.handsontable div{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:initial}.handsontable table.htCore{border-collapse:separate;border-spacing:0;margin:0;border-width:0;table-layout:fixed;width:0;outline-width:0;max-width:none;max-height:none}.handsontable col{width:50px}.handsontable col.rowHeader{width:50px}.handsontable th,.handsontable td{border-top-width:0;border-left-width:0;border-right:1px solid #CCC;border-bottom:1px solid #CCC;height:22px;empty-cells:show;line-height:21px;padding:0 4px 0 4px;background-color:#FFF;vertical-align:top;overflow:hidden;outline-width:0;white-space:pre-line}.handsontable td.htInvalid{background-color:#ff4c42!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable th:last-child{border-right:1px solid #CCC;border-bottom:1px solid #CCC}.handsontable tr:first-child th.htNoFrame,.handsontable th:first-child.htNoFrame,.handsontable th.htNoFrame{border-left-width:0;background-color:white;border-color:#FFF}.handsontable th:first-child,.handsontable td:first-of-type,.handsontable .htNoFrame+th,.handsontable .htNoFrame+td{border-left:1px solid #CCC}.handsontable.htRowHeaders thead tr th:nth-child(2){border-left:1px solid #CCC}.handsontable tr:first-child th,.handsontable tr:first-child td{border-top:1px solid #CCC}.ht_master:not(.innerBorderLeft) ~ .handsontable tbody tr th,.ht_master:not(.innerBorderLeft) ~ .handsontable:not(.ht_clone_top) thead tr th:first-child{border-right-width:0}.ht_master:not(.innerBorderTop) thead tr:last-child th,.ht_master:not(.innerBorderTop) ~ .handsontable thead tr:last-child th,.ht_master:not(.innerBorderTop) thead tr.lastChild th,.ht_master:not(.innerBorderTop) ~ .handsontable thead tr.lastChild th{border-bottom-width:0}.handsontable th{background-color:#EEE;color:#222;text-align:center;font-weight:normal;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#CCC}.handsontable thead th .relative{padding:2px 4px}.handsontable .manualColumnMover{position:fixed;left:0;top:0;background-color:transparent;width:5px;height:25px;z-index:999;cursor:move}.handsontable .manualRowMover{position:fixed;left:-4px;top:0;background-color:transparent;height:5px;width:50px;z-index:999;cursor:move}.handsontable .manualColumnMoverGuide,.handsontable .manualRowMoverGuide{position:fixed;left:0;top:0;background-color:#CCC;width:25px;height:25px;opacity:.7;display:none}.handsontable .manualColumnMoverGuide.active,.handsontable .manualRowMoverGuide.active{display:block}.handsontable .manualColumnMover:hover,.handsontable .manualColumnMover.active,.handsontable .manualRowMover:hover,.handsontable .manualRowMover.active{background-color:#88F}.handsontable .manualColumnResizer{position:fixed;top:0;cursor:col-resize;z-index:110;width:5px;height:25px}.handsontable .manualRowResizer{position:fixed;left:0;cursor:row-resize;z-index:110;height:5px;width:50px}.handsontable .manualColumnResizer:hover,.handsontable .manualColumnResizer.active,.handsontable .manualRowResizer:hover,.handsontable .manualRowResizer.active{background-color:#AAB}.handsontable .manualColumnResizerGuide{position:fixed;right:0;top:0;background-color:#AAB;display:none;width:0;border-right:1px dashed #777;margin-left:5px}.handsontable .manualRowResizerGuide{position:fixed;left:0;bottom:0;background-color:#AAB;display:none;height:0;border-bottom:1px dashed #777;margin-top:5px}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block}.handsontable .columnSorting{position:relative}.handsontable .columnSorting:hover{text-decoration:underline;cursor:pointer}.handsontable .columnSorting.ascending::after{content:'\25B2';color:#5f5f5f;position:absolute;right:-15px}.handsontable .columnSorting.descending::after{content:'\25BC';color:#5f5f5f;position:absolute;right:-15px}.handsontable th.beforeHiddenColumn{position:relative}.handsontable th.beforeHiddenColumn::after,.handsontable th.afterHiddenColumn::before{content:'\25C0';color:#bbb;position:absolute;right:1px;top:2px;font-size:5pt}.handsontable th.afterHiddenColumn{position:relative}.handsontable th.afterHiddenColumn::before{left:1px;top:2px;right:auto;content:'\25B6'}.handsontable td.afterHiddenColumn.firstVisible{border-left:1px solid #CCC}.handsontable thead th.hiddenHeader{display:none}.handsontable .wtBorder{position:absolute;font-size:0}.handsontable .wtBorder.hidden{display:none!important}.handsontable td.area{background:-moz-linear-gradient(top,rgba(181,209,255,0.34) 0,rgba(181,209,255,0.34) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(181,209,255,0.34)),color-stop(100%,rgba(181,209,255,0.34)));background:-webkit-linear-gradient(top,rgba(181,209,255,0.34) 0,rgba(181,209,255,0.34) 100%);background:-o-linear-gradient(top,rgba(181,209,255,0.34) 0,rgba(181,209,255,0.34) 100%);background:-ms-linear-gradient(top,rgba(181,209,255,0.34) 0,rgba(181,209,255,0.34) 100%);background:linear-gradient(to bottom,rgba(181,209,255,0.34) 0,rgba(181,209,255,0.34) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#57b5d1ff',endColorstr='#57b5d1ff',GradientType=0);background-color:#fff}.handsontable .wtBorder.corner{font-size:0;cursor:crosshair}.handsontable .htBorder.htFillBorder{background:red;width:1px;height:1px}.handsontableInput{border:0;outline-width:0;margin:0;padding:1px 5px 0 5px;font-family:inherit;line-height:21px;font-size:inherit;box-shadow:0 0 0 2px #5292f7 inset;resize:none;display:inline-block;color:#000;border-radius:0;background-color:#FFF}.handsontableInputHolder{position:absolute;top:0;left:0;z-index:100}.htSelectEditor{-webkit-appearance:menulist-button!important;position:absolute;width:auto}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{content:'▶';color:#777;position:absolute;right:5px}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable .htAutocompleteArrow{float:right;font-size:10px;color:#EEE;cursor:default;width:16px;text-align:center}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{cursor:pointer;display:inline-block;width:100%}.handsontable .htNumeric{text-align:right}.htCommentCell{position:relative}.htCommentCell:after{content:'';position:absolute;top:0;right:0;border-left:6px solid transparent;border-top:6px solid red}@-webkit-keyframes opacity-hide{from{opacity:1}to{opacity:0}}@keyframes opacity-hide{from{opacity:1}to{opacity:0}}@-webkit-keyframes opacity-show{from{opacity:0}to{opacity:1}}@keyframes opacity-show{from{opacity:0}to{opacity:1}}.handsontable .handsontable.ht_clone_top .wtHider{padding:0 0 5px 0}.handsontable .autocompleteEditor.handsontable{padding-right:17px}.handsontable .autocompleteEditor.handsontable.htMacScroll{padding-right:15px}.handsontable.listbox{margin:0}.handsontable.listbox .ht_master table{border:1px solid #ccc;border-collapse:separate;background:white}.handsontable.listbox th,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th,.handsontable.listbox tr:first-child td,.handsontable.listbox td{border-color:transparent}.handsontable.listbox th,.handsontable.listbox td{white-space:nowrap;text-overflow:ellipsis}.handsontable.listbox td.htDimmed{cursor:default;color:inherit;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr td.current,.handsontable.listbox tr:hover td{background:#eee}.ht_clone_top{z-index:101}.ht_clone_left{z-index:102}.ht_clone_top_left_corner,.ht_clone_bottom_left_corner{z-index:103}.ht_clone_debug{z-index:103}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.htBordered{border-width:1px}.htBordered.htTopBorderSolid{border-top-style:solid;border-top-color:#000}.htBordered.htRightBorderSolid{border-right-style:solid;border-right-color:#000}.htBordered.htBottomBorderSolid{border-bottom-style:solid;border-bottom-color:#000}.htBordered.htLeftBorderSolid{border-left-style:solid;border-left-color:#000}.htCommentTextArea{-moz-box-shadow:1px 1px 2px #bbb;-webkit-box-shadow:1px 1px 2px #bbb;background-color:#fffacd;border:1px solid #999;box-shadow:1px 1px 2px #bbb;font-family:'Arial'}.handsontable tbody tr th:nth-last-child(2){border-right:1px solid #CCC}.handsontable thead tr:nth-last-child(2) th.htGroupIndicatorContainer{border-bottom:1px solid #CCC;padding-bottom:5px}.ht_clone_top_left_corner thead tr th:nth-last-child(2){border-right:1px solid #CCC}.htCollapseButton{width:10px;height:10px;line-height:10px;text-align:center;border-radius:5px;border:1px solid #f3f3f3;-webkit-box-shadow:1px 1px 3px rgba(0,0,0,0.4);box-shadow:1px 1px 3px rgba(0,0,0,0.4);cursor:pointer;margin-bottom:3px;position:relative}.htCollapseButton:after{content:"";height:300%;width:1px;display:block;background:#ccc;margin-left:4px;position:absolute;bottom:10px}thead .htCollapseButton{right:5px;position:absolute;top:5px;background:#fff}thead .htCollapseButton:after{height:1px;width:700%;right:10px;top:4px}.handsontable tr th .htExpandButton{position:absolute;width:10px;height:10px;line-height:10px;text-align:center;border-radius:5px;border:1px solid #f3f3f3;-webkit-box-shadow:1px 1px 3px rgba(0,0,0,0.4);box-shadow:1px 1px 3px rgba(0,0,0,0.4);cursor:pointer;top:0;display:none}.handsontable thead tr th .htExpandButton{top:5px}.handsontable tr th .htExpandButton.clickable{display:block}.collapsibleIndicator{position:absolute;top:50%;transform:translate(0%,-50%);right:5px;border:1px solid #a6a6a6;line-height:10px;color:#222;border-radius:10px;font-size:10px;width:10px;height:10px;cursor:pointer;-webkit-box-shadow:0 0 0 6px rgba(238,238,238,1);-moz-box-shadow:0 0 0 6px rgba(238,238,238,1);box-shadow:0 0 0 6px rgba(238,238,238,1);background:#eee}.handsontable col.hidden{width:0!important}.handsontable table tr th.lightRightBorder{border-right:1px solid #e6e6e6}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_master,.ht_clone_left,.ht_clone_top,.ht_clone_bottom{overflow:hidden}.ht_master .wtHolder{overflow:auto}.ht_clone_left .wtHolder{overflow-x:hidden;overflow-y:auto}.ht_clone_top .wtHolder,.ht_clone_bottom .wtHolder{overflow-x:auto;overflow-y:hidden}.wtDebugHidden{display:none}.wtDebugVisible{display:block;-webkit-animation-duration:.5s;-webkit-animation-name:wtFadeInFromNone;animation-duration:.5s;animation-name:wtFadeInFromNone}@keyframes wtFadeInFromNone{0%{display:none;opacity:0}1%{display:block;opacity:0}100%{display:block;opacity:1}}@-webkit-keyframes wtFadeInFromNone{0%{display:none;opacity:0}1%{display:block;opacity:0}100%{display:block;opacity:1}}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.htMobileEditorContainer{display:none;position:absolute;top:0;width:70%;height:54pt;background:#f8f8f8;border-radius:20px;border:1px solid #ebebeb;z-index:999;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-text-size-adjust:none}.topLeftSelectionHandle:not(.ht_master .topLeftSelectionHandle),.topLeftSelectionHandle-HitArea:not(.ht_master .topLeftSelectionHandle-HitArea){z-index:9999}.topLeftSelectionHandle,.topLeftSelectionHandle-HitArea,.bottomRightSelectionHandle,.bottomRightSelectionHandle-HitArea{left:-10000px;top:-10000px}.htMobileEditorContainer.active{display:block}.htMobileEditorContainer .inputs{position:absolute;right:210pt;bottom:10pt;top:10pt;left:14px;height:34pt}.htMobileEditorContainer .inputs textarea{font-size:13pt;border:1px solid #a1a1a1;-webkit-appearance:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;position:absolute;left:14px;right:14px;top:0;bottom:0;padding:7pt}.htMobileEditorContainer .cellPointer{position:absolute;top:-13pt;height:0;width:0;left:30px;border-left:13pt solid transparent;border-right:13pt solid transparent;border-bottom:13pt solid #ebebeb}.htMobileEditorContainer .cellPointer.hidden{display:none}.htMobileEditorContainer .cellPointer:before{content:'';display:block;position:absolute;top:2px;height:0;width:0;left:-13pt;border-left:13pt solid transparent;border-right:13pt solid transparent;border-bottom:13pt solid #f8f8f8}.htMobileEditorContainer .moveHandle{position:absolute;top:10pt;left:5px;width:30px;bottom:0;cursor:move;z-index:9999}.htMobileEditorContainer .moveHandle:after{content:"..\a..\a..\a..";white-space:pre;line-height:10px;font-size:20pt;display:inline-block;margin-top:-8px;color:#ebebeb}.htMobileEditorContainer .positionControls{width:205pt;position:absolute;right:5pt;top:0;bottom:0}.htMobileEditorContainer .positionControls>div{width:50pt;height:100%;float:left}.htMobileEditorContainer .positionControls>div:after{content:" ";display:block;width:15pt;height:15pt;text-align:center;line-height:50pt}.htMobileEditorContainer .leftButton:after,.htMobileEditorContainer .rightButton:after,.htMobileEditorContainer .upButton:after,.htMobileEditorContainer .downButton:after{transform-origin:5pt 5pt;-webkit-transform-origin:5pt 5pt;margin:21pt 0 0 21pt}.htMobileEditorContainer .leftButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(-45deg)}.htMobileEditorContainer .leftButton:active:after{border-color:#cfcfcf}.htMobileEditorContainer .rightButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(135deg)}.htMobileEditorContainer .rightButton:active:after{border-color:#cfcfcf}.htMobileEditorContainer .upButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(45deg)}.htMobileEditorContainer .upButton:active:after{border-color:#cfcfcf}.htMobileEditorContainer .downButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(225deg)}.htMobileEditorContainer .downButton:active:after{border-color:#cfcfcf}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}/*!
27
- * Handsontable ContextMenu
28
- */.htContextMenu{display:none;position:absolute;z-index:1060}.htContextMenu .ht_clone_top,.htContextMenu .ht_clone_left,.htContextMenu .ht_clone_corner,.htContextMenu .ht_clone_debug{display:none}.htContextMenu table.htCore{border:1px solid #bbb;border-bottom-width:2px;border-right-width:2px}.htContextMenu .wtBorder{visibility:hidden}.htContextMenu table tbody tr td{background:white;border-width:0;padding:4px 6px 0 6px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htContextMenu table tbody tr td:first-child{border:0}.htContextMenu table tbody tr td.htDimmed{font-style:normal;color:#323232}.htContextMenu table tbody tr td.current,.htContextMenu table tbody tr td.zeroclipboard-is-hover{background:#e9e9e9}.htContextMenu table tbody tr td.htSeparator{border-top:1px solid #bbb;height:0;padding:0;cursor:default}.htContextMenu table tbody tr td.htDisabled{color:#999}.htContextMenu table tbody tr td.htDisabled:hover{background:#fff;color:#999;cursor:default}.htContextMenu table tbody tr.htHidden{display:none}.htContextMenu table tbody tr td .htItemWrapper{margin-left:10px;margin-right:6px}.htContextMenu table tbody tr td div span.selected{margin-top:-2px;position:absolute;left:4px}.htContextMenu .ht_master .wtHolder{overflow:hidden}/*!
29
  * Pikaday
30
  * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/
31
- */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:before,.pika-single:after{content:" ";display:table}.pika-single:after{clear:both}.pika-single{*zoom:1}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;*display:inline;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:bold;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-prev,.pika-next{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5;*position:absolute;*top:0}.pika-prev:hover,.pika-next:hover{opacity:1}.pika-prev,.is-rtl .pika-next{float:left;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==');*left:0}.pika-next,.is-rtl .pika-prev{float:right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=');*right:0}.pika-prev.is-disabled,.pika-next.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block;*display:inline}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table th,.pika-table td{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:bold;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:bold}.is-selected .pika-button{color:#fff;font-weight:bold;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#d5e9f7}.is-startrange .pika-button{color:#fff;background:#6cb31d;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:0;cursor:help}
 
 
 
1
+ @charset "UTF-8";
2
+ /*!
3
+ * (The MIT License)
4
+ *
5
+ * Copyright (c) 2012-2014 Marcin Warpechowski
6
+ * Copyright (c) 2015 Handsoncode sp. z o.o. <hello@handsoncode.net>
7
+ *
8
+ * Permission is hereby granted, free of charge, to any person obtaining
9
+ * a copy of this software and associated documentation files (the
10
+ * 'Software'), to deal in the Software without restriction, including
11
+ * without limitation the rights to use, copy, modify, merge, publish,
12
+ * distribute, sublicense, and/or sell copies of the Software, and to
13
+ * permit persons to whom the Software is furnished to do so, subject to
14
+ * the following conditions:
15
+ *
16
+ * The above copyright notice and this permission notice shall be
17
+ * included in all copies or substantial portions of the Software.
18
+ *
19
+ * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
20
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
23
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
+ *
27
+ * Version: 6.2.2
28
+ * Release date: 19/12/2018 (built at 18/12/2018 14:43:44)
29
+ */.handsontable .table td,.handsontable .table th{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child td,.handsontable .table caption+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table thead:first-child tr:first-child td,.handsontable .table thead:first-child tr:first-child th{border-top:1px solid #ccc}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered td,.handsontable .table-bordered th{border-left:none}.handsontable .table-bordered td:first-child,.handsontable .table-bordered th:first-child{border-left:1px solid #ccc}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0 4px}.col-lg-1.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-md-1.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable{padding-left:0;padding-right:0}.handsontable .table-striped>tbody>tr:nth-of-type(2n){background-color:#fff}.handsontable{position:relative}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable.htAutoSize{visibility:hidden;left:-99000px;position:absolute;top:-99000px}.handsontable .wtHider{width:0}.handsontable .wtSpreader{position:relative;width:0;height:auto}.handsontable div,.handsontable input,.handsontable table,.handsontable tbody,.handsontable td,.handsontable textarea,.handsontable th,.handsontable thead{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:0}.handsontable table.htCore{border-collapse:separate;border-spacing:0;margin:0;border-width:0;table-layout:fixed;width:0;outline-width:0;cursor:default;max-width:none;max-height:none}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable td,.handsontable th{border-top-width:0;border-left-width:0;border-right:1px solid #ccc;border-bottom:1px solid #ccc;height:22px;empty-cells:show;line-height:21px;padding:0 4px;background-color:#fff;vertical-align:top;overflow:hidden;outline-width:0;white-space:pre-line;background-clip:padding-box}.handsontable td.htInvalid{background-color:#ff4c42!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable th:last-child{border-right:1px solid #ccc;border-bottom:1px solid #ccc}.handsontable th.htNoFrame,.handsontable th:first-child.htNoFrame,.handsontable tr:first-child th.htNoFrame{border-left-width:0;background-color:#fff;border-color:#fff}.handsontable .htNoFrame+td,.handsontable .htNoFrame+th,.handsontable.htRowHeaders thead tr th:nth-child(2),.handsontable td:first-of-type,.handsontable th:first-child,.handsontable th:nth-child(2){border-left:1px solid #ccc}.handsontable tr:first-child td,.handsontable tr:first-child th{border-top:1px solid #ccc}.ht_master:not(.innerBorderLeft):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child,.ht_master:not(.innerBorderLeft):not(.emptyColumns)~.handsontable tbody tr th{border-right-width:0}.ht_master:not(.innerBorderTop) thead tr.lastChild th,.ht_master:not(.innerBorderTop) thead tr:last-child th,.ht_master:not(.innerBorderTop)~.handsontable thead tr.lastChild th,.ht_master:not(.innerBorderTop)~.handsontable thead tr:last-child th{border-bottom-width:0}.handsontable th{background-color:#f0f0f0;color:#222;text-align:center;font-weight:400;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#ccc}.handsontable thead th .relative{padding:2px 4px}#hot-display-license-info{font-size:10px;color:#323232;padding:5px 0 3px;font-family:Helvetica,Arial,sans-serif;text-align:left}.handsontable .manualColumnResizer{position:fixed;top:0;cursor:col-resize;z-index:110;width:5px;height:25px}.handsontable .manualRowResizer{position:fixed;left:0;cursor:row-resize;z-index:110;height:5px;width:50px}.handsontable .manualColumnResizer.active,.handsontable .manualColumnResizer:hover,.handsontable .manualRowResizer.active,.handsontable .manualRowResizer:hover{background-color:#34a9db}.handsontable .manualColumnResizerGuide{position:fixed;right:0;top:0;background-color:#34a9db;display:none;width:0;border-right:1px dashed #777;margin-left:5px}.handsontable .manualRowResizerGuide{position:fixed;left:0;bottom:0;background-color:#34a9db;display:none;height:0;border-bottom:1px dashed #777;margin-top:5px}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:199}.handsontable .columnSorting{position:relative}.handsontable .columnSorting.sortAction:hover{text-decoration:underline;cursor:pointer}.handsontable span.colHeader{display:inline-block;line-height:1.1}.handsontable span.colHeader.columnSorting:before{top:50%;margin-top:-6px;padding-left:8px;position:absolute;right:-9px;content:"";height:10px;width:5px;background-size:contain;background-repeat:no-repeat;background-position-x:right}.handsontable span.colHeader.columnSorting.ascending:before{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFNJREFUeAHtzjkSgCAUBNHPgsoy97+ulGXRqJE5L+xkxoYt2UdsLb5bqFINz+aLuuLn5rIu2RkO3fZpWENimNgiw6iBYRTPMLJjGFxQZ1hxxb/xBI1qC8k39CdKAAAAAElFTkSuQmCC")}.handsontable span.colHeader.columnSorting.descending:before{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFJJREFUeAHtzjkSgCAQRNFmQYUZ7n9dKUvru0TmvPAn3br0QfgdZ5xx6x+rQn23GqTYnq1FDcnuzZIO2WmedVqIRVxgGKEyjNgYRjKGkZ1hFIZ3I70LyM0VtU8AAAAASUVORK5CYII=")}.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled):after{content:"*";display:inline-block;position:relative;padding-right:20px}.handsontable .wtBorder{position:absolute;font-size:0}.handsontable .wtBorder.hidden{display:none!important}.handsontable .wtBorder.current{z-index:10}.handsontable .wtBorder.area{z-index:8}.handsontable .wtBorder.fill{z-index:6}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;bottom:-100%\9;background:#005eff}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{bottom:-100%}}.handsontable td.area:before{opacity:.1}.handsontable td.area-1:before{opacity:.2}.handsontable td.area-2:before{opacity:.27}.handsontable td.area-3:before{opacity:.35}.handsontable td.area-4:before{opacity:.41}.handsontable td.area-5:before{opacity:.47}.handsontable td.area-6:before{opacity:.54}.handsontable td.area-7:before{opacity:.58}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontable .wtBorder.corner{font-size:0;cursor:crosshair}.handsontable .htBorder.htFillBorder{background:red;width:1px;height:1px}.handsontableInput{border:none;outline-width:0;margin:0;padding:1px 5px 0;font-family:inherit;line-height:21px;font-size:inherit;box-shadow:inset 0 0 0 2px #5292f7;resize:none;display:block;color:#000;border-radius:0;background-color:#fff}.handsontableInputHolder{position:absolute;top:0;left:0;z-index:104}.htSelectEditor{-webkit-appearance:menulist-button!important;position:absolute;width:auto}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{content:"\25B6";color:#777;position:absolute;right:5px;font-size:9px}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable .htAutocompleteArrow{float:right;font-size:10px;color:#eee;cursor:default;width:16px;text-align:center}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput{display:inline-block;vertical-align:middle}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{cursor:pointer;display:inline-block;width:100%}.handsontable .handsontable.ht_clone_top .wtHider{padding:0 0 5px}.handsontable .autocompleteEditor.handsontable{padding-right:17px}.handsontable .autocompleteEditor.handsontable.htMacScroll{padding-right:15px}.handsontable.listbox{margin:0}.handsontable.listbox .ht_master table{border:1px solid #ccc;border-collapse:separate;background:#fff}.handsontable.listbox td,.handsontable.listbox th,.handsontable.listbox tr:first-child td,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th{border-color:transparent}.handsontable.listbox td,.handsontable.listbox th{white-space:nowrap;text-overflow:ellipsis}.handsontable.listbox td.htDimmed{cursor:default;color:inherit;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr:hover td,.handsontable.listbox tr td.current{background:#eee}.ht_clone_top{z-index:101}.ht_clone_left{z-index:102}.ht_clone_bottom_left_corner,.ht_clone_debug,.ht_clone_top_left_corner{z-index:103}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.htBordered{border-width:1px}.htBordered.htTopBorderSolid{border-top-style:solid;border-top-color:#000}.htBordered.htRightBorderSolid{border-right-style:solid;border-right-color:#000}.htBordered.htBottomBorderSolid{border-bottom-style:solid;border-bottom-color:#000}.htBordered.htLeftBorderSolid{border-left-style:solid;border-left-color:#000}.handsontable tbody tr th:nth-last-child(2){border-right:1px solid #ccc}.handsontable thead tr:nth-last-child(2) th.htGroupIndicatorContainer{border-bottom:1px solid #ccc;padding-bottom:5px}.ht_clone_top_left_corner thead tr th:nth-last-child(2){border-right:1px solid #ccc}.htCollapseButton{width:10px;height:10px;line-height:10px;text-align:center;border-radius:5px;border:1px solid #f3f3f3;box-shadow:1px 1px 3px rgba(0,0,0,.4);cursor:pointer;margin-bottom:3px;position:relative}.htCollapseButton:after{content:"";height:300%;width:1px;display:block;background:#ccc;margin-left:4px;position:absolute;bottom:10px}thead .htCollapseButton{right:5px;position:absolute;top:5px;background:#fff}thead .htCollapseButton:after{height:1px;width:700%;right:10px;top:4px}.handsontable tr th .htExpandButton{position:absolute;width:10px;height:10px;line-height:10px;text-align:center;border-radius:5px;border:1px solid #f3f3f3;box-shadow:1px 1px 3px rgba(0,0,0,.4);cursor:pointer;top:0;display:none}.handsontable thead tr th .htExpandButton{top:5px}.handsontable tr th .htExpandButton.clickable{display:block}.collapsibleIndicator{position:absolute;top:50%;transform:translateY(-50%);right:5px;border:1px solid #a6a6a6;line-height:10px;color:#222;border-radius:10px;font-size:10px;width:10px;height:10px;cursor:pointer;box-shadow:0 0 0 6px #eee;background:#eee}.handsontable col.hidden{width:0!important}.handsontable table tr th.lightRightBorder{border-right:1px solid #e6e6e6}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_clone_bottom,.ht_clone_left,.ht_clone_top,.ht_master{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_clone_left thead,.handsontable .ht_master thead,.handsontable .ht_master tr th{visibility:hidden}.ht_clone_bottom .wtHolder,.ht_clone_left .wtHolder,.ht_clone_top .wtHolder{overflow:hidden}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.htMobileEditorContainer{display:none;position:absolute;top:0;width:70%;height:54pt;background:#f8f8f8;border-radius:20px;border:1px solid #ebebeb;z-index:999;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-text-size-adjust:none}.topLeftSelectionHandle-HitArea:not(.ht_master .topLeftSelectionHandle-HitArea),.topLeftSelectionHandle:not(.ht_master .topLeftSelectionHandle){z-index:9999}.bottomRightSelectionHandle,.bottomRightSelectionHandle-HitArea,.topLeftSelectionHandle,.topLeftSelectionHandle-HitArea{left:-10000px;top:-10000px}.htMobileEditorContainer.active{display:block}.htMobileEditorContainer .inputs{position:absolute;right:210pt;bottom:10pt;top:10pt;left:14px;height:34pt}.htMobileEditorContainer .inputs textarea{font-size:13pt;border:1px solid #a1a1a1;-webkit-appearance:none;box-shadow:none;position:absolute;left:14px;right:14px;top:0;bottom:0;padding:7pt}.htMobileEditorContainer .cellPointer{position:absolute;top:-13pt;height:0;width:0;left:30px;border-left:13pt solid transparent;border-right:13pt solid transparent;border-bottom:13pt solid #ebebeb}.htMobileEditorContainer .cellPointer.hidden{display:none}.htMobileEditorContainer .cellPointer:before{content:"";display:block;position:absolute;top:2px;height:0;width:0;left:-13pt;border-left:13pt solid transparent;border-right:13pt solid transparent;border-bottom:13pt solid #f8f8f8}.htMobileEditorContainer .moveHandle{position:absolute;top:10pt;left:5px;width:30px;bottom:0;cursor:move;z-index:9999}.htMobileEditorContainer .moveHandle:after{content:"..\A..\A..\A..";white-space:pre;line-height:10px;font-size:20pt;display:inline-block;margin-top:-8px;color:#ebebeb}.htMobileEditorContainer .positionControls{width:205pt;position:absolute;right:5pt;top:0;bottom:0}.htMobileEditorContainer .positionControls>div{width:50pt;height:100%;float:left}.htMobileEditorContainer .positionControls>div:after{content:" ";display:block;width:15pt;height:15pt;text-align:center;line-height:50pt}.htMobileEditorContainer .downButton:after,.htMobileEditorContainer .leftButton:after,.htMobileEditorContainer .rightButton:after,.htMobileEditorContainer .upButton:after{transform-origin:5pt 5pt;-webkit-transform-origin:5pt 5pt;margin:21pt 0 0 21pt}.htMobileEditorContainer .leftButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(-45deg)}.htMobileEditorContainer .leftButton:active:after{border-color:#cfcfcf}.htMobileEditorContainer .rightButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(135deg)}.htMobileEditorContainer .rightButton:active:after{border-color:#cfcfcf}.htMobileEditorContainer .upButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(45deg)}.htMobileEditorContainer .upButton:active:after{border-color:#cfcfcf}.htMobileEditorContainer .downButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(225deg)}.htMobileEditorContainer .downButton:active:after{border-color:#cfcfcf}.handsontable.hide-tween{animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}
30
 
31
+ /*!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  * Pikaday
33
  * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/
34
+ */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single{*zoom:1}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;*display:inline;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:none;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:50%;background-repeat:no-repeat;background-size:75% 75%;opacity:.5;*position:absolute;*top:0}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==");*left:0}.is-rtl .pika-prev,.pika-next{float:right;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=");*right:0}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block;*display:inline}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:none;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#d5e9f7}.is-startrange .pika-button{color:#fff;background:#6cb31d;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button,.is-outside-current-month .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}.htCommentCell{position:relative}.htCommentCell:after{content:"";position:absolute;top:0;right:0;border-left:6px solid transparent;border-top:6px solid #000}.htComments{display:none;z-index:1059;position:absolute}.htCommentTextArea{box-shadow:0 1px 3px rgba(0,0,0,.117647),0 1px 2px rgba(0,0,0,.239216);box-sizing:border-box;border:none;border-left:3px solid #ccc;background-color:#fff;width:215px;height:90px;font-size:12px;padding:5px;outline:0!important;-webkit-appearance:none}.htCommentTextArea:focus{box-shadow:0 1px 3px rgba(0,0,0,.117647),0 1px 2px rgba(0,0,0,.239216),inset 0 0 0 1px #5292f7;border-left:3px solid #5292f7}
35
+ /*!
36
+ * Handsontable ContextMenu
37
+ */.htContextMenu:not(.htGhostTable){display:none;position:absolute;z-index:1060}.htContextMenu .ht_clone_corner,.htContextMenu .ht_clone_debug,.htContextMenu .ht_clone_left,.htContextMenu .ht_clone_top{display:none}.htContextMenu table.htCore{border:1px solid #ccc;border-bottom-width:2px;border-right-width:2px}.htContextMenu .wtBorder{visibility:hidden}.htContextMenu table tbody tr td{background:#fff;border-width:0;padding:4px 6px 0;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htContextMenu table tbody tr td:first-child{border:0}.htContextMenu table tbody tr td.htDimmed{font-style:normal;color:#323232}.htContextMenu table tbody tr td.current,.htContextMenu table tbody tr td.zeroclipboard-is-hover{background:#f3f3f3}.htContextMenu table tbody tr td.htSeparator{border-top:1px solid #e6e6e6;height:0;padding:0;cursor:default}.htContextMenu table tbody tr td.htDisabled{color:#999;cursor:default}.htContextMenu table tbody tr td.htDisabled:hover{background:#fff;color:#999;cursor:default}.htContextMenu table tbody tr.htHidden{display:none}.htContextMenu table tbody tr td .htItemWrapper{margin-left:10px;margin-right:6px}.htContextMenu table tbody tr td div span.selected{margin-top:-2px;position:absolute;left:4px}.htContextMenu .ht_master .wtHolder{overflow:hidden}textarea#HandsontableCopyPaste{position:fixed!important;top:0!important;right:100%!important;overflow:hidden;opacity:0;outline:0 none!important}.htRowHeaders .ht_master.innerBorderLeft~.ht_clone_left td:first-of-type,.htRowHeaders .ht_master.innerBorderLeft~.ht_clone_top_left_corner th:nth-child(2){border-left:0 none}.handsontable.ht__manualColumnMove.after-selection--columns thead th.ht__highlight{cursor:move;cursor:grab}.handsontable.ht__manualColumnMove.on-moving--columns,.handsontable.ht__manualColumnMove.on-moving--columns thead th.ht__highlight{cursor:move;cursor:grabbing}.handsontable.ht__manualColumnMove.on-moving--columns .manualColumnResizer{display:none}.handsontable .ht__manualColumnMove--backlight,.handsontable .ht__manualColumnMove--guideline{position:absolute;height:100%;display:none}.handsontable .ht__manualColumnMove--guideline{background:#757575;width:2px;top:0;margin-left:-1px;z-index:105}.handsontable .ht__manualColumnMove--backlight{background:#343434;background:rgba(52,52,52,.25);display:none;z-index:105;pointer-events:none}.handsontable.on-moving--columns .ht__manualColumnMove--backlight,.handsontable.on-moving--columns.show-ui .ht__manualColumnMove--guideline{display:block}.handsontable .wtHider{position:relative}.handsontable.ht__manualRowMove.after-selection--rows tbody th.ht__highlight{cursor:move;cursor:grab}.handsontable.ht__manualRowMove.on-moving--rows,.handsontable.ht__manualRowMove.on-moving--rows tbody th.ht__highlight{cursor:move;cursor:grabbing}.handsontable.ht__manualRowMove.on-moving--rows .manualRowResizer{display:none}.handsontable .ht__manualRowMove--backlight,.handsontable .ht__manualRowMove--guideline{position:absolute;width:100%;display:none}.handsontable .ht__manualRowMove--guideline{background:#757575;height:2px;left:0;margin-top:-1px;z-index:105}.handsontable .ht__manualRowMove--backlight{background:#343434;background:rgba(52,52,52,.25);display:none;z-index:105;pointer-events:none}.handsontable.on-moving--rows .ht__manualRowMove--backlight,.handsontable.on-moving--rows.show-ui .ht__manualRowMove--guideline{display:block}.handsontable tbody td[rowspan][class*=area][class*=highlight]:not([class*=fullySelectedMergedCell]):before{opacity:0}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-0]:before,.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-multiple]:before{opacity:.1}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-1]:before{opacity:.2}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-2]:before{opacity:.27}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-3]:before{opacity:.35}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-4]:before{opacity:.41}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-5]:before{opacity:.47}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-6]:before{opacity:.54}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-7]:before{opacity:.58}
assets/css/style.css CHANGED
@@ -2,9 +2,9 @@
2
  font-family: 'wpDataTablesIcons';
3
  src: url('../fonts/wpDataTablesIcons.eot');
4
  src: url('../fonts/wpDataTablesIcons.eot#iefix') format('embedded-opentype'),
5
- url('../fonts/wpDataTablesIcons.ttf') format('truetype'),
6
- url('../fonts/wpDataTablesIcons.woff') format('woff'),
7
- url('../fonts/wpDataTablesIcons.svg#wpDataTablesIcons') format('svg');
8
  font-weight: normal;
9
  font-style: normal;
10
  font-display: block;
@@ -26,6 +26,72 @@
26
  -moz-osx-font-smoothing: grayscale;
27
  }
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  .wpdt-icon-trophy:before {
30
  content: "\e916";
31
  }
@@ -476,6 +542,9 @@
476
  .wpdt-icon-percent:before {
477
  content: "\f295";
478
  }
 
 
 
479
  .wpdt-icon-long-arrow-alt-down:before {
480
  content: "\f309";
481
  }
@@ -563,6 +632,9 @@
563
  .wpdt-icon-file-csv:before {
564
  content: "\f6dd";
565
  }
 
 
 
566
  .wpdt-icon-line-columns:before {
567
  content: "\f870";
568
  }
@@ -596,6 +668,9 @@
596
  .wpdt-icon-clock-full:before {
597
  content: "\f018";
598
  }
 
 
 
599
  .wpdt-icon-step-backward:before {
600
  content: "\f048";
601
  }
@@ -878,6 +953,9 @@
878
  .wpdt-icon-layer-group:before {
879
  content: "\f5fd";
880
  }
 
 
 
881
  .wpdt-icon-sort-alpha-down-alt:before {
882
  content: "\f662";
883
  }
@@ -923,6 +1001,12 @@
923
  .wpdt-icon-calendar-times-thin:before {
924
  content: "\f274";
925
  }
 
 
 
 
 
 
926
  .wpdt-icon-spinner9:before {
927
  content: "\e982";
928
- }
2
  font-family: 'wpDataTablesIcons';
3
  src: url('../fonts/wpDataTablesIcons.eot');
4
  src: url('../fonts/wpDataTablesIcons.eot#iefix') format('embedded-opentype'),
5
+ url('../fonts/wpDataTablesIcons.ttf') format('truetype'),
6
+ url('../fonts/wpDataTablesIcons.woff') format('woff'),
7
+ url('../fonts/wpDataTablesIcons.svg#wpDataTablesIcons') format('svg');
8
  font-weight: normal;
9
  font-style: normal;
10
  font-display: block;
26
  -moz-osx-font-smoothing: grayscale;
27
  }
28
 
29
+ .wpdt-icon-star-half:before {
30
+ content: "\e92c";
31
+ }
32
+ .wpdt-icon-wrap-text:before {
33
+ content: "\e929";
34
+ }
35
+ .wpdt-icon-clip-text:before {
36
+ content: "\e92a";
37
+ }
38
+ .wpdt-icon-overflow-text:before {
39
+ content: "\e92b";
40
+ }
41
+ .wpdt-icon-rows-1:before {
42
+ content: "\e921";
43
+ }
44
+ .wpdt-icon-columns-1:before {
45
+ content: "\e926";
46
+ }
47
+ .wpdt-icon-rows-2:before {
48
+ content: "\e927";
49
+ }
50
+ .wpdt-icon-columns-2:before {
51
+ content: "\e928";
52
+ }
53
+ .wpdt-icon-vertical-align-top:before {
54
+ content: "\e918";
55
+ }
56
+ .wpdt-icon-vertical-align-center:before {
57
+ content: "\e919";
58
+ }
59
+ .wpdt-icon-vertical-align-bottom:before {
60
+ content: "\e91a";
61
+ }
62
+ .wpdt-icon-remove-row:before {
63
+ content: "\e91d";
64
+ }
65
+ .wpdt-icon-add-row-top:before {
66
+ content: "\e91e";
67
+ }
68
+ .wpdt-icon-add-row-bottom:before {
69
+ content: "\e91f";
70
+ }
71
+ .wpdt-icon-add-column-right:before {
72
+ content: "\e920";
73
+ }
74
+ .wpdt-icon-add-column-left:before {
75
+ content: "\e91b";
76
+ }
77
+ .wpdt-icon-remove-column:before {
78
+ content: "\e91c";
79
+ }
80
+ .wpdt-icon-insert-column-after:before {
81
+ content: "\e922";
82
+ }
83
+ .wpdt-icon-insert-column-before:before {
84
+ content: "\e923";
85
+ }
86
+ .wpdt-icon-insert-row-after:before {
87
+ content: "\e924";
88
+ }
89
+ .wpdt-icon-insert-row-before:before {
90
+ content: "\e925";
91
+ }
92
+ .wpdt-icon-g-cap:before {
93
+ content: "\e917";
94
+ }
95
  .wpdt-icon-trophy:before {
96
  content: "\e916";
97
  }
542
  .wpdt-icon-percent:before {
543
  content: "\f295";
544
  }
545
+ .wpdt-icon-undo-alt:before {
546
+ content: "\f2ea";
547
+ }
548
  .wpdt-icon-long-arrow-alt-down:before {
549
  content: "\f309";
550
  }
632
  .wpdt-icon-file-csv:before {
633
  content: "\f6dd";
634
  }
635
+ .wpdt-icon-brackets:before {
636
+ content: "\f7e9";
637
+ }
638
  .wpdt-icon-line-columns:before {
639
  content: "\f870";
640
  }
668
  .wpdt-icon-clock-full:before {
669
  content: "\f018";
670
  }
671
+ .wpdt-icon-tint:before {
672
+ content: "\f044";
673
+ }
674
  .wpdt-icon-step-backward:before {
675
  content: "\f048";
676
  }
953
  .wpdt-icon-layer-group:before {
954
  content: "\f5fd";
955
  }
956
+ .wpdt-icon-brackets1:before {
957
+ content: "\f7ea";
958
+ }
959
  .wpdt-icon-sort-alpha-down-alt:before {
960
  content: "\f662";
961
  }
1001
  .wpdt-icon-calendar-times-thin:before {
1002
  content: "\f274";
1003
  }
1004
+ .wpdt-icon-undo2:before {
1005
+ content: "\e967";
1006
+ }
1007
+ .wpdt-icon-redo2:before {
1008
+ content: "\e968";
1009
+ }
1010
  .wpdt-icon-spinner9:before {
1011
  content: "\e982";
1012
+ }
assets/css/style.min.css CHANGED
@@ -1 +1 @@
1
- @font-face{font-family:wpDataTablesIcons;src:url(../fonts/wpDataTablesIcons.eot);src:url(../fonts/wpDataTablesIcons.eot#iefix) format('embedded-opentype'),url(../fonts/wpDataTablesIcons.ttf) format('truetype'),url(../fonts/wpDataTablesIcons.woff) format('woff'),url(../fonts/wpDataTablesIcons.svg#wpDataTablesIcons) format('svg');font-weight:400;font-style:normal;font-display:block}[class*=" wpdt-icon-"],[class^=wpdt-icon-]{font-family:wpDataTablesIcons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wpdt-icon-trophy:before{content:"\e916"}.wpdt-icon-magic-stick:before{content:"\e914"}.wpdt-icon-book:before{content:"\e915"}.wpdt-icon-csv:before{content:"\e900"}.wpdt-icon-search-w:before{content:"\e901"}.wpdt-icon-shape:before{content:"\e904"}.wpdt-icon-sort-down1:before{content:"\e905"}.wpdt-icon-cancel-x:before{content:"\e906"}.wpdt-icon-uniE907:before{content:"\e907"}.wpdt-icon-copy-wa:before{content:"\e908"}.wpdt-icon-excel:before{content:"\e90a"}.wpdt-icon-export:before{content:"\e909"}.wpdt-icon-filled-check:before{content:"\e90b"}.wpdt-icon-icon-close:before{content:"\e90c"}.wpdt-icon-outlined-check:before{content:"\e90d"}.wpdt-icon-pdf:before{content:"\e912"}.wpdt-icon-print:before{content:"\e90e"}.wpdt-icon-delete:before{content:"\e90f"}.wpdt-icon-edit:before{content:"\e910"}.wpdt-icon-eye-w:before{content:"\e911"}.wpdt-icon-plus-wa:before{content:"\e913"}.wpdt-icon-glyph:before{content:"\e001"}.wpdt-icon-glyph-1:before{content:"\e002"}.wpdt-icon-glyph-2:before{content:"\e003"}.wpdt-icon-glyph-3:before{content:"\e004"}.wpdt-icon-glyph-4:before{content:"\e005"}.wpdt-icon-glyph-6:before{content:"\e006"}.wpdt-icon-glyph-5:before{content:"\e007"}.wpdt-icon-glyph-7:before{content:"\e008"}.wpdt-icon-glyph-9:before{content:"\e009"}.wpdt-icon-glyph-8:before{content:"\e00a"}.wpdt-icon-glyph-10:before{content:"\e00b"}.wpdt-icon-glyph-11:before{content:"\e00c"}.wpdt-icon-glyph-12:before{content:"\e00d"}.wpdt-icon-glyph-13:before{content:"\e00e"}.wpdt-icon-glyph-14:before{content:"\e00f"}.wpdt-icon-glyph-15:before{content:"\e010"}.wpdt-icon-glyph-16:before{content:"\e011"}.wpdt-icon-glyph-17:before{content:"\e012"}.wpdt-icon-glyph-18:before{content:"\e013"}.wpdt-icon-glyph-19:before{content:"\e014"}.wpdt-icon-glyph-20:before{content:"\e015"}.wpdt-icon-install:before{content:"\e778"}.wpdt-icon-1493906635_delete_filter:before{content:"\e817"}.wpdt-icon-1493907529_pack06-16:before{content:"\e818"}.wpdt-icon-1493907728_excel_d:before{content:"\e819"}.wpdt-icon-csv-file-variant-with-graphs:before{content:"\e81a"}.wpdt-icon-pdf-file-format-symbol:before{content:"\e81b"}.wpdt-icon-1495736216_column_table_minus_remove_delete_discard:before{content:"\e81d"}.wpdt-icon-1495736192_column_table_new_plus_add_create_insert:before{content:"\e81e"}.wpdt-icon-icons-01:before{content:"\e902"}.wpdt-icon-icons-02:before{content:"\e903"}.wpdt-icon-search2:before{content:"\1f50d"}.wpdt-icon-search:before{content:"\f002"}.wpdt-icon-star:before{content:"\f005"}.wpdt-icon-th-large:before{content:"\f009"}.wpdt-icon-th:before{content:"\f00a"}.wpdt-icon-th-list:before{content:"\f00b"}.wpdt-icon-check:before{content:"\f00c"}.wpdt-icon-times:before{content:"\f00d"}.wpdt-icon-clock:before{content:"\f017"}.wpdt-icon-redo:before{content:"\f01e"}.wpdt-icon-sync:before{content:"\f021"}.wpdt-icon-font:before{content:"\f031"}.wpdt-icon-bold:before{content:"\f032"}.wpdt-icon-italic:before{content:"\f033"}.wpdt-icon-align-left:before{content:"\f036"}.wpdt-icon-align-center:before{content:"\f037"}.wpdt-icon-align-right:before{content:"\f038"}.wpdt-icon-align-justify:before{content:"\f039"}.wpdt-icon-list:before{content:"\f03a"}.wpdt-icon-outdent:before{content:"\f03b"}.wpdt-icon-indent:before{content:"\f03c"}.wpdt-icon-image:before{content:"\f03e"}.wpdt-icon-stop:before{content:"\f04e"}.wpdt-icon-chevron-left:before{content:"\f053"}.wpdt-icon-chevron-right:before{content:"\f054"}.wpdt-icon-plus-circle:before{content:"\f055"}.wpdt-icon-minus-circle:before{content:"\f056"}.wpdt-icon-times-circle:before{content:"\f057"}.wpdt-icon-check-circle:before{content:"\f058"}.wpdt-icon-question-circle:before{content:"\f059"}.wpdt-icon-info-circle:before{content:"\f05a"}.wpdt-icon-arrow-left:before{content:"\f060"}.wpdt-icon-arrow-right:before{content:"\f061"}.wpdt-icon-arrow-up:before{content:"\f062"}.wpdt-icon-arrow-down:before{content:"\f063"}.wpdt-icon-plus:before{content:"\f067"}.wpdt-icon-minus:before{content:"\f068"}.wpdt-icon-exclamation-circle:before{content:"\f06a"}.wpdt-icon-eye:before{content:"\f06e"}.wpdt-icon-exclamation-triangle:before{content:"\f071"}.wpdt-icon-calendar-alt:before{content:"\f073"}.wpdt-icon-chevron-up:before{content:"\f077"}.wpdt-icon-chevron-down:before{content:"\f078"}.wpdt-icon-arrows-v1:before{content:"\f081"}.wpdt-icon-arrows-h1:before{content:"\f082"}.wpdt-icon-external-link:before{content:"\f08e"}.wpdt-icon-bullhorn:before{content:"\f0a1"}.wpdt-icon-arrow-circle-left:before{content:"\f0a8"}.wpdt-icon-arrow-circle-right:before{content:"\f0a9"}.wpdt-icon-arrow-circle-up:before{content:"\f0aa"}.wpdt-icon-arrow-circle-down:before{content:"\f0ab"}.wpdt-icon-arrows-alt:before{content:"\f0b2"}.wpdt-icon-link:before{content:"\f0c1"}.wpdt-icon-copy:before{content:"\f0c5"}.wpdt-icon-bars:before{content:"\f0c9"}.wpdt-icon-list-ul:before{content:"\f0ca"}.wpdt-icon-list-ol:before{content:"\f0cb"}.wpdt-icon-strikethrough:before{content:"\f0cc"}.wpdt-icon-underline:before{content:"\f0cd"}.wpdt-icon-table:before{content:"\f0ce"}.wpdt-icon-caret-down:before{content:"\f0d7"}.wpdt-icon-caret-up:before{content:"\f0d8"}.wpdt-icon-caret-left:before{content:"\f0d9"}.wpdt-icon-caret-right:before{content:"\f0da"}.wpdt-icon-sort:before{content:"\f0dc"}.wpdt-icon-undo:before{content:"\f0e3"}.wpdt-icon-exchange-reg:before{content:"\f0ed"}.wpdt-icon-angle-double-left:before{content:"\f100"}.wpdt-icon-angle-double-right:before{content:"\f101"}.wpdt-icon-angle-double-up:before{content:"\f102"}.wpdt-icon-angle-double-down:before{content:"\f103"}.wpdt-icon-angle-left:before{content:"\f104"}.wpdt-icon-angle-right:before{content:"\f105"}.wpdt-icon-angle-up:before{content:"\f106"}.wpdt-icon-angle-down:before{content:"\f107"}.wpdt-icon-chevron-circle-left:before{content:"\f137"}.wpdt-icon-chevron-circle-right:before{content:"\f138"}.wpdt-icon-chevron-circle-up:before{content:"\f139"}.wpdt-icon-chevron-circle-down:before{content:"\f13a"}.wpdt-icon-minus-square:before{content:"\f146"}.wpdt-icon-check-square:before{content:"\f14a"}.wpdt-icon-external-link-square:before{content:"\f14c"}.wpdt-icon-file-reg:before{content:"\f160"}.wpdt-icon-sort-alpha-down:before{content:"\f15d"}.wpdt-icon-sort-alpha-up:before{content:"\f15e"}.wpdt-icon-long-arrow-down:before{content:"\f175"}.wpdt-icon-long-arrow-up:before{content:"\f176"}.wpdt-icon-long-arrow-left:before{content:"\f177"}.wpdt-icon-long-arrow-right:before{content:"\f178"}.wpdt-icon-file-pdf:before{content:"\f1c1"}.wpdt-icon-file-excel:before{content:"\f1c3"}.wpdt-icon-trash-reg:before{content:"\f1fc"}.wpdt-icon-copyright:before{content:"\f1f9"}.wpdt-icon-at:before{content:"\f1fa"}.wpdt-icon-hourglass-half:before{content:"\f252"}.wpdt-icon-calendar-times:before{content:"\f273"}.wpdt-icon-hashtag:before{content:"\f292"}.wpdt-icon-percent:before{content:"\f295"}.wpdt-icon-long-arrow-alt-down:before{content:"\f309"}.wpdt-icon-long-arrow-alt-left:before{content:"\f30a"}.wpdt-icon-long-arrow-alt-right:before{content:"\f30b"}.wpdt-icon-long-arrow-alt-up:before{content:"\f30c"}.wpdt-icon-expand-arrows-alt1:before{content:"\f31f"}.wpdt-icon-chevron-double-down:before{content:"\f322"}.wpdt-icon-chevron-double-left:before{content:"\f323"}.wpdt-icon-chevron-double-right:before{content:"\f324"}.wpdt-icon-chevron-double-up:before{content:"\f325"}.wpdt-icon-arrow-to-bottom:before{content:"\f33d"}.wpdt-icon-arrow-to-left:before{content:"\f33e"}.wpdt-icon-arrow-to-right:before{content:"\f340"}.wpdt-icon-arrow-to-top:before{content:"\f341"}.wpdt-icon-arrow-from-bottom:before{content:"\f342"}.wpdt-icon-arrow-from-left:before{content:"\f343"}.wpdt-icon-arrow-from-right:before{content:"\f344"}.wpdt-icon-arrow-from-top:before{content:"\f345"}.wpdt-icon-arrow-alt-circle-down:before{content:"\f358"}.wpdt-icon-arrow-alt-circle-left:before{content:"\f359"}.wpdt-icon-arrow-alt-circle-right:before{content:"\f35a"}.wpdt-icon-arrow-alt-circle-up:before{content:"\f35b"}.wpdt-icon-external-link-alt:before{content:"\f35d"}.wpdt-icon-exchange-alt:before{content:"\f362"}.wpdt-icon-compress-alt:before{content:"\f422"}.wpdt-icon-expand-alt:before{content:"\f424"}.wpdt-icon-equals-reg:before{content:"\f52d"}.wpdt-icon-check-double-reg:before{content:"\f561"}.wpdt-icon-function-reg:before{content:"\f663"}.wpdt-icon-file-csv:before{content:"\f6dd"}.wpdt-icon-line-columns:before{content:"\f870"}.wpdt-icon-search-full:before{content:"\f003"}.wpdt-icon-heart:before{content:"\f004"}.wpdt-icon-star-full:before{content:"\f006"}.wpdt-icon-th-large-full:before{content:"\f00e"}.wpdt-icon-th-full:before{content:"\f00f"}.wpdt-icon-th-list-full:before{content:"\f010"}.wpdt-icon-check-full:before{content:"\f011"}.wpdt-icon-times-full:before{content:"\f012"}.wpdt-icon-cog:before{content:"\f013"}.wpdt-icon-clock-full:before{content:"\f018"}.wpdt-icon-step-backward:before{content:"\f048"}.wpdt-icon-play:before{content:"\f04b"}.wpdt-icon-step-forward:before{content:"\f051"}.wpdt-icon-chevron-left-full:before{content:"\f05b"}.wpdt-icon-chevron-right-full:before{content:"\f05c"}.wpdt-icon-plus-circle-full:before{content:"\f05d"}.wpdt-icon-minus-circle-full:before{content:"\f05e"}.wpdt-icon-times-circle-full:before{content:"\f05f"}.wpdt-icon-check-circle-full:before{content:"\f064"}.wpdt-icon-question-circle-full:before{content:"\f065"}.wpdt-icon-info-circle-full:before{content:"\f066"}.wpdt-icon-arrow-left-full:before{content:"\f069"}.wpdt-icon-arrow-right-full:before{content:"\f06b"}.wpdt-icon-arrow-up-full:before{content:"\f06c"}.wpdt-icon-arrow-down-full:before{content:"\f06d"}.wpdt-icon-plus-full:before{content:"\f06f"}.wpdt-icon-minus-full:before{content:"\f070"}.wpdt-icon-exclamation-circle-full:before{content:"\f072"}.wpdt-icon-eye-full:before{content:"\f074"}.wpdt-icon-chevron-up-full:before{content:"\f079"}.wpdt-icon-chevron-down-full:before{content:"\f07a"}.wpdt-icon-arrows-v:before{content:"\f07d"}.wpdt-icon-arrows-h:before{content:"\f07e"}.wpdt-icon-bullhorn-full:before{content:"\f0a2"}.wpdt-icon-arrow-circle-left-full:before{content:"\f0ac"}.wpdt-icon-arrow-circle-right-full:before{content:"\f0ad"}.wpdt-icon-arrow-circle-up-full:before{content:"\f0ae"}.wpdt-icon-arrow-circle-down-full:before{content:"\f0af"}.wpdt-icon-wrench:before{content:"\f0b0"}.wpdt-icon-filter:before{content:"\f0b1"}.wpdt-icon-copy-full:before{content:"\f0c6"}.wpdt-icon-save:before{content:"\f0c7"}.wpdt-icon-table-full:before{content:"\f0d4"}.wpdt-icon-caret-down-full:before{content:"\f0db"}.wpdt-icon-caret-up-full:before{content:"\f0dd"}.wpdt-icon-caret-left-full:before{content:"\f0de"}.wpdt-icon-caret-right-full:before{content:"\f0df"}.wpdt-icon-sort-full:before{content:"\f0e0"}.wpdt-icon-sort-down:before{content:"\f0e1"}.wpdt-icon-envelope:before{content:"\f0e2"}.wpdt-icon-sitemap:before{content:"\f0e8"}.wpdt-icon-lightbulb:before{content:"\f0eb"}.wpdt-icon-exchange:before{content:"\f0ec"}.wpdt-icon-angle-double-left-full:before{content:"\f108"}.wpdt-icon-angle-double-right-full:before{content:"\f109"}.wpdt-icon-angle-left-full:before{content:"\f10a"}.wpdt-icon-angle-right-full:before{content:"\f10b"}.wpdt-icon-angle-up-full:before{content:"\f10c"}.wpdt-icon-angle-down-full:before{content:"\f10d"}.wpdt-icon-tablet:before{content:"\f10e"}.wpdt-icon-mobile:before{content:"\f10f"}.wpdt-icon-code:before{content:"\f121"}.wpdt-icon-question:before{content:"\f128"}.wpdt-icon-info:before{content:"\f129"}.wpdt-icon-shield:before{content:"\f132"}.wpdt-icon-calendar:before{content:"\f133"}.wpdt-icon-chevron-circle-left-full:before{content:"\f13b"}.wpdt-icon-chevron-circle-right-full:before{content:"\f13c"}.wpdt-icon-chevron-circle-up-full:before{content:"\f13d"}.wpdt-icon-chevron-circle-down-full:before{content:"\f13e"}.wpdt-icon-ellipsis-h:before{content:"\f141"}.wpdt-icon-ellipsis-v:before{content:"\f142"}.wpdt-icon-play-circle:before{content:"\f144"}.wpdt-icon-minus-square-full:before{content:"\f147"}.wpdt-icon-check-square-full:before{content:"\f14b"}.wpdt-icon-external-link-square-full:before{content:"\f14d"}.wpdt-icon-file:before{content:"\f15b"}.wpdt-icon-sort-alpha-down-full:before{content:"\f15f"}.wpdt-icon-long-arrow-down-full:before{content:"\f179"}.wpdt-icon-long-arrow-up-full:before{content:"\f17a"}.wpdt-icon-long-arrow-left-full:before{content:"\f17b"}.wpdt-icon-long-arrow-right-full:before{content:"\f17c"}.wpdt-icon-trash:before{content:"\f1f8"}.wpdt-icon-at-full:before{content:"\f1fb"}.wpdt-icon-chart-area:before{content:"\f1fe"}.wpdt-icon-chart-line:before{content:"\f201"}.wpdt-icon-clone:before{content:"\f24d"}.wpdt-icon-shopping-bag:before{content:"\f290"}.wpdt-icon-times-square:before{content:"\f2d3"}.wpdt-icon-trash-alt:before{content:"\f2ed"}.wpdt-icon-question-square:before{content:"\f2fd"}.wpdt-icon-pen:before{content:"\f304"}.wpdt-icon-expand-arrows:before{content:"\f31d"}.wpdt-icon-expand-arrows-alt:before{content:"\f31e"}.wpdt-icon-external-link-square-alt:before{content:"\f360"}.wpdt-icon-mobile-alt:before{content:"\f3cd"}.wpdt-icon-mobile-android:before{content:"\f3ce"}.wpdt-icon-mobile-android-alt:before{content:"\f3cf"}.wpdt-icon-equals:before{content:"\f52c"}.wpdt-icon-greater-than:before{content:"\f531"}.wpdt-icon-less-than:before{content:"\f536"}.wpdt-icon-check-double:before{content:"\f560"}.wpdt-icon-file-download:before{content:"\f56d"}.wpdt-icon-layer-group:before{content:"\f5fd"}.wpdt-icon-sort-alpha-down-alt:before{content:"\f662"}.wpdt-icon-sort-alt:before{content:"\f883"}.wpdt-icon-search-thin:before{content:"\f007"}.wpdt-icon-check-thin:before{content:"\f015"}.wpdt-icon-times-thin:before{content:"\f016"}.wpdt-icon-clock-thin:before{content:"\f019"}.wpdt-icon-stop-thin:before{content:"\f04d"}.wpdt-icon-info-circle-thin:before{content:"\f075"}.wpdt-icon-plus-thin:before{content:"\f076"}.wpdt-icon-minus-thin:before{content:"\f07b"}.wpdt-icon-calendar-alt-thin:before{content:"\f07c"}.wpdt-icon-chevron-up-thin:before{content:"\f07f"}.wpdt-icon-chevron-down-thin:before{content:"\f080"}.wpdt-icon-file-thin:before{content:"\f15c"}.wpdt-icon-calendar-times-thin:before{content:"\f274"}.wpdt-icon-spinner9:before{content:"\e982"}
1
+ @font-face{font-family:wpDataTablesIcons;src:url(../fonts/wpDataTablesIcons.eot);src:url(../fonts/wpDataTablesIcons.eot#iefix) format('embedded-opentype'),url(../fonts/wpDataTablesIcons.ttf) format('truetype'),url(../fonts/wpDataTablesIcons.woff) format('woff'),url(../fonts/wpDataTablesIcons.svg#wpDataTablesIcons) format('svg');font-weight:400;font-style:normal;font-display:block}[class*=" wpdt-icon-"],[class^=wpdt-icon-]{font-family:wpDataTablesIcons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wpdt-icon-star-half:before{content:"\e92c"}.wpdt-icon-wrap-text:before{content:"\e929"}.wpdt-icon-clip-text:before{content:"\e92a"}.wpdt-icon-overflow-text:before{content:"\e92b"}.wpdt-icon-rows-1:before{content:"\e921"}.wpdt-icon-columns-1:before{content:"\e926"}.wpdt-icon-rows-2:before{content:"\e927"}.wpdt-icon-columns-2:before{content:"\e928"}.wpdt-icon-vertical-align-top:before{content:"\e918"}.wpdt-icon-vertical-align-center:before{content:"\e919"}.wpdt-icon-vertical-align-bottom:before{content:"\e91a"}.wpdt-icon-remove-row:before{content:"\e91d"}.wpdt-icon-add-row-top:before{content:"\e91e"}.wpdt-icon-add-row-bottom:before{content:"\e91f"}.wpdt-icon-add-column-right:before{content:"\e920"}.wpdt-icon-add-column-left:before{content:"\e91b"}.wpdt-icon-remove-column:before{content:"\e91c"}.wpdt-icon-insert-column-after:before{content:"\e922"}.wpdt-icon-insert-column-before:before{content:"\e923"}.wpdt-icon-insert-row-after:before{content:"\e924"}.wpdt-icon-insert-row-before:before{content:"\e925"}.wpdt-icon-g-cap:before{content:"\e917"}.wpdt-icon-trophy:before{content:"\e916"}.wpdt-icon-magic-stick:before{content:"\e914"}.wpdt-icon-book:before{content:"\e915"}.wpdt-icon-csv:before{content:"\e900"}.wpdt-icon-search-w:before{content:"\e901"}.wpdt-icon-shape:before{content:"\e904"}.wpdt-icon-sort-down1:before{content:"\e905"}.wpdt-icon-cancel-x:before{content:"\e906"}.wpdt-icon-uniE907:before{content:"\e907"}.wpdt-icon-copy-wa:before{content:"\e908"}.wpdt-icon-excel:before{content:"\e90a"}.wpdt-icon-export:before{content:"\e909"}.wpdt-icon-filled-check:before{content:"\e90b"}.wpdt-icon-icon-close:before{content:"\e90c"}.wpdt-icon-outlined-check:before{content:"\e90d"}.wpdt-icon-pdf:before{content:"\e912"}.wpdt-icon-print:before{content:"\e90e"}.wpdt-icon-delete:before{content:"\e90f"}.wpdt-icon-edit:before{content:"\e910"}.wpdt-icon-eye-w:before{content:"\e911"}.wpdt-icon-plus-wa:before{content:"\e913"}.wpdt-icon-glyph:before{content:"\e001"}.wpdt-icon-glyph-1:before{content:"\e002"}.wpdt-icon-glyph-2:before{content:"\e003"}.wpdt-icon-glyph-3:before{content:"\e004"}.wpdt-icon-glyph-4:before{content:"\e005"}.wpdt-icon-glyph-6:before{content:"\e006"}.wpdt-icon-glyph-5:before{content:"\e007"}.wpdt-icon-glyph-7:before{content:"\e008"}.wpdt-icon-glyph-9:before{content:"\e009"}.wpdt-icon-glyph-8:before{content:"\e00a"}.wpdt-icon-glyph-10:before{content:"\e00b"}.wpdt-icon-glyph-11:before{content:"\e00c"}.wpdt-icon-glyph-12:before{content:"\e00d"}.wpdt-icon-glyph-13:before{content:"\e00e"}.wpdt-icon-glyph-14:before{content:"\e00f"}.wpdt-icon-glyph-15:before{content:"\e010"}.wpdt-icon-glyph-16:before{content:"\e011"}.wpdt-icon-glyph-17:before{content:"\e012"}.wpdt-icon-glyph-18:before{content:"\e013"}.wpdt-icon-glyph-19:before{content:"\e014"}.wpdt-icon-glyph-20:before{content:"\e015"}.wpdt-icon-install:before{content:"\e778"}.wpdt-icon-1493906635_delete_filter:before{content:"\e817"}.wpdt-icon-1493907529_pack06-16:before{content:"\e818"}.wpdt-icon-1493907728_excel_d:before{content:"\e819"}.wpdt-icon-csv-file-variant-with-graphs:before{content:"\e81a"}.wpdt-icon-pdf-file-format-symbol:before{content:"\e81b"}.wpdt-icon-1495736216_column_table_minus_remove_delete_discard:before{content:"\e81d"}.wpdt-icon-1495736192_column_table_new_plus_add_create_insert:before{content:"\e81e"}.wpdt-icon-icons-01:before{content:"\e902"}.wpdt-icon-icons-02:before{content:"\e903"}.wpdt-icon-search2:before{content:"\1f50d"}.wpdt-icon-search:before{content:"\f002"}.wpdt-icon-star:before{content:"\f005"}.wpdt-icon-th-large:before{content:"\f009"}.wpdt-icon-th:before{content:"\f00a"}.wpdt-icon-th-list:before{content:"\f00b"}.wpdt-icon-check:before{content:"\f00c"}.wpdt-icon-times:before{content:"\f00d"}.wpdt-icon-clock:before{content:"\f017"}.wpdt-icon-redo:before{content:"\f01e"}.wpdt-icon-sync:before{content:"\f021"}.wpdt-icon-font:before{content:"\f031"}.wpdt-icon-bold:before{content:"\f032"}.wpdt-icon-italic:before{content:"\f033"}.wpdt-icon-align-left:before{content:"\f036"}.wpdt-icon-align-center:before{content:"\f037"}.wpdt-icon-align-right:before{content:"\f038"}.wpdt-icon-align-justify:before{content:"\f039"}.wpdt-icon-list:before{content:"\f03a"}.wpdt-icon-outdent:before{content:"\f03b"}.wpdt-icon-indent:before{content:"\f03c"}.wpdt-icon-image:before{content:"\f03e"}.wpdt-icon-stop:before{content:"\f04e"}.wpdt-icon-chevron-left:before{content:"\f053"}.wpdt-icon-chevron-right:before{content:"\f054"}.wpdt-icon-plus-circle:before{content:"\f055"}.wpdt-icon-minus-circle:before{content:"\f056"}.wpdt-icon-times-circle:before{content:"\f057"}.wpdt-icon-check-circle:before{content:"\f058"}.wpdt-icon-question-circle:before{content:"\f059"}.wpdt-icon-info-circle:before{content:"\f05a"}.wpdt-icon-arrow-left:before{content:"\f060"}.wpdt-icon-arrow-right:before{content:"\f061"}.wpdt-icon-arrow-up:before{content:"\f062"}.wpdt-icon-arrow-down:before{content:"\f063"}.wpdt-icon-plus:before{content:"\f067"}.wpdt-icon-minus:before{content:"\f068"}.wpdt-icon-exclamation-circle:before{content:"\f06a"}.wpdt-icon-eye:before{content:"\f06e"}.wpdt-icon-exclamation-triangle:before{content:"\f071"}.wpdt-icon-calendar-alt:before{content:"\f073"}.wpdt-icon-chevron-up:before{content:"\f077"}.wpdt-icon-chevron-down:before{content:"\f078"}.wpdt-icon-arrows-v1:before{content:"\f081"}.wpdt-icon-arrows-h1:before{content:"\f082"}.wpdt-icon-external-link:before{content:"\f08e"}.wpdt-icon-bullhorn:before{content:"\f0a1"}.wpdt-icon-arrow-circle-left:before{content:"\f0a8"}.wpdt-icon-arrow-circle-right:before{content:"\f0a9"}.wpdt-icon-arrow-circle-up:before{content:"\f0aa"}.wpdt-icon-arrow-circle-down:before{content:"\f0ab"}.wpdt-icon-arrows-alt:before{content:"\f0b2"}.wpdt-icon-link:before{content:"\f0c1"}.wpdt-icon-copy:before{content:"\f0c5"}.wpdt-icon-bars:before{content:"\f0c9"}.wpdt-icon-list-ul:before{content:"\f0ca"}.wpdt-icon-list-ol:before{content:"\f0cb"}.wpdt-icon-strikethrough:before{content:"\f0cc"}.wpdt-icon-underline:before{content:"\f0cd"}.wpdt-icon-table:before{content:"\f0ce"}.wpdt-icon-caret-down:before{content:"\f0d7"}.wpdt-icon-caret-up:before{content:"\f0d8"}.wpdt-icon-caret-left:before{content:"\f0d9"}.wpdt-icon-caret-right:before{content:"\f0da"}.wpdt-icon-sort:before{content:"\f0dc"}.wpdt-icon-undo:before{content:"\f0e3"}.wpdt-icon-exchange-reg:before{content:"\f0ed"}.wpdt-icon-angle-double-left:before{content:"\f100"}.wpdt-icon-angle-double-right:before{content:"\f101"}.wpdt-icon-angle-double-up:before{content:"\f102"}.wpdt-icon-angle-double-down:before{content:"\f103"}.wpdt-icon-angle-left:before{content:"\f104"}.wpdt-icon-angle-right:before{content:"\f105"}.wpdt-icon-angle-up:before{content:"\f106"}.wpdt-icon-angle-down:before{content:"\f107"}.wpdt-icon-chevron-circle-left:before{content:"\f137"}.wpdt-icon-chevron-circle-right:before{content:"\f138"}.wpdt-icon-chevron-circle-up:before{content:"\f139"}.wpdt-icon-chevron-circle-down:before{content:"\f13a"}.wpdt-icon-minus-square:before{content:"\f146"}.wpdt-icon-check-square:before{content:"\f14a"}.wpdt-icon-external-link-square:before{content:"\f14c"}.wpdt-icon-file-reg:before{content:"\f160"}.wpdt-icon-sort-alpha-down:before{content:"\f15d"}.wpdt-icon-sort-alpha-up:before{content:"\f15e"}.wpdt-icon-long-arrow-down:before{content:"\f175"}.wpdt-icon-long-arrow-up:before{content:"\f176"}.wpdt-icon-long-arrow-left:before{content:"\f177"}.wpdt-icon-long-arrow-right:before{content:"\f178"}.wpdt-icon-file-pdf:before{content:"\f1c1"}.wpdt-icon-file-excel:before{content:"\f1c3"}.wpdt-icon-trash-reg:before{content:"\f1fc"}.wpdt-icon-copyright:before{content:"\f1f9"}.wpdt-icon-at:before{content:"\f1fa"}.wpdt-icon-hourglass-half:before{content:"\f252"}.wpdt-icon-calendar-times:before{content:"\f273"}.wpdt-icon-hashtag:before{content:"\f292"}.wpdt-icon-percent:before{content:"\f295"}.wpdt-icon-undo-alt:before{content:"\f2ea"}.wpdt-icon-long-arrow-alt-down:before{content:"\f309"}.wpdt-icon-long-arrow-alt-left:before{content:"\f30a"}.wpdt-icon-long-arrow-alt-right:before{content:"\f30b"}.wpdt-icon-long-arrow-alt-up:before{content:"\f30c"}.wpdt-icon-expand-arrows-alt1:before{content:"\f31f"}.wpdt-icon-chevron-double-down:before{content:"\f322"}.wpdt-icon-chevron-double-left:before{content:"\f323"}.wpdt-icon-chevron-double-right:before{content:"\f324"}.wpdt-icon-chevron-double-up:before{content:"\f325"}.wpdt-icon-arrow-to-bottom:before{content:"\f33d"}.wpdt-icon-arrow-to-left:before{content:"\f33e"}.wpdt-icon-arrow-to-right:before{content:"\f340"}.wpdt-icon-arrow-to-top:before{content:"\f341"}.wpdt-icon-arrow-from-bottom:before{content:"\f342"}.wpdt-icon-arrow-from-left:before{content:"\f343"}.wpdt-icon-arrow-from-right:before{content:"\f344"}.wpdt-icon-arrow-from-top:before{content:"\f345"}.wpdt-icon-arrow-alt-circle-down:before{content:"\f358"}.wpdt-icon-arrow-alt-circle-left:before{content:"\f359"}.wpdt-icon-arrow-alt-circle-right:before{content:"\f35a"}.wpdt-icon-arrow-alt-circle-up:before{content:"\f35b"}.wpdt-icon-external-link-alt:before{content:"\f35d"}.wpdt-icon-exchange-alt:before{content:"\f362"}.wpdt-icon-compress-alt:before{content:"\f422"}.wpdt-icon-expand-alt:before{content:"\f424"}.wpdt-icon-equals-reg:before{content:"\f52d"}.wpdt-icon-check-double-reg:before{content:"\f561"}.wpdt-icon-function-reg:before{content:"\f663"}.wpdt-icon-file-csv:before{content:"\f6dd"}.wpdt-icon-brackets:before{content:"\f7e9"}.wpdt-icon-line-columns:before{content:"\f870"}.wpdt-icon-search-full:before{content:"\f003"}.wpdt-icon-heart:before{content:"\f004"}.wpdt-icon-star-full:before{content:"\f006"}.wpdt-icon-th-large-full:before{content:"\f00e"}.wpdt-icon-th-full:before{content:"\f00f"}.wpdt-icon-th-list-full:before{content:"\f010"}.wpdt-icon-check-full:before{content:"\f011"}.wpdt-icon-times-full:before{content:"\f012"}.wpdt-icon-cog:before{content:"\f013"}.wpdt-icon-clock-full:before{content:"\f018"}.wpdt-icon-tint:before{content:"\f044"}.wpdt-icon-step-backward:before{content:"\f048"}.wpdt-icon-play:before{content:"\f04b"}.wpdt-icon-step-forward:before{content:"\f051"}.wpdt-icon-chevron-left-full:before{content:"\f05b"}.wpdt-icon-chevron-right-full:before{content:"\f05c"}.wpdt-icon-plus-circle-full:before{content:"\f05d"}.wpdt-icon-minus-circle-full:before{content:"\f05e"}.wpdt-icon-times-circle-full:before{content:"\f05f"}.wpdt-icon-check-circle-full:before{content:"\f064"}.wpdt-icon-question-circle-full:before{content:"\f065"}.wpdt-icon-info-circle-full:before{content:"\f066"}.wpdt-icon-arrow-left-full:before{content:"\f069"}.wpdt-icon-arrow-right-full:before{content:"\f06b"}.wpdt-icon-arrow-up-full:before{content:"\f06c"}.wpdt-icon-arrow-down-full:before{content:"\f06d"}.wpdt-icon-plus-full:before{content:"\f06f"}.wpdt-icon-minus-full:before{content:"\f070"}.wpdt-icon-exclamation-circle-full:before{content:"\f072"}.wpdt-icon-eye-full:before{content:"\f074"}.wpdt-icon-chevron-up-full:before{content:"\f079"}.wpdt-icon-chevron-down-full:before{content:"\f07a"}.wpdt-icon-arrows-v:before{content:"\f07d"}.wpdt-icon-arrows-h:before{content:"\f07e"}.wpdt-icon-bullhorn-full:before{content:"\f0a2"}.wpdt-icon-arrow-circle-left-full:before{content:"\f0ac"}.wpdt-icon-arrow-circle-right-full:before{content:"\f0ad"}.wpdt-icon-arrow-circle-up-full:before{content:"\f0ae"}.wpdt-icon-arrow-circle-down-full:before{content:"\f0af"}.wpdt-icon-wrench:before{content:"\f0b0"}.wpdt-icon-filter:before{content:"\f0b1"}.wpdt-icon-copy-full:before{content:"\f0c6"}.wpdt-icon-save:before{content:"\f0c7"}.wpdt-icon-table-full:before{content:"\f0d4"}.wpdt-icon-caret-down-full:before{content:"\f0db"}.wpdt-icon-caret-up-full:before{content:"\f0dd"}.wpdt-icon-caret-left-full:before{content:"\f0de"}.wpdt-icon-caret-right-full:before{content:"\f0df"}.wpdt-icon-sort-full:before{content:"\f0e0"}.wpdt-icon-sort-down:before{content:"\f0e1"}.wpdt-icon-envelope:before{content:"\f0e2"}.wpdt-icon-sitemap:before{content:"\f0e8"}.wpdt-icon-lightbulb:before{content:"\f0eb"}.wpdt-icon-exchange:before{content:"\f0ec"}.wpdt-icon-angle-double-left-full:before{content:"\f108"}.wpdt-icon-angle-double-right-full:before{content:"\f109"}.wpdt-icon-angle-left-full:before{content:"\f10a"}.wpdt-icon-angle-right-full:before{content:"\f10b"}.wpdt-icon-angle-up-full:before{content:"\f10c"}.wpdt-icon-angle-down-full:before{content:"\f10d"}.wpdt-icon-tablet:before{content:"\f10e"}.wpdt-icon-mobile:before{content:"\f10f"}.wpdt-icon-code:before{content:"\f121"}.wpdt-icon-question:before{content:"\f128"}.wpdt-icon-info:before{content:"\f129"}.wpdt-icon-shield:before{content:"\f132"}.wpdt-icon-calendar:before{content:"\f133"}.wpdt-icon-chevron-circle-left-full:before{content:"\f13b"}.wpdt-icon-chevron-circle-right-full:before{content:"\f13c"}.wpdt-icon-chevron-circle-up-full:before{content:"\f13d"}.wpdt-icon-chevron-circle-down-full:before{content:"\f13e"}.wpdt-icon-ellipsis-h:before{content:"\f141"}.wpdt-icon-ellipsis-v:before{content:"\f142"}.wpdt-icon-play-circle:before{content:"\f144"}.wpdt-icon-minus-square-full:before{content:"\f147"}.wpdt-icon-check-square-full:before{content:"\f14b"}.wpdt-icon-external-link-square-full:before{content:"\f14d"}.wpdt-icon-file:before{content:"\f15b"}.wpdt-icon-sort-alpha-down-full:before{content:"\f15f"}.wpdt-icon-long-arrow-down-full:before{content:"\f179"}.wpdt-icon-long-arrow-up-full:before{content:"\f17a"}.wpdt-icon-long-arrow-left-full:before{content:"\f17b"}.wpdt-icon-long-arrow-right-full:before{content:"\f17c"}.wpdt-icon-trash:before{content:"\f1f8"}.wpdt-icon-at-full:before{content:"\f1fb"}.wpdt-icon-chart-area:before{content:"\f1fe"}.wpdt-icon-chart-line:before{content:"\f201"}.wpdt-icon-clone:before{content:"\f24d"}.wpdt-icon-shopping-bag:before{content:"\f290"}.wpdt-icon-times-square:before{content:"\f2d3"}.wpdt-icon-trash-alt:before{content:"\f2ed"}.wpdt-icon-question-square:before{content:"\f2fd"}.wpdt-icon-pen:before{content:"\f304"}.wpdt-icon-expand-arrows:before{content:"\f31d"}.wpdt-icon-expand-arrows-alt:before{content:"\f31e"}.wpdt-icon-external-link-square-alt:before{content:"\f360"}.wpdt-icon-mobile-alt:before{content:"\f3cd"}.wpdt-icon-mobile-android:before{content:"\f3ce"}.wpdt-icon-mobile-android-alt:before{content:"\f3cf"}.wpdt-icon-equals:before{content:"\f52c"}.wpdt-icon-greater-than:before{content:"\f531"}.wpdt-icon-less-than:before{content:"\f536"}.wpdt-icon-check-double:before{content:"\f560"}.wpdt-icon-file-download:before{content:"\f56d"}.wpdt-icon-layer-group:before{content:"\f5fd"}.wpdt-icon-brackets1:before{content:"\f7ea"}.wpdt-icon-sort-alpha-down-alt:before{content:"\f662"}.wpdt-icon-sort-alt:before{content:"\f883"}.wpdt-icon-search-thin:before{content:"\f007"}.wpdt-icon-check-thin:before{content:"\f015"}.wpdt-icon-times-thin:before{content:"\f016"}.wpdt-icon-clock-thin:before{content:"\f019"}.wpdt-icon-stop-thin:before{content:"\f04d"}.wpdt-icon-info-circle-thin:before{content:"\f075"}.wpdt-icon-plus-thin:before{content:"\f076"}.wpdt-icon-minus-thin:before{content:"\f07b"}.wpdt-icon-calendar-alt-thin:before{content:"\f07c"}.wpdt-icon-chevron-up-thin:before{content:"\f07f"}.wpdt-icon-chevron-down-thin:before{content:"\f080"}.wpdt-icon-file-thin:before{content:"\f15c"}.wpdt-icon-calendar-times-thin:before{content:"\f274"}.wpdt-icon-undo2:before{content:"\e967"}.wpdt-icon-redo2:before{content:"\e968"}.wpdt-icon-spinner9:before{content:"\e982"}
assets/css/wdt.frontend.min.css CHANGED
@@ -1 +1 @@
1
- @font-face{font-weight:400;font-style:normal;font-family:wpDataTablesIcons;src:url(../fonts/wpDataTablesIcons.eot);src:url(../fonts/wpDataTablesIcons.eot?#iefix) format('embedded-opentype'),url(../fonts/wpDataTablesIcons.woff) format('woff'),url(../fonts/wpDataTablesIcons.ttf) format('truetype'),url(../fonts/wpDataTablesIcons.svg#wpDataTablesIcons) format('svg')}.wpDataTables:after,.wpDataTables:before{content:" ";display:table}.wpDataTables:after{clear:both}.wpDataTablesWrapper{margin-bottom:20px}.wpDataTablesWrapper table.wpDataTable{background-color:transparent;border-collapse:collapse;border-spacing:0;clear:both;margin:0 auto;width:100%;table-layout:auto;margin-bottom:10px;overflow:auto}.wpDataTablesWrapper table.wpDataTable>tbody>tr>td>ul{list-style:inherit}.wpDataTablesWrapper table.wpDataTable>tbody>tr>th,.wpDataTablesWrapper table.wpDataTable>tbody>tr>td{text-align:left}.wpDataTablesWrapper table.wpDataTable>thead>tr>th{-o-transition:.5s;-ms-transition:.5s;-moz-transition:.5s;-webkit-transition:.5s;transition:.5s;font-weight:700;padding:3px 18px 3px 10px;font-weight:700;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wpDataTablesWrapper table.wpDataTable thead tr:nth-child(2) th{overflow:visible}.wpDataTablesWrapper table.wpDataTable thead th.sorting,.wpDataTablesWrapper table.wpDataTable thead th.sorting_asc,.wpDataTablesWrapper table.wpDataTable thead th.sorting_desc{background-image:none!important}.wpDataTablesWrapper table.wpDataTable td{padding:3px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wpDataTablesWrapper table.wpDataTable td.center,.wpDataTablesWrapper table.wpDataTable td.dataTables_empty{text-align:center}.wpDataTablesWrapper table.wpDataTable>tfoot>tr>th{padding:3px 18px 3px 10px;font-weight:700}.wpDataTablesWrapper table.wpDataTable tfoot td{padding-bottom:7px;padding-top:7px;vertical-align:top;white-space:normal;overflow:visible}.wpDataTablesWrapper table.wpDataTable tfoot td input,.wpDataTablesWrapper table.wpDataTable thead th input{display:block;margin:0;width:92%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis}.wpDataTablesWrapper table.wpDataTable tfoot td input.date-range-filter,.wpDataTablesWrapper table.wpDataTable tfoot td input.number-range-filter,.wpDataTablesWrapper table.wpDataTable thead th input.number-range-filter,.wpDataTablesWrapper table.wpDataTable thead th input.date-range-filter{display:block;width:100%}.wpDataTablesWrapper table.wpDataTable tfoot td input.date-range-filter:first-child,.wpDataTablesWrapper table.wpDataTable tfoot td input.number-range-filter:first-child,.wpDataTablesWrapper table.wpDataTable thead th input.number-range-filter:first-child,.wpDataTablesWrapper table.wpDataTable thead th input.date-range-filter:first-child{margin-bottom:5px!important}.wpDataTablesWrapper .dataTables_length{float:left}.wpDataTablesWrapper .dataTables_filter{float:right;text-align:right}.wpDataTablesWrapper .dataTables_info{clear:both;float:left}.wpDataTablesWrapper .dataTables_paginate{float:right;text-align:right;background-color:transparent}.wpDataTablesWrapper .paging_full_numbers{height:35px;line-height:22px}.wpDataTablesWrapper .paging_full_numbers a:active{outline:0}.wpDataTablesWrapper .paging_full_numbers a:hover{text-decoration:none}.wpDataTablesWrapper div.wdtscroll{width:100%;overflow-x:scroll}.wpDataTablesWrapper table.scroll{width:auto!important}.wpDataTablesWrapper .dataTables_info{clear:both;float:left;margin-top:10px;padding:3px 0;font-size:11px}.wpDataTablesWrapper .dataTables_paginate{float:right;text-align:right;margin-top:5px}.wpDataTablesWrapper .dataTables_paginate a{display:inline-block;height:auto;cursor:pointer;padding:2px 7px;vertical-align:middle}.wpDataTablesWrapper .paginate_button:before{font-size:14px;line-height:1em}.wpDataTablesWrapper div.dt-buttons{margin-bottom:20px;margin-left:20px;margin-right:-10px;float:right}.wpDataTablesWrapper a.DTTT_button{height:auto;line-height:18px!important;margin-right:15px;padding:0;font-size:1em;position:relative;float:left;margin-right:3px;padding:5px 8px;cursor:pointer;color:#000}.wpDataTablesWrapper .DTTT_button[disabled=disabled]{cursor:default}.wpDataTablesWrapper .DTTT_button:before{font-size:18px;float:none;line-height:18px;margin-right:5px;margin-top:0}.wpDataTablesWrapper .DTTT_button span{vertical-align:middle}.wpDataTablesWrapper .wdt-checkbox-filter.btn:before{content:"\e00a"}.wpDataTablesWrapper .DTTT_button.DTTT_button_new:before{content:"\e006"}.wpDataTablesWrapper .DTTT_button.DTTT_button_delete:before{content:"\e00b"}.wpDataTablesWrapper .DTTT_button.DTTT_button_edit:before{content:"\e00c"}.wpDataTablesWrapper .ico-search:before{content:"\e00d"}.wpDataTablesWrapper .ico-cntrl:before{content:"\e00e"}.wpDataTablesWrapper .DTTT_button.DTTT_button_print:before{content:"\e00f"}.wpDataTablesWrapper .DTTT_button.DTTT_button_xls:before{content:"\e010"}.wpDataTablesWrapper .DTTT_button.DTTT_button_pdf:before{content:"\e013"}.wpDataTablesWrapper .DTTT_button.DTTT_button_csv:before{content:"\e014"}.wpDataTablesWrapper .DTTT_button.DTTT_button_copy:before{content:"\e015"}.wpDataTablesWrapper .DTTT_button.DTTT_button_colvis:before{font-family:"wpDataTablesIcons"!important;font-size:20px;content:"\f074"}.wpDataTablesWrapper .DTTT_button.DTTT_button_clear_filters:before{content:"\e817"}button.wdt-clear-filters-button:before,button.wdt-clear-filters-widget-button:before{font-family:wpDataTablesIcons;content:"\e817"}.wpDataTablesWrapper .dataTables_length{float:left}.wpDataTablesWrapper .dataTables_length span.filter-option{margin-left:15px}.wpDataTablesWrapper .dataTables_length a{box-shadow:none!important}.wpDataTablesWrapper .dataTables_filter,.wpDataTablesWrapper .dataTables_length{margin-bottom:15px}.wpDataTablesWrapper .dataTables_filter label,.wpDataTablesWrapper .dataTables_length label{font-size:inherit;line-height:inherit;margin-bottom:0}.wpDataTablesWrapper .dataTables_filter input{margin-bottom:0}div.wpDataTablesFilter span.filter_column .date-range-filter:first-child,div.wpDataTablesFilter span.filter_column .date-time-range-filter:first-child,div.wpDataTablesFilter span.filter_column .time-range-filter:first-child,div.wpDataTablesFilter span.filter_column .number-range-filter:first-child{margin-right:8px}.wpDataTablesWrapper .wdt-checkbox-modal-wrap,.wpDataTablesWrapper .wpDataTablesFilter{overflow:hidden;display:initial}.wpDataTables input[type="search"],.wpDataTables select,.wpDataTables textarea{display:inline-block;margin-bottom:0!important;max-width:100%;padding:3px 6px!important;vertical-align:middle!important;width:206px}.wpDataTables textarea.wpdt-tiny-mce{display:none!important}.wpDataTables .wdt-checkbox-filter.btn,.wpDataTables select,.wpDataTables textarea{font-size:inherit!important;line-height:22px!important;padding-bottom:3px!important;padding-top:3px!important;-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important;text-transform:inherit}.wpDataTables .wdt-checkbox-filter.btn,.wpDataTables input[type=text],.wpDataTables select,.wpdt-c .wpDataTablesWrapper .filter_column button{height:30px!important}.wpDataTables .wdt-checkbox-filter.btn{width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis;border:1px solid #d7d7d7}.wpDataTablesWrapper .wpDataTableFilterSection{float:left;padding:15px}.wpDataTableFilterBox .wpDataTableFilterSection div:first-child{margin-top:5px}.wpDataTablesFilter .wpDataTableFilterSection:not(#wdt-clear-filters-button-block):not(#wdt-pf-search-filters-button-block){float:left;margin-bottom:10px;margin-right:15px;width:230px;min-height:115px}.sidebar .wpDataTablesFilter .wpDataTableFilterSection:not(#wdt-clear-filters-button-block):not(#wdt-pf-search-filters-button-block){min-height:50px}.wpDataTablesFilter .wpDataTableFilterSection input.form-control{height:30px}.wpDataTablesFilter .wpDataTableFilterSection#wdt-clear-filters-button-block{display:inline-block;margin-bottom:0;padding-top:42px}.wpDataTablesFilter .wpDataTableFilterSection span.filter_column.filter_checkbox .wdt_checkbox_option{width:100%}span.filter_column.wdt-filter-number-range{white-space:normal}.wpDataTablesFilter .number_range_filter:first-child{margin-right:7px}.wdt-checkbox-modal-wrap{margin-bottom:15px}.wdt-checkbox-modal-wrap:after,.wdt-checkbox-modal-wrap:before{content:" ";display:table}.wdt-checkbox-modal-wrap:after{clear:both}@media(max-width:979px){.wpDataTablesWrapper .dataTables_filter input{width:100px}}@media(max-width:750px){.wpDataTablesWrapper .dataTables_filter input{width:200px}.wpDataTablesWrapper .DTTT_container,.wpDataTablesWrapper .dataTables_filter,.wpDataTablesWrapper .dataTables_length{float:none!important;margin-bottom:10px;text-align:left!important}.wpDataTablesWrapper .DTTT_container{margin-left:0!important}.wpDataTablesWrapper .DTTT_container button{display:none}.wpDataTablesWrapper .DTTT_container button.delete_table_entry,.wpDataTablesWrapper .DTTT_container button.edit_table,.wpDataTablesWrapper .DTTT_container button.new_table_entry{display:inline-block;float:none!important;position:static}}span.media-modal-icon span.screen-reader-text{display:none}.wpDataTablesPopover{position:absolute;width:200px;white-space:normal;line-height:16px;z-index:9}.wpDataTablesPopover:before{position:absolute;left:50%;bottom:-7px;content:'';display:block;margin-left:-7px}.wpDataTablesPopover.editTools{width:auto}.wpDataTablesPopover.editTools a.DTTT_button{color:#ffffff!important}div.dt-button-collection{position:absolute;top:0;left:0;width:auto;min-width:200px;padding:20px;border:solid 1px #ccc;background-color:#fff;overflow:hidden;z-index:100001;border-radius:5px}.dt-button-collection a.dt-button{background-color:#fdfdfd;border:1px solid;border-color:#ccc;border-color:rgb(204,204,204);color:#333;border-radius:3px!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;font-weight:400;margin:5px 10px 5px 0;align-items:flex-start;text-align:center;cursor:default;padding:2px 6px 3px}div.dt-button-collection button.dt-button,div.dt-button-collection div.dt-button,div.dt-button-collection a.dt-button{position:relative;left:0;right:0;display:block;margin-bottom:4px;margin-right:0}div.dt-button-collection a.dt-button:active:not(.disabled),div.dt-button-collection a.dt-button.active:not(.disabled){background-color:#f5f5f5;border-color:#a1a1a1;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important}@media screen and (max-width:640px){div.dt-buttons{float:none!important;text-align:center}}div.wdt-checkbox-modal-wrap div.wdt-checkbox-option{width:33%;float:left}div.wdt-checkbox-modal-wrap div.wdt-checkbox-option{width:33%;float:left;position:relative}div.wdt-checkbox-modal-wrap>div>div{width:100%}div.wdt-checkbox-modal-wrap div.wdt-checkbox-option label{white-space:nowrap;width:85%;overflow:hidden;text-overflow:ellipsis;display:inline-block;position:absolute;padding-left:5px}.wdt-sum-cell,.wdt-avg-cell,.wdt-min-cell,.wdt-max-cell{text-align:right!important}.wpdt-c .wdt-edit-dialog-fields-block .btn.dropdown-toggle{text-transform:inherit}.wpdt-c .wdt-edit-dialog-fields-block .fileinput-filename{text-overflow:ellipsis;white-space:nowrap;max-width:200px}.wpdt-c #wdt-frontend-modal #wdt-checkbox-filter-reset:before{font-family:wpDataTablesIcons;content:"\e817";margin-right:5px}.wpdt-c .wpDataTablesWrapper table.has-columns-hidden>tbody>tr.row-detail>td{background-color:transparent}.wpdt-c .wpDataTablesWrapper table.has-columns-hidden>tbody>tr.row-detail>td>ul>li{padding-top:10px}.wpdt-c #wpdatatable-preview-container .wpDataTablesWrapper table.has-columns-hidden>tbody>tr.row-detail>td>ul>li{height:auto}.wpdt-c .wpDataTablesWrapper table{position:relative}.wpdt-c .wpDataTablesWrapper .wdtscroll table{position:static}.wpdt-c .wdt-preload-layer{position:absolute;height:100%;width:100%;background-color:rgba(255,255,255,1);text-align:center;z-index:100}.wpdt-c .wdt-preload-layer div.preloader{top:50%}.wpdt-c .media-modal .media-frame-title h1{padding:0 16px;font-size:22px;line-height:50px;margin:0}.wpdt-c .media-modal .thumbnail{margin-bottom:initial;background-color:initial;border:initial;line-height:initial;border-radius:initial}.wpdt-c .media-modal h2{position:relative;font-weight:600;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}.wpdt-c .media-modal input{font-weight:400}.wpdt-c .attachment-filters{min-width:110px}.wpdt-c .responsiveExpander{float:left}.wpdt-c input:focus{background:none!important}.wpdt-c .wpDataTablesWrapper .dataTables_length .bootstrap-select.length_menu{width:80px;padding:0 5px;height:35px}.wpdt-c .wpDataTablesWrapper .dataTables_length .bootstrap-select .dropdown-toggle{height:100%;top:0}.wpdt-c .wpDataTablesWrapper .dataTables_length .bootstrap-select .dropdown-toggle:after{content:''}.wpdt-c .clear{clear:both}.wpdt-c button.wdt-checkbox-filter:hover:after,.wpdt-c button.dropdown-toggle:hover:after{width:0}.wpdt-c .modal .modal-header{background:none}.wpdt-c .modal .modal-header button.close{background:none;margin:0;opacity:.5;font-weight:400;color:#000;font-size:19.5px}.wpdt-c .btn-group.bootstrap-select .inner .text{margin-top:inherit;position:inherit;top:inherit;text-align:center;width:inherit}.wpdt-c .modal{width:inherit;margin-left:inherit;background-color:inherit;border:inherit;-webkit-border-radius:inherit;-moz-border-radius:inherit;border-radius:inherit;-webkit-box-shadow:inherit;-moz-box-shadow:inherit;box-shadow:inherit;-webkit-background-clip:inherit;-moz-background-clip:inherit;background-clip:inherit}.wpdt-c .bootstrap-select .status{background:#F7F7F7;clear:both;color:#999;font-size:13px;font-weight:400;line-height:1;margin-bottom:-5px;padding:13px 20px}.google_candlestick_chart g.google-visualization-tooltip g:nth-child(3) text:first-child,.google_waterfall_chart g.google-visualization-tooltip g:nth-child(3) text:first-child{display:none!important}div.DTTT_container{position:relative;float:right;margin-bottom:1em}button.DTTT_button,div.DTTT_button,a.DTTT_button{position:relative;float:left;margin-right:3px;padding:5px 8px;border:1px solid #999;cursor:pointer;*cursor:hand;font-size:.88em;color:black!important;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-moz-box-shadow:1px 1px 3px #ccc;-ms-box-shadow:1px 1px 3px #ccc;-o-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background:#fff;background:-webkit-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:-moz-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:-ms-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:-o-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#f9f9f9',GradientType=0)}button.DTTT_button{height:30px;padding:3px 8px}.DTTT_button embed{outline:none}button.DTTT_button:hover,div.DTTT_button:hover,a.DTTT_button:hover{border:1px solid #666;text-decoration:none!important;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background:#f3f3f3;background:-webkit-linear-gradient(top,#f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%);background:-moz-linear-gradient(top,#f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%);background:-ms-linear-gradient(top,#f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%);background:-o-linear-gradient(top,#f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%);background:linear-gradient(top,#f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3',endColorstr='#f4f4f4',GradientType=0)}button.DTTT_disabled,div.DTTT_disabled,a.DTTT_disabled{color:#999;border:1px solid #d0d0d0;background:#fff;background:-webkit-linear-gradient(top,#ffffff 0%,#f9f9f9 89%,#fafafa 100%);background:-moz-linear-gradient(top,#ffffff 0%,#f9f9f9 89%,#fafafa 100%);background:-ms-linear-gradient(top,#ffffff 0%,#f9f9f9 89%,#fafafa 100%);background:-o-linear-gradient(top,#ffffff 0%,#f9f9f9 89%,#fafafa 100%);background:linear-gradient(top,#ffffff 0%,#f9f9f9 89%,#fafafa 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#fafafa',GradientType=0)}button.DTTT_button_collection span{padding-right:17px}button.DTTT_button_collection:hover span{padding-right:17px}table.DTTT_selectable tbody tr{cursor:pointer;*cursor:hand}table.dataTable tr.DTTT_selected.odd{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_1{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_2{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_3{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.even{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_1{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_2{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_3{background-color:#B0BED9}div.DTTT_collection{width:150px;padding:8px 8px 4px 8px;border:1px solid #ccc;border:1px solid rgba(0,0,0,.4);background-color:#f3f3f3;background-color:rgba(255,255,255,.3);overflow:hidden;z-index:2002;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:3px 3px 5px rgba(0,0,0,.3);-moz-box-shadow:3px 3px 5px rgba(0,0,0,.3);-ms-box-shadow:3px 3px 5px rgba(0,0,0,.3);-o-box-shadow:3px 3px 5px rgba(0,0,0,.3);box-shadow:3px 3px 5px rgba(0,0,0,.3)}div.DTTT_collection_background{z-index:2001}div.DTTT_collection button.DTTT_button,div.DTTT_collection div.DTTT_button,div.DTTT_collection a.DTTT_button{position:relative;left:0;right:0;display:block;float:none;margin-bottom:4px;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999}.DTTT_print_info{position:fixed;top:50%;left:50%;width:400px;height:150px;margin-left:-200px;margin-top:-75px;text-align:center;color:#333;padding:10px 30px;background:#fff;background:-webkit-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:-moz-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:-ms-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:-o-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#f9f9f9',GradientType=0);opacity:.95;border:1px solid #000;border:1px solid rgba(0,0,0,.5);-webkit-border-radius:6px;-moz-border-radius:6px;-ms-border-radius:6px;-o-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.5);-moz-box-shadow:0 3px 7px rgba(0,0,0,.5);-ms-box-shadow:0 3px 7px rgba(0,0,0,.5);-o-box-shadow:0 3px 7px rgba(0,0,0,.5);box-shadow:0 3px 7px rgba(0,0,0,.5)}.DTTT_print_info h6{font-weight:400;font-size:28px;line-height:28px;margin:1em}.DTTT_print_info p{font-size:14px;line-height:20px}table.has-columns-hidden>tbody>tr>td>span.responsiveExpander,table.has-columns-hidden>tbody>tr.detail-show>td span.responsiveExpander{background-color:#fff;background-image:-webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#e0e0e0));background-image:-webkit-linear-gradient(top,#ffffff,#e0e0e0);background-image:-o-linear-gradient(top,#ffffff,#e0e0e0);background-image:linear-gradient(to bottom,#ffffff,#e0e0e0);background-image:-moz-linear-gradient(top,#ffffff,#e0e0e0);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);border:1px solid #e0e0e0;cursor:pointer;display:inline-block;line-height:0;font-size:0;padding:1px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:3px}table.has-columns-hidden>tbody>tr>td>span.responsiveExpander:hover,table.has-columns-hidden>tbody>tr.detail-show>td span.responsiveExpander:hover{background-color:#fff;background-image:-webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#ffffff,#f5f5f5);background-image:-o-linear-gradient(top,#ffffff,#f5f5f5);background-image:linear-gradient(to bottom,#ffffff,#f5f5f5);background-image:-moz-linear-gradient(top,#ffffff,#f5f5f5);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff5f5f5',GradientType=0);border-color:#c7d5e1;-webkit-box-shadow:0 0 4px rgba(0,0,0,.25);-moz-box-shadow:0 0 4px rgba(0,0,0,.25);box-shadow:0 0 4px rgba(0,0,0,.25)}table.has-columns-hidden>tbody>tr>td>span.responsiveExpander:after,table.has-columns-hidden>tbody>tr.detail-show>td span.responsiveExpander:after{display:inline-block;line-height:0;content:"";height:11px;width:11px;background-image:url(../img/icons.png);background-repeat:no-repeat;background-position:-3000px -3000px}table.has-columns-hidden>tbody>tr>td>span.responsiveExpander:after{background-position:0 0;cursor:pointer}table.has-columns-hidden>tbody>tr>td>span.responsiveExpander:hover:after{background-position:-12px 0}table.has-columns-hidden>tbody>tr.detail-show>td span.responsiveExpander:after{background-position:-24px 0}table.has-columns-hidden>tbody>tr.detail-show>td span.responsiveExpander:hover:after{background-position:-36px 0}table.has-columns-hidden>tbody>tr.row-detail>td{background:#eee}table.has-columns-hidden>tbody>tr.row-detail>td>ul{list-style:none;margin:0}table.has-columns-hidden>tbody>tr.row-detail>td>ul>li>span.columnTitle{font-weight:700}
1
+ @font-face{font-weight:400;font-style:normal;font-family:wpDataTablesIcons;src:url(../fonts/wpDataTablesIcons.eot);src:url(../fonts/wpDataTablesIcons.eot?#iefix) format('embedded-opentype'),url(../fonts/wpDataTablesIcons.woff) format('woff'),url(../fonts/wpDataTablesIcons.ttf) format('truetype'),url(../fonts/wpDataTablesIcons.svg#wpDataTablesIcons) format('svg')}.wpDataTables:after,.wpDataTables:before{content:" ";display:table}.wpDataTables:after{clear:both}.wpDataTablesWrapper{margin-bottom:20px}.wpDataTablesWrapper table.wpDataTable{background-color:transparent;border-collapse:collapse;border-spacing:0;clear:both;margin:0 auto;width:100%;table-layout:auto;margin-bottom:10px;overflow:auto}.wpDataTablesWrapper table.wpDataTable>tbody>tr>td>ul{list-style:inherit}.wpDataTablesWrapper table.wpDataTable>tbody>tr>th,.wpDataTablesWrapper table.wpDataTable>tbody>tr>td{text-align:left}.wpDataTablesWrapper table.wpDataTable.wpdtSimpleTable>tbody>tr>th,.wpDataTablesWrapper table.wpDataTable.wpdtSimpleTable>tbody>tr>td{text-align:center}.wpDataTablesWrapper table.wpDataTable>thead>tr>th{-o-transition:.5s;-ms-transition:.5s;-moz-transition:.5s;-webkit-transition:.5s;transition:.5s;font-weight:700;padding:3px 18px 3px 10px;font-weight:700;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wpDataTablesWrapper table.wpDataTable thead tr:nth-child(2) th{overflow:visible}.wpDataTablesWrapper table.wpDataTable thead th.sorting,.wpDataTablesWrapper table.wpDataTable thead th.sorting_asc,.wpDataTablesWrapper table.wpDataTable thead th.sorting_desc{background-image:none!important}.wpDataTablesWrapper table.wpDataTable td{padding:3px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wpDataTablesWrapper table.wpDataTable td.center,.wpDataTablesWrapper table.wpDataTable td.dataTables_empty{text-align:center}.wpDataTablesWrapper table.wpDataTable>tfoot>tr>th{padding:3px 18px 3px 10px;font-weight:700}.wpDataTablesWrapper table.wpDataTable tfoot td{padding-bottom:7px;padding-top:7px;vertical-align:top;white-space:normal;overflow:visible}.wpDataTablesWrapper table.wpDataTable tfoot td input,.wpDataTablesWrapper table.wpDataTable thead th input{display:block;margin:0;width:92%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis}.wpDataTablesWrapper table.wpDataTable tfoot td input.date-range-filter,.wpDataTablesWrapper table.wpDataTable tfoot td input.number-range-filter,.wpDataTablesWrapper table.wpDataTable thead th input.number-range-filter,.wpDataTablesWrapper table.wpDataTable thead th input.date-range-filter{display:block;width:100%}.wpDataTablesWrapper table.wpDataTable tfoot td input.date-range-filter:first-child,.wpDataTablesWrapper table.wpDataTable tfoot td input.number-range-filter:first-child,.wpDataTablesWrapper table.wpDataTable thead th input.number-range-filter:first-child,.wpDataTablesWrapper table.wpDataTable thead th input.date-range-filter:first-child{margin-bottom:5px!important}.wpDataTablesWrapper .dataTables_length{float:left}.wpDataTablesWrapper .dataTables_filter{float:right;text-align:right}.wpDataTablesWrapper .dataTables_info{clear:both;float:left}.wpDataTablesWrapper .dataTables_paginate{float:right;text-align:right;background-color:transparent}.wpDataTablesWrapper .paging_full_numbers{height:35px;line-height:22px}.wpDataTablesWrapper .paging_full_numbers a:active{outline:0}.wpDataTablesWrapper .paging_full_numbers a:hover{text-decoration:none}.wpDataTablesWrapper div.wdtscroll{width:100%;overflow-x:scroll}.wpDataTablesWrapper table.scroll{width:auto!important}.wpDataTablesWrapper .dataTables_info{clear:both;float:left;margin-top:10px;padding:3px 0;font-size:11px}.wpDataTablesWrapper .dataTables_paginate{float:right;text-align:right;margin-top:5px}.wpDataTablesWrapper .dataTables_paginate a{display:inline-block;height:auto;cursor:pointer;padding:2px 7px;vertical-align:middle}.wpDataTablesWrapper .paginate_button:before{font-size:14px;line-height:1em}.wpDataTablesWrapper div.dt-buttons{margin-bottom:20px;margin-left:20px;margin-right:-10px;float:right}.wpDataTablesWrapper a.DTTT_button{height:auto;line-height:18px!important;margin-right:15px;padding:0;font-size:1em;position:relative;float:left;margin-right:3px;padding:5px 8px;cursor:pointer;color:#000}.wpDataTablesWrapper .DTTT_button[disabled=disabled]{cursor:default}.wpDataTablesWrapper .DTTT_button:before{font-size:18px;float:none;line-height:18px;margin-right:5px;margin-top:0}.wpDataTablesWrapper .DTTT_button span{vertical-align:middle}.wpDataTablesWrapper .wdt-checkbox-filter.btn:before{content:"\e00a"}.wpDataTablesWrapper .DTTT_button.DTTT_button_new:before{content:"\e006"}.wpDataTablesWrapper .DTTT_button.DTTT_button_delete:before{content:"\e00b"}.wpDataTablesWrapper .DTTT_button.DTTT_button_edit:before{content:"\e00c"}.wpDataTablesWrapper .ico-search:before{content:"\e00d"}.wpDataTablesWrapper .ico-cntrl:before{content:"\e00e"}.wpDataTablesWrapper .DTTT_button.DTTT_button_print:before{content:"\e00f"}.wpDataTablesWrapper .DTTT_button.DTTT_button_xls:before{content:"\e010"}.wpDataTablesWrapper .DTTT_button.DTTT_button_pdf:before{content:"\e013"}.wpDataTablesWrapper .DTTT_button.DTTT_button_csv:before{content:"\e014"}.wpDataTablesWrapper .DTTT_button.DTTT_button_copy:before{content:"\e015"}.wpDataTablesWrapper .DTTT_button.DTTT_button_colvis:before{font-family:"wpDataTablesIcons"!important;font-size:20px;content:"\f074"}.wpDataTablesWrapper .DTTT_button.DTTT_button_clear_filters:before{content:"\e817"}button.wdt-clear-filters-button:before,button.wdt-clear-filters-widget-button:before{font-family:wpDataTablesIcons;content:"\e817"}.wpDataTablesWrapper .dataTables_length{float:left}.wpDataTablesWrapper .dataTables_length span.filter-option{margin-left:15px}.wpDataTablesWrapper .dataTables_length a{box-shadow:none!important}.wpDataTablesWrapper .dataTables_filter,.wpDataTablesWrapper .dataTables_length{margin-bottom:15px}.wpDataTablesWrapper .dataTables_filter label,.wpDataTablesWrapper .dataTables_length label{font-size:inherit;line-height:inherit;margin-bottom:0}.wpDataTablesWrapper .dataTables_filter input{margin-bottom:0}div.wpDataTablesFilter span.filter_column .date-range-filter:first-child,div.wpDataTablesFilter span.filter_column .date-time-range-filter:first-child,div.wpDataTablesFilter span.filter_column .time-range-filter:first-child,div.wpDataTablesFilter span.filter_column .number-range-filter:first-child{margin-right:8px}.wpDataTablesWrapper .wdt-checkbox-modal-wrap,.wpDataTablesWrapper .wpDataTablesFilter{overflow:hidden;display:initial}@-moz-document url-prefix(){.wpdt-c .wpDataTables.wpDataTablesWrapper{position:initial!important}}.wpDataTables input[type="search"],.wpDataTables select,.wpDataTables textarea{display:inline-block;margin-bottom:0!important;max-width:100%;padding:3px 6px!important;vertical-align:middle!important;width:206px}.wpDataTables textarea.wpdt-tiny-mce{display:none!important}.wpDataTables .wdt-checkbox-filter.btn,.wpDataTables select,.wpDataTables textarea{font-size:inherit!important;line-height:22px!important;padding-bottom:3px!important;padding-top:3px!important;-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important;text-transform:inherit}.wpDataTables .wdt-checkbox-filter.btn,.wpDataTables input[type=text],.wpDataTables select,.wpdt-c .wpDataTablesWrapper .filter_column button{height:30px!important}.wpDataTables .wdt-checkbox-filter.btn{width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis;border:1px solid #d7d7d7}.wpDataTablesWrapper .wpDataTableFilterSection{float:left;padding:15px}.wpDataTableFilterBox .wpDataTableFilterSection div:first-child{margin-top:5px}.wpDataTablesFilter .wpDataTableFilterSection:not(#wdt-clear-filters-button-block):not(#wdt-pf-search-filters-button-block){float:left;margin-bottom:10px;margin-right:15px;width:230px;min-height:115px}.sidebar .wpDataTablesFilter .wpDataTableFilterSection:not(#wdt-clear-filters-button-block):not(#wdt-pf-search-filters-button-block){min-height:50px}.wpDataTablesFilter .wpDataTableFilterSection input.form-control{height:30px}.wpDataTablesFilter .wpDataTableFilterSection#wdt-clear-filters-button-block{display:inline-block;margin-bottom:0;padding-top:42px}.wpDataTablesFilter .wpDataTableFilterSection span.filter_column.filter_checkbox .wdt_checkbox_option{width:100%}span.filter_column.wdt-filter-number-range{white-space:normal}.wpDataTablesFilter .number_range_filter:first-child{margin-right:7px}.wdt-checkbox-modal-wrap{margin-bottom:15px}.wdt-checkbox-modal-wrap:after,.wdt-checkbox-modal-wrap:before{content:" ";display:table}.wdt-checkbox-modal-wrap:after{clear:both}@media(max-width:979px){.wpDataTablesWrapper .dataTables_filter input{width:100px}}@media(max-width:750px){.wpDataTablesWrapper .dataTables_filter input{width:200px}.wpDataTablesWrapper .DTTT_container,.wpDataTablesWrapper .dataTables_filter,.wpDataTablesWrapper .dataTables_length{float:none!important;margin-bottom:10px;text-align:left!important}.wpDataTablesWrapper .DTTT_container{margin-left:0!important}.wpDataTablesWrapper .DTTT_container button{display:none}.wpDataTablesWrapper .DTTT_container button.delete_table_entry,.wpDataTablesWrapper .DTTT_container button.edit_table,.wpDataTablesWrapper .DTTT_container button.new_table_entry{display:inline-block;float:none!important;position:static}}span.media-modal-icon span.screen-reader-text{display:none}.wpDataTablesPopover{position:absolute;width:200px;white-space:normal;line-height:16px;z-index:9}.wpDataTablesPopover:before{position:absolute;left:50%;bottom:-7px;content:'';display:block;margin-left:-7px}.wpDataTablesPopover.editTools{width:auto}.wpDataTablesPopover.editTools a.DTTT_button{color:#ffffff!important}div.dt-button-collection{position:absolute;top:0;left:0;width:auto;min-width:200px;padding:20px;border:solid 1px #ccc;background-color:#fff;overflow:hidden;z-index:100001;border-radius:5px}.dt-button-collection a.dt-button{background-color:#fdfdfd;border:1px solid;border-color:#ccc;border-color:rgb(204,204,204);color:#333;border-radius:3px!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;font-weight:400;margin:5px 10px 5px 0;align-items:flex-start;text-align:center;cursor:default;padding:2px 6px 3px}div.dt-button-collection button.dt-button,div.dt-button-collection div.dt-button,div.dt-button-collection a.dt-button{position:relative;left:0;right:0;display:block;margin-bottom:4px;margin-right:0}div.dt-button-collection a.dt-button:active:not(.disabled),div.dt-button-collection a.dt-button.active:not(.disabled){background-color:#f5f5f5;border-color:#a1a1a1;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important}@media screen and (max-width:640px){div.dt-buttons{float:none!important;text-align:center}}div.wdt-checkbox-modal-wrap div.wdt-checkbox-option{width:33%;float:left}div.wdt-checkbox-modal-wrap div.wdt-checkbox-option{width:33%;float:left;position:relative}div.wdt-checkbox-modal-wrap>div>div{width:100%}div.wdt-checkbox-modal-wrap div.wdt-checkbox-option label{white-space:nowrap;width:85%;overflow:hidden;text-overflow:ellipsis;display:inline-block;position:absolute;padding-left:5px}.wdt-sum-cell,.wdt-avg-cell,.wdt-min-cell,.wdt-max-cell{text-align:right!important}.wpdt-c .wdt-edit-dialog-fields-block .btn.dropdown-toggle{text-transform:inherit}.wpdt-c .wdt-edit-dialog-fields-block .fileinput-filename{text-overflow:ellipsis;white-space:nowrap;max-width:200px}.wpdt-c #wdt-frontend-modal #wdt-checkbox-filter-reset:before{font-family:wpDataTablesIcons;content:"\e817";margin-right:5px}.wpdt-c .wpDataTablesWrapper table.has-columns-hidden>tbody>tr.row-detail>td{background-color:transparent}.wpdt-c .wpDataTablesWrapper table.has-columns-hidden>tbody>tr.row-detail>td>ul>li{padding-top:10px}.wpdt-c #wpdatatable-preview-container .wpDataTablesWrapper table.has-columns-hidden>tbody>tr.row-detail>td>ul>li{height:auto}.wpdt-c .wpDataTablesWrapper table{position:relative}.wpdt-c .wpDataTablesWrapper .wdtscroll table{position:static}.wpdt-c .wdt-preload-layer{position:absolute;height:100%;width:100%;background-color:rgba(255,255,255,1);text-align:center;z-index:100}.wpdt-c .wdt-preload-layer div.preloader{top:50%}.wpdt-c .media-modal .media-frame-title h1{padding:0 16px;font-size:22px;line-height:50px;margin:0}.wpdt-c .media-modal .thumbnail{margin-bottom:initial;background-color:initial;border:initial;line-height:initial;border-radius:initial}.wpdt-c .media-modal h2{position:relative;font-weight:600;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}.wpdt-c .media-modal input{font-weight:400}.wpdt-c .attachment-filters{min-width:110px}.wpdt-c .responsiveExpander{float:left}.wpdt-c input:focus{background:none!important}.wpdt-c .wpDataTablesWrapper .dataTables_length .bootstrap-select.length_menu{width:80px;padding:0 5px;height:35px}.wpdt-c .wpDataTablesWrapper .dataTables_length .bootstrap-select .dropdown-toggle{height:100%;top:0}.wpdt-c .wpDataTablesWrapper .dataTables_length .bootstrap-select .dropdown-toggle:after{content:''}.wpdt-c .clear{clear:both}.wpdt-c button.wdt-checkbox-filter:hover:after,.wpdt-c button.dropdown-toggle:hover:after{width:0}.wpdt-c .modal .modal-header{background:none}.wpdt-c .modal .modal-header button.close{background:none;margin:0;opacity:.5;font-weight:400;color:#000;font-size:19.5px}.wpdt-c .btn-group.bootstrap-select .inner .text{margin-top:inherit;position:inherit;top:inherit;text-align:center;width:inherit}.wpdt-c .modal{width:inherit;margin-left:inherit;background-color:inherit;border:inherit;-webkit-border-radius:inherit;-moz-border-radius:inherit;border-radius:inherit;-webkit-box-shadow:inherit;-moz-box-shadow:inherit;box-shadow:inherit;-webkit-background-clip:inherit;-moz-background-clip:inherit;background-clip:inherit}.wpdt-c .bootstrap-select .status{background:#F7F7F7;clear:both;color:#999;font-size:13px;font-weight:400;line-height:1;margin-bottom:-5px;padding:13px 20px}.google_candlestick_chart g.google-visualization-tooltip g:nth-child(3) text:first-child,.google_waterfall_chart g.google-visualization-tooltip g:nth-child(3) text:first-child{display:none!important}div.DTTT_container{position:relative;float:right;margin-bottom:1em}button.DTTT_button,div.DTTT_button,a.DTTT_button{position:relative;float:left;margin-right:3px;padding:5px 8px;border:1px solid #999;cursor:pointer;*cursor:hand;font-size:.88em;color:black!important;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-moz-box-shadow:1px 1px 3px #ccc;-ms-box-shadow:1px 1px 3px #ccc;-o-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background:#fff;background:-webkit-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:-moz-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:-ms-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:-o-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#f9f9f9',GradientType=0)}button.DTTT_button{height:30px;padding:3px 8px}.DTTT_button embed{outline:none}button.DTTT_button:hover,div.DTTT_button:hover,a.DTTT_button:hover{border:1px solid #666;text-decoration:none!important;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background:#f3f3f3;background:-webkit-linear-gradient(top,#f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%);background:-moz-linear-gradient(top,#f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%);background:-ms-linear-gradient(top,#f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%);background:-o-linear-gradient(top,#f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%);background:linear-gradient(top,#f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3',endColorstr='#f4f4f4',GradientType=0)}button.DTTT_disabled,div.DTTT_disabled,a.DTTT_disabled{color:#999;border:1px solid #d0d0d0;background:#fff;background:-webkit-linear-gradient(top,#ffffff 0%,#f9f9f9 89%,#fafafa 100%);background:-moz-linear-gradient(top,#ffffff 0%,#f9f9f9 89%,#fafafa 100%);background:-ms-linear-gradient(top,#ffffff 0%,#f9f9f9 89%,#fafafa 100%);background:-o-linear-gradient(top,#ffffff 0%,#f9f9f9 89%,#fafafa 100%);background:linear-gradient(top,#ffffff 0%,#f9f9f9 89%,#fafafa 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#fafafa',GradientType=0)}button.DTTT_button_collection span{padding-right:17px}button.DTTT_button_collection:hover span{padding-right:17px}table.DTTT_selectable tbody tr{cursor:pointer;*cursor:hand}table.dataTable tr.DTTT_selected.odd{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_1{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_2{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_3{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.even{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_1{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_2{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_3{background-color:#B0BED9}div.DTTT_collection{width:150px;padding:8px 8px 4px 8px;border:1px solid #ccc;border:1px solid rgba(0,0,0,.4);background-color:#f3f3f3;background-color:rgba(255,255,255,.3);overflow:hidden;z-index:2002;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:3px 3px 5px rgba(0,0,0,.3);-moz-box-shadow:3px 3px 5px rgba(0,0,0,.3);-ms-box-shadow:3px 3px 5px rgba(0,0,0,.3);-o-box-shadow:3px 3px 5px rgba(0,0,0,.3);box-shadow:3px 3px 5px rgba(0,0,0,.3)}div.DTTT_collection_background{z-index:2001}div.DTTT_collection button.DTTT_button,div.DTTT_collection div.DTTT_button,div.DTTT_collection a.DTTT_button{position:relative;left:0;right:0;display:block;float:none;margin-bottom:4px;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999}.DTTT_print_info{position:fixed;top:50%;left:50%;width:400px;height:150px;margin-left:-200px;margin-top:-75px;text-align:center;color:#333;padding:10px 30px;background:#fff;background:-webkit-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:-moz-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:-ms-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:-o-linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);background:linear-gradient(top,#ffffff 0%,#f3f3f3 89%,#f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#f9f9f9',GradientType=0);opacity:.95;border:1px solid #000;border:1px solid rgba(0,0,0,.5);-webkit-border-radius:6px;-moz-border-radius:6px;-ms-border-radius:6px;-o-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.5);-moz-box-shadow:0 3px 7px rgba(0,0,0,.5);-ms-box-shadow:0 3px 7px rgba(0,0,0,.5);-o-box-shadow:0 3px 7px rgba(0,0,0,.5);box-shadow:0 3px 7px rgba(0,0,0,.5)}.DTTT_print_info h6{font-weight:400;font-size:28px;line-height:28px;margin:1em}.DTTT_print_info p{font-size:14px;line-height:20px}table.has-columns-hidden>tbody>tr>td>span.responsiveExpander,table.has-columns-hidden>tbody>tr.detail-show>td span.responsiveExpander{background-color:#fff;background-image:-webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#e0e0e0));background-image:-webkit-linear-gradient(top,#ffffff,#e0e0e0);background-image:-o-linear-gradient(top,#ffffff,#e0e0e0);background-image:linear-gradient(to bottom,#ffffff,#e0e0e0);background-image:-moz-linear-gradient(top,#ffffff,#e0e0e0);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);border:1px solid #e0e0e0;cursor:pointer;display:inline-block;line-height:0;font-size:0;padding:1px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:3px}table.has-columns-hidden>tbody>tr>td>span.responsiveExpander:hover,table.has-columns-hidden>tbody>tr.detail-show>td span.responsiveExpander:hover{background-color:#fff;background-image:-webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#ffffff,#f5f5f5);background-image:-o-linear-gradient(top,#ffffff,#f5f5f5);background-image:linear-gradient(to bottom,#ffffff,#f5f5f5);background-image:-moz-linear-gradient(top,#ffffff,#f5f5f5);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff5f5f5',GradientType=0);border-color:#c7d5e1;-webkit-box-shadow:0 0 4px rgba(0,0,0,.25);-moz-box-shadow:0 0 4px rgba(0,0,0,.25);box-shadow:0 0 4px rgba(0,0,0,.25)}table.has-columns-hidden>tbody>tr>td>span.responsiveExpander:after,table.has-columns-hidden>tbody>tr.detail-show>td span.responsiveExpander:after{display:inline-block;line-height:0;content:"";height:11px;width:11px;background-image:url(../img/icons.png);background-repeat:no-repeat;background-position:-3000px -3000px}table.has-columns-hidden>tbody>tr>td>span.responsiveExpander:after{background-position:0 0;cursor:pointer}table.has-columns-hidden>tbody>tr>td>span.responsiveExpander:hover:after{background-position:-12px 0}table.has-columns-hidden>tbody>tr.detail-show>td span.responsiveExpander:after{background-position:-24px 0}table.has-columns-hidden>tbody>tr.detail-show>td span.responsiveExpander:hover:after{background-position:-36px 0}table.has-columns-hidden>tbody>tr.row-detail>td{background:#eee}table.has-columns-hidden>tbody>tr.row-detail>td>ul{list-style:none;margin:0}table.has-columns-hidden>tbody>tr.row-detail>td>ul>li>span.columnTitle{font-weight:700}
assets/css/wdt.simpleTable.css ADDED
@@ -0,0 +1,310 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @font-face {
2
+ font-family: 'wpDataTablesIcons' !important;
3
+ src: url(../fonts/wpDataTablesIcons.eot);
4
+ src: url(../fonts/wpDataTablesIcons.eot?#iefix) format('embedded-opentype'), url(../fonts/wpDataTablesIcons.woff) format('woff'), url(../fonts/wpDataTablesIcons.ttf) format('truetype'), url(../fonts/wpDataTablesIcons.svg#wpDataTablesIcons) format('svg');
5
+ }
6
+ .wpdt-c.wpDataTableContainerSimpleTable {
7
+ margin-top: 0;
8
+ margin-bottom: 20px;
9
+ padding: 0;
10
+ }
11
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable,
12
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable {
13
+ display: table;
14
+ background-color: transparent;
15
+ border-collapse: collapse;
16
+ border-spacing: 0;
17
+ clear: both;
18
+ margin: 0 auto;
19
+ width: 100%;
20
+ table-layout: auto;
21
+ overflow: auto;
22
+ text-align: center;
23
+ }
24
+
25
+ .wpdt-c.wpDataTableContainerSimpleTable.wdtscroll {
26
+ width: 100%;
27
+ overflow-x: auto;
28
+ }
29
+ .wpdt-c.wpDataTableContainerSimpleTable.wdtscroll table.wpdtSimpleTable {
30
+ position: static;
31
+ width: max-content !important;
32
+ table-layout: fixed;
33
+ }
34
+ .wpdt-c.wpDataTableContainerSimpleTable.wdtscroll table.wpdtSimpleTable td {
35
+ white-space: normal;
36
+ }
37
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody tr.even td.wpdt-cell,
38
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody tr.odd td.wpdt-cell,
39
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody tr.even td.wpdt-cell,
40
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody tr.odd td.wpdt-cell,
41
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable th,
42
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody td,
43
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable th,
44
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody td {
45
+ border: 1px solid #ccc;
46
+ height: 22px;
47
+ empty-cells: show;
48
+ line-height: 21px;
49
+ padding: 10px;
50
+ vertical-align: middle;
51
+ text-align: center;
52
+ overflow: hidden;
53
+ word-break: normal;
54
+ }
55
+
56
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable {
57
+ font-size: inherit;
58
+ }
59
+
60
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable th,
61
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody td,
62
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable th,
63
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody td {
64
+ background-color: #fff;
65
+ }
66
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable th,
67
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable th{
68
+ cursor: default;
69
+ background-color: #eee;
70
+ white-space: normal;
71
+ font-weight: normal;
72
+ background-image: none !important;
73
+ box-shadow: none;
74
+ text-shadow: none;
75
+ }
76
+ .wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerSimpleTable .wpdtSimpleTable tr.even,
77
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable tr.even {
78
+ background-color: #eeeeee;
79
+ }
80
+ .wpdt-c .wpDataTableContainerConfigSimpleTable .handsontable td {
81
+ padding: 10px;
82
+ font-size: inherit;
83
+ vertical-align: middle;
84
+ white-space: normal;
85
+ height: 21px;
86
+ }
87
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tr td:first-child,
88
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable thead tr td:first-child,
89
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tr td:first-child,
90
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable thead tr td:first-child,
91
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tr td:last-child,
92
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable thead tr td:last-child,
93
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tr td:last-child,
94
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable thead tr td:last-child{
95
+ border: 1px solid #ccc;
96
+ }
97
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody tr:last-child td{
98
+ border-bottom-color: #ccc;
99
+ }
100
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable td img {
101
+ max-width: 100%;
102
+ height: auto;
103
+ }
104
+ .wpdt-c .wpDataTableContainerConfigSimpleTable .handsontable td ul,
105
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable td ul {
106
+ list-style-type: initial;
107
+ margin-left: 2em;
108
+ }
109
+ .wpdt-c .wpDataTableContainerConfigSimpleTable .handsontable td ul li,
110
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable td ul li {
111
+ text-align: initial;
112
+ }
113
+
114
+ .wpdt-c .wpDataTableContainerConfigSimpleTable .wpdtSimpleTable tr.even td,
115
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable tr.even td {
116
+ background: #eee;
117
+ }
118
+
119
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable td.wpdt-empty-cell,
120
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable th.wpdt-empty-cell {
121
+ white-space: pre-line;
122
+ }
123
+ .wpdt-c.wpDataTableContainerConfigSimpleTable table td a[data-link-content="wpdt-link-content"] button,
124
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable td.wpdt-cell a[data-link-content="wpdt-link-content"] button {
125
+ background-color: #4CAF50;
126
+ border: none;
127
+ border-radius: 5px;
128
+ padding: 8px 15px;
129
+ text-decoration: none;
130
+ font-size: 16px;
131
+ color: #FFF;
132
+ cursor: pointer;
133
+ word-break: break-word;
134
+ }
135
+ .wpdt-c.wpDataTableContainerConfigSimpleTable table td a[data-link-content="wpdt-link-content"] button:hover,
136
+ .wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable td.wpdt-cell a[data-link-content="wpdt-link-content"] button:hover {
137
+ background-color: #449d48;
138
+ }
139
+ .wpdt-modals .wpdt-star-rating,
140
+ .wpdt-c .wpdt-star-rating {
141
+ font-size: 45px;
142
+ width: 100%;
143
+ }
144
+ .wpdt-c .wpdt-bold {
145
+ font-weight: bold !important;
146
+ }
147
+ .wpdt-c .wpdt-italic {
148
+ font-style: italic !important;
149
+ }
150
+ .wpdt-c .wpdt-underline {
151
+ text-decoration: underline !important;
152
+ }
153
+ .wpdt-c .wpdt-align-left {
154
+ text-align: left !important;
155
+ }
156
+ .wpdt-c .wpdt-align-right {
157
+ text-align: right !important;
158
+ }
159
+ .wpdt-c .wpdt-align-center {
160
+ text-align: center !important;
161
+ }
162
+ .wpdt-c .wpdt-align-justify {
163
+ text-align: justify !important;
164
+ }
165
+ .wpdt-c .wpdt-valign-top {
166
+ vertical-align: top !important;
167
+ }
168
+ .wpdt-c .wpdt-valign-bottom {
169
+ vertical-align: bottom !important;
170
+ }
171
+ .wpdt-c .wpdt-valign-middle {
172
+ vertical-align: middle !important;
173
+ }
174
+ .wpdt-c .wpdt-overflow-text {
175
+ white-space: nowrap !important;
176
+ overflow: visible !important;
177
+ }
178
+ .wpdt-c .wpdt-wrap-text {
179
+ white-space: normal !important;
180
+ overflow: visible !important;
181
+ }
182
+ .wpdt-c .wpdt-clip-text {
183
+ white-space: nowrap !important;
184
+ overflow: hidden !important;
185
+ text-overflow: ellipsis;
186
+ }
187
+
188
+ .wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable td.wpdt-cell span[data-content="wpdt-star-rating"],
189
+ .wpdt-c .wpDataTableContainerConfigSimpleTable table td span[data-content="wpdt-star-rating"]{
190
+ pointer-events: none !important;
191
+ }
192
+ .wpdt-c .wpDataTableContainerConfigSimpleTable td span[data-content="wpdt-star-rating"] .jq-ry-container,
193
+ .wpdt-c .wpDataTableContainerSimpleTable td.wpdt-cell span[data-content="wpdt-star-rating"] .jq-ry-container,
194
+ .wpdt-c.wpDataTableContainerSimpleTable td.wpdt-cell span[data-content="wpdt-star-rating"] .jq-ry-container{
195
+ padding:0;
196
+ margin:0;
197
+ display:inline-block;
198
+ cursor:default !important;
199
+ }
200
+ .wpdt-c .wpdtSimpleTable .wpdt-cell pre {
201
+ overflow: auto;
202
+ }
203
+
204
+ .wpdt-c .rating {
205
+ border: none;
206
+ }
207
+ .wpdt-c .rating > span{
208
+ position: relative;
209
+ display: inline-block;
210
+ }
211
+
212
+ .wpdt-c .rating > span:after {
213
+ margin: 5px;
214
+ font-size: 1.25em;
215
+ font-family: 'wpDataTablesIcons' !important;
216
+ display: inline-block;
217
+ content: "\f006";
218
+ }
219
+ .wpdt-c .rating > span.full.rated:after {
220
+ color: #FFD700;
221
+ }
222
+ .wpdt-c .rating > span.full:after {
223
+ color: #ccc;
224
+ }
225
+
226
+ .wpdt-c .rating > .half:before {
227
+ content: "\e92c";
228
+ margin: 5px;
229
+ font-size: 1.25em;
230
+ font-family: 'wpDataTablesIcons' !important;
231
+ display: inline-block;
232
+ position: absolute;
233
+ top: 0;
234
+ left: 1px;
235
+ color: #FFD700;
236
+ }
237
+ .wpdt-c .rating > .half-reflect:after {
238
+ content: "\e92c";
239
+ font-family: 'wpDataTablesIcons' !important;
240
+ transform: rotateY(180deg);
241
+ color: #ccc;
242
+ }
243
+ .wpdt-c table.bt thead,
244
+ .wpdt-c table.bt tbody th {
245
+ display: none;
246
+ }
247
+
248
+ .wpdt-c table.bt tfoot th,
249
+ .wpdt-c table.bt tfoot td,
250
+ .wpdt-c table.bt tbody td {
251
+ border: none;
252
+ display: block;
253
+
254
+ float: left\9;
255
+ width: 100%\9;
256
+ }
257
+
258
+
259
+ .wpdt-c table.bt tfoot th.bt-hide,
260
+ .wpdt-c table.bt tfoot td.bt-hide,
261
+ .wpdt-c table.bt tbody td.bt-hide {
262
+ display: none;
263
+ }
264
+
265
+
266
+ .wdt-res-wrapper.active {
267
+ max-height: 310px;
268
+ overflow: auto;
269
+ -webkit-overflow-scrolling: touch;
270
+ }
271
+
272
+ .wpdt-c table.bt.bt--no-header tfoot td::before,
273
+ .wpdt-c table.bt.bt--no-header tbody td::before {
274
+ display: none;
275
+ }
276
+ .wpdt-c table.wpdtSimpleTable.columnBlock td {
277
+ display: block;
278
+ height: auto !important;
279
+ border: 1px solid #eee !important;
280
+ }
281
+ .wpdt-c table.wpdtSimpleTable.bt td {
282
+ height: auto !important;
283
+ border: 1px solid #ccc !important;
284
+ white-space: normal;
285
+ width: 100% !important;
286
+ }
287
+ .wpdt-c table.wpdtSimpleTable.bt[data-has-header='1'] td {
288
+ width: 50% !important;
289
+ float: left;
290
+ }
291
+
292
+ table.wpdtSimpleTable.bt[data-has-header='1'] td.wpdt-header-classes{
293
+ background-color: #eee;
294
+ }
295
+
296
+ .wpdt-c table.wpdtSimpleTable.bt tr.even td:not(:last-child) {
297
+ height: auto !important;
298
+ border-bottom: 1px solid #fff !important;
299
+ }
300
+ .wpdt-c table.wpdtSimpleTable.bt tr,
301
+ .wpdt-c table.wpdtSimpleTable.columnBlock tr{
302
+ border: 1px solid #ccc;
303
+ display: -webkit-flex;
304
+ display: -ms-flexbox;
305
+ display: flex;
306
+ -webkit-flex-wrap: wrap;
307
+ -ms-flex-wrap: wrap;
308
+ flex-wrap: wrap;
309
+ }
310
+
assets/css/wdt.simpleTable.min.css ADDED
@@ -0,0 +1 @@
 
1
+ @font-face{font-family:'wpDataTablesIcons'!important;src:url(../fonts/wpDataTablesIcons.eot);src:url(../fonts/wpDataTablesIcons.eot?#iefix) format('embedded-opentype'),url(../fonts/wpDataTablesIcons.woff) format('woff'),url(../fonts/wpDataTablesIcons.ttf) format('truetype'),url(../fonts/wpDataTablesIcons.svg#wpDataTablesIcons) format('svg')}.wpdt-c.wpDataTableContainerSimpleTable{margin-top:0;margin-bottom:20px;padding:0}.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable,.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable{display:table;background-color:transparent;border-collapse:collapse;border-spacing:0;clear:both;margin:0 auto;width:100%;table-layout:auto;overflow:auto;text-align:center}.wpdt-c.wpDataTableContainerSimpleTable.wdtscroll{width:100%;overflow-x:auto}.wpdt-c.wpDataTableContainerSimpleTable.wdtscroll table.wpdtSimpleTable{position:static;width:max-content!important;table-layout:fixed}.wpdt-c.wpDataTableContainerSimpleTable.wdtscroll table.wpdtSimpleTable td{white-space:normal}.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody tr.even td.wpdt-cell,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody tr.odd td.wpdt-cell,.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody tr.even td.wpdt-cell,.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody tr.odd td.wpdt-cell,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable th,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody td,.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable th,.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody td{border:1px solid #ccc;height:22px;empty-cells:show;line-height:21px;padding:10px;vertical-align:middle;text-align:center;overflow:hidden;word-break:normal}.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable{font-size:inherit}.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable th,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody td,.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable th,.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody td{background-color:#fff}.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable th,.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable th{cursor:default;background-color:#eee;white-space:normal;font-weight:400;background-image:none!important;box-shadow:none;text-shadow:none}.wpdt-c .wdt-datatables-admin-wrap div.wpDataTableContainerSimpleTable .wpdtSimpleTable tr.even,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable tr.even{background-color:#eee}.wpdt-c .wpDataTableContainerConfigSimpleTable .handsontable td{padding:10px;font-size:inherit;vertical-align:middle;white-space:normal;height:21px}.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tr td:first-child,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable thead tr td:first-child,.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tr td:first-child,.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable thead tr td:first-child,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tr td:last-child,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable thead tr td:last-child,.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tr td:last-child,.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable thead tr td:last-child{border:1px solid #ccc}.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable.wpDataTable tbody tr:last-child td{border-bottom-color:#ccc}.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable td img{max-width:100%;height:auto}.wpdt-c .wpDataTableContainerConfigSimpleTable .handsontable td ul,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable td ul{list-style-type:initial;margin-left:2em}.wpdt-c .wpDataTableContainerConfigSimpleTable .handsontable td ul li,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable td ul li{text-align:initial}.wpdt-c .wpDataTableContainerConfigSimpleTable .wpdtSimpleTable tr.even td,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable tr.even td{background:#eee}.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable td.wpdt-empty-cell,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable th.wpdt-empty-cell{white-space:pre-line}.wpdt-c.wpDataTableContainerConfigSimpleTable table td a[data-link-content="wpdt-link-content"] button,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable td.wpdt-cell a[data-link-content="wpdt-link-content"] button{background-color:#4CAF50;border:none;border-radius:5px;padding:8px 15px;text-decoration:none;font-size:16px;color:#FFF;cursor:pointer;word-break:break-word}.wpdt-c.wpDataTableContainerConfigSimpleTable table td a[data-link-content="wpdt-link-content"] button:hover,.wpdt-c.wpDataTableContainerSimpleTable .wpdtSimpleTable td.wpdt-cell a[data-link-content="wpdt-link-content"] button:hover{background-color:#449d48}.wpdt-modals .wpdt-star-rating,.wpdt-c .wpdt-star-rating{font-size:45px;width:100%}.wpdt-c .wpdt-bold{font-weight:bold!important}.wpdt-c .wpdt-italic{font-style:italic!important}.wpdt-c .wpdt-underline{text-decoration:underline!important}.wpdt-c .wpdt-align-left{text-align:left!important}.wpdt-c .wpdt-align-right{text-align:right!important}.wpdt-c .wpdt-align-center{text-align:center!important}.wpdt-c .wpdt-align-justify{text-align:justify!important}.wpdt-c .wpdt-valign-top{vertical-align:top!important}.wpdt-c .wpdt-valign-bottom{vertical-align:bottom!important}.wpdt-c .wpdt-valign-middle{vertical-align:middle!important}.wpdt-c .wpdt-overflow-text{white-space:nowrap!important;overflow:visible!important}.wpdt-c .wpdt-wrap-text{white-space:normal!important;overflow:visible!important}.wpdt-c .wpdt-clip-text{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis}.wpdt-c .wpDataTableContainerSimpleTable .wpdtSimpleTable td.wpdt-cell span[data-content="wpdt-star-rating"],.wpdt-c .wpDataTableContainerConfigSimpleTable table td span[data-content="wpdt-star-rating"]{pointer-events:none!important}.wpdt-c .wpDataTableContainerConfigSimpleTable td span[data-content="wpdt-star-rating"] .jq-ry-container,.wpdt-c .wpDataTableContainerSimpleTable td.wpdt-cell span[data-content="wpdt-star-rating"] .jq-ry-container,.wpdt-c.wpDataTableContainerSimpleTable td.wpdt-cell span[data-content="wpdt-star-rating"] .jq-ry-container{padding:0;margin:0;display:inline-block;cursor:default!important}.wpdt-c .wpdtSimpleTable .wpdt-cell pre{overflow:auto}.wpdt-c .rating{border:none}.wpdt-c .rating>span{position:relative;display:inline-block}.wpdt-c .rating>span:after{margin:5px;font-size:1.25em;font-family:'wpDataTablesIcons'!important;display:inline-block;content:"\f006"}.wpdt-c .rating>span.full.rated:after{color:gold}.wpdt-c .rating>span.full:after{color:#ccc}.wpdt-c .rating>.half:before{content:"\e92c";margin:5px;font-size:1.25em;font-family:'wpDataTablesIcons'!important;display:inline-block;position:absolute;top:0;left:1px;color:gold}.wpdt-c .rating>.half-reflect:after{content:"\e92c";font-family:'wpDataTablesIcons'!important;transform:rotateY(180deg);color:#ccc}.wpdt-c table.bt thead,.wpdt-c table.bt tbody th{display:none}.wpdt-c table.bt tfoot th,.wpdt-c table.bt tfoot td,.wpdt-c table.bt tbody td{border:none;display:block;float:left\9;width:100%\9}.wpdt-c table.bt tfoot th.bt-hide,.wpdt-c table.bt tfoot td.bt-hide,.wpdt-c table.bt tbody td.bt-hide{display:none}.wdt-res-wrapper.active{max-height:310px;overflow:auto;-webkit-overflow-scrolling:touch}.wpdt-c table.bt.bt--no-header tfoot td::before,.wpdt-c table.bt.bt--no-header tbody td::before{display:none}.wpdt-c table.wpdtSimpleTable.columnBlock td{display:block;height:auto!important;border:1px solid #eee!important}.wpdt-c table.wpdtSimpleTable.bt td{height:auto!important;border:1px solid #ccc!important;white-space:normal;width:100%!important}.wpdt-c table.wpdtSimpleTable.bt[data-has-header='1'] td{width:50%!important;float:left}table.wpdtSimpleTable.bt[data-has-header='1'] td.wpdt-header-classes{background-color:#eee}.wpdt-c table.wpdtSimpleTable.bt tr.even td:not(:last-child){height:auto!important;border-bottom:1px solid #fff!important}.wpdt-c table.wpdtSimpleTable.bt tr,.wpdt-c table.wpdtSimpleTable.columnBlock tr{border:1px solid #ccc;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}
assets/css/wpdatatables.min.css CHANGED
@@ -43,6 +43,10 @@
43
  .wpDataTablesWrapper table.wpDataTable > tbody > tr > td {
44
  text-align: left;
45
  }
 
 
 
 
46
 
47
  /* Table Header */
48
  .wpDataTablesWrapper table.wpDataTable > thead > tr > th {
@@ -345,6 +349,13 @@ div.wpDataTablesFilter span.filter_column .number-range-filter:first-child {
345
  overflow: hidden;
346
  display: initial;
347
  }
 
 
 
 
 
 
 
348
  .wpDataTables input[type="search"],
349
  .wpDataTables select,
350
  .wpDataTables textarea {
@@ -646,7 +657,7 @@ div.wdt-checkbox-modal-wrap div.wdt-checkbox-option label {
646
  width: 100%;
647
  background-color: rgba(255,255,255,1);
648
  text-align: center;
649
- z-index: 100;
650
  }
651
 
652
  .wpdt-c .wdt-preload-layer div.preloader {
43
  .wpDataTablesWrapper table.wpDataTable > tbody > tr > td {
44
  text-align: left;
45
  }
46
+ .wpDataTablesWrapper table.wpDataTable.wpdtSimpleTable > tbody > tr > th,
47
+ .wpDataTablesWrapper table.wpDataTable.wpdtSimpleTable > tbody > tr > td {
48
+ text-align: center;
49
+ }
50
 
51
  /* Table Header */
52
  .wpDataTablesWrapper table.wpDataTable > thead > tr > th {
349
  overflow: hidden;
350
  display: initial;
351
  }
352
+
353
+ @-moz-document url-prefix() {
354
+ .wpdt-c .wpDataTables.wpDataTablesWrapper{
355
+ position: initial !important;
356
+ }
357
+ }
358
+
359
  .wpDataTables input[type="search"],
360
  .wpDataTables select,
361
  .wpDataTables textarea {
657
  width: 100%;
658
  background-color: rgba(255,255,255,1);
659
  text-align: center;
660
+ z-index: 1000;
661
  }
662
 
663
  .wpdt-c .wdt-preload-layer div.preloader {
assets/fonts/wpDataTablesIcons.eot CHANGED
Binary file
assets/fonts/wpDataTablesIcons.svg CHANGED
@@ -59,6 +59,30 @@
59
  <glyph unicode="&#xe914;" glyph-name="magic-stick" d="M160 576l53.32 106.66 106.68 53.34-106.68 53.34-53.32 106.66-53.32-106.68-106.68-53.32 106.68-53.34 53.32-106.66zM448 704l32 64 64 32-64 32-32 64-32-64-64-32 64-32 32-64zM917.32 213.34l-53.32 106.66-53.32-106.66-106.68-53.34 106.68-53.34 53.32-106.66 53.32 106.66 106.68 53.34-106.68 53.34zM800 512c17.68 0 32 14.32 32 32v55.92l183.74 203.66c11.44 12.64 10.96 32.040-1.1 44.1l-38.96 38.94c-12.060 12.060-31.46 12.54-44.1 1.1l-558.38-503.72h-85.2c-17.68 0-32-14.32-32-32v-73.74l-234.94-211.94c-27.14-24.56-28.2-66.84-2.32-92.72l82.86-82.86c25.88-25.88 68.16-24.82 92.72 2.32l558.36 618.94h47.32z" />
60
  <glyph unicode="&#xe915;" glyph-name="book" horiz-adv-x="896" d="M896 176v672c0 26.6-21.4 48-48 48h-656c-106 0-192-86-192-192v-640c0-106 86-192 192-192h656c26.6 0 48 21.4 48 48v32c0 15-7 28.6-17.8 37.4-8.4 30.8-8.4 118.6 0 149.4 10.8 8.6 17.8 22.2 17.8 37.2zM256 628c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-424c-6.6 0-12 5.4-12 12v40zM256 500c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-424c-6.6 0-12 5.4-12 12v40zM762.8 0h-570.8c-35.4 0-64 28.6-64 64 0 35.2 28.8 64 64 64h570.8c-3.8-34.2-3.8-93.8 0-128z" />
61
  <glyph unicode="&#xe916;" glyph-name="trophy" horiz-adv-x="1152" d="M1104 768h-208v80c0 26.6-21.4 48-48 48h-544c-26.6 0-48-21.4-48-48v-80h-208c-26.6 0-48-21.4-48-48v-112c0-71.4 45-144.8 123.8-201.4 63-45.4 139.6-74.2 220-83.4 62.8-104.2 136.2-147.2 136.2-147.2v-144h-96c-70.6 0-128-41.4-128-112v-24c0-13.2 10.8-24 24-24h592c13.2 0 24 10.8 24 24v24c0 70.6-57.4 112-128 112h-96v144s73.4 43 136.2 147.2c80.6 9.2 157.2 38 220 83.4 78.6 56.6 123.8 130 123.8 201.4v112c0 26.6-21.4 48-48 48zM198.6 510.4c-48.8 35.2-70.6 74.4-70.6 97.6v32h128.4c2-65.2 11.6-122.4 25.6-172.4-30.2 10.4-58.4 24.8-83.4 42.8zM1024 608c0-32.2-35.4-72.2-70.6-97.6-25-18-53.4-32.4-83.6-42.8 14 50 23.6 107.2 25.6 172.4h128.6v-32z" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  <glyph unicode="&#xe982;" glyph-name="spinner9" d="M512 896c-278.748 0-505.458-222.762-511.848-499.974 5.92 241.864 189.832 435.974 415.848 435.974 229.75 0 416-200.576 416-448 0-53.020 42.98-96 96-96s96 42.98 96 96c0 282.77-229.23 512-512 512zM512-128c278.748 0 505.458 222.762 511.848 499.974-5.92-241.864-189.832-435.974-415.848-435.974-229.75 0-416 200.576-416 448 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-282.77 229.23-512 512-512z" />
63
  <glyph unicode="&#xf002;" glyph-name="search" d="M1017-41.801c9.4-9.398 9.4-24.6 0-34l-45.199-45.199c-9.4-9.4-24.602-9.4-34 0l-242.8 242.8c-4.4 4.6-7 10.6-7 17v26.398c-73-63-168-101.199-272-101.199-229.8 0-416 186.199-416 416s186.199 416 416 416 416-186.199 416-416c0-104-38.199-199-101.199-272h26.398c6.4 0 12.4-2.4 17-7zM416 160c176.801 0 320 143.199 320 320s-143.199 320-320 320-320-143.199-320-320 143.199-320 320-320z" />
64
  <glyph unicode="&#xf003;" glyph-name="search-full" d="M1010 10.6c18.6-18.799 18.6-49.199-0.199-68l-56.602-56.6c-18.6-18.801-49-18.801-67.799 0l-199.4 199.4c-9 9-14 21.199-14 34v32.6c-70.6-55.199-159.4-88-256-88-229.8 0-416 186.199-416 416s186.199 416 416 416 416-186.199 416-416c0-96.6-32.801-185.4-88-256h32.6c12.801 0 25-5 34-14zM416 224c141.6 0 256 114.6 256 256 0 141.6-114.6 256-256 256-141.6 0-256-114.6-256-256 0-141.6 114.6-256 256-256z" />
@@ -95,6 +119,7 @@
95
  <glyph unicode="&#xf03b;" glyph-name="outdent" horiz-adv-x="896" d="M201.38 169.42l-192 191.961c-5.17 5.172-9.365 15.307-9.365 22.619s4.195 17.447 9.365 22.619l192 192c19.959 20 54.619 6.021 54.619-22.619v-383.96c0-28.479-34.619-42.619-54.619-22.619zM864 48c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-832c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h832zM870.34 304c14.154 0 25.66-11.486 25.66-25.641v-44.719c0-14.154-11.486-25.641-25.641-25.641h-460.719c-14.154 0-25.641 11.486-25.641 25.641v44.719c0 14.154 11.486 25.641 25.641 25.641h460.7zM864 816c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-832c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h832zM870.34 560c14.154 0 25.66-11.486 25.66-25.641v-44.719c0-14.154-11.486-25.641-25.641-25.641h-460.719c-14.154 0-25.641 11.486-25.641 25.641v44.719c0 14.154 11.486 25.641 25.641 25.641h460.7z" />
96
  <glyph unicode="&#xf03c;" glyph-name="indent" horiz-adv-x="896" d="M864 48c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-832c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h832zM54.619 169.4c-19.959-20-54.619-6.020-54.619 22.6v384c0 28.439 34.539 42.68 54.619 22.641l192-192c5.17-5.174 9.365-15.307 9.365-22.621s-4.195-17.447-9.365-22.619zM870.34 560c14.154 0 25.66-11.486 25.66-25.641v-44.719c0-14.154-11.486-25.641-25.641-25.641h-460.719c-14.154 0-25.641 11.486-25.641 25.641v44.719c0 14.154 11.486 25.641 25.641 25.641h460.7zM864 800c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-832c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h832zM870.34 304c14.154 0 25.66-11.486 25.66-25.641v-44.719c0-14.154-11.486-25.641-25.641-25.641h-460.719c-14.154 0-25.641 11.486-25.641 25.641v44.719c0 14.154 11.486 25.641 25.641 25.641h460.7z" />
97
  <glyph unicode="&#xf03e;" glyph-name="image" d="M928 768c53.020 0 96-42.98 96-96v-576c0-53.020-42.98-96-96-96h-832c-53.020 0-96 42.98-96 96v576c0 53.020 42.98 96 96 96h832zM916 96c6.623 0 12 5.377 12 12v552c0 6.623-5.377 12-12 12h-808c-6.623 0-12-5.377-12-12v-552c0-6.623 5.377-12 12-12h808zM256 592c44.182 0 80-35.818 80-80s-35.818-80-80-80-80 35.818-80 80 35.818 80 80 80zM192 192v96l79.027 79.029c9.375 9.373 24.57 9.373 33.943 0l79.029-79.029 239.028 239.030c9.375 9.373 24.57 9.373 33.943 0l175.029-175.029v-160h-640z" />
 
98
  <glyph unicode="&#xf048;" glyph-name="step-backward" horiz-adv-x="896" d="M128-40v848c0 13.199 10.801 24 24 24h96c13.199 0 24-10.801 24-24v-352.8l391 362c41.199 34.201 105 5.602 105-49.199v-768c0-54.801-63.801-83.4-105-49.199l-391 359.798v-350.6c0-13.199-10.801-24-24-24h-96c-13.199 0-24 10.801-24 24z" />
99
  <glyph unicode="&#xf04b;" glyph-name="play" horiz-adv-x="896" d="M848.8 466.6c63-37 62.799-128.199 0-165.199l-704-416c-63.4-37.6-144.801 7.6-144.801 82.6v832.2c0 83.602 87.6 116.4 144.801 82.602z" />
100
  <glyph unicode="&#xf04d;" glyph-name="stop-thin" horiz-adv-x="896" d="M800 832c53 0 96-43 96-96v-704c0-53-43-96-96-96h-704c-53 0-96 43-96 96v704c0 53 43 96 96 96h704zM832 32v704c0 17.6-14.4 32-32 32h-704c-17.6 0-32-14.4-32-32v-704c0-17.6 14.4-32 32-32h704c17.6 0 32 14.4 32 32z" />
@@ -259,6 +284,7 @@
259
  <glyph unicode="&#xf292;" glyph-name="hashtag" horiz-adv-x="896" d="M887.048 515.782c-1.951-10.918-12.535-19.781-23.627-19.781h-186.662l-40-224h178.090c14.943 0 26.252-13.508 23.627-28.219l-8.572-48c-1.949-10.918-12.535-19.781-23.627-19.781h-186.662l-39.326-220.218c-1.949-10.918-12.533-19.781-23.625-19.781h-48.76c-14.941 0-26.252 13.508-23.627 28.219l37.818 211.782h-222.48l-39.322-220.218c-1.951-10.918-12.535-19.781-23.627-19.781h-48.76c-14.943 0-26.254 13.508-23.629 28.219l37.818 211.782h-178.090c-14.941 0-26.252 13.508-23.625 28.219l8.57 48c1.951 10.918 12.535 19.781 23.627 19.781h186.662l40 224h-178.090c-14.945 0-26.254 13.508-23.629 28.219l8.572 48c1.949 10.918 12.533 19.781 23.627 19.781h186.664l39.326 220.22c1.949 10.918 12.533 19.779 23.625 19.779h48.76c14.941 0 26.252-13.51 23.627-28.221l-37.818-211.78h222.48l39.326 220.22c1.949 10.918 12.533 19.779 23.625 19.779h48.76c14.941 0 26.252-13.51 23.627-28.221l-37.818-211.78h178.090c14.941 0 26.252-13.508 23.625-28.219zM539.24 272l40 224h-222.48l-40-224h222.48z" />
260
  <glyph unicode="&#xf295;" glyph-name="percent" horiz-adv-x="768" d="M192 448c-106 0-192 86-192 192s86 192 192 192 192-86 192-192-86-192-192-192zM192 736c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zM576 320c106 0 192-86 192-192s-86-192-192-192-192 86-192 192 86 192 192 192zM576 32c53 0 96 43 96 96s-43 96-96 96-96-43-96-96 43-96 96-96zM763.8 794.4l-649.4-848.4c-4.6-6.199-11.801-10-19.4-10h-71c-19.199 0-30.6 21.4-20 37.4l650.4 848.6c4.6 6.199 11.799 10 19.4 10h70.199c19.199 0 30.6-21.6 19.801-37.6z" />
261
  <glyph unicode="&#xf2d3;" glyph-name="times-square" horiz-adv-x="896" d="M800 832c53 0 96-43 96-96v-704c0-53-43-96-96-96h-704c-53 0-96 43-96 96v704c0 53 43 96 96 96h704zM691.2 253.8l-131.199 130.199 131.4 130c9.4 9.4 9.4 24.6 0 34l-79.201 79.199c-9.398 9.4-24.6 9.4-34 0l-130.199-131.199-130 131.4c-9.4 9.4-24.6 9.4-34 0l-79.199-79.201c-9.4-9.398-9.4-24.6 0-34l131.199-130.199-131.199-130c-9.4-9.4-9.4-24.6 0-34l79-79.199c9.398-9.4 24.6-9.4 34 0l130.199 131.199 130-131.199c9.4-9.4 24.6-9.4 34 0l79.199 79c9.4 9.398 9.4 24.6 0 34z" />
 
262
  <glyph unicode="&#xf2ed;" glyph-name="trash-alt" horiz-adv-x="896" d="M64-32v672h768v-672c0-52.992-43.008-96-96-96h-576c-52.992 0-96 43.008-96 96zM608 480v-448c0-17.664 14.336-32 32-32s32 14.336 32 32v448c0 17.664-14.336 32-32 32s-32-14.336-32-32zM416 480v-448c0-17.664 14.336-32 32-32s32 14.336 32 32v448c0 17.664-14.336 32-32 32s-32-14.336-32-32zM224 480v-448c0-17.664 14.336-32 32-32s32 14.336 32 32v448c0 17.664-14.336 32-32 32s-32-14.336-32-32zM864 832c17.664 0 32-14.336 32-32v-64c0-17.664-14.336-32-32-32h-832c-17.664 0-32 14.336-32 32v64c0 17.664 14.336 32 32 32h240l18.801 37.4c7.18 14.684 26.271 26.6 42.617 26.6h228.817c16.404 0 35.652-11.916 42.965-26.6l18.801-37.4h240z" />
263
  <glyph unicode="&#xf2fd;" glyph-name="question-square" horiz-adv-x="896" d="M800 832c53.020 0 96-42.98 96-96v-704c0-53.020-42.98-96-96-96h-704c-53.020 0-96 42.98-96 96v704c0 53.020 42.98 96 96 96h704zM448 36c50.73 0 92 41.271 92 92s-41.27 92-92 92-92-41.27-92-92c0-50.729 41.27-92 92-92zM528 298.666c0 56.924 166.371 59.295 166.371 213.334 0 116.004-120.328 204-233.060 204-108.994 0-178.51-45.914-233.098-127.514-7.072-10.572-4.707-24.83 5.43-32.516l69.396-52.621c10.41-7.895 25.24-6.016 33.33 4.244 35.73 45.316 60.227 71.594 114.607 71.594 40.857 0 91.395-26.295 91.395-65.916 0-29.951-24.725-45.334-65.066-67.951-47.049-26.377-109.305-59.203-109.305-141.32v-8c0-13.254 10.746-24 24-24h112c13.254 0 24 10.746 24 24v2.666z" />
264
  <glyph unicode="&#xf304;" glyph-name="pen" d="M581.48 709.52l256.040-256.040-555.98-555.98-228.28-25.199c-30.561-3.381-56.379 22.459-52.98 53.020l25.4 228.44zM995.88 747.64c37.5-37.5 37.5-98.301 0-135.82l-113.102-113.1-256.040 256.040 113.1 113.1c37.5 37.5 98.32 37.5 135.82 0z" />
@@ -304,6 +330,8 @@
304
  <glyph unicode="&#xf662;" glyph-name="sort-alpha-down-alt" horiz-adv-x="896" d="M352 192c28.439 0 42.699-34.52 22.66-54.619l-160-192c-5.174-5.17-15.307-9.365-22.621-9.365-7.313 0-17.445 4.195-22.619 9.365l-160 192c-20.141 20.139-5.801 54.619 22.58 54.619h96v608c0 17.664 14.336 32 32 32h64c17.664 0 32-14.336 32-32v-608h96zM576 448c-17.664 0-32 14.336-32 32v35.266c0 15.865 9.623 37.295 21.48 47.834l122.52 140.9h-112c-17.664 0-32 14.336-32 32v64c0 17.664 14.336 32 32 32h256c17.664 0 32-14.336 32-32v-35.266c0-15.865-9.623-37.295-21.48-47.834l-122.52-140.9h112c17.664 0 32-14.336 32-32v-64c0-17.664-14.336-32-32-32h-256zM894.12-21.24c1.029-2.881 1.863-7.701 1.863-10.76 0-17.654-14.328-31.99-31.982-32h-49.769c-12.855 0-26.498 9.928-30.451 22.16l-8.818 25.84h-142l-8.842-25.84c-3.951-12.232-17.594-22.16-30.449-22.16h-49.67c-17.654 0.010-31.982 14.346-31.982 32 0 3.059 0.834 7.879 1.863 10.76l118.539 320c4.186 11.725 17.688 21.24 30.137 21.24h82.887c12.449 0 25.951-9.516 30.137-21.24zM671.22 96h65.559l-32.779 96z" />
305
  <glyph unicode="&#xf663;" glyph-name="function-reg" horiz-adv-x="1280" d="M448 800v-32c0-17.68-14.32-32-32-32h-96c-44.18 0-80-35.82-80-80v-96h112c17.68 0 32-14.32 32-32v-32c0-17.68-14.32-32-32-32h-112v-288c0-97.199-78.801-176-176-176h-32c-17.68 0-32 14.32-32 32v32c0 17.68 14.32 32 32 32h32c44.18 0 80 35.82 80 80v288h-112c-17.68 0-32 14.32-32 32v32c0 17.68 14.32 32 32 32h112v96c0 97.199 78.801 176 176 176h96c17.68 0 32-14.32 32-32zM634.86 678.16c13.66-10.279 16.16-29.061 6.561-43.16-63.020-92.48-97.42-203.18-97.42-315 0-111.84 34.4-222.54 97.42-314.98 9.619-14.1 7.119-32.9-6.561-43.18l-25.6-19.26c-14.439-10.881-35.619-8.041-45.84 6.82-74.641 108.561-115.42 238.9-115.42 370.6 0 131.66 40.779 262 115.42 370.6 10.221 14.84 31.4 17.701 45.84 6.82zM1164.58 690.6c74.641-108.561 115.42-238.9 115.42-370.6 0-131.66-40.779-262-115.42-370.62-10.221-14.861-31.4-17.701-45.84-6.82l-25.6 19.26c-13.66 10.299-16.16 29.080-6.561 43.18 63.020 92.48 97.42 203.18 97.42 315 0 111.84-34.4 222.54-97.42 314.98-9.619 14.1-7.119 32.9 6.561 43.18l25.6 19.26c14.439 10.881 35.619 8.041 45.84-6.82zM1014.9 448.92c12.139-12.141 12.139-31.84-0.020-43.98l-84.941-84.939 84.941-84.939c12.139-12.141 12.139-31.82 0-43.961l-21.98-21.98c-12.141-12.139-31.82-12.139-43.961 0l-84.939 84.941-84.939-84.941c-12.141-12.139-31.82-12.139-43.961 0l-21.98 21.98c-12.139 12.141-12.139 31.82 0 43.961l84.941 84.939-84.941 84.939c-12.139 12.141-12.139 31.82 0 43.961l21.98 21.98c12.141 12.139 31.82 12.139 43.961 0l84.939-84.941 84.961 84.961c12.139 12.139 31.818 12.139 43.959 0z" />
306
  <glyph unicode="&#xf6dd;" glyph-name="file-csv" horiz-adv-x="768" d="M739.66 700.040c18-18 28.34-42.6 28.34-67.979v-664.080c0-52.98-43.141-95.98-96.141-95.98h-575.878c-52.98 0-95.98 43-95.98 95.98v831.84c0 52.98 43 95.98 95.98 96.18h408.12c25.381 0 49.781-10.199 67.781-28.199zM511.9 792.020v-152.16h152.18zM672-32.020v575.9h-208.080c-26.6 0-48 21.379-48 47.979v207.96h-319.94v-831.84h576.020zM448 368c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-41.6c0-40.541 11.4-80.361 32-113.76 20.6 33.42 32 73.219 32 113.76v41.6c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-41.6c0-70.961-25.74-137.781-72.561-188.18-6.039-6.5-14.539-10.221-23.439-10.221s-17.4 3.721-23.439 10.221c-46.801 50.398-72.561 117.219-72.561 188.18v41.6zM240 384c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16c-17.68 0-32-14.32-32-32v-64c0-17.68 14.32-32 32-32h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16c-53.020 0-96 42.98-96 96v64c0 53.020 42.98 96 96 96h16zM358.9 299.060l43.799-37.541c16.941-14.439 26.66-34.959 26.66-56.279 0-42.58-38.039-77.24-84.82-77.24h-24.539c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h24.5c11.92 0 20.82 7 20.82 13.24 0 2.58-1.48 5.299-4.24 7.68l-43.779 37.541c-16.941 14.439-26.66 34.959-26.66 56.279 0 42.58 38.039 77.24 84.82 77.24h24.539c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-24.52c-11.92 0-20.82-7-20.82-13.24 0-2.58 1.48-5.301 4.24-7.68z" />
 
 
307
  <glyph unicode="&#xf870;" glyph-name="line-columns" d="M992 48c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM992 304c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM992 560c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM992 816c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM416 304c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM416 48c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM416 816c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM416 560c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384z" />
308
  <glyph unicode="&#xf883;" glyph-name="sort-alt" horiz-adv-x="768" d="M352 192c28.439 0 42.699-34.52 22.66-54.619l-160-192c-5.174-5.17-15.307-9.365-22.621-9.365-7.313 0-17.445 4.195-22.619 9.365l-160 192c-20.141 20.139-5.801 54.619 22.58 54.619h96v608c0 17.664 14.336 32 32 32h64c17.664 0 32-14.336 32-32v-608h96zM758.58 630.62c20.141-20.139 5.801-54.619-22.58-54.619h-96v-608c0-17.664-14.336-32-32-32h-64c-17.664 0-32 14.336-32 32v608h-96c-28.439 0-42.699 34.52-22.66 54.619l160 192c5.174 5.17 15.307 9.365 22.621 9.365s17.445-4.195 22.619-9.365z" />
309
  <glyph unicode="&#x1f50d;" glyph-name="search2" horiz-adv-x="950" d="M658.432 420.864q0 105.472-74.752 180.224t-181.248 75.776-181.248-75.776-74.752-180.224 74.752-181.248 181.248-74.752 181.248 74.752 74.752 181.248zM951.296-55.296q0-29.696-22.528-51.2t-51.2-21.504q-30.72 0-51.2 21.504l-195.584 195.584q-102.4-70.656-228.352-70.656-81.92 0-156.672 31.744t-128 86.016-86.016 128-31.744 156.672 31.744 155.648 86.016 129.024 128 86.016 156.672 31.744 156.672-31.744 128-86.016 86.016-129.024 31.744-155.648q0-125.952-70.656-228.352l195.584-195.584q21.504-21.504 21.504-52.224z" />
59
  <glyph unicode="&#xe914;" glyph-name="magic-stick" d="M160 576l53.32 106.66 106.68 53.34-106.68 53.34-53.32 106.66-53.32-106.68-106.68-53.32 106.68-53.34 53.32-106.66zM448 704l32 64 64 32-64 32-32 64-32-64-64-32 64-32 32-64zM917.32 213.34l-53.32 106.66-53.32-106.66-106.68-53.34 106.68-53.34 53.32-106.66 53.32 106.66 106.68 53.34-106.68 53.34zM800 512c17.68 0 32 14.32 32 32v55.92l183.74 203.66c11.44 12.64 10.96 32.040-1.1 44.1l-38.96 38.94c-12.060 12.060-31.46 12.54-44.1 1.1l-558.38-503.72h-85.2c-17.68 0-32-14.32-32-32v-73.74l-234.94-211.94c-27.14-24.56-28.2-66.84-2.32-92.72l82.86-82.86c25.88-25.88 68.16-24.82 92.72 2.32l558.36 618.94h47.32z" />
60
  <glyph unicode="&#xe915;" glyph-name="book" horiz-adv-x="896" d="M896 176v672c0 26.6-21.4 48-48 48h-656c-106 0-192-86-192-192v-640c0-106 86-192 192-192h656c26.6 0 48 21.4 48 48v32c0 15-7 28.6-17.8 37.4-8.4 30.8-8.4 118.6 0 149.4 10.8 8.6 17.8 22.2 17.8 37.2zM256 628c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-424c-6.6 0-12 5.4-12 12v40zM256 500c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-424c-6.6 0-12 5.4-12 12v40zM762.8 0h-570.8c-35.4 0-64 28.6-64 64 0 35.2 28.8 64 64 64h570.8c-3.8-34.2-3.8-93.8 0-128z" />
61
  <glyph unicode="&#xe916;" glyph-name="trophy" horiz-adv-x="1152" d="M1104 768h-208v80c0 26.6-21.4 48-48 48h-544c-26.6 0-48-21.4-48-48v-80h-208c-26.6 0-48-21.4-48-48v-112c0-71.4 45-144.8 123.8-201.4 63-45.4 139.6-74.2 220-83.4 62.8-104.2 136.2-147.2 136.2-147.2v-144h-96c-70.6 0-128-41.4-128-112v-24c0-13.2 10.8-24 24-24h592c13.2 0 24 10.8 24 24v24c0 70.6-57.4 112-128 112h-96v144s73.4 43 136.2 147.2c80.6 9.2 157.2 38 220 83.4 78.6 56.6 123.8 130 123.8 201.4v112c0 26.6-21.4 48-48 48zM198.6 510.4c-48.8 35.2-70.6 74.4-70.6 97.6v32h128.4c2-65.2 11.6-122.4 25.6-172.4-30.2 10.4-58.4 24.8-83.4 42.8zM1024 608c0-32.2-35.4-72.2-70.6-97.6-25-18-53.4-32.4-83.6-42.8 14 50 23.6 107.2 25.6 172.4h128.6v-32z" />
62
+ <glyph unicode="&#xe917;" glyph-name="g-cap" horiz-adv-x="1280" d="M1244.68 589.6l-557.88 171.4c-30.4 9.34-63.2 9.34-93.58 0l-557.9-171.4c-47.080-14.46-47.080-76.72 0-91.18l97.26-29.88c-21.34-26.38-34.46-58.56-35.76-93.8-19.26-11.040-32.82-30.96-32.82-54.74 0-21.56 11.36-39.7 27.72-51.3l-51.060-229.76c-4.44-19.98 10.76-38.94 31.22-38.94h112.22c20.48 0 35.68 18.96 31.24 38.94l-51.060 229.76c16.36 11.6 27.72 29.74 27.72 51.3 0 23.14-12.94 42.5-31.32 53.74 1.52 30.040 16.88 56.6 41.38 73.44l391.14-120.18c18.12-5.56 52.88-12.5 93.58 0l557.9 171.4c47.1 14.48 47.1 76.72 0 91.2zM705.58 265.82c-57.060-17.52-105.68-7.84-131.18 0l-290.040 89.1-28.36-226.92c0-70.7 171.92-128 384-128s384 57.3 384 128l-28.36 226.94-290.060-89.12z" />
63
+ <glyph unicode="&#xe918;" glyph-name="vertical-align-top" d="M341.333 426.667h128v-426.667h85.333v426.667h128l-170.667 170.667-170.667-170.667zM170.667 768v-85.333h682.667v85.333h-682.667z" />
64
+ <glyph unicode="&#xe919;" glyph-name="vertical-align-center" d="M341.333 85.333h128v-170.667h85.333v170.667h128l-170.667 170.667-170.667-170.667zM682.667 682.667h-128v170.667h-85.333v-170.667h-128l170.667-170.667 170.667 170.667zM170.667 426.667v-85.333h682.667v85.333h-682.667z" />
65
+ <glyph unicode="&#xe91a;" glyph-name="vertical-align-bottom" d="M682.667 341.333h-128v426.667h-85.333v-426.667h-128l170.667-170.667 170.667 170.667zM170.667 85.333v-85.333h682.667v85.333h-682.667z" />
66
+ <glyph unicode="&#xe91b;" glyph-name="add-column-left" d="M535.394 74.831v-124.062h-393.846v866.462h393.846v-124.062c24.93 12.721 51.358 22.252 78.769 28.633v134.814c0 21.701-17.644 39.385-39.385 39.385h-472.615c-21.662 0-39.385-17.684-39.385-39.385v-945.231c0-21.701 17.684-39.385 39.385-39.385h472.615c21.74 0 39.385 17.684 39.385 39.385v134.853c-27.412 6.341-53.839 15.872-78.769 28.593zM697.662 683.235c-165.182 0-299.504-134.394-299.504-299.576 0-165.254 134.322-299.648 299.504-299.648 165.325 0 299.648 134.394 299.648 299.648 0 165.182-134.322 299.576-299.648 299.576zM697.662 165.35c-120.217 0-218.166 97.878-218.166 218.31 0 120.289 97.949 218.31 218.166 218.31 120.575 0 218.381-98.021 218.381-218.31 0-120.432-97.806-218.31-218.381-218.31zM546.471 421.053h295.813v-84.958h-295.813v84.958zM736.856 526.481v-295.813h-84.958v295.813h84.958z" />
67
+ <glyph unicode="&#xe91c;" glyph-name="remove-column" d="M535.394 74.831v-124.062h-393.846v866.462h393.846v-124.062c24.93 12.721 51.358 22.252 78.769 28.633v134.814c0 21.701-17.644 39.385-39.385 39.385h-472.615c-21.662 0-39.385-17.684-39.385-39.385v-945.231c0-21.701 17.684-39.385 39.385-39.385h472.615c21.74 0 39.385 17.684 39.385 39.385v134.853c-27.412 6.341-53.839 15.872-78.769 28.593zM697.662 683.235c-165.182 0-299.504-134.394-299.504-299.576 0-165.254 134.322-299.648 299.504-299.648 165.325 0 299.648 134.394 299.648 299.648 0 165.182-134.322 299.576-299.648 299.576zM697.662 165.35c-120.217 0-218.166 97.878-218.166 218.31 0 120.289 97.949 218.31 218.166 218.31 120.575 0 218.381-98.021 218.381-218.31 0-120.432-97.806-218.31-218.381-218.31zM546.471 421.053h295.813v-84.958h-295.813v84.958z" />
68
+ <glyph unicode="&#xe91d;" glyph-name="remove-row" d="M202.861 367.31h-124.062v393.846h866.462v-393.846h-124.062c12.721-24.93 22.252-51.358 28.633-78.769h134.814c21.701 0 39.385 17.644 39.385 39.385v472.615c0 21.662-17.684 39.385-39.385 39.385h-945.231c-21.701 0-39.385-17.684-39.385-39.385v-472.615c0-21.74 17.684-39.385 39.385-39.385h134.853c6.341 27.412 15.872 53.839 28.593 78.769zM812.104 216.81c0 165.182-134.394 299.504-299.576 299.504-165.254 0-299.648-134.322-299.648-299.504 0-165.325 134.394-299.648 299.648-299.648 165.182 0 299.576 134.322 299.576 299.648zM294.219 216.81c0 120.217 97.878 218.166 218.31 218.166 120.289 0 218.31-97.949 218.31-218.166 0-120.575-98.021-218.381-218.31-218.381-120.432 0-218.31 97.806-218.31 218.381zM361.229 254.169h295.813v-84.958h-295.813v84.958z" />
69
+ <glyph unicode="&#xe91e;" glyph-name="add-row-top" d="M821.2 424.053h124.062v-393.846h-866.462v393.846h124.062c-12.721 24.93-22.252 51.358-28.633 78.769h-134.814c-21.701 0-39.385-17.644-39.385-39.385v-472.615c0-21.662 17.684-39.385 39.385-39.385h945.231c21.701 0 39.385 17.684 39.385 39.385v472.615c0 21.74-17.684 39.385-39.385 39.385h-134.853c-6.341-27.412-15.872-53.839-28.593-78.769zM812.105 575.611c0 165.182-134.394 299.504-299.576 299.504-165.254 0-299.648-134.322-299.648-299.504 0-165.325 134.394-299.648 299.648-299.648 165.182 0 299.576 134.322 299.576 299.648zM294.219 575.611c0 120.217 97.878 218.166 218.31 218.166 120.289 0 218.31-97.949 218.31-218.166 0-120.575-98.021-218.381-218.31-218.381-120.432 0-218.31 97.806-218.31 218.381zM362.898 617.976h295.813v-84.958h-295.813v84.958zM554.953 723.404v-295.813h-84.958v295.813h84.958z" />
70
+ <glyph unicode="&#xe91f;" glyph-name="add-row-bottom" d="M202.861 367.31h-124.062v393.846h866.462v-393.846h-124.062c12.721-24.93 22.252-51.358 28.633-78.769h134.814c21.701 0 39.385 17.644 39.385 39.385v472.615c0 21.662-17.684 39.385-39.385 39.385h-945.231c-21.701 0-39.385-17.684-39.385-39.385v-472.615c0-21.74 17.684-39.385 39.385-39.385h134.853c6.341 27.412 15.872 53.839 28.593 78.769zM812.104 216.81c0 165.182-134.394 299.504-299.576 299.504-165.254 0-299.648-134.322-299.648-299.504 0-165.325 134.394-299.648 299.648-299.648 165.182 0 299.576 134.322 299.576 299.648zM294.219 216.81c0 120.217 97.878 218.166 218.31 218.166 120.289 0 218.31-97.949 218.31-218.166 0-120.575-98.021-218.381-218.31-218.381-120.432 0-218.31 97.806-218.31 218.381zM361.229 254.169h295.813v-84.958h-295.813v84.958zM551.615 359.596v-295.813h-84.958v295.813h84.958z" />
71
+ <glyph unicode="&#xe920;" glyph-name="add-column-right" d="M459.265 693.169v124.062h393.846v-866.462h-393.846v124.062c-24.93-12.721-51.358-22.252-78.769-28.633v-134.814c0-21.701 17.644-39.385 39.385-39.385h472.615c21.662 0 39.385 17.684 39.385 39.385v945.231c0 21.701-17.684 39.385-39.385 39.385h-472.615c-21.74 0-39.385-17.684-39.385-39.385v-134.853c27.412-6.341 53.839-15.872 78.769-28.593zM318.964 683.235c-165.182 0-299.504-134.394-299.504-299.576 0-165.254 134.322-299.648 299.504-299.648 165.325 0 299.648 134.394 299.648 299.648 0 165.182-134.322 299.576-299.648 299.576zM318.964 165.35c-120.217 0-218.166 97.878-218.166 218.31 0 120.289 97.949 218.31 218.166 218.31 120.575 0 218.381-98.021 218.381-218.31 0-120.432-97.806-218.31-218.381-218.31zM167.773 421.053h295.813v-84.958h-295.813v84.958zM358.161 526.483v-295.813h-84.958v295.813h84.958z" />
72
+ <glyph unicode="&#xe921;" glyph-name="rows-1" horiz-adv-x="1297" d="M170.667 529.834v-304.795h956.008v304.795h-956.008zM170.667 895.588v-304.795h956.008v304.795h-956.008zM1126.675 164.081h-956.008v-304.795h956.008v304.795z" />
73
+ <glyph unicode="&#xe922;" glyph-name="insert-column-after" d="M618 682.664c-7.852 0-15.703 2.859-21.844 8.625l-160 149.328c-9.602 8.961-12.758 22.914-7.938 35.117s16.641 20.266 29.781 20.266h320c13.141 0 24.961-8.023 29.781-20.266 4.82-12.25 1.664-26.156-7.938-35.117l-160-149.328c-6.141-5.766-13.992-8.625-21.844-8.625zM539.195 832l78.805-73.555 78.805 73.555zM906-128h-106.664c-41.18 0-74.672 33.492-74.672 74.664v661.336c0 41.172 33.492 74.664 74.672 74.664h106.664c41.172 0 74.664-33.492 74.664-74.664v-661.336c0-41.172-33.492-74.664-74.664-74.664zM799.336 618.664c-5.891 0-10.672-4.773-10.672-10.664v-661.336c0-5.883 4.781-10.664 10.672-10.664h106.664c5.891 0 10.664 4.781 10.664 10.664v661.336c0 5.891-4.773 10.664-10.664 10.664zM436.664-128h-320c-41.172 0-74.664 33.492-74.664 74.664v661.336c0 41.172 33.492 74.664 74.664 74.664h320c41.18 0 74.672-33.492 74.672-74.664v-661.336c0-41.172-33.492-74.664-74.672-74.664zM116.664 618.664c-5.883 0-10.664-4.773-10.664-10.664v-661.336c0-5.883 4.781-10.664 10.664-10.664h320c5.891 0 10.672 4.781 10.672 10.664v661.336c0 5.891-4.781 10.664-10.672 10.664zM948.664 245.336h-192c-17.664 0-32 14.336-32 32s14.336 32 32 32h192c17.664 0 32-14.336 32-32s-14.336-32-32-32zM479.336 245.336h-405.336c-17.664 0-32 14.336-32 32s14.336 32 32 32h405.336c17.664 0 32-14.336 32-32s-14.336-32-32-32zM276.664-128c-17.664 0-32 14.336-32 32v746.664c0 17.664 14.336 32 32 32s32-14.336 32-32v-746.664c0-17.664-14.336-32-32-32z" />
74
+ <glyph unicode="&#xe923;" glyph-name="insert-column-before" d="M404.664 682.664c-7.852 0-15.656 2.859-21.844 8.625l-160 149.328c-9.641 8.961-12.758 22.914-7.938 35.117 4.82 12.242 16.641 20.266 29.781 20.266h320c13.141 0 24.961-8.023 29.742-20.266 4.82-12.25 1.703-26.156-7.938-35.117l-160-149.328c-6.141-5.766-13.953-8.625-21.805-8.625zM325.82 832l78.844-73.555 78.852 73.555zM223.336-128h-106.672c-41.172 0-74.664 33.492-74.664 74.664v661.336c0 41.172 33.492 74.664 74.664 74.664h106.672c41.172 0 74.664-33.492 74.664-74.664v-661.336c0-41.172-33.492-74.664-74.664-74.664zM116.664 618.664c-5.883 0-10.664-4.773-10.664-10.664v-661.336c0-5.883 4.781-10.664 10.664-10.664h106.672c5.883 0 10.664 4.781 10.664 10.664v661.336c0 5.891-4.781 10.664-10.664 10.664zM906-128h-320c-41.172 0-74.664 33.492-74.664 74.664v661.336c0 41.172 33.492 74.664 74.664 74.664h320c41.172 0 74.664-33.492 74.664-74.664v-661.336c0-41.172-33.492-74.664-74.664-74.664zM586 618.664c-5.891 0-10.664-4.773-10.664-10.664v-661.336c0-5.883 4.773-10.664 10.664-10.664h320c5.891 0 10.664 4.781 10.664 10.664v661.336c0 5.891-4.773 10.664-10.664 10.664zM266 245.336h-192c-17.664 0-32 14.336-32 32s14.336 32 32 32h192c17.664 0 32-14.336 32-32s-14.336-32-32-32zM948.664 245.336h-405.328c-17.664 0-32 14.336-32 32s14.336 32 32 32h405.328c17.664 0 32-14.336 32-32s-14.336-32-32-32zM746-128c-17.664 0-32 14.336-32 32v746.664c0 17.664 14.336 32 32 32s32-14.336 32-32v-746.664c0-17.664-14.336-32-32-32z" />
75
+ <glyph unicode="&#xe924;" glyph-name="insert-row-after" d="M32 86c-3.969 0-7.938 0.727-11.734 2.219-12.242 4.82-20.266 16.641-20.266 29.781v320c0 13.141 8.023 24.961 20.266 29.781 12.289 4.82 26.156 1.703 35.117-7.938l149.328-160c11.523-12.289 11.523-31.359 0-43.648l-149.328-160c-6.188-6.656-14.68-10.195-23.383-10.195zM64 356.805v-157.609l73.555 78.805zM949.336-84.664h-661.336c-41.172 0-74.664 33.492-74.664 74.664v106.664c0 41.18 33.492 74.672 74.664 74.672h661.336c41.172 0 74.664-33.492 74.664-74.672v-106.664c0-41.172-33.492-74.664-74.664-74.664zM288 107.336c-5.891 0-10.664-4.781-10.664-10.672v-106.664c0-5.891 4.773-10.664 10.664-10.664h661.336c5.883 0 10.664 4.773 10.664 10.664v106.664c0 5.891-4.781 10.672-10.664 10.672zM949.336 384.664h-661.336c-41.172 0-74.664 33.492-74.664 74.672v320c0 41.172 33.492 74.664 74.664 74.664h661.336c41.172 0 74.664-33.492 74.664-74.664v-320c0-41.18-33.492-74.672-74.664-74.672zM288 790c-5.891 0-10.664-4.781-10.664-10.664v-320c0-5.891 4.773-10.672 10.664-10.672h661.336c5.883 0 10.664 4.781 10.664 10.672v320c0 5.883-4.781 10.664-10.664 10.664zM618.664-84.664c-17.664 0-32 14.336-32 32v192c0 17.664 14.336 32 32 32s32-14.336 32-32v-192c0-17.664-14.336-32-32-32zM618.664 384.664c-17.664 0-32 14.336-32 32v405.336c0 17.664 14.336 32 32 32s32-14.336 32-32v-405.336c0-17.664-14.336-32-32-32zM992 587.336h-746.664c-17.664 0-32 14.336-32 32s14.336 32 32 32h746.664c17.664 0 32-14.336 32-32s-14.336-32-32-32z" />
76
+ <glyph unicode="&#xe925;" glyph-name="insert-row-before" d="M32 299.336c-3.969 0-7.938 0.727-11.734 2.219-12.242 4.82-20.266 16.641-20.266 29.781v320c0 13.141 8.023 24.961 20.266 29.781 12.289 4.82 26.156 1.703 35.117-7.938l149.328-160c11.523-12.289 11.523-31.359 0-43.648l-149.328-160c-6.188-6.656-14.68-10.195-23.383-10.195zM64 570.141v-157.609l73.555 78.805zM949.336 598h-661.336c-41.172 0-74.664 33.492-74.664 74.664v106.672c0 41.172 33.492 74.664 74.664 74.664h661.336c41.172 0 74.664-33.492 74.664-74.664v-106.672c0-41.172-33.492-74.664-74.664-74.664zM288 790c-5.891 0-10.664-4.781-10.664-10.664v-106.672c0-5.883 4.773-10.664 10.664-10.664h661.336c5.883 0 10.664 4.781 10.664 10.664v106.672c0 5.883-4.781 10.664-10.664 10.664zM949.336-84.664h-661.336c-41.172 0-74.664 33.492-74.664 74.664v320c0 41.172 33.492 74.664 74.664 74.664h661.336c41.172 0 74.664-33.492 74.664-74.664v-320c0-41.172-33.492-74.664-74.664-74.664zM288 320.664c-5.891 0-10.664-4.773-10.664-10.664v-320c0-5.891 4.773-10.664 10.664-10.664h661.336c5.883 0 10.664 4.773 10.664 10.664v320c0 5.891-4.781 10.664-10.664 10.664zM618.664 598c-17.664 0-32 14.336-32 32v192c0 17.664 14.336 32 32 32s32-14.336 32-32v-192c0-17.664-14.336-32-32-32zM618.664-84.664c-17.664 0-32 14.336-32 32v405.328c0 17.664 14.336 32 32 32s32-14.336 32-32v-405.328c0-17.664-14.336-32-32-32zM992 118h-746.664c-17.664 0-32 14.336-32 32s14.336 32 32 32h746.664c17.664 0 32-14.336 32-32s-14.336-32-32-32z" />
77
+ <glyph unicode="&#xe926;" glyph-name="columns-1" d="M46.933-128h930.133c25.6 0 46.933 21.333 46.933 46.933v930.133c0 25.6-21.333 46.933-46.933 46.933h-930.133c-25.6 0-46.933-21.333-46.933-46.933v-930.133c0-25.6 21.333-46.933 46.933-46.933zM938.667 810.667v-853.333h-256v853.333h256zM640 810.667v-853.333h-256v853.333h256zM85.333 810.667h256v-853.333h-256v853.333z" />
78
+ <glyph unicode="&#xe927;" glyph-name="rows-2" d="M1024-81.067v930.133c0 25.6-21.333 46.933-46.933 46.933h-930.133c-25.6 0-46.933-21.333-46.933-46.933v-930.133c0-25.6 21.333-46.933 46.933-46.933h930.133c25.6 0 46.933 21.333 46.933 46.933zM85.333 810.667h853.333v-256h-853.333v256zM85.333 512h853.333v-256h-853.333v256zM85.333-42.667v256h853.333v-256h-853.333z" />
79
+ <glyph unicode="&#xe928;" glyph-name="columns-2" horiz-adv-x="1297" d="M443.733-25.6h341.333v887.467h-341.333v-887.467zM34.133-25.6h341.333v887.467h-341.333v-887.467zM853.333 861.867v-887.467h341.333v887.467h-341.333z" />
80
+ <glyph unicode="&#xe929;" glyph-name="wrap-text" horiz-adv-x="989" d="M69.034 665.888v-57.528h805.393v115.056h-805.393v-57.528zM69.034 378.247v-57.528h349.771c335.964 0 349.771-1.151 379.685-24.162 41.42-32.216 41.42-92.045 0-124.261-25.312-19.56-47.173-24.162-120.809-24.162h-90.894v109.303l-82.84-83.991-83.991-82.84 83.991-82.84 82.84-83.991v107.002l107.002 4.602c118.508 4.602 155.326 21.861 205.951 93.196 41.42 57.528 37.969 162.229-6.903 219.757-63.281 82.84-82.84 87.443-475.182 87.443h-348.62v-57.528zM69.034 90.607v-57.528h230.112v115.056h-230.112v-57.528z" />
81
+ <glyph unicode="&#xe92a;" glyph-name="clip-text" horiz-adv-x="1049" d="M86.361 390.169v-431.807h123.373v863.614h-123.373v-431.807zM826.602 636.916v-185.060h-493.494v-123.373h493.494v-370.12h123.373v863.614h-123.373v-185.060z" />
82
+ <glyph unicode="&#xe92b;" glyph-name="overflow-text" horiz-adv-x="1036" d="M72.282 390.024v-421.647h120.471v843.294h-120.471v-421.647zM493.929 691.2v-120.471h120.471v240.941h-120.471v-120.471zM734.871 506.88v-56.621h-421.647v-120.471h420.442l3.614-60.235 3.614-61.44 87.944 87.944 86.739 87.944-90.353 90.353-90.353 89.148v-56.621zM493.929 88.847v-120.471h120.471v240.941h-120.471v-120.471z" />
83
+ <glyph unicode="&#xe92c;" glyph-name="star-half" horiz-adv-x="1152" d="M576 896c-22.8 0-45.6-11.8-57.4-35.6l-130.6-264.8-292.2-42.4c-52.4-7.6-73.4-72.2-35.4-109.2l211.4-206-50-291c-9-52.2 46-92 92.8-67.4l261.4 137.2v879.2z" />
84
+ <glyph unicode="&#xe967;" glyph-name="undo2" d="M761.862-128c113.726 206.032 132.888 520.306-313.862 509.824v-253.824l-384 384 384 384v-248.372c534.962 13.942 594.57-472.214 313.862-775.628z" />
85
+ <glyph unicode="&#xe968;" glyph-name="redo2" d="M576 647.628v248.372l384-384-384-384v253.824c-446.75 10.482-427.588-303.792-313.86-509.824-280.712 303.414-221.1 789.57 313.86 775.628z" />
86
  <glyph unicode="&#xe982;" glyph-name="spinner9" d="M512 896c-278.748 0-505.458-222.762-511.848-499.974 5.92 241.864 189.832 435.974 415.848 435.974 229.75 0 416-200.576 416-448 0-53.020 42.98-96 96-96s96 42.98 96 96c0 282.77-229.23 512-512 512zM512-128c278.748 0 505.458 222.762 511.848 499.974-5.92-241.864-189.832-435.974-415.848-435.974-229.75 0-416 200.576-416 448 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-282.77 229.23-512 512-512z" />
87
  <glyph unicode="&#xf002;" glyph-name="search" d="M1017-41.801c9.4-9.398 9.4-24.6 0-34l-45.199-45.199c-9.4-9.4-24.602-9.4-34 0l-242.8 242.8c-4.4 4.6-7 10.6-7 17v26.398c-73-63-168-101.199-272-101.199-229.8 0-416 186.199-416 416s186.199 416 416 416 416-186.199 416-416c0-104-38.199-199-101.199-272h26.398c6.4 0 12.4-2.4 17-7zM416 160c176.801 0 320 143.199 320 320s-143.199 320-320 320-320-143.199-320-320 143.199-320 320-320z" />
88
  <glyph unicode="&#xf003;" glyph-name="search-full" d="M1010 10.6c18.6-18.799 18.6-49.199-0.199-68l-56.602-56.6c-18.6-18.801-49-18.801-67.799 0l-199.4 199.4c-9 9-14 21.199-14 34v32.6c-70.6-55.199-159.4-88-256-88-229.8 0-416 186.199-416 416s186.199 416 416 416 416-186.199 416-416c0-96.6-32.801-185.4-88-256h32.6c12.801 0 25-5 34-14zM416 224c141.6 0 256 114.6 256 256 0 141.6-114.6 256-256 256-141.6 0-256-114.6-256-256 0-141.6 114.6-256 256-256z" />
119
  <glyph unicode="&#xf03b;" glyph-name="outdent" horiz-adv-x="896" d="M201.38 169.42l-192 191.961c-5.17 5.172-9.365 15.307-9.365 22.619s4.195 17.447 9.365 22.619l192 192c19.959 20 54.619 6.021 54.619-22.619v-383.96c0-28.479-34.619-42.619-54.619-22.619zM864 48c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-832c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h832zM870.34 304c14.154 0 25.66-11.486 25.66-25.641v-44.719c0-14.154-11.486-25.641-25.641-25.641h-460.719c-14.154 0-25.641 11.486-25.641 25.641v44.719c0 14.154 11.486 25.641 25.641 25.641h460.7zM864 816c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-832c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h832zM870.34 560c14.154 0 25.66-11.486 25.66-25.641v-44.719c0-14.154-11.486-25.641-25.641-25.641h-460.719c-14.154 0-25.641 11.486-25.641 25.641v44.719c0 14.154 11.486 25.641 25.641 25.641h460.7z" />
120
  <glyph unicode="&#xf03c;" glyph-name="indent" horiz-adv-x="896" d="M864 48c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-832c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h832zM54.619 169.4c-19.959-20-54.619-6.020-54.619 22.6v384c0 28.439 34.539 42.68 54.619 22.641l192-192c5.17-5.174 9.365-15.307 9.365-22.621s-4.195-17.447-9.365-22.619zM870.34 560c14.154 0 25.66-11.486 25.66-25.641v-44.719c0-14.154-11.486-25.641-25.641-25.641h-460.719c-14.154 0-25.641 11.486-25.641 25.641v44.719c0 14.154 11.486 25.641 25.641 25.641h460.7zM864 800c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-832c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h832zM870.34 304c14.154 0 25.66-11.486 25.66-25.641v-44.719c0-14.154-11.486-25.641-25.641-25.641h-460.719c-14.154 0-25.641 11.486-25.641 25.641v44.719c0 14.154 11.486 25.641 25.641 25.641h460.7z" />
121
  <glyph unicode="&#xf03e;" glyph-name="image" d="M928 768c53.020 0 96-42.98 96-96v-576c0-53.020-42.98-96-96-96h-832c-53.020 0-96 42.98-96 96v576c0 53.020 42.98 96 96 96h832zM916 96c6.623 0 12 5.377 12 12v552c0 6.623-5.377 12-12 12h-808c-6.623 0-12-5.377-12-12v-552c0-6.623 5.377-12 12-12h808zM256 592c44.182 0 80-35.818 80-80s-35.818-80-80-80-80 35.818-80 80 35.818 80 80 80zM192 192v96l79.027 79.029c9.375 9.373 24.57 9.373 33.943 0l79.029-79.029 239.028 239.030c9.375 9.373 24.57 9.373 33.943 0l175.029-175.029v-160h-640z" />
122
+ <glyph unicode="&#xf044;" glyph-name="tint" horiz-adv-x="704" d="M410.44 851.82c93.98-316.96 293.56-400.14 293.56-623.64 0-196.879-157.439-356.18-352-356.18s-352 159.301-352 356.18c0 222.38 200.020 308.122 293.56 623.64 18 60.24 101 57.561 116.879 0zM352 0c17.68 0 32 14.32 32 32s-14.32 32-32 32c-88.221 0-160 71.779-160 160 0 17.68-14.32 32-32 32s-32-14.32-32-32c0-123.5 100.5-224 224-224z" />
123
  <glyph unicode="&#xf048;" glyph-name="step-backward" horiz-adv-x="896" d="M128-40v848c0 13.199 10.801 24 24 24h96c13.199 0 24-10.801 24-24v-352.8l391 362c41.199 34.201 105 5.602 105-49.199v-768c0-54.801-63.801-83.4-105-49.199l-391 359.798v-350.6c0-13.199-10.801-24-24-24h-96c-13.199 0-24 10.801-24 24z" />
124
  <glyph unicode="&#xf04b;" glyph-name="play" horiz-adv-x="896" d="M848.8 466.6c63-37 62.799-128.199 0-165.199l-704-416c-63.4-37.6-144.801 7.6-144.801 82.6v832.2c0 83.602 87.6 116.4 144.801 82.602z" />
125
  <glyph unicode="&#xf04d;" glyph-name="stop-thin" horiz-adv-x="896" d="M800 832c53 0 96-43 96-96v-704c0-53-43-96-96-96h-704c-53 0-96 43-96 96v704c0 53 43 96 96 96h704zM832 32v704c0 17.6-14.4 32-32 32h-704c-17.6 0-32-14.4-32-32v-704c0-17.6 14.4-32 32-32h704c17.6 0 32 14.4 32 32z" />
284
  <glyph unicode="&#xf292;" glyph-name="hashtag" horiz-adv-x="896" d="M887.048 515.782c-1.951-10.918-12.535-19.781-23.627-19.781h-186.662l-40-224h178.090c14.943 0 26.252-13.508 23.627-28.219l-8.572-48c-1.949-10.918-12.535-19.781-23.627-19.781h-186.662l-39.326-220.218c-1.949-10.918-12.533-19.781-23.625-19.781h-48.76c-14.941 0-26.252 13.508-23.627 28.219l37.818 211.782h-222.48l-39.322-220.218c-1.951-10.918-12.535-19.781-23.627-19.781h-48.76c-14.943 0-26.254 13.508-23.629 28.219l37.818 211.782h-178.090c-14.941 0-26.252 13.508-23.625 28.219l8.57 48c1.951 10.918 12.535 19.781 23.627 19.781h186.662l40 224h-178.090c-14.945 0-26.254 13.508-23.629 28.219l8.572 48c1.949 10.918 12.533 19.781 23.627 19.781h186.664l39.326 220.22c1.949 10.918 12.533 19.779 23.625 19.779h48.76c14.941 0 26.252-13.51 23.627-28.221l-37.818-211.78h222.48l39.326 220.22c1.949 10.918 12.533 19.779 23.625 19.779h48.76c14.941 0 26.252-13.51 23.627-28.221l-37.818-211.78h178.090c14.941 0 26.252-13.508 23.625-28.219zM539.24 272l40 224h-222.48l-40-224h222.48z" />
285
  <glyph unicode="&#xf295;" glyph-name="percent" horiz-adv-x="768" d="M192 448c-106 0-192 86-192 192s86 192 192 192 192-86 192-192-86-192-192-192zM192 736c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zM576 320c106 0 192-86 192-192s-86-192-192-192-192 86-192 192 86 192 192 192zM576 32c53 0 96 43 96 96s-43 96-96 96-96-43-96-96 43-96 96-96zM763.8 794.4l-649.4-848.4c-4.6-6.199-11.801-10-19.4-10h-71c-19.199 0-30.6 21.4-20 37.4l650.4 848.6c4.6 6.199 11.799 10 19.4 10h70.199c19.199 0 30.6-21.6 19.801-37.6z" />
286
  <glyph unicode="&#xf2d3;" glyph-name="times-square" horiz-adv-x="896" d="M800 832c53 0 96-43 96-96v-704c0-53-43-96-96-96h-704c-53 0-96 43-96 96v704c0 53 43 96 96 96h704zM691.2 253.8l-131.199 130.199 131.4 130c9.4 9.4 9.4 24.6 0 34l-79.201 79.199c-9.398 9.4-24.6 9.4-34 0l-130.199-131.199-130 131.4c-9.4 9.4-24.6 9.4-34 0l-79.199-79.201c-9.4-9.398-9.4-24.6 0-34l131.199-130.199-131.199-130c-9.4-9.4-9.4-24.6 0-34l79-79.199c9.398-9.4 24.6-9.4 34 0l130.199 131.199 130-131.199c9.4-9.4 24.6-9.4 34 0l79.199 79c9.4 9.398 9.4 24.6 0 34z" />
287
+ <glyph unicode="&#xf2ea;" glyph-name="undo-alt" d="M56.971 839.030l104.33-104.33c89.75 89.768 213.728 145.301 350.698 145.301 273.322 0 496.202-223.050 496.002-496.37-0.199-273.766-222.19-495.63-496-495.63-127.852 0-244.404 48.373-332.356 127.816-10.227 9.236-10.707 25.121-0.965 34.865l39.477 39.477c8.996 8.996 23.506 9.57 33.002 1.104 69.268-61.754 160.631-99.262 260.842-99.262 216.642 0 392 175.324 392 392 0 216.642-175.324 392-392 392-108.326 0-206.314-43.846-277.228-114.771l108.256-108.258c15.121-15.121 4.412-40.971-16.969-40.971h-286.058c-13.254 0-24 10.746-24 24v286.058c0 21.381 25.852 32.090 40.971 16.971z" />
288
  <glyph unicode="&#xf2ed;" glyph-name="trash-alt" horiz-adv-x="896" d="M64-32v672h768v-672c0-52.992-43.008-96-96-96h-576c-52.992 0-96 43.008-96 96zM608 480v-448c0-17.664 14.336-32 32-32s32 14.336 32 32v448c0 17.664-14.336 32-32 32s-32-14.336-32-32zM416 480v-448c0-17.664 14.336-32 32-32s32 14.336 32 32v448c0 17.664-14.336 32-32 32s-32-14.336-32-32zM224 480v-448c0-17.664 14.336-32 32-32s32 14.336 32 32v448c0 17.664-14.336 32-32 32s-32-14.336-32-32zM864 832c17.664 0 32-14.336 32-32v-64c0-17.664-14.336-32-32-32h-832c-17.664 0-32 14.336-32 32v64c0 17.664 14.336 32 32 32h240l18.801 37.4c7.18 14.684 26.271 26.6 42.617 26.6h228.817c16.404 0 35.652-11.916 42.965-26.6l18.801-37.4h240z" />
289
  <glyph unicode="&#xf2fd;" glyph-name="question-square" horiz-adv-x="896" d="M800 832c53.020 0 96-42.98 96-96v-704c0-53.020-42.98-96-96-96h-704c-53.020 0-96 42.98-96 96v704c0 53.020 42.98 96 96 96h704zM448 36c50.73 0 92 41.271 92 92s-41.27 92-92 92-92-41.27-92-92c0-50.729 41.27-92 92-92zM528 298.666c0 56.924 166.371 59.295 166.371 213.334 0 116.004-120.328 204-233.060 204-108.994 0-178.51-45.914-233.098-127.514-7.072-10.572-4.707-24.83 5.43-32.516l69.396-52.621c10.41-7.895 25.24-6.016 33.33 4.244 35.73 45.316 60.227 71.594 114.607 71.594 40.857 0 91.395-26.295 91.395-65.916 0-29.951-24.725-45.334-65.066-67.951-47.049-26.377-109.305-59.203-109.305-141.32v-8c0-13.254 10.746-24 24-24h112c13.254 0 24 10.746 24 24v2.666z" />
290
  <glyph unicode="&#xf304;" glyph-name="pen" d="M581.48 709.52l256.040-256.040-555.98-555.98-228.28-25.199c-30.561-3.381-56.379 22.459-52.98 53.020l25.4 228.44zM995.88 747.64c37.5-37.5 37.5-98.301 0-135.82l-113.102-113.1-256.040 256.040 113.1 113.1c37.5 37.5 98.32 37.5 135.82 0z" />
330
  <glyph unicode="&#xf662;" glyph-name="sort-alpha-down-alt" horiz-adv-x="896" d="M352 192c28.439 0 42.699-34.52 22.66-54.619l-160-192c-5.174-5.17-15.307-9.365-22.621-9.365-7.313 0-17.445 4.195-22.619 9.365l-160 192c-20.141 20.139-5.801 54.619 22.58 54.619h96v608c0 17.664 14.336 32 32 32h64c17.664 0 32-14.336 32-32v-608h96zM576 448c-17.664 0-32 14.336-32 32v35.266c0 15.865 9.623 37.295 21.48 47.834l122.52 140.9h-112c-17.664 0-32 14.336-32 32v64c0 17.664 14.336 32 32 32h256c17.664 0 32-14.336 32-32v-35.266c0-15.865-9.623-37.295-21.48-47.834l-122.52-140.9h112c17.664 0 32-14.336 32-32v-64c0-17.664-14.336-32-32-32h-256zM894.12-21.24c1.029-2.881 1.863-7.701 1.863-10.76 0-17.654-14.328-31.99-31.982-32h-49.769c-12.855 0-26.498 9.928-30.451 22.16l-8.818 25.84h-142l-8.842-25.84c-3.951-12.232-17.594-22.16-30.449-22.16h-49.67c-17.654 0.010-31.982 14.346-31.982 32 0 3.059 0.834 7.879 1.863 10.76l118.539 320c4.186 11.725 17.688 21.24 30.137 21.24h82.887c12.449 0 25.951-9.516 30.137-21.24zM671.22 96h65.559l-32.779 96z" />
331
  <glyph unicode="&#xf663;" glyph-name="function-reg" horiz-adv-x="1280" d="M448 800v-32c0-17.68-14.32-32-32-32h-96c-44.18 0-80-35.82-80-80v-96h112c17.68 0 32-14.32 32-32v-32c0-17.68-14.32-32-32-32h-112v-288c0-97.199-78.801-176-176-176h-32c-17.68 0-32 14.32-32 32v32c0 17.68 14.32 32 32 32h32c44.18 0 80 35.82 80 80v288h-112c-17.68 0-32 14.32-32 32v32c0 17.68 14.32 32 32 32h112v96c0 97.199 78.801 176 176 176h96c17.68 0 32-14.32 32-32zM634.86 678.16c13.66-10.279 16.16-29.061 6.561-43.16-63.020-92.48-97.42-203.18-97.42-315 0-111.84 34.4-222.54 97.42-314.98 9.619-14.1 7.119-32.9-6.561-43.18l-25.6-19.26c-14.439-10.881-35.619-8.041-45.84 6.82-74.641 108.561-115.42 238.9-115.42 370.6 0 131.66 40.779 262 115.42 370.6 10.221 14.84 31.4 17.701 45.84 6.82zM1164.58 690.6c74.641-108.561 115.42-238.9 115.42-370.6 0-131.66-40.779-262-115.42-370.62-10.221-14.861-31.4-17.701-45.84-6.82l-25.6 19.26c-13.66 10.299-16.16 29.080-6.561 43.18 63.020 92.48 97.42 203.18 97.42 315 0 111.84-34.4 222.54-97.42 314.98-9.619 14.1-7.119 32.9 6.561 43.18l25.6 19.26c14.439 10.881 35.619 8.041 45.84-6.82zM1014.9 448.92c12.139-12.141 12.139-31.84-0.020-43.98l-84.941-84.939 84.941-84.939c12.139-12.141 12.139-31.82 0-43.961l-21.98-21.98c-12.141-12.139-31.82-12.139-43.961 0l-84.939 84.941-84.939-84.941c-12.141-12.139-31.82-12.139-43.961 0l-21.98 21.98c-12.139 12.141-12.139 31.82 0 43.961l84.941 84.939-84.941 84.939c-12.139 12.141-12.139 31.82 0 43.961l21.98 21.98c12.141 12.139 31.82 12.139 43.961 0l84.939-84.941 84.961 84.961c12.139 12.139 31.818 12.139 43.959 0z" />
332
  <glyph unicode="&#xf6dd;" glyph-name="file-csv" horiz-adv-x="768" d="M739.66 700.040c18-18 28.34-42.6 28.34-67.979v-664.080c0-52.98-43.141-95.98-96.141-95.98h-575.878c-52.98 0-95.98 43-95.98 95.98v831.84c0 52.98 43 95.98 95.98 96.18h408.12c25.381 0 49.781-10.199 67.781-28.199zM511.9 792.020v-152.16h152.18zM672-32.020v575.9h-208.080c-26.6 0-48 21.379-48 47.979v207.96h-319.94v-831.84h576.020zM448 368c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-41.6c0-40.541 11.4-80.361 32-113.76 20.6 33.42 32 73.219 32 113.76v41.6c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-41.6c0-70.961-25.74-137.781-72.561-188.18-6.039-6.5-14.539-10.221-23.439-10.221s-17.4 3.721-23.439 10.221c-46.801 50.398-72.561 117.219-72.561 188.18v41.6zM240 384c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16c-17.68 0-32-14.32-32-32v-64c0-17.68 14.32-32 32-32h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16c-53.020 0-96 42.98-96 96v64c0 53.020 42.98 96 96 96h16zM358.9 299.060l43.799-37.541c16.941-14.439 26.66-34.959 26.66-56.279 0-42.58-38.039-77.24-84.82-77.24h-24.539c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h24.5c11.92 0 20.82 7 20.82 13.24 0 2.58-1.48 5.299-4.24 7.68l-43.779 37.541c-16.941 14.439-26.66 34.959-26.66 56.279 0 42.58 38.039 77.24 84.82 77.24h24.539c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-24.52c-11.92 0-20.82-7-20.82-13.24 0-2.58 1.48-5.301 4.24-7.68z" />
333
+ <glyph unicode="&#xf7e9;" glyph-name="brackets" horiz-adv-x="896" d="M256 832c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-160v-704h160c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-192c-35.328 0-64 28.672-64 64v768c0 35.328 28.672 64 64 64h192zM832 832c35.328 0 64-28.672 64-64v-768c0-35.328-28.672-64-64-64h-192c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h160v704h-160c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h192z" />
334
+ <glyph unicode="&#xf7ea;" glyph-name="brackets1" horiz-adv-x="896" d="M288 832c17.664 0 32-14.336 32-32v-64c0-17.664-14.336-32-32-32h-160v-640h160c17.664 0 32-14.336 32-32v-64c0-17.664-14.336-32-32-32h-224c-35.328 0-64 28.672-64 64v768c0 35.328 28.672 64 64 64h224zM832 832c35.328 0 64-28.672 64-64v-768c0-35.328-28.672-64-64-64h-224c-17.664 0-32 14.336-32 32v64c0 17.664 14.336 32 32 32h160v640h-160c-17.664 0-32 14.336-32 32v64c0 17.664 14.336 32 32 32h224z" />
335
  <glyph unicode="&#xf870;" glyph-name="line-columns" d="M992 48c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM992 304c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM992 560c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM992 816c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM416 304c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM416 48c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM416 816c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384zM416 560c17.664 0 32-14.336 32-32v-32c0-17.664-14.336-32-32-32h-384c-17.664 0-32 14.336-32 32v32c0 17.664 14.336 32 32 32h384z" />
336
  <glyph unicode="&#xf883;" glyph-name="sort-alt" horiz-adv-x="768" d="M352 192c28.439 0 42.699-34.52 22.66-54.619l-160-192c-5.174-5.17-15.307-9.365-22.621-9.365-7.313 0-17.445 4.195-22.619 9.365l-160 192c-20.141 20.139-5.801 54.619 22.58 54.619h96v608c0 17.664 14.336 32 32 32h64c17.664 0 32-14.336 32-32v-608h96zM758.58 630.62c20.141-20.139 5.801-54.619-22.58-54.619h-96v-608c0-17.664-14.336-32-32-32h-64c-17.664 0-32 14.336-32 32v608h-96c-28.439 0-42.699 34.52-22.66 54.619l160 192c5.174 5.17 15.307 9.365 22.621 9.365s17.445-4.195 22.619-9.365z" />
337
  <glyph unicode="&#x1f50d;" glyph-name="search2" horiz-adv-x="950" d="M658.432 420.864q0 105.472-74.752 180.224t-181.248 75.776-181.248-75.776-74.752-180.224 74.752-181.248 181.248-74.752 181.248 74.752 74.752 181.248zM951.296-55.296q0-29.696-22.528-51.2t-51.2-21.504q-30.72 0-51.2 21.504l-195.584 195.584q-102.4-70.656-228.352-70.656-81.92 0-156.672 31.744t-128 86.016-86.016 128-31.744 156.672 31.744 155.648 86.016 129.024 128 86.016 156.672 31.744 156.672-31.744 128-86.016 86.016-129.024 31.744-155.648q0-125.952-70.656-228.352l195.584-195.584q21.504-21.504 21.504-52.224z" />
assets/fonts/wpDataTablesIcons.ttf CHANGED
Binary file
assets/fonts/wpDataTablesIcons.woff CHANGED
Binary file
assets/img/constructor/create-simple-table.png ADDED
Binary file
assets/img/constructor/create-simple-table.svg ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="64" height="64" fill="white"/>
3
+ <path d="M7.37476 12.2258C7.37476 11.1213 8.27019 10.2258 9.37476 10.2258H28C29.1046 10.2258 30 11.1213 30 12.2258V16.1129C30 17.2175 29.1046 18.1129 28 18.1129H9.37475C8.27019 18.1129 7.37476 17.2175 7.37476 16.1129V12.2258Z" fill="#BDE1FF"/>
4
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M6.57477 12.2258C6.57477 10.6794 7.82837 9.42583 9.37477 9.42583H28C29.5464 9.42583 30.8 10.6794 30.8 12.2258V16.1129C30.8 17.6593 29.5464 18.9129 28 18.9129H9.37477C7.82837 18.9129 6.57477 17.6593 6.57477 16.1129V12.2258ZM9.37477 11.0258C8.71203 11.0258 8.17477 11.5631 8.17477 12.2258V16.1129C8.17477 16.7757 8.71203 17.3129 9.37477 17.3129H28C28.6627 17.3129 29.2 16.7757 29.2 16.1129V12.2258C29.2 11.5631 28.6627 11.0258 28 11.0258H9.37477Z" fill="#091E6F"/>
5
+ <path d="M36.2104 13.0445C36.2104 12.0368 36.2104 12.5555 36.2104 12.4182C36.2104 11.7864 37.6824 10.6952 38.9269 10.6H37.7493C36.0498 10.6 34.6715 10.9214 34.6715 11.3176V17.3953C34.6715 17.7916 36.0498 18.1129 37.7493 18.1129H38.9269C37.6824 18.0178 36.2104 16.7092 36.2104 16.0774C36.2104 15.9417 36.2104 15.9445 36.2104 14.9383C36.2104 14.0055 36.2104 13.1163 36.2104 13.0445Z" fill="#BDE1FF"/>
6
+ <path d="M36.2104 24.7445C36.2104 23.7368 36.2104 24.2555 36.2104 24.1182C36.2104 23.4864 37.6824 22.3952 38.9269 22.3H37.7493C36.0498 22.3 34.6715 22.6214 34.6715 23.0176V29.0953C34.6715 29.4915 36.0498 29.8129 37.7493 29.8129H38.9269C37.6824 29.7177 36.2104 28.4092 36.2104 27.7774C36.2104 27.6416 36.2104 27.6445 36.2104 26.6383C36.2104 25.7055 36.2104 24.8163 36.2104 24.7445Z" fill="#BDE1FF"/>
7
+ <path d="M9.61604 48.5187C9.61604 47.511 9.61604 48.0297 9.61604 47.8924C9.61604 47.2606 11.088 46.1694 12.3325 46.0742H11.1549C9.45547 46.0742 8.07715 46.3956 8.07715 46.7918V52.8695C8.07715 53.2657 9.45547 53.5871 11.1549 53.5871H12.3325C11.088 53.4919 9.61604 52.1834 9.61604 51.5516C9.61604 51.4158 9.61604 51.4187 9.61604 50.4125C9.61604 49.4797 9.61604 48.5905 9.61604 48.5187Z" fill="#BDE1FF"/>
8
+ <path d="M9.61604 36.8187C9.61604 35.811 9.61604 36.3297 9.61604 36.1924C9.61604 35.5606 11.088 34.4694 12.3325 34.3742H11.1549C9.45547 34.3742 8.07715 34.6956 8.07715 35.0918V41.1695C8.07715 41.5657 9.45547 41.8871 11.1549 41.8871H12.3325C11.088 41.7919 9.61604 40.4833 9.61604 39.8515C9.61604 39.7158 9.61604 39.7187 9.61604 38.7125C9.61604 37.7796 9.61604 36.8905 9.61604 36.8187Z" fill="#BDE1FF"/>
9
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M6.57477 24.1129C6.57477 22.5665 7.82837 21.3129 9.37477 21.3129H28C29.5464 21.3129 30.8 22.5665 30.8 24.1129V28C30.8 29.5464 29.5464 30.8 28 30.8H9.37477C7.82837 30.8 6.57477 29.5464 6.57477 28V24.1129ZM9.37477 22.9129C8.71203 22.9129 8.17477 23.4502 8.17477 24.1129V28C8.17477 28.6627 8.71203 29.2 9.37477 29.2H28C28.6627 29.2 29.2 28.6627 29.2 28V24.1129C29.2 23.4502 28.6627 22.9129 28 22.9129H9.37477Z" fill="#008CFF"/>
10
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M6.57477 36C6.57477 34.4536 7.82837 33.2 9.37477 33.2H28C29.5464 33.2 30.8 34.4536 30.8 36V39.8871C30.8 41.4335 29.5464 42.6871 28 42.6871H9.37477C7.82837 42.6871 6.57477 41.4335 6.57477 39.8871V36ZM9.37477 34.8C8.71203 34.8 8.17477 35.3373 8.17477 36V39.8871C8.17477 40.5498 8.71203 41.0871 9.37477 41.0871H28C28.6627 41.0871 29.2 40.5498 29.2 39.8871V36C29.2 35.3373 28.6627 34.8 28 34.8H9.37477Z" fill="#091E6F"/>
11
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M6.57477 47.8871C6.57477 46.3407 7.82837 45.0871 9.37477 45.0871H54.6252C56.1716 45.0871 57.4252 46.3407 57.4252 47.8871V51.7742C57.4252 53.3206 56.1716 54.5742 54.6252 54.5742H9.37477C7.82837 54.5742 6.57477 53.3206 6.57477 51.7742V47.8871ZM9.37477 46.6871C8.71203 46.6871 8.17477 47.2243 8.17477 47.8871V51.7742C8.17477 52.4369 8.71203 52.9742 9.37477 52.9742H54.6252C55.288 52.9742 55.8252 52.4369 55.8252 51.7742V47.8871C55.8252 47.2243 55.288 46.6871 54.6252 46.6871H9.37477Z" fill="#091E6F"/>
12
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M33.2 12.2258C33.2 10.6794 34.4536 9.42583 36 9.42583H54.6252C56.1716 9.42583 57.4252 10.6794 57.4252 12.2258V16.1129C57.4252 17.6593 56.1716 18.9129 54.6252 18.9129H36C34.4536 18.9129 33.2 17.6593 33.2 16.1129V12.2258ZM36 11.0258C35.3373 11.0258 34.8 11.5631 34.8 12.2258V16.1129C34.8 16.7757 35.3373 17.3129 36 17.3129H54.6252C55.288 17.3129 55.8252 16.7757 55.8252 16.1129V12.2258C55.8252 11.5631 55.288 11.0258 54.6252 11.0258H36Z" fill="#091E6F"/>
13
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M33.2 24.1129C33.2 22.5665 34.4536 21.3129 36 21.3129H54.6252C56.1716 21.3129 57.4252 22.5665 57.4252 24.1129V28C57.4252 29.5464 56.1716 30.8 54.6252 30.8H36C34.4536 30.8 33.2 29.5464 33.2 28V24.1129ZM36 22.9129C35.3373 22.9129 34.8 23.4502 34.8 24.1129V28C34.8 28.6627 35.3373 29.2 36 29.2H54.6252C55.288 29.2 55.8252 28.6627 55.8252 28V24.1129C55.8252 23.4502 55.288 22.9129 54.6252 22.9129H36Z" fill="#091E6F"/>
14
+ <path d="M34 36C34 34.8954 34.8954 34 36 34H54.6252C55.7298 34 56.6252 34.8954 56.6252 36V39.8871C56.6252 40.9917 55.7298 41.8871 54.6252 41.8871H36C34.8954 41.8871 34 40.9917 34 39.8871V36Z" fill="#BDE1FF"/>
15
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M33.2 36C33.2 34.4536 34.4536 33.2 36 33.2H54.6252C56.1716 33.2 57.4252 34.4536 57.4252 36V39.8871C57.4252 41.4335 56.1716 42.6871 54.6252 42.6871H36C34.4536 42.6871 33.2 41.4335 33.2 39.8871V36ZM36 34.8C35.3373 34.8 34.8 35.3373 34.8 36V39.8871C34.8 40.5498 35.3373 41.0871 36 41.0871H54.6252C55.288 41.0871 55.8252 40.5498 55.8252 39.8871V36C55.8252 35.3373 55.288 34.8 54.6252 34.8H36Z" fill="#091E6F"/>
16
+ <rect x="9.37195" y="24.171" width="14.8557" height="3.57151" rx="1.78576" fill="#008CFF"/>
17
+ <rect x="9.37195" y="36.4435" width="8.97256" height="3" rx="1.5" fill="#091E6F"/>
18
+ <rect x="10.2048" y="48.3306" width="17.1972" height="3" rx="1.5" fill="#091E6F"/>
19
+ <rect x="28.7808" y="48.3306" width="10.4385" height="3" rx="1.5" fill="#091E6F"/>
20
+ </svg>
assets/js/bootstrap/bootstrap-tour/bootstrap-tour-guide.js CHANGED
@@ -1,7 +1,8 @@
1
  (function ($) {
2
  $(function () {
3
- var $demo1, $demo2, tour1, tour2, invalidStep = -1;
4
 
 
5
  $demo1 = $("#wdt-tutorial-data-source");
6
  $demo2 = $("#wdt-tutorial-create-charts");
7
 
@@ -77,6 +78,276 @@
77
  }
78
  }
79
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
  tour1 = new Tour({
82
  name: "create-table-data-source",
@@ -104,8 +375,8 @@
104
  }, {
105
  // step 2
106
  path: document.location.pathname + "?page=wpdatatables-constructor",
107
- element: ".wdt-first-row .wdt-constructor-type-selecter-block:nth-child(1) .card",
108
- placement: "right",
109
  title: wpdtTutorialStrings.tour1.step2.title,
110
  content: wpdtTutorialStrings.tour1.step2.content,
111
  reflex: true,
@@ -309,12 +580,14 @@
309
 
310
  },
311
  onStart: function () {
 
312
  $demo1.addClass("disabled");
313
  $demo2.addClass("disabled");
314
  },
315
  onEnd: function () {
316
  window.localStorage.removeItem('create-table-data-source_current_step');
317
  window.localStorage.removeItem('create-table-data-source_redirect_to');
 
318
  $demo1.removeClass("disabled");
319
  $demo2.removeClass("disabled");
320
  $('.wdt-constructor-type-selecter-block .card:not([data-value="source"])').removeClass('disabled');
@@ -833,17 +1106,27 @@
833
 
834
  },
835
  onStart: function () {
 
836
  $demo1.addClass("disabled");
837
  $demo2.addClass("disabled");
838
  },
839
  onEnd: function () {
840
  window.localStorage.removeItem('create-chart_current_step');
841
  window.localStorage.removeItem('create-chart_redirect_to');
 
842
  $demo1.removeClass("disabled");
843
  $demo2.removeClass("disabled");
844
  }
845
  }).init();
846
 
 
 
 
 
 
 
 
 
847
  $(document).on("click", "#wdt-tutorial-data-source", function (e) {
848
  e.preventDefault();
849
  if ($(this).hasClass("disabled")) {
@@ -865,10 +1148,14 @@
865
  window.location.href.includes('wpdatatables-chart-wizard')) &&
866
  (localStorage.getItem("create-table-data-source_redirect_to") !== null ||
867
  localStorage.getItem("create-table-data-source_current_step") !== null ||
 
 
868
  localStorage.getItem("create-chart_redirect_to") !== null ||
869
  localStorage.getItem("create-chart_current_step") !== null)){
870
  window.localStorage.removeItem('create-table-data-source_current_step');
871
  window.localStorage.removeItem('create-table-data-source_redirect_to');
 
 
872
  window.localStorage.removeItem('create-chart_current_step');
873
  window.localStorage.removeItem('create-chart_redirect_to');
874
  }
1
  (function ($) {
2
  $(function () {
3
+ var $demo0, $demo1, $demo2, tour0, tour1, tour2, invalidStep = -1;
4
 
5
+ $demo0 = $("#wdt-tutorial-simple-table");
6
  $demo1 = $("#wdt-tutorial-data-source");
7
  $demo2 = $("#wdt-tutorial-create-charts");
8
 
78
  }
79
  }
80
 
81
+ tour0 = new Tour({
82
+ name: "create-simple-table",
83
+ keyboard: false,
84
+ steps: [
85
+ {
86
+ // step 0
87
+ orphan: true,
88
+ placement: "bottom",
89
+ title: wpdtTutorialStrings.tour0.step0.title,
90
+ content: wpdtTutorialStrings.tour0.step0.content,
91
+ }, {
92
+ // step 1
93
+ element: "#toplevel_page_wpdatatables-dashboard ul li:nth-child(4) a",
94
+ placement: "right",
95
+ reflex: true,
96
+ title: wpdtTutorialStrings.tour0.step1.title,
97
+ content: wpdtTutorialStrings.tour0.step1.content,
98
+ onShown: function () {
99
+ $('#toplevel_page_wpdatatables-dashboard ul li:nth-child(4) a').css("background-color", "#F88F20");
100
+ },
101
+ onHidden: function () {
102
+ $('#toplevel_page_wpdatatables-dashboard ul li:nth-child(4) a').css("background-color", "inherit");
103
+ }
104
+ }, {
105
+ // step 2
106
+ path: document.location.pathname + "?page=wpdatatables-constructor",
107
+ element: ".wdt-first-row .wdt-constructor-type-selecter-block:nth-child(1) .card",
108
+ placement: "right",
109
+ title: wpdtTutorialStrings.tour0.step2.title,
110
+ content: wpdtTutorialStrings.tour0.step2.content,
111
+ reflex: true,
112
+ backdrop: true,
113
+ backdropContainer: 'body',
114
+ backdropPadding: 5,
115
+ onShown: function () {
116
+ $('.tour-step-background').css("background-color", "rgba(248, 143, 32, 0.5)");
117
+ $('.wdt-constructor-type-selecter-block .card:not([data-value="simple"])').addClass('disabled');
118
+ window.localStorage.removeItem('create-simple-table_redirect_to');
119
+ },
120
+ onHidden: function () {
121
+ $('.tour-step-background').css("background-color", "inherit");
122
+ }
123
+ }, {
124
+ // step 3
125
+ element: "#wdt-constructor-next-step",
126
+ placement: "left",
127
+ title: wpdtTutorialStrings.tour0.step3.title,
128
+ content: wpdtTutorialStrings.tour0.step3.content,
129
+ reflex: true,
130
+ backdrop: true,
131
+ backdropPadding: 5,
132
+ duration: 3000,
133
+ onShown: function () {
134
+ $('.tour-step-background').css("background-color", "rgba(248, 143, 32, 0.5)");
135
+ },
136
+ onHidden: function () {
137
+ $('.tour-step-background').css("background-color", "inherit");
138
+ $('.wdt-constructor-type-selecter-block .card:not([data-value="simple"])').addClass('disabled');
139
+ },
140
+ onNext: function () {
141
+ $('#wdt-constructor-next-step').click();
142
+ }
143
+ }, {
144
+ // step 4
145
+ orphan: true,
146
+ placement: "bottom",
147
+ title: wpdtTutorialStrings.tour0.step4.title,
148
+ content: wpdtTutorialStrings.tour0.step4.content,
149
+ }, {
150
+ // step 5
151
+ element: "#wdt-constructor-simple-table-name",
152
+ placement: "bottom",
153
+ title: wpdtTutorialStrings.tour0.step5.title,
154
+ content: wpdtTutorialStrings.tour0.step5.content,
155
+ onShown: function () {
156
+ $('.tour-step-background').css("background-color", "rgba(248, 143, 32, 0.5)");
157
+ },
158
+ onHidden: function () {
159
+ $('.tour-step-background').css("background-color", "inherit");
160
+ }
161
+ }, {
162
+ // step 6
163
+ element: "#wdt-simple-table-number-of-columns",
164
+ placement: "bottom",
165
+ title: wpdtTutorialStrings.tour0.step6.title,
166
+ content: wpdtTutorialStrings.tour0.step6.content,
167
+ backdrop: true,
168
+ backdropPadding: 5,
169
+ onShown: function () {
170
+ $('.tour-step-background').css("background-color", "rgba(248, 143, 32, 0.5)");
171
+ },
172
+ onHidden: function () {
173
+ $('.tour-step-background').css("background-color", "inherit");
174
+ }
175
+ }, {
176
+ // step 7
177
+ element: "#wdt-simple-table-number-of-rows",
178
+ placement: "bottom",
179
+ title: wpdtTutorialStrings.tour0.step7.title,
180
+ content: wpdtTutorialStrings.tour0.step7.content,
181
+ backdrop: true,
182
+ backdropPadding: 5,
183
+ onShown: function () {
184
+ $('.tour-step-background').css("background-color", "rgba(248, 143, 32, 0.5)");
185
+ },
186
+ onHidden: function () {
187
+ $('.tour-step-background').css("background-color", "inherit");
188
+ }
189
+ }, {
190
+ // step 8
191
+ element: "#wdt-simple-table-constructor",
192
+ placement: "left",
193
+ title: wpdtTutorialStrings.tour0.step8.title,
194
+ content: wpdtTutorialStrings.tour0.step8.content,
195
+ reflex: true,
196
+ backdrop: true,
197
+ redirect:false,
198
+ backdropContainer: '#wdt-tour-actions',
199
+ backdropPadding: 5,
200
+ onShown: function () {
201
+ $('.tour-step-background').css("background-color", "rgba(248, 143, 32, 0.5)");
202
+ },
203
+ onHidden: function () {
204
+ $('.tour-step-background').css("background-color", "inherit");
205
+ }
206
+ }, {
207
+ // step 9
208
+ redirect:false,
209
+ orphan: true,
210
+ element: "#edit-table-settings",
211
+ placement: "top",
212
+ title: wpdtTutorialStrings.tour0.step9.title,
213
+ content: wpdtTutorialStrings.tour0.step9.content,
214
+
215
+ }, {
216
+ // step 10
217
+ orphan: true,
218
+ placement: "top",
219
+ title: wpdtTutorialStrings.tour0.step10.title,
220
+ content: wpdtTutorialStrings.tour0.step10.content,
221
+
222
+ }, {
223
+ // step 11
224
+ element: "#wpdt-table-editor",
225
+ placement: "top",
226
+ title: wpdtTutorialStrings.tour0.step11.title,
227
+ content: wpdtTutorialStrings.tour0.step11.content,
228
+ reflex: true,
229
+ backdrop: true,
230
+ backdropContainer: 'body',
231
+ backdropPadding: 5,
232
+ onShown: function (tour) {
233
+ $('.tour-step-background').css("background-color", "rgba(248, 143, 32, 0.5)");
234
+ $('#wpdt-table-editor').css("z-index", "1101");
235
+ },
236
+ onHidden: function () {
237
+ $('.tour-step-background').css("background-color", "inherit");
238
+ $('#wpdt-table-editor').css("z-index", "10");
239
+ }
240
+ }, {
241
+ // step 11
242
+ element: "#wpdt-cell-action-buttons",
243
+ placement: "bottom",
244
+ title: wpdtTutorialStrings.tour0.step12.title,
245
+ content: wpdtTutorialStrings.tour0.step12.content,
246
+ reflex: true,
247
+ backdrop: true,
248
+ backdropContainer: 'body',
249
+ backdropPadding: 5,
250
+ onShown: function (tour) {
251
+ $('.tour-step-background').css("background-color", "rgba(248, 143, 32, 0.5)");
252
+ },
253
+ onHidden: function () {
254
+ $('.tour-step-background').css("background-color", "inherit");
255
+ },
256
+ }, {
257
+ // step 12
258
+ element: "#wpdt-views .nav.nav-pills",
259
+ placement: "right",
260
+ title: wpdtTutorialStrings.tour0.step13.title,
261
+ content: wpdtTutorialStrings.tour0.step13.content,
262
+ reflex: true,
263
+ backdrop: true,
264
+ backdropContainer: 'body',
265
+ backdropPadding: 5,
266
+ onShown: function (tour) {
267
+ $('.tour-step-background').css("background-color", "rgba(248, 143, 32, 0.5)");
268
+ },
269
+ onHidden: function () {
270
+ $('.tour-step-background').css("background-color", "inherit");
271
+ }
272
+ }, {
273
+ // step 13
274
+ element: "#wpdt-view-container",
275
+ placement: "top",
276
+ title: wpdtTutorialStrings.tour0.step14.title,
277
+ content: wpdtTutorialStrings.tour0.step14.content,
278
+ reflex: true,
279
+ backdrop: true,
280
+ backdropContainer: 'body',
281
+ backdropPadding: 5,
282
+ onShown: function (tour) {
283
+ $('.tour-step-background').css("background-color", "rgba(248, 143, 32, 0.5)");
284
+ },
285
+ onHidden: function () {
286
+ $('.tour-step-background').css("background-color", "inherit");
287
+ }
288
+ }, {
289
+ // step 14
290
+ element: "#wdt-table-id",
291
+ placement: "bottom",
292
+ title: wpdtTutorialStrings.tour0.step15.title,
293
+ content: wpdtTutorialStrings.tour0.step15.content,
294
+ reflex: true,
295
+ backdrop: true,
296
+ backdropContainer: 'body',
297
+ backdropPadding: 5,
298
+ onShown: function (tour) {
299
+ $('.tour-step-background').css("background-color", "rgba(248, 143, 32, 0.5)");
300
+ },
301
+ onHidden: function () {
302
+ $('.tour-step-background').css("background-color", "inherit");
303
+ }
304
+ },
305
+ ],
306
+ template: function () {
307
+ var showButtons = '';
308
+ var tour0NextButtonSteps = [4, 5, 6, 7, 9, 10, 11, 12, 13, 14];
309
+ if (typeof tour0 == 'undefined' && localStorage.getItem("create-simple-table_current_step") !== null) {
310
+ window.localStorage.removeItem('create-simple-table_current_step');
311
+ window.localStorage.removeItem('create-simple-table_redirect_to');
312
+ return "<div class='popover tour'>" +
313
+ "<div class='arrow'></div>" +
314
+ "<p>" + wpdtTutorialStrings.cancel_tour + "</p>" +
315
+ "<div class='popover-navigation d-flex flex-nowrap'>" +
316
+ "<span class='popover-separator' data-role='separator'> </span>" +
317
+ "<button class='btn btn-warning float-left' data-role='end'>" + wpdtTutorialStrings.cancel_button + "</button></div></div>";
318
+ } else if (tour0.getCurrentStep() === 0) {
319
+ showButtons = "<button class='btn btn-warning float-left' data-role='end'>" + wpdtTutorialStrings.cancel_button + "</button><button class='btn btn-primary float-right' data-role='next'>" + wpdtTutorialStrings.start_button + " <i class='wpdt-icon-chevron-right m-l-5'></i></button>" + "</div></div>"
320
+ } else if (jQuery.inArray(tour0.getCurrentStep(), tour0NextButtonSteps) !== -1) {
321
+ showButtons = "<button class='btn btn-primary' data-role='next'>" + wpdtTutorialStrings.next_button + " <i class='wpdt-icon-chevron-right'></i></button>" + "<button class='btn btn-warning' data-role='end'> " + wpdtTutorialStrings.skip_button + " </button>" + "</div></div>";
322
+ } else if (tour0.getCurrentStep() === 15) {
323
+ showButtons = "<button class='btn btn-primary float-right' data-role='end'><i class='wpdt-icon-trophy m-r-5'></i> " + wpdtTutorialStrings.finish_button + " </button>" + "</div></div>";
324
+ } else {
325
+ showButtons = "<button class='btn btn-warning' data-role='end'> " + wpdtTutorialStrings.skip_button + " </button>" + "</div></div>";
326
+ }
327
+
328
+ return "<div class='popover tour'>" +
329
+ "<div class='arrow'></div>" +
330
+ "<h3 class='popover-title'></h3>" +
331
+ "<div class='popover-content'></div>" +
332
+ "<div class='popover-navigation d-flex flex-nowrap'>" +
333
+ "<span class='popover-separator' data-role='separator'> </span>" +
334
+ showButtons;
335
+
336
+ },
337
+ onStart: function () {
338
+ $demo0.addClass("disabled");
339
+ $demo1.addClass("disabled");
340
+ $demo2.addClass("disabled");
341
+ },
342
+ onEnd: function () {
343
+ window.localStorage.removeItem('create-simple-table_current_step');
344
+ window.localStorage.removeItem('create-simple-table_redirect_to');
345
+ $demo0.removeClass("disabled");
346
+ $demo1.removeClass("disabled");
347
+ $demo2.removeClass("disabled");
348
+ $('.wdt-constructor-type-selecter-block .card:not([data-value="simple"])').removeClass('disabled');
349
+ }
350
+ }).init();
351
 
352
  tour1 = new Tour({
353
  name: "create-table-data-source",
375
  }, {
376
  // step 2
377
  path: document.location.pathname + "?page=wpdatatables-constructor",
378
+ element: ".wdt-first-row .wdt-constructor-type-selecter-block:nth-child(2) .card",
379
+ placement: "left",
380
  title: wpdtTutorialStrings.tour1.step2.title,
381
  content: wpdtTutorialStrings.tour1.step2.content,
382
  reflex: true,
580
 
581
  },
582
  onStart: function () {
583
+ $demo0.addClass("disabled");
584
  $demo1.addClass("disabled");
585
  $demo2.addClass("disabled");
586
  },
587
  onEnd: function () {
588
  window.localStorage.removeItem('create-table-data-source_current_step');
589
  window.localStorage.removeItem('create-table-data-source_redirect_to');
590
+ $demo0.removeClass("disabled");
591
  $demo1.removeClass("disabled");
592
  $demo2.removeClass("disabled");
593
  $('.wdt-constructor-type-selecter-block .card:not([data-value="source"])').removeClass('disabled');
1106
 
1107
  },
1108
  onStart: function () {
1109
+ $demo0.addClass("disabled");
1110
  $demo1.addClass("disabled");
1111
  $demo2.addClass("disabled");
1112
  },
1113
  onEnd: function () {
1114
  window.localStorage.removeItem('create-chart_current_step');
1115
  window.localStorage.removeItem('create-chart_redirect_to');
1116
+ $demo0.removeClass("disabled");
1117
  $demo1.removeClass("disabled");
1118
  $demo2.removeClass("disabled");
1119
  }
1120
  }).init();
1121
 
1122
+ $(document).on("click", "#wdt-tutorial-simple-table", function (e) {
1123
+ e.preventDefault();
1124
+ if ($(this).hasClass("disabled")) {
1125
+ return;
1126
+ }
1127
+ tour0.restart();
1128
+ });
1129
+
1130
  $(document).on("click", "#wdt-tutorial-data-source", function (e) {
1131
  e.preventDefault();
1132
  if ($(this).hasClass("disabled")) {
1148
  window.location.href.includes('wpdatatables-chart-wizard')) &&
1149
  (localStorage.getItem("create-table-data-source_redirect_to") !== null ||
1150
  localStorage.getItem("create-table-data-source_current_step") !== null ||
1151
+ localStorage.getItem("create-simple-table_current_step") !== null ||
1152
+ localStorage.getItem("create-simple-table_redirect_to") !== null ||
1153
  localStorage.getItem("create-chart_redirect_to") !== null ||
1154
  localStorage.getItem("create-chart_current_step") !== null)){
1155
  window.localStorage.removeItem('create-table-data-source_current_step');
1156
  window.localStorage.removeItem('create-table-data-source_redirect_to');
1157
+ window.localStorage.removeItem('create-simple-table_current_step');
1158
+ window.localStorage.removeItem('create-simple-table_redirect_to');
1159
  window.localStorage.removeItem('create-chart_current_step');
1160
  window.localStorage.removeItem('create-chart_redirect_to');
1161
  }
assets/js/color-pickr/pickr.es5.min.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /*! Pickr 1.7.1 MIT | https://github.com/Simonwep/pickr */
2
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Pickr=e():t.Pickr=e()}(window,(function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=145)}([function(t,e,r){var n=r(3),o=r(15).f,i=r(12),a=r(17),c=r(47),u=r(81),s=r(85);t.exports=function(t,e){var r,l,f,p,v,h=t.target,d=t.global,g=t.stat;if(r=d?n:g?n[h]||c(h,{}):(n[h]||{}).prototype)for(l in e){if(p=e[l],f=t.noTargetGet?(v=o(r,l))&&v.value:r[l],!s(d?l:h+(g?".":"#")+l,t.forced)&&void 0!==f){if(typeof p==typeof f)continue;u(p,f)}(t.sham||f&&f.sham)&&i(p,"sham",!0),a(r,l,p,t)}}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,r){var n=r(3),o=r(48),i=r(4),a=r(49),c=r(54),u=r(86),s=o("wks"),l=n.Symbol,f=u?l:l&&l.withoutSetter||a;t.exports=function(t){return i(s,t)||(c&&i(l,t)?s[t]=l[t]:s[t]=f("Symbol."+t)),s[t]}},function(t,e,r){(function(e){var r=function(t){return t&&t.Math==Math&&t};t.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof e&&e)||Function("return this")()}).call(this,r(111))},function(t,e){var r={}.hasOwnProperty;t.exports=function(t,e){return r.call(t,e)}},function(t,e,r){var n=r(1);t.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,e,r){var n=r(7);t.exports=function(t){if(!n(t))throw TypeError(String(t)+" is not an object");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,r){var n=r(18),o=Math.min;t.exports=function(t){return t>0?o(n(t),9007199254740991):0}},function(t,e,r){var n=r(5),o=r(77),i=r(6),a=r(22),c=Object.defineProperty;e.f=n?c:function(t,e,r){if(i(t),e=a(e,!0),i(r),o)try{return c(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},function(t,e,r){var n=r(21),o=r(11);t.exports=function(t){return n(o(t))}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,r){var n=r(5),o=r(9),i=r(20);t.exports=n?function(t,e,r){return o.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){var n=r(11);t.exports=function(t){return Object(n(t))}},function(t,e,r){var n=r(5),o=r(1),i=r(4),a=Object.defineProperty,c={},u=function(t){throw t};t.exports=function(t,e){if(i(c,t))return c[t];e||(e={});var r=[][t],s=!!i(e,"ACCESSORS")&&e.ACCESSORS,l=i(e,0)?e[0]:u,f=i(e,1)?e[1]:void 0;return c[t]=!!r&&!o((function(){if(s&&!n)return!0;var t={length:-1};s?a(t,1,{enumerable:!0,get:u}):t[1]=1,r.call(t,l,f)}))}},function(t,e,r){var n=r(5),o=r(46),i=r(20),a=r(10),c=r(22),u=r(4),s=r(77),l=Object.getOwnPropertyDescriptor;e.f=n?l:function(t,e){if(t=a(t),e=c(e,!0),s)try{return l(t,e)}catch(t){}if(u(t,e))return i(!o.f.call(t,e),t[e])}},function(t,e){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,e,r){var n=r(3),o=r(12),i=r(4),a=r(47),c=r(79),u=r(31),s=u.get,l=u.enforce,f=String(String).split("String");(t.exports=function(t,e,r,c){var u=!!c&&!!c.unsafe,s=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof r&&("string"!=typeof e||i(r,"name")||o(r,"name",e),l(r).source=f.join("string"==typeof e?e:"")),t!==n?(u?!p&&t[e]&&(s=!0):delete t[e],s?t[e]=r:o(t,e,r)):s?t[e]=r:a(e,r)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||c(this)}))},function(t,e){var r=Math.ceil,n=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?n:r)(t)}},function(t,e,r){var n=r(89),o=r(21),i=r(13),a=r(8),c=r(57),u=[].push,s=function(t){var e=1==t,r=2==t,s=3==t,l=4==t,f=6==t,p=5==t||f;return function(v,h,d,g){for(var y,b,m=i(v),x=o(m),S=n(h,d,3),w=a(x.length),O=0,_=g||c,A=e?_(v,w):r?_(v,0):void 0;w>O;O++)if((p||O in x)&&(b=S(y=x[O],O,m),t))if(e)A[O]=b;else if(b)switch(t){case 3:return!0;case 5:return y;case 6:return O;case 2:u.call(A,y)}else if(l)return!1;return f?-1:s||l?l:A}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6)}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){var n=r(1),o=r(16),i="".split;t.exports=n((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},function(t,e,r){var n=r(7);t.exports=function(t,e){if(!n(t))return t;var r,o;if(e&&"function"==typeof(r=t.toString)&&!n(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!n(o=r.call(t)))return o;if(!e&&"function"==typeof(r=t.toString)&&!n(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=!1},function(t,e,r){"use strict";var n=r(22),o=r(9),i=r(20);t.exports=function(t,e,r){var a=n(e);a in t?o.f(t,a,i(0,r)):t[a]=r}},function(t,e,r){var n=r(1),o=r(2),i=r(90),a=o("species");t.exports=function(t){return i>=51||!n((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},function(t,e,r){"use strict";var n=r(1);t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},function(t,e){t.exports={}},function(t,e,r){var n=r(64),o=r(17),i=r(130);n||o(Object.prototype,"toString",i,{unsafe:!0})},function(t,e,r){"use strict";var n=r(0),o=r(43);n({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(t,e,r){"use strict";var n=r(17),o=r(6),i=r(1),a=r(101),c=RegExp.prototype,u=c.toString,s=i((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),l="toString"!=u.name;(s||l)&&n(RegExp.prototype,"toString",(function(){var t=o(this),e=String(t.source),r=t.flags;return"/"+e+"/"+String(void 0===r&&t instanceof RegExp&&!("flags"in c)?a.call(t):r)}),{unsafe:!0})},function(t,e,r){var n,o,i,a=r(112),c=r(3),u=r(7),s=r(12),l=r(4),f=r(32),p=r(33),v=c.WeakMap;if(a){var h=new v,d=h.get,g=h.has,y=h.set;n=function(t,e){return y.call(h,t,e),e},o=function(t){return d.call(h,t)||{}},i=function(t){return g.call(h,t)}}else{var b=f("state");p[b]=!0,n=function(t,e){return s(t,b,e),e},o=function(t){return l(t,b)?t[b]:{}},i=function(t){return l(t,b)}}t.exports={set:n,get:o,has:i,enforce:function(t){return i(t)?o(t):n(t,{})},getterFor:function(t){return function(e){var r;if(!u(e)||(r=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}}},function(t,e,r){var n=r(48),o=r(49),i=n("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e){t.exports={}},function(t,e,r){var n=r(83),o=r(3),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(n[t])||i(o[t]):n[t]&&n[t][e]||o[t]&&o[t][e]}},function(t,e,r){var n=r(84),o=r(52).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,o)}},function(t,e,r){var n=r(16);t.exports=Array.isArray||function(t){return"Array"==n(t)}},function(t,e,r){var n,o=r(6),i=r(113),a=r(52),c=r(33),u=r(114),s=r(78),l=r(32),f=l("IE_PROTO"),p=function(){},v=function(t){return"<script>"+t+"<\/script>"},h=function(){try{n=document.domain&&new ActiveXObject("htmlfile")}catch(t){}var t,e;h=n?function(t){t.write(v("")),t.close();var e=t.parentWindow.Object;return t=null,e}(n):((e=s("iframe")).style.display="none",u.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(v("document.F=Object")),t.close(),t.F);for(var r=a.length;r--;)delete h.prototype[a[r]];return h()};c[f]=!0,t.exports=Object.create||function(t,e){var r;return null!==t?(p.prototype=o(t),r=new p,p.prototype=null,r[f]=t):r=h(),void 0===e?r:i(r,e)}},function(t,e,r){var n=r(84),o=r(52);t.exports=Object.keys||function(t){return n(t,o)}},function(t,e,r){"use strict";var n=r(0),o=r(93);n({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},function(t,e,r){"use strict";var n=r(10),o=r(62),i=r(27),a=r(31),c=r(95),u=a.set,s=a.getterFor("Array Iterator");t.exports=c(Array,"Array",(function(t,e){u(this,{type:"Array Iterator",target:n(t),index:0,kind:e})}),(function(){var t=s(this),e=t.target,r=t.kind,n=t.index++;return!e||n>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==r?{value:n,done:!1}:"values"==r?{value:e[n],done:!1}:{value:[n,e[n]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(t,e,r){"use strict";var n=r(5),o=r(3),i=r(85),a=r(17),c=r(4),u=r(16),s=r(128),l=r(22),f=r(1),p=r(37),v=r(35).f,h=r(15).f,d=r(9).f,g=r(99).trim,y=o.Number,b=y.prototype,m="Number"==u(p(b)),x=function(t){var e,r,n,o,i,a,c,u,s=l(t,!1);if("string"==typeof s&&s.length>2)if(43===(e=(s=g(s)).charCodeAt(0))||45===e){if(88===(r=s.charCodeAt(2))||120===r)return NaN}else if(48===e){switch(s.charCodeAt(1)){case 66:case 98:n=2,o=49;break;case 79:case 111:n=8,o=55;break;default:return+s}for(a=(i=s.slice(2)).length,c=0;c<a;c++)if((u=i.charCodeAt(c))<48||u>o)return NaN;return parseInt(i,n)}return+s};if(i("Number",!y(" 0o1")||!y("0b1")||y("+0x1"))){for(var S,w=function(t){var e=arguments.length<1?0:t,r=this;return r instanceof w&&(m?f((function(){b.valueOf.call(r)})):"Number"!=u(r))?s(new y(x(e)),r,w):x(e)},O=n?v(y):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),_=0;O.length>_;_++)c(y,S=O[_])&&!c(w,S)&&d(w,S,h(y,S));w.prototype=b,b.constructor=w,a(o,"Number",w)}},function(t,e,r){var n=r(0),o=r(13),i=r(38);n({target:"Object",stat:!0,forced:r(1)((function(){i(1)}))},{keys:function(t){return i(o(t))}})},function(t,e,r){"use strict";var n,o,i=r(101),a=r(131),c=RegExp.prototype.exec,u=String.prototype.replace,s=c,l=(n=/a/,o=/b*/g,c.call(n,"a"),c.call(o,"a"),0!==n.lastIndex||0!==o.lastIndex),f=a.UNSUPPORTED_Y||a.BROKEN_CARET,p=void 0!==/()??/.exec("")[1];(l||p||f)&&(s=function(t){var e,r,n,o,a=this,s=f&&a.sticky,v=i.call(a),h=a.source,d=0,g=t;return s&&(-1===(v=v.replace("y","")).indexOf("g")&&(v+="g"),g=String(t).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==t[a.lastIndex-1])&&(h="(?: "+h+")",g=" "+g,d++),r=new RegExp("^(?:"+h+")",v)),p&&(r=new RegExp("^"+h+"$(?!\\s)",v)),l&&(e=a.lastIndex),n=c.call(s?r:a,g),s?n?(n.input=n.input.slice(d),n[0]=n[0].slice(d),n.index=a.lastIndex,a.lastIndex+=n[0].length):a.lastIndex=0:l&&n&&(a.lastIndex=a.global?n.index+n[0].length:e),p&&n&&n.length>1&&u.call(n[0],r,(function(){for(o=1;o<arguments.length-2;o++)void 0===arguments[o]&&(n[o]=void 0)})),n}),t.exports=s},function(t,e,r){var n=r(3),o=r(106),i=r(93),a=r(12);for(var c in o){var u=n[c],s=u&&u.prototype;if(s&&s.forEach!==i)try{a(s,"forEach",i)}catch(t){s.forEach=i}}},function(t,e,r){"use strict";var n=r(0),o=r(3),i=r(34),a=r(23),c=r(5),u=r(54),s=r(86),l=r(1),f=r(4),p=r(36),v=r(7),h=r(6),d=r(13),g=r(10),y=r(22),b=r(20),m=r(37),x=r(38),S=r(35),w=r(115),O=r(53),_=r(15),A=r(9),E=r(46),j=r(12),C=r(17),P=r(48),k=r(32),I=r(33),R=r(49),T=r(2),L=r(87),N=r(88),F=r(55),M=r(31),D=r(19).forEach,B=k("hidden"),U=T("toPrimitive"),H=M.set,$=M.getterFor("Symbol"),V=Object.prototype,G=o.Symbol,W=i("JSON","stringify"),z=_.f,X=A.f,Y=w.f,K=E.f,q=P("symbols"),J=P("op-symbols"),Q=P("string-to-symbol-registry"),Z=P("symbol-to-string-registry"),tt=P("wks"),et=o.QObject,rt=!et||!et.prototype||!et.prototype.findChild,nt=c&&l((function(){return 7!=m(X({},"a",{get:function(){return X(this,"a",{value:7}).a}})).a}))?function(t,e,r){var n=z(V,e);n&&delete V[e],X(t,e,r),n&&t!==V&&X(V,e,n)}:X,ot=function(t,e){var r=q[t]=m(G.prototype);return H(r,{type:"Symbol",tag:t,description:e}),c||(r.description=e),r},it=s?function(t){return"symbol"==typeof t}:function(t){return Object(t)instanceof G},at=function(t,e,r){t===V&&at(J,e,r),h(t);var n=y(e,!0);return h(r),f(q,n)?(r.enumerable?(f(t,B)&&t[B][n]&&(t[B][n]=!1),r=m(r,{enumerable:b(0,!1)})):(f(t,B)||X(t,B,b(1,{})),t[B][n]=!0),nt(t,n,r)):X(t,n,r)},ct=function(t,e){h(t);var r=g(e),n=x(r).concat(ft(r));return D(n,(function(e){c&&!ut.call(r,e)||at(t,e,r[e])})),t},ut=function(t){var e=y(t,!0),r=K.call(this,e);return!(this===V&&f(q,e)&&!f(J,e))&&(!(r||!f(this,e)||!f(q,e)||f(this,B)&&this[B][e])||r)},st=function(t,e){var r=g(t),n=y(e,!0);if(r!==V||!f(q,n)||f(J,n)){var o=z(r,n);return!o||!f(q,n)||f(r,B)&&r[B][n]||(o.enumerable=!0),o}},lt=function(t){var e=Y(g(t)),r=[];return D(e,(function(t){f(q,t)||f(I,t)||r.push(t)})),r},ft=function(t){var e=t===V,r=Y(e?J:g(t)),n=[];return D(r,(function(t){!f(q,t)||e&&!f(V,t)||n.push(q[t])})),n};(u||(C((G=function(){if(this instanceof G)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,e=R(t),r=function(t){this===V&&r.call(J,t),f(this,B)&&f(this[B],e)&&(this[B][e]=!1),nt(this,e,b(1,t))};return c&&rt&&nt(V,e,{configurable:!0,set:r}),ot(e,t)}).prototype,"toString",(function(){return $(this).tag})),C(G,"withoutSetter",(function(t){return ot(R(t),t)})),E.f=ut,A.f=at,_.f=st,S.f=w.f=lt,O.f=ft,L.f=function(t){return ot(T(t),t)},c&&(X(G.prototype,"description",{configurable:!0,get:function(){return $(this).description}}),a||C(V,"propertyIsEnumerable",ut,{unsafe:!0}))),n({global:!0,wrap:!0,forced:!u,sham:!u},{Symbol:G}),D(x(tt),(function(t){N(t)})),n({target:"Symbol",stat:!0,forced:!u},{for:function(t){var e=String(t);if(f(Q,e))return Q[e];var r=G(e);return Q[e]=r,Z[r]=e,r},keyFor:function(t){if(!it(t))throw TypeError(t+" is not a symbol");if(f(Z,t))return Z[t]},useSetter:function(){rt=!0},useSimple:function(){rt=!1}}),n({target:"Object",stat:!0,forced:!u,sham:!c},{create:function(t,e){return void 0===e?m(t):ct(m(t),e)},defineProperty:at,defineProperties:ct,getOwnPropertyDescriptor:st}),n({target:"Object",stat:!0,forced:!u},{getOwnPropertyNames:lt,getOwnPropertySymbols:ft}),n({target:"Object",stat:!0,forced:l((function(){O.f(1)}))},{getOwnPropertySymbols:function(t){return O.f(d(t))}}),W)&&n({target:"JSON",stat:!0,forced:!u||l((function(){var t=G();return"[null]"!=W([t])||"{}"!=W({a:t})||"{}"!=W(Object(t))}))},{stringify:function(t,e,r){for(var n,o=[t],i=1;arguments.length>i;)o.push(arguments[i++]);if(n=e,(v(e)||void 0!==t)&&!it(t))return p(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!it(e))return e}),o[1]=e,W.apply(null,o)}});G.prototype[U]||j(G.prototype,U,G.prototype.valueOf),F(G,"Symbol"),I[B]=!0},function(t,e,r){"use strict";var n={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!n.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:n},function(t,e,r){var n=r(3),o=r(12);t.exports=function(t,e){try{o(n,t,e)}catch(r){n[t]=e}return e}},function(t,e,r){var n=r(23),o=r(80);(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.6.5",mode:n?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(t,e){var r=0,n=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++r+n).toString(36)}},function(t,e,r){var n=r(10),o=r(8),i=r(51),a=function(t){return function(e,r,a){var c,u=n(e),s=o(u.length),l=i(a,s);if(t&&r!=r){for(;s>l;)if((c=u[l++])!=c)return!0}else for(;s>l;l++)if((t||l in u)&&u[l]===r)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,e,r){var n=r(18),o=Math.max,i=Math.min;t.exports=function(t,e){var r=n(t);return r<0?o(r+e,0):i(r,e)}},function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,r){var n=r(1);t.exports=!!Object.getOwnPropertySymbols&&!n((function(){return!String(Symbol())}))},function(t,e,r){var n=r(9).f,o=r(4),i=r(2)("toStringTag");t.exports=function(t,e,r){t&&!o(t=r?t:t.prototype,i)&&n(t,i,{configurable:!0,value:e})}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},function(t,e,r){var n=r(7),o=r(36),i=r(2)("species");t.exports=function(t,e){var r;return o(t)&&("function"!=typeof(r=t.constructor)||r!==Array&&!o(r.prototype)?n(r)&&null===(r=r[i])&&(r=void 0):r=void 0),new(void 0===r?Array:r)(0===e?0:e)}},function(t,e,r){"use strict";var n=r(0),o=r(5),i=r(3),a=r(4),c=r(7),u=r(9).f,s=r(81),l=i.Symbol;if(o&&"function"==typeof l&&(!("description"in l.prototype)||void 0!==l().description)){var f={},p=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof p?new l(t):void 0===t?l():l(t);return""===t&&(f[e]=!0),e};s(p,l);var v=p.prototype=l.prototype;v.constructor=p;var h=v.toString,d="Symbol(test)"==String(l("test")),g=/^Symbol\((.*)\)[^)]+$/;u(v,"description",{configurable:!0,get:function(){var t=c(this)?this.valueOf():this,e=h.call(t);if(a(f,t))return"";var r=d?e.slice(7,-1):e.replace(g,"$1");return""===r?void 0:r}}),n({global:!0,forced:!0},{Symbol:p})}},function(t,e,r){r(88)("iterator")},function(t,e,r){"use strict";var n=r(0),o=r(1),i=r(36),a=r(7),c=r(13),u=r(8),s=r(24),l=r(57),f=r(25),p=r(2),v=r(90),h=p("isConcatSpreadable"),d=v>=51||!o((function(){var t=[];return t[h]=!1,t.concat()[0]!==t})),g=f("concat"),y=function(t){if(!a(t))return!1;var e=t[h];return void 0!==e?!!e:i(t)};n({target:"Array",proto:!0,forced:!d||!g},{concat:function(t){var e,r,n,o,i,a=c(this),f=l(a,0),p=0;for(e=-1,n=arguments.length;e<n;e++)if(i=-1===e?a:arguments[e],y(i)){if(p+(o=u(i.length))>9007199254740991)throw TypeError("Maximum allowed index exceeded");for(r=0;r<o;r++,p++)r in i&&s(f,p,i[r])}else{if(p>=9007199254740991)throw TypeError("Maximum allowed index exceeded");s(f,p++,i)}return f.length=p,f}})},function(t,e,r){"use strict";var n=r(0),o=r(19).filter,i=r(25),a=r(14),c=i("filter"),u=a("filter");n({target:"Array",proto:!0,forced:!c||!u},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,r){var n=r(2),o=r(37),i=r(9),a=n("unscopables"),c=Array.prototype;null==c[a]&&i.f(c,a,{configurable:!0,value:o(null)}),t.exports=function(t){c[a][t]=!0}},function(t,e,r){var n=r(0),o=r(116);n({target:"Array",stat:!0,forced:!r(120)((function(t){Array.from(t)}))},{from:o})},function(t,e,r){var n={};n[r(2)("toStringTag")]="z",t.exports="[object z]"===String(n)},function(t,e,r){"use strict";var n=r(0),o=r(7),i=r(36),a=r(51),c=r(8),u=r(10),s=r(24),l=r(2),f=r(25),p=r(14),v=f("slice"),h=p("slice",{ACCESSORS:!0,0:0,1:2}),d=l("species"),g=[].slice,y=Math.max;n({target:"Array",proto:!0,forced:!v||!h},{slice:function(t,e){var r,n,l,f=u(this),p=c(f.length),v=a(t,p),h=a(void 0===e?p:e,p);if(i(f)&&("function"!=typeof(r=f.constructor)||r!==Array&&!i(r.prototype)?o(r)&&null===(r=r[d])&&(r=void 0):r=void 0,r===Array||void 0===r))return g.call(f,v,h);for(n=new(void 0===r?Array:r)(y(h-v,0)),l=0;v<h;v++,l++)v in f&&s(n,l,f[v]);return n.length=l,n}})},function(t,e,r){var n=r(5),o=r(9).f,i=Function.prototype,a=i.toString,c=/^\s*function ([^ (]*)/;n&&!("name"in i)&&o(i,"name",{configurable:!0,get:function(){try{return a.call(this).match(c)[1]}catch(t){return""}}})},function(t,e,r){var n=r(0),o=r(129);n({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},function(t,e,r){var n=r(0),o=r(1),i=r(10),a=r(15).f,c=r(5),u=o((function(){a(1)}));n({target:"Object",stat:!0,forced:!c||u,sham:!c},{getOwnPropertyDescriptor:function(t,e){return a(i(t),e)}})},function(t,e,r){var n=r(0),o=r(5),i=r(82),a=r(10),c=r(15),u=r(24);n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){for(var e,r,n=a(t),o=c.f,s=i(n),l={},f=0;s.length>f;)void 0!==(r=o(n,e=s[f++]))&&u(l,e,r);return l}})},function(t,e,r){"use strict";var n=r(102).charAt,o=r(31),i=r(95),a=o.set,c=o.getterFor("String Iterator");i(String,"String",(function(t){a(this,{type:"String Iterator",string:String(t),index:0})}),(function(){var t,e=c(this),r=e.string,o=e.index;return o>=r.length?{value:void 0,done:!0}:(t=n(r,o),e.index+=t.length,{value:t,done:!1})}))},function(t,e,r){"use strict";r(29);var n=r(17),o=r(1),i=r(2),a=r(43),c=r(12),u=i("species"),s=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")})),l="$0"==="a".replace(/./,"$0"),f=i("replace"),p=!!/./[f]&&""===/./[f]("a","$0"),v=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r="ab".split(t);return 2!==r.length||"a"!==r[0]||"b"!==r[1]}));t.exports=function(t,e,r,f){var h=i(t),d=!o((function(){var e={};return e[h]=function(){return 7},7!=""[t](e)})),g=d&&!o((function(){var e=!1,r=/a/;return"split"===t&&((r={}).constructor={},r.constructor[u]=function(){return r},r.flags="",r[h]=/./[h]),r.exec=function(){return e=!0,null},r[h](""),!e}));if(!d||!g||"replace"===t&&(!s||!l||p)||"split"===t&&!v){var y=/./[h],b=r(h,""[t],(function(t,e,r,n,o){return e.exec===a?d&&!o?{done:!0,value:y.call(e,r,n)}:{done:!0,value:t.call(r,e,n)}:{done:!1}}),{REPLACE_KEEPS_$0:l,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),m=b[0],x=b[1];n(String.prototype,t,m),n(RegExp.prototype,h,2==e?function(t,e){return x.call(t,this,e)}:function(t){return x.call(t,this)})}f&&c(RegExp.prototype[h],"sham",!0)}},function(t,e,r){"use strict";var n=r(102).charAt;t.exports=function(t,e,r){return e+(r?n(t,e).length:1)}},function(t,e,r){var n=r(16),o=r(43);t.exports=function(t,e){var r=t.exec;if("function"==typeof r){var i=r.call(t,e);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==n(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},function(t,e,r){"use strict";var n=r(18),o=r(11);t.exports="".repeat||function(t){var e=String(o(this)),r="",i=n(t);if(i<0||i==1/0)throw RangeError("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(r+=e);return r}},function(t,e,r){var n=r(3),o=r(106),i=r(40),a=r(12),c=r(2),u=c("iterator"),s=c("toStringTag"),l=i.values;for(var f in o){var p=n[f],v=p&&p.prototype;if(v){if(v[u]!==l)try{a(v,u,l)}catch(t){v[u]=l}if(v[s]||a(v,s,f),o[f])for(var h in i)if(v[h]!==i[h])try{a(v,h,i[h])}catch(t){v[h]=i[h]}}}},function(t,e,r){"use strict";var n=r(71),o=r(105),i=r(6),a=r(11),c=r(138),u=r(72),s=r(8),l=r(73),f=r(43),p=r(1),v=[].push,h=Math.min,d=!p((function(){return!RegExp(4294967295,"y")}));n("split",2,(function(t,e,r){var n;return n="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,r){var n=String(a(this)),i=void 0===r?4294967295:r>>>0;if(0===i)return[];if(void 0===t)return[n];if(!o(t))return e.call(n,t,i);for(var c,u,s,l=[],p=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),h=0,d=new RegExp(t.source,p+"g");(c=f.call(d,n))&&!((u=d.lastIndex)>h&&(l.push(n.slice(h,c.index)),c.length>1&&c.index<n.length&&v.apply(l,c.slice(1)),s=c[0].length,h=u,l.length>=i));)d.lastIndex===c.index&&d.lastIndex++;return h===n.length?!s&&d.test("")||l.push(""):l.push(n.slice(h)),l.length>i?l.slice(0,i):l}:"0".split(void 0,0).length?function(t,r){return void 0===t&&0===r?[]:e.call(this,t,r)}:e,[function(e,r){var o=a(this),i=null==e?void 0:e[t];return void 0!==i?i.call(e,o,r):n.call(String(o),e,r)},function(t,o){var a=r(n,t,this,o,n!==e);if(a.done)return a.value;var f=i(t),p=String(this),v=c(f,RegExp),g=f.unicode,y=(f.ignoreCase?"i":"")+(f.multiline?"m":"")+(f.unicode?"u":"")+(d?"y":"g"),b=new v(d?f:"^(?:"+f.source+")",y),m=void 0===o?4294967295:o>>>0;if(0===m)return[];if(0===p.length)return null===l(b,p)?[p]:[];for(var x=0,S=0,w=[];S<p.length;){b.lastIndex=d?S:0;var O,_=l(b,d?p:p.slice(S));if(null===_||(O=h(s(b.lastIndex+(d?0:S)),p.length))===x)S=u(p,S,g);else{if(w.push(p.slice(x,S)),w.length===m)return w;for(var A=1;A<=_.length-1;A++)if(w.push(_[A]),w.length===m)return w;S=x=O}}return w.push(p.slice(x)),w}]}),!d)},function(t,e,r){var n=r(5),o=r(1),i=r(78);t.exports=!n&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,e,r){var n=r(3),o=r(7),i=n.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},function(t,e,r){var n=r(80),o=Function.toString;"function"!=typeof n.inspectSource&&(n.inspectSource=function(t){return o.call(t)}),t.exports=n.inspectSource},function(t,e,r){var n=r(3),o=r(47),i=n["__core-js_shared__"]||o("__core-js_shared__",{});t.exports=i},function(t,e,r){var n=r(4),o=r(82),i=r(15),a=r(9);t.exports=function(t,e){for(var r=o(e),c=a.f,u=i.f,s=0;s<r.length;s++){var l=r[s];n(t,l)||c(t,l,u(e,l))}}},function(t,e,r){var n=r(34),o=r(35),i=r(53),a=r(6);t.exports=n("Reflect","ownKeys")||function(t){var e=o.f(a(t)),r=i.f;return r?e.concat(r(t)):e}},function(t,e,r){var n=r(3);t.exports=n},function(t,e,r){var n=r(4),o=r(10),i=r(50).indexOf,a=r(33);t.exports=function(t,e){var r,c=o(t),u=0,s=[];for(r in c)!n(a,r)&&n(c,r)&&s.push(r);for(;e.length>u;)n(c,r=e[u++])&&(~i(s,r)||s.push(r));return s}},function(t,e,r){var n=r(1),o=/#|\.prototype\./,i=function(t,e){var r=c[a(t)];return r==s||r!=u&&("function"==typeof e?n(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=i.data={},u=i.NATIVE="N",s=i.POLYFILL="P";t.exports=i},function(t,e,r){var n=r(54);t.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,e,r){var n=r(2);e.f=n},function(t,e,r){var n=r(83),o=r(4),i=r(87),a=r(9).f;t.exports=function(t){var e=n.Symbol||(n.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},function(t,e,r){var n=r(56);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 0:return function(){return t.call(e)};case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,o){return t.call(e,r,n,o)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n,o,i=r(3),a=r(91),c=i.process,u=c&&c.versions,s=u&&u.v8;s?o=(n=s.split("."))[0]+n[1]:a&&(!(n=a.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/))&&(o=n[1]),t.exports=o&&+o},function(t,e,r){var n=r(34);t.exports=n("navigator","userAgent")||""},function(t,e,r){"use strict";var n=r(0),o=r(19).find,i=r(62),a=r(14),c=!0,u=a("find");"find"in[]&&Array(1).find((function(){c=!1})),n({target:"Array",proto:!0,forced:c||!u},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("find")},function(t,e,r){"use strict";var n=r(19).forEach,o=r(26),i=r(14),a=o("forEach"),c=i("forEach");t.exports=a&&c?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},function(t,e,r){var n=r(64),o=r(16),i=r(2)("toStringTag"),a="Arguments"==o(function(){return arguments}());t.exports=n?o:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),i))?r:a?o(e):"Object"==(n=o(e))&&"function"==typeof e.callee?"Arguments":n}},function(t,e,r){"use strict";var n=r(0),o=r(123),i=r(97),a=r(98),c=r(55),u=r(12),s=r(17),l=r(2),f=r(23),p=r(27),v=r(96),h=v.IteratorPrototype,d=v.BUGGY_SAFARI_ITERATORS,g=l("iterator"),y=function(){return this};t.exports=function(t,e,r,l,v,b,m){o(r,e,l);var x,S,w,O=function(t){if(t===v&&C)return C;if(!d&&t in E)return E[t];switch(t){case"keys":case"values":case"entries":return function(){return new r(this,t)}}return function(){return new r(this)}},_=e+" Iterator",A=!1,E=t.prototype,j=E[g]||E["@@iterator"]||v&&E[v],C=!d&&j||O(v),P="Array"==e&&E.entries||j;if(P&&(x=i(P.call(new t)),h!==Object.prototype&&x.next&&(f||i(x)===h||(a?a(x,h):"function"!=typeof x[g]&&u(x,g,y)),c(x,_,!0,!0),f&&(p[_]=y))),"values"==v&&j&&"values"!==j.name&&(A=!0,C=function(){return j.call(this)}),f&&!m||E[g]===C||u(E,g,C),p[e]=C,v)if(S={values:O("values"),keys:b?C:O("keys"),entries:O("entries")},m)for(w in S)(d||A||!(w in E))&&s(E,w,S[w]);else n({target:e,proto:!0,forced:d||A},S);return S}},function(t,e,r){"use strict";var n,o,i,a=r(97),c=r(12),u=r(4),s=r(2),l=r(23),f=s("iterator"),p=!1;[].keys&&("next"in(i=[].keys())?(o=a(a(i)))!==Object.prototype&&(n=o):p=!0),null==n&&(n={}),l||u(n,f)||c(n,f,(function(){return this})),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:p}},function(t,e,r){var n=r(4),o=r(13),i=r(32),a=r(124),c=i("IE_PROTO"),u=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=o(t),n(t,c)?t[c]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},function(t,e,r){var n=r(6),o=r(125);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(r,[]),e=r instanceof Array}catch(t){}return function(r,i){return n(r),o(i),e?t.call(r,i):r.__proto__=i,r}}():void 0)},function(t,e,r){var n=r(11),o="["+r(100)+"]",i=RegExp("^"+o+o+"*"),a=RegExp(o+o+"*$"),c=function(t){return function(e){var r=String(n(e));return 1&t&&(r=r.replace(i,"")),2&t&&(r=r.replace(a,"")),r}};t.exports={start:c(1),end:c(2),trim:c(3)}},function(t,e){t.exports="\t\n\v\f\r                \u2028\u2029\ufeff"},function(t,e,r){"use strict";var n=r(6);t.exports=function(){var t=n(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e,r){var n=r(18),o=r(11),i=function(t){return function(e,r){var i,a,c=String(o(e)),u=n(r),s=c.length;return u<0||u>=s?t?"":void 0:(i=c.charCodeAt(u))<55296||i>56319||u+1===s||(a=c.charCodeAt(u+1))<56320||a>57343?t?c.charAt(u):i:t?c.slice(u,u+2):a-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},function(t,e,r){"use strict";var n=r(71),o=r(6),i=r(8),a=r(11),c=r(72),u=r(73);n("match",1,(function(t,e,r){return[function(e){var r=a(this),n=null==e?void 0:e[t];return void 0!==n?n.call(e,r):new RegExp(e)[t](String(r))},function(t){var n=r(e,t,this);if(n.done)return n.value;var a=o(t),s=String(this);if(!a.global)return u(a,s);var l=a.unicode;a.lastIndex=0;for(var f,p=[],v=0;null!==(f=u(a,s));){var h=String(f[0]);p[v]=h,""===h&&(a.lastIndex=c(s,i(a.lastIndex),l)),v++}return 0===v?null:p}]}))},function(t,e,r){"use strict";var n,o=r(0),i=r(15).f,a=r(8),c=r(133),u=r(11),s=r(134),l=r(23),f="".startsWith,p=Math.min,v=s("startsWith");o({target:"String",proto:!0,forced:!!(l||v||(n=i(String.prototype,"startsWith"),!n||n.writable))&&!v},{startsWith:function(t){var e=String(u(this));c(t);var r=a(p(arguments.length>1?arguments[1]:void 0,e.length)),n=String(t);return f?f.call(e,n,r):e.slice(r,r+n.length)===n}})},function(t,e,r){var n=r(7),o=r(16),i=r(2)("match");t.exports=function(t){var e;return n(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(t,e,r){"use strict";var n=r(0),o=r(21),i=r(10),a=r(26),c=[].join,u=o!=Object,s=a("join",",");n({target:"Array",proto:!0,forced:u||!s},{join:function(t){return c.call(i(this),void 0===t?",":t)}})},function(t,e,r){"use strict";var n=r(0),o=r(19).map,i=r(25),a=r(14),c=i("map"),u=a("map");n({target:"Array",proto:!0,forced:!c||!u},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,r){"use strict";var n=r(0),o=r(141).start;n({target:"String",proto:!0,forced:r(142)},{padStart:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t){t.exports=JSON.parse('{"a":"1.7.1"}')},function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){var n=r(3),o=r(79),i=n.WeakMap;t.exports="function"==typeof i&&/native code/.test(o(i))},function(t,e,r){var n=r(5),o=r(9),i=r(6),a=r(38);t.exports=n?Object.defineProperties:function(t,e){i(t);for(var r,n=a(e),c=n.length,u=0;c>u;)o.f(t,r=n[u++],e[r]);return t}},function(t,e,r){var n=r(34);t.exports=n("document","documentElement")},function(t,e,r){var n=r(10),o=r(35).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return a.slice()}}(t):o(n(t))}},function(t,e,r){"use strict";var n=r(89),o=r(13),i=r(117),a=r(118),c=r(8),u=r(24),s=r(119);t.exports=function(t){var e,r,l,f,p,v,h=o(t),d="function"==typeof this?this:Array,g=arguments.length,y=g>1?arguments[1]:void 0,b=void 0!==y,m=s(h),x=0;if(b&&(y=n(y,g>2?arguments[2]:void 0,2)),null==m||d==Array&&a(m))for(r=new d(e=c(h.length));e>x;x++)v=b?y(h[x],x):h[x],u(r,x,v);else for(p=(f=m.call(h)).next,r=new d;!(l=p.call(f)).done;x++)v=b?i(f,y,[l.value,x],!0):l.value,u(r,x,v);return r.length=x,r}},function(t,e,r){var n=r(6);t.exports=function(t,e,r,o){try{return o?e(n(r)[0],r[1]):e(r)}catch(e){var i=t.return;throw void 0!==i&&n(i.call(t)),e}}},function(t,e,r){var n=r(2),o=r(27),i=n("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},function(t,e,r){var n=r(94),o=r(27),i=r(2)("iterator");t.exports=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[n(t)]}},function(t,e,r){var n=r(2)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[n]=function(){return this},Array.from(a,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var r=!1;try{var i={};i[n]=function(){return{next:function(){return{done:r=!0}}}},t(i)}catch(t){}return r}},function(t,e,r){"use strict";var n=r(0),o=r(50).includes,i=r(62);n({target:"Array",proto:!0,forced:!r(14)("indexOf",{ACCESSORS:!0,1:0})},{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("includes")},function(t,e,r){"use strict";var n=r(0),o=r(50).indexOf,i=r(26),a=r(14),c=[].indexOf,u=!!c&&1/[1].indexOf(1,-0)<0,s=i("indexOf"),l=a("indexOf",{ACCESSORS:!0,1:0});n({target:"Array",proto:!0,forced:u||!s||!l},{indexOf:function(t){return u?c.apply(this,arguments)||0:o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,r){"use strict";var n=r(96).IteratorPrototype,o=r(37),i=r(20),a=r(55),c=r(27),u=function(){return this};t.exports=function(t,e,r){var s=e+" Iterator";return t.prototype=o(n,{next:i(1,r)}),a(t,s,!1,!0),c[s]=u,t}},function(t,e,r){var n=r(1);t.exports=!n((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},function(t,e,r){var n=r(7);t.exports=function(t){if(!n(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},function(t,e,r){"use strict";var n=r(0),o=r(19).some,i=r(26),a=r(14),c=i("some"),u=a("some");n({target:"Array",proto:!0,forced:!c||!u},{some:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,r){"use strict";var n=r(0),o=r(51),i=r(18),a=r(8),c=r(13),u=r(57),s=r(24),l=r(25),f=r(14),p=l("splice"),v=f("splice",{ACCESSORS:!0,0:0,1:2}),h=Math.max,d=Math.min;n({target:"Array",proto:!0,forced:!p||!v},{splice:function(t,e){var r,n,l,f,p,v,g=c(this),y=a(g.length),b=o(t,y),m=arguments.length;if(0===m?r=n=0:1===m?(r=0,n=y-b):(r=m-2,n=d(h(i(e),0),y-b)),y+r-n>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(l=u(g,n),f=0;f<n;f++)(p=b+f)in g&&s(l,f,g[p]);if(l.length=n,r<n){for(f=b;f<y-n;f++)v=f+r,(p=f+n)in g?g[v]=g[p]:delete g[v];for(f=y;f>y-n+r;f--)delete g[f-1]}else if(r>n)for(f=y-n;f>b;f--)v=f+r-1,(p=f+n-1)in g?g[v]=g[p]:delete g[v];for(f=0;f<r;f++)g[f+b]=arguments[f+2];return g.length=y-n+r,l}})},function(t,e,r){var n=r(7),o=r(98);t.exports=function(t,e,r){var i,a;return o&&"function"==typeof(i=e.constructor)&&i!==r&&n(a=i.prototype)&&a!==r.prototype&&o(t,a),t}},function(t,e,r){"use strict";var n=r(5),o=r(1),i=r(38),a=r(53),c=r(46),u=r(13),s=r(21),l=Object.assign,f=Object.defineProperty;t.exports=!l||o((function(){if(n&&1!==l({b:1},l(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},r=Symbol();return t[r]=7,"abcdefghijklmnopqrst".split("").forEach((function(t){e[t]=t})),7!=l({},t)[r]||"abcdefghijklmnopqrst"!=i(l({},e)).join("")}))?function(t,e){for(var r=u(t),o=arguments.length,l=1,f=a.f,p=c.f;o>l;)for(var v,h=s(arguments[l++]),d=f?i(h).concat(f(h)):i(h),g=d.length,y=0;g>y;)v=d[y++],n&&!p.call(h,v)||(r[v]=h[v]);return r}:l},function(t,e,r){"use strict";var n=r(64),o=r(94);t.exports=n?{}.toString:function(){return"[object "+o(this)+"]"}},function(t,e,r){"use strict";var n=r(1);function o(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=n((function(){var t=o("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=n((function(){var t=o("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},function(t,e,r){r(0)({target:"String",proto:!0},{repeat:r(74)})},function(t,e,r){var n=r(105);t.exports=function(t){if(n(t))throw TypeError("The method doesn't accept regular expressions");return t}},function(t,e,r){var n=r(2)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(r){try{return e[n]=!1,"/./"[t](e)}catch(t){}}return!1}},function(t,e,r){"use strict";var n=r(0),o=r(136).left,i=r(26),a=r(14),c=i("reduce"),u=a("reduce",{1:0});n({target:"Array",proto:!0,forced:!c||!u},{reduce:function(t){return o(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},function(t,e,r){var n=r(56),o=r(13),i=r(21),a=r(8),c=function(t){return function(e,r,c,u){n(r);var s=o(e),l=i(s),f=a(s.length),p=t?f-1:0,v=t?-1:1;if(c<2)for(;;){if(p in l){u=l[p],p+=v;break}if(p+=v,t?p<0:f<=p)throw TypeError("Reduce of empty array with no initial value")}for(;t?p>=0:f>p;p+=v)p in l&&(u=r(u,l[p],p,s));return u}};t.exports={left:c(!1),right:c(!0)}},function(t,e,r){"use strict";var n=r(71),o=r(6),i=r(13),a=r(8),c=r(18),u=r(11),s=r(72),l=r(73),f=Math.max,p=Math.min,v=Math.floor,h=/\$([$&'`]|\d\d?|<[^>]*>)/g,d=/\$([$&'`]|\d\d?)/g;n("replace",2,(function(t,e,r,n){var g=n.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,y=n.REPLACE_KEEPS_$0,b=g?"$":"$0";return[function(r,n){var o=u(this),i=null==r?void 0:r[t];return void 0!==i?i.call(r,o,n):e.call(String(o),r,n)},function(t,n){if(!g&&y||"string"==typeof n&&-1===n.indexOf(b)){var i=r(e,t,this,n);if(i.done)return i.value}var u=o(t),v=String(this),h="function"==typeof n;h||(n=String(n));var d=u.global;if(d){var x=u.unicode;u.lastIndex=0}for(var S=[];;){var w=l(u,v);if(null===w)break;if(S.push(w),!d)break;""===String(w[0])&&(u.lastIndex=s(v,a(u.lastIndex),x))}for(var O,_="",A=0,E=0;E<S.length;E++){w=S[E];for(var j=String(w[0]),C=f(p(c(w.index),v.length),0),P=[],k=1;k<w.length;k++)P.push(void 0===(O=w[k])?O:String(O));var I=w.groups;if(h){var R=[j].concat(P,C,v);void 0!==I&&R.push(I);var T=String(n.apply(void 0,R))}else T=m(j,v,C,P,I,n);C>=A&&(_+=v.slice(A,C)+T,A=C+j.length)}return _+v.slice(A)}];function m(t,r,n,o,a,c){var u=n+t.length,s=o.length,l=d;return void 0!==a&&(a=i(a),l=h),e.call(c,l,(function(e,i){var c;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return r.slice(0,n);case"'":return r.slice(u);case"<":c=a[i.slice(1,-1)];break;default:var l=+i;if(0===l)return e;if(l>s){var f=v(l/10);return 0===f?e:f<=s?void 0===o[f-1]?i.charAt(1):o[f-1]+i.charAt(1):e}c=o[l-1]}return void 0===c?"":c}))}}))},function(t,e,r){var n=r(6),o=r(56),i=r(2)("species");t.exports=function(t,e){var r,a=n(t).constructor;return void 0===a||null==(r=n(a)[i])?e:o(r)}},function(t,e,r){"use strict";var n=r(0),o=r(99).trim;n({target:"String",proto:!0,forced:r(140)("trim")},{trim:function(){return o(this)}})},function(t,e,r){var n=r(1),o=r(100);t.exports=function(t){return n((function(){return!!o[t]()||"​…᠎"!="​…᠎"[t]()||o[t].name!==t}))}},function(t,e,r){var n=r(8),o=r(74),i=r(11),a=Math.ceil,c=function(t){return function(e,r,c){var u,s,l=String(i(e)),f=l.length,p=void 0===c?" ":String(c),v=n(r);return v<=f||""==p?l:(u=v-f,(s=o.call(p,a(u/p.length))).length>u&&(s=s.slice(0,u)),t?l+s:s+l)}};t.exports={start:c(!1),end:c(!0)}},function(t,e,r){var n=r(91);t.exports=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(n)},function(t,e,r){"use strict";var n=r(0),o=r(18),i=r(144),a=r(74),c=r(1),u=1..toFixed,s=Math.floor,l=function(t,e,r){return 0===e?r:e%2==1?l(t,e-1,r*t):l(t*t,e/2,r)};n({target:"Number",proto:!0,forced:u&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!c((function(){u.call({})}))},{toFixed:function(t){var e,r,n,c,u=i(this),f=o(t),p=[0,0,0,0,0,0],v="",h="0",d=function(t,e){for(var r=-1,n=e;++r<6;)n+=t*p[r],p[r]=n%1e7,n=s(n/1e7)},g=function(t){for(var e=6,r=0;--e>=0;)r+=p[e],p[e]=s(r/t),r=r%t*1e7},y=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==p[t]){var r=String(p[t]);e=""===e?r:e+a.call("0",7-r.length)+r}return e};if(f<0||f>20)throw RangeError("Incorrect fraction digits");if(u!=u)return"NaN";if(u<=-1e21||u>=1e21)return String(u);if(u<0&&(v="-",u=-u),u>1e-21)if(r=(e=function(t){for(var e=0,r=t;r>=4096;)e+=12,r/=4096;for(;r>=2;)e+=1,r/=2;return e}(u*l(2,69,1))-69)<0?u*l(2,-e,1):u/l(2,e,1),r*=4503599627370496,(e=52-e)>0){for(d(0,r),n=f;n>=7;)d(1e7,0),n-=7;for(d(l(10,n,1),0),n=e-1;n>=23;)g(1<<23),n-=23;g(1<<n),d(1,1),g(2),h=y()}else d(0,r),d(1<<-e,0),h=y()+a.call("0",f);return h=f>0?v+((c=h.length)<=f?"0."+a.call("0",f-c)+h:h.slice(0,c-f)+"."+h.slice(c-f)):v+h}})},function(t,e,r){var n=r(16);t.exports=function(t){if("number"!=typeof t&&"Number"!=n(t))throw TypeError("Incorrect invocation");return+t}},function(t,e,r){"use strict";r.r(e);var n={};r.r(n),r.d(n,"on",(function(){return l})),r.d(n,"off",(function(){return f})),r.d(n,"createElementFromString",(function(){return p})),r.d(n,"createFromTemplate",(function(){return v})),r.d(n,"eventPath",(function(){return h})),r.d(n,"resolveElement",(function(){return d})),r.d(n,"adjustableInputNumbers",(function(){return g}));r(45),r(58),r(59),r(60),r(61),r(92),r(39),r(63),r(121),r(122),r(40),r(65),r(126),r(127),r(66),r(41),r(67),r(68),r(69),r(42),r(28),r(29),r(30),r(70),r(103),r(132),r(104),r(44),r(75),r(135),r(137),r(76),r(139);function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?o(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function c(t){var e=0;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,e){if(!t)return;if("string"==typeof t)return u(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u(t,e)}(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(e=t[Symbol.iterator]()).next.bind(e)}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function s(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};e instanceof HTMLCollection||e instanceof NodeList?e=Array.from(e):Array.isArray(e)||(e=[e]),Array.isArray(r)||(r=[r]);for(var a,u=c(e);!(a=u()).done;)for(var s,l=a.value,f=c(r);!(s=f()).done;){var p=s.value;l[t](p,n,i({capture:!1},o))}return Array.prototype.slice.call(arguments,1)}var l=s.bind(null,"addEventListener"),f=s.bind(null,"removeEventListener");function p(t){var e=document.createElement("div");return e.innerHTML=t.trim(),e.firstElementChild}function v(t){var e=function(t,e){var r=t.getAttribute(e);return t.removeAttribute(e),r};return function t(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=e(r,":obj"),i=e(r,":ref"),a=o?n[o]={}:n;i&&(n[i]=r);for(var c=0,u=Array.from(r.children);c<u.length;c++){var s=u[c],l=e(s,":arr"),f=t(s,l?{}:a);l&&(a[l]||(a[l]=[])).push(Object.keys(f).length?f:s)}return n}(p(t))}function h(t){var e=t.path||t.composedPath&&t.composedPath();if(e)return e;var r=t.target.parentElement;for(e=[t.target,r];r=r.parentElement;)e.push(r);return e.push(document,window),e}function d(t){return t instanceof Element?t:"string"==typeof t?t.split(/>>/g).reduce((function(t,e,r,n){return t=t.querySelector(e),r<n.length-1?t.shadowRoot:t}),document):null}function g(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(t){return t};function r(r){var n=[.001,.01,.1][Number(r.shiftKey||2*r.ctrlKey)]*(r.deltaY<0?1:-1),o=0,i=t.selectionStart;t.value=t.value.replace(/[\d.]+/g,(function(t,r){return r<=i&&r+t.length>=i?(i=r,e(Number(t),n,o)):(o++,t)})),t.focus(),t.setSelectionRange(i,i),r.preventDefault(),t.dispatchEvent(new Event("input"))}l(t,"focus",(function(){return l(window,"wheel",r,{passive:!1})})),l(t,"blur",(function(){return f(window,"wheel",r)}))}var y=r(110),b=(r(107),r(108),r(109),Math.min),m=Math.max,x=Math.floor,S=Math.round;function w(t,e,r){e/=100,r/=100;var n=x(t=t/360*6),o=t-n,i=r*(1-e),a=r*(1-o*e),c=r*(1-(1-o)*e),u=n%6;return[255*[r,a,i,i,c,r][u],255*[c,r,r,a,i,i][u],255*[i,i,c,r,r,a][u]]}function O(t,e,r){return w(t,e,r).map((function(t){return S(t).toString(16).padStart(2,"0")}))}function _(t,e,r){var n=w(t,e,r),o=n[0]/255,i=n[1]/255,a=n[2]/255,c=b(1-o,1-i,1-a);return[100*(1===c?0:(1-o-c)/(1-c)),100*(1===c?0:(1-i-c)/(1-c)),100*(1===c?0:(1-a-c)/(1-c)),100*c]}function A(t,e,r){var n=(2-(e/=100))*(r/=100)/2;return 0!==n&&(e=1===n?0:n<.5?e*r/(2*n):e*r/(2-2*n)),[t,100*e,100*n]}function E(t,e,r){var n,o,i=b(t/=255,e/=255,r/=255),a=m(t,e,r),c=a-i;if(0===c)n=o=0;else{o=c/a;var u=((a-t)/6+c/2)/c,s=((a-e)/6+c/2)/c,l=((a-r)/6+c/2)/c;t===a?n=l-s:e===a?n=1/3+u-l:r===a&&(n=2/3+s-u),n<0?n+=1:n>1&&(n-=1)}return[360*n,100*o,100*a]}function j(t,e,r,n){e/=100,r/=100;var o=255*(1-b(1,(t/=100)*(1-(n/=100))+n)),i=255*(1-b(1,e*(1-n)+n)),a=255*(1-b(1,r*(1-n)+n));return[].concat(E(o,i,a))}function C(t,e,r){e/=100;var n=2*(e*=(r/=100)<.5?r:1-r)/(r+e)*100,o=100*(r+e);return[t,isNaN(n)?0:n,o]}function P(t){return E.apply(void 0,t.match(/.{2}/g).map((function(t){return parseInt(t,16)})))}function k(t){t=t.match(/^[a-zA-Z]+$/)?function(t){if("black"===t.toLowerCase())return"#000";var e=document.createElement("canvas").getContext("2d");return e.fillStyle=t,"#000"===e.fillStyle?null:e.fillStyle}(t):t;var e,r={cmyk:/^cmyk[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)/i,rgba:/^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hsla:/^((hsla)|hsl)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hsva:/^((hsva)|hsv)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hexa:/^#?(([\dA-Fa-f]{3,4})|([\dA-Fa-f]{6})|([\dA-Fa-f]{8}))$/i},n=function(t){return t.map((function(t){return/^(|\d+)\.\d+|\d+$/.test(t)?Number(t):void 0}))};t:for(var o in r)if(e=r[o].exec(t)){var i=function(t){return!!e[2]==("number"==typeof t)};switch(o){case"cmyk":var a=n(e),c=a[1],u=a[2],s=a[3],l=a[4];if(c>100||u>100||s>100||l>100)break t;return{values:j(c,u,s,l),type:o};case"rgba":var f=n(e),p=f[3],v=f[4],h=f[5],d=f[6];if(p>255||v>255||h>255||d<0||d>1||!i(d))break t;return{values:[].concat(E(p,v,h),[d]),a:d,type:o};case"hexa":var g=e[1];4!==g.length&&3!==g.length||(g=g.split("").map((function(t){return t+t})).join(""));var y=g.substring(0,6),b=g.substring(6);return b=b?parseInt(b,16)/255:void 0,{values:[].concat(P(y),[b]),a:b,type:o};case"hsla":var m=n(e),x=m[3],S=m[4],w=m[5],O=m[6];if(x>360||S>100||w>100||O<0||O>1||!i(O))break t;return{values:[].concat(C(x,S,w),[O]),a:O,type:o};case"hsva":var _=n(e),A=_[3],k=_[4],I=_[5],R=_[6];if(A>360||k>100||I>100||R<0||R>1||!i(R))break t;return{values:[A,k,I,R],a:R,type:o}}}return{values:null,type:null}}r(143);function I(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,o=function(t,e){return function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;return e(~r?t.map((function(t){return Number(t.toFixed(r))})):t)}},i={h:t,s:e,v:r,a:n,toHSVA:function(){var t=[i.h,i.s,i.v,i.a];return t.toString=o(t,(function(t){return"hsva("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+i.a+")"})),t},toHSLA:function(){var t=[].concat(A(i.h,i.s,i.v),[i.a]);return t.toString=o(t,(function(t){return"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+i.a+")"})),t},toRGBA:function(){var t=[].concat(w(i.h,i.s,i.v),[i.a]);return t.toString=o(t,(function(t){return"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+i.a+")"})),t},toCMYK:function(){var t=_(i.h,i.s,i.v);return t.toString=o(t,(function(t){return"cmyk("+t[0]+"%, "+t[1]+"%, "+t[2]+"%, "+t[3]+"%)"})),t},toHEXA:function(){var t=O(i.h,i.s,i.v),e=i.a>=1?"":Number((255*i.a).toFixed(0)).toString(16).toUpperCase().padStart(2,"0");return e&&t.push(e),t.toString=function(){return"#"+t.join("").toUpperCase()},t},clone:function(){return I(i.h,i.s,i.v,i.a)}};return i}var R=function(t){return Math.max(Math.min(t,1),0)};function T(t){var e={options:Object.assign({lock:null,onchange:function(){return 0},onstop:function(){return 0}},t),_keyboard:function(t){var r=e.options,n=t.type,o=t.key;if(document.activeElement===r.wrapper){var i=e.options.lock,a="ArrowUp"===o,c="ArrowRight"===o,u="ArrowDown"===o,s="ArrowLeft"===o;if("keydown"===n&&(a||c||u||s)){var l=0,f=0;"v"===i?l=a||c?1:-1:"h"===i?l=a||c?-1:1:(f=a?-1:u?1:0,l=s?-1:c?1:0),e.update(R(e.cache.x+.01*l),R(e.cache.y+.01*f)),t.preventDefault()}else o.startsWith("Arrow")&&(e.options.onstop(),t.preventDefault())}},_tapstart:function(t){l(document,["mouseup","touchend","touchcancel"],e._tapstop),l(document,["mousemove","touchmove"],e._tapmove),t.cancelable&&t.preventDefault(),e._tapmove(t)},_tapmove:function(t){var r=e.options,n=e.cache,o=r.lock,i=r.element,a=r.wrapper.getBoundingClientRect(),c=0,u=0;if(t){var s=t&&t.touches&&t.touches[0];c=t?(s||t).clientX:0,u=t?(s||t).clientY:0,c<a.left?c=a.left:c>a.left+a.width&&(c=a.left+a.width),u<a.top?u=a.top:u>a.top+a.height&&(u=a.top+a.height),c-=a.left,u-=a.top}else n&&(c=n.x*a.width,u=n.y*a.height);"h"!==o&&(i.style.left="calc("+c/a.width*100+"% - "+i.offsetWidth/2+"px)"),"v"!==o&&(i.style.top="calc("+u/a.height*100+"% - "+i.offsetHeight/2+"px)"),e.cache={x:c/a.width,y:u/a.height};var l=R(c/a.width),f=R(u/a.height);switch(o){case"v":return r.onchange(l);case"h":return r.onchange(f);default:return r.onchange(l,f)}},_tapstop:function(){e.options.onstop(),f(document,["mouseup","touchend","touchcancel"],e._tapstop),f(document,["mousemove","touchmove"],e._tapmove)},trigger:function(){e._tapmove()},update:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=e.options.wrapper.getBoundingClientRect(),o=n.left,i=n.top,a=n.width,c=n.height;"h"===e.options.lock&&(r=t),e._tapmove({clientX:o+a*t,clientY:i+c*r})},destroy:function(){var t=e.options,r=e._tapstart,n=e._keyboard;f(document,["keydown","keyup"],n),f([t.wrapper,t.element],"mousedown",r),f([t.wrapper,t.element],"touchstart",r,{passive:!1})}},r=e.options,n=e._tapstart,o=e._keyboard;return l([r.wrapper,r.element],"mousedown",n),l([r.wrapper,r.element],"touchstart",n,{passive:!1}),l(document,["keydown","keyup"],o),e}function L(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t=Object.assign({onchange:function(){return 0},className:"",elements:[]},t);var e=l(t.elements,"click",(function(e){t.elements.forEach((function(r){return r.classList[e.target===r?"add":"remove"](t.className)})),t.onchange(e)}));return{destroy:function(){return f.apply(n,e)}}}function N(t){var e=0;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,e){if(!t)return;if("string"==typeof t)return F(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return F(t,e)}(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(e=t[Symbol.iterator]()).next.bind(e)}function F(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function M(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function D(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?M(Object(r),!0).forEach((function(e){B(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):M(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function B(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}
3
+ /*! NanoPop 1.3.0 MIT | https://github.com/Simonwep/nanopop */var U,H=((U=function(){function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=n.positionFlipOrder,i=void 0===o?t.defaultPositionFlipOrder:o,a=n.variantFlipOrder,c=void 0===a?t.defaultVariantFlipOrder:a,u=n.container,s=void 0===u?document.documentElement.getBoundingClientRect():u,l=n.forceApplyOnFailure,f=void 0!==l&&l,p=n.margin,v=void 0===p?8:p,h=n.position,d=void 0===h?"bottom-start":h;this.o={positionFlipOrder:i,variantFlipOrder:c,reference:e,popper:r,position:d,container:s,forceApplyOnFailure:f,margin:v}}return t.prototype.update=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.o,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.o=D(D({},this.o),t),n=r.container,o=r.reference,i=r.popper,a=r.margin,c=r.position,u=r.forceApplyOnFailure,s=r.variantFlipOrder,l=r.positionFlipOrder;i.style.left="0",i.style.top="0";for(var f,p=o.getBoundingClientRect(),v=i.getBoundingClientRect(),h={t:p.top-v.height-a,b:p.bottom+a,r:p.right+a,l:p.left-v.width-a},d={vm:-v.width/2+(p.left+p.width/2),vs:p.left,ve:p.left+p.width-v.width,hs:p.bottom-p.height,he:p.bottom-v.height,hm:p.bottom-p.height/2-v.height/2},g=c.split("-"),y=g[0],b=g[1],m=void 0===b?"middle":b,x=l[y],S=s[m],w=n.top,O=n.left,_=n.bottom,A=n.right,E=N(x);!(f=E()).done;){var j=f.value,C="t"===j||"b"===j,P=h[j],k=C?["top","left"]:["left","top"],I=k[0],R=k[1],T=C?[v.height,v.width]:[v.width,v.height],L=T[0],F=T[1],M=C?[_,A]:[A,_],B=M[0],U=M[1],H=C?[w,O]:[O,w],$=H[0],V=H[1];if(e||!(P<$||P+L>B))for(var G,W=N(S);!(G=W()).done;){var z=G.value,X=d[(C?"v":"h")+z];if(e||!(X<V||X+F>U))return i.style[R]=X-v[R]+"px",i.style[I]=P-v[I]+"px",j+z}}return u?this.update(void 0,!0):null},t}()).version="1.3.0",U.defaultVariantFlipOrder={start:"sme",middle:"mse",end:"ems"},U.defaultPositionFlipOrder={top:"tbrl",right:"rltb",bottom:"btrl",left:"lrbt"},U);function $(t){var e=0;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,e){if(!t)return;if("string"==typeof t)return V(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return V(t,e)}(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(e=t[Symbol.iterator]()).next.bind(e)}function V(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function G(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function W(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var z=function(){function t(e){var r=this;W(this,"_initializingActive",!0),W(this,"_recalc",!0),W(this,"_nanopop",null),W(this,"_root",null),W(this,"_color",I()),W(this,"_lastColor",I()),W(this,"_swatchColors",[]),W(this,"_eventListener",{init:[],save:[],hide:[],show:[],clear:[],change:[],changestop:[],cancel:[],swatchselect:[]}),this.options=e=Object.assign(function(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?G(Object(r),!0).forEach((function(e){W(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):G(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}({},t.DEFAULT_OPTIONS),e);var n=e,o=n.swatches,i=n.components,a=n.theme,c=n.sliders,u=n.lockOpacity,s=n.padding;["nano","monolith"].includes(a)&&!c&&(e.sliders="h"),i.interaction||(i.interaction={});var l=i.preview,f=i.opacity,p=i.hue,v=i.palette;i.opacity=!u&&f,i.palette=v||l||f||p,this._preBuild(),this._buildComponents(),this._bindEvents(),this._finalBuild(),o&&o.length&&o.forEach((function(t){return r.addSwatch(t)}));var h=this._root,d=h.button,g=h.app;this._nanopop=new H(d,g,{margin:s}),d.setAttribute("role","button"),d.setAttribute("aria-label",this._t("btn:toggle"));var y=this;requestAnimationFrame((function t(){if(!g.offsetWidth&&g.parentElement!==e.container)return requestAnimationFrame(t);y.setColor(e.default),y._rePositioningPicker(),e.defaultRepresentation&&(y._representation=e.defaultRepresentation,y.setColorRepresentation(y._representation)),e.showAlways&&y.show(),y._initializingActive=!1,y._emit("init")}))}var e=t.prototype;return e._preBuild=function(){for(var t,e,r,n,o,i,a,c,u,s,l,f,p=this.options,h=0,g=["el","container"];h<g.length;h++){var y=g[h];p[y]=d(p[y])}this._root=(e=(t=this).options,r=e.components,n=e.useAsButton,o=e.inline,i=e.appClass,a=e.theme,c=e.lockOpacity,u=function(t){return t?"":'style="display:none" hidden'},l=v('\n <div :ref="root" class="pickr">\n\n '+(n?"":'<button type="button" :ref="button" class="pcr-button"></button>')+'\n\n <div :ref="app" class="pcr-app '+(i||"")+'" data-theme="'+a+'" '+(o?'style="position: unset"':"")+' aria-label="'+(s=function(e){return t._t(e)})("ui:dialog")+'" role="window">\n <div class="pcr-selection" '+u(r.palette)+'>\n <div :obj="preview" class="pcr-color-preview" '+u(r.preview)+'>\n <button type="button" :ref="lastColor" class="pcr-last-color" aria-label="'+s("btn:last-color")+'"></button>\n <div :ref="currentColor" class="pcr-current-color"></div>\n </div>\n\n <div :obj="palette" class="pcr-color-palette">\n <div :ref="picker" class="pcr-picker"></div>\n <div :ref="palette" class="pcr-palette" tabindex="0" aria-label="'+s("aria:palette")+'" role="listbox"></div>\n </div>\n\n <div :obj="hue" class="pcr-color-chooser" '+u(r.hue)+'>\n <div :ref="picker" class="pcr-picker"></div>\n <div :ref="slider" class="pcr-hue pcr-slider" tabindex="0" aria-label="'+s("aria:hue")+'" role="slider"></div>\n </div>\n\n <div :obj="opacity" class="pcr-color-opacity" '+u(r.opacity)+'>\n <div :ref="picker" class="pcr-picker"></div>\n <div :ref="slider" class="pcr-opacity pcr-slider" tabindex="0" aria-label="'+s("aria:opacity")+'" role="slider"></div>\n </div>\n </div>\n\n <div class="pcr-swatches '+(r.palette?"":"pcr-last")+'" :ref="swatches"></div>\n\n <div :obj="interaction" class="pcr-interaction" '+u(Object.keys(r.interaction).length)+'>\n <input :ref="result" class="pcr-result" type="text" spellcheck="false" '+u(r.interaction.input)+' aria-label="'+s("aria:input")+'">\n\n <input :arr="options" class="pcr-type" data-type="HEXA" value="'+(c?"HEX":"HEXA")+'" type="button" '+u(r.interaction.hex)+'>\n <input :arr="options" class="pcr-type" data-type="RGBA" value="'+(c?"RGB":"RGBA")+'" type="button" '+u(r.interaction.rgba)+'>\n <input :arr="options" class="pcr-type" data-type="HSLA" value="'+(c?"HSL":"HSLA")+'" type="button" '+u(r.interaction.hsla)+'>\n <input :arr="options" class="pcr-type" data-type="HSVA" value="'+(c?"HSV":"HSVA")+'" type="button" '+u(r.interaction.hsva)+'>\n <input :arr="options" class="pcr-type" data-type="CMYK" value="CMYK" type="button" '+u(r.interaction.cmyk)+'>\n\n <input :ref="save" class="pcr-save" value="'+s("btn:save")+'" type="button" '+u(r.interaction.save)+' aria-label="'+s("aria:btn:save")+'">\n <input :ref="cancel" class="pcr-cancel" value="'+s("btn:cancel")+'" type="button" '+u(r.interaction.cancel)+' aria-label="'+s("aria:btn:cancel")+'">\n <input :ref="clear" class="pcr-clear" value="'+s("btn:clear")+'" type="button" '+u(r.interaction.clear)+' aria-label="'+s("aria:btn:clear")+'">\n </div>\n </div>\n </div>\n '),(f=l.interaction).options.find((function(t){return!t.hidden&&!t.classList.add("active")})),f.type=function(){return f.options.find((function(t){return t.classList.contains("active")}))},l),p.useAsButton&&(this._root.button=p.el),p.container.appendChild(this._root.root)},e._finalBuild=function(){var t=this.options,e=this._root;if(t.container.removeChild(e.root),t.inline){var r=t.el.parentElement;t.el.nextSibling?r.insertBefore(e.app,t.el.nextSibling):r.appendChild(e.app)}else t.container.appendChild(e.app);t.useAsButton?t.inline&&t.el.remove():t.el.parentNode.replaceChild(e.root,t.el),t.disabled&&this.disable(),t.comparison||(e.button.style.transition="none",t.useAsButton||(e.preview.lastColor.style.transition="none")),this.hide()},e._buildComponents=function(){var t=this,e=this,r=this.options.components,n=(e.options.sliders||"v").repeat(2),o=n.match(/^[vh]+$/g)?n:[],i=o[0],a=o[1],c=function(){return t._color||(t._color=t._lastColor.clone())},u={palette:T({element:e._root.palette.picker,wrapper:e._root.palette.palette,onstop:function(){return e._emit("changestop",e)},onchange:function(t,n){if(r.palette){var o=c(),i=e._root,a=e.options,u=i.preview,s=u.lastColor,l=u.currentColor;e._recalc&&(o.s=100*t,o.v=100-100*n,o.v<0&&(o.v=0),e._updateOutput());var f=o.toRGBA().toString(0);this.element.style.background=f,this.wrapper.style.background="\n linear-gradient(to top, rgba(0, 0, 0, "+o.a+"), transparent),\n linear-gradient(to left, hsla("+o.h+", 100%, 50%, "+o.a+"), rgba(255, 255, 255, "+o.a+"))\n ",a.comparison?a.useAsButton||e._lastColor||(s.style.color=f):(i.button.style.color=f,i.button.classList.remove("clear"));for(var p,v=o.toHEXA().toString(),h=$(e._swatchColors);!(p=h()).done;){var d=p.value,g=d.el,y=d.color;g.classList[v===y.toHEXA().toString()?"add":"remove"]("pcr-active")}l.style.color=f}}}),hue:T({lock:"v"===a?"h":"v",element:e._root.hue.picker,wrapper:e._root.hue.slider,onstop:function(){return e._emit("changestop",e)},onchange:function(t){if(r.hue&&r.palette){var n=c();e._recalc&&(n.h=360*t),this.element.style.backgroundColor="hsl("+n.h+", 100%, 50%)",u.palette.trigger()}}}),opacity:T({lock:"v"===i?"h":"v",element:e._root.opacity.picker,wrapper:e._root.opacity.slider,onstop:function(){return e._emit("changestop",e)},onchange:function(t){if(r.opacity&&r.palette){var n=c();e._recalc&&(n.a=Math.round(100*t)/100),this.element.style.background="rgba(0, 0, 0, "+n.a+")",u.palette.trigger()}}}),selectable:L({elements:e._root.interaction.options,className:"active",onchange:function(t){e._representation=t.target.getAttribute("data-type").toUpperCase(),e._recalc&&e._updateOutput()}})};this._components=u},e._bindEvents=function(){var t=this,e=this._root,r=this.options,n=[l(e.interaction.clear,"click",(function(){return t._clearColor()})),l([e.interaction.cancel,e.preview.lastColor],"click",(function(){t._emit("cancel",t),t.setHSVA.apply(t,(t._lastColor||t._color).toHSVA().concat([!0]))})),l(e.interaction.save,"click",(function(){!t.applyColor()&&!r.showAlways&&t.hide()})),l(e.interaction.result,["keyup","input"],(function(e){t.setColor(e.target.value,!0)&&!t._initializingActive&&t._emit("change",t._color),e.stopImmediatePropagation()})),l(e.interaction.result,["focus","blur"],(function(e){t._recalc="blur"===e.type,t._recalc&&t._updateOutput()})),l([e.palette.palette,e.palette.picker,e.hue.slider,e.hue.picker,e.opacity.slider,e.opacity.picker],["mousedown","touchstart"],(function(){return t._recalc=!0}),{passive:!0})];if(!r.showAlways){var o=r.closeWithKey;n.push(l(e.button,"click",(function(){return t.isOpen()?t.hide():t.show()})),l(document,"keyup",(function(e){return t.isOpen()&&(e.key===o||e.code===o)&&t.hide()})),l(document,["touchstart","mousedown"],(function(r){t.isOpen()&&!h(r).some((function(t){return t===e.app||t===e.button}))&&t.hide()}),{capture:!0}))}if(r.adjustableNumbers){var i={rgba:[255,255,255,1],hsva:[360,100,100,1],hsla:[360,100,100,1],cmyk:[100,100,100,100]};g(e.interaction.result,(function(e,r,n){var o=i[t.getColorRepresentation().toLowerCase()];if(o){var a=o[n],c=e+(a>=100?1e3*r:r);return c<=0?0:Number((c<a?c:a).toPrecision(3))}return e}))}if(r.autoReposition&&!r.inline){var a=null,c=this;n.push(l(window,["scroll","resize"],(function(){c.isOpen()&&(r.closeOnScroll&&c.hide(),null===a?(a=setTimeout((function(){return a=null}),100),requestAnimationFrame((function t(){c._rePositioningPicker(),null!==a&&requestAnimationFrame(t)}))):(clearTimeout(a),a=setTimeout((function(){return a=null}),100)))}),{capture:!0}))}this._eventBindings=n},e._rePositioningPicker=function(){var t=this.options;if(!t.inline&&!this._nanopop.update({position:t.position,forceApplyOnFailure:!this._recalc})){var e=this._root.app,r=e.getBoundingClientRect();e.style.top=(window.innerHeight-r.height)/2+"px",e.style.left=(window.innerWidth-r.width)/2+"px"}},e._updateOutput=function(){var t=this._root,e=this._color,r=this.options;if(t.interaction.type()){var n="to"+t.interaction.type().getAttribute("data-type");t.interaction.result.value="function"==typeof e[n]?e[n]().toString(r.outputPrecision):""}!this._initializingActive&&this._recalc&&this._emit("change",e)},e._clearColor=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this._root,r=this.options;r.useAsButton||(e.button.style.color="rgba(0, 0, 0, 0.15)"),e.button.classList.add("clear"),r.showAlways||this.hide(),this._lastColor=null,this._initializingActive||t||(this._emit("save",null),this._emit("clear",this))},e._parseLocalColor=function(t){var e=k(t),r=e.values,n=e.type,o=e.a,i=this.options.lockOpacity,a=void 0!==o&&1!==o;return r&&3===r.length&&(r[3]=void 0),{values:!r||i&&a?null:r,type:n}},e._t=function(e){return this.options.i18n[e]||t.I18N_DEFAULTS[e]},e._emit=function(t){for(var e=this,r=arguments.length,n=new Array(r>1?r-1:0),o=1;o<r;o++)n[o-1]=arguments[o];this._eventListener[t].forEach((function(t){return t.apply(void 0,n.concat([e]))}))},e.on=function(t,e){return this._eventListener[t].push(e),this},e.off=function(t,e){var r=this._eventListener[t]||[],n=r.indexOf(e);return~n&&r.splice(n,1),this},e.addSwatch=function(t){var e=this,r=this._parseLocalColor(t).values;if(r){var n=this._swatchColors,o=this._root,i=I.apply(void 0,r),a=p('<button type="button" style="color: '+i.toRGBA().toString(0)+'" aria-label="'+this._t("btn:swatch")+'"/>');return o.swatches.appendChild(a),n.push({el:a,color:i}),this._eventBindings.push(l(a,"click",(function(){e.setHSVA.apply(e,i.toHSVA().concat([!0])),e._emit("swatchselect",i),e._emit("change",i)}))),!0}return!1},e.removeSwatch=function(t){var e=this._swatchColors[t];if(e){var r=e.el;return this._root.swatches.removeChild(r),this._swatchColors.splice(t,1),!0}return!1},e.applyColor=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this._root,r=e.preview,n=e.button,o=this._color.toRGBA().toString(0);return r.lastColor.style.color=o,this.options.useAsButton||(n.style.color=o),n.classList.remove("clear"),this._lastColor=this._color.clone(),this._initializingActive||t||this._emit("save",this._color),this},e.destroy=function(){var t=this;this._eventBindings.forEach((function(t){return f.apply(n,t)})),Object.keys(this._components).forEach((function(e){return t._components[e].destroy()}))},e.destroyAndRemove=function(){var t=this;this.destroy();var e=this._root,r=e.root,n=e.app;r.parentElement&&r.parentElement.removeChild(r),n.parentElement.removeChild(n),Object.keys(this).forEach((function(e){return t[e]=null}))},e.hide=function(){return this._root.app.classList.remove("visible"),this._emit("hide",this),this},e.show=function(){return this.options.disabled||(this._root.app.classList.add("visible"),this._rePositioningPicker(),this._emit("show",this)),this},e.isOpen=function(){return this._root.app.classList.contains("visible")},e.setHSVA=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:360,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],i=this._recalc;if(this._recalc=!1,t<0||t>360||e<0||e>100||r<0||r>100||n<0||n>1)return!1;this._color=I(t,e,r,n);var a=this._components,c=a.hue,u=a.opacity,s=a.palette;return c.update(t/360),u.update(n),s.update(e/100,1-r/100),o||this.applyColor(),i&&this._updateOutput(),this._recalc=i,!0},e.setColor=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(null===t)return this._clearColor(e),!0;var r=this._parseLocalColor(t),n=r.values,o=r.type;if(n){var i=o.toUpperCase(),a=this._root.interaction.options,c=a.find((function(t){return t.getAttribute("data-type")===i}));if(c&&!c.hidden)for(var u,s=$(a);!(u=s()).done;){var l=u.value;l.classList[l===c?"add":"remove"]("active")}return!!this.setHSVA.apply(this,n.concat([e]))&&this.setColorRepresentation(i)}return!1},e.setColorRepresentation=function(t){return t=t.toUpperCase(),!!this._root.interaction.options.find((function(e){return e.getAttribute("data-type").startsWith(t)&&!e.click()}))},e.getColorRepresentation=function(){return this._representation},e.getColor=function(){return this._color},e.getSelectedColor=function(){return this._lastColor},e.getRoot=function(){return this._root},e.disable=function(){return this.hide(),this.options.disabled=!0,this._root.button.classList.add("disabled"),this},e.enable=function(){return this.options.disabled=!1,this._root.button.classList.remove("disabled"),this},t}();W(z,"utils",n),W(z,"version",y.a),W(z,"I18N_DEFAULTS",{"ui:dialog":"color picker dialog","btn:toggle":"toggle color picker dialog","btn:swatch":"color swatch","btn:last-color":"use previous color","btn:save":"Save","btn:cancel":"Cancel","btn:clear":"Clear","aria:btn:save":"save and close","aria:btn:cancel":"cancel and close","aria:btn:clear":"clear and close","aria:input":"color input field","aria:palette":"color selection area","aria:hue":"hue selection slider","aria:opacity":"selection slider"}),W(z,"DEFAULT_OPTIONS",{appClass:null,theme:"classic",useAsButton:!1,padding:8,disabled:!1,comparison:!0,closeOnScroll:!1,outputPrecision:0,lockOpacity:!1,autoReposition:!0,container:"body",components:{interaction:{}},i18n:{},swatches:null,inline:!1,sliders:null,default:"#42445a",defaultRepresentation:null,position:"bottom-middle",adjustableNumbers:!0,showAlways:!1,closeWithKey:"Escape"}),W(z,"create",(function(t){return new z(t)}));e.default=z}]).default}));
4
+ //# sourceMappingURL=pickr.es5.min.js.map
assets/js/color-pickr/pickr.js ADDED
@@ -0,0 +1,910 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! Pickr 1.7.1 MIT | https://github.com/Simonwep/pickr */
2
+ !(function (t, e) {
3
+ "object" == typeof exports && "object" == typeof module ? (module.exports = e()) : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? (exports.Pickr = e()) : (t.Pickr = e());
4
+ })(window, function () {
5
+ return (function (t) {
6
+ var e = {};
7
+ function o(n) {
8
+ if (e[n]) return e[n].exports;
9
+ var r = (e[n] = { i: n, l: !1, exports: {} });
10
+ return t[n].call(r.exports, r, r.exports, o), (r.l = !0), r.exports;
11
+ }
12
+ return (
13
+ (o.m = t),
14
+ (o.c = e),
15
+ (o.d = function (t, e, n) {
16
+ o.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: n });
17
+ }),
18
+ (o.r = function (t) {
19
+ "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(t, "__esModule", { value: !0 });
20
+ }),
21
+ (o.t = function (t, e) {
22
+ if ((1 & e && (t = o(t)), 8 & e)) return t;
23
+ if (4 & e && "object" == typeof t && t && t.__esModule) return t;
24
+ var n = Object.create(null);
25
+ if ((o.r(n), Object.defineProperty(n, "default", { enumerable: !0, value: t }), 2 & e && "string" != typeof t))
26
+ for (var r in t)
27
+ o.d(
28
+ n,
29
+ r,
30
+ function (e) {
31
+ return t[e];
32
+ }.bind(null, r)
33
+ );
34
+ return n;
35
+ }),
36
+ (o.n = function (t) {
37
+ var e =
38
+ t && t.__esModule
39
+ ? function () {
40
+ return t.default;
41
+ }
42
+ : function () {
43
+ return t;
44
+ };
45
+ return o.d(e, "a", e), e;
46
+ }),
47
+ (o.o = function (t, e) {
48
+ return Object.prototype.hasOwnProperty.call(t, e);
49
+ }),
50
+ (o.p = ""),
51
+ o((o.s = 1))
52
+ );
53
+ })([
54
+ function (t) {
55
+ t.exports = JSON.parse('{"a":"1.7.1"}');
56
+ },
57
+ function (t, e, o) {
58
+ "use strict";
59
+ o.r(e);
60
+ var n = {};
61
+ function r(t, e) {
62
+ var o = Object.keys(t);
63
+ if (Object.getOwnPropertySymbols) {
64
+ var n = Object.getOwnPropertySymbols(t);
65
+ e &&
66
+ (n = n.filter(function (e) {
67
+ return Object.getOwnPropertyDescriptor(t, e).enumerable;
68
+ })),
69
+ o.push.apply(o, n);
70
+ }
71
+ return o;
72
+ }
73
+ function i(t) {
74
+ for (var e = 1; e < arguments.length; e++) {
75
+ var o = null != arguments[e] ? arguments[e] : {};
76
+ e % 2
77
+ ? r(Object(o), !0).forEach(function (e) {
78
+ s(t, e, o[e]);
79
+ })
80
+ : Object.getOwnPropertyDescriptors
81
+ ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(o))
82
+ : r(Object(o)).forEach(function (e) {
83
+ Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(o, e));
84
+ });
85
+ }
86
+ return t;
87
+ }
88
+ function s(t, e, o) {
89
+ return e in t ? Object.defineProperty(t, e, { value: o, enumerable: !0, configurable: !0, writable: !0 }) : (t[e] = o), t;
90
+ }
91
+ function c(t, e, o, n, r = {}) {
92
+ e instanceof HTMLCollection || e instanceof NodeList ? (e = Array.from(e)) : Array.isArray(e) || (e = [e]), Array.isArray(o) || (o = [o]);
93
+ for (const s of e) for (const e of o) s[t](e, n, i({ capture: !1 }, r));
94
+ return Array.prototype.slice.call(arguments, 1);
95
+ }
96
+ o.r(n),
97
+ o.d(n, "on", function () {
98
+ return a;
99
+ }),
100
+ o.d(n, "off", function () {
101
+ return l;
102
+ }),
103
+ o.d(n, "createElementFromString", function () {
104
+ return p;
105
+ }),
106
+ o.d(n, "createFromTemplate", function () {
107
+ return u;
108
+ }),
109
+ o.d(n, "eventPath", function () {
110
+ return h;
111
+ }),
112
+ o.d(n, "resolveElement", function () {
113
+ return d;
114
+ }),
115
+ o.d(n, "adjustableInputNumbers", function () {
116
+ return f;
117
+ });
118
+ const a = c.bind(null, "addEventListener"),
119
+ l = c.bind(null, "removeEventListener");
120
+ function p(t) {
121
+ const e = document.createElement("div");
122
+ return (e.innerHTML = t.trim()), e.firstElementChild;
123
+ }
124
+ function u(t) {
125
+ const e = (t, e) => {
126
+ const o = t.getAttribute(e);
127
+ return t.removeAttribute(e), o;
128
+ },
129
+ o = (t, n = {}) => {
130
+ const r = e(t, ":obj"),
131
+ i = e(t, ":ref"),
132
+ s = r ? (n[r] = {}) : n;
133
+ i && (n[i] = t);
134
+ for (const n of Array.from(t.children)) {
135
+ const t = e(n, ":arr"),
136
+ r = o(n, t ? {} : s);
137
+ t && (s[t] || (s[t] = [])).push(Object.keys(r).length ? r : n);
138
+ }
139
+ return n;
140
+ };
141
+ return o(p(t));
142
+ }
143
+ function h(t) {
144
+ let e = t.path || (t.composedPath && t.composedPath());
145
+ if (e) return e;
146
+ let o = t.target.parentElement;
147
+ for (e = [t.target, o]; (o = o.parentElement); ) e.push(o);
148
+ return e.push(document, window), e;
149
+ }
150
+ function d(t) {
151
+ return t instanceof Element ? t : "string" == typeof t ? t.split(/>>/g).reduce((t, e, o, n) => ((t = t.querySelector(e)), o < n.length - 1 ? t.shadowRoot : t), document) : null;
152
+ }
153
+ function f(t, e = (t) => t) {
154
+ function o(o) {
155
+ const n = [0.001, 0.01, 0.1][Number(o.shiftKey || 2 * o.ctrlKey)] * (o.deltaY < 0 ? 1 : -1);
156
+ let r = 0,
157
+ i = t.selectionStart;
158
+ (t.value = t.value.replace(/[\d.]+/g, (t, o) => (o <= i && o + t.length >= i ? ((i = o), e(Number(t), n, r)) : (r++, t)))), t.focus(), t.setSelectionRange(i, i), o.preventDefault(), t.dispatchEvent(new Event("input"));
159
+ }
160
+ a(t, "focus", () => a(window, "wheel", o, { passive: !1 })), a(t, "blur", () => l(window, "wheel", o));
161
+ }
162
+ var b = o(0);
163
+ const { min: v, max: m, floor: y, round: g } = Math;
164
+ function _(t, e, o) {
165
+ (e /= 100), (o /= 100);
166
+ const n = y((t = (t / 360) * 6)),
167
+ r = t - n,
168
+ i = o * (1 - e),
169
+ s = o * (1 - r * e),
170
+ c = o * (1 - (1 - r) * e),
171
+ a = n % 6;
172
+ return [255 * [o, s, i, i, c, o][a], 255 * [c, o, o, s, i, i][a], 255 * [i, i, c, o, o, s][a]];
173
+ }
174
+ function w(t, e, o) {
175
+ const n = ((2 - (e /= 100)) * (o /= 100)) / 2;
176
+ return 0 !== n && (e = 1 === n ? 0 : n < 0.5 ? (e * o) / (2 * n) : (e * o) / (2 - 2 * n)), [t, 100 * e, 100 * n];
177
+ }
178
+ function O(t, e, o) {
179
+ const n = v((t /= 255), (e /= 255), (o /= 255)),
180
+ r = m(t, e, o),
181
+ i = r - n;
182
+ let s, c;
183
+ if (0 === i) s = c = 0;
184
+ else {
185
+ c = i / r;
186
+ const n = ((r - t) / 6 + i / 2) / i,
187
+ a = ((r - e) / 6 + i / 2) / i,
188
+ l = ((r - o) / 6 + i / 2) / i;
189
+ t === r ? (s = l - a) : e === r ? (s = 1 / 3 + n - l) : o === r && (s = 2 / 3 + a - n), s < 0 ? (s += 1) : s > 1 && (s -= 1);
190
+ }
191
+ return [360 * s, 100 * c, 100 * r];
192
+ }
193
+ function A(t, e, o, n) {
194
+ return (e /= 100), (o /= 100), [...O(255 * (1 - v(1, (t /= 100) * (1 - (n /= 100)) + n)), 255 * (1 - v(1, e * (1 - n) + n)), 255 * (1 - v(1, o * (1 - n) + n)))];
195
+ }
196
+ function k(t, e, o) {
197
+ e /= 100;
198
+ const n = ((2 * (e *= (o /= 100) < 0.5 ? o : 1 - o)) / (o + e)) * 100,
199
+ r = 100 * (o + e);
200
+ return [t, isNaN(n) ? 0 : n, r];
201
+ }
202
+ function C(t) {
203
+ return O(...t.match(/.{2}/g).map((t) => parseInt(t, 16)));
204
+ }
205
+ function j(t) {
206
+ t = t.match(/^[a-zA-Z]+$/)
207
+ ? (function (t) {
208
+ if ("black" === t.toLowerCase()) return "#000";
209
+ const e = document.createElement("canvas").getContext("2d");
210
+ return (e.fillStyle = t), "#000" === e.fillStyle ? null : e.fillStyle;
211
+ })(t)
212
+ : t;
213
+ const e = {
214
+ cmyk: /^cmyk[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)/i,
215
+ rgba: /^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,
216
+ hsla: /^((hsla)|hsl)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,
217
+ hsva: /^((hsva)|hsv)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,
218
+ hexa: /^#?(([\dA-Fa-f]{3,4})|([\dA-Fa-f]{6})|([\dA-Fa-f]{8}))$/i,
219
+ },
220
+ o = (t) => t.map((t) => (/^(|\d+)\.\d+|\d+$/.test(t) ? Number(t) : void 0));
221
+ let n;
222
+ t: for (const r in e) {
223
+ if (!(n = e[r].exec(t))) continue;
224
+ const i = (t) => !!n[2] == ("number" == typeof t);
225
+ switch (r) {
226
+ case "cmyk": {
227
+ const [, t, e, i, s] = o(n);
228
+ if (t > 100 || e > 100 || i > 100 || s > 100) break t;
229
+ return { values: A(t, e, i, s), type: r };
230
+ }
231
+ case "rgba": {
232
+ const [, , , t, e, s, c] = o(n);
233
+ if (t > 255 || e > 255 || s > 255 || c < 0 || c > 1 || !i(c)) break t;
234
+ return { values: [...O(t, e, s), c], a: c, type: r };
235
+ }
236
+ case "hexa": {
237
+ let [, t] = n;
238
+ (4 !== t.length && 3 !== t.length) ||
239
+ (t = t
240
+ .split("")
241
+ .map((t) => t + t)
242
+ .join(""));
243
+ const e = t.substring(0, 6);
244
+ let o = t.substring(6);
245
+ return (o = o ? parseInt(o, 16) / 255 : void 0), { values: [...C(e), o], a: o, type: r };
246
+ }
247
+ case "hsla": {
248
+ const [, , , t, e, s, c] = o(n);
249
+ if (t > 360 || e > 100 || s > 100 || c < 0 || c > 1 || !i(c)) break t;
250
+ return { values: [...k(t, e, s), c], a: c, type: r };
251
+ }
252
+ case "hsva": {
253
+ const [, , , t, e, s, c] = o(n);
254
+ if (t > 360 || e > 100 || s > 100 || c < 0 || c > 1 || !i(c)) break t;
255
+ return { values: [t, e, s, c], a: c, type: r };
256
+ }
257
+ }
258
+ }
259
+ return { values: null, type: null };
260
+ }
261
+ function S(t = 0, e = 0, o = 0, n = 1) {
262
+ const r = (t, e) => (o = -1) => e(~o ? t.map((t) => Number(t.toFixed(o))) : t),
263
+ i = {
264
+ h: t,
265
+ s: e,
266
+ v: o,
267
+ a: n,
268
+ toHSVA() {
269
+ const t = [i.h, i.s, i.v, i.a];
270
+ return (t.toString = r(t, (t) => "hsva(".concat(t[0], ", ").concat(t[1], "%, ").concat(t[2], "%, ").concat(i.a, ")"))), t;
271
+ },
272
+ toHSLA() {
273
+ const t = [...w(i.h, i.s, i.v), i.a];
274
+ return (t.toString = r(t, (t) => "hsla(".concat(t[0], ", ").concat(t[1], "%, ").concat(t[2], "%, ").concat(i.a, ")"))), t;
275
+ },
276
+ toRGBA() {
277
+ const t = [..._(i.h, i.s, i.v), i.a];
278
+ return (t.toString = r(t, (t) => "rgba(".concat(t[0], ", ").concat(t[1], ", ").concat(t[2], ", ").concat(i.a, ")"))), t;
279
+ },
280
+ toCMYK() {
281
+ const t = (function (t, e, o) {
282
+ const n = _(t, e, o),
283
+ r = n[0] / 255,
284
+ i = n[1] / 255,
285
+ s = n[2] / 255,
286
+ c = v(1 - r, 1 - i, 1 - s);
287
+ return [100 * (1 === c ? 0 : (1 - r - c) / (1 - c)), 100 * (1 === c ? 0 : (1 - i - c) / (1 - c)), 100 * (1 === c ? 0 : (1 - s - c) / (1 - c)), 100 * c];
288
+ })(i.h, i.s, i.v);
289
+ return (t.toString = r(t, (t) => "cmyk(".concat(t[0], "%, ").concat(t[1], "%, ").concat(t[2], "%, ").concat(t[3], "%)"))), t;
290
+ },
291
+ toHEXA() {
292
+ const t = (function (t, e, o) {
293
+ return _(t, e, o).map((t) => g(t).toString(16).padStart(2, "0"));
294
+ })(i.h, i.s, i.v),
295
+ e =
296
+ i.a >= 1
297
+ ? ""
298
+ : Number((255 * i.a).toFixed(0))
299
+ .toString(16)
300
+ .toUpperCase()
301
+ .padStart(2, "0");
302
+ return e && t.push(e), (t.toString = () => "#".concat(t.join("").toUpperCase())), t;
303
+ },
304
+ clone: () => S(i.h, i.s, i.v, i.a),
305
+ };
306
+ return i;
307
+ }
308
+ const P = (t) => Math.max(Math.min(t, 1), 0);
309
+ function E(t) {
310
+ const e = {
311
+ options: Object.assign({ lock: null, onchange: () => 0, onstop: () => 0 }, t),
312
+ _keyboard(t) {
313
+ const { options: o } = e,
314
+ { type: n, key: r } = t;
315
+ if (document.activeElement === o.wrapper) {
316
+ const { lock: o } = e.options,
317
+ i = "ArrowUp" === r,
318
+ s = "ArrowRight" === r,
319
+ c = "ArrowDown" === r,
320
+ a = "ArrowLeft" === r;
321
+ if ("keydown" === n && (i || s || c || a)) {
322
+ let n = 0,
323
+ r = 0;
324
+ "v" === o ? (n = i || s ? 1 : -1) : "h" === o ? (n = i || s ? -1 : 1) : ((r = i ? -1 : c ? 1 : 0), (n = a ? -1 : s ? 1 : 0)),
325
+ e.update(P(e.cache.x + 0.01 * n), P(e.cache.y + 0.01 * r)),
326
+ t.preventDefault();
327
+ } else r.startsWith("Arrow") && (e.options.onstop(), t.preventDefault());
328
+ }
329
+ },
330
+ _tapstart(t) {
331
+ a(document, ["mouseup", "touchend", "touchcancel"], e._tapstop), a(document, ["mousemove", "touchmove"], e._tapmove), t.cancelable && t.preventDefault(), e._tapmove(t);
332
+ },
333
+ _tapmove(t) {
334
+ const { options: o, cache: n } = e,
335
+ { lock: r, element: i, wrapper: s } = o,
336
+ c = s.getBoundingClientRect();
337
+ let a = 0,
338
+ l = 0;
339
+ if (t) {
340
+ const e = t && t.touches && t.touches[0];
341
+ (a = t ? (e || t).clientX : 0),
342
+ (l = t ? (e || t).clientY : 0),
343
+ a < c.left ? (a = c.left) : a > c.left + c.width && (a = c.left + c.width),
344
+ l < c.top ? (l = c.top) : l > c.top + c.height && (l = c.top + c.height),
345
+ (a -= c.left),
346
+ (l -= c.top);
347
+ } else n && ((a = n.x * c.width), (l = n.y * c.height));
348
+ "h" !== r && (i.style.left = "calc(".concat((a / c.width) * 100, "% - ").concat(i.offsetWidth / 2, "px)")),
349
+ "v" !== r && (i.style.top = "calc(".concat((l / c.height) * 100, "% - ").concat(i.offsetHeight / 2, "px)")),
350
+ (e.cache = { x: a / c.width, y: l / c.height });
351
+ const p = P(a / c.width),
352
+ u = P(l / c.height);
353
+ switch (r) {
354
+ case "v":
355
+ return o.onchange(p);
356
+ case "h":
357
+ return o.onchange(u);
358
+ default:
359
+ return o.onchange(p, u);
360
+ }
361
+ },
362
+ _tapstop() {
363
+ e.options.onstop(), l(document, ["mouseup", "touchend", "touchcancel"], e._tapstop), l(document, ["mousemove", "touchmove"], e._tapmove);
364
+ },
365
+ trigger() {
366
+ e._tapmove();
367
+ },
368
+ update(t = 0, o = 0) {
369
+ const { left: n, top: r, width: i, height: s } = e.options.wrapper.getBoundingClientRect();
370
+ "h" === e.options.lock && (o = t), e._tapmove({ clientX: n + i * t, clientY: r + s * o });
371
+ },
372
+ destroy() {
373
+ const { options: t, _tapstart: o, _keyboard: n } = e;
374
+ l(document, ["keydown", "keyup"], n), l([t.wrapper, t.element], "mousedown", o), l([t.wrapper, t.element], "touchstart", o, { passive: !1 });
375
+ },
376
+ },
377
+ { options: o, _tapstart: n, _keyboard: r } = e;
378
+ return a([o.wrapper, o.element], "mousedown", n), a([o.wrapper, o.element], "touchstart", n, { passive: !1 }), a(document, ["keydown", "keyup"], r), e;
379
+ }
380
+ function D(t = {}) {
381
+ t = Object.assign({ onchange: () => 0, className: "", elements: [] }, t);
382
+ const e = a(t.elements, "click", (e) => {
383
+ t.elements.forEach((o) => o.classList[e.target === o ? "add" : "remove"](t.className)), t.onchange(e);
384
+ });
385
+ return { destroy: () => l(...e) };
386
+ }
387
+ function x(t, e) {
388
+ var o = Object.keys(t);
389
+ if (Object.getOwnPropertySymbols) {
390
+ var n = Object.getOwnPropertySymbols(t);
391
+ e &&
392
+ (n = n.filter(function (e) {
393
+ return Object.getOwnPropertyDescriptor(t, e).enumerable;
394
+ })),
395
+ o.push.apply(o, n);
396
+ }
397
+ return o;
398
+ }
399
+ function L(t) {
400
+ for (var e = 1; e < arguments.length; e++) {
401
+ var o = null != arguments[e] ? arguments[e] : {};
402
+ e % 2
403
+ ? x(Object(o), !0).forEach(function (e) {
404
+ B(t, e, o[e]);
405
+ })
406
+ : Object.getOwnPropertyDescriptors
407
+ ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(o))
408
+ : x(Object(o)).forEach(function (e) {
409
+ Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(o, e));
410
+ });
411
+ }
412
+ return t;
413
+ }
414
+ function B(t, e, o) {
415
+ return e in t ? Object.defineProperty(t, e, { value: o, enumerable: !0, configurable: !0, writable: !0 }) : (t[e] = o), t;
416
+ }
417
+ /*! NanoPop 1.3.0 MIT | https://github.com/Simonwep/nanopop */ let F = (() => {
418
+ class t {
419
+ constructor(
420
+ e,
421
+ o,
422
+ {
423
+ positionFlipOrder: n = t.defaultPositionFlipOrder,
424
+ variantFlipOrder: r = t.defaultVariantFlipOrder,
425
+ container: i = document.documentElement.getBoundingClientRect(),
426
+ forceApplyOnFailure: s = !1,
427
+ margin: c = 8,
428
+ position: a = "bottom-start",
429
+ } = {}
430
+ ) {
431
+ this.o = { positionFlipOrder: n, variantFlipOrder: r, reference: e, popper: o, position: a, container: i, forceApplyOnFailure: s, margin: c };
432
+ }
433
+ update(t = this.o, e = !1) {
434
+ const { container: o, reference: n, popper: r, margin: i, position: s, forceApplyOnFailure: c, variantFlipOrder: a, positionFlipOrder: l } = (this.o = L(L({}, this.o), t));
435
+ (r.style.left = "0"), (r.style.top = "0");
436
+ const p = n.getBoundingClientRect(),
437
+ u = r.getBoundingClientRect(),
438
+ h = { t: p.top - u.height - i, b: p.bottom + i, r: p.right + i, l: p.left - u.width - i },
439
+ d = { vm: -u.width / 2 + (p.left + p.width / 2), vs: p.left, ve: p.left + p.width - u.width, hs: p.bottom - p.height, he: p.bottom - u.height, hm: p.bottom - p.height / 2 - u.height / 2 },
440
+ [f, b = "middle"] = s.split("-"),
441
+ v = l[f],
442
+ m = a[b],
443
+ { top: y, left: g, bottom: _, right: w } = o;
444
+ for (const t of v) {
445
+ const o = "t" === t || "b" === t,
446
+ n = h[t],
447
+ [i, s] = o ? ["top", "left"] : ["left", "top"],
448
+ [c, a] = o ? [u.height, u.width] : [u.width, u.height],
449
+ [l, p] = o ? [_, w] : [w, _],
450
+ [f, b] = o ? [y, g] : [g, y];
451
+ if (e || !(n < f || n + c > l))
452
+ for (const c of m) {
453
+ const l = d[(o ? "v" : "h") + c];
454
+ if (e || !(l < b || l + a > p)) return (r.style[s] = l - u[s] + "px"), (r.style[i] = n - u[i] + "px"), t + c;
455
+ }
456
+ }
457
+ return c ? this.update(void 0, !0) : null;
458
+ }
459
+ }
460
+ return (t.version = "1.3.0"), (t.defaultVariantFlipOrder = { start: "sme", middle: "mse", end: "ems" }), (t.defaultPositionFlipOrder = { top: "tbrl", right: "rltb", bottom: "btrl", left: "lrbt" }), t;
461
+ })();
462
+ function R(t, e) {
463
+ var o = Object.keys(t);
464
+ if (Object.getOwnPropertySymbols) {
465
+ var n = Object.getOwnPropertySymbols(t);
466
+ e &&
467
+ (n = n.filter(function (e) {
468
+ return Object.getOwnPropertyDescriptor(t, e).enumerable;
469
+ })),
470
+ o.push.apply(o, n);
471
+ }
472
+ return o;
473
+ }
474
+ function H(t, e, o) {
475
+ return e in t ? Object.defineProperty(t, e, { value: o, enumerable: !0, configurable: !0, writable: !0 }) : (t[e] = o), t;
476
+ }
477
+ class N {
478
+ constructor(t) {
479
+ H(this, "_initializingActive", !0),
480
+ H(this, "_recalc", !0),
481
+ H(this, "_nanopop", null),
482
+ H(this, "_root", null),
483
+ H(this, "_color", S()),
484
+ H(this, "_lastColor", S()),
485
+ H(this, "_swatchColors", []),
486
+ H(this, "_eventListener", { init: [], save: [], hide: [], show: [], clear: [], change: [], changestop: [], cancel: [], swatchselect: [] }),
487
+ (this.options = t = Object.assign(
488
+ (function (t) {
489
+ for (var e = 1; e < arguments.length; e++) {
490
+ var o = null != arguments[e] ? arguments[e] : {};
491
+ e % 2
492
+ ? R(Object(o), !0).forEach(function (e) {
493
+ H(t, e, o[e]);
494
+ })
495
+ : Object.getOwnPropertyDescriptors
496
+ ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(o))
497
+ : R(Object(o)).forEach(function (e) {
498
+ Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(o, e));
499
+ });
500
+ }
501
+ return t;
502
+ })({}, N.DEFAULT_OPTIONS),
503
+ t
504
+ ));
505
+ const { swatches: e, components: o, theme: n, sliders: r, lockOpacity: i, padding: s } = t;
506
+ ["nano", "monolith"].includes(n) && !r && (t.sliders = "h"), o.interaction || (o.interaction = {});
507
+ const { preview: c, opacity: a, hue: l, palette: p } = o;
508
+ (o.opacity = !i && a), (o.palette = p || c || a || l), this._preBuild(), this._buildComponents(), this._bindEvents(), this._finalBuild(), e && e.length && e.forEach((t) => this.addSwatch(t));
509
+ const { button: u, app: h } = this._root;
510
+ (this._nanopop = new F(u, h, { margin: s })), u.setAttribute("role", "button"), u.setAttribute("aria-label", this._t("btn:toggle"));
511
+ const d = this;
512
+ requestAnimationFrame(function e() {
513
+ if (!h.offsetWidth && h.parentElement !== t.container) return requestAnimationFrame(e);
514
+ d.setColor(t.default),
515
+ d._rePositioningPicker(),
516
+ t.defaultRepresentation && ((d._representation = t.defaultRepresentation), d.setColorRepresentation(d._representation)),
517
+ t.showAlways && d.show(),
518
+ (d._initializingActive = !1),
519
+ d._emit("init");
520
+ });
521
+ }
522
+ _preBuild() {
523
+ const { options: t } = this;
524
+ for (const e of ["el", "container"]) t[e] = d(t[e]);
525
+ (this._root = ((t) => {
526
+ const { components: e, useAsButton: o, inline: n, appClass: r, theme: i, lockOpacity: s } = t.options,
527
+ c = (t) => (t ? "" : 'style="display:none" hidden'),
528
+ a = (e) => t._t(e),
529
+ l = u(
530
+ '\n <div :ref="root" class="pickr">\n\n '
531
+ .concat(o ? "" : '<button type="button" :ref="button" class="pcr-button"></button>', '\n\n <div :ref="app" class="pcr-app ')
532
+ .concat(r || "", '" data-theme="')
533
+ .concat(i, '" ')
534
+ .concat(n ? 'style="position: unset"' : "", ' aria-label="')
535
+ .concat(a("ui:dialog"), '" role="window">\n <div class="pcr-selection" ')
536
+ .concat(c(e.palette), '>\n <div :obj="preview" class="pcr-color-preview" ')
537
+ .concat(c(e.preview), '>\n <button type="button" :ref="lastColor" class="pcr-last-color" aria-label="')
538
+ .concat(
539
+ a("btn:last-color"),
540
+ '"></button>\n <div :ref="currentColor" class="pcr-current-color"></div>\n </div>\n\n <div :obj="palette" class="pcr-color-palette">\n <div :ref="picker" class="pcr-picker"></div>\n <div :ref="palette" class="pcr-palette" tabindex="0" aria-label="'
541
+ )
542
+ .concat(a("aria:palette"), '" role="listbox"></div>\n </div>\n\n <div :obj="hue" class="pcr-color-chooser" ')
543
+ .concat(c(e.hue), '>\n <div :ref="picker" class="pcr-picker"></div>\n <div :ref="slider" class="pcr-hue pcr-slider" tabindex="0" aria-label="')
544
+ .concat(a("aria:hue"), '" role="slider"></div>\n </div>\n\n <div :obj="opacity" class="pcr-color-opacity" ')
545
+ .concat(c(e.opacity), '>\n <div :ref="picker" class="pcr-picker"></div>\n <div :ref="slider" class="pcr-opacity pcr-slider" tabindex="0" aria-label="')
546
+ .concat(a("aria:opacity"), '" role="slider"></div>\n </div>\n </div>\n\n <div class="pcr-swatches ')
547
+ .concat(e.palette ? "" : "pcr-last", '" :ref="swatches"></div>\n\n <div :obj="interaction" class="pcr-interaction" ')
548
+ .concat(c(Object.keys(e.interaction).length), '>\n <input :ref="result" class="pcr-result" type="text" spellcheck="false" ')
549
+ .concat(c(e.interaction.input), ' aria-label="')
550
+ .concat(a("aria:input"), '">\n\n <input :arr="options" class="pcr-type" data-type="HEXA" value="')
551
+ .concat(s ? "HEX" : "HEXA", '" type="button" ')
552
+ .concat(c(e.interaction.hex), '>\n <input :arr="options" class="pcr-type" data-type="RGBA" value="')
553
+ .concat(s ? "RGB" : "RGBA", '" type="button" ')
554
+ .concat(c(e.interaction.rgba), '>\n <input :arr="options" class="pcr-type" data-type="HSLA" value="')
555
+ .concat(s ? "HSL" : "HSLA", '" type="button" ')
556
+ .concat(c(e.interaction.hsla), '>\n <input :arr="options" class="pcr-type" data-type="HSVA" value="')
557
+ .concat(s ? "HSV" : "HSVA", '" type="button" ')
558
+ .concat(c(e.interaction.hsva), '>\n <input :arr="options" class="pcr-type" data-type="CMYK" value="CMYK" type="button" ')
559
+ .concat(c(e.interaction.cmyk), '>\n\n <input :ref="save" class="pcr-save" value="')
560
+ .concat(a("btn:save"), '" type="button" ')
561
+ .concat(c(e.interaction.save), ' aria-label="')
562
+ .concat(a("aria:btn:save"), '">\n <input :ref="cancel" class="pcr-cancel" value="')
563
+ .concat(a("btn:cancel"), '" type="button" ')
564
+ .concat(c(e.interaction.cancel), ' aria-label="')
565
+ .concat(a("aria:btn:cancel"), '">\n <input :ref="clear" class="pcr-clear" value="')
566
+ .concat(a("btn:clear"), '" type="button" ')
567
+ .concat(c(e.interaction.clear), ' aria-label="')
568
+ .concat(a("aria:btn:clear"), '">\n </div>\n </div>\n </div>\n ')
569
+ ),
570
+ p = l.interaction;
571
+ return p.options.find((t) => !t.hidden && !t.classList.add("active")), (p.type = () => p.options.find((t) => t.classList.contains("active"))), l;
572
+ })(this)),
573
+ t.useAsButton && (this._root.button = t.el),
574
+ t.container.appendChild(this._root.root);
575
+ }
576
+ _finalBuild() {
577
+ const t = this.options,
578
+ e = this._root;
579
+ if ((t.container.removeChild(e.root), t.inline)) {
580
+ const o = t.el.parentElement;
581
+ t.el.nextSibling ? o.insertBefore(e.app, t.el.nextSibling) : o.appendChild(e.app);
582
+ } else t.container.appendChild(e.app);
583
+ t.useAsButton ? t.inline && t.el.remove() : t.el.parentNode.replaceChild(e.root, t.el),
584
+ t.disabled && this.disable(),
585
+ t.comparison || ((e.button.style.transition = "none"), t.useAsButton || (e.preview.lastColor.style.transition = "none")),
586
+ this.hide();
587
+ }
588
+ _buildComponents() {
589
+ const t = this,
590
+ e = this.options.components,
591
+ o = (t.options.sliders || "v").repeat(2),
592
+ [n, r] = o.match(/^[vh]+$/g) ? o : [],
593
+ i = () => this._color || (this._color = this._lastColor.clone()),
594
+ s = {
595
+ palette: E({
596
+ element: t._root.palette.picker,
597
+ wrapper: t._root.palette.palette,
598
+ onstop: () => t._emit("changestop", t),
599
+ onchange(o, n) {
600
+ if (!e.palette) return;
601
+ const r = i(),
602
+ { _root: s, options: c } = t,
603
+ { lastColor: a, currentColor: l } = s.preview;
604
+ t._recalc && ((r.s = 100 * o), (r.v = 100 - 100 * n), r.v < 0 && (r.v = 0), t._updateOutput());
605
+ const p = r.toRGBA().toString(0);
606
+ (this.element.style.background = p),
607
+ (this.wrapper.style.background = "\n linear-gradient(to top, rgba(0, 0, 0, "
608
+ .concat(r.a, "), transparent),\n linear-gradient(to left, hsla(")
609
+ .concat(r.h, ", 100%, 50%, ")
610
+ .concat(r.a, "), rgba(255, 255, 255, ")
611
+ .concat(r.a, "))\n ")),
612
+ c.comparison ? c.useAsButton || t._lastColor || (a.style.color = p) : ((s.button.style.color = p), s.button.classList.remove("clear"));
613
+ const u = r.toHEXA().toString();
614
+ for (const { el: e, color: o } of t._swatchColors) e.classList[u === o.toHEXA().toString() ? "add" : "remove"]("pcr-active");
615
+ l.style.color = p;
616
+ },
617
+ }),
618
+ hue: E({
619
+ lock: "v" === r ? "h" : "v",
620
+ element: t._root.hue.picker,
621
+ wrapper: t._root.hue.slider,
622
+ onstop: () => t._emit("changestop", t),
623
+ onchange(o) {
624
+ if (!e.hue || !e.palette) return;
625
+ const n = i();
626
+ t._recalc && (n.h = 360 * o), (this.element.style.backgroundColor = "hsl(".concat(n.h, ", 100%, 50%)")), s.palette.trigger();
627
+ },
628
+ }),
629
+ opacity: E({
630
+ lock: "v" === n ? "h" : "v",
631
+ element: t._root.opacity.picker,
632
+ wrapper: t._root.opacity.slider,
633
+ onstop: () => t._emit("changestop", t),
634
+ onchange(o) {
635
+ if (!e.opacity || !e.palette) return;
636
+ const n = i();
637
+ t._recalc && (n.a = Math.round(100 * o) / 100), (this.element.style.background = "rgba(0, 0, 0, ".concat(n.a, ")")), s.palette.trigger();
638
+ },
639
+ }),
640
+ selectable: D({
641
+ elements: t._root.interaction.options,
642
+ className: "active",
643
+ onchange(e) {
644
+ (t._representation = e.target.getAttribute("data-type").toUpperCase()), t._recalc && t._updateOutput();
645
+ },
646
+ }),
647
+ };
648
+ this._components = s;
649
+ }
650
+ _bindEvents() {
651
+ const { _root: t, options: e } = this,
652
+ o = [
653
+ a(t.interaction.clear, "click", () => this._clearColor()),
654
+ a([t.interaction.cancel, t.preview.lastColor], "click", () => {
655
+ this._emit("cancel", this), this.setHSVA(...(this._lastColor || this._color).toHSVA(), !0);
656
+ }),
657
+ a(t.interaction.save, "click", () => {
658
+ !this.applyColor() && !e.showAlways && this.hide();
659
+ }),
660
+ a(t.interaction.result, ["keyup", "input"], (t) => {
661
+ this.setColor(t.target.value, !0) && !this._initializingActive && this._emit("change", this._color), t.stopImmediatePropagation();
662
+ }),
663
+ a(t.interaction.result, ["focus", "blur"], (t) => {
664
+ (this._recalc = "blur" === t.type), this._recalc && this._updateOutput();
665
+ }),
666
+ a([t.palette.palette, t.palette.picker, t.hue.slider, t.hue.picker, t.opacity.slider, t.opacity.picker], ["mousedown", "touchstart"], () => (this._recalc = !0), { passive: !0 }),
667
+ ];
668
+ if (!e.showAlways) {
669
+ const n = e.closeWithKey;
670
+ o.push(
671
+ a(t.button, "click", () => (this.isOpen() ? this.hide() : this.show())),
672
+ a(document, "keyup", (t) => this.isOpen() && (t.key === n || t.code === n) && this.hide()),
673
+ a(
674
+ document,
675
+ ["touchstart", "mousedown"],
676
+ (e) => {
677
+ this.isOpen() && !h(e).some((e) => e === t.app || e === t.button) && this.hide();
678
+ },
679
+ { capture: !0 }
680
+ )
681
+ );
682
+ }
683
+ if (e.adjustableNumbers) {
684
+ const e = { rgba: [255, 255, 255, 1], hsva: [360, 100, 100, 1], hsla: [360, 100, 100, 1], cmyk: [100, 100, 100, 100] };
685
+ f(t.interaction.result, (t, o, n) => {
686
+ const r = e[this.getColorRepresentation().toLowerCase()];
687
+ if (r) {
688
+ const e = r[n],
689
+ i = t + (e >= 100 ? 1e3 * o : o);
690
+ return i <= 0 ? 0 : Number((i < e ? i : e).toPrecision(3));
691
+ }
692
+ return t;
693
+ });
694
+ }
695
+ if (e.autoReposition && !e.inline) {
696
+ let t = null;
697
+ const n = this;
698
+ o.push(
699
+ a(
700
+ window,
701
+ ["scroll", "resize"],
702
+ () => {
703
+ n.isOpen() &&
704
+ (e.closeOnScroll && n.hide(),
705
+ null === t
706
+ ? ((t = setTimeout(() => (t = null), 100)),
707
+ requestAnimationFrame(function e() {
708
+ n._rePositioningPicker(), null !== t && requestAnimationFrame(e);
709
+ }))
710
+ : (clearTimeout(t), (t = setTimeout(() => (t = null), 100))));
711
+ },
712
+ { capture: !0 }
713
+ )
714
+ );
715
+ }
716
+ this._eventBindings = o;
717
+ }
718
+ _rePositioningPicker() {
719
+ const { options: t } = this;
720
+ if (!t.inline) {
721
+ if (!this._nanopop.update({ position: t.position, forceApplyOnFailure: !this._recalc })) {
722
+ const t = this._root.app,
723
+ e = t.getBoundingClientRect(),
724
+ rt = this._root.button.getBoundingClientRect();
725
+ (t.style.top = "".concat(rt.bottom, "px")), (t.style.left = "".concat(rt.left, "px"));
726
+
727
+ }
728
+ }
729
+ }
730
+ _updateOutput() {
731
+ const { _root: t, _color: e, options: o } = this;
732
+ if (t.interaction.type()) {
733
+ const n = "to".concat(t.interaction.type().getAttribute("data-type"));
734
+ t.interaction.result.value = "function" == typeof e[n] ? e[n]().toString(o.outputPrecision) : "";
735
+ }
736
+ !this._initializingActive && this._recalc && this._emit("change", e);
737
+ }
738
+ _clearColor(t = !1) {
739
+ const { _root: e, options: o } = this;
740
+ o.useAsButton || (e.button.style.color = "rgba(0, 0, 0, 0.15)"),
741
+ e.button.classList.add("clear"),
742
+ o.showAlways || this.hide(),
743
+ (this._lastColor = null),
744
+ this._initializingActive || t || (this._emit("save", null), this._emit("clear", this));
745
+ }
746
+ _parseLocalColor(t) {
747
+ const { values: e, type: o, a: n } = j(t),
748
+ { lockOpacity: r } = this.options,
749
+ i = void 0 !== n && 1 !== n;
750
+ return e && 3 === e.length && (e[3] = void 0), { values: !e || (r && i) ? null : e, type: o };
751
+ }
752
+ _t(t) {
753
+ return this.options.i18n[t] || N.I18N_DEFAULTS[t];
754
+ }
755
+ _emit(t, ...e) {
756
+ this._eventListener[t].forEach((t) => t(...e, this));
757
+ }
758
+ on(t, e) {
759
+ return this._eventListener[t].push(e), this;
760
+ }
761
+ off(t, e) {
762
+ const o = this._eventListener[t] || [],
763
+ n = o.indexOf(e);
764
+ return ~n && o.splice(n, 1), this;
765
+ }
766
+ addSwatch(t) {
767
+ const { values: e } = this._parseLocalColor(t);
768
+ if (e) {
769
+ const { _swatchColors: t, _root: o } = this,
770
+ n = S(...e),
771
+ r = p('<button type="button" style="color: '.concat(n.toRGBA().toString(0), '" aria-label="').concat(this._t("btn:swatch"), '"/>'));
772
+ return (
773
+ o.swatches.appendChild(r),
774
+ t.push({ el: r, color: n }),
775
+ this._eventBindings.push(
776
+ a(r, "click", () => {
777
+ this.setHSVA(...n.toHSVA(), !0), this._emit("swatchselect", n), this._emit("change", n);
778
+ })
779
+ ),
780
+ !0
781
+ );
782
+ }
783
+ return !1;
784
+ }
785
+ removeSwatch(t) {
786
+ const e = this._swatchColors[t];
787
+ if (e) {
788
+ const { el: o } = e;
789
+ return this._root.swatches.removeChild(o), this._swatchColors.splice(t, 1), !0;
790
+ }
791
+ return !1;
792
+ }
793
+ applyColor(t = !1) {
794
+ const { preview: e, button: o } = this._root,
795
+ n = this._color.toRGBA().toString(0);
796
+ return (
797
+ (e.lastColor.style.color = n),
798
+ this.options.useAsButton || (o.style.color = n),
799
+ o.classList.remove("clear"),
800
+ (this._lastColor = this._color.clone()),
801
+ this._initializingActive || t || this._emit("save", this._color),
802
+ this
803
+ );
804
+ }
805
+ destroy() {
806
+ this._eventBindings.forEach((t) => l(...t)), Object.keys(this._components).forEach((t) => this._components[t].destroy());
807
+ }
808
+ destroyAndRemove() {
809
+ this.destroy();
810
+ const { root: t, app: e } = this._root;
811
+ t.parentElement && t.parentElement.removeChild(t), e.parentElement.removeChild(e), Object.keys(this).forEach((t) => (this[t] = null));
812
+ }
813
+ hide() {
814
+ return this._root.app.classList.remove("visible"), this._emit("hide", this), this;
815
+ }
816
+ show() {
817
+ return this.options.disabled || (this._root.app.classList.add("visible"), this._rePositioningPicker(), this._emit("show", this)), this;
818
+ }
819
+ isOpen() {
820
+ return this._root.app.classList.contains("visible");
821
+ }
822
+ setHSVA(t = 360, e = 0, o = 0, n = 1, r = !1) {
823
+ const i = this._recalc;
824
+ if (((this._recalc = !1), t < 0 || t > 360 || e < 0 || e > 100 || o < 0 || o > 100 || n < 0 || n > 1)) return !1;
825
+ this._color = S(t, e, o, n);
826
+ const { hue: s, opacity: c, palette: a } = this._components;
827
+ return s.update(t / 360), c.update(n), a.update(e / 100, 1 - o / 100), r || this.applyColor(), i && this._updateOutput(), (this._recalc = i), !0;
828
+ }
829
+ setColor(t, e = !1) {
830
+ if (null === t) return this._clearColor(e), !0;
831
+ const { values: o, type: n } = this._parseLocalColor(t);
832
+ if (o) {
833
+ const t = n.toUpperCase(),
834
+ { options: r } = this._root.interaction,
835
+ i = r.find((e) => e.getAttribute("data-type") === t);
836
+ if (i && !i.hidden) for (const t of r) t.classList[t === i ? "add" : "remove"]("active");
837
+ return !!this.setHSVA(...o, e) && this.setColorRepresentation(t);
838
+ }
839
+ return !1;
840
+ }
841
+ setColorRepresentation(t) {
842
+ return (t = t.toUpperCase()), !!this._root.interaction.options.find((e) => e.getAttribute("data-type").startsWith(t) && !e.click());
843
+ }
844
+ getColorRepresentation() {
845
+ return this._representation;
846
+ }
847
+ getColor() {
848
+ return this._color;
849
+ }
850
+ getSelectedColor() {
851
+ return this._lastColor;
852
+ }
853
+ getRoot() {
854
+ return this._root;
855
+ }
856
+ disable() {
857
+ return this.hide(), (this.options.disabled = !0), this._root.button.classList.add("disabled"), this;
858
+ }
859
+ enable() {
860
+ return (this.options.disabled = !1), this._root.button.classList.remove("disabled"), this;
861
+ }
862
+ }
863
+ H(N, "utils", n),
864
+ H(N, "version", b.a),
865
+ H(N, "I18N_DEFAULTS", {
866
+ "ui:dialog": "color picker dialog",
867
+ "btn:toggle": "toggle color picker dialog",
868
+ "btn:swatch": "color swatch",
869
+ "btn:last-color": "use previous color",
870
+ "btn:save": "Save",
871
+ "btn:cancel": "Cancel",
872
+ "btn:clear": "Clear",
873
+ "aria:btn:save": "save and close",
874
+ "aria:btn:cancel": "cancel and close",
875
+ "aria:btn:clear": "clear and close",
876
+ "aria:input": "color input field",
877
+ "aria:palette": "color selection area",
878
+ "aria:hue": "hue selection slider",
879
+ "aria:opacity": "selection slider",
880
+ }),
881
+ H(N, "DEFAULT_OPTIONS", {
882
+ appClass: null,
883
+ theme: "classic",
884
+ useAsButton: !1,
885
+ padding: 8,
886
+ disabled: !1,
887
+ comparison: !0,
888
+ closeOnScroll: !1,
889
+ outputPrecision: 0,
890
+ lockOpacity: !1,
891
+ autoReposition: !0,
892
+ container: "body",
893
+ components: { interaction: {} },
894
+ i18n: {},
895
+ swatches: null,
896
+ inline: !1,
897
+ sliders: null,
898
+ default: "",
899
+ defaultRepresentation: null,
900
+ position: "bottom-middle",
901
+ adjustableNumbers: !0,
902
+ showAlways: !1,
903
+ closeWithKey: "Escape",
904
+ }),
905
+ H(N, "create", (t) => new N(t));
906
+ e.default = N;
907
+ },
908
+ ]).default;
909
+ });
910
+
assets/js/color-pickr/pickr.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Pickr=e():t.Pickr=e()}(window,function(){return function(t){var e={};function o(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}return o.m=t,o.c=e,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)o.d(n,r,function(e){return t[e]}.bind(null,r));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=1)}([function(t){t.exports=JSON.parse('{"a":"1.7.1"}')},function(t,e,o){"use strict";o.r(e);var n={};function r(t,e){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),o.push.apply(o,n)}return o}function i(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{};e%2?r(Object(o),!0).forEach(function(e){s(t,e,o[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))})}return t}function s(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function c(t,e,o,n,r={}){e instanceof HTMLCollection||e instanceof NodeList?e=Array.from(e):Array.isArray(e)||(e=[e]),Array.isArray(o)||(o=[o]);for(const s of e)for(const e of o)s[t](e,n,i({capture:!1},r));return Array.prototype.slice.call(arguments,1)}o.r(n),o.d(n,"on",function(){return a}),o.d(n,"off",function(){return l}),o.d(n,"createElementFromString",function(){return p}),o.d(n,"createFromTemplate",function(){return u}),o.d(n,"eventPath",function(){return h}),o.d(n,"resolveElement",function(){return d}),o.d(n,"adjustableInputNumbers",function(){return f});const a=c.bind(null,"addEventListener"),l=c.bind(null,"removeEventListener");function p(t){const e=document.createElement("div");return e.innerHTML=t.trim(),e.firstElementChild}function u(t){const e=(t,e)=>{const o=t.getAttribute(e);return t.removeAttribute(e),o},o=(t,n={})=>{const r=e(t,":obj"),i=e(t,":ref"),s=r?n[r]={}:n;i&&(n[i]=t);for(const n of Array.from(t.children)){const t=e(n,":arr"),r=o(n,t?{}:s);t&&(s[t]||(s[t]=[])).push(Object.keys(r).length?r:n)}return n};return o(p(t))}function h(t){let e=t.path||t.composedPath&&t.composedPath();if(e)return e;let o=t.target.parentElement;for(e=[t.target,o];o=o.parentElement;)e.push(o);return e.push(document,window),e}function d(t){return t instanceof Element?t:"string"==typeof t?t.split(/>>/g).reduce((t,e,o,n)=>(t=t.querySelector(e),o<n.length-1?t.shadowRoot:t),document):null}function f(t,e=(t=>t)){function o(o){const n=[.001,.01,.1][Number(o.shiftKey||2*o.ctrlKey)]*(o.deltaY<0?1:-1);let r=0,i=t.selectionStart;t.value=t.value.replace(/[\d.]+/g,(t,o)=>o<=i&&o+t.length>=i?(i=o,e(Number(t),n,r)):(r++,t)),t.focus(),t.setSelectionRange(i,i),o.preventDefault(),t.dispatchEvent(new Event("input"))}a(t,"focus",()=>a(window,"wheel",o,{passive:!1})),a(t,"blur",()=>l(window,"wheel",o))}var b=o(0);const{min:m,max:v,floor:y,round:g}=Math;function _(t,e,o){e/=100,o/=100;const n=y(t=t/360*6),r=t-n,i=o*(1-e),s=o*(1-r*e),c=o*(1-(1-r)*e),a=n%6;return[255*[o,s,i,i,c,o][a],255*[c,o,o,s,i,i][a],255*[i,i,c,o,o,s][a]]}function w(t,e,o){const n=(2-(e/=100))*(o/=100)/2;return 0!==n&&(e=1===n?0:n<.5?e*o/(2*n):e*o/(2-2*n)),[t,100*e,100*n]}function O(t,e,o){const n=m(t/=255,e/=255,o/=255),r=v(t,e,o),i=r-n;let s,c;if(0===i)s=c=0;else{c=i/r;const n=((r-t)/6+i/2)/i,a=((r-e)/6+i/2)/i,l=((r-o)/6+i/2)/i;t===r?s=l-a:e===r?s=1/3+n-l:o===r&&(s=2/3+a-n),s<0?s+=1:s>1&&(s-=1)}return[360*s,100*c,100*r]}function A(t,e,o,n){return e/=100,o/=100,[...O(255*(1-m(1,(t/=100)*(1-(n/=100))+n)),255*(1-m(1,e*(1-n)+n)),255*(1-m(1,o*(1-n)+n)))]}function C(t,e,o){e/=100;const n=2*(e*=(o/=100)<.5?o:1-o)/(o+e)*100,r=100*(o+e);return[t,isNaN(n)?0:n,r]}function k(t){return O(...t.match(/.{2}/g).map(t=>parseInt(t,16)))}function j(t=0,e=0,o=0,n=1){const r=(t,e)=>(o=-1)=>e(~o?t.map(t=>Number(t.toFixed(o))):t),i={h:t,s:e,v:o,a:n,toHSVA(){const t=[i.h,i.s,i.v,i.a];return t.toString=r(t,t=>"hsva(".concat(t[0],", ").concat(t[1],"%, ").concat(t[2],"%, ").concat(i.a,")")),t},toHSLA(){const t=[...w(i.h,i.s,i.v),i.a];return t.toString=r(t,t=>"hsla(".concat(t[0],", ").concat(t[1],"%, ").concat(t[2],"%, ").concat(i.a,")")),t},toRGBA(){const t=[..._(i.h,i.s,i.v),i.a];return t.toString=r(t,t=>"rgba(".concat(t[0],", ").concat(t[1],", ").concat(t[2],", ").concat(i.a,")")),t},toCMYK(){const t=function(t,e,o){const n=_(t,e,o),r=n[0]/255,i=n[1]/255,s=n[2]/255,c=m(1-r,1-i,1-s);return[100*(1===c?0:(1-r-c)/(1-c)),100*(1===c?0:(1-i-c)/(1-c)),100*(1===c?0:(1-s-c)/(1-c)),100*c]}(i.h,i.s,i.v);return t.toString=r(t,t=>"cmyk(".concat(t[0],"%, ").concat(t[1],"%, ").concat(t[2],"%, ").concat(t[3],"%)")),t},toHEXA(){const t=_(i.h,i.s,i.v).map(t=>g(t).toString(16).padStart(2,"0")),e=i.a>=1?"":Number((255*i.a).toFixed(0)).toString(16).toUpperCase().padStart(2,"0");return e&&t.push(e),t.toString=(()=>"#".concat(t.join("").toUpperCase())),t},clone:()=>j(i.h,i.s,i.v,i.a)};return i}const S=t=>Math.max(Math.min(t,1),0);function P(t){const e={options:Object.assign({lock:null,onchange:()=>0,onstop:()=>0},t),_keyboard(t){const{options:o}=e,{type:n,key:r}=t;if(document.activeElement===o.wrapper){const{lock:o}=e.options,i="ArrowUp"===r,s="ArrowRight"===r,c="ArrowDown"===r,a="ArrowLeft"===r;if("keydown"===n&&(i||s||c||a)){let n=0,r=0;"v"===o?n=i||s?1:-1:"h"===o?n=i||s?-1:1:(r=i?-1:c?1:0,n=a?-1:s?1:0),e.update(S(e.cache.x+.01*n),S(e.cache.y+.01*r)),t.preventDefault()}else r.startsWith("Arrow")&&(e.options.onstop(),t.preventDefault())}},_tapstart(t){a(document,["mouseup","touchend","touchcancel"],e._tapstop),a(document,["mousemove","touchmove"],e._tapmove),t.cancelable&&t.preventDefault(),e._tapmove(t)},_tapmove(t){const{options:o,cache:n}=e,{lock:r,element:i,wrapper:s}=o,c=s.getBoundingClientRect();let a=0,l=0;if(t){const e=t&&t.touches&&t.touches[0];a=t?(e||t).clientX:0,l=t?(e||t).clientY:0,a<c.left?a=c.left:a>c.left+c.width&&(a=c.left+c.width),l<c.top?l=c.top:l>c.top+c.height&&(l=c.top+c.height),a-=c.left,l-=c.top}else n&&(a=n.x*c.width,l=n.y*c.height);"h"!==r&&(i.style.left="calc(".concat(a/c.width*100,"% - ").concat(i.offsetWidth/2,"px)")),"v"!==r&&(i.style.top="calc(".concat(l/c.height*100,"% - ").concat(i.offsetHeight/2,"px)")),e.cache={x:a/c.width,y:l/c.height};const p=S(a/c.width),u=S(l/c.height);switch(r){case"v":return o.onchange(p);case"h":return o.onchange(u);default:return o.onchange(p,u)}},_tapstop(){e.options.onstop(),l(document,["mouseup","touchend","touchcancel"],e._tapstop),l(document,["mousemove","touchmove"],e._tapmove)},trigger(){e._tapmove()},update(t=0,o=0){const{left:n,top:r,width:i,height:s}=e.options.wrapper.getBoundingClientRect();"h"===e.options.lock&&(o=t),e._tapmove({clientX:n+i*t,clientY:r+s*o})},destroy(){const{options:t,_tapstart:o,_keyboard:n}=e;l(document,["keydown","keyup"],n),l([t.wrapper,t.element],"mousedown",o),l([t.wrapper,t.element],"touchstart",o,{passive:!1})}},{options:o,_tapstart:n,_keyboard:r}=e;return a([o.wrapper,o.element],"mousedown",n),a([o.wrapper,o.element],"touchstart",n,{passive:!1}),a(document,["keydown","keyup"],r),e}function E(t={}){t=Object.assign({onchange:()=>0,className:"",elements:[]},t);const e=a(t.elements,"click",e=>{t.elements.forEach(o=>o.classList[e.target===o?"add":"remove"](t.className)),t.onchange(e)});return{destroy:()=>l(...e)}}function D(t,e){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),o.push.apply(o,n)}return o}function x(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{};e%2?D(Object(o),!0).forEach(function(e){L(t,e,o[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):D(Object(o)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))})}return t}function L(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}let B=(()=>{class t{constructor(e,o,{positionFlipOrder:n=t.defaultPositionFlipOrder,variantFlipOrder:r=t.defaultVariantFlipOrder,container:i=document.documentElement.getBoundingClientRect(),forceApplyOnFailure:s=!1,margin:c=8,position:a="bottom-start"}={}){this.o={positionFlipOrder:n,variantFlipOrder:r,reference:e,popper:o,position:a,container:i,forceApplyOnFailure:s,margin:c}}update(t=this.o,e=!1){const{container:o,reference:n,popper:r,margin:i,position:s,forceApplyOnFailure:c,variantFlipOrder:a,positionFlipOrder:l}=this.o=x(x({},this.o),t);r.style.left="0",r.style.top="0";const p=n.getBoundingClientRect(),u=r.getBoundingClientRect(),h={t:p.top-u.height-i,b:p.bottom+i,r:p.right+i,l:p.left-u.width-i},d={vm:-u.width/2+(p.left+p.width/2),vs:p.left,ve:p.left+p.width-u.width,hs:p.bottom-p.height,he:p.bottom-u.height,hm:p.bottom-p.height/2-u.height/2},[f,b="middle"]=s.split("-"),m=l[f],v=a[b],{top:y,left:g,bottom:_,right:w}=o;for(const t of m){const o="t"===t||"b"===t,n=h[t],[i,s]=o?["top","left"]:["left","top"],[c,a]=o?[u.height,u.width]:[u.width,u.height],[l,p]=o?[_,w]:[w,_],[f,b]=o?[y,g]:[g,y];if(e||!(n<f||n+c>l))for(const c of v){const l=d[(o?"v":"h")+c];if(e||!(l<b||l+a>p))return r.style[s]=l-u[s]+"px",r.style[i]=n-u[i]+"px",t+c}}return c?this.update(void 0,!0):null}}return t.version="1.3.0",t.defaultVariantFlipOrder={start:"sme",middle:"mse",end:"ems"},t.defaultPositionFlipOrder={top:"tbrl",right:"rltb",bottom:"btrl",left:"lrbt"},t})();function F(t,e){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),o.push.apply(o,n)}return o}function R(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class H{constructor(t){R(this,"_initializingActive",!0),R(this,"_recalc",!0),R(this,"_nanopop",null),R(this,"_root",null),R(this,"_color",j()),R(this,"_lastColor",j()),R(this,"_swatchColors",[]),R(this,"_eventListener",{init:[],save:[],hide:[],show:[],clear:[],change:[],changestop:[],cancel:[],swatchselect:[]}),this.options=t=Object.assign(function(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{};e%2?F(Object(o),!0).forEach(function(e){R(t,e,o[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):F(Object(o)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))})}return t}({},H.DEFAULT_OPTIONS),t);const{swatches:e,components:o,theme:n,sliders:r,lockOpacity:i,padding:s}=t;["nano","monolith"].includes(n)&&!r&&(t.sliders="h"),o.interaction||(o.interaction={});const{preview:c,opacity:a,hue:l,palette:p}=o;o.opacity=!i&&a,o.palette=p||c||a||l,this._preBuild(),this._buildComponents(),this._bindEvents(),this._finalBuild(),e&&e.length&&e.forEach(t=>this.addSwatch(t));const{button:u,app:h}=this._root;this._nanopop=new B(u,h,{margin:s}),u.setAttribute("role","button"),u.setAttribute("aria-label",this._t("btn:toggle"));const d=this;requestAnimationFrame(function e(){if(!h.offsetWidth&&h.parentElement!==t.container)return requestAnimationFrame(e);d.setColor(t.default),d._rePositioningPicker(),t.defaultRepresentation&&(d._representation=t.defaultRepresentation,d.setColorRepresentation(d._representation)),t.showAlways&&d.show(),d._initializingActive=!1,d._emit("init")})}_preBuild(){const{options:t}=this;for(const e of["el","container"])t[e]=d(t[e]);this._root=(t=>{const{components:e,useAsButton:o,inline:n,appClass:r,theme:i,lockOpacity:s}=t.options,c=t=>t?"":'style="display:none" hidden',a=e=>t._t(e),l=u('\n <div :ref="root" class="pickr">\n\n '.concat(o?"":'<button type="button" :ref="button" class="pcr-button"></button>','\n\n <div :ref="app" class="pcr-app ').concat(r||"",'" data-theme="').concat(i,'" ').concat(n?'style="position: unset"':"",' aria-label="').concat(a("ui:dialog"),'" role="window">\n <div class="pcr-selection" ').concat(c(e.palette),'>\n <div :obj="preview" class="pcr-color-preview" ').concat(c(e.preview),'>\n <button type="button" :ref="lastColor" class="pcr-last-color" aria-label="').concat(a("btn:last-color"),'"></button>\n <div :ref="currentColor" class="pcr-current-color"></div>\n </div>\n\n <div :obj="palette" class="pcr-color-palette">\n <div :ref="picker" class="pcr-picker"></div>\n <div :ref="palette" class="pcr-palette" tabindex="0" aria-label="').concat(a("aria:palette"),'" role="listbox"></div>\n </div>\n\n <div :obj="hue" class="pcr-color-chooser" ').concat(c(e.hue),'>\n <div :ref="picker" class="pcr-picker"></div>\n <div :ref="slider" class="pcr-hue pcr-slider" tabindex="0" aria-label="').concat(a("aria:hue"),'" role="slider"></div>\n </div>\n\n <div :obj="opacity" class="pcr-color-opacity" ').concat(c(e.opacity),'>\n <div :ref="picker" class="pcr-picker"></div>\n <div :ref="slider" class="pcr-opacity pcr-slider" tabindex="0" aria-label="').concat(a("aria:opacity"),'" role="slider"></div>\n </div>\n </div>\n\n <div class="pcr-swatches ').concat(e.palette?"":"pcr-last",'" :ref="swatches"></div>\n\n <div :obj="interaction" class="pcr-interaction" ').concat(c(Object.keys(e.interaction).length),'>\n <input :ref="result" class="pcr-result" type="text" spellcheck="false" ').concat(c(e.interaction.input),' aria-label="').concat(a("aria:input"),'">\n\n <input :arr="options" class="pcr-type" data-type="HEXA" value="').concat(s?"HEX":"HEXA",'" type="button" ').concat(c(e.interaction.hex),'>\n <input :arr="options" class="pcr-type" data-type="RGBA" value="').concat(s?"RGB":"RGBA",'" type="button" ').concat(c(e.interaction.rgba),'>\n <input :arr="options" class="pcr-type" data-type="HSLA" value="').concat(s?"HSL":"HSLA",'" type="button" ').concat(c(e.interaction.hsla),'>\n <input :arr="options" class="pcr-type" data-type="HSVA" value="').concat(s?"HSV":"HSVA",'" type="button" ').concat(c(e.interaction.hsva),'>\n <input :arr="options" class="pcr-type" data-type="CMYK" value="CMYK" type="button" ').concat(c(e.interaction.cmyk),'>\n\n <input :ref="save" class="pcr-save" value="').concat(a("btn:save"),'" type="button" ').concat(c(e.interaction.save),' aria-label="').concat(a("aria:btn:save"),'">\n <input :ref="cancel" class="pcr-cancel" value="').concat(a("btn:cancel"),'" type="button" ').concat(c(e.interaction.cancel),' aria-label="').concat(a("aria:btn:cancel"),'">\n <input :ref="clear" class="pcr-clear" value="').concat(a("btn:clear"),'" type="button" ').concat(c(e.interaction.clear),' aria-label="').concat(a("aria:btn:clear"),'">\n </div>\n </div>\n </div>\n ')),p=l.interaction;return p.options.find(t=>!t.hidden&&!t.classList.add("active")),p.type=(()=>p.options.find(t=>t.classList.contains("active"))),l})(this),t.useAsButton&&(this._root.button=t.el),t.container.appendChild(this._root.root)}_finalBuild(){const t=this.options,e=this._root;if(t.container.removeChild(e.root),t.inline){const o=t.el.parentElement;t.el.nextSibling?o.insertBefore(e.app,t.el.nextSibling):o.appendChild(e.app)}else t.container.appendChild(e.app);t.useAsButton?t.inline&&t.el.remove():t.el.parentNode.replaceChild(e.root,t.el),t.disabled&&this.disable(),t.comparison||(e.button.style.transition="none",t.useAsButton||(e.preview.lastColor.style.transition="none")),this.hide()}_buildComponents(){const t=this,e=this.options.components,o=(t.options.sliders||"v").repeat(2),[n,r]=o.match(/^[vh]+$/g)?o:[],i=()=>this._color||(this._color=this._lastColor.clone()),s={palette:P({element:t._root.palette.picker,wrapper:t._root.palette.palette,onstop:()=>t._emit("changestop",t),onchange(o,n){if(!e.palette)return;const r=i(),{_root:s,options:c}=t,{lastColor:a,currentColor:l}=s.preview;t._recalc&&(r.s=100*o,r.v=100-100*n,r.v<0&&(r.v=0),t._updateOutput());const p=r.toRGBA().toString(0);this.element.style.background=p,this.wrapper.style.background="\n linear-gradient(to top, rgba(0, 0, 0, ".concat(r.a,"), transparent),\n linear-gradient(to left, hsla(").concat(r.h,", 100%, 50%, ").concat(r.a,"), rgba(255, 255, 255, ").concat(r.a,"))\n "),c.comparison?c.useAsButton||t._lastColor||(a.style.color=p):(s.button.style.color=p,s.button.classList.remove("clear"));const u=r.toHEXA().toString();for(const{el:e,color:o}of t._swatchColors)e.classList[u===o.toHEXA().toString()?"add":"remove"]("pcr-active");l.style.color=p}}),hue:P({lock:"v"===r?"h":"v",element:t._root.hue.picker,wrapper:t._root.hue.slider,onstop:()=>t._emit("changestop",t),onchange(o){if(!e.hue||!e.palette)return;const n=i();t._recalc&&(n.h=360*o),this.element.style.backgroundColor="hsl(".concat(n.h,", 100%, 50%)"),s.palette.trigger()}}),opacity:P({lock:"v"===n?"h":"v",element:t._root.opacity.picker,wrapper:t._root.opacity.slider,onstop:()=>t._emit("changestop",t),onchange(o){if(!e.opacity||!e.palette)return;const n=i();t._recalc&&(n.a=Math.round(100*o)/100),this.element.style.background="rgba(0, 0, 0, ".concat(n.a,")"),s.palette.trigger()}}),selectable:E({elements:t._root.interaction.options,className:"active",onchange(e){t._representation=e.target.getAttribute("data-type").toUpperCase(),t._recalc&&t._updateOutput()}})};this._components=s}_bindEvents(){const{_root:t,options:e}=this,o=[a(t.interaction.clear,"click",()=>this._clearColor()),a([t.interaction.cancel,t.preview.lastColor],"click",()=>{this._emit("cancel",this),this.setHSVA(...(this._lastColor||this._color).toHSVA(),!0)}),a(t.interaction.save,"click",()=>{!this.applyColor()&&!e.showAlways&&this.hide()}),a(t.interaction.result,["keyup","input"],t=>{this.setColor(t.target.value,!0)&&!this._initializingActive&&this._emit("change",this._color),t.stopImmediatePropagation()}),a(t.interaction.result,["focus","blur"],t=>{this._recalc="blur"===t.type,this._recalc&&this._updateOutput()}),a([t.palette.palette,t.palette.picker,t.hue.slider,t.hue.picker,t.opacity.slider,t.opacity.picker],["mousedown","touchstart"],()=>this._recalc=!0,{passive:!0})];if(!e.showAlways){const n=e.closeWithKey;o.push(a(t.button,"click",()=>this.isOpen()?this.hide():this.show()),a(document,"keyup",t=>this.isOpen()&&(t.key===n||t.code===n)&&this.hide()),a(document,["touchstart","mousedown"],e=>{this.isOpen()&&!h(e).some(e=>e===t.app||e===t.button)&&this.hide()},{capture:!0}))}if(e.adjustableNumbers){const e={rgba:[255,255,255,1],hsva:[360,100,100,1],hsla:[360,100,100,1],cmyk:[100,100,100,100]};f(t.interaction.result,(t,o,n)=>{const r=e[this.getColorRepresentation().toLowerCase()];if(r){const e=r[n],i=t+(e>=100?1e3*o:o);return i<=0?0:Number((i<e?i:e).toPrecision(3))}return t})}if(e.autoReposition&&!e.inline){let t=null;const n=this;o.push(a(window,["scroll","resize"],()=>{n.isOpen()&&(e.closeOnScroll&&n.hide(),null===t?(t=setTimeout(()=>t=null,100),requestAnimationFrame(function e(){n._rePositioningPicker(),null!==t&&requestAnimationFrame(e)})):(clearTimeout(t),t=setTimeout(()=>t=null,100)))},{capture:!0}))}this._eventBindings=o}_rePositioningPicker(){const{options:t}=this;if(!t.inline&&!this._nanopop.update({position:t.position,forceApplyOnFailure:!this._recalc})){const t=this._root.app,e=(t.getBoundingClientRect(),this._root.button.getBoundingClientRect());t.style.top="".concat(e.bottom,"px"),t.style.left="".concat(e.left,"px")}}_updateOutput(){const{_root:t,_color:e,options:o}=this;if(t.interaction.type()){const n="to".concat(t.interaction.type().getAttribute("data-type"));t.interaction.result.value="function"==typeof e[n]?e[n]().toString(o.outputPrecision):""}!this._initializingActive&&this._recalc&&this._emit("change",e)}_clearColor(t=!1){const{_root:e,options:o}=this;o.useAsButton||(e.button.style.color="rgba(0, 0, 0, 0.15)"),e.button.classList.add("clear"),o.showAlways||this.hide(),this._lastColor=null,this._initializingActive||t||(this._emit("save",null),this._emit("clear",this))}_parseLocalColor(t){const{values:e,type:o,a:n}=function(t){t=t.match(/^[a-zA-Z]+$/)?function(t){if("black"===t.toLowerCase())return"#000";const e=document.createElement("canvas").getContext("2d");return e.fillStyle=t,"#000"===e.fillStyle?null:e.fillStyle}(t):t;const e={cmyk:/^cmyk[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)/i,rgba:/^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hsla:/^((hsla)|hsl)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hsva:/^((hsva)|hsv)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hexa:/^#?(([\dA-Fa-f]{3,4})|([\dA-Fa-f]{6})|([\dA-Fa-f]{8}))$/i},o=t=>t.map(t=>/^(|\d+)\.\d+|\d+$/.test(t)?Number(t):void 0);let n;t:for(const r in e){if(!(n=e[r].exec(t)))continue;const i=t=>!!n[2]==("number"==typeof t);switch(r){case"cmyk":{const[,t,e,i,s]=o(n);if(t>100||e>100||i>100||s>100)break t;return{values:A(t,e,i,s),type:r}}case"rgba":{const[,,,t,e,s,c]=o(n);if(t>255||e>255||s>255||c<0||c>1||!i(c))break t;return{values:[...O(t,e,s),c],a:c,type:r}}case"hexa":{let[,t]=n;4!==t.length&&3!==t.length||(t=t.split("").map(t=>t+t).join(""));const e=t.substring(0,6);let o=t.substring(6);return o=o?parseInt(o,16)/255:void 0,{values:[...k(e),o],a:o,type:r}}case"hsla":{const[,,,t,e,s,c]=o(n);if(t>360||e>100||s>100||c<0||c>1||!i(c))break t;return{values:[...C(t,e,s),c],a:c,type:r}}case"hsva":{const[,,,t,e,s,c]=o(n);if(t>360||e>100||s>100||c<0||c>1||!i(c))break t;return{values:[t,e,s,c],a:c,type:r}}}}return{values:null,type:null}}(t),{lockOpacity:r}=this.options,i=void 0!==n&&1!==n;return e&&3===e.length&&(e[3]=void 0),{values:!e||r&&i?null:e,type:o}}_t(t){return this.options.i18n[t]||H.I18N_DEFAULTS[t]}_emit(t,...e){this._eventListener[t].forEach(t=>t(...e,this))}on(t,e){return this._eventListener[t].push(e),this}off(t,e){const o=this._eventListener[t]||[],n=o.indexOf(e);return~n&&o.splice(n,1),this}addSwatch(t){const{values:e}=this._parseLocalColor(t);if(e){const{_swatchColors:t,_root:o}=this,n=j(...e),r=p('<button type="button" style="color: '.concat(n.toRGBA().toString(0),'" aria-label="').concat(this._t("btn:swatch"),'"/>'));return o.swatches.appendChild(r),t.push({el:r,color:n}),this._eventBindings.push(a(r,"click",()=>{this.setHSVA(...n.toHSVA(),!0),this._emit("swatchselect",n),this._emit("change",n)})),!0}return!1}removeSwatch(t){const e=this._swatchColors[t];if(e){const{el:o}=e;return this._root.swatches.removeChild(o),this._swatchColors.splice(t,1),!0}return!1}applyColor(t=!1){const{preview:e,button:o}=this._root,n=this._color.toRGBA().toString(0);return e.lastColor.style.color=n,this.options.useAsButton||(o.style.color=n),o.classList.remove("clear"),this._lastColor=this._color.clone(),this._initializingActive||t||this._emit("save",this._color),this}destroy(){this._eventBindings.forEach(t=>l(...t)),Object.keys(this._components).forEach(t=>this._components[t].destroy())}destroyAndRemove(){this.destroy();const{root:t,app:e}=this._root;t.parentElement&&t.parentElement.removeChild(t),e.parentElement.removeChild(e),Object.keys(this).forEach(t=>this[t]=null)}hide(){return this._root.app.classList.remove("visible"),this._emit("hide",this),this}show(){return this.options.disabled||(this._root.app.classList.add("visible"),this._rePositioningPicker(),this._emit("show",this)),this}isOpen(){return this._root.app.classList.contains("visible")}setHSVA(t=360,e=0,o=0,n=1,r=!1){const i=this._recalc;if(this._recalc=!1,t<0||t>360||e<0||e>100||o<0||o>100||n<0||n>1)return!1;this._color=j(t,e,o,n);const{hue:s,opacity:c,palette:a}=this._components;return s.update(t/360),c.update(n),a.update(e/100,1-o/100),r||this.applyColor(),i&&this._updateOutput(),this._recalc=i,!0}setColor(t,e=!1){if(null===t)return this._clearColor(e),!0;const{values:o,type:n}=this._parseLocalColor(t);if(o){const t=n.toUpperCase(),{options:r}=this._root.interaction,i=r.find(e=>e.getAttribute("data-type")===t);if(i&&!i.hidden)for(const t of r)t.classList[t===i?"add":"remove"]("active");return!!this.setHSVA(...o,e)&&this.setColorRepresentation(t)}return!1}setColorRepresentation(t){return t=t.toUpperCase(),!!this._root.interaction.options.find(e=>e.getAttribute("data-type").startsWith(t)&&!e.click())}getColorRepresentation(){return this._representation}getColor(){return this._color}getSelectedColor(){return this._lastColor}getRoot(){return this._root}disable(){return this.hide(),this.options.disabled=!0,this._root.button.classList.add("disabled"),this}enable(){return this.options.disabled=!1,this._root.button.classList.remove("disabled"),this}}R(H,"utils",n),R(H,"version",b.a),R(H,"I18N_DEFAULTS",{"ui:dialog":"color picker dialog","btn:toggle":"toggle color picker dialog","btn:swatch":"color swatch","btn:last-color":"use previous color","btn:save":"Save","btn:cancel":"Cancel","btn:clear":"Clear","aria:btn:save":"save and close","aria:btn:cancel":"cancel and close","aria:btn:clear":"clear and close","aria:input":"color input field","aria:palette":"color selection area","aria:hue":"hue selection slider","aria:opacity":"selection slider"}),R(H,"DEFAULT_OPTIONS",{appClass:null,theme:"classic",useAsButton:!1,padding:8,disabled:!1,comparison:!0,closeOnScroll:!1,outputPrecision:0,lockOpacity:!1,autoReposition:!0,container:"body",components:{interaction:{}},i18n:{},swatches:null,inline:!1,sliders:null,default:"",defaultRepresentation:null,position:"bottom-middle",adjustableNumbers:!0,showAlways:!1,closeWithKey:"Escape"}),R(H,"create",t=>new H(t)),e.default=H}]).default});
assets/js/editor-plugins/code/plugin.js ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function () {
2
+ var code = (function () {
3
+ 'use strict';
4
+
5
+ var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
6
+
7
+ var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
8
+
9
+ var getMinWidth = function (editor) {
10
+ return editor.getParam('code_dialog_width', 600);
11
+ };
12
+ var getMinHeight = function (editor) {
13
+ return editor.getParam('code_dialog_height', Math.min(global$1.DOM.getViewPort().h - 200, 500));
14
+ };
15
+ var Settings = {
16
+ getMinWidth: getMinWidth,
17
+ getMinHeight: getMinHeight
18
+ };
19
+
20
+ var setContent = function (editor, html) {
21
+ editor.focus();
22
+ editor.undoManager.transact(function () {
23
+ editor.setContent(html);
24
+ });
25
+ editor.selection.setCursorLocation();
26
+ editor.nodeChanged();
27
+ };
28
+ var getContent = function (editor) {
29
+ return editor.getContent({ source_view: true });
30
+ };
31
+ var Content = {
32
+ setContent: setContent,
33
+ getContent: getContent
34
+ };
35
+
36
+ var open = function (editor) {
37
+ var minWidth = Settings.getMinWidth(editor);
38
+ var minHeight = Settings.getMinHeight(editor);
39
+ var win = editor.windowManager.open({
40
+ title: 'Source code',
41
+ body: {
42
+ type: 'textbox',
43
+ name: 'code',
44
+ multiline: true,
45
+ minWidth: minWidth,
46
+ minHeight: minHeight,
47
+ spellcheck: false,
48
+ style: 'direction: ltr; text-align: left'
49
+ },
50
+ onSubmit: function (e) {
51
+ Content.setContent(editor, e.data.code);
52
+ }
53
+ });
54
+ win.find('#code').value(Content.getContent(editor));
55
+ };
56
+ var Dialog = { open: open };
57
+
58
+ var register = function (editor) {
59
+ editor.addCommand('mceCodeEditor', function () {
60
+ Dialog.open(editor);
61
+ });
62
+ };
63
+ var Commands = { register: register };
64
+
65
+ var register$1 = function (editor) {
66
+ editor.addButton('code', {
67
+ icon: 'code',
68
+ tooltip: 'Source code',
69
+ onclick: function () {
70
+ Dialog.open(editor);
71
+ }
72
+ });
73
+ editor.addMenuItem('code', {
74
+ icon: 'code',
75
+ text: 'Source code',
76
+ onclick: function () {
77
+ Dialog.open(editor);
78
+ }
79
+ });
80
+ };
81
+ var Buttons = { register: register$1 };
82
+
83
+ global.add('code', function (editor) {
84
+ Commands.register(editor);
85
+ Buttons.register(editor);
86
+ return {};
87
+ });
88
+ function Plugin () {
89
+ }
90
+
91
+ return Plugin;
92
+
93
+ }());
94
+ })();
assets/js/editor-plugins/code/plugin.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),o=function(t){return t.getParam("code_dialog_width",600)},i=function(t){return t.getParam("code_dialog_height",Math.min(n.DOM.getViewPort().h-200,500))},c=function(t,n){t.focus(),t.undoManager.transact(function(){t.setContent(n)}),t.selection.setCursorLocation(),t.nodeChanged()},d=function(t){return t.getContent({source_view:!0})},e=function(n){var t=o(n),e=i(n);n.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:t,minHeight:e,spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(t){c(n,t.data.code)}}).find("#code").value(d(n))},u=function(t){t.addCommand("mceCodeEditor",function(){e(t)})},a=function(t){t.addButton("code",{icon:"code",tooltip:"Source code",onclick:function(){e(t)}}),t.addMenuItem("code",{icon:"code",text:"Source code",onclick:function(){e(t)}})};t.add("code",function(t){return u(t),a(t),{}})}();
assets/js/handsontable/handsontable.full.6.2.2.js ADDED
@@ -0,0 +1,75997 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * (The MIT License)
3
+ *
4
+ * Copyright (c) 2012-2014 Marcin Warpechowski
5
+ * Copyright (c) 2015 Handsoncode sp. z o.o. <hello@handsoncode.net>
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining
8
+ * a copy of this software and associated documentation files (the
9
+ * 'Software'), to deal in the Software without restriction, including
10
+ * without limitation the rights to use, copy, modify, merge, publish,
11
+ * distribute, sublicense, and/or sell copies of the Software, and to
12
+ * permit persons to whom the Software is furnished to do so, subject to
13
+ * the following conditions:
14
+ *
15
+ * The above copyright notice and this permission notice shall be
16
+ * included in all copies or substantial portions of the Software.
17
+ *
18
+ * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
19
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+ *
26
+ * Version: 6.2.2
27
+ * Release date: 19/12/2018 (built at 18/12/2018 14:40:17)
28
+ */
29
+ (function webpackUniversalModuleDefinition(root, factory) {
30
+ if(typeof exports === 'object' && typeof module === 'object')
31
+ module.exports = factory();
32
+ else if(typeof define === 'function' && define.amd)
33
+ define("Handsontable", [], factory);
34
+ else if(typeof exports === 'object')
35
+ exports["Handsontable"] = factory();
36
+ else
37
+ root["Handsontable"] = factory();
38
+ })(typeof self !== 'undefined' ? self : this, function() {
39
+ return /******/ (function(modules) { // webpackBootstrap
40
+ /******/ // The module cache
41
+ /******/ var installedModules = {};
42
+ /******/
43
+ /******/ // The require function
44
+ /******/ function __webpack_require__(moduleId) {
45
+ /******/
46
+ /******/ // Check if module is in cache
47
+ /******/ if(installedModules[moduleId]) {
48
+ /******/ return installedModules[moduleId].exports;
49
+ /******/ }
50
+ /******/ // Create a new module (and put it into the cache)
51
+ /******/ var module = installedModules[moduleId] = {
52
+ /******/ i: moduleId,
53
+ /******/ l: false,
54
+ /******/ exports: {}
55
+ /******/ };
56
+ /******/
57
+ /******/ // Execute the module function
58
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
59
+ /******/
60
+ /******/ // Flag the module as loaded
61
+ /******/ module.l = true;
62
+ /******/
63
+ /******/ // Return the exports of the module
64
+ /******/ return module.exports;
65
+ /******/ }
66
+ /******/
67
+ /******/
68
+ /******/ // expose the modules object (__webpack_modules__)
69
+ /******/ __webpack_require__.m = modules;
70
+ /******/
71
+ /******/ // expose the module cache
72
+ /******/ __webpack_require__.c = installedModules;
73
+ /******/
74
+ /******/ // define getter function for harmony exports
75
+ /******/ __webpack_require__.d = function(exports, name, getter) {
76
+ /******/ if(!__webpack_require__.o(exports, name)) {
77
+ /******/ Object.defineProperty(exports, name, {
78
+ /******/ configurable: false,
79
+ /******/ enumerable: true,
80
+ /******/ get: getter
81
+ /******/ });
82
+ /******/ }
83
+ /******/ };
84
+ /******/
85
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
86
+ /******/ __webpack_require__.n = function(module) {
87
+ /******/ var getter = module && module.__esModule ?
88
+ /******/ function getDefault() { return module['default']; } :
89
+ /******/ function getModuleExports() { return module; };
90
+ /******/ __webpack_require__.d(getter, 'a', getter);
91
+ /******/ return getter;
92
+ /******/ };
93
+ /******/
94
+ /******/ // Object.prototype.hasOwnProperty.call
95
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
96
+ /******/
97
+ /******/ // __webpack_public_path__
98
+ /******/ __webpack_require__.p = "";
99
+ /******/
100
+ /******/ // Load entry module and return exports
101
+ /******/ return __webpack_require__(__webpack_require__.s = 437);
102
+ /******/ })
103
+ /************************************************************************/
104
+ /******/ ([
105
+ /* 0 */
106
+ /***/ (function(module, exports, __webpack_require__) {
107
+
108
+ var global = __webpack_require__(6);
109
+ var core = __webpack_require__(21);
110
+ var hide = __webpack_require__(28);
111
+ var redefine = __webpack_require__(23);
112
+ var ctx = __webpack_require__(37);
113
+ var PROTOTYPE = 'prototype';
114
+
115
+ var $export = function (type, name, source) {
116
+ var IS_FORCED = type & $export.F;
117
+ var IS_GLOBAL = type & $export.G;
118
+ var IS_STATIC = type & $export.S;
119
+ var IS_PROTO = type & $export.P;
120
+ var IS_BIND = type & $export.B;
121
+ var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
122
+ var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
123
+ var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
124
+ var key, own, out, exp;
125
+ if (IS_GLOBAL) source = name;
126
+ for (key in source) {
127
+ // contains in native
128
+ own = !IS_FORCED && target && target[key] !== undefined;
129
+ // export native or passed
130
+ out = (own ? target : source)[key];
131
+ // bind timers to global for call from export context
132
+ exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
133
+ // extend global
134
+ if (target) redefine(target, key, out, type & $export.U);
135
+ // export
136
+ if (exports[key] != out) hide(exports, key, exp);
137
+ if (IS_PROTO && expProto[key] != out) expProto[key] = out;
138
+ }
139
+ };
140
+ global.core = core;
141
+ // type bitmap
142
+ $export.F = 1; // forced
143
+ $export.G = 2; // global
144
+ $export.S = 4; // static
145
+ $export.P = 8; // proto
146
+ $export.B = 16; // bind
147
+ $export.W = 32; // wrap
148
+ $export.U = 64; // safe
149
+ $export.R = 128; // real proto method for `library`
150
+ module.exports = $export;
151
+
152
+
153
+ /***/ }),
154
+ /* 1 */
155
+ /***/ (function(module, exports, __webpack_require__) {
156
+
157
+ "use strict";
158
+
159
+
160
+ exports.__esModule = true;
161
+ exports.getParent = getParent;
162
+ exports.closest = closest;
163
+ exports.closestDown = closestDown;
164
+ exports.isChildOf = isChildOf;
165
+ exports.isChildOfWebComponentTable = isChildOfWebComponentTable;
166
+ exports.polymerWrap = polymerWrap;
167
+ exports.polymerUnwrap = polymerUnwrap;
168
+ exports.index = index;
169
+ exports.overlayContainsElement = overlayContainsElement;
170
+ exports.hasClass = hasClass;
171
+ exports.addClass = addClass;
172
+ exports.removeClass = removeClass;
173
+ exports.removeTextNodes = removeTextNodes;
174
+ exports.empty = empty;
175
+ exports.fastInnerHTML = fastInnerHTML;
176
+ exports.fastInnerText = fastInnerText;
177
+ exports.isVisible = isVisible;
178
+ exports.offset = offset;
179
+ exports.getWindowScrollTop = getWindowScrollTop;
180
+ exports.getWindowScrollLeft = getWindowScrollLeft;
181
+ exports.getScrollTop = getScrollTop;
182
+ exports.getScrollLeft = getScrollLeft;
183
+ exports.getScrollableElement = getScrollableElement;
184
+ exports.getTrimmingContainer = getTrimmingContainer;
185
+ exports.getStyle = getStyle;
186
+ exports.getComputedStyle = getComputedStyle;
187
+ exports.outerWidth = outerWidth;
188
+ exports.outerHeight = outerHeight;
189
+ exports.innerHeight = innerHeight;
190
+ exports.innerWidth = innerWidth;
191
+ exports.addEvent = addEvent;
192
+ exports.removeEvent = removeEvent;
193
+ exports.getCaretPosition = getCaretPosition;
194
+ exports.getSelectionEndPosition = getSelectionEndPosition;
195
+ exports.getSelectionText = getSelectionText;
196
+ exports.setCaretPosition = setCaretPosition;
197
+ exports.getScrollbarWidth = getScrollbarWidth;
198
+ exports.hasVerticalScrollbar = hasVerticalScrollbar;
199
+ exports.hasHorizontalScrollbar = hasHorizontalScrollbar;
200
+ exports.setOverlayPosition = setOverlayPosition;
201
+ exports.getCssTransform = getCssTransform;
202
+ exports.resetCssTransform = resetCssTransform;
203
+ exports.isInput = isInput;
204
+ exports.isOutsideInput = isOutsideInput;
205
+ exports.HTML_CHARACTERS = void 0;
206
+
207
+ var _browser = __webpack_require__(42);
208
+
209
+ var _feature = __webpack_require__(47);
210
+
211
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
212
+
213
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
214
+
215
+ function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
216
+
217
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
218
+
219
+ /**
220
+ * Get the parent of the specified node in the DOM tree.
221
+ *
222
+ * @param {HTMLElement} element Element from which traversing is started.
223
+ * @param {Number} [level=0] Traversing deep level.
224
+ * @return {HTMLElement|null}
225
+ */
226
+ function getParent(element) {
227
+ var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
228
+ var iteration = -1;
229
+ var parent = null;
230
+ var elementToCheck = element;
231
+
232
+ while (elementToCheck !== null) {
233
+ if (iteration === level) {
234
+ parent = elementToCheck;
235
+ break;
236
+ }
237
+
238
+ if (elementToCheck.host && elementToCheck.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
239
+ elementToCheck = elementToCheck.host;
240
+ } else {
241
+ iteration += 1;
242
+ elementToCheck = elementToCheck.parentNode;
243
+ }
244
+ }
245
+
246
+ return parent;
247
+ }
248
+ /**
249
+ * Goes up the DOM tree (including given element) until it finds an element that matches the nodes or nodes name.
250
+ * This method goes up through web components.
251
+ *
252
+ * @param {HTMLElement} element Element from which traversing is started
253
+ * @param {Array} nodes Array of elements or Array of elements name
254
+ * @param {HTMLElement} [until]
255
+ * @returns {HTMLElement|null}
256
+ */
257
+
258
+
259
+ function closest(element, nodes, until) {
260
+ var elementToCheck = element;
261
+
262
+ while (elementToCheck !== null && elementToCheck !== until) {
263
+ if (elementToCheck.nodeType === Node.ELEMENT_NODE && (nodes.indexOf(elementToCheck.nodeName) > -1 || nodes.indexOf(elementToCheck) > -1)) {
264
+ return elementToCheck;
265
+ }
266
+
267
+ if (elementToCheck.host && elementToCheck.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
268
+ elementToCheck = elementToCheck.host;
269
+ } else {
270
+ elementToCheck = elementToCheck.parentNode;
271
+ }
272
+ }
273
+
274
+ return null;
275
+ }
276
+ /**
277
+ * Goes "down" the DOM tree (including given element) until it finds an element that matches the nodes or nodes name.
278
+ *
279
+ * @param {HTMLElement} element Element from which traversing is started
280
+ * @param {Array} nodes Array of elements or Array of elements name
281
+ * @param {HTMLElement} [until]
282
+ * @returns {HTMLElement|null}
283
+ */
284
+
285
+
286
+ function closestDown(element, nodes, until) {
287
+ var matched = [];
288
+ var elementToCheck = element;
289
+
290
+ while (elementToCheck) {
291
+ elementToCheck = closest(elementToCheck, nodes, until);
292
+
293
+ if (!elementToCheck || until && !until.contains(elementToCheck)) {
294
+ break;
295
+ }
296
+
297
+ matched.push(elementToCheck);
298
+
299
+ if (elementToCheck.host && elementToCheck.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
300
+ elementToCheck = elementToCheck.host;
301
+ } else {
302
+ elementToCheck = elementToCheck.parentNode;
303
+ }
304
+ }
305
+
306
+ var length = matched.length;
307
+ return length ? matched[length - 1] : null;
308
+ }
309
+ /**
310
+ * Goes up the DOM tree and checks if element is child of another element.
311
+ *
312
+ * @param child Child element
313
+ * @param {Object|String} parent Parent element OR selector of the parent element.
314
+ * If string provided, function returns `true` for the first occurrence of element with that class.
315
+ * @returns {Boolean}
316
+ */
317
+
318
+
319
+ function isChildOf(child, parent) {
320
+ var node = child.parentNode;
321
+ var queriedParents = [];
322
+
323
+ if (typeof parent === 'string') {
324
+ queriedParents = Array.prototype.slice.call(document.querySelectorAll(parent), 0);
325
+ } else {
326
+ queriedParents.push(parent);
327
+ }
328
+
329
+ while (node !== null) {
330
+ if (queriedParents.indexOf(node) > -1) {
331
+ return true;
332
+ }
333
+
334
+ node = node.parentNode;
335
+ }
336
+
337
+ return false;
338
+ }
339
+ /**
340
+ * Check if an element is part of `hot-table` web component.
341
+ *
342
+ * @param {Element} element
343
+ * @returns {Boolean}
344
+ */
345
+
346
+
347
+ function isChildOfWebComponentTable(element) {
348
+ var hotTableName = 'hot-table';
349
+ var result = false;
350
+ var parentNode = polymerWrap(element);
351
+
352
+ function isHotTable(testElement) {
353
+ return testElement.nodeType === Node.ELEMENT_NODE && testElement.nodeName === hotTableName.toUpperCase();
354
+ }
355
+
356
+ while (parentNode !== null) {
357
+ if (isHotTable(parentNode)) {
358
+ result = true;
359
+ break;
360
+ } else if (parentNode.host && parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
361
+ result = isHotTable(parentNode.host);
362
+
363
+ if (result) {
364
+ break;
365
+ }
366
+
367
+ parentNode = parentNode.host;
368
+ }
369
+
370
+ parentNode = parentNode.parentNode;
371
+ }
372
+
373
+ return result;
374
+ }
375
+ /* global Polymer wrap unwrap */
376
+
377
+ /**
378
+ * Wrap element into polymer/webcomponent container if exists
379
+ *
380
+ * @param element
381
+ * @returns {*}
382
+ */
383
+
384
+
385
+ function polymerWrap(element) {
386
+ return typeof Polymer !== 'undefined' && typeof wrap === 'function' ? wrap(element) : element;
387
+ }
388
+ /**
389
+ * Unwrap element from polymer/webcomponent container if exists
390
+ *
391
+ * @param element
392
+ * @returns {*}
393
+ */
394
+
395
+
396
+ function polymerUnwrap(element) {
397
+ return typeof Polymer !== 'undefined' && typeof unwrap === 'function' ? unwrap(element) : element;
398
+ }
399
+ /**
400
+ * Counts index of element within its parent
401
+ * WARNING: for performance reasons, assumes there are only element nodes (no text nodes). This is true for Walkotnable
402
+ * Otherwise would need to check for nodeType or use previousElementSibling
403
+ *
404
+ * @see http://jsperf.com/sibling-index/10
405
+ * @param {Element} element
406
+ * @return {Number}
407
+ */
408
+
409
+
410
+ function index(element) {
411
+ var i = 0;
412
+ var elementToCheck = element;
413
+
414
+ if (elementToCheck.previousSibling) {
415
+ /* eslint-disable no-cond-assign */
416
+ while (elementToCheck = elementToCheck.previousSibling) {
417
+ i += 1;
418
+ }
419
+ }
420
+
421
+ return i;
422
+ }
423
+ /**
424
+ * Check if the provided overlay contains the provided element
425
+ *
426
+ * @param {String} overlay
427
+ * @param {HTMLElement} element
428
+ * @returns {boolean}
429
+ */
430
+
431
+
432
+ function overlayContainsElement(overlayType, element) {
433
+ var overlayElement = document.querySelector(".ht_clone_".concat(overlayType));
434
+ return overlayElement ? overlayElement.contains(element) : null;
435
+ }
436
+
437
+ var classListSupport = !!document.documentElement.classList;
438
+
439
+ var _hasClass;
440
+
441
+ var _addClass;
442
+
443
+ var _removeClass;
444
+
445
+ function filterEmptyClassNames(classNames) {
446
+ var result = [];
447
+
448
+ if (!classNames || !classNames.length) {
449
+ return result;
450
+ }
451
+
452
+ var len = 0;
453
+
454
+ while (classNames[len]) {
455
+ result.push(classNames[len]);
456
+ len += 1;
457
+ }
458
+
459
+ return result;
460
+ }
461
+
462
+ if (classListSupport) {
463
+ var isSupportMultipleClassesArg = function () {
464
+ var element = document.createElement('div');
465
+ element.classList.add('test', 'test2');
466
+ return element.classList.contains('test2');
467
+ }();
468
+
469
+ _hasClass = function _hasClass(element, className) {
470
+ if (element.classList === void 0 || typeof className !== 'string' || className === '') {
471
+ return false;
472
+ }
473
+
474
+ return element.classList.contains(className);
475
+ };
476
+
477
+ _addClass = function _addClass(element, classes) {
478
+ var className = classes;
479
+
480
+ if (typeof className === 'string') {
481
+ className = className.split(' ');
482
+ }
483
+
484
+ className = filterEmptyClassNames(className);
485
+
486
+ if (className.length > 0) {
487
+ if (isSupportMultipleClassesArg) {
488
+ var _element$classList;
489
+
490
+ (_element$classList = element.classList).add.apply(_element$classList, _toConsumableArray(className));
491
+ } else {
492
+ var len = 0;
493
+
494
+ while (className && className[len]) {
495
+ element.classList.add(className[len]);
496
+ len += 1;
497
+ }
498
+ }
499
+ }
500
+ };
501
+
502
+ _removeClass = function _removeClass(element, classes) {
503
+ var className = classes;
504
+
505
+ if (typeof className === 'string') {
506
+ className = className.split(' ');
507
+ }
508
+
509
+ className = filterEmptyClassNames(className);
510
+
511
+ if (className.length > 0) {
512
+ if (isSupportMultipleClassesArg) {
513
+ var _element$classList2;
514
+
515
+ (_element$classList2 = element.classList).remove.apply(_element$classList2, _toConsumableArray(className));
516
+ } else {
517
+ var len = 0;
518
+
519
+ while (className && className[len]) {
520
+ element.classList.remove(className[len]);
521
+ len += 1;
522
+ }
523
+ }
524
+ }
525
+ };
526
+ } else {
527
+ var createClassNameRegExp = function createClassNameRegExp(className) {
528
+ return new RegExp("(\\s|^)".concat(className, "(\\s|$)"));
529
+ };
530
+
531
+ _hasClass = function _hasClass(element, className) {
532
+ // http://snipplr.com/view/3561/addclass-removeclass-hasclass/
533
+ return element.className !== void 0 && createClassNameRegExp(className).test(element.className);
534
+ };
535
+
536
+ _addClass = function _addClass(element, classes) {
537
+ var len = 0;
538
+ var _className = element.className;
539
+ var className = classes;
540
+
541
+ if (typeof className === 'string') {
542
+ className = className.split(' ');
543
+ }
544
+
545
+ if (_className === '') {
546
+ _className = className.join(' ');
547
+ } else {
548
+ while (className && className[len]) {
549
+ if (!createClassNameRegExp(className[len]).test(_className)) {
550
+ _className += " ".concat(className[len]);
551
+ }
552
+
553
+ len += 1;
554
+ }
555
+ }
556
+
557
+ element.className = _className;
558
+ };
559
+
560
+ _removeClass = function _removeClass(element, classes) {
561
+ var len = 0;
562
+ var _className = element.className;
563
+ var className = classes;
564
+
565
+ if (typeof className === 'string') {
566
+ className = className.split(' ');
567
+ }
568
+
569
+ while (className && className[len]) {
570
+ // String.prototype.trim is defined in polyfill.js
571
+ _className = _className.replace(createClassNameRegExp(className[len]), ' ').trim();
572
+ len += 1;
573
+ }
574
+
575
+ if (element.className !== _className) {
576
+ element.className = _className;
577
+ }
578
+ };
579
+ }
580
+ /**
581
+ * Checks if element has class name
582
+ *
583
+ * @param {HTMLElement} element
584
+ * @param {String} className Class name to check
585
+ * @returns {Boolean}
586
+ */
587
+
588
+
589
+ function hasClass(element, className) {
590
+ return _hasClass(element, className);
591
+ }
592
+ /**
593
+ * Add class name to an element
594
+ *
595
+ * @param {HTMLElement} element
596
+ * @param {String|Array} className Class name as string or array of strings
597
+ */
598
+
599
+
600
+ function addClass(element, className) {
601
+ return _addClass(element, className);
602
+ }
603
+ /**
604
+ * Remove class name from an element
605
+ *
606
+ * @param {HTMLElement} element
607
+ * @param {String|Array} className Class name as string or array of strings
608
+ */
609
+
610
+
611
+ function removeClass(element, className) {
612
+ return _removeClass(element, className);
613
+ }
614
+
615
+ function removeTextNodes(element, parent) {
616
+ if (element.nodeType === 3) {
617
+ parent.removeChild(element); // bye text nodes!
618
+ } else if (['TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TR'].indexOf(element.nodeName) > -1) {
619
+ var childs = element.childNodes;
620
+
621
+ for (var i = childs.length - 1; i >= 0; i--) {
622
+ removeTextNodes(childs[i], element);
623
+ }
624
+ }
625
+ }
626
+ /**
627
+ * Remove childs function
628
+ * WARNING - this doesn't unload events and data attached by jQuery
629
+ * http://jsperf.com/jquery-html-vs-empty-vs-innerhtml/9
630
+ * http://jsperf.com/jquery-html-vs-empty-vs-innerhtml/11 - no siginificant improvement with Chrome remove() method
631
+ *
632
+ * @param element
633
+ * @returns {void}
634
+ */
635
+ //
636
+
637
+
638
+ function empty(element) {
639
+ var child;
640
+ /* eslint-disable no-cond-assign */
641
+
642
+ while (child = element.lastChild) {
643
+ element.removeChild(child);
644
+ }
645
+ }
646
+
647
+ var HTML_CHARACTERS = /(<(.*)>|&(.*);)/;
648
+ /**
649
+ * Insert content into element trying avoid innerHTML method.
650
+ * @return {void}
651
+ */
652
+
653
+ exports.HTML_CHARACTERS = HTML_CHARACTERS;
654
+
655
+ function fastInnerHTML(element, content) {
656
+ if (HTML_CHARACTERS.test(content)) {
657
+ element.innerHTML = content;
658
+ } else {
659
+ fastInnerText(element, content);
660
+ }
661
+ }
662
+ /**
663
+ * Insert text content into element
664
+ * @return {void}
665
+ */
666
+
667
+
668
+ var textContextSupport = !!document.createTextNode('test').textContent;
669
+
670
+ function fastInnerText(element, content) {
671
+ var child = element.firstChild;
672
+
673
+ if (child && child.nodeType === 3 && child.nextSibling === null) {
674
+ // fast lane - replace existing text node
675
+ if (textContextSupport) {
676
+ // http://jsperf.com/replace-text-vs-reuse
677
+ child.textContent = content;
678
+ } else {
679
+ // http://jsperf.com/replace-text-vs-reuse
680
+ child.data = content;
681
+ }
682
+ } else {
683
+ // slow lane - empty element and insert a text node
684
+ empty(element);
685
+ element.appendChild(document.createTextNode(content));
686
+ }
687
+ }
688
+ /**
689
+ * Returns true if element is attached to the DOM and visible, false otherwise
690
+ * @param elem
691
+ * @returns {boolean}
692
+ */
693
+
694
+
695
+ function isVisible(elem) {
696
+ var next = elem;
697
+
698
+ while (polymerUnwrap(next) !== document.documentElement) {
699
+ // until <html> reached
700
+ if (next === null) {
701
+ // parent detached from DOM
702
+ return false;
703
+ } else if (next.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
704
+ if (next.host) {
705
+ // this is Web Components Shadow DOM
706
+ // see: http://w3c.github.io/webcomponents/spec/shadow/#encapsulation
707
+ // according to spec, should be if (next.ownerDocument !== window.document), but that doesn't work yet
708
+ if (next.host.impl) {
709
+ // Chrome 33.0.1723.0 canary (2013-11-29) Web Platform features disabled
710
+ return isVisible(next.host.impl);
711
+ } else if (next.host) {
712
+ // Chrome 33.0.1723.0 canary (2013-11-29) Web Platform features enabled
713
+ return isVisible(next.host);
714
+ }
715
+
716
+ throw new Error('Lost in Web Components world');
717
+ } else {
718
+ return false; // this is a node detached from document in IE8
719
+ }
720
+ } else if (next.style.display === 'none') {
721
+ return false;
722
+ }
723
+
724
+ next = next.parentNode;
725
+ }
726
+
727
+ return true;
728
+ }
729
+ /**
730
+ * Returns elements top and left offset relative to the document. Function is not compatible with jQuery offset.
731
+ *
732
+ * @param {HTMLElement} elem
733
+ * @return {Object} Returns object with `top` and `left` props
734
+ */
735
+
736
+
737
+ function offset(elem) {
738
+ var docElem = document.documentElement;
739
+ var elementToCheck = elem;
740
+ var offsetLeft;
741
+ var offsetTop;
742
+ var lastElem;
743
+ var box;
744
+
745
+ if ((0, _feature.hasCaptionProblem)() && elementToCheck.firstChild && elementToCheck.firstChild.nodeName === 'CAPTION') {
746
+ // fixes problem with Firefox ignoring <caption> in TABLE offset (see also export outerHeight)
747
+ // http://jsperf.com/offset-vs-getboundingclientrect/8
748
+ box = elementToCheck.getBoundingClientRect();
749
+ return {
750
+ top: box.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),
751
+ left: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)
752
+ };
753
+ }
754
+
755
+ offsetLeft = elementToCheck.offsetLeft;
756
+ offsetTop = elementToCheck.offsetTop;
757
+ lastElem = elementToCheck;
758
+ /* eslint-disable no-cond-assign */
759
+
760
+ while (elementToCheck = elementToCheck.offsetParent) {
761
+ // from my observation, document.body always has scrollLeft/scrollTop == 0
762
+ if (elementToCheck === document.body) {
763
+ break;
764
+ }
765
+
766
+ offsetLeft += elementToCheck.offsetLeft;
767
+ offsetTop += elementToCheck.offsetTop;
768
+ lastElem = elementToCheck;
769
+ } // slow - http://jsperf.com/offset-vs-getboundingclientrect/6
770
+
771
+
772
+ if (lastElem && lastElem.style.position === 'fixed') {
773
+ // if(lastElem !== document.body) { //faster but does gives false positive in Firefox
774
+ offsetLeft += window.pageXOffset || docElem.scrollLeft;
775
+ offsetTop += window.pageYOffset || docElem.scrollTop;
776
+ }
777
+
778
+ return {
779
+ left: offsetLeft,
780
+ top: offsetTop
781
+ };
782
+ }
783
+ /**
784
+ * Returns the document's scrollTop property.
785
+ *
786
+ * @returns {Number}
787
+ */
788
+
789
+
790
+ function getWindowScrollTop() {
791
+ var res = window.scrollY;
792
+
793
+ if (res === void 0) {
794
+ // IE8-11
795
+ res = document.documentElement.scrollTop;
796
+ }
797
+
798
+ return res;
799
+ }
800
+ /**
801
+ * Returns the document's scrollLeft property.
802
+ *
803
+ * @returns {Number}
804
+ */
805
+
806
+
807
+ function getWindowScrollLeft() {
808
+ var res = window.scrollX;
809
+
810
+ if (res === void 0) {
811
+ // IE8-11
812
+ res = document.documentElement.scrollLeft;
813
+ }
814
+
815
+ return res;
816
+ }
817
+ /**
818
+ * Returns the provided element's scrollTop property.
819
+ *
820
+ * @param element
821
+ * @returns {Number}
822
+ */
823
+
824
+
825
+ function getScrollTop(element) {
826
+ if (element === window) {
827
+ return getWindowScrollTop();
828
+ }
829
+
830
+ return element.scrollTop;
831
+ }
832
+ /**
833
+ * Returns the provided element's scrollLeft property.
834
+ *
835
+ * @param element
836
+ * @returns {Number}
837
+ */
838
+
839
+
840
+ function getScrollLeft(element) {
841
+ if (element === window) {
842
+ return getWindowScrollLeft();
843
+ }
844
+
845
+ return element.scrollLeft;
846
+ }
847
+ /**
848
+ * Returns a DOM element responsible for scrolling of the provided element.
849
+ *
850
+ * @param {HTMLElement} element
851
+ * @returns {HTMLElement} Element's scrollable parent
852
+ */
853
+
854
+
855
+ function getScrollableElement(element) {
856
+ var props = ['auto', 'scroll'];
857
+ var el = element.parentNode;
858
+ var overflow;
859
+ var overflowX;
860
+ var overflowY;
861
+ var computedStyle = '';
862
+ var computedOverflow = '';
863
+ var computedOverflowY = '';
864
+ var computedOverflowX = '';
865
+
866
+ while (el && el.style && document.body !== el) {
867
+ overflow = el.style.overflow;
868
+ overflowX = el.style.overflowX;
869
+ overflowY = el.style.overflowY;
870
+
871
+ if (overflow === 'scroll' || overflowX === 'scroll' || overflowY === 'scroll') {
872
+ return el;
873
+ } else if (window.getComputedStyle) {
874
+ computedStyle = window.getComputedStyle(el);
875
+ computedOverflow = computedStyle.getPropertyValue('overflow');
876
+ computedOverflowY = computedStyle.getPropertyValue('overflow-y');
877
+ computedOverflowX = computedStyle.getPropertyValue('overflow-x');
878
+
879
+ if (computedOverflow === 'scroll' || computedOverflowX === 'scroll' || computedOverflowY === 'scroll') {
880
+ return el;
881
+ }
882
+ } // The '+ 1' after the scrollHeight/scrollWidth is to prevent problems with zoomed out Chrome.
883
+
884
+
885
+ if (el.clientHeight <= el.scrollHeight + 1 && (props.indexOf(overflowY) !== -1 || props.indexOf(overflow) !== -1 || props.indexOf(computedOverflow) !== -1 || props.indexOf(computedOverflowY) !== -1)) {
886
+ return el;
887
+ }
888
+
889
+ if (el.clientWidth <= el.scrollWidth + 1 && (props.indexOf(overflowX) !== -1 || props.indexOf(overflow) !== -1 || props.indexOf(computedOverflow) !== -1 || props.indexOf(computedOverflowX) !== -1)) {
890
+ return el;
891
+ }
892
+
893
+ el = el.parentNode;
894
+ }
895
+
896
+ return window;
897
+ }
898
+ /**
899
+ * Returns a DOM element responsible for trimming the provided element.
900
+ *
901
+ * @param {HTMLElement} base Base element
902
+ * @returns {HTMLElement} Base element's trimming parent
903
+ */
904
+
905
+
906
+ function getTrimmingContainer(base) {
907
+ var el = base.parentNode;
908
+
909
+ while (el && el.style && document.body !== el) {
910
+ if (el.style.overflow !== 'visible' && el.style.overflow !== '') {
911
+ return el;
912
+ }
913
+
914
+ var computedStyle = getComputedStyle(el);
915
+ var allowedProperties = ['scroll', 'hidden', 'auto'];
916
+ var property = computedStyle.getPropertyValue('overflow');
917
+ var propertyY = computedStyle.getPropertyValue('overflow-y');
918
+ var propertyX = computedStyle.getPropertyValue('overflow-x');
919
+
920
+ if (allowedProperties.includes(property) || allowedProperties.includes(propertyY) || allowedProperties.includes(propertyX)) {
921
+ return el;
922
+ }
923
+
924
+ el = el.parentNode;
925
+ }
926
+
927
+ return window;
928
+ }
929
+ /**
930
+ * Returns a style property for the provided element. (Be it an inline or external style).
931
+ *
932
+ * @param {HTMLElement} element
933
+ * @param {String} prop Wanted property
934
+ * @returns {String|undefined} Element's style property
935
+ */
936
+
937
+
938
+ function getStyle(element, prop) {
939
+ /* eslint-disable */
940
+ if (!element) {
941
+ return;
942
+ } else if (element === window) {
943
+ if (prop === 'width') {
944
+ return window.innerWidth + 'px';
945
+ } else if (prop === 'height') {
946
+ return window.innerHeight + 'px';
947
+ }
948
+
949
+ return;
950
+ }
951
+
952
+ var styleProp = element.style[prop],
953
+ computedStyle;
954
+
955
+ if (styleProp !== '' && styleProp !== void 0) {
956
+ return styleProp;
957
+ } else {
958
+ computedStyle = getComputedStyle(element);
959
+
960
+ if (computedStyle[prop] !== '' && computedStyle[prop] !== void 0) {
961
+ return computedStyle[prop];
962
+ }
963
+ }
964
+ }
965
+ /**
966
+ * Returns a computed style object for the provided element. (Needed if style is declared in external stylesheet).
967
+ *
968
+ * @param element
969
+ * @returns {IEElementStyle|CssStyle} Elements computed style object
970
+ */
971
+
972
+
973
+ function getComputedStyle(element) {
974
+ return element.currentStyle || document.defaultView.getComputedStyle(element);
975
+ }
976
+ /**
977
+ * Returns the element's outer width.
978
+ *
979
+ * @param element
980
+ * @returns {number} Element's outer width
981
+ */
982
+
983
+
984
+ function outerWidth(element) {
985
+ return element.offsetWidth;
986
+ }
987
+ /**
988
+ * Returns the element's outer height
989
+ *
990
+ * @param elem
991
+ * @returns {number} Element's outer height
992
+ */
993
+
994
+
995
+ function outerHeight(elem) {
996
+ if ((0, _feature.hasCaptionProblem)() && elem.firstChild && elem.firstChild.nodeName === 'CAPTION') {
997
+ // fixes problem with Firefox ignoring <caption> in TABLE.offsetHeight
998
+ // jQuery (1.10.1) still has this unsolved
999
+ // may be better to just switch to getBoundingClientRect
1000
+ // http://bililite.com/blog/2009/03/27/finding-the-size-of-a-table/
1001
+ // http://lists.w3.org/Archives/Public/www-style/2009Oct/0089.html
1002
+ // http://bugs.jquery.com/ticket/2196
1003
+ // http://lists.w3.org/Archives/Public/www-style/2009Oct/0140.html#start140
1004
+ return elem.offsetHeight + elem.firstChild.offsetHeight;
1005
+ }
1006
+
1007
+ return elem.offsetHeight;
1008
+ }
1009
+ /**
1010
+ * Returns the element's inner height.
1011
+ *
1012
+ * @param element
1013
+ * @returns {number} Element's inner height
1014
+ */
1015
+
1016
+
1017
+ function innerHeight(element) {
1018
+ return element.clientHeight || element.innerHeight;
1019
+ }
1020
+ /**
1021
+ * Returns the element's inner width.
1022
+ *
1023
+ * @param element
1024
+ * @returns {number} Element's inner width
1025
+ */
1026
+
1027
+
1028
+ function innerWidth(element) {
1029
+ return element.clientWidth || element.innerWidth;
1030
+ }
1031
+
1032
+ function addEvent(element, event, callback) {
1033
+ if (window.addEventListener) {
1034
+ element.addEventListener(event, callback, false);
1035
+ } else {
1036
+ element.attachEvent('on' + event, callback);
1037
+ }
1038
+ }
1039
+
1040
+ function removeEvent(element, event, callback) {
1041
+ if (window.removeEventListener) {
1042
+ element.removeEventListener(event, callback, false);
1043
+ } else {
1044
+ element.detachEvent('on' + event, callback);
1045
+ }
1046
+ }
1047
+ /**
1048
+ * Returns caret position in text input
1049
+ *
1050
+ * @author http://stackoverflow.com/questions/263743/how-to-get-caret-position-in-textarea
1051
+ * @return {Number}
1052
+ */
1053
+
1054
+
1055
+ function getCaretPosition(el) {
1056
+ if (el.selectionStart) {
1057
+ return el.selectionStart;
1058
+ } else if (document.selection) {
1059
+ // IE8
1060
+ el.focus();
1061
+ var r = document.selection.createRange();
1062
+
1063
+ if (r == null) {
1064
+ return 0;
1065
+ }
1066
+
1067
+ var re = el.createTextRange();
1068
+ var rc = re.duplicate();
1069
+ re.moveToBookmark(r.getBookmark());
1070
+ rc.setEndPoint('EndToStart', re);
1071
+ return rc.text.length;
1072
+ }
1073
+
1074
+ return 0;
1075
+ }
1076
+ /**
1077
+ * Returns end of the selection in text input
1078
+ *
1079
+ * @return {Number}
1080
+ */
1081
+
1082
+
1083
+ function getSelectionEndPosition(el) {
1084
+ if (el.selectionEnd) {
1085
+ return el.selectionEnd;
1086
+ } else if (document.selection) {
1087
+ // IE8
1088
+ var r = document.selection.createRange();
1089
+
1090
+ if (r == null) {
1091
+ return 0;
1092
+ }
1093
+
1094
+ var re = el.createTextRange();
1095
+ return re.text.indexOf(r.text) + r.text.length;
1096
+ }
1097
+
1098
+ return 0;
1099
+ }
1100
+ /**
1101
+ * Returns text under selection.
1102
+ *
1103
+ * @returns {String}
1104
+ */
1105
+
1106
+
1107
+ function getSelectionText() {
1108
+ var text = '';
1109
+
1110
+ if (window.getSelection) {
1111
+ text = window.getSelection().toString();
1112
+ } else if (document.selection && document.selection.type !== 'Control') {
1113
+ text = document.selection.createRange().text;
1114
+ }
1115
+
1116
+ return text;
1117
+ }
1118
+ /**
1119
+ * Sets caret position in text input.
1120
+ *
1121
+ * @author http://blog.vishalon.net/index.php/javascript-getting-and-setting-caret-position-in-textarea/
1122
+ * @param {Element} element
1123
+ * @param {Number} pos
1124
+ * @param {Number} endPos
1125
+ */
1126
+
1127
+
1128
+ function setCaretPosition(element, pos, endPos) {
1129
+ if (endPos === void 0) {
1130
+ endPos = pos;
1131
+ }
1132
+
1133
+ if (element.setSelectionRange) {
1134
+ element.focus();
1135
+
1136
+ try {
1137
+ element.setSelectionRange(pos, endPos);
1138
+ } catch (err) {
1139
+ var elementParent = element.parentNode;
1140
+ var parentDisplayValue = elementParent.style.display;
1141
+ elementParent.style.display = 'block';
1142
+ element.setSelectionRange(pos, endPos);
1143
+ elementParent.style.display = parentDisplayValue;
1144
+ }
1145
+ } else if (element.createTextRange) {
1146
+ // IE8
1147
+ var range = element.createTextRange();
1148
+ range.collapse(true);
1149
+ range.moveEnd('character', endPos);
1150
+ range.moveStart('character', pos);
1151
+ range.select();
1152
+ }
1153
+ }
1154
+
1155
+ var cachedScrollbarWidth; // http://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes
1156
+
1157
+ function walkontableCalculateScrollbarWidth() {
1158
+ var inner = document.createElement('div');
1159
+ inner.style.height = '200px';
1160
+ inner.style.width = '100%';
1161
+ var outer = document.createElement('div');
1162
+ outer.style.boxSizing = 'content-box';
1163
+ outer.style.height = '150px';
1164
+ outer.style.left = '0px';
1165
+ outer.style.overflow = 'hidden';
1166
+ outer.style.position = 'absolute';
1167
+ outer.style.top = '0px';
1168
+ outer.style.width = '200px';
1169
+ outer.style.visibility = 'hidden';
1170
+ outer.appendChild(inner);
1171
+ (document.body || document.documentElement).appendChild(outer);
1172
+ var w1 = inner.offsetWidth;
1173
+ outer.style.overflow = 'scroll';
1174
+ var w2 = inner.offsetWidth;
1175
+
1176
+ if (w1 == w2) {
1177
+ w2 = outer.clientWidth;
1178
+ }
1179
+
1180
+ (document.body || document.documentElement).removeChild(outer);
1181
+ return w1 - w2;
1182
+ }
1183
+ /**
1184
+ * Returns the computed width of the native browser scroll bar.
1185
+ *
1186
+ * @return {Number} width
1187
+ */
1188
+
1189
+
1190
+ function getScrollbarWidth() {
1191
+ if (cachedScrollbarWidth === void 0) {
1192
+ cachedScrollbarWidth = walkontableCalculateScrollbarWidth();
1193
+ }
1194
+
1195
+ return cachedScrollbarWidth;
1196
+ }
1197
+ /**
1198
+ * Checks if the provided element has a vertical scrollbar.
1199
+ *
1200
+ * @param {HTMLElement} element
1201
+ * @returns {Boolean}
1202
+ */
1203
+
1204
+
1205
+ function hasVerticalScrollbar(element) {
1206
+ return element.offsetWidth !== element.clientWidth;
1207
+ }
1208
+ /**
1209
+ * Checks if the provided element has a vertical scrollbar.
1210
+ *
1211
+ * @param {HTMLElement} element
1212
+ * @returns {Boolean}
1213
+ */
1214
+
1215
+
1216
+ function hasHorizontalScrollbar(element) {
1217
+ return element.offsetHeight !== element.clientHeight;
1218
+ }
1219
+ /**
1220
+ * Sets overlay position depending on it's type and used browser
1221
+ */
1222
+
1223
+
1224
+ function setOverlayPosition(overlayElem, left, top) {
1225
+ if ((0, _browser.isIE8)() || (0, _browser.isIE9)()) {
1226
+ overlayElem.style.top = top;
1227
+ overlayElem.style.left = left;
1228
+ } else if ((0, _browser.isSafari)()) {
1229
+ overlayElem.style['-webkit-transform'] = 'translate3d(' + left + ',' + top + ',0)';
1230
+ } else {
1231
+ overlayElem.style.transform = 'translate3d(' + left + ',' + top + ',0)';
1232
+ }
1233
+ }
1234
+
1235
+ function getCssTransform(element) {
1236
+ var transform;
1237
+
1238
+ if (element.style.transform && (transform = element.style.transform) !== '') {
1239
+ return ['transform', transform];
1240
+ } else if (element.style['-webkit-transform'] && (transform = element.style['-webkit-transform']) !== '') {
1241
+ return ['-webkit-transform', transform];
1242
+ }
1243
+
1244
+ return -1;
1245
+ }
1246
+
1247
+ function resetCssTransform(element) {
1248
+ if (element.style.transform && element.style.transform !== '') {
1249
+ element.style.transform = '';
1250
+ } else if (element.style['-webkit-transform'] && element.style['-webkit-transform'] !== '') {
1251
+ element.style['-webkit-transform'] = '';
1252
+ }
1253
+ }
1254
+ /**
1255
+ * Determines if the given DOM element is an input field.
1256
+ * Notice: By 'input' we mean input, textarea and select nodes
1257
+ *
1258
+ * @param {HTMLElement} element - DOM element
1259
+ * @returns {Boolean}
1260
+ */
1261
+
1262
+
1263
+ function isInput(element) {
1264
+ var inputs = ['INPUT', 'SELECT', 'TEXTAREA'];
1265
+ return element && (inputs.indexOf(element.nodeName) > -1 || element.contentEditable === 'true');
1266
+ }
1267
+ /**
1268
+ * Determines if the given DOM element is an input field placed OUTSIDE of HOT.
1269
+ * Notice: By 'input' we mean input, textarea and select nodes
1270
+ *
1271
+ * @param {HTMLElement} element - DOM element
1272
+ * @returns {Boolean}
1273
+ */
1274
+
1275
+
1276
+ function isOutsideInput(element) {
1277
+ return isInput(element) && element.className.indexOf('handsontableInput') == -1 && element.className.indexOf('copyPaste') == -1;
1278
+ }
1279
+
1280
+ /***/ }),
1281
+ /* 2 */
1282
+ /***/ (function(module, exports, __webpack_require__) {
1283
+
1284
+ "use strict";
1285
+
1286
+
1287
+ exports.__esModule = true;
1288
+ exports.duckSchema = duckSchema;
1289
+ exports.inherit = inherit;
1290
+ exports.extend = extend;
1291
+ exports.deepExtend = deepExtend;
1292
+ exports.deepClone = deepClone;
1293
+ exports.clone = clone;
1294
+ exports.mixin = mixin;
1295
+ exports.isObjectEqual = isObjectEqual;
1296
+ exports.isObject = isObject;
1297
+ exports.defineGetter = defineGetter;
1298
+ exports.objectEach = objectEach;
1299
+ exports.getProperty = getProperty;
1300
+ exports.deepObjectSize = deepObjectSize;
1301
+ exports.createObjectPropListener = createObjectPropListener;
1302
+ exports.hasOwnProperty = hasOwnProperty;
1303
+
1304
+ var _array = __webpack_require__(3);
1305
+
1306
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1307
+
1308
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1309
+
1310
+ /**
1311
+ * Generate schema for passed object.
1312
+ *
1313
+ * @param {Array|Object} object
1314
+ * @returns {Array|Object}
1315
+ */
1316
+ function duckSchema(object) {
1317
+ var schema;
1318
+
1319
+ if (Array.isArray(object)) {
1320
+ schema = [];
1321
+ } else {
1322
+ schema = {};
1323
+ objectEach(object, function (value, key) {
1324
+ if (key === '__children') {
1325
+ return;
1326
+ }
1327
+
1328
+ if (value && _typeof(value) === 'object' && !Array.isArray(value)) {
1329
+ schema[key] = duckSchema(value);
1330
+ } else if (Array.isArray(value)) {
1331
+ if (value.length && _typeof(value[0]) === 'object' && !Array.isArray(value[0])) {
1332
+ schema[key] = [duckSchema(value[0])];
1333
+ } else {
1334
+ schema[key] = [];
1335
+ }
1336
+ } else {
1337
+ schema[key] = null;
1338
+ }
1339
+ });
1340
+ }
1341
+
1342
+ return schema;
1343
+ }
1344
+ /**
1345
+ * Inherit without without calling parent constructor, and setting `Child.prototype.constructor` to `Child` instead of `Parent`.
1346
+ * Creates temporary dummy function to call it as constructor.
1347
+ * Described in ticket: https://github.com/handsontable/handsontable/pull/516
1348
+ *
1349
+ * @param {Object} Child child class
1350
+ * @param {Object} Parent parent class
1351
+ * @return {Object} extended Child
1352
+ */
1353
+
1354
+
1355
+ function inherit(Child, Parent) {
1356
+ Parent.prototype.constructor = Parent;
1357
+ Child.prototype = new Parent();
1358
+ Child.prototype.constructor = Child;
1359
+ return Child;
1360
+ }
1361
+ /**
1362
+ * Perform shallow extend of a target object with extension's own properties.
1363
+ *
1364
+ * @param {Object} target An object that will receive the new properties.
1365
+ * @param {Object} extension An object containing additional properties to merge into the target.
1366
+ */
1367
+
1368
+
1369
+ function extend(target, extension) {
1370
+ objectEach(extension, function (value, key) {
1371
+ target[key] = value;
1372
+ });
1373
+ return target;
1374
+ }
1375
+ /**
1376
+ * Perform deep extend of a target object with extension's own properties.
1377
+ *
1378
+ * @param {Object} target An object that will receive the new properties.
1379
+ * @param {Object} extension An object containing additional properties to merge into the target.
1380
+ */
1381
+
1382
+
1383
+ function deepExtend(target, extension) {
1384
+ objectEach(extension, function (value, key) {
1385
+ if (extension[key] && _typeof(extension[key]) === 'object') {
1386
+ if (!target[key]) {
1387
+ if (Array.isArray(extension[key])) {
1388
+ target[key] = [];
1389
+ } else if (Object.prototype.toString.call(extension[key]) === '[object Date]') {
1390
+ target[key] = extension[key];
1391
+ } else {
1392
+ target[key] = {};
1393
+ }
1394
+ }
1395
+
1396
+ deepExtend(target[key], extension[key]);
1397
+ } else {
1398
+ target[key] = extension[key];
1399
+ }
1400
+ });
1401
+ }
1402
+ /**
1403
+ * Perform deep clone of an object.
1404
+ * WARNING! Only clones JSON properties. Will cause error when `obj` contains a function, Date, etc.
1405
+ *
1406
+ * @param {Object} obj An object that will be cloned
1407
+ * @return {Object}
1408
+ */
1409
+
1410
+
1411
+ function deepClone(obj) {
1412
+ if (_typeof(obj) === 'object') {
1413
+ return JSON.parse(JSON.stringify(obj));
1414
+ }
1415
+
1416
+ return obj;
1417
+ }
1418
+ /**
1419
+ * Shallow clone object.
1420
+ *
1421
+ * @param {Object} object
1422
+ * @returns {Object}
1423
+ */
1424
+
1425
+
1426
+ function clone(object) {
1427
+ var result = {};
1428
+ objectEach(object, function (value, key) {
1429
+ result[key] = value;
1430
+ });
1431
+ return result;
1432
+ }
1433
+ /**
1434
+ * Extend the Base object (usually prototype) of the functionality the `mixins` objects.
1435
+ *
1436
+ * @param {Object} Base Base object which will be extended.
1437
+ * @param {Object} mixins The object of the functionality will be "copied".
1438
+ * @returns {Object}
1439
+ */
1440
+
1441
+
1442
+ function mixin(Base) {
1443
+ if (!Base.MIXINS) {
1444
+ Base.MIXINS = [];
1445
+ }
1446
+
1447
+ for (var _len = arguments.length, mixins = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1448
+ mixins[_key - 1] = arguments[_key];
1449
+ }
1450
+
1451
+ (0, _array.arrayEach)(mixins, function (mixinItem) {
1452
+ Base.MIXINS.push(mixinItem.MIXIN_NAME);
1453
+ objectEach(mixinItem, function (value, key) {
1454
+ if (Base.prototype[key] !== void 0) {
1455
+ throw new Error("Mixin conflict. Property '".concat(key, "' already exist and cannot be overwritten."));
1456
+ }
1457
+
1458
+ if (typeof value === 'function') {
1459
+ Base.prototype[key] = value;
1460
+ } else {
1461
+ var getter = function _getter(property, initialValue) {
1462
+ var propertyName = "_".concat(property);
1463
+
1464
+ var initValue = function initValue(newValue) {
1465
+ var result = newValue;
1466
+
1467
+ if (Array.isArray(result) || isObject(result)) {
1468
+ result = deepClone(result);
1469
+ }
1470
+
1471
+ return result;
1472
+ };
1473
+
1474
+ return function () {
1475
+ if (this[propertyName] === void 0) {
1476
+ this[propertyName] = initValue(initialValue);
1477
+ }
1478
+
1479
+ return this[propertyName];
1480
+ };
1481
+ };
1482
+
1483
+ var setter = function _setter(property) {
1484
+ var propertyName = "_".concat(property);
1485
+ return function (newValue) {
1486
+ this[propertyName] = newValue;
1487
+ };
1488
+ };
1489
+
1490
+ Object.defineProperty(Base.prototype, key, {
1491
+ get: getter(key, value),
1492
+ set: setter(key),
1493
+ configurable: true
1494
+ });
1495
+ }
1496
+ });
1497
+ });
1498
+ return Base;
1499
+ }
1500
+ /**
1501
+ * Checks if two objects or arrays are (deep) equal
1502
+ *
1503
+ * @param {Object|Array} object1
1504
+ * @param {Object|Array} object2
1505
+ * @returns {Boolean}
1506
+ */
1507
+
1508
+
1509
+ function isObjectEqual(object1, object2) {
1510
+ return JSON.stringify(object1) === JSON.stringify(object2);
1511
+ }
1512
+ /**
1513
+ * Determines whether given object is a plain Object.
1514
+ * Note: String and Array are not plain Objects
1515
+ * @param {*} obj
1516
+ * @returns {boolean}
1517
+ */
1518
+
1519
+
1520
+ function isObject(obj) {
1521
+ return Object.prototype.toString.call(obj) === '[object Object]';
1522
+ }
1523
+
1524
+ function defineGetter(object, property, value, options) {
1525
+ options.value = value;
1526
+ options.writable = options.writable !== false;
1527
+ options.enumerable = options.enumerable !== false;
1528
+ options.configurable = options.configurable !== false;
1529
+ Object.defineProperty(object, property, options);
1530
+ }
1531
+ /**
1532
+ * A specialized version of `.forEach` for objects.
1533
+ *
1534
+ * @param {Object} object The object to iterate over.
1535
+ * @param {Function} iteratee The function invoked per iteration.
1536
+ * @returns {Object} Returns `object`.
1537
+ */
1538
+
1539
+
1540
+ function objectEach(object, iteratee) {
1541
+ // eslint-disable-next-line no-restricted-syntax
1542
+ for (var key in object) {
1543
+ if (!object.hasOwnProperty || object.hasOwnProperty && Object.prototype.hasOwnProperty.call(object, key)) {
1544
+ if (iteratee(object[key], key, object) === false) {
1545
+ break;
1546
+ }
1547
+ }
1548
+ }
1549
+
1550
+ return object;
1551
+ }
1552
+ /**
1553
+ * Get object property by its name. Access to sub properties can be achieved by dot notation (e.q. `'foo.bar.baz'`).
1554
+ *
1555
+ * @param {Object} object Object which value will be exported.
1556
+ * @param {String} name Object property name.
1557
+ * @returns {*}
1558
+ */
1559
+
1560
+
1561
+ function getProperty(object, name) {
1562
+ var names = name.split('.');
1563
+ var result = object;
1564
+ objectEach(names, function (nameItem) {
1565
+ result = result[nameItem];
1566
+
1567
+ if (result === void 0) {
1568
+ result = void 0;
1569
+ return false;
1570
+ }
1571
+ });
1572
+ return result;
1573
+ }
1574
+ /**
1575
+ * Return object length (recursively).
1576
+ *
1577
+ * @param {*} object Object for which we want get length.
1578
+ * @returns {Number}
1579
+ */
1580
+
1581
+
1582
+ function deepObjectSize(object) {
1583
+ if (!isObject(object)) {
1584
+ return 0;
1585
+ }
1586
+
1587
+ var recursObjLen = function recursObjLen(obj) {
1588
+ var result = 0;
1589
+
1590
+ if (isObject(obj)) {
1591
+ objectEach(obj, function (key) {
1592
+ result += recursObjLen(key);
1593
+ });
1594
+ } else {
1595
+ result += 1;
1596
+ }
1597
+
1598
+ return result;
1599
+ };
1600
+
1601
+ return recursObjLen(object);
1602
+ }
1603
+ /**
1604
+ * Create object with property where its value change will be observed.
1605
+ *
1606
+ * @param {*} [defaultValue=undefined] Default value.
1607
+ * @param {String} [propertyToListen='value'] Property to listen.
1608
+ * @returns {Object}
1609
+ */
1610
+
1611
+
1612
+ function createObjectPropListener(defaultValue) {
1613
+ var _holder;
1614
+
1615
+ var propertyToListen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'value';
1616
+ var privateProperty = "_".concat(propertyToListen);
1617
+ var holder = (_holder = {
1618
+ _touched: false
1619
+ }, _defineProperty(_holder, privateProperty, defaultValue), _defineProperty(_holder, "isTouched", function isTouched() {
1620
+ return this._touched;
1621
+ }), _holder);
1622
+ Object.defineProperty(holder, propertyToListen, {
1623
+ get: function get() {
1624
+ return this[privateProperty];
1625
+ },
1626
+ set: function set(value) {
1627
+ this._touched = true;
1628
+ this[privateProperty] = value;
1629
+ },
1630
+ enumerable: true,
1631
+ configurable: true
1632
+ });
1633
+ return holder;
1634
+ }
1635
+ /**
1636
+ * Check if at specified `key` there is any value for `object`.
1637
+ *
1638
+ * @param {Object} object Object to search value at specyfic key.
1639
+ * @param {String} key String key to check.
1640
+ */
1641
+
1642
+
1643
+ function hasOwnProperty(object, key) {
1644
+ return Object.prototype.hasOwnProperty.call(object, key);
1645
+ }
1646
+
1647
+ /***/ }),
1648
+ /* 3 */
1649
+ /***/ (function(module, exports, __webpack_require__) {
1650
+
1651
+ "use strict";
1652
+
1653
+
1654
+ exports.__esModule = true;
1655
+ exports.to2dArray = to2dArray;
1656
+ exports.extendArray = extendArray;
1657
+ exports.pivot = pivot;
1658
+ exports.arrayReduce = arrayReduce;
1659
+ exports.arrayFilter = arrayFilter;
1660
+ exports.arrayMap = arrayMap;
1661
+ exports.arrayEach = arrayEach;
1662
+ exports.arraySum = arraySum;
1663
+ exports.arrayMax = arrayMax;
1664
+ exports.arrayMin = arrayMin;
1665
+ exports.arrayAvg = arrayAvg;
1666
+ exports.arrayFlatten = arrayFlatten;
1667
+ exports.arrayUnique = arrayUnique;
1668
+
1669
+ function to2dArray(arr) {
1670
+ var ilen = arr.length;
1671
+ var i = 0;
1672
+
1673
+ while (i < ilen) {
1674
+ arr[i] = [arr[i]];
1675
+ i += 1;
1676
+ }
1677
+ }
1678
+
1679
+ function extendArray(arr, extension) {
1680
+ var ilen = extension.length;
1681
+ var i = 0;
1682
+
1683
+ while (i < ilen) {
1684
+ arr.push(extension[i]);
1685
+ i += 1;
1686
+ }
1687
+ }
1688
+
1689
+ function pivot(arr) {
1690
+ var pivotedArr = [];
1691
+
1692
+ if (!arr || arr.length === 0 || !arr[0] || arr[0].length === 0) {
1693
+ return pivotedArr;
1694
+ }
1695
+
1696
+ var rowCount = arr.length;
1697
+ var colCount = arr[0].length;
1698
+
1699
+ for (var i = 0; i < rowCount; i++) {
1700
+ for (var j = 0; j < colCount; j++) {
1701
+ if (!pivotedArr[j]) {
1702
+ pivotedArr[j] = [];
1703
+ }
1704
+
1705
+ pivotedArr[j][i] = arr[i][j];
1706
+ }
1707
+ }
1708
+
1709
+ return pivotedArr;
1710
+ }
1711
+ /**
1712
+ * A specialized version of `.reduce` for arrays without support for callback
1713
+ * shorthands and `this` binding.
1714
+ *
1715
+ * {@link https://github.com/lodash/lodash/blob/master/lodash.js}
1716
+ *
1717
+ * @param {Array} array The array to iterate over.
1718
+ * @param {Function} iteratee The function invoked per iteration.
1719
+ * @param {*} [accumulator] The initial value.
1720
+ * @param {Boolean} [initFromArray] Specify using the first element of `array` as the initial value.
1721
+ * @returns {*} Returns the accumulated value.
1722
+ */
1723
+
1724
+
1725
+ function arrayReduce(array, iteratee, accumulator, initFromArray) {
1726
+ var index = -1;
1727
+ var iterable = array;
1728
+ var result = accumulator;
1729
+
1730
+ if (!Array.isArray(array)) {
1731
+ iterable = Array.from(array);
1732
+ }
1733
+
1734
+ var length = iterable.length;
1735
+
1736
+ if (initFromArray && length) {
1737
+ index += 1;
1738
+ result = iterable[index];
1739
+ }
1740
+
1741
+ index += 1;
1742
+
1743
+ while (index < length) {
1744
+ result = iteratee(result, iterable[index], index, iterable);
1745
+ index += 1;
1746
+ }
1747
+
1748
+ return result;
1749
+ }
1750
+ /**
1751
+ * A specialized version of `.filter` for arrays without support for callback
1752
+ * shorthands and `this` binding.
1753
+ *
1754
+ * {@link https://github.com/lodash/lodash/blob/master/lodash.js}
1755
+ *
1756
+ * @param {Array} array The array to iterate over.
1757
+ * @param {Function} predicate The function invoked per iteration.
1758
+ * @returns {Array} Returns the new filtered array.
1759
+ */
1760
+
1761
+
1762
+ function arrayFilter(array, predicate) {
1763
+ var index = 0;
1764
+ var iterable = array;
1765
+
1766
+ if (!Array.isArray(array)) {
1767
+ iterable = Array.from(array);
1768
+ }
1769
+
1770
+ var length = iterable.length;
1771
+ var result = [];
1772
+ var resIndex = -1;
1773
+
1774
+ while (index < length) {
1775
+ var value = iterable[index];
1776
+
1777
+ if (predicate(value, index, iterable)) {
1778
+ resIndex += 1;
1779
+ result[resIndex] = value;
1780
+ }
1781
+
1782
+ index += 1;
1783
+ }
1784
+
1785
+ return result;
1786
+ }
1787
+ /**
1788
+ * A specialized version of `.map` for arrays without support for callback
1789
+ * shorthands and `this` binding.
1790
+ *
1791
+ * @param {Array} array The array to iterate over.
1792
+ * @param {Function} iteratee The function invoked per iteration.
1793
+ * @returns {Array} Returns the new filtered array.
1794
+ */
1795
+
1796
+
1797
+ function arrayMap(array, iteratee) {
1798
+ var index = 0;
1799
+ var iterable = array;
1800
+
1801
+ if (!Array.isArray(array)) {
1802
+ iterable = Array.from(array);
1803
+ }
1804
+
1805
+ var length = iterable.length;
1806
+ var result = [];
1807
+ var resIndex = -1;
1808
+
1809
+ while (index < length) {
1810
+ var value = iterable[index];
1811
+ resIndex += 1;
1812
+ result[resIndex] = iteratee(value, index, iterable);
1813
+ index += 1;
1814
+ }
1815
+
1816
+ return result;
1817
+ }
1818
+ /**
1819
+ * A specialized version of `.forEach` for arrays without support for callback
1820
+ * shorthands and `this` binding.
1821
+ *
1822
+ * {@link https://github.com/lodash/lodash/blob/master/lodash.js}
1823
+ *
1824
+ * @param {Array|*} array The array to iterate over or an any element with implemented iterator protocol.
1825
+ * @param {Function} iteratee The function invoked per iteration.
1826
+ * @returns {Array} Returns `array`.
1827
+ */
1828
+
1829
+
1830
+ function arrayEach(array, iteratee) {
1831
+ var index = 0;
1832
+ var iterable = array;
1833
+
1834
+ if (!Array.isArray(array)) {
1835
+ iterable = Array.from(array);
1836
+ }
1837
+
1838
+ var length = iterable.length;
1839
+
1840
+ while (index < length) {
1841
+ if (iteratee(iterable[index], index, iterable) === false) {
1842
+ break;
1843
+ }
1844
+
1845
+ index += 1;
1846
+ }
1847
+
1848
+ return array;
1849
+ }
1850
+ /**
1851
+ * Calculate sum value for each item of the array.
1852
+ *
1853
+ * @param {Array} array The array to process.
1854
+ * @returns {Number} Returns calculated sum value.
1855
+ */
1856
+
1857
+
1858
+ function arraySum(array) {
1859
+ return arrayReduce(array, function (a, b) {
1860
+ return a + b;
1861
+ }, 0);
1862
+ }
1863
+ /**
1864
+ * Returns the highest value from an array. Can be array of numbers or array of strings.
1865
+ * NOTICE: Mixed values is not supported.
1866
+ *
1867
+ * @param {Array} array The array to process.
1868
+ * @returns {Number} Returns the highest value from an array.
1869
+ */
1870
+
1871
+
1872
+ function arrayMax(array) {
1873
+ return arrayReduce(array, function (a, b) {
1874
+ return a > b ? a : b;
1875
+ }, Array.isArray(array) ? array[0] : void 0);
1876
+ }
1877
+ /**
1878
+ * Returns the lowest value from an array. Can be array of numbers or array of strings.
1879
+ * NOTICE: Mixed values is not supported.
1880
+ *
1881
+ * @param {Array} array The array to process.
1882
+ * @returns {Number} Returns the lowest value from an array.
1883
+ */
1884
+
1885
+
1886
+ function arrayMin(array) {
1887
+ return arrayReduce(array, function (a, b) {
1888
+ return a < b ? a : b;
1889
+ }, Array.isArray(array) ? array[0] : void 0);
1890
+ }
1891
+ /**
1892
+ * Calculate average value for each item of the array.
1893
+ *
1894
+ * @param {Array} array The array to process.
1895
+ * @returns {Number} Returns calculated average value.
1896
+ */
1897
+
1898
+
1899
+ function arrayAvg(array) {
1900
+ if (!array.length) {
1901
+ return 0;
1902
+ }
1903
+
1904
+ return arraySum(array) / array.length;
1905
+ }
1906
+ /**
1907
+ * Flatten multidimensional array.
1908
+ *
1909
+ * @param {Array} array Array of Arrays
1910
+ * @returns {Array}
1911
+ */
1912
+
1913
+
1914
+ function arrayFlatten(array) {
1915
+ return arrayReduce(array, function (initial, value) {
1916
+ return initial.concat(Array.isArray(value) ? arrayFlatten(value) : value);
1917
+ }, []);
1918
+ }
1919
+ /**
1920
+ * Unique values in the array.
1921
+ *
1922
+ * @param {Array} array The array to process.
1923
+ * @returns {Array}
1924
+ */
1925
+
1926
+
1927
+ function arrayUnique(array) {
1928
+ var unique = [];
1929
+ arrayEach(array, function (value) {
1930
+ if (unique.indexOf(value) === -1) {
1931
+ unique.push(value);
1932
+ }
1933
+ });
1934
+ return unique;
1935
+ }
1936
+
1937
+ /***/ }),
1938
+ /* 4 */
1939
+ /***/ (function(module, exports) {
1940
+
1941
+ module.exports = function (exec) {
1942
+ try {
1943
+ return !!exec();
1944
+ } catch (e) {
1945
+ return true;
1946
+ }
1947
+ };
1948
+
1949
+
1950
+ /***/ }),
1951
+ /* 5 */
1952
+ /***/ (function(module, exports, __webpack_require__) {
1953
+
1954
+ var isObject = __webpack_require__(7);
1955
+ module.exports = function (it) {
1956
+ if (!isObject(it)) throw TypeError(it + ' is not an object!');
1957
+ return it;
1958
+ };
1959
+
1960
+
1961
+ /***/ }),
1962
+ /* 6 */
1963
+ /***/ (function(module, exports) {
1964
+
1965
+ // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
1966
+ var global = module.exports = typeof window != 'undefined' && window.Math == Math
1967
+ ? window : typeof self != 'undefined' && self.Math == Math ? self
1968
+ // eslint-disable-next-line no-new-func
1969
+ : Function('return this')();
1970
+ if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
1971
+
1972
+
1973
+ /***/ }),
1974
+ /* 7 */
1975
+ /***/ (function(module, exports) {
1976
+
1977
+ module.exports = function (it) {
1978
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
1979
+ };
1980
+
1981
+
1982
+ /***/ }),
1983
+ /* 8 */
1984
+ /***/ (function(module, exports, __webpack_require__) {
1985
+
1986
+ "use strict";
1987
+
1988
+
1989
+ exports.__esModule = true;
1990
+
1991
+ __webpack_require__(129);
1992
+
1993
+ var _viewportColumns = _interopRequireDefault(__webpack_require__(160));
1994
+
1995
+ exports.ViewportColumnsCalculator = _viewportColumns.default;
1996
+
1997
+ var _viewportRows = _interopRequireDefault(__webpack_require__(161));
1998
+
1999
+ exports.ViewportRowsCalculator = _viewportRows.default;
2000
+
2001
+ var _coords = _interopRequireDefault(__webpack_require__(75));
2002
+
2003
+ exports.CellCoords = _coords.default;
2004
+
2005
+ var _range = _interopRequireDefault(__webpack_require__(162));
2006
+
2007
+ exports.CellRange = _range.default;
2008
+
2009
+ var _column = _interopRequireDefault(__webpack_require__(163));
2010
+
2011
+ exports.ColumnFilter = _column.default;
2012
+
2013
+ var _row = _interopRequireDefault(__webpack_require__(164));
2014
+
2015
+ exports.RowFilter = _row.default;
2016
+
2017
+ var _debug = _interopRequireDefault(__webpack_require__(605));
2018
+
2019
+ exports.DebugOverlay = _debug.default;
2020
+
2021
+ var _left = _interopRequireDefault(__webpack_require__(607));
2022
+
2023
+ exports.LeftOverlay = _left.default;
2024
+
2025
+ var _top = _interopRequireDefault(__webpack_require__(608));
2026
+
2027
+ exports.TopOverlay = _top.default;
2028
+
2029
+ var _topLeftCorner = _interopRequireDefault(__webpack_require__(609));
2030
+
2031
+ exports.TopLeftCornerOverlay = _topLeftCorner.default;
2032
+
2033
+ var _bottom = _interopRequireDefault(__webpack_require__(610));
2034
+
2035
+ exports.BottomOverlay = _bottom.default;
2036
+
2037
+ var _bottomLeftCorner = _interopRequireDefault(__webpack_require__(611));
2038
+
2039
+ exports.BottomLeftCornerOverlay = _bottomLeftCorner.default;
2040
+
2041
+ var _border = _interopRequireDefault(__webpack_require__(293));
2042
+
2043
+ exports.Border = _border.default;
2044
+
2045
+ var _core = _interopRequireDefault(__webpack_require__(165));
2046
+
2047
+ exports.default = _core.default;
2048
+ exports.Core = _core.default;
2049
+
2050
+ var _event = _interopRequireDefault(__webpack_require__(286));
2051
+
2052
+ exports.Event = _event.default;
2053
+
2054
+ var _overlays = _interopRequireDefault(__webpack_require__(287));
2055
+
2056
+ exports.Overlays = _overlays.default;
2057
+
2058
+ var _scroll = _interopRequireDefault(__webpack_require__(288));
2059
+
2060
+ exports.Scroll = _scroll.default;
2061
+
2062
+ var _selection = _interopRequireDefault(__webpack_require__(612));
2063
+
2064
+ exports.Selection = _selection.default;
2065
+
2066
+ var _settings = _interopRequireDefault(__webpack_require__(289));
2067
+
2068
+ exports.Settings = _settings.default;
2069
+
2070
+ var _table = _interopRequireDefault(__webpack_require__(290));
2071
+
2072
+ exports.Table = _table.default;
2073
+
2074
+ var _tableRenderer = _interopRequireDefault(__webpack_require__(291));
2075
+
2076
+ exports.TableRenderer = _tableRenderer.default;
2077
+
2078
+ var _viewport = _interopRequireDefault(__webpack_require__(292));
2079
+
2080
+ exports.Viewport = _viewport.default;
2081
+
2082
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2083
+
2084
+ /***/ }),
2085
+ /* 9 */
2086
+ /***/ (function(module, exports, __webpack_require__) {
2087
+
2088
+ "use strict";
2089
+
2090
+
2091
+ exports.__esModule = true;
2092
+ exports.isNumeric = isNumeric;
2093
+ exports.rangeEach = rangeEach;
2094
+ exports.rangeEachReverse = rangeEachReverse;
2095
+ exports.valueAccordingPercent = valueAccordingPercent;
2096
+
2097
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2098
+
2099
+ /**
2100
+ * Checks if value of n is a numeric one
2101
+ * http://jsperf.com/isnan-vs-isnumeric/4
2102
+ * @param n
2103
+ * @returns {boolean}
2104
+ */
2105
+ function isNumeric(n) {
2106
+ /* eslint-disable */
2107
+ var t = _typeof(n);
2108
+
2109
+ return t == 'number' ? !isNaN(n) && isFinite(n) : t == 'string' ? !n.length ? false : n.length == 1 ? /\d/.test(n) : /^\s*[+-]?\s*(?:(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?)|(?:0x[a-f\d]+))\s*$/i.test(n) : t == 'object' ? !!n && typeof n.valueOf() == 'number' && !(n instanceof Date) : false;
2110
+ }
2111
+ /**
2112
+ * A specialized version of `.forEach` defined by ranges.
2113
+ *
2114
+ * @param {Number} rangeFrom The number from start iterate.
2115
+ * @param {Number|Function} rangeTo The number where finish iterate or function as a iteratee.
2116
+ * @param {Function} [iteratee] The function invoked per iteration.
2117
+ */
2118
+
2119
+
2120
+ function rangeEach(rangeFrom, rangeTo, iteratee) {
2121
+ var index = -1;
2122
+
2123
+ if (typeof rangeTo === 'function') {
2124
+ iteratee = rangeTo;
2125
+ rangeTo = rangeFrom;
2126
+ } else {
2127
+ index = rangeFrom - 1;
2128
+ }
2129
+
2130
+ while (++index <= rangeTo) {
2131
+ if (iteratee(index) === false) {
2132
+ break;
2133
+ }
2134
+ }
2135
+ }
2136
+ /**
2137
+ * A specialized version of `.forEach` defined by ranges iterable in reverse order.
2138
+ *
2139
+ * @param {Number} rangeFrom The number from start iterate.
2140
+ * @param {Number|Function} rangeTo The number where finish iterate or function as a iteratee.
2141
+ * @param {Function} [iteratee] The function invoked per iteration.
2142
+ */
2143
+
2144
+
2145
+ function rangeEachReverse(rangeFrom, rangeTo, iteratee) {
2146
+ var index = rangeFrom + 1;
2147
+
2148
+ if (typeof rangeTo === 'function') {
2149
+ iteratee = rangeTo;
2150
+ rangeTo = 0;
2151
+ }
2152
+
2153
+ while (--index >= rangeTo) {
2154
+ if (iteratee(index) === false) {
2155
+ break;
2156
+ }
2157
+ }
2158
+ }
2159
+ /**
2160
+ * Calculate value from percent.
2161
+ *
2162
+ * @param {Number} value Base value from percent will be calculated.
2163
+ * @param {String|Number} percent Can be Number or String (eq. `'33%'`).
2164
+ * @returns {Number}
2165
+ */
2166
+
2167
+
2168
+ function valueAccordingPercent(value, percent) {
2169
+ percent = parseInt(percent.toString().replace('%', ''), 10);
2170
+ percent = parseInt(value * percent / 100, 10);
2171
+ return percent;
2172
+ }
2173
+
2174
+ /***/ }),
2175
+ /* 10 */
2176
+ /***/ (function(module, exports, __webpack_require__) {
2177
+
2178
+ "use strict";
2179
+
2180
+
2181
+ exports.__esModule = true;
2182
+ exports.getListenersCounter = getListenersCounter;
2183
+ exports.default = void 0;
2184
+
2185
+ var _element = __webpack_require__(1);
2186
+
2187
+ var _object = __webpack_require__(2);
2188
+
2189
+ var _feature = __webpack_require__(47);
2190
+
2191
+ var _event = __webpack_require__(18);
2192
+
2193
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2194
+
2195
+ 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); } }
2196
+
2197
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
2198
+
2199
+ /**
2200
+ * Counter which tracks unregistered listeners (useful for detecting memory leaks).
2201
+ *
2202
+ * @type {Number}
2203
+ */
2204
+ var listenersCounter = 0;
2205
+ /**
2206
+ * Event DOM manager for internal use in Handsontable.
2207
+ *
2208
+ * @class EventManager
2209
+ * @util
2210
+ */
2211
+
2212
+ var EventManager =
2213
+ /*#__PURE__*/
2214
+ function () {
2215
+ /**
2216
+ * @param {Object} [context=null]
2217
+ * @private
2218
+ */
2219
+ function EventManager() {
2220
+ var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2221
+
2222
+ _classCallCheck(this, EventManager);
2223
+
2224
+ this.context = context || this;
2225
+
2226
+ if (!this.context.eventListeners) {
2227
+ this.context.eventListeners = [];
2228
+ }
2229
+ }
2230
+ /**
2231
+ * Register specified listener (`eventName`) to the element.
2232
+ *
2233
+ * @param {Element} element Target element.
2234
+ * @param {String} eventName Event name.
2235
+ * @param {Function} callback Function which will be called after event occur.
2236
+ * @returns {Function} Returns function which you can easily call to remove that event
2237
+ */
2238
+
2239
+
2240
+ _createClass(EventManager, [{
2241
+ key: "addEventListener",
2242
+ value: function addEventListener(element, eventName, callback) {
2243
+ var _this = this;
2244
+
2245
+ var context = this.context;
2246
+
2247
+ function callbackProxy(event) {
2248
+ callback.call(this, extendEvent(context, event));
2249
+ }
2250
+
2251
+ this.context.eventListeners.push({
2252
+ element: element,
2253
+ event: eventName,
2254
+ callback: callback,
2255
+ callbackProxy: callbackProxy
2256
+ });
2257
+ element.addEventListener(eventName, callbackProxy, false);
2258
+ listenersCounter += 1;
2259
+ return function () {
2260
+ _this.removeEventListener(element, eventName, callback);
2261
+ };
2262
+ }
2263
+ /**
2264
+ * Remove the event listener previously registered.
2265
+ *
2266
+ * @param {Element} element Target element.
2267
+ * @param {String} eventName Event name.
2268
+ * @param {Function} callback Function to remove from the event target. It must be the same as during registration listener.
2269
+ */
2270
+
2271
+ }, {
2272
+ key: "removeEventListener",
2273
+ value: function removeEventListener(element, eventName, callback) {
2274
+ var len = this.context.eventListeners.length;
2275
+ var tmpEvent;
2276
+
2277
+ while (len) {
2278
+ len -= 1;
2279
+ tmpEvent = this.context.eventListeners[len];
2280
+
2281
+ if (tmpEvent.event === eventName && tmpEvent.element === element) {
2282
+ if (callback && callback !== tmpEvent.callback) {
2283
+ /* eslint-disable no-continue */
2284
+ continue;
2285
+ }
2286
+
2287
+ this.context.eventListeners.splice(len, 1);
2288
+ tmpEvent.element.removeEventListener(tmpEvent.event, tmpEvent.callbackProxy, false);
2289
+ listenersCounter -= 1;
2290
+ }
2291
+ }
2292
+ }
2293
+ /**
2294
+ * Clear all previously registered events.
2295
+ *
2296
+ * @private
2297
+ * @since 0.15.0-beta3
2298
+ */
2299
+
2300
+ }, {
2301
+ key: "clearEvents",
2302
+ value: function clearEvents() {
2303
+ if (!this.context) {
2304
+ return;
2305
+ }
2306
+
2307
+ var len = this.context.eventListeners.length;
2308
+
2309
+ while (len) {
2310
+ len -= 1;
2311
+ var event = this.context.eventListeners[len];
2312
+
2313
+ if (event) {
2314
+ this.removeEventListener(event.element, event.event, event.callback);
2315
+ }
2316
+ }
2317
+ }
2318
+ /**
2319
+ * Clear all previously registered events.
2320
+ */
2321
+
2322
+ }, {
2323
+ key: "clear",
2324
+ value: function clear() {
2325
+ this.clearEvents();
2326
+ }
2327
+ /**
2328
+ * Destroy instance of EventManager.
2329
+ */
2330
+
2331
+ }, {
2332
+ key: "destroy",
2333
+ value: function destroy() {
2334
+ this.clearEvents();
2335
+ this.context = null;
2336
+ }
2337
+ /**
2338
+ * Trigger event at the specified target element.
2339
+ *
2340
+ * @param {Element} element Target element.
2341
+ * @param {String} eventName Event name.
2342
+ */
2343
+
2344
+ }, {
2345
+ key: "fireEvent",
2346
+ value: function fireEvent(element, eventName) {
2347
+ var options = {
2348
+ bubbles: true,
2349
+ cancelable: eventName !== 'mousemove',
2350
+ view: window,
2351
+ detail: 0,
2352
+ screenX: 0,
2353
+ screenY: 0,
2354
+ clientX: 1,
2355
+ clientY: 1,
2356
+ ctrlKey: false,
2357
+ altKey: false,
2358
+ shiftKey: false,
2359
+ metaKey: false,
2360
+ button: 0,
2361
+ relatedTarget: undefined
2362
+ };
2363
+ var event;
2364
+
2365
+ if (document.createEvent) {
2366
+ event = document.createEvent('MouseEvents');
2367
+ event.initMouseEvent(eventName, options.bubbles, options.cancelable, options.view, options.detail, options.screenX, options.screenY, options.clientX, options.clientY, options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.button, options.relatedTarget || document.body.parentNode);
2368
+ } else {
2369
+ event = document.createEventObject();
2370
+ }
2371
+
2372
+ if (element.dispatchEvent) {
2373
+ element.dispatchEvent(event);
2374
+ } else {
2375
+ element.fireEvent("on".concat(eventName), event);
2376
+ }
2377
+ }
2378
+ }]);
2379
+
2380
+ return EventManager;
2381
+ }();
2382
+ /**
2383
+ * @param {Object} context
2384
+ * @param {Event} event
2385
+ * @private
2386
+ * @returns {*}
2387
+ */
2388
+
2389
+
2390
+ function extendEvent(context, event) {
2391
+ var componentName = 'HOT-TABLE';
2392
+ var isHotTableSpotted;
2393
+ var fromElement;
2394
+ var realTarget;
2395
+ var target;
2396
+ var len;
2397
+ event.isTargetWebComponent = false;
2398
+ event.realTarget = event.target;
2399
+ var nativeStopImmediatePropagation = event.stopImmediatePropagation;
2400
+
2401
+ event.stopImmediatePropagation = function () {
2402
+ nativeStopImmediatePropagation.apply(this);
2403
+ (0, _event.stopImmediatePropagation)(this);
2404
+ };
2405
+
2406
+ if (!EventManager.isHotTableEnv) {
2407
+ return event;
2408
+ } // eslint-disable-next-line no-param-reassign
2409
+
2410
+
2411
+ event = (0, _element.polymerWrap)(event);
2412
+ len = event.path ? event.path.length : 0;
2413
+
2414
+ while (len) {
2415
+ len -= 1;
2416
+
2417
+ if (event.path[len].nodeName === componentName) {
2418
+ isHotTableSpotted = true;
2419
+ } else if (isHotTableSpotted && event.path[len].shadowRoot) {
2420
+ target = event.path[len];
2421
+ break;
2422
+ }
2423
+
2424
+ if (len === 0 && !target) {
2425
+ target = event.path[len];
2426
+ }
2427
+ }
2428
+
2429
+ if (!target) {
2430
+ target = event.target;
2431
+ }
2432
+
2433
+ event.isTargetWebComponent = true;
2434
+
2435
+ if ((0, _feature.isWebComponentSupportedNatively)()) {
2436
+ event.realTarget = event.srcElement || event.toElement;
2437
+ } else if ((0, _object.hasOwnProperty)(context, 'hot') || context.isHotTableEnv || context.wtTable) {
2438
+ // Polymer doesn't support `event.target` property properly we must emulate it ourselves
2439
+ if ((0, _object.hasOwnProperty)(context, 'hot')) {
2440
+ // Custom element
2441
+ fromElement = context.hot ? context.hot.view.wt.wtTable.TABLE : null;
2442
+ } else if (context.isHotTableEnv) {
2443
+ // Handsontable.Core
2444
+ fromElement = context.view.activeWt.wtTable.TABLE.parentNode.parentNode;
2445
+ } else if (context.wtTable) {
2446
+ // Walkontable
2447
+ fromElement = context.wtTable.TABLE.parentNode.parentNode;
2448
+ }
2449
+
2450
+ realTarget = (0, _element.closest)(event.target, [componentName], fromElement);
2451
+
2452
+ if (realTarget) {
2453
+ event.realTarget = fromElement.querySelector(componentName) || event.target;
2454
+ } else {
2455
+ event.realTarget = event.target;
2456
+ }
2457
+ }
2458
+
2459
+ Object.defineProperty(event, 'target', {
2460
+ get: function get() {
2461
+ return (0, _element.polymerWrap)(target);
2462
+ },
2463
+ enumerable: true,
2464
+ configurable: true
2465
+ });
2466
+ return event;
2467
+ }
2468
+
2469
+ var _default = EventManager;
2470
+ exports.default = _default;
2471
+
2472
+ function getListenersCounter() {
2473
+ return listenersCounter;
2474
+ }
2475
+
2476
+ /***/ }),
2477
+ /* 11 */
2478
+ /***/ (function(module, exports, __webpack_require__) {
2479
+
2480
+ "use strict";
2481
+
2482
+
2483
+ exports.__esModule = true;
2484
+ exports.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE = exports.FILTERS_BUTTONS_PLACEHOLDER_VALUE = exports.FILTERS_BUTTONS_PLACEHOLDER_SEARCH = exports.FILTERS_BUTTONS_CANCEL = exports.FILTERS_BUTTONS_OK = exports.FILTERS_BUTTONS_CLEAR = exports.FILTERS_BUTTONS_SELECT_ALL = exports.FILTERS_VALUES_BLANK_CELLS = exports.FILTERS_LABELS_DISJUNCTION = exports.FILTERS_LABELS_CONJUNCTION = exports.FILTERS_DIVS_FILTER_BY_VALUE = exports.FILTERS_DIVS_FILTER_BY_CONDITION = exports.FILTERS_CONDITIONS_YESTERDAY = exports.FILTERS_CONDITIONS_TOMORROW = exports.FILTERS_CONDITIONS_TODAY = exports.FILTERS_CONDITIONS_BEFORE = exports.FILTERS_CONDITIONS_AFTER = exports.FILTERS_CONDITIONS_NOT_BETWEEN = exports.FILTERS_CONDITIONS_BETWEEN = exports.FILTERS_CONDITIONS_LESS_THAN_OR_EQUAL = exports.FILTERS_CONDITIONS_LESS_THAN = exports.FILTERS_CONDITIONS_GREATER_THAN_OR_EQUAL = exports.FILTERS_CONDITIONS_GREATER_THAN = exports.FILTERS_CONDITIONS_BY_VALUE = exports.FILTERS_CONDITIONS_NOT_CONTAIN = exports.FILTERS_CONDITIONS_CONTAINS = exports.FILTERS_CONDITIONS_ENDS_WITH = exports.FILTERS_CONDITIONS_BEGINS_WITH = exports.FILTERS_CONDITIONS_NOT_EQUAL = exports.FILTERS_CONDITIONS_EQUAL = exports.FILTERS_CONDITIONS_NOT_EMPTY = exports.FILTERS_CONDITIONS_EMPTY = exports.FILTERS_CONDITIONS_NONE = exports.FILTERS_CONDITIONS_NAMESPACE = exports.FILTERS_NAMESPACE = exports.CONTEXTMENU_ITEMS_SHOW_ROW = exports.CONTEXTMENU_ITEMS_HIDE_ROW = exports.CONTEXTMENU_ITEMS_SHOW_COLUMN = exports.CONTEXTMENU_ITEMS_HIDE_COLUMN = exports.CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD = exports.CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD = exports.CONTEXTMENU_ITEMS_REMOVE_BORDERS = exports.CONTEXTMENU_ITEMS_BORDERS_LEFT = exports.CONTEXTMENU_ITEMS_BORDERS_BOTTOM = exports.CONTEXTMENU_ITEMS_BORDERS_RIGHT = exports.CONTEXTMENU_ITEMS_BORDERS_TOP = exports.CONTEXTMENU_ITEMS_BORDERS = exports.CONTEXTMENU_ITEMS_ALIGNMENT_BOTTOM = exports.CONTEXTMENU_ITEMS_ALIGNMENT_MIDDLE = exports.CONTEXTMENU_ITEMS_ALIGNMENT_TOP = exports.CONTEXTMENU_ITEMS_ALIGNMENT_JUSTIFY = exports.CONTEXTMENU_ITEMS_ALIGNMENT_RIGHT = exports.CONTEXTMENU_ITEMS_ALIGNMENT_CENTER = exports.CONTEXTMENU_ITEMS_ALIGNMENT_LEFT = exports.CONTEXTMENU_ITEMS_ALIGNMENT = exports.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT = exports.CONTEXTMENU_ITEMS_REMOVE_COMMENT = exports.CONTEXTMENU_ITEMS_EDIT_COMMENT = exports.CONTEXTMENU_ITEMS_ADD_COMMENT = exports.CONTEXTMENU_ITEMS_UNMERGE_CELLS = exports.CONTEXTMENU_ITEMS_MERGE_CELLS = exports.CONTEXTMENU_ITEMS_UNFREEZE_COLUMN = exports.CONTEXTMENU_ITEMS_FREEZE_COLUMN = exports.CONTEXTMENU_ITEMS_CUT = exports.CONTEXTMENU_ITEMS_COPY = exports.CONTEXTMENU_ITEMS_CLEAR_COLUMN = exports.CONTEXTMENU_ITEMS_READ_ONLY = exports.CONTEXTMENU_ITEMS_REDO = exports.CONTEXTMENU_ITEMS_UNDO = exports.CONTEXTMENU_ITEMS_REMOVE_COLUMN = exports.CONTEXTMENU_ITEMS_REMOVE_ROW = exports.CONTEXTMENU_ITEMS_INSERT_RIGHT = exports.CONTEXTMENU_ITEMS_INSERT_LEFT = exports.CONTEXTMENU_ITEMS_ROW_BELOW = exports.CONTEXTMENU_ITEMS_ROW_ABOVE = exports.CONTEXT_MENU_ITEMS_NAMESPACE = void 0;
2485
+
2486
+ /**
2487
+ * Constants for parts of translation.
2488
+ */
2489
+ var CONTEXT_MENU_ITEMS_NAMESPACE = 'ContextMenu:items';
2490
+ exports.CONTEXT_MENU_ITEMS_NAMESPACE = CONTEXT_MENU_ITEMS_NAMESPACE;
2491
+ var CONTEXTMENU_ITEMS_ROW_ABOVE = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".insertRowAbove");
2492
+ exports.CONTEXTMENU_ITEMS_ROW_ABOVE = CONTEXTMENU_ITEMS_ROW_ABOVE;
2493
+ var CONTEXTMENU_ITEMS_ROW_BELOW = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".insertRowBelow");
2494
+ exports.CONTEXTMENU_ITEMS_ROW_BELOW = CONTEXTMENU_ITEMS_ROW_BELOW;
2495
+ var CONTEXTMENU_ITEMS_INSERT_LEFT = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".insertColumnOnTheLeft");
2496
+ exports.CONTEXTMENU_ITEMS_INSERT_LEFT = CONTEXTMENU_ITEMS_INSERT_LEFT;
2497
+ var CONTEXTMENU_ITEMS_INSERT_RIGHT = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".insertColumnOnTheRight");
2498
+ exports.CONTEXTMENU_ITEMS_INSERT_RIGHT = CONTEXTMENU_ITEMS_INSERT_RIGHT;
2499
+ var CONTEXTMENU_ITEMS_REMOVE_ROW = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".removeRow");
2500
+ exports.CONTEXTMENU_ITEMS_REMOVE_ROW = CONTEXTMENU_ITEMS_REMOVE_ROW;
2501
+ var CONTEXTMENU_ITEMS_REMOVE_COLUMN = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".removeColumn");
2502
+ exports.CONTEXTMENU_ITEMS_REMOVE_COLUMN = CONTEXTMENU_ITEMS_REMOVE_COLUMN;
2503
+ var CONTEXTMENU_ITEMS_UNDO = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".undo");
2504
+ exports.CONTEXTMENU_ITEMS_UNDO = CONTEXTMENU_ITEMS_UNDO;
2505
+ var CONTEXTMENU_ITEMS_REDO = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".redo");
2506
+ exports.CONTEXTMENU_ITEMS_REDO = CONTEXTMENU_ITEMS_REDO;
2507
+ var CONTEXTMENU_ITEMS_READ_ONLY = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".readOnly");
2508
+ exports.CONTEXTMENU_ITEMS_READ_ONLY = CONTEXTMENU_ITEMS_READ_ONLY;
2509
+ var CONTEXTMENU_ITEMS_CLEAR_COLUMN = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".clearColumn");
2510
+ exports.CONTEXTMENU_ITEMS_CLEAR_COLUMN = CONTEXTMENU_ITEMS_CLEAR_COLUMN;
2511
+ var CONTEXTMENU_ITEMS_COPY = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".copy");
2512
+ exports.CONTEXTMENU_ITEMS_COPY = CONTEXTMENU_ITEMS_COPY;
2513
+ var CONTEXTMENU_ITEMS_CUT = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".cut");
2514
+ exports.CONTEXTMENU_ITEMS_CUT = CONTEXTMENU_ITEMS_CUT;
2515
+ var CONTEXTMENU_ITEMS_FREEZE_COLUMN = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".freezeColumn");
2516
+ exports.CONTEXTMENU_ITEMS_FREEZE_COLUMN = CONTEXTMENU_ITEMS_FREEZE_COLUMN;
2517
+ var CONTEXTMENU_ITEMS_UNFREEZE_COLUMN = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".unfreezeColumn");
2518
+ exports.CONTEXTMENU_ITEMS_UNFREEZE_COLUMN = CONTEXTMENU_ITEMS_UNFREEZE_COLUMN;
2519
+ var CONTEXTMENU_ITEMS_MERGE_CELLS = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".mergeCells");
2520
+ exports.CONTEXTMENU_ITEMS_MERGE_CELLS = CONTEXTMENU_ITEMS_MERGE_CELLS;
2521
+ var CONTEXTMENU_ITEMS_UNMERGE_CELLS = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".unmergeCells");
2522
+ exports.CONTEXTMENU_ITEMS_UNMERGE_CELLS = CONTEXTMENU_ITEMS_UNMERGE_CELLS;
2523
+ var CONTEXTMENU_ITEMS_ADD_COMMENT = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".addComment");
2524
+ exports.CONTEXTMENU_ITEMS_ADD_COMMENT = CONTEXTMENU_ITEMS_ADD_COMMENT;
2525
+ var CONTEXTMENU_ITEMS_EDIT_COMMENT = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".editComment");
2526
+ exports.CONTEXTMENU_ITEMS_EDIT_COMMENT = CONTEXTMENU_ITEMS_EDIT_COMMENT;
2527
+ var CONTEXTMENU_ITEMS_REMOVE_COMMENT = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".removeComment");
2528
+ exports.CONTEXTMENU_ITEMS_REMOVE_COMMENT = CONTEXTMENU_ITEMS_REMOVE_COMMENT;
2529
+ var CONTEXTMENU_ITEMS_READ_ONLY_COMMENT = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".readOnlyComment");
2530
+ exports.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT = CONTEXTMENU_ITEMS_READ_ONLY_COMMENT;
2531
+ var CONTEXTMENU_ITEMS_ALIGNMENT = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".align");
2532
+ exports.CONTEXTMENU_ITEMS_ALIGNMENT = CONTEXTMENU_ITEMS_ALIGNMENT;
2533
+ var CONTEXTMENU_ITEMS_ALIGNMENT_LEFT = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".align.left");
2534
+ exports.CONTEXTMENU_ITEMS_ALIGNMENT_LEFT = CONTEXTMENU_ITEMS_ALIGNMENT_LEFT;
2535
+ var CONTEXTMENU_ITEMS_ALIGNMENT_CENTER = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".align.center");
2536
+ exports.CONTEXTMENU_ITEMS_ALIGNMENT_CENTER = CONTEXTMENU_ITEMS_ALIGNMENT_CENTER;
2537
+ var CONTEXTMENU_ITEMS_ALIGNMENT_RIGHT = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".align.right");
2538
+ exports.CONTEXTMENU_ITEMS_ALIGNMENT_RIGHT = CONTEXTMENU_ITEMS_ALIGNMENT_RIGHT;
2539
+ var CONTEXTMENU_ITEMS_ALIGNMENT_JUSTIFY = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".align.justify");
2540
+ exports.CONTEXTMENU_ITEMS_ALIGNMENT_JUSTIFY = CONTEXTMENU_ITEMS_ALIGNMENT_JUSTIFY;
2541
+ var CONTEXTMENU_ITEMS_ALIGNMENT_TOP = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".align.top");
2542
+ exports.CONTEXTMENU_ITEMS_ALIGNMENT_TOP = CONTEXTMENU_ITEMS_ALIGNMENT_TOP;
2543
+ var CONTEXTMENU_ITEMS_ALIGNMENT_MIDDLE = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".align.middle");
2544
+ exports.CONTEXTMENU_ITEMS_ALIGNMENT_MIDDLE = CONTEXTMENU_ITEMS_ALIGNMENT_MIDDLE;
2545
+ var CONTEXTMENU_ITEMS_ALIGNMENT_BOTTOM = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".align.bottom");
2546
+ exports.CONTEXTMENU_ITEMS_ALIGNMENT_BOTTOM = CONTEXTMENU_ITEMS_ALIGNMENT_BOTTOM;
2547
+ var CONTEXTMENU_ITEMS_BORDERS = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".borders");
2548
+ exports.CONTEXTMENU_ITEMS_BORDERS = CONTEXTMENU_ITEMS_BORDERS;
2549
+ var CONTEXTMENU_ITEMS_BORDERS_TOP = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".borders.top");
2550
+ exports.CONTEXTMENU_ITEMS_BORDERS_TOP = CONTEXTMENU_ITEMS_BORDERS_TOP;
2551
+ var CONTEXTMENU_ITEMS_BORDERS_RIGHT = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".borders.right");
2552
+ exports.CONTEXTMENU_ITEMS_BORDERS_RIGHT = CONTEXTMENU_ITEMS_BORDERS_RIGHT;
2553
+ var CONTEXTMENU_ITEMS_BORDERS_BOTTOM = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".borders.bottom");
2554
+ exports.CONTEXTMENU_ITEMS_BORDERS_BOTTOM = CONTEXTMENU_ITEMS_BORDERS_BOTTOM;
2555
+ var CONTEXTMENU_ITEMS_BORDERS_LEFT = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".borders.left");
2556
+ exports.CONTEXTMENU_ITEMS_BORDERS_LEFT = CONTEXTMENU_ITEMS_BORDERS_LEFT;
2557
+ var CONTEXTMENU_ITEMS_REMOVE_BORDERS = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".borders.remove");
2558
+ exports.CONTEXTMENU_ITEMS_REMOVE_BORDERS = CONTEXTMENU_ITEMS_REMOVE_BORDERS;
2559
+ var CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".nestedHeaders.insertChildRow");
2560
+ exports.CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD = CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD;
2561
+ var CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".nestedHeaders.detachFromParent");
2562
+ exports.CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD = CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD;
2563
+ var CONTEXTMENU_ITEMS_HIDE_COLUMN = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".hideColumn");
2564
+ exports.CONTEXTMENU_ITEMS_HIDE_COLUMN = CONTEXTMENU_ITEMS_HIDE_COLUMN;
2565
+ var CONTEXTMENU_ITEMS_SHOW_COLUMN = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".showColumn");
2566
+ exports.CONTEXTMENU_ITEMS_SHOW_COLUMN = CONTEXTMENU_ITEMS_SHOW_COLUMN;
2567
+ var CONTEXTMENU_ITEMS_HIDE_ROW = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".hideRow");
2568
+ exports.CONTEXTMENU_ITEMS_HIDE_ROW = CONTEXTMENU_ITEMS_HIDE_ROW;
2569
+ var CONTEXTMENU_ITEMS_SHOW_ROW = "".concat(CONTEXT_MENU_ITEMS_NAMESPACE, ".showRow");
2570
+ exports.CONTEXTMENU_ITEMS_SHOW_ROW = CONTEXTMENU_ITEMS_SHOW_ROW;
2571
+ var FILTERS_NAMESPACE = 'Filters:';
2572
+ exports.FILTERS_NAMESPACE = FILTERS_NAMESPACE;
2573
+ var FILTERS_CONDITIONS_NAMESPACE = "".concat(FILTERS_NAMESPACE, "conditions");
2574
+ exports.FILTERS_CONDITIONS_NAMESPACE = FILTERS_CONDITIONS_NAMESPACE;
2575
+ var FILTERS_CONDITIONS_NONE = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".none");
2576
+ exports.FILTERS_CONDITIONS_NONE = FILTERS_CONDITIONS_NONE;
2577
+ var FILTERS_CONDITIONS_EMPTY = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".isEmpty");
2578
+ exports.FILTERS_CONDITIONS_EMPTY = FILTERS_CONDITIONS_EMPTY;
2579
+ var FILTERS_CONDITIONS_NOT_EMPTY = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".isNotEmpty");
2580
+ exports.FILTERS_CONDITIONS_NOT_EMPTY = FILTERS_CONDITIONS_NOT_EMPTY;
2581
+ var FILTERS_CONDITIONS_EQUAL = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".isEqualTo");
2582
+ exports.FILTERS_CONDITIONS_EQUAL = FILTERS_CONDITIONS_EQUAL;
2583
+ var FILTERS_CONDITIONS_NOT_EQUAL = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".isNotEqualTo");
2584
+ exports.FILTERS_CONDITIONS_NOT_EQUAL = FILTERS_CONDITIONS_NOT_EQUAL;
2585
+ var FILTERS_CONDITIONS_BEGINS_WITH = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".beginsWith");
2586
+ exports.FILTERS_CONDITIONS_BEGINS_WITH = FILTERS_CONDITIONS_BEGINS_WITH;
2587
+ var FILTERS_CONDITIONS_ENDS_WITH = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".endsWith");
2588
+ exports.FILTERS_CONDITIONS_ENDS_WITH = FILTERS_CONDITIONS_ENDS_WITH;
2589
+ var FILTERS_CONDITIONS_CONTAINS = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".contains");
2590
+ exports.FILTERS_CONDITIONS_CONTAINS = FILTERS_CONDITIONS_CONTAINS;
2591
+ var FILTERS_CONDITIONS_NOT_CONTAIN = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".doesNotContain");
2592
+ exports.FILTERS_CONDITIONS_NOT_CONTAIN = FILTERS_CONDITIONS_NOT_CONTAIN;
2593
+ var FILTERS_CONDITIONS_BY_VALUE = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".byValue");
2594
+ exports.FILTERS_CONDITIONS_BY_VALUE = FILTERS_CONDITIONS_BY_VALUE;
2595
+ var FILTERS_CONDITIONS_GREATER_THAN = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".greaterThan");
2596
+ exports.FILTERS_CONDITIONS_GREATER_THAN = FILTERS_CONDITIONS_GREATER_THAN;
2597
+ var FILTERS_CONDITIONS_GREATER_THAN_OR_EQUAL = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".greaterThanOrEqualTo");
2598
+ exports.FILTERS_CONDITIONS_GREATER_THAN_OR_EQUAL = FILTERS_CONDITIONS_GREATER_THAN_OR_EQUAL;
2599
+ var FILTERS_CONDITIONS_LESS_THAN = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".lessThan");
2600
+ exports.FILTERS_CONDITIONS_LESS_THAN = FILTERS_CONDITIONS_LESS_THAN;
2601
+ var FILTERS_CONDITIONS_LESS_THAN_OR_EQUAL = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".lessThanOrEqualTo");
2602
+ exports.FILTERS_CONDITIONS_LESS_THAN_OR_EQUAL = FILTERS_CONDITIONS_LESS_THAN_OR_EQUAL;
2603
+ var FILTERS_CONDITIONS_BETWEEN = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".isBetween");
2604
+ exports.FILTERS_CONDITIONS_BETWEEN = FILTERS_CONDITIONS_BETWEEN;
2605
+ var FILTERS_CONDITIONS_NOT_BETWEEN = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".isNotBetween");
2606
+ exports.FILTERS_CONDITIONS_NOT_BETWEEN = FILTERS_CONDITIONS_NOT_BETWEEN;
2607
+ var FILTERS_CONDITIONS_AFTER = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".after");
2608
+ exports.FILTERS_CONDITIONS_AFTER = FILTERS_CONDITIONS_AFTER;
2609
+ var FILTERS_CONDITIONS_BEFORE = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".before");
2610
+ exports.FILTERS_CONDITIONS_BEFORE = FILTERS_CONDITIONS_BEFORE;
2611
+ var FILTERS_CONDITIONS_TODAY = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".today");
2612
+ exports.FILTERS_CONDITIONS_TODAY = FILTERS_CONDITIONS_TODAY;
2613
+ var FILTERS_CONDITIONS_TOMORROW = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".tomorrow");
2614
+ exports.FILTERS_CONDITIONS_TOMORROW = FILTERS_CONDITIONS_TOMORROW;
2615
+ var FILTERS_CONDITIONS_YESTERDAY = "".concat(FILTERS_CONDITIONS_NAMESPACE, ".yesterday");
2616
+ exports.FILTERS_CONDITIONS_YESTERDAY = FILTERS_CONDITIONS_YESTERDAY;
2617
+ var FILTERS_DIVS_FILTER_BY_CONDITION = "".concat(FILTERS_NAMESPACE, "labels.filterByCondition");
2618
+ exports.FILTERS_DIVS_FILTER_BY_CONDITION = FILTERS_DIVS_FILTER_BY_CONDITION;
2619
+ var FILTERS_DIVS_FILTER_BY_VALUE = "".concat(FILTERS_NAMESPACE, "labels.filterByValue");
2620
+ exports.FILTERS_DIVS_FILTER_BY_VALUE = FILTERS_DIVS_FILTER_BY_VALUE;
2621
+ var FILTERS_LABELS_CONJUNCTION = "".concat(FILTERS_NAMESPACE, "labels.conjunction");
2622
+ exports.FILTERS_LABELS_CONJUNCTION = FILTERS_LABELS_CONJUNCTION;
2623
+ var FILTERS_LABELS_DISJUNCTION = "".concat(FILTERS_NAMESPACE, "labels.disjunction");
2624
+ exports.FILTERS_LABELS_DISJUNCTION = FILTERS_LABELS_DISJUNCTION;
2625
+ var FILTERS_VALUES_BLANK_CELLS = "".concat(FILTERS_NAMESPACE, "values.blankCells");
2626
+ exports.FILTERS_VALUES_BLANK_CELLS = FILTERS_VALUES_BLANK_CELLS;
2627
+ var FILTERS_BUTTONS_SELECT_ALL = "".concat(FILTERS_NAMESPACE, "buttons.selectAll");
2628
+ exports.FILTERS_BUTTONS_SELECT_ALL = FILTERS_BUTTONS_SELECT_ALL;
2629
+ var FILTERS_BUTTONS_CLEAR = "".concat(FILTERS_NAMESPACE, "buttons.clear");
2630
+ exports.FILTERS_BUTTONS_CLEAR = FILTERS_BUTTONS_CLEAR;
2631
+ var FILTERS_BUTTONS_OK = "".concat(FILTERS_NAMESPACE, "buttons.ok");
2632
+ exports.FILTERS_BUTTONS_OK = FILTERS_BUTTONS_OK;
2633
+ var FILTERS_BUTTONS_CANCEL = "".concat(FILTERS_NAMESPACE, "buttons.cancel");
2634
+ exports.FILTERS_BUTTONS_CANCEL = FILTERS_BUTTONS_CANCEL;
2635
+ var FILTERS_BUTTONS_PLACEHOLDER_SEARCH = "".concat(FILTERS_NAMESPACE, "buttons.placeholder.search");
2636
+ exports.FILTERS_BUTTONS_PLACEHOLDER_SEARCH = FILTERS_BUTTONS_PLACEHOLDER_SEARCH;
2637
+ var FILTERS_BUTTONS_PLACEHOLDER_VALUE = "".concat(FILTERS_NAMESPACE, "buttons.placeholder.value");
2638
+ exports.FILTERS_BUTTONS_PLACEHOLDER_VALUE = FILTERS_BUTTONS_PLACEHOLDER_VALUE;
2639
+ var FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE = "".concat(FILTERS_NAMESPACE, "buttons.placeholder.secondValue");
2640
+ exports.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE = FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE;
2641
+
2642
+ /***/ }),
2643
+ /* 12 */
2644
+ /***/ (function(module, exports, __webpack_require__) {
2645
+
2646
+ var store = __webpack_require__(93)('wks');
2647
+ var uid = __webpack_require__(51);
2648
+ var Symbol = __webpack_require__(6).Symbol;
2649
+ var USE_SYMBOL = typeof Symbol == 'function';
2650
+
2651
+ var $exports = module.exports = function (name) {
2652
+ return store[name] || (store[name] =
2653
+ USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
2654
+ };
2655
+
2656
+ $exports.store = store;
2657
+
2658
+
2659
+ /***/ }),
2660
+ /* 13 */
2661
+ /***/ (function(module, exports, __webpack_require__) {
2662
+
2663
+ "use strict";
2664
+
2665
+
2666
+ exports.__esModule = true;
2667
+ exports.registerPlugin = registerPlugin;
2668
+ exports.getPlugin = getPlugin;
2669
+ exports.getRegistredPluginNames = getRegistredPluginNames;
2670
+ exports.getPluginName = getPluginName;
2671
+
2672
+ var _pluginHooks = _interopRequireDefault(__webpack_require__(22));
2673
+
2674
+ var _object = __webpack_require__(2);
2675
+
2676
+ var _string = __webpack_require__(48);
2677
+
2678
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2679
+
2680
+ /**
2681
+ * Utility to register plugins and common namespace for keeping reference to all plugins classes
2682
+ */
2683
+ var registeredPlugins = new WeakMap();
2684
+ /**
2685
+ * Registers plugin under given name
2686
+ *
2687
+ * @param {String} pluginName
2688
+ * @param {Function} PluginClass
2689
+ */
2690
+
2691
+ function registerPlugin(pluginName, PluginClass) {
2692
+ var correctedPluginName = (0, _string.toUpperCaseFirst)(pluginName);
2693
+
2694
+ _pluginHooks.default.getSingleton().add('construct', function () {
2695
+ if (!registeredPlugins.has(this)) {
2696
+ registeredPlugins.set(this, {});
2697
+ }
2698
+
2699
+ var holder = registeredPlugins.get(this);
2700
+
2701
+ if (!holder[correctedPluginName]) {
2702
+ holder[correctedPluginName] = new PluginClass(this);
2703
+ }
2704
+ });
2705
+
2706
+ _pluginHooks.default.getSingleton().add('afterDestroy', function () {
2707
+ if (registeredPlugins.has(this)) {
2708
+ var pluginsHolder = registeredPlugins.get(this);
2709
+ (0, _object.objectEach)(pluginsHolder, function (plugin) {
2710
+ return plugin.destroy();
2711
+ });
2712
+ registeredPlugins.delete(this);
2713
+ }
2714
+ });
2715
+ }
2716
+ /**
2717
+ * @param {Object} instance
2718
+ * @param {String|Function} pluginName
2719
+ * @returns {Function} pluginClass Returns plugin instance if exists or `undefined` if not exists.
2720
+ */
2721
+
2722
+
2723
+ function getPlugin(instance, pluginName) {
2724
+ if (typeof pluginName !== 'string') {
2725
+ throw Error('Only strings can be passed as "plugin" parameter');
2726
+ }
2727
+
2728
+ var _pluginName = (0, _string.toUpperCaseFirst)(pluginName);
2729
+
2730
+ if (!registeredPlugins.has(instance) || !registeredPlugins.get(instance)[_pluginName]) {
2731
+ return void 0;
2732
+ }
2733
+
2734
+ return registeredPlugins.get(instance)[_pluginName];
2735
+ }
2736
+ /**
2737
+ * Get all registred plugins names for concrete Handsontable instance.
2738
+ *
2739
+ * @param {Object} hotInstance
2740
+ * @returns {Array}
2741
+ */
2742
+
2743
+
2744
+ function getRegistredPluginNames(hotInstance) {
2745
+ return registeredPlugins.has(hotInstance) ? Object.keys(registeredPlugins.get(hotInstance)) : [];
2746
+ }
2747
+ /**
2748
+ * Get plugin name.
2749
+ *
2750
+ * @param {Object} hotInstance
2751
+ * @param {Object} plugin
2752
+ * @returns {String|null}
2753
+ */
2754
+
2755
+
2756
+ function getPluginName(hotInstance, plugin) {
2757
+ var pluginName = null;
2758
+
2759
+ if (registeredPlugins.has(hotInstance)) {
2760
+ (0, _object.objectEach)(registeredPlugins.get(hotInstance), function (pluginInstance, name) {
2761
+ if (pluginInstance === plugin) {
2762
+ pluginName = name;
2763
+ }
2764
+ });
2765
+ }
2766
+
2767
+ return pluginName;
2768
+ }
2769
+
2770
+ /***/ }),
2771
+ /* 14 */
2772
+ /***/ (function(module, exports, __webpack_require__) {
2773
+
2774
+ "use strict";
2775
+
2776
+
2777
+ exports.__esModule = true;
2778
+ exports.stringify = stringify;
2779
+ exports.isDefined = isDefined;
2780
+ exports.isUndefined = isUndefined;
2781
+ exports.isEmpty = isEmpty;
2782
+ exports.isRegExp = isRegExp;
2783
+ exports._injectProductInfo = _injectProductInfo;
2784
+
2785
+ var _moment = _interopRequireDefault(__webpack_require__(67));
2786
+
2787
+ var _templateLiteralTag = __webpack_require__(58);
2788
+
2789
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2790
+
2791
+ function _templateObject() {
2792
+ var data = _taggedTemplateLiteral(["\n Your license key of Handsontable Pro has expired.\u200C\u200C\u200C\u200C \n Renew your maintenance plan at https://handsontable.com or downgrade to the previous version of the software.\n "]);
2793
+
2794
+ _templateObject = function _templateObject() {
2795
+ return data;
2796
+ };
2797
+
2798
+ return data;
2799
+ }
2800
+
2801
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
2802
+
2803
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2804
+
2805
+ /**
2806
+ * Converts any value to string.
2807
+ *
2808
+ * @param {*} value
2809
+ * @returns {String}
2810
+ */
2811
+ function stringify(value) {
2812
+ var result;
2813
+
2814
+ switch (_typeof(value)) {
2815
+ case 'string':
2816
+ case 'number':
2817
+ result = "".concat(value);
2818
+ break;
2819
+
2820
+ case 'object':
2821
+ result = value === null ? '' : value.toString();
2822
+ break;
2823
+
2824
+ case 'undefined':
2825
+ result = '';
2826
+ break;
2827
+
2828
+ default:
2829
+ result = value.toString();
2830
+ break;
2831
+ }
2832
+
2833
+ return result;
2834
+ }
2835
+ /**
2836
+ * Checks if given variable is defined.
2837
+ *
2838
+ * @param {*} variable Variable to check.
2839
+ * @returns {Boolean}
2840
+ */
2841
+
2842
+
2843
+ function isDefined(variable) {
2844
+ return typeof variable !== 'undefined';
2845
+ }
2846
+ /**
2847
+ * Checks if given variable is undefined.
2848
+ *
2849
+ * @param {*} variable Variable to check.
2850
+ * @returns {Boolean}
2851
+ */
2852
+
2853
+
2854
+ function isUndefined(variable) {
2855
+ return typeof variable === 'undefined';
2856
+ }
2857
+ /**
2858
+ * Check if given variable is null, empty string or undefined.
2859
+ *
2860
+ * @param {*} variable Variable to check.
2861
+ * @returns {Boolean}
2862
+ */
2863
+
2864
+
2865
+ function isEmpty(variable) {
2866
+ return variable === null || variable === '' || isUndefined(variable);
2867
+ }
2868
+ /**
2869
+ * Check if given variable is a regular expression.
2870
+ *
2871
+ * @param {*} variable Variable to check.
2872
+ * @returns {Boolean}
2873
+ */
2874
+
2875
+
2876
+ function isRegExp(variable) {
2877
+ return Object.prototype.toString.call(variable) === '[object RegExp]';
2878
+ }
2879
+ /* eslint-disable */
2880
+
2881
+
2882
+ var _m = '\x6C\x65\x6E\x67\x74\x68';
2883
+
2884
+ var _hd = function _hd(v) {
2885
+ return parseInt(v, 16);
2886
+ };
2887
+
2888
+ var _pi = function _pi(v) {
2889
+ return parseInt(v, 10);
2890
+ };
2891
+
2892
+ var _ss = function _ss(v, s, l) {
2893
+ return v['\x73\x75\x62\x73\x74\x72'](s, l);
2894
+ };
2895
+
2896
+ var _cp = function _cp(v) {
2897
+ return v['\x63\x6F\x64\x65\x50\x6F\x69\x6E\x74\x41\x74'](0) - 65;
2898
+ };
2899
+
2900
+ var _norm = function _norm(v) {
2901
+ return "".concat(v).replace(/\-/g, '');
2902
+ };
2903
+
2904
+ var _extractTime = function _extractTime(v) {
2905
+ return _hd(_ss(_norm(v), _hd('12'), _cp('\x46'))) / (_hd(_ss(_norm(v), _cp('\x42'), ~~![][_m])) || 9);
2906
+ };
2907
+
2908
+ var _ignored = function _ignored() {
2909
+ return typeof location !== 'undefined' && /^([a-z0-9\-]+\.)?\x68\x61\x6E\x64\x73\x6F\x6E\x74\x61\x62\x6C\x65\x2E\x63\x6F\x6D$/i.test(location.host);
2910
+ };
2911
+
2912
+ var _notified = false;
2913
+
2914
+ function _injectProductInfo(key, element) {
2915
+ key = _norm(key || '');
2916
+ var warningMessage = '';
2917
+ var showDomMessage = true;
2918
+
2919
+ var schemaValidity = _checkKeySchema(key);
2920
+
2921
+ var ignored = _ignored();
2922
+
2923
+ var trial = isEmpty(key) || key === 'trial';
2924
+
2925
+ if (trial || schemaValidity) {
2926
+ if (schemaValidity) {
2927
+ var releaseTime = Math.floor((0, _moment.default)("19/12/2018", 'DD/MM/YYYY').toDate().getTime() / 8.64e7);
2928
+
2929
+ var keyGenTime = _extractTime(key);
2930
+
2931
+ if (keyGenTime > 45000 || keyGenTime !== parseInt(keyGenTime, 10)) {
2932
+ warningMessage = 'The license key provided to Handsontable Pro is invalid. Make sure you pass it correctly.';
2933
+ }
2934
+
2935
+ if (!warningMessage) {
2936
+ if (releaseTime > keyGenTime + 1) {
2937
+ warningMessage = (0, _templateLiteralTag.toSingleLine)(_templateObject());
2938
+ }
2939
+
2940
+ showDomMessage = releaseTime > keyGenTime + 15;
2941
+ }
2942
+ } else {
2943
+ warningMessage = 'Evaluation version of Handsontable Pro. Not licensed for use in a production environment.';
2944
+ }
2945
+ } else {
2946
+ warningMessage = 'The license key provided to Handsontable Pro is invalid. Make sure you pass it correctly.';
2947
+ }
2948
+
2949
+ if (ignored) {
2950
+ warningMessage = false;
2951
+ showDomMessage = false;
2952
+ }
2953
+
2954
+ if (warningMessage && !_notified) {
2955
+ console[trial ? 'info' : 'warn'](warningMessage);
2956
+ _notified = true;
2957
+ }
2958
+
2959
+ if (showDomMessage && element.parentNode) {
2960
+ var message = document.createElement('div');
2961
+ message.id = 'hot-display-license-info';
2962
+ message.appendChild(document.createTextNode('Evaluation version of Handsontable Pro.'));
2963
+ message.appendChild(document.createElement('br'));
2964
+ message.appendChild(document.createTextNode('Not licensed for production use.'));
2965
+ element.parentNode.insertBefore(message, element.nextSibling);
2966
+ }
2967
+ }
2968
+
2969
+ function _checkKeySchema(v) {
2970
+ var z = [][_m];
2971
+ var p = z;
2972
+
2973
+ if (v[_m] !== _cp('\x5A')) {
2974
+ return false;
2975
+ }
2976
+
2977
+ for (var c = '', i = '\x42\x3C\x48\x34\x50\x2B'.split(''), j = _cp(i.shift()); j; j = _cp(i.shift() || 'A')) {
2978
+ --j < ''[_m] ? p = p | (_pi("".concat(_pi(_hd(c) + (_hd(_ss(v, Math.abs(j), 2)) + []).padStart(2, '0')))) % 97 || 2) >> 1 : c = _ss(v, j, !j ? 6 : i[_m] === 1 ? 9 : 8);
2979
+ }
2980
+
2981
+ return p === z;
2982
+ }
2983
+ /* eslint-enable */
2984
+
2985
+ /***/ }),
2986
+ /* 15 */
2987
+ /***/ (function(module, exports, __webpack_require__) {
2988
+
2989
+ "use strict";
2990
+
2991
+
2992
+ exports.__esModule = true;
2993
+ exports.default = void 0;
2994
+
2995
+ var _object = __webpack_require__(2);
2996
+
2997
+ var _array = __webpack_require__(3);
2998
+
2999
+ var _recordTranslator = __webpack_require__(424);
3000
+
3001
+ var _plugins = __webpack_require__(13);
3002
+
3003
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3004
+
3005
+ 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); } }
3006
+
3007
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
3008
+
3009
+ var privatePool = new WeakMap();
3010
+ var initializedPlugins = null;
3011
+ /**
3012
+ * @util
3013
+ */
3014
+
3015
+ var BasePlugin =
3016
+ /*#__PURE__*/
3017
+ function () {
3018
+ /**
3019
+ * @param {Object} hotInstance Handsontable instance.
3020
+ */
3021
+ function BasePlugin(hotInstance) {
3022
+ var _this = this;
3023
+
3024
+ _classCallCheck(this, BasePlugin);
3025
+
3026
+ /**
3027
+ * Handsontable instance.
3028
+ *
3029
+ * @type {Core}
3030
+ */
3031
+ (0, _object.defineGetter)(this, 'hot', hotInstance, {
3032
+ writable: false
3033
+ });
3034
+ (0, _object.defineGetter)(this, 't', (0, _recordTranslator.getTranslator)(hotInstance), {
3035
+ writable: false
3036
+ });
3037
+ privatePool.set(this, {
3038
+ hooks: {}
3039
+ });
3040
+ initializedPlugins = null;
3041
+ this.pluginName = null;
3042
+ this.pluginsInitializedCallbacks = [];
3043
+ this.isPluginsReady = false;
3044
+ this.enabled = false;
3045
+ this.initialized = false;
3046
+ this.hot.addHook('afterPluginsInitialized', function () {
3047
+ return _this.onAfterPluginsInitialized();
3048
+ });
3049
+ this.hot.addHook('afterUpdateSettings', function (newSettings) {
3050
+ return _this.onUpdateSettings(newSettings);
3051
+ });
3052
+ this.hot.addHook('beforeInit', function () {
3053
+ return _this.init();
3054
+ });
3055
+ }
3056
+
3057
+ _createClass(BasePlugin, [{
3058
+ key: "init",
3059
+ value: function init() {
3060
+ this.pluginName = (0, _plugins.getPluginName)(this.hot, this);
3061
+
3062
+ if (this.isEnabled && this.isEnabled()) {
3063
+ this.enablePlugin();
3064
+ }
3065
+
3066
+ if (!initializedPlugins) {
3067
+ initializedPlugins = (0, _plugins.getRegistredPluginNames)(this.hot);
3068
+ }
3069
+
3070
+ if (initializedPlugins.indexOf(this.pluginName) >= 0) {
3071
+ initializedPlugins.splice(initializedPlugins.indexOf(this.pluginName), 1);
3072
+ }
3073
+
3074
+ if (!initializedPlugins.length) {
3075
+ this.hot.runHooks('afterPluginsInitialized');
3076
+ }
3077
+
3078
+ this.initialized = true;
3079
+ }
3080
+ /**
3081
+ * Enable plugin for this Handsontable instance.
3082
+ */
3083
+
3084
+ }, {
3085
+ key: "enablePlugin",
3086
+ value: function enablePlugin() {
3087
+ this.enabled = true;
3088
+ }
3089
+ /**
3090
+ * Disable plugin for this Handsontable instance.
3091
+ */
3092
+
3093
+ }, {
3094
+ key: "disablePlugin",
3095
+ value: function disablePlugin() {
3096
+ if (this.eventManager) {
3097
+ this.eventManager.clear();
3098
+ }
3099
+
3100
+ this.clearHooks();
3101
+ this.enabled = false;
3102
+ }
3103
+ /**
3104
+ * Add listener to plugin hooks system.
3105
+ *
3106
+ * @param {String} name
3107
+ * @param {Function} callback
3108
+ */
3109
+
3110
+ }, {
3111
+ key: "addHook",
3112
+ value: function addHook(name, callback) {
3113
+ privatePool.get(this).hooks[name] = privatePool.get(this).hooks[name] || [];
3114
+ var hooks = privatePool.get(this).hooks[name];
3115
+ this.hot.addHook(name, callback);
3116
+ hooks.push(callback);
3117
+ privatePool.get(this).hooks[name] = hooks;
3118
+ }
3119
+ /**
3120
+ * Remove all hooks listeners by hook name.
3121
+ *
3122
+ * @param {String} name
3123
+ */
3124
+
3125
+ }, {
3126
+ key: "removeHooks",
3127
+ value: function removeHooks(name) {
3128
+ var _this2 = this;
3129
+
3130
+ (0, _array.arrayEach)(privatePool.get(this).hooks[name] || [], function (callback) {
3131
+ _this2.hot.removeHook(name, callback);
3132
+ });
3133
+ }
3134
+ /**
3135
+ * Clear all hooks.
3136
+ */
3137
+
3138
+ }, {
3139
+ key: "clearHooks",
3140
+ value: function clearHooks() {
3141
+ var _this3 = this;
3142
+
3143
+ var hooks = privatePool.get(this).hooks;
3144
+ (0, _object.objectEach)(hooks, function (callbacks, name) {
3145
+ return _this3.removeHooks(name);
3146
+ });
3147
+ hooks.length = 0;
3148
+ }
3149
+ /**
3150
+ * Register function which will be immediately called after all plugins initialized.
3151
+ *
3152
+ * @param {Function} callback
3153
+ */
3154
+
3155
+ }, {
3156
+ key: "callOnPluginsReady",
3157
+ value: function callOnPluginsReady(callback) {
3158
+ if (this.isPluginsReady) {
3159
+ callback();
3160
+ } else {
3161
+ this.pluginsInitializedCallbacks.push(callback);
3162
+ }
3163
+ }
3164
+ /**
3165
+ * On after plugins initialized listener.
3166
+ *
3167
+ * @private
3168
+ */
3169
+
3170
+ }, {
3171
+ key: "onAfterPluginsInitialized",
3172
+ value: function onAfterPluginsInitialized() {
3173
+ (0, _array.arrayEach)(this.pluginsInitializedCallbacks, function (callback) {
3174
+ return callback();
3175
+ });
3176
+ this.pluginsInitializedCallbacks.length = 0;
3177
+ this.isPluginsReady = true;
3178
+ }
3179
+ /**
3180
+ * On update settings listener.
3181
+ *
3182
+ * @private
3183
+ */
3184
+
3185
+ }, {
3186
+ key: "onUpdateSettings",
3187
+ value: function onUpdateSettings() {
3188
+ if (this.isEnabled) {
3189
+ if (this.enabled && !this.isEnabled()) {
3190
+ this.disablePlugin();
3191
+ }
3192
+
3193
+ if (!this.enabled && this.isEnabled()) {
3194
+ this.enablePlugin();
3195
+ }
3196
+
3197
+ if (this.enabled && this.isEnabled()) {
3198
+ this.updatePlugin();
3199
+ }
3200
+ }
3201
+ }
3202
+ /**
3203
+ * Updates the plugin to use the latest options you have specified.
3204
+ *
3205
+ * @private
3206
+ */
3207
+
3208
+ }, {
3209
+ key: "updatePlugin",
3210
+ value: function updatePlugin() {}
3211
+ /**
3212
+ * Destroy plugin.
3213
+ */
3214
+
3215
+ }, {
3216
+ key: "destroy",
3217
+ value: function destroy() {
3218
+ var _this4 = this;
3219
+
3220
+ if (this.eventManager) {
3221
+ this.eventManager.destroy();
3222
+ }
3223
+
3224
+ this.clearHooks();
3225
+ (0, _object.objectEach)(this, function (value, property) {
3226
+ if (property !== 'hot' && property !== 't') {
3227
+ _this4[property] = null;
3228
+ }
3229
+ });
3230
+ delete this.t;
3231
+ delete this.hot;
3232
+ }
3233
+ }]);
3234
+
3235
+ return BasePlugin;
3236
+ }();
3237
+
3238
+ var _default = BasePlugin;
3239
+ exports.default = _default;
3240
+
3241
+ /***/ }),
3242
+ /* 16 */
3243
+ /***/ (function(module, exports, __webpack_require__) {
3244
+
3245
+ // 7.1.15 ToLength
3246
+ var toInteger = __webpack_require__(33);
3247
+ var min = Math.min;
3248
+ module.exports = function (it) {
3249
+ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
3250
+ };
3251
+
3252
+
3253
+ /***/ }),
3254
+ /* 17 */
3255
+ /***/ (function(module, exports, __webpack_require__) {
3256
+
3257
+ var anObject = __webpack_require__(5);
3258
+ var IE8_DOM_DEFINE = __webpack_require__(130);
3259
+ var toPrimitive = __webpack_require__(44);
3260
+ var dP = Object.defineProperty;
3261
+
3262
+ exports.f = __webpack_require__(20) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
3263
+ anObject(O);
3264
+ P = toPrimitive(P, true);
3265
+ anObject(Attributes);
3266
+ if (IE8_DOM_DEFINE) try {
3267
+ return dP(O, P, Attributes);
3268
+ } catch (e) { /* empty */ }
3269
+ if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
3270
+ if ('value' in Attributes) O[P] = Attributes.value;
3271
+ return O;
3272
+ };
3273
+
3274
+
3275
+ /***/ }),
3276
+ /* 18 */
3277
+ /***/ (function(module, exports, __webpack_require__) {
3278
+
3279
+ "use strict";
3280
+
3281
+
3282
+ exports.__esModule = true;
3283
+ exports.stopImmediatePropagation = stopImmediatePropagation;
3284
+ exports.isImmediatePropagationStopped = isImmediatePropagationStopped;
3285
+ exports.stopPropagation = stopPropagation;
3286
+ exports.pageX = pageX;
3287
+ exports.pageY = pageY;
3288
+ exports.isRightClick = isRightClick;
3289
+ exports.isLeftClick = isLeftClick;
3290
+
3291
+ var _element = __webpack_require__(1);
3292
+
3293
+ /**
3294
+ * Prevent other listeners of the same event from being called.
3295
+ *
3296
+ * @param {Event} event
3297
+ */
3298
+ function stopImmediatePropagation(event) {
3299
+ event.isImmediatePropagationEnabled = false;
3300
+ event.cancelBubble = true;
3301
+ }
3302
+ /**
3303
+ * Check if event was stopped by `stopImmediatePropagation`.
3304
+ *
3305
+ * @param event {Event}
3306
+ * @returns {Boolean}
3307
+ */
3308
+
3309
+
3310
+ function isImmediatePropagationStopped(event) {
3311
+ return event.isImmediatePropagationEnabled === false;
3312
+ }
3313
+ /**
3314
+ * Prevent further propagation of the current event (prevent bubbling).
3315
+ *
3316
+ * @param event {Event}
3317
+ */
3318
+
3319
+
3320
+ function stopPropagation(event) {
3321
+ // ie8
3322
+ // http://msdn.microsoft.com/en-us/library/ie/ff975462(v=vs.85).aspx
3323
+ if (typeof event.stopPropagation === 'function') {
3324
+ event.stopPropagation();
3325
+ } else {
3326
+ event.cancelBubble = true;
3327
+ }
3328
+ }
3329
+ /**
3330
+ * Get horizontal coordinate of the event object relative to the whole document.
3331
+ *
3332
+ * @param {Event} event
3333
+ * @returns {Number}
3334
+ */
3335
+
3336
+
3337
+ function pageX(event) {
3338
+ if (event.pageX) {
3339
+ return event.pageX;
3340
+ }
3341
+
3342
+ return event.clientX + (0, _element.getWindowScrollLeft)();
3343
+ }
3344
+ /**
3345
+ * Get vertical coordinate of the event object relative to the whole document.
3346
+ *
3347
+ * @param {Event} event
3348
+ * @returns {Number}
3349
+ */
3350
+
3351
+
3352
+ function pageY(event) {
3353
+ if (event.pageY) {
3354
+ return event.pageY;
3355
+ }
3356
+
3357
+ return event.clientY + (0, _element.getWindowScrollTop)();
3358
+ }
3359
+ /**
3360
+ * Check if provided event was triggered by clicking the right mouse button.
3361
+ *
3362
+ * @param {Event} event DOM Event.
3363
+ * @returns {Boolean}
3364
+ */
3365
+
3366
+
3367
+ function isRightClick(event) {
3368
+ return event.button === 2;
3369
+ }
3370
+ /**
3371
+ * Check if provided event was triggered by clicking the left mouse button.
3372
+ *
3373
+ * @param {Event} event DOM Event.
3374
+ * @returns {Boolean}
3375
+ */
3376
+
3377
+
3378
+ function isLeftClick(event) {
3379
+ return event.button === 0;
3380
+ }
3381
+
3382
+ /***/ }),
3383
+ /* 19 */
3384
+ /***/ (function(module, exports, __webpack_require__) {
3385
+
3386
+ "use strict";
3387
+
3388
+
3389
+ exports.__esModule = true;
3390
+ exports.getRenderer = _getItem;
3391
+ exports.getRegisteredRenderers = exports.getRegisteredRendererNames = exports.hasRenderer = exports.registerRenderer = void 0;
3392
+
3393
+ var _staticRegister2 = _interopRequireDefault(__webpack_require__(46));
3394
+
3395
+ var _cellDecorator = _interopRequireDefault(__webpack_require__(624));
3396
+
3397
+ var _autocompleteRenderer = _interopRequireDefault(__webpack_require__(625));
3398
+
3399
+ var _checkboxRenderer = _interopRequireDefault(__webpack_require__(626));
3400
+
3401
+ var _htmlRenderer = _interopRequireDefault(__webpack_require__(627));
3402
+
3403
+ var _numericRenderer = _interopRequireDefault(__webpack_require__(628));
3404
+
3405
+ var _passwordRenderer = _interopRequireDefault(__webpack_require__(629));
3406
+
3407
+ var _textRenderer = _interopRequireDefault(__webpack_require__(630));
3408
+
3409
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3410
+
3411
+ var _staticRegister = (0, _staticRegister2.default)('renderers'),
3412
+ register = _staticRegister.register,
3413
+ getItem = _staticRegister.getItem,
3414
+ hasItem = _staticRegister.hasItem,
3415
+ getNames = _staticRegister.getNames,
3416
+ getValues = _staticRegister.getValues;
3417
+
3418
+ exports.getRegisteredRenderers = getValues;
3419
+ exports.getRegisteredRendererNames = getNames;
3420
+ exports.hasRenderer = hasItem;
3421
+ exports.registerRenderer = register;
3422
+ register('base', _cellDecorator.default);
3423
+ register('autocomplete', _autocompleteRenderer.default);
3424
+ register('checkbox', _checkboxRenderer.default);
3425
+ register('html', _htmlRenderer.default);
3426
+ register('numeric', _numericRenderer.default);
3427
+ register('password', _passwordRenderer.default);
3428
+ register('text', _textRenderer.default);
3429
+ /**
3430
+ * Retrieve renderer function.
3431
+ *
3432
+ * @param {String} name Renderer identification.
3433
+ * @returns {Function} Returns renderer function.
3434
+ */
3435
+
3436
+ function _getItem(name) {
3437
+ if (typeof name === 'function') {
3438
+ return name;
3439
+ }
3440
+
3441
+ if (!hasItem(name)) {
3442
+ throw Error("No registered renderer found under \"".concat(name, "\" name"));
3443
+ }
3444
+
3445
+ return getItem(name);
3446
+ }
3447
+
3448
+ /***/ }),
3449
+ /* 20 */
3450
+ /***/ (function(module, exports, __webpack_require__) {
3451
+
3452
+ // Thank's IE8 for his funny defineProperty
3453
+ module.exports = !__webpack_require__(4)(function () {
3454
+ return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
3455
+ });
3456
+
3457
+
3458
+ /***/ }),
3459
+ /* 21 */
3460
+ /***/ (function(module, exports) {
3461
+
3462
+ var core = module.exports = { version: '2.6.1' };
3463
+ if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
3464
+
3465
+
3466
+ /***/ }),
3467
+ /* 22 */
3468
+ /***/ (function(module, exports, __webpack_require__) {
3469
+
3470
+ "use strict";
3471
+
3472
+
3473
+ exports.__esModule = true;
3474
+ exports.default = void 0;
3475
+
3476
+ var _array = __webpack_require__(3);
3477
+
3478
+ var _object = __webpack_require__(2);
3479
+
3480
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3481
+
3482
+ 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); } }
3483
+
3484
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
3485
+
3486
+ /**
3487
+ * @description
3488
+ * Handsontable events are the common interface that function in 2 ways: as __callbacks__ and as __hooks__.
3489
+ *
3490
+ * @example
3491
+ *
3492
+ * ```js
3493
+ * // Using events as callbacks:
3494
+ * ...
3495
+ * const hot1 = new Handsontable(document.getElementById('example1'), {
3496
+ * afterChange: function(changes, source) {
3497
+ * $.ajax({
3498
+ * url: "save.php',
3499
+ * data: change
3500
+ * });
3501
+ * }
3502
+ * });
3503
+ * ...
3504
+ * ```
3505
+ *
3506
+ * ```js
3507
+ * // Using events as plugin hooks:
3508
+ * ...
3509
+ * const hot1 = new Handsontable(document.getElementById('example1'), {
3510
+ * myPlugin: true
3511
+ * });
3512
+ *
3513
+ * const hot2 = new Handsontable(document.getElementById('example2'), {
3514
+ * myPlugin: false
3515
+ * });
3516
+ *
3517
+ * // global hook
3518
+ * Handsontable.hooks.add('afterChange', function() {
3519
+ * // Fired twice - for hot1 and hot2
3520
+ * if (this.getSettings().myPlugin) {
3521
+ * // function body - will only run for hot1
3522
+ * }
3523
+ * });
3524
+ *
3525
+ * // local hook (has same effect as a callback)
3526
+ * hot2.addHook('afterChange', function() {
3527
+ * // function body - will only run in #example2
3528
+ * });
3529
+ * ```
3530
+ * ...
3531
+ */
3532
+ // @TODO: Move plugin description hooks to plugin?
3533
+ var REGISTERED_HOOKS = [
3534
+ /**
3535
+ * Fired after resetting a cell's meta. This happens when the {@link Core#updateSettings} method is called.
3536
+ *
3537
+ * @event Hooks#afterCellMetaReset
3538
+ */
3539
+ 'afterCellMetaReset',
3540
+ /**
3541
+ * Fired after one or more cells has been changed. The changes are triggered in any situation when the
3542
+ * value is entered using an editor or changed using API (e.q setDataAtCell)
3543
+ *
3544
+ * __Note:__ For performance reasons, the `changes` array is null for `"loadData"` source.
3545
+ *
3546
+ * @event Hooks#afterChange
3547
+ * @param {Array} changes 2D array containing information about each of the edited cells `[[row, prop, oldVal, newVal], ...]`.
3548
+ * @param {String} [source] String that identifies source of hook call ([list of all available sources]{@link https://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
3549
+ * @example
3550
+ * ```js
3551
+ * new Handsontable(element, {
3552
+ * afterChange: (changes) => {
3553
+ * changes.forEach(([row, prop, oldValue, newValue]) => {
3554
+ * // Some logic...
3555
+ * });
3556
+ * }
3557
+ * })
3558
+ * ```
3559
+ */
3560
+ 'afterChange',
3561
+ /**
3562
+ * Fired by {@link ObserveChanges} plugin after detecting changes in the data source. This hook is fired when
3563
+ * {@link Options#observeChanges} option is enabled.
3564
+ *
3565
+ * @event Hooks#afterChangesObserved
3566
+ */
3567
+ 'afterChangesObserved',
3568
+ /**
3569
+ * Fired by {@link ContextMenu} after setting up the Context Menu's default options. These options are a collection
3570
+ * which user can select by setting an array of keys or an array of objects in {@link Options#contextMenu} option.
3571
+ *
3572
+ * @event Hooks#afterContextMenuDefaultOptions
3573
+ * @param {Array} predefinedItems An array of objects containing information about the pre-defined Context Menu items.
3574
+ */
3575
+ 'afterContextMenuDefaultOptions',
3576
+ /**
3577
+ * Fired by {@link ContextMenu} plugin before setting up the Context Menu's items but after filtering these options by
3578
+ * user (`contextMenu` option). This hook can by helpful to determine if user use specified menu item or to set up
3579
+ * one of the menu item to by always visible.
3580
+ *
3581
+ * @event Hooks#beforeContextMenuSetItems
3582
+ * @param {Object[]} menuItems An array of objects containing information about to generated Context Menu items.
3583
+ */
3584
+ 'beforeContextMenuSetItems',
3585
+ /**
3586
+ * Fired by {@link DropdownMenu} plugin after setting up the Dropdown Menu's default options. These options are a
3587
+ * collection which user can select by setting an array of keys or an array of objects in {@link Options#dropdownMenu}
3588
+ * option.
3589
+ *
3590
+ * @pro
3591
+ * @event Hooks#afterDropdownMenuDefaultOptions
3592
+ * @param {Object[]} predefinedItems An array of objects containing information about the pre-defined Context Menu items.
3593
+ */
3594
+ 'afterDropdownMenuDefaultOptions',
3595
+ /**
3596
+ * Fired by {@link DropdownMenu} plugin before setting up the Dropdown Menu's items but after filtering these options
3597
+ * by user (`dropdownMenu` option). This hook can by helpful to determine if user use specified menu item or to set
3598
+ * up one of the menu item to by always visible.
3599
+ *
3600
+ * @pro
3601
+ * @event Hooks#beforeDropdownMenuSetItems
3602
+ * @param {Object[]} menuItems An array of objects containing information about to generated Dropdown Menu items.
3603
+ */
3604
+ 'beforeDropdownMenuSetItems',
3605
+ /**
3606
+ * Fired by {@link ContextMenu} plugin after hiding the Context Menu. This hook is fired when {@link Options#contextMenu}
3607
+ * option is enabled.
3608
+ *
3609
+ * @event Hooks#afterContextMenuHide
3610
+ * @param {Object} context The Context Menu plugin instance.
3611
+ */
3612
+ 'afterContextMenuHide',
3613
+ /**
3614
+ * Fired by {@link ContextMenu} plugin before opening the Context Menu. This hook is fired when {@link Options#contextMenu}
3615
+ * option is enabled.
3616
+ *
3617
+ * @event Hooks#beforeContextMenuShow
3618
+ * @param {Object} context The Context Menu instance.
3619
+ */
3620
+ 'beforeContextMenuShow',
3621
+ /**
3622
+ * Fired by {@link ContextMenu} plugin after opening the Context Menu. This hook is fired when {@link Options#contextMenu}
3623
+ * option is enabled.
3624
+ *
3625
+ * @event Hooks#afterContextMenuShow
3626
+ * @param {Object} context The Context Menu plugin instance.
3627
+ */
3628
+ 'afterContextMenuShow',
3629
+ /**
3630
+ * Fired by {@link CopyPaste} plugin after reaching the copy limit while copying data. This hook is fired when
3631
+ * {@link Options#copyPaste} option is enabled.
3632
+ *
3633
+ * @event Hooks#afterCopyLimit
3634
+ * @param {Number} selectedRows Count of selected copyable rows.
3635
+ * @param {Number} selectedColumns Count of selected copyable columns.
3636
+ * @param {Number} copyRowsLimit Current copy rows limit.
3637
+ * @param {Number} copyColumnsLimit Current copy columns limit.
3638
+ */
3639
+ 'afterCopyLimit',
3640
+ /**
3641
+ * Fired before created a new column.
3642
+ *
3643
+ * @event Hooks#beforeCreateCol
3644
+ * @param {Number} index Represents the visual index of first newly created column in the data source array.
3645
+ * @param {Number} amount Number of newly created columns in the data source array.
3646
+ * @param {String} [source] String that identifies source of hook call
3647
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
3648
+ */
3649
+ 'beforeCreateCol',
3650
+ /**
3651
+ * Fired after created a new column.
3652
+ *
3653
+ * @event Hooks#afterCreateCol
3654
+ * @param {Number} index Represents the visual index of first newly created column in the data source.
3655
+ * @param {Number} amount Number of newly created columns in the data source.
3656
+ * @param {String} [source] String that identifies source of hook call
3657
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
3658
+ */
3659
+ 'afterCreateCol',
3660
+ /**
3661
+ * Fired before created a new row.
3662
+ *
3663
+ * @event Hooks#beforeCreateRow
3664
+ * @param {Number} index Represents the visual index of first newly created row in the data source array.
3665
+ * @param {Number} amount Number of newly created rows in the data source array.
3666
+ * @param {String} [source] String that identifies source of hook call
3667
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
3668
+ */
3669
+ 'beforeCreateRow',
3670
+ /**
3671
+ * Fired after created a new row.
3672
+ *
3673
+ * @event Hooks#afterCreateRow
3674
+ * @param {Number} index Represents the visual index of first newly created row in the data source array.
3675
+ * @param {Number} amount Number of newly created rows in the data source array.
3676
+ * @param {String} [source] String that identifies source of hook call
3677
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
3678
+ */
3679
+ 'afterCreateRow',
3680
+ /**
3681
+ * Fired after the current cell is deselected.
3682
+ *
3683
+ * @event Hooks#afterDeselect
3684
+ */
3685
+ 'afterDeselect',
3686
+ /**
3687
+ * Fired after destroying the Handsontable instance.
3688
+ *
3689
+ * @event Hooks#afterDestroy
3690
+ */
3691
+ 'afterDestroy',
3692
+ /**
3693
+ * General hook which captures `keydown` events attached to the document body. These events are delegated to the
3694
+ * hooks system and consumed by Core and internal modules (e.g plugins, editors).
3695
+ *
3696
+ * @event Hooks#afterDocumentKeyDown
3697
+ * @param {Event} event A native `keydown` event object.
3698
+ */
3699
+ 'afterDocumentKeyDown',
3700
+ /**
3701
+ * Fired inside the Walkontable's selection `draw` method. Can be used to add additional class names to cells, depending on the current selection.
3702
+ *
3703
+ * @event Hooks#afterDrawSelection
3704
+ * @param {Number} currentRow Row index of the currently processed cell.
3705
+ * @param {Number} currentColumn Column index of the currently cell.
3706
+ * @param {Number[]} cornersOfSelection Array of the current selection in a form of `[startRow, startColumn, endRow, endColumn]`.
3707
+ * @param {Number|undefined} layerLevel Number indicating which layer of selection is currently processed.
3708
+ * @since 0.38.1
3709
+ * @returns {String|undefined} Can return a `String`, which will act as an additional `className` to be added to the currently processed cell.
3710
+ */
3711
+ 'afterDrawSelection',
3712
+ /**
3713
+ * Fired inside the Walkontable's `refreshSelections` method. Can be used to remove additional class names from all cells in the table.
3714
+ *
3715
+ * @event Hooks#beforeRemoveCellClassNames
3716
+ * @since 0.38.1
3717
+ * @returns {String[]|undefined} Can return an `Array` of `String`s. Each of these strings will act like class names to be removed from all the cells in the table.
3718
+ */
3719
+ 'beforeRemoveCellClassNames',
3720
+ /**
3721
+ * Fired after getting the cell settings.
3722
+ *
3723
+ * @event Hooks#afterGetCellMeta
3724
+ * @param {Number} row Visual row index.
3725
+ * @param {Number} column Visual column index.
3726
+ * @param {Object} cellProperties Object containing the cell properties.
3727
+ */
3728
+ 'afterGetCellMeta',
3729
+ /**
3730
+ * Fired after retrieving information about a column header and appending it to the table header.
3731
+ *
3732
+ * @event Hooks#afterGetColHeader
3733
+ * @param {Number} column Visual column index.
3734
+ * @param {HTMLTableCellElement} TH Header's TH element.
3735
+ */
3736
+ 'afterGetColHeader',
3737
+ /**
3738
+ * Fired after retrieving information about a row header and appending it to the table header.
3739
+ *
3740
+ * @event Hooks#afterGetRowHeader
3741
+ * @param {Number} row Visual row index.
3742
+ * @param {HTMLTableCellElement} TH Header's TH element.
3743
+ */
3744
+ 'afterGetRowHeader',
3745
+ /**
3746
+ * Fired after the Handsontable instance is initiated.
3747
+ *
3748
+ * @event Hooks#afterInit
3749
+ */
3750
+ 'afterInit',
3751
+ /**
3752
+ * Fired after new data is loaded (by `loadData` or `updateSettings` method) into the data source array.
3753
+ *
3754
+ * @event Hooks#afterLoadData
3755
+ * @param {Boolean} initialLoad flag that determines whether the data has been loaded during the initialization.
3756
+ */
3757
+ 'afterLoadData',
3758
+ /**
3759
+ * Fired after a scroll event, which is identified as a momentum scroll (e.g. on an iPad).
3760
+ *
3761
+ * @event Hooks#afterMomentumScroll
3762
+ */
3763
+ 'afterMomentumScroll',
3764
+ /**
3765
+ * Fired after a `mousedown` event is triggered on the cell corner (the drag handle).
3766
+ *
3767
+ * @event Hooks#afterOnCellCornerMouseDown
3768
+ * @param {Event} event `mousedown` event object.
3769
+ */
3770
+ 'afterOnCellCornerMouseDown',
3771
+ /**
3772
+ * Fired after a `dblclick` event is triggered on the cell corner (the drag handle).
3773
+ *
3774
+ * @event Hooks#afterOnCellCornerDblClick
3775
+ * @param {Event} event `dblclick` event object.
3776
+ */
3777
+ 'afterOnCellCornerDblClick',
3778
+ /**
3779
+ * Fired after clicking on a cell or row/column header. In case the row/column header was clicked, the coordinate
3780
+ * indexes are negative.
3781
+ *
3782
+ * For example clicking on the row header of cell (0, 0) results with `afterOnCellMouseDown` called
3783
+ * with coordinates `{row: 0, col: -1}`.
3784
+ *
3785
+ * @event Hooks#afterOnCellMouseDown
3786
+ * @param {Event} event `mousedown` event object.
3787
+ * @param {CellCoords} coords Coordinates object containing the visual row and visual column indexes of the clicked cell.
3788
+ * @param {HTMLTableCellElement} TD Cell's TD (or TH) element.
3789
+ */
3790
+ 'afterOnCellMouseDown',
3791
+ /**
3792
+ * Fired after clicking on a cell or row/column header. In case the row/column header was clicked, the coordinate
3793
+ * indexes are negative.
3794
+ *
3795
+ * For example clicking on the row header of cell (0, 0) results with `afterOnCellMouseUp` called
3796
+ * with coordinates `{row: 0, col: -1}`.
3797
+ *
3798
+ * @event Hooks#afterOnCellMouseUp
3799
+ * @param {Event} event `mouseup` event object.
3800
+ * @param {CellCoords} coords Coordinates object containing the visual row and visual column indexes of the clicked cell.
3801
+ * @param {HTMLTableCellElement} TD Cell's TD (or TH) element.
3802
+ */
3803
+ 'afterOnCellMouseUp',
3804
+ /**
3805
+ * Fired after clicking right mouse button on a cell or row/column header.
3806
+ *
3807
+ * For example clicking on the row header of cell (0, 0) results with `afterOnCellContextMenu` called
3808
+ * with coordinates `{row: 0, col: -1}`.
3809
+ *
3810
+ * @event Hooks#afterOnCellContextMenu
3811
+ * @since 4.1.0
3812
+ * @param {Event} event `contextmenu` event object.
3813
+ * @param {CellCoords} coords Coordinates object containing the visual row and visual column indexes of the clicked cell.
3814
+ * @param {HTMLTableCellElement} TD Cell's TD (or TH) element.
3815
+ */
3816
+ 'afterOnCellContextMenu',
3817
+ /**
3818
+ * Fired after hovering a cell or row/column header with the mouse cursor. In case the row/column header was
3819
+ * hovered, the index is negative.
3820
+ *
3821
+ * For example, hovering over the row header of cell (0, 0) results with `afterOnCellMouseOver` called
3822
+ * with coords `{row: 0, col: -1}`.
3823
+ *
3824
+ * @event Hooks#afterOnCellMouseOver
3825
+ * @param {Event} event `mouseover` event object.
3826
+ * @param {CellCoords} coords Hovered cell's visual coordinate object.
3827
+ * @param {HTMLTableCellElement} TD Cell's TD (or TH) element.
3828
+ */
3829
+ 'afterOnCellMouseOver',
3830
+ /**
3831
+ * Fired after leaving a cell or row/column header with the mouse cursor.
3832
+ *
3833
+ * @event Hooks#afterOnCellMouseOut
3834
+ * @param {Event} event `mouseout` event object.
3835
+ * @param {CellCoords} coords Leaved cell's visual coordinate object.
3836
+ * @param {HTMLTableCellElement} TD Cell's TD (or TH) element.
3837
+ */
3838
+ 'afterOnCellMouseOut',
3839
+ /**
3840
+ * Fired after one or more columns are removed.
3841
+ *
3842
+ * @event Hooks#afterRemoveCol
3843
+ * @param {Number} index Visual index of starter column.
3844
+ * @param {Number} amount An amount of removed columns.
3845
+ * @param {Number[]} physicalColumns An array of physical columns removed from the data source.
3846
+ * @param {String} [source] String that identifies source of hook call ([list of all available sources]{@link https://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
3847
+ */
3848
+ 'afterRemoveCol',
3849
+ /**
3850
+ * Fired after one or more rows are removed.
3851
+ *
3852
+ * @event Hooks#afterRemoveRow
3853
+ * @param {Number} index Visual index of starter row.
3854
+ * @param {Number} amount An amount of removed rows.
3855
+ * @param {Number[]} physicalRows An array of physical rows removed from the data source.
3856
+ * @param {String} [source] String that identifies source of hook call ([list of all available sources]{@link https://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
3857
+ */
3858
+ 'afterRemoveRow',
3859
+ /**
3860
+ * Fired after the Handsontable table is rendered.
3861
+ *
3862
+ * @event Hooks#afterRender
3863
+ * @param {Boolean} isForced Is `true` if rendering was triggered by a change of settings or data; or `false` if
3864
+ * rendering was triggered by scrolling or moving selection.
3865
+ */
3866
+ 'afterRender',
3867
+ /**
3868
+ * Fired before starting rendering the cell.
3869
+ *
3870
+ * @event Hooks#beforeRenderer
3871
+ * @param {HTMLTableCellElement} TD Currently rendered cell's TD element.
3872
+ * @param {Number} row Visual row index.
3873
+ * @param {Number} column Visual column index.
3874
+ * @param {String|Number} prop Column property name or a column index, if datasource is an array of arrays.
3875
+ * @param {*} value Value of the rendered cell.
3876
+ * @param {Object} cellProperties Object containing the cell's properties.
3877
+ */
3878
+ 'beforeRenderer',
3879
+ /**
3880
+ * Fired after finishing rendering the cell (after the renderer finishes).
3881
+ *
3882
+ * @event Hooks#afterRenderer
3883
+ * @param {HTMLTableCellElement} TD Currently rendered cell's TD element.
3884
+ * @param {Number} row Visual row index.
3885
+ * @param {Number} column Visual column index.
3886
+ * @param {String|Number} prop Column property name or a column index, if datasource is an array of arrays.
3887
+ * @param {*} value Value of the rendered cell.
3888
+ * @param {Object} cellProperties Object containing the cell's properties.
3889
+ */
3890
+ 'afterRenderer',
3891
+ /**
3892
+ * Fired after the horizontal scroll event.
3893
+ *
3894
+ * @event Hooks#afterScrollHorizontally
3895
+ */
3896
+ 'afterScrollHorizontally',
3897
+ /**
3898
+ * Fired after the vertical scroll event.
3899
+ *
3900
+ * @event Hooks#afterScrollVertically
3901
+ */
3902
+ 'afterScrollVertically',
3903
+ /**
3904
+ * Fired after one or more cells are selected (e.g. during mouse move).
3905
+ *
3906
+ * @event Hooks#afterSelection
3907
+ * @param {Number} row Selection start visual row index.
3908
+ * @param {Number} column Selection start visual column index.
3909
+ * @param {Number} row2 Selection end visual row index.
3910
+ * @param {Number} column2 Selection end visual column index.
3911
+ * @param {Object} preventScrolling Object with `value` property where its value change will be observed.
3912
+ * @param {Number} selectionLayerLevel The number which indicates what selection layer is currently modified.
3913
+ * @example
3914
+ * ```js
3915
+ * new Handsontable(element, {
3916
+ * afterSelection: (row, column, row2, column2, preventScrolling, selectionLayerLevel) => {
3917
+ * // setting if prevent scrolling after selection
3918
+ * preventScrolling.value = true;
3919
+ * }
3920
+ * })
3921
+ * ```
3922
+ */
3923
+ 'afterSelection',
3924
+ /**
3925
+ * Fired after one or more cells are selected.
3926
+ *
3927
+ * The `prop` and `prop2` arguments represent the source object property name instead of the column number.
3928
+ *
3929
+ * @event Hooks#afterSelectionByProp
3930
+ * @param {Number} row Selection start visual row index.
3931
+ * @param {String} prop Selection start data source object property name.
3932
+ * @param {Number} row2 Selection end visual row index.
3933
+ * @param {String} prop2 Selection end data source object property name.
3934
+ * @param {Object} preventScrolling Object with `value` property where its value change will be observed.
3935
+ * @param {Number} selectionLayerLevel The number which indicates what selection layer is currently modified.
3936
+ * @example
3937
+ * ```js
3938
+ * new Handsontable(element, {
3939
+ * afterSelectionByProp: (row, column, row2, column2, preventScrolling, selectionLayerLevel) => {
3940
+ * // setting if prevent scrolling after selection
3941
+ * preventScrolling.value = true;
3942
+ * }
3943
+ * })
3944
+ * ```
3945
+ */
3946
+ 'afterSelectionByProp',
3947
+ /**
3948
+ * Fired after one or more cells are selected (e.g. on mouse up).
3949
+ *
3950
+ * @event Hooks#afterSelectionEnd
3951
+ * @param {Number} row Selection start visual row index.
3952
+ * @param {Number} column Selection start visual column index.
3953
+ * @param {Number} row2 Selection end visual row index.
3954
+ * @param {Number} column2 Selection end visual column index.
3955
+ * @param {Number} selectionLayerLevel The number which indicates what selection layer is currently modified.
3956
+ */
3957
+ 'afterSelectionEnd',
3958
+ /**
3959
+ * Fired after one or more cells are selected (e.g. on mouse up).
3960
+ *
3961
+ * The `prop` and `prop2` arguments represent the source object property name instead of the column number.
3962
+ *
3963
+ * @event Hooks#afterSelectionEndByProp
3964
+ * @param {Number} row Selection start visual row index.
3965
+ * @param {String} prop Selection start data source object property index.
3966
+ * @param {Number} row2 Selection end visual row index.
3967
+ * @param {String} prop2 Selection end data source object property index.
3968
+ * @param {Number} selectionLayerLevel The number which indicates what selection layer is currently modified.
3969
+ */
3970
+ 'afterSelectionEndByProp',
3971
+ /**
3972
+ * Fired after cell meta is changed.
3973
+ *
3974
+ * @event Hooks#afterSetCellMeta
3975
+ * @param {Number} row Visual row index.
3976
+ * @param {Number} column Visual column index.
3977
+ * @param {String} key The updated meta key.
3978
+ * @param {*} value The updated meta value.
3979
+ */
3980
+ 'afterSetCellMeta',
3981
+ /**
3982
+ * Fired after cell meta is removed.
3983
+ *
3984
+ * @event Hooks#afterRemoveCellMeta
3985
+ * @param {Number} row Visual row index.
3986
+ * @param {Number} column Visual column index.
3987
+ * @param {String} key The removed meta key.
3988
+ * @param {*} value Value which was under removed key of cell meta.
3989
+ */
3990
+ 'afterRemoveCellMeta',
3991
+ /**
3992
+ * Fired after cell data was changed.
3993
+ *
3994
+ * @event Hooks#afterSetDataAtCell
3995
+ * @param {Array} changes An array of changes in format `[[row, column, oldValue, value], ...]`.
3996
+ * @param {String} [source] String that identifies source of hook call
3997
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
3998
+ */
3999
+ 'afterSetDataAtCell',
4000
+ /**
4001
+ * Fired after cell data was changed.
4002
+ *
4003
+ * @event Hooks#afterSetDataAtRowProp
4004
+ * @param {Array} changes An array of changes in format `[[row, prop, oldValue, value], ...]`.
4005
+ * @param {String} [source] String that identifies source of hook call
4006
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
4007
+ */
4008
+ 'afterSetDataAtRowProp',
4009
+ /**
4010
+ * Fired after calling the `updateSettings` method.
4011
+ *
4012
+ * @event Hooks#afterUpdateSettings
4013
+ * @param {Object} newSettings New settings object.
4014
+ */
4015
+ 'afterUpdateSettings',
4016
+ /**
4017
+ * @description
4018
+ * A plugin hook executed after validator function, only if validator function is defined.
4019
+ * Validation result is the first parameter. This can be used to determinate if validation passed successfully or not.
4020
+ *
4021
+ * __Returning false from the callback will mark the cell as invalid.__
4022
+ *
4023
+ * @event Hooks#afterValidate
4024
+ * @param {Boolean} isValid `true` if valid, `false` if not.
4025
+ * @param {*} value The value in question.
4026
+ * @param {Number} row Visual row index.
4027
+ * @param {String|Number} prop Property name / visual column index.
4028
+ * @param {String} [source] String that identifies source of hook call
4029
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
4030
+ */
4031
+ 'afterValidate',
4032
+ /**
4033
+ * Fired before successful change of language (when proper language code was set)
4034
+ *
4035
+ * @event Hooks#beforeLanguageChange
4036
+ * @since 0.35.0
4037
+ * @param {String} languageCode New language code.
4038
+ */
4039
+ 'beforeLanguageChange',
4040
+ /**
4041
+ * Fired after successful change of language (when proper language code was set).
4042
+ *
4043
+ * @event Hooks#afterLanguageChange
4044
+ * @since 0.35.0
4045
+ * @param {String} languageCode New language code.
4046
+ */
4047
+ 'afterLanguageChange',
4048
+ /**
4049
+ * Fired by {@link Autofill} plugin before populating the data in the autofill feature. This hook is fired when
4050
+ * {@link Options#fillHandle} option is enabled.
4051
+ *
4052
+ * @event Hooks#beforeAutofill
4053
+ * @param {CellCoords} start Object containing information about first filled cell: `{row: 2, col: 0}`.
4054
+ * @param {CellCoords} end Object containing information about last filled cell: `{row: 4, col: 1}`.
4055
+ * @param {Array[]} data 2D array containing information about fill pattern: `[["1", "Ted"], ["1", "John"]]`.
4056
+ */
4057
+ 'beforeAutofill',
4058
+ /**
4059
+ * Fired before aligning the cell contents.
4060
+ *
4061
+ * @event Hooks#beforeCellAlignment
4062
+ * @param {Object} stateBefore An object with class names defining the cell alignment.
4063
+ * @param {CellRange[]} range An array of CellRange coordinates where the alignment will be applied.
4064
+ * @param {String} type Type of the alignment - either `horizontal` or `vertical`.
4065
+ * @param {String} alignmentClass String defining the alignment class added to the cell.
4066
+ * Possible values:
4067
+ * * `htLeft`
4068
+ * * `htCenter`
4069
+ * * `htRight`
4070
+ * * `htJustify`
4071
+ * * `htTop`
4072
+ * * `htMiddle`
4073
+ * * `htBottom`
4074
+ */
4075
+ 'beforeCellAlignment',
4076
+ /**
4077
+ * Fired before one or more cells is changed. Its main purpose is to alter changes silently after input and before
4078
+ * table rendering.
4079
+ *
4080
+ * @event Hooks#beforeChange
4081
+ * @param {Array[]} changes 2D array containing information about each of the edited cells.
4082
+ * @param {String} [source] String that identifies source of hook call
4083
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
4084
+ * @example
4085
+ * ```js
4086
+ * // To disregard a single change, set changes[i] to null or remove it from array using changes.splice(i, 1).
4087
+ * new Handsontable(element, {
4088
+ * beforeChange: (changes, source) => {
4089
+ * // [[row, prop, oldVal, newVal], ...]
4090
+ * changes[0] = null;
4091
+ * }
4092
+ * });
4093
+ * // To alter a single change, overwrite the desired value to changes[i][3].
4094
+ * new Handsontable(element, {
4095
+ * beforeChange: (changes, source) => {
4096
+ * // [[row, prop, oldVal, newVal], ...]
4097
+ * changes[0][3] = 10;
4098
+ * }
4099
+ * });
4100
+ * // To cancel all edit, return false from the callback or set array length to 0 (changes.length = 0).
4101
+ * new Handsontable(element, {
4102
+ * beforeChange: (changes, source) => {
4103
+ * // [[row, prop, oldVal, newVal], ...]
4104
+ * return false;
4105
+ * }
4106
+ * });
4107
+ * ```
4108
+ */
4109
+ 'beforeChange',
4110
+ /**
4111
+ * Fired right before rendering the changes.
4112
+ *
4113
+ * @event Hooks#beforeChangeRender
4114
+ * @param {Array[]} changes Array in form of `[row, prop, oldValue, newValue]`.
4115
+ * @param {String} [source] String that identifies source of hook call
4116
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
4117
+ */
4118
+ 'beforeChangeRender',
4119
+ /**
4120
+ * Fired before drawing the borders.
4121
+ *
4122
+ * @event Hooks#beforeDrawBorders
4123
+ * @param {Array} corners Array specifying the current selection borders.
4124
+ * @param {String} borderClassName Specifies the border class name.
4125
+ */
4126
+ 'beforeDrawBorders',
4127
+ /**
4128
+ * Fired before getting cell settings.
4129
+ *
4130
+ * @event Hooks#beforeGetCellMeta
4131
+ * @param {Number} row Visual row index.
4132
+ * @param {Number} column Visual column index.
4133
+ * @param {Object} cellProperties Object containing the cell's properties.
4134
+ */
4135
+ 'beforeGetCellMeta',
4136
+ /**
4137
+ * Fired before cell meta is removed.
4138
+ *
4139
+ * @event Hooks#beforeRemoveCellMeta
4140
+ * @param {Number} row Visual row index.
4141
+ * @param {Number} column Visual column index.
4142
+ * @param {String} key The removed meta key.
4143
+ * @param {*} value Value which is under removed key of cell meta.
4144
+ */
4145
+ 'beforeRemoveCellMeta',
4146
+ /**
4147
+ * Fired before the Handsontable instance is initiated.
4148
+ *
4149
+ * @event Hooks#beforeInit
4150
+ */
4151
+ 'beforeInit',
4152
+ /**
4153
+ * Fired before the Walkontable instance is initiated.
4154
+ *
4155
+ * @event Hooks#beforeInitWalkontable
4156
+ * @param {Object} walkontableConfig Walkontable configuration object.
4157
+ */
4158
+ 'beforeInitWalkontable',
4159
+ /**
4160
+ * Fired before keydown event is handled. It can be used to overwrite default key bindings.
4161
+ *
4162
+ * __Note__: To prevent default behavior you need to call `event.stopImmediatePropagation()` in your `beforeKeyDown`
4163
+ * handler.
4164
+ *
4165
+ * @event Hooks#beforeKeyDown
4166
+ * @param {Event} event Original DOM event.
4167
+ */
4168
+ 'beforeKeyDown',
4169
+ /**
4170
+ * Fired after the user clicked a cell, but before all the calculations related with it.
4171
+ *
4172
+ * @event Hooks#beforeOnCellMouseDown
4173
+ * @param {Event} event The `mousedown` event object.
4174
+ * @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
4175
+ * @param {HTMLTableCellElement} TD TD element.
4176
+ * @param {Object} controller An object with keys `row`, `column` and `cells` which contains boolean values. This
4177
+ * object allows or disallows changing the selection for the particular axies.
4178
+ */
4179
+ 'beforeOnCellMouseDown',
4180
+ /**
4181
+ * Fired after the user clicked a cell.
4182
+ *
4183
+ * @event Hooks#beforeOnCellMouseUp
4184
+ * @param {Event} event The `mouseup` event object.
4185
+ * @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
4186
+ * @param {HTMLTableCellElement} TD TD element.
4187
+ * @param {Object} controller An object with keys `row`, `column` and `cells` which contains boolean values. This
4188
+ * object allows or disallows changing the selection for the particular axies.
4189
+ */
4190
+ 'beforeOnCellMouseUp',
4191
+ /**
4192
+ * Fired after the user clicked a cell, but before all the calculations related with it.
4193
+ *
4194
+ * @event Hooks#beforeOnCellContextMenu
4195
+ * @since 4.1.0
4196
+ * @param {Event} event The `contextmenu` event object.
4197
+ * @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
4198
+ * @param {HTMLTableCellElement} TD TD element.
4199
+ */
4200
+ 'beforeOnCellContextMenu',
4201
+ /**
4202
+ * Fired after the user moved cursor over a cell, but before all the calculations related with it.
4203
+ *
4204
+ * @event Hooks#beforeOnCellMouseOver
4205
+ * @param {Event} event The `mouseover` event object.
4206
+ * @param {CellCoords} coords CellCoords object containing the visual coordinates of the clicked cell.
4207
+ * @param {HTMLTableCellElement} TD TD element.
4208
+ * @param {Object} controller An object with keys `row`, `column` and `cells` which contains boolean values. This
4209
+ * object allows or disallows changing the selection for the particular axies.
4210
+ */
4211
+ 'beforeOnCellMouseOver',
4212
+ /**
4213
+ * Fired after the user moved cursor out from a cell, but before all the calculations related with it.
4214
+ *
4215
+ * @event Hooks#beforeOnCellMouseOut
4216
+ * @param {Event} event The `mouseout` event object.
4217
+ * @param {CellCoords} coords CellCoords object containing the visual coordinates of the leaved cell.
4218
+ * @param {HTMLTableCellElement} TD TD element.
4219
+ */
4220
+ 'beforeOnCellMouseOut',
4221
+ /**
4222
+ * Fired before one or more columns are about to be removed.
4223
+ *
4224
+ * @event Hooks#beforeRemoveCol
4225
+ * @param {Number} index Visual index of starter column.
4226
+ * @param {Number} amount Amount of columns to be removed.
4227
+ * @param {Number[]} physicalColumns An array of physical columns removed from the data source.
4228
+ * @param {String} [source] String that identifies source of hook call ([list of all available sources]{@link https://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
4229
+ */
4230
+ 'beforeRemoveCol',
4231
+ /**
4232
+ * Fired when one or more rows are about to be removed.
4233
+ *
4234
+ * @event Hooks#beforeRemoveRow
4235
+ * @param {Number} index Visual index of starter column.
4236
+ * @param {Number} amount Amount of columns to be removed.
4237
+ * @param {Number[]} physicalRows An array of physical rows removed from the data source.
4238
+ * @param {String} [source] String that identifies source of hook call ([list of all available sources]{@link https://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
4239
+ */
4240
+ 'beforeRemoveRow',
4241
+ /**
4242
+ * Fired before the Handsontable table is rendered.
4243
+ *
4244
+ * @event Hooks#beforeRender
4245
+ * @param {Boolean} isForced If `true` rendering was triggered by a change of settings or data; or `false` if
4246
+ * rendering was triggered by scrolling or moving selection.
4247
+ */
4248
+ 'beforeRender',
4249
+ /**
4250
+ * Fired before setting range is started but not finished yet.
4251
+ *
4252
+ * @event Hooks#beforeSetRangeStartOnly
4253
+ * @param {CellCoords} coords CellCoords instance.
4254
+ */
4255
+ 'beforeSetRangeStartOnly',
4256
+ /**
4257
+ * Fired before setting range is started.
4258
+ *
4259
+ * @event Hooks#beforeSetRangeStart
4260
+ * @param {CellCoords} coords CellCoords instance.
4261
+ */
4262
+ 'beforeSetRangeStart',
4263
+ /**
4264
+ * Fired before setting range is ended.
4265
+ *
4266
+ * @event Hooks#beforeSetRangeEnd
4267
+ * @param {CellCoords} coords CellCoords instance.
4268
+ */
4269
+ 'beforeSetRangeEnd',
4270
+ /**
4271
+ * Fired before the logic of handling a touch scroll, when user started scrolling on a touch-enabled device.
4272
+ *
4273
+ * @event Hooks#beforeTouchScroll
4274
+ */
4275
+ 'beforeTouchScroll',
4276
+ /**
4277
+ * Fired before cell validation, only if validator function is defined. This can be used to manipulate the value
4278
+ * of changed cell before it is applied to the validator function.
4279
+ *
4280
+ * __Note:__ this will not affect values of changes. This will change value *ONLY* for validation
4281
+ *
4282
+ * @event Hooks#beforeValidate
4283
+ * @param {*} value Value of the cell.
4284
+ * @param {Number} row Visual row index.
4285
+ * @param {String|Number} prop Property name / column index.
4286
+ * @param {String} [source] String that identifies source of hook call
4287
+ * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).
4288
+ */
4289
+ 'beforeValidate',
4290
+ /**
4291
+ * Fired before cell value is rendered into the DOM (through renderer function). This can be used to manipulate the
4292
+ * value which is passed to the renderer without modifying the renderer itself.
4293
+ *
4294
+ * @event Hooks#beforeValueRender
4295
+ * @param {*} value Cell value to render.
4296
+ * @param {Object} cellProperties An object containing the cell properties.
4297
+ */
4298
+ 'beforeValueRender',
4299
+ /**
4300
+ * Fired after Handsontable instance is constructed (using `new` operator).
4301
+ *
4302
+ * @event Hooks#construct
4303
+ */
4304
+ 'construct',
4305
+ /**
4306
+ * Fired after Handsontable instance is initiated but before table is rendered.
4307
+ *
4308
+ * @event Hooks#init
4309
+ */
4310
+ 'init',
4311
+ /**
4312
+ * Fired when a column index is about to be modified by a callback function.
4313
+ *
4314
+ * @event Hooks#modifyCol
4315
+ * @param {Number} column Visual column index.
4316
+ */
4317
+ 'modifyCol',
4318
+ /**
4319
+ * Fired when a column index is about to be de-modified by a callback function.
4320
+ *
4321
+ * @event Hooks#unmodifyCol
4322
+ * @param {Number} column Physical column index.
4323
+ */
4324
+ 'unmodifyCol',
4325
+ /**
4326
+ * Fired when a physical row index is about to be de-modified by a callback function.
4327
+ *
4328
+ * @event Hooks#unmodifyRow
4329
+ * @param {Number} row Physical row index.
4330
+ */
4331
+ 'unmodifyRow',
4332
+ /**
4333
+ * Fired when a column header index is about to be modified by a callback function.
4334
+ *
4335
+ * @event Hooks#modifyColHeader
4336
+ * @param {Number} column Visual column header index.
4337
+ */
4338
+ 'modifyColHeader',
4339
+ /**
4340
+ * Fired when a column width is about to be modified by a callback function.
4341
+ *
4342
+ * @event Hooks#modifyColWidth
4343
+ * @param {Number} width Current column width.
4344
+ * @param {Number} column Visual column index.
4345
+ */
4346
+ 'modifyColWidth',
4347
+ /**
4348
+ * Fired when a row index is about to be modified by a callback function.
4349
+ *
4350
+ * @event Hooks#modifyRow
4351
+ * @param {Number} row Visual row index.
4352
+ */
4353
+ 'modifyRow',
4354
+ /**
4355
+ * Fired when a row header index is about to be modified by a callback function.
4356
+ *
4357
+ * @event Hooks#modifyRowHeader
4358
+ * @param {Number} row Visual row header index.
4359
+ */
4360
+ 'modifyRowHeader',
4361
+ /**
4362
+ * Fired when a row height is about to be modified by a callback function.
4363
+ *
4364
+ * @event Hooks#modifyRowHeight
4365
+ * @param {Number} height Row height.
4366
+ * @param {Number} row Visual row index.
4367
+ */
4368
+ 'modifyRowHeight',
4369
+ /**
4370
+ * Fired when a data was retrieved or modified.
4371
+ *
4372
+ * @event Hooks#modifyData
4373
+ * @param {Number} row Row height.
4374
+ * @param {Number} column Column index.
4375
+ * @param {Object} valueHolder Object which contains original value which can be modified by overwriting `.value` property.
4376
+ * @param {String} ioMode String which indicates for what operation hook is fired (`get` or `set`).
4377
+ */
4378
+ 'modifyData',
4379
+ /**
4380
+ * Fired when a data was retrieved or modified.
4381
+ *
4382
+ * @event Hooks#modifyRowData
4383
+ * @param {Number} row Physical row index.
4384
+ */
4385
+ 'modifyRowData',
4386
+ /**
4387
+ * Used to modify the cell coordinates when using the `getCell` method.
4388
+ *
4389
+ * @event Hooks#modifyGetCellCoords
4390
+ * @since 0.36.0
4391
+ * @param {Number} row Visual row index.
4392
+ * @param {Number} column Visual column index.
4393
+ * @param {Boolean} topmost If set to `true`, it returns the TD element from the topmost overlay. For example,
4394
+ * if the wanted cell is in the range of fixed rows, it will return a TD element
4395
+ * from the `top` overlay.
4396
+ */
4397
+ 'modifyGetCellCoords',
4398
+ /**
4399
+ * Fired by {@link PersistentState} plugin, after loading value, saved under given key, from browser local storage. This hook is fired when
4400
+ * {@link Options#persistentState} option is enabled.
4401
+ *
4402
+ * @event Hooks#persistentStateLoad
4403
+ * @param {String} key Key.
4404
+ * @param {Object} valuePlaceholder Object containing the loaded value under `valuePlaceholder.value` (if no value have been saved, `value` key will be undefined).
4405
+ */
4406
+ 'persistentStateLoad',
4407
+ /**
4408
+ * Fired by {@link PersistentState} plugin after resetting data from local storage. If no key is given, all values associated with table will be cleared.
4409
+ * This hook is fired when {@link Options#persistentState} option is enabled.
4410
+ *
4411
+ * @event Hooks#persistentStateReset
4412
+ * @param {String} [key] Key.
4413
+ */
4414
+ 'persistentStateReset',
4415
+ /**
4416
+ * Fired by {@link PersistentState} plugin, after saving value under given key in browser local storage. This hook is fired when
4417
+ * {@link Options#persistentState} option is enabled.
4418
+ *
4419
+ * @event Hooks#persistentStateSave
4420
+ * @param {String} key Key.
4421
+ * @param {Mixed} value Value to save.
4422
+ */
4423
+ 'persistentStateSave',
4424
+ /**
4425
+ * Fired by {@link ColumnSorting} and {@link MultiColumnSorting} plugins before sorting the column. If you return `false` value inside callback for hook, then sorting
4426
+ * will be not applied by the Handsontable (useful for server-side sorting).
4427
+ *
4428
+ * This hook is fired when {@link Options#columnSorting} or {@link Options#multiColumnSorting} option is enabled.
4429
+ *
4430
+ * @event Hooks#beforeColumnSort
4431
+ * @param {Array} currentSortConfig Current sort configuration (for all sorted columns).
4432
+ * @param {Array} destinationSortConfigs Destination sort configuration (for all sorted columns).
4433
+ */
4434
+ 'beforeColumnSort',
4435
+ /**
4436
+ * Fired by {@link ColumnSorting} and {@link MultiColumnSorting} plugins after sorting the column. This hook is fired when {@link Options#columnSorting}
4437
+ * or {@link Options#multiColumnSorting} option is enabled.
4438
+ *
4439
+ * @event Hooks#afterColumnSort
4440
+ * @param {Array} currentSortConfig Current sort configuration (for all sorted columns).
4441
+ * @param {Array} destinationSortConfigs Destination sort configuration (for all sorted columns).
4442
+ */
4443
+ 'afterColumnSort',
4444
+ /**
4445
+ * Fired by {@link Autofill} plugin after setting range of autofill. This hook is fired when {@link Options#fillHandle}
4446
+ * option is enabled.
4447
+ *
4448
+ * @event Hooks#modifyAutofillRange
4449
+ * @param {Array} startArea Array of visual coordinates of the starting point for the drag-down operation (`[startRow, startColumn, endRow, endColumn]`).
4450
+ * @param {Array} entireArea Array of visual coordinates of the entire area of the drag-down operation (`[startRow, startColumn, endRow, endColumn]`).
4451
+ */
4452
+ 'modifyAutofillRange',
4453
+ /**
4454
+ * Fired to allow modifying the copyable range with a callback function.
4455
+ *
4456
+ * @event Hooks#modifyCopyableRange
4457
+ * @param {Array[]} copyableRanges Array of objects defining copyable cells.
4458
+ */
4459
+ 'modifyCopyableRange',
4460
+ /**
4461
+ * Fired by {@link CopyPaste} plugin before copying the values into clipboard and before clearing values of
4462
+ * the selected cells. This hook is fired when {@link Options#copyPaste} option is enabled.
4463
+ *
4464
+ * @event Hooks#beforeCut
4465
+ * @param {Array[]} data An array of arrays which contains data to cut.
4466
+ * @param {Object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
4467
+ * which will be cut out.
4468
+ * @returns {*} If returns `false` then operation of the cutting out is canceled.
4469
+ * @example
4470
+ * ```js
4471
+ * // To disregard a single row, remove it from the array using data.splice(i, 1).
4472
+ * new Handsontable(element, {
4473
+ * beforeCut: function(data, coords) {
4474
+ * // data -> [[1, 2, 3], [4, 5, 6]]
4475
+ * data.splice(0, 1);
4476
+ * // data -> [[4, 5, 6]]
4477
+ * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
4478
+ * }
4479
+ * });
4480
+ * // To cancel a cutting action, just return `false`.
4481
+ * new Handsontable(element, {
4482
+ * beforeCut: function(data, coords) {
4483
+ * return false;
4484
+ * }
4485
+ * });
4486
+ * ```
4487
+ */
4488
+ 'beforeCut',
4489
+ /**
4490
+ * Fired by {@link CopyPaste} plugin after data was cut out from the table. This hook is fired when
4491
+ * {@link Options#copyPaste} option is enabled.
4492
+ *
4493
+ * @event Hooks#afterCut
4494
+ * @param {Array[]} data An array of arrays which contains the cutted out data.
4495
+ * @param {Object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
4496
+ * which was cut out.
4497
+ */
4498
+ 'afterCut',
4499
+ /**
4500
+ * Fired before values are copied into clipboard.
4501
+ *
4502
+ * @event Hooks#beforeCopy
4503
+ * @param {Array[]} data An array of arrays which contains data to copied.
4504
+ * @param {Object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
4505
+ * which will copied.
4506
+ * @returns {*} If returns `false` then copying is canceled.
4507
+ *
4508
+ * @example
4509
+ * ```js
4510
+ * // To disregard a single row, remove it from array using data.splice(i, 1).
4511
+ * ...
4512
+ * new Handsontable(document.getElementById('example'), {
4513
+ * beforeCopy: (data, coords) => {
4514
+ * // data -> [[1, 2, 3], [4, 5, 6]]
4515
+ * data.splice(0, 1);
4516
+ * // data -> [[4, 5, 6]]
4517
+ * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
4518
+ * }
4519
+ * });
4520
+ * ...
4521
+ *
4522
+ * // To cancel copying, return false from the callback.
4523
+ * ...
4524
+ * new Handsontable(document.getElementById('example'), {
4525
+ * beforeCopy: (data, coords) => {
4526
+ * return false;
4527
+ * }
4528
+ * });
4529
+ * ...
4530
+ * ```
4531
+ */
4532
+ 'beforeCopy',
4533
+ /**
4534
+ * Fired by {@link CopyPaste} plugin after data are pasted into table. This hook is fired when {@link Options#copyPaste}
4535
+ * option is enabled.
4536
+ *
4537
+ * @event Hooks#afterCopy
4538
+ * @param {Array[]} data An array of arrays which contains the copied data.
4539
+ * @param {Object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
4540
+ * which was copied.
4541
+ */
4542
+ 'afterCopy',
4543
+ /**
4544
+ * Fired by {@link CopyPaste} plugin before values are pasted into table. This hook is fired when
4545
+ * {@link Options#copyPaste} option is enabled.
4546
+ *
4547
+ * @event Hooks#beforePaste
4548
+ * @param {Array[]} data An array of arrays which contains data to paste.
4549
+ * @param {Object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
4550
+ * that correspond to the previously selected area.
4551
+ * @returns {*} If returns `false` then pasting is canceled.
4552
+ * @example
4553
+ * ```js
4554
+ * // To disregard a single row, remove it from array using data.splice(i, 1).
4555
+ * new Handsontable(example, {
4556
+ * beforePaste: (data, coords) => {
4557
+ * // data -> [[1, 2, 3], [4, 5, 6]]
4558
+ * data.splice(0, 1);
4559
+ * // data -> [[4, 5, 6]]
4560
+ * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
4561
+ * }
4562
+ * });
4563
+ * // To cancel pasting, return false from the callback.
4564
+ * new Handsontable(example, {
4565
+ * beforePaste: (data, coords) => {
4566
+ * return false;
4567
+ * }
4568
+ * });
4569
+ * ```
4570
+ */
4571
+ 'beforePaste',
4572
+ /**
4573
+ * Fired by {@link CopyPaste} plugin after values are pasted into table. This hook is fired when
4574
+ * {@link Options#copyPaste} option is enabled.
4575
+ *
4576
+ * @event Hooks#afterPaste
4577
+ * @param {Array[]} data An array of arrays which contains the pasted data.
4578
+ * @param {Object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
4579
+ * that correspond to the previously selected area.
4580
+ */
4581
+ 'afterPaste',
4582
+ /**
4583
+ * Fired by {@link ManualColumnMove} plugin before change order of the visual indexes. This hook is fired when
4584
+ * {@link Options#manualColumnMove} option is enabled.
4585
+ *
4586
+ * @event Hooks#beforeColumnMove
4587
+ * @param {Number[]} columns Array of visual column indexes to be moved.
4588
+ * @param {Number} target Visual column index being a target for moved columns.
4589
+ */
4590
+ 'beforeColumnMove',
4591
+ /**
4592
+ * Fired by {@link ManualColumnMove} plugin after changing order of the visual indexes. This hook is fired when
4593
+ * {@link Options#manualColumnMove} option is enabled.
4594
+ *
4595
+ * @event Hooks#afterColumnMove
4596
+ * @param {Number[]} columns Array of visual column indexes that were moved.
4597
+ * @param {Number} target Visual column index being a target for moved columns.
4598
+ */
4599
+ 'afterColumnMove',
4600
+ /**
4601
+ * Fired by {@link ManualRowMove} plugin before change order of the visual indexes. This hook is fired when
4602
+ * {@link Options#manualRowMove} option is enabled.
4603
+ *
4604
+ * @event Hooks#beforeRowMove
4605
+ * @param {Number[]} rows An array of visual row indexes to be moved.
4606
+ * @param {Number} target Visual row index being a target for moved rows.
4607
+ */
4608
+ 'beforeRowMove',
4609
+ /**
4610
+ * Fired by {@link ManualRowMove} plugin after change order of the visual indexes. This hook is fired when
4611
+ * {@link Options#manualRowMove} option is enabled.
4612
+ *
4613
+ * @event Hooks#afterRowMove
4614
+ * @param {Number[]} rows An array of visual row indexes that were moved.
4615
+ * @param {Number} target Visual row index being a target for moved rows.
4616
+ */
4617
+ 'afterRowMove',
4618
+ /**
4619
+ * Fired by {@link ManualColumnResize} plugin before rendering the table with modified column sizes. This hook is
4620
+ * fired when {@link Options#manualColumnResize} option is enabled.
4621
+ *
4622
+ * @event Hooks#beforeColumnResize
4623
+ * @param {Number} currentColumn Visual index of the resized column.
4624
+ * @param {Number} newSize Calculated new column width.
4625
+ * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click.
4626
+ * @returns {Number} Returns a new column size or `undefined`, if column size should be calculated automatically.
4627
+ */
4628
+ 'beforeColumnResize',
4629
+ /**
4630
+ * Fired by {@link ManualColumnResize} plugin after rendering the table with modified column sizes. This hook is
4631
+ * fired when {@link Options#manualColumnResize} option is enabled.
4632
+ *
4633
+ * @event Hooks#afterColumnResize
4634
+ * @param {Number} currentColumn Visual index of the resized column.
4635
+ * @param {Number} newSize Calculated new column width.
4636
+ * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click.
4637
+ */
4638
+ 'afterColumnResize',
4639
+ /**
4640
+ * Fired by {@link ManualRowResize} plugin before rendering the table with modified row sizes. This hook is
4641
+ * fired when {@link Options#manualRowResize} option is enabled.
4642
+ *
4643
+ * @event Hooks#beforeRowResize
4644
+ * @param {Number} currentRow Visual index of the resized row.
4645
+ * @param {Number} newSize Calculated new row height.
4646
+ * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click.
4647
+ * @returns {Number} Returns the new row size or `undefined` if row size should be calculated automatically.
4648
+ */
4649
+ 'beforeRowResize',
4650
+ /**
4651
+ * Fired by {@link ManualRowResize} plugin after rendering the table with modified row sizes. This hook is
4652
+ * fired when {@link Options#manualRowResize} option is enabled.
4653
+ *
4654
+ * @event Hooks#afterRowResize
4655
+ * @param {Number} currentRow Visual index of the resized row.
4656
+ * @param {Number} newSize Calculated new row height.
4657
+ * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click.
4658
+ */
4659
+ 'afterRowResize',
4660
+ /**
4661
+ * Fired after getting the column header renderers.
4662
+ *
4663
+ * @event Hooks#afterGetColumnHeaderRenderers
4664
+ * @param {Function[]} renderers An array of the column header renderers.
4665
+ */
4666
+ 'afterGetColumnHeaderRenderers',
4667
+ /**
4668
+ * Fired after getting the row header renderers.
4669
+ *
4670
+ * @event Hooks#afterGetRowHeaderRenderers
4671
+ * @param {Function[]} renderers An array of the row header renderers.
4672
+ */
4673
+ 'afterGetRowHeaderRenderers',
4674
+ /**
4675
+ * Fired before applying stretched column width to column.
4676
+ *
4677
+ * @event Hooks#beforeStretchingColumnWidth
4678
+ * @param {Number} stretchedWidth Calculated width.
4679
+ * @param {Number} column Visual column index.
4680
+ * @returns {Number} Returns new width which will be applied to the column element.
4681
+ */
4682
+ 'beforeStretchingColumnWidth',
4683
+ /**
4684
+ * Fired by {@link Filters} plugin before applying [filtering]{@link http://docs.handsontable.com/pro/demo-filtering.html}. This hook is fired when
4685
+ * {@link Options#filters} option is enabled.
4686
+ *
4687
+ * @pro
4688
+ * @event Hooks#beforeFilter
4689
+ * @param {Object[]} conditionsStack An array of objects with added formulas.
4690
+ * ```js
4691
+ * // Example format of the conditionsStack argument:
4692
+ * [
4693
+ * {
4694
+ * column: 2,
4695
+ * conditions: [
4696
+ * {name: 'begins_with', args: [['S']]}
4697
+ * ],
4698
+ * operation: 'conjunction'
4699
+ * },
4700
+ * {
4701
+ * column: 4,
4702
+ * conditions: [
4703
+ * {name: 'not_empty', args: []}
4704
+ * ],
4705
+ * operation: 'conjunction'
4706
+ * },
4707
+ * ]
4708
+ * ```
4709
+ * @returns {Boolean} If hook returns `false` value then filtering won't be applied on the UI side (server-side filtering).
4710
+ */
4711
+ 'beforeFilter',
4712
+ /**
4713
+ * Fired by {@link Filters} plugin after applying [filtering]{@link http://docs.handsontable.com/pro/demo-filtering.html}. This hook is fired when
4714
+ * {@link Options#filters} option is enabled.
4715
+ *
4716
+ * @pro
4717
+ * @event Hooks#afterFilter
4718
+ * @param {Object[]} conditionsStack An array of objects with added conditions.
4719
+ * ```js
4720
+ * // Example format of the conditionsStack argument:
4721
+ * [
4722
+ * {
4723
+ * column: 2,
4724
+ * conditions: [
4725
+ * {name: 'begins_with', args: [['S']]}
4726
+ * ],
4727
+ * operation: 'conjunction'
4728
+ * },
4729
+ * {
4730
+ * column: 4,
4731
+ * conditions: [
4732
+ * {name: 'not_empty', args: []}
4733
+ * ],
4734
+ * operation: 'conjunction'
4735
+ * },
4736
+ * ]
4737
+ * ```
4738
+ */
4739
+ 'afterFilter',
4740
+ /**
4741
+ * Fired while retrieving the column header height.
4742
+ *
4743
+ * @event Hooks#modifyColumnHeaderHeight
4744
+ */
4745
+ 'modifyColumnHeaderHeight',
4746
+ /**
4747
+ * Fired by {@link UndoRedo} plugin before the undo action. Contains information about the action that is being undone.
4748
+ * This hook is fired when {@link Options#undo} option is enabled.
4749
+ *
4750
+ * @event Hooks#beforeUndo
4751
+ * @param {Object} action The action object. Contains information about the action being undone. The `actionType`
4752
+ * property of the object specifies the type of the action in a String format. (e.g. `'remove_row'`).
4753
+ */
4754
+ 'beforeUndo',
4755
+ /**
4756
+ * Fired by {@link UndoRedo} plugin after the undo action. Contains information about the action that is being undone.
4757
+ * This hook is fired when {@link Options#undo} option is enabled.
4758
+ *
4759
+ * @event Hooks#afterUndo
4760
+ * @param {Object} action The action object. Contains information about the action being undone. The `actionType`
4761
+ * property of the object specifies the type of the action in a String format. (e.g. `'remove_row'`).
4762
+ */
4763
+ 'afterUndo',
4764
+ /**
4765
+ * Fired by {@link UndoRedo} plugin before the redo action. Contains information about the action that is being redone.
4766
+ * This hook is fired when {@link Options#undo} option is enabled.
4767
+ *
4768
+ * @event Hooks#beforeRedo
4769
+ * @param {Object} action The action object. Contains information about the action being redone. The `actionType`
4770
+ * property of the object specifies the type of the action in a String format (e.g. `'remove_row'`).
4771
+ */
4772
+ 'beforeRedo',
4773
+ /**
4774
+ * Fired by {@link UndoRedo} plugin after the redo action. Contains information about the action that is being redone.
4775
+ * This hook is fired when {@link Options#undo} option is enabled.
4776
+ *
4777
+ * @event Hooks#afterRedo
4778
+ * @param {Object} action The action object. Contains information about the action being redone. The `actionType`
4779
+ * property of the object specifies the type of the action in a String format (e.g. `'remove_row'`).
4780
+ */
4781
+ 'afterRedo',
4782
+ /**
4783
+ * Fired while retrieving the row header width.
4784
+ *
4785
+ * @event Hooks#modifyRowHeaderWidth
4786
+ * @param {Number} rowHeaderWidth Row header width.
4787
+ */
4788
+ 'modifyRowHeaderWidth',
4789
+ /**
4790
+ * Fired from the `populateFromArray` method during the `autofill` process. Fired for each "autofilled" cell individually.
4791
+ *
4792
+ * @event Hooks#beforeAutofillInsidePopulate
4793
+ * @param {Object} index Object containing `row` and `col` properties, defining the number of rows/columns from the initial cell of the autofill.
4794
+ * @param {String} direction Declares the direction of the autofill. Possible values: `up`, `down`, `left`, `right`.
4795
+ * @param {Array[]} input Contains an array of rows with data being used in the autofill.
4796
+ * @param {Array} deltas The deltas array passed to the `populateFromArray` method.
4797
+ */
4798
+ 'beforeAutofillInsidePopulate',
4799
+ /**
4800
+ * Fired when the start of the selection is being modified (e.g. moving the selection with the arrow keys).
4801
+ *
4802
+ * @event Hooks#modifyTransformStart
4803
+ * @param {CellCoords} delta Cell coords object declaring the delta of the new selection relative to the previous one.
4804
+ */
4805
+ 'modifyTransformStart',
4806
+ /**
4807
+ * Fired when the end of the selection is being modified (e.g. moving the selection with the arrow keys).
4808
+ *
4809
+ * @event Hooks#modifyTransformEnd
4810
+ * @param {CellCoords} delta Cell coords object declaring the delta of the new selection relative to the previous one.
4811
+ */
4812
+ 'modifyTransformEnd',
4813
+ /**
4814
+ * Fired after the start of the selection is being modified (e.g. moving the selection with the arrow keys).
4815
+ *
4816
+ * @event Hooks#afterModifyTransformStart
4817
+ * @param {CellCoords} coords Coords of the freshly selected cell.
4818
+ * @param {Number} rowTransformDir `-1` if trying to select a cell with a negative row index. `0` otherwise.
4819
+ * @param {Number} colTransformDir `-1` if trying to select a cell with a negative column index. `0` otherwise.
4820
+ */
4821
+ 'afterModifyTransformStart',
4822
+ /**
4823
+ * Fired after the end of the selection is being modified (e.g. moving the selection with the arrow keys).
4824
+ *
4825
+ * @event Hooks#afterModifyTransformEnd
4826
+ * @param {CellCoords} coords Visual coords of the freshly selected cell.
4827
+ * @param {Number} rowTransformDir `-1` if trying to select a cell with a negative row index. `0` otherwise.
4828
+ * @param {Number} colTransformDir `-1` if trying to select a cell with a negative column index. `0` otherwise.
4829
+ */
4830
+ 'afterModifyTransformEnd',
4831
+ /**
4832
+ * Fired inside the `viewportRowCalculatorOverride` method. Allows modifying the row calculator parameters.
4833
+ *
4834
+ * @event Hooks#afterViewportRowCalculatorOverride
4835
+ * @param {Object} calc The row calculator.
4836
+ */
4837
+ 'afterViewportRowCalculatorOverride',
4838
+ /**
4839
+ * Fired inside the `viewportColumnCalculatorOverride` method. Allows modifying the row calculator parameters.
4840
+ *
4841
+ * @event Hooks#afterViewportColumnCalculatorOverride
4842
+ * @param {Object} calc The row calculator.
4843
+ */
4844
+ 'afterViewportColumnCalculatorOverride',
4845
+ /**
4846
+ * Fired after initializing all the plugins.
4847
+ *
4848
+ * @event Hooks#afterPluginsInitialized
4849
+ */
4850
+ 'afterPluginsInitialized',
4851
+ /**
4852
+ * Used to skip the length cache calculation for a defined period of time.
4853
+ *
4854
+ * @event Hooks#skipLengthCache
4855
+ * @param {Number} delay The delay in milliseconds.
4856
+ */
4857
+ 'skipLengthCache',
4858
+ /**
4859
+ * Fired by {@link TrimRows} plugin after trimming rows. This hook is fired when {@link Options#trimRows} option is enabled.
4860
+ *
4861
+ * @pro
4862
+ * @event Hooks#afterTrimRow
4863
+ * @param {Number[]} rows Physical indexes of trimmed rows.
4864
+ */
4865
+ 'afterTrimRow',
4866
+ /**
4867
+ * Fired by {@link TrimRows} plugin after untrimming rows. This hook is fired when {@link Options#trimRows} option is enabled.
4868
+ *
4869
+ * @pro
4870
+ * @event Hooks#afterUntrimRow
4871
+ * @param {Number[]} rows Physical indexes of untrimmed rows.
4872
+ */
4873
+ 'afterUntrimRow',
4874
+ /**
4875
+ * Fired by {@link DropdownMenu} plugin before opening the dropdown menu. This hook is fired when {@link Options#dropdownMenu}
4876
+ * option is enabled.
4877
+ *
4878
+ * @pro
4879
+ * @event Hooks#beforeDropdownMenuShow
4880
+ * @param {DropdownMenu} dropdownMenu The DropdownMenu instance.
4881
+ */
4882
+ 'beforeDropdownMenuShow',
4883
+ /**
4884
+ * Fired by {@link DropdownMenu} plugin after opening the Dropdown Menu. This hook is fired when {@link Options#dropdownMenu}
4885
+ * option is enabled.
4886
+ *
4887
+ * @pro
4888
+ * @event Hooks#afterDropdownMenuShow
4889
+ * @param {DropdownMenu} dropdownMenu The DropdownMenu instance.
4890
+ */
4891
+ 'afterDropdownMenuShow',
4892
+ /**
4893
+ * Fired by {@link DropdownMenu} plugin after hiding the Dropdown Menu. This hook is fired when {@link Options#dropdownMenu}
4894
+ * option is enabled.
4895
+ *
4896
+ * @pro
4897
+ * @event Hooks#afterDropdownMenuHide
4898
+ * @param {DropdownMenu} instance The DropdownMenu instance.
4899
+ */
4900
+ 'afterDropdownMenuHide',
4901
+ /**
4902
+ * Fired by {@link HiddenRows} plugin to check whether the provided row index is hidden. This hook is fired when
4903
+ * {@link Options#hiddenRows} option is enabled.
4904
+ *
4905
+ * @pro
4906
+ * @event Hooks#hiddenRow
4907
+ * @param {Number} row The visual row index in question.
4908
+ */
4909
+ 'hiddenRow',
4910
+ /**
4911
+ * Fired by {@link HiddenColumns} plugin to check whether the provided column index is hidden. This hook is fired when
4912
+ * {@link Options#hiddenColumns} option is enabled.
4913
+ *
4914
+ * @pro
4915
+ * @event Hooks#hiddenColumn
4916
+ * @param {Number} column The visual column index in question.
4917
+ */
4918
+ 'hiddenColumn',
4919
+ /**
4920
+ * Fired by {@link NestedRows} plugin before adding a children to the NestedRows structure. This hook is fired when
4921
+ * {@link Options#nestedRows} option is enabled.
4922
+ *
4923
+ * @pro
4924
+ * @event Hooks#beforeAddChild
4925
+ * @param {Object} parent The parent object.
4926
+ * @param {Object|undefined} element The element added as a child. If `undefined`, a blank child was added.
4927
+ * @param {Number|undefined} index The index within the parent where the new child was added. If `undefined`, the element was added as the last child.
4928
+ */
4929
+ 'beforeAddChild',
4930
+ /**
4931
+ * Fired by {@link NestedRows} plugin after adding a children to the NestedRows structure. This hook is fired when
4932
+ * {@link Options#nestedRows} option is enabled.
4933
+ *
4934
+ * @pro
4935
+ * @event Hooks#afterAddChild
4936
+ * @param {Object} parent The parent object.
4937
+ * @param {Object|undefined} element The element added as a child. If `undefined`, a blank child was added.
4938
+ * @param {Number|undefined} index The index within the parent where the new child was added. If `undefined`, the element was added as the last child.
4939
+ */
4940
+ 'afterAddChild',
4941
+ /**
4942
+ * Fired by {@link NestedRows} plugin before detaching a child from its parent. This hook is fired when
4943
+ * {@link Options#nestedRows} option is enabled.
4944
+ *
4945
+ * @pro
4946
+ * @event Hooks#beforeDetachChild
4947
+ * @param {Object} parent An object representing the parent from which the element is to be detached.
4948
+ * @param {Object} element The detached element.
4949
+ */
4950
+ 'beforeDetachChild',
4951
+ /**
4952
+ * Fired by {@link NestedRows} plugin after detaching a child from its parent. This hook is fired when
4953
+ * {@link Options#nestedRows} option is enabled.
4954
+ *
4955
+ * @pro
4956
+ * @event Hooks#afterDetachChild
4957
+ * @param {Object} parent An object representing the parent from which the element was detached.
4958
+ * @param {Object} element The detached element.
4959
+ */
4960
+ 'afterDetachChild',
4961
+ /**
4962
+ * Fired after the editor is opened and rendered.
4963
+ *
4964
+ * @event Hooks#afterBeginEditing
4965
+ * @param {Number} row Visual row index of the edited cell.
4966
+ * @param {Number} column Visual column index of the edited cell.
4967
+ */
4968
+ 'afterBeginEditing',
4969
+ /**
4970
+ * Fired by {@link MergeCells} plugin before cell merging. This hook is fired when {@link Options#mergeCells}
4971
+ * option is enabled.
4972
+ *
4973
+ * @event Hooks#beforeMergeCells
4974
+ * @param {CellRange} cellRange Selection cell range.
4975
+ * @param {Boolean} [auto=false] `true` if called automatically by the plugin.
4976
+ */
4977
+ 'beforeMergeCells',
4978
+ /**
4979
+ * Fired by {@link MergeCells} plugin after cell merging. This hook is fired when {@link Options#mergeCells}
4980
+ * option is enabled.
4981
+ *
4982
+ * @event Hooks#afterMergeCells
4983
+ * @param {CellRange} cellRange Selection cell range.
4984
+ * @param {Object} mergeParent The parent collection of the provided cell range.
4985
+ * @param {Boolean} [auto=false] `true` if called automatically by the plugin.
4986
+ */
4987
+ 'afterMergeCells',
4988
+ /**
4989
+ * Fired by {@link MergeCells} plugin before unmerging the cells. This hook is fired when {@link Options#mergeCells}
4990
+ * option is enabled.
4991
+ *
4992
+ * @event Hooks#beforeUnmergeCells
4993
+ * @param {CellRange} cellRange Selection cell range.
4994
+ * @param {Boolean} [auto=false] `true` if called automatically by the plugin.
4995
+ */
4996
+ 'beforeUnmergeCells',
4997
+ /**
4998
+ * Fired by {@link MergeCells} plugin after unmerging the cells. This hook is fired when {@link Options#mergeCells}
4999
+ * option is enabled.
5000
+ *
5001
+ * @event Hooks#afterUnmergeCells
5002
+ * @param {CellRange} cellRange Selection cell range.
5003
+ * @param {Boolean} [auto=false] `true` if called automatically by the plugin.
5004
+ */
5005
+ 'afterUnmergeCells',
5006
+ /**
5007
+ * Fired after the table was switched into listening mode. This allows Handsontable to capture keyboard events and
5008
+ * respond in the right way.
5009
+ *
5010
+ * @event Hooks#afterListen
5011
+ */
5012
+ 'afterListen',
5013
+ /**
5014
+ * Fired after the table was switched off from the listening mode. This makes the Handsontable inert for any
5015
+ * keyboard events.
5016
+ *
5017
+ * @event Hooks#afterUnlisten
5018
+ */
5019
+ 'afterUnlisten'];
5020
+
5021
+ var Hooks =
5022
+ /*#__PURE__*/
5023
+ function () {
5024
+ _createClass(Hooks, null, [{
5025
+ key: "getSingleton",
5026
+ value: function getSingleton() {
5027
+ return getGlobalSingleton();
5028
+ }
5029
+ /**
5030
+ *
5031
+ */
5032
+
5033
+ }]);
5034
+
5035
+ function Hooks() {
5036
+ _classCallCheck(this, Hooks);
5037
+
5038
+ this.globalBucket = this.createEmptyBucket();
5039
+ }
5040
+ /**
5041
+ * Returns a new object with empty handlers related to every registered hook name.
5042
+ *
5043
+ * @returns {Object} The empty bucket object.
5044
+ *
5045
+ * @example
5046
+ * ```js
5047
+ * Handsontable.hooks.createEmptyBucket();
5048
+ * // Results:
5049
+ * {
5050
+ * ...
5051
+ * afterCreateCol: [],
5052
+ * afterCreateRow: [],
5053
+ * beforeInit: [],
5054
+ * ...
5055
+ * }
5056
+ * ```
5057
+ */
5058
+
5059
+
5060
+ _createClass(Hooks, [{
5061
+ key: "createEmptyBucket",
5062
+ value: function createEmptyBucket() {
5063
+ var bucket = Object.create(null); // eslint-disable-next-line no-return-assign
5064
+
5065
+ (0, _array.arrayEach)(REGISTERED_HOOKS, function (hook) {
5066
+ return bucket[hook] = [];
5067
+ });
5068
+ return bucket;
5069
+ }
5070
+ /**
5071
+ * Get hook bucket based on the context of the object or if argument is `undefined`, get the global hook bucket.
5072
+ *
5073
+ * @param {Object} [context=null] A Handsontable instance.
5074
+ * @returns {Object} Returns a global or Handsontable instance bucket.
5075
+ */
5076
+
5077
+ }, {
5078
+ key: "getBucket",
5079
+ value: function getBucket() {
5080
+ var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
5081
+
5082
+ if (context) {
5083
+ if (!context.pluginHookBucket) {
5084
+ context.pluginHookBucket = this.createEmptyBucket();
5085
+ }
5086
+
5087
+ return context.pluginHookBucket;
5088
+ }
5089
+
5090
+ return this.globalBucket;
5091
+ }
5092
+ /**
5093
+ * Adds a listener (globally or locally) to a specified hook name.
5094
+ * If the `context` parameter is provided, the hook will be added only to the instance it references.
5095
+ * Otherwise, the callback will be used everytime the hook fires on any Handsontable instance.
5096
+ * You can provide an array of callback functions as the `callback` argument, this way they will all be fired
5097
+ * once the hook is triggered.
5098
+ *
5099
+ * @see Core#addHook
5100
+ * @param {String} key Hook name.
5101
+ * @param {Function|Array} callback Callback function or an array of functions.
5102
+ * @param {Object} [context=null] The context for the hook callback to be added - a Handsontable instance or leave empty.
5103
+ * @returns {Hooks} Instance of Hooks.
5104
+ *
5105
+ * @example
5106
+ * ```js
5107
+ * // single callback, added locally
5108
+ * Handsontable.hooks.add('beforeInit', myCallback, hotInstance);
5109
+ *
5110
+ * // single callback, added globally
5111
+ * Handsontable.hooks.add('beforeInit', myCallback);
5112
+ *
5113
+ * // multiple callbacks, added locally
5114
+ * Handsontable.hooks.add('beforeInit', [myCallback, anotherCallback], hotInstance);
5115
+ *
5116
+ * // multiple callbacks, added globally
5117
+ * Handsontable.hooks.add('beforeInit', [myCallback, anotherCallback]);
5118
+ * ```
5119
+ */
5120
+
5121
+ }, {
5122
+ key: "add",
5123
+ value: function add(key, callback) {
5124
+ var _this = this;
5125
+
5126
+ var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
5127
+
5128
+ if (Array.isArray(callback)) {
5129
+ (0, _array.arrayEach)(callback, function (c) {
5130
+ return _this.add(key, c, context);
5131
+ });
5132
+ } else {
5133
+ var bucket = this.getBucket(context);
5134
+
5135
+ if (typeof bucket[key] === 'undefined') {
5136
+ this.register(key);
5137
+ bucket[key] = [];
5138
+ }
5139
+
5140
+ callback.skip = false;
5141
+
5142
+ if (bucket[key].indexOf(callback) === -1) {
5143
+ // only add a hook if it has not already been added (adding the same hook twice is now silently ignored)
5144
+ var foundInitialHook = false;
5145
+
5146
+ if (callback.initialHook) {
5147
+ (0, _array.arrayEach)(bucket[key], function (cb, i) {
5148
+ if (cb.initialHook) {
5149
+ bucket[key][i] = callback;
5150
+ foundInitialHook = true;
5151
+ return false;
5152
+ }
5153
+ });
5154
+ }
5155
+
5156
+ if (!foundInitialHook) {
5157
+ bucket[key].push(callback);
5158
+ }
5159
+ }
5160
+ }
5161
+
5162
+ return this;
5163
+ }
5164
+ /**
5165
+ * Adds a listener to a specified hook. After the hook runs this listener will be automatically removed from the bucket.
5166
+ *
5167
+ * @see Core#addHookOnce
5168
+ * @param {String} key Hook/Event name.
5169
+ * @param {Function|Array} callback Callback function.
5170
+ * @param {Object} [context=null] A Handsontable instance.
5171
+ *
5172
+ * @example
5173
+ * ```js
5174
+ * Handsontable.hooks.once('beforeInit', myCallback, hotInstance);
5175
+ * ```
5176
+ */
5177
+
5178
+ }, {
5179
+ key: "once",
5180
+ value: function once(key, callback) {
5181
+ var _this2 = this;
5182
+
5183
+ var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
5184
+
5185
+ if (Array.isArray(callback)) {
5186
+ (0, _array.arrayEach)(callback, function (c) {
5187
+ return _this2.once(key, c, context);
5188
+ });
5189
+ } else {
5190
+ callback.runOnce = true;
5191
+ this.add(key, callback, context);
5192
+ }
5193
+ }
5194
+ /**
5195
+ * Removes a listener from a hook with a given name. If the `context` argument is provided, it removes a listener from a local hook assigned to the given Handsontable instance.
5196
+ *
5197
+ * @see Core#removeHook
5198
+ * @param {String} key Hook/Event name.
5199
+ * @param {Function} callback Callback function (needs the be the function that was previously added to the hook).
5200
+ * @param {Object} [context=null] Handsontable instance.
5201
+ * @return {Boolean} Returns `true` if hook was removed, `false` otherwise.
5202
+ *
5203
+ * @example
5204
+ * ```js
5205
+ * Handsontable.hooks.remove('beforeInit', myCallback);
5206
+ * ```
5207
+ */
5208
+
5209
+ }, {
5210
+ key: "remove",
5211
+ value: function remove(key, callback) {
5212
+ var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
5213
+ var bucket = this.getBucket(context);
5214
+
5215
+ if (typeof bucket[key] !== 'undefined') {
5216
+ if (bucket[key].indexOf(callback) >= 0) {
5217
+ callback.skip = true;
5218
+ return true;
5219
+ }
5220
+ }
5221
+
5222
+ return false;
5223
+ }
5224
+ /**
5225
+ * Checks whether there are any registered listeners for the provided hook name.
5226
+ * If the `context` parameter is provided, it only checks for listeners assigned to the given Handsontable instance.
5227
+ *
5228
+ * @param {String} key Hook name.
5229
+ * @param {Object} [context=null] A Handsontable instance.
5230
+ * @returns {Boolean} `true` for success, `false` otherwise.
5231
+ */
5232
+
5233
+ }, {
5234
+ key: "has",
5235
+ value: function has(key) {
5236
+ var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
5237
+ var bucket = this.getBucket(context);
5238
+ return !!(bucket[key] !== void 0 && bucket[key].length);
5239
+ }
5240
+ /**
5241
+ * Runs all local and global callbacks assigned to the hook identified by the `key` parameter.
5242
+ * It returns either a return value from the last called callback or the first parameter (`p1`) passed to the `run` function.
5243
+ *
5244
+ * @see Core#runHooks
5245
+ * @param {Object} context Handsontable instance.
5246
+ * @param {String} key Hook/Event name.
5247
+ * @param {*} [p1] Parameter to be passed as an argument to the callback function.
5248
+ * @param {*} [p2] Parameter to be passed as an argument to the callback function.
5249
+ * @param {*} [p3] Parameter to be passed as an argument to the callback function.
5250
+ * @param {*} [p4] Parameter to be passed as an argument to the callback function.
5251
+ * @param {*} [p5] Parameter to be passed as an argument to the callback function.
5252
+ * @param {*} [p6] Parameter to be passed as an argument to the callback function.
5253
+ * @returns {*} Either a return value from the last called callback or `p1`.
5254
+ *
5255
+ * @example
5256
+ * ```js
5257
+ * Handsontable.hooks.run(hot, 'beforeInit');
5258
+ * ```
5259
+ */
5260
+
5261
+ }, {
5262
+ key: "run",
5263
+ value: function run(context, key, p1, p2, p3, p4, p5, p6) {
5264
+ {
5265
+ var globalHandlers = this.globalBucket[key];
5266
+ var length = globalHandlers ? globalHandlers.length : 0;
5267
+ var index = 0;
5268
+
5269
+ if (length) {
5270
+ // Do not optimise this loop with arrayEach or arrow function! If you do You'll decrease perf because of GC.
5271
+ while (index < length) {
5272
+ if (!globalHandlers[index] || globalHandlers[index].skip) {
5273
+ index += 1;
5274
+ /* eslint-disable no-continue */
5275
+
5276
+ continue;
5277
+ } // performance considerations - http://jsperf.com/call-vs-apply-for-a-plugin-architecture
5278
+
5279
+
5280
+ var res = globalHandlers[index].call(context, p1, p2, p3, p4, p5, p6);
5281
+
5282
+ if (res !== void 0) {
5283
+ // eslint-disable-next-line no-param-reassign
5284
+ p1 = res;
5285
+ }
5286
+
5287
+ if (globalHandlers[index] && globalHandlers[index].runOnce) {
5288
+ this.remove(key, globalHandlers[index]);
5289
+ }
5290
+
5291
+ index += 1;
5292
+ }
5293
+ }
5294
+ }
5295
+ {
5296
+ var localHandlers = this.getBucket(context)[key];
5297
+
5298
+ var _length = localHandlers ? localHandlers.length : 0;
5299
+
5300
+ var _index = 0;
5301
+
5302
+ if (_length) {
5303
+ // Do not optimise this loop with arrayEach or arrow function! If you do You'll decrease perf because of GC.
5304
+ while (_index < _length) {
5305
+ if (!localHandlers[_index] || localHandlers[_index].skip) {
5306
+ _index += 1;
5307
+ /* eslint-disable no-continue */
5308
+
5309
+ continue;
5310
+ } // performance considerations - http://jsperf.com/call-vs-apply-for-a-plugin-architecture
5311
+
5312
+
5313
+ var _res = localHandlers[_index].call(context, p1, p2, p3, p4, p5, p6);
5314
+
5315
+ if (_res !== void 0) {
5316
+ // eslint-disable-next-line no-param-reassign
5317
+ p1 = _res;
5318
+ }
5319
+
5320
+ if (localHandlers[_index] && localHandlers[_index].runOnce) {
5321
+ this.remove(key, localHandlers[_index], context);
5322
+ }
5323
+
5324
+ _index += 1;
5325
+ }
5326
+ }
5327
+ }
5328
+ return p1;
5329
+ }
5330
+ /**
5331
+ * Destroy all listeners connected to the context. If no context is provided, the global listeners will be destroyed.
5332
+ *
5333
+ * @param {Object} [context=null] A Handsontable instance.
5334
+ * @example
5335
+ * ```js
5336
+ * // destroy the global listeners
5337
+ * Handsontable.hooks.destroy();
5338
+ *
5339
+ * // destroy the local listeners
5340
+ * Handsontable.hooks.destroy(hotInstance);
5341
+ * ```
5342
+ */
5343
+
5344
+ }, {
5345
+ key: "destroy",
5346
+ value: function destroy() {
5347
+ var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
5348
+ // eslint-disable-next-line no-return-assign
5349
+ (0, _object.objectEach)(this.getBucket(context), function (value, key, bucket) {
5350
+ return bucket[key].length = 0;
5351
+ });
5352
+ }
5353
+ /**
5354
+ * Registers a hook name (adds it to the list of the known hook names). Used by plugins.
5355
+ * It is not necessary to call register, but if you use it, your plugin hook will be used returned by
5356
+ * the `getRegistered` method. (which itself is used in the demo http://docs.handsontable.com/tutorial-callbacks.html).
5357
+ *
5358
+ * @param key {String} The hook name.
5359
+ *
5360
+ * @example
5361
+ * ```js
5362
+ * Handsontable.hooks.register('myHook');
5363
+ * ```
5364
+ */
5365
+
5366
+ }, {
5367
+ key: "register",
5368
+ value: function register(key) {
5369
+ if (!this.isRegistered(key)) {
5370
+ REGISTERED_HOOKS.push(key);
5371
+ }
5372
+ }
5373
+ /**
5374
+ * Deregisters a hook name (removes it from the list of known hook names).
5375
+ *
5376
+ * @param key {String} Hook name.
5377
+ *
5378
+ * @example
5379
+ * ```js
5380
+ * Handsontable.hooks.deregister('myHook');
5381
+ * ```
5382
+ */
5383
+
5384
+ }, {
5385
+ key: "deregister",
5386
+ value: function deregister(key) {
5387
+ if (this.isRegistered(key)) {
5388
+ REGISTERED_HOOKS.splice(REGISTERED_HOOKS.indexOf(key), 1);
5389
+ }
5390
+ }
5391
+ /**
5392
+ * Returns a boolean depending on if a hook by such name has been registered.
5393
+ *
5394
+ * @param key {String} Hook name.
5395
+ * @returns {Boolean} `true` for success, `false` otherwise.
5396
+ *
5397
+ * @example
5398
+ * ```js
5399
+ * Handsontable.hooks.isRegistered('beforeInit');
5400
+ *
5401
+ * // Results:
5402
+ * true
5403
+ * ```
5404
+ */
5405
+
5406
+ }, {
5407
+ key: "isRegistered",
5408
+ value: function isRegistered(key) {
5409
+ return REGISTERED_HOOKS.indexOf(key) >= 0;
5410
+ }
5411
+ /**
5412
+ * Returns an array of registered hooks.
5413
+ *
5414
+ * @returns {Array} An array of registered hooks.
5415
+ *
5416
+ * @example
5417
+ * ```js
5418
+ * Handsontable.hooks.getRegistered();
5419
+ *
5420
+ * // Results:
5421
+ * [
5422
+ * ...
5423
+ * 'beforeInit',
5424
+ * 'beforeRender',
5425
+ * 'beforeSetRangeEnd',
5426
+ * 'beforeDrawBorders',
5427
+ * 'beforeChange',
5428
+ * ...
5429
+ * ]
5430
+ * ```
5431
+ */
5432
+
5433
+ }, {
5434
+ key: "getRegistered",
5435
+ value: function getRegistered() {
5436
+ return REGISTERED_HOOKS;
5437
+ }
5438
+ }]);
5439
+
5440
+ return Hooks;
5441
+ }();
5442
+
5443
+ var globalSingleton = new Hooks();
5444
+
5445
+ function getGlobalSingleton() {
5446
+ return globalSingleton;
5447
+ }
5448
+
5449
+ var _default = Hooks;
5450
+ exports.default = _default;
5451
+
5452
+ /***/ }),
5453
+ /* 23 */
5454
+ /***/ (function(module, exports, __webpack_require__) {
5455
+
5456
+ var global = __webpack_require__(6);
5457
+ var hide = __webpack_require__(28);
5458
+ var has = __webpack_require__(27);
5459
+ var SRC = __webpack_require__(51)('src');
5460
+ var TO_STRING = 'toString';
5461
+ var $toString = Function[TO_STRING];
5462
+ var TPL = ('' + $toString).split(TO_STRING);
5463
+
5464
+ __webpack_require__(21).inspectSource = function (it) {
5465
+ return $toString.call(it);
5466
+ };
5467
+
5468
+ (module.exports = function (O, key, val, safe) {
5469
+ var isFunction = typeof val == 'function';
5470
+ if (isFunction) has(val, 'name') || hide(val, 'name', key);
5471
+ if (O[key] === val) return;
5472
+ if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
5473
+ if (O === global) {
5474
+ O[key] = val;
5475
+ } else if (!safe) {
5476
+ delete O[key];
5477
+ hide(O, key, val);
5478
+ } else if (O[key]) {
5479
+ O[key] = val;
5480
+ } else {
5481
+ hide(O, key, val);
5482
+ }
5483
+ // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
5484
+ })(Function.prototype, TO_STRING, function toString() {
5485
+ return typeof this == 'function' && this[SRC] || $toString.call(this);
5486
+ });
5487
+
5488
+
5489
+ /***/ }),
5490
+ /* 24 */
5491
+ /***/ (function(module, exports, __webpack_require__) {
5492
+
5493
+ // 7.1.13 ToObject(argument)
5494
+ var defined = __webpack_require__(40);
5495
+ module.exports = function (it) {
5496
+ return Object(defined(it));
5497
+ };
5498
+
5499
+
5500
+ /***/ }),
5501
+ /* 25 */
5502
+ /***/ (function(module, exports, __webpack_require__) {
5503
+
5504
+ var $export = __webpack_require__(0);
5505
+ var fails = __webpack_require__(4);
5506
+ var defined = __webpack_require__(40);
5507
+ var quot = /"/g;
5508
+ // B.2.3.2.1 CreateHTML(string, tag, attribute, value)
5509
+ var createHTML = function (string, tag, attribute, value) {
5510
+ var S = String(defined(string));
5511
+ var p1 = '<' + tag;
5512
+ if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '&quot;') + '"';
5513
+ return p1 + '>' + S + '</' + tag + '>';
5514
+ };
5515
+ module.exports = function (NAME, exec) {
5516
+ var O = {};
5517
+ O[NAME] = exec(createHTML);
5518
+ $export($export.P + $export.F * fails(function () {
5519
+ var test = ''[NAME]('"');
5520
+ return test !== test.toLowerCase() || test.split('"').length > 3;
5521
+ }), 'String', O);
5522
+ };
5523
+
5524
+
5525
+ /***/ }),
5526
+ /* 26 */
5527
+ /***/ (function(module, exports, __webpack_require__) {
5528
+
5529
+ "use strict";
5530
+
5531
+
5532
+ exports.__esModule = true;
5533
+ exports.RegisteredEditor = RegisteredEditor;
5534
+ exports.getEditorInstance = exports._getEditorInstance = _getEditorInstance;
5535
+ exports.registerEditor = _register;
5536
+ exports.getEditor = _getItem;
5537
+ exports.getRegisteredEditors = exports.getRegisteredEditorNames = exports.hasEditor = void 0;
5538
+
5539
+ var _staticRegister2 = _interopRequireDefault(__webpack_require__(46));
5540
+
5541
+ var _pluginHooks = _interopRequireDefault(__webpack_require__(22));
5542
+
5543
+ var _baseEditor = _interopRequireDefault(__webpack_require__(74));
5544
+
5545
+ var _autocompleteEditor = _interopRequireDefault(__webpack_require__(294));
5546
+
5547
+ var _checkboxEditor = _interopRequireDefault(__webpack_require__(614));
5548
+
5549
+ var _dateEditor = _interopRequireDefault(__webpack_require__(615));
5550
+
5551
+ var _dropdownEditor = _interopRequireDefault(__webpack_require__(620));
5552
+
5553
+ var _handsontableEditor = _interopRequireDefault(__webpack_require__(295));
5554
+
5555
+ var _numericEditor = _interopRequireDefault(__webpack_require__(621));
5556
+
5557
+ var _passwordEditor = _interopRequireDefault(__webpack_require__(622));
5558
+
5559
+ var _selectEditor = _interopRequireDefault(__webpack_require__(623));
5560
+
5561
+ var _textEditor = _interopRequireDefault(__webpack_require__(77));
5562
+
5563
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5564
+
5565
+ /**
5566
+ * Utility to register editors and common namespace for keeping reference to all editor classes
5567
+ */
5568
+ var registeredEditorClasses = new WeakMap();
5569
+
5570
+ var _staticRegister = (0, _staticRegister2.default)('editors'),
5571
+ register = _staticRegister.register,
5572
+ getItem = _staticRegister.getItem,
5573
+ hasItem = _staticRegister.hasItem,
5574
+ getNames = _staticRegister.getNames,
5575
+ getValues = _staticRegister.getValues;
5576
+
5577
+ exports.getRegisteredEditors = getValues;
5578
+ exports.getRegisteredEditorNames = getNames;
5579
+ exports.hasEditor = hasItem;
5580
+
5581
+ _register('base', _baseEditor.default);
5582
+
5583
+ _register('autocomplete', _autocompleteEditor.default);
5584
+
5585
+ _register('checkbox', _checkboxEditor.default);
5586
+
5587
+ _register('date', _dateEditor.default);
5588
+
5589
+ _register('dropdown', _dropdownEditor.default);
5590
+
5591
+ _register('handsontable', _handsontableEditor.default);
5592
+
5593
+ _register('numeric', _numericEditor.default);
5594
+
5595
+ _register('password', _passwordEditor.default);
5596
+
5597
+ _register('select', _selectEditor.default);
5598
+
5599
+ _register('text', _textEditor.default);
5600
+
5601
+ function RegisteredEditor(editorClass) {
5602
+ var instances = {};
5603
+ var Clazz = editorClass;
5604
+
5605
+ this.getConstructor = function () {
5606
+ return editorClass;
5607
+ };
5608
+
5609
+ this.getInstance = function (hotInstance) {
5610
+ if (!(hotInstance.guid in instances)) {
5611
+ instances[hotInstance.guid] = new Clazz(hotInstance);
5612
+ }
5613
+
5614
+ return instances[hotInstance.guid];
5615
+ };
5616
+
5617
+ _pluginHooks.default.getSingleton().add('afterDestroy', function () {
5618
+ instances[this.guid] = null;
5619
+ });
5620
+ }
5621
+ /**
5622
+ * Returns instance (singleton) of editor class.
5623
+ *
5624
+ * @param {String} name Name of an editor under which it has been stored.
5625
+ * @param {Object} hotInstance Instance of Handsontable.
5626
+ * @returns {Function} Returns instance of editor.
5627
+ */
5628
+
5629
+
5630
+ function _getEditorInstance(name, hotInstance) {
5631
+ var editor;
5632
+
5633
+ if (typeof name === 'function') {
5634
+ if (!registeredEditorClasses.get(name)) {
5635
+ _register(null, name);
5636
+ }
5637
+
5638
+ editor = registeredEditorClasses.get(name);
5639
+ } else if (typeof name === 'string') {
5640
+ editor = getItem(name);
5641
+ } else {
5642
+ throw Error('Only strings and functions can be passed as "editor" parameter');
5643
+ }
5644
+
5645
+ if (!editor) {
5646
+ throw Error("No editor registered under name \"".concat(name, "\""));
5647
+ }
5648
+
5649
+ return editor.getInstance(hotInstance);
5650
+ }
5651
+ /**
5652
+ * Retrieve editor class.
5653
+ *
5654
+ * @param {String} name Editor identification.
5655
+ * @returns {Function} Returns editor class.
5656
+ */
5657
+
5658
+
5659
+ function _getItem(name) {
5660
+ if (!hasItem(name)) {
5661
+ throw Error("No registered editor found under \"".concat(name, "\" name"));
5662
+ }
5663
+
5664
+ return getItem(name).getConstructor();
5665
+ }
5666
+ /**
5667
+ * Register editor class under specified name.
5668
+ *
5669
+ * @param {String} name Editor identification.
5670
+ * @param {Function} editorClass Editor class.
5671
+ */
5672
+
5673
+
5674
+ function _register(name, editorClass) {
5675
+ var editorWrapper = new RegisteredEditor(editorClass);
5676
+
5677
+ if (typeof name === 'string') {
5678
+ register(name, editorWrapper);
5679
+ }
5680
+
5681
+ registeredEditorClasses.set(editorClass, editorWrapper);
5682
+ }
5683
+
5684
+ /***/ }),
5685
+ /* 27 */
5686
+ /***/ (function(module, exports) {
5687
+
5688
+ var hasOwnProperty = {}.hasOwnProperty;
5689
+ module.exports = function (it, key) {
5690
+ return hasOwnProperty.call(it, key);
5691
+ };
5692
+
5693
+
5694
+ /***/ }),
5695
+ /* 28 */
5696
+ /***/ (function(module, exports, __webpack_require__) {
5697
+
5698
+ var dP = __webpack_require__(17);
5699
+ var createDesc = __webpack_require__(50);
5700
+ module.exports = __webpack_require__(20) ? function (object, key, value) {
5701
+ return dP.f(object, key, createDesc(1, value));
5702
+ } : function (object, key, value) {
5703
+ object[key] = value;
5704
+ return object;
5705
+ };
5706
+
5707
+
5708
+ /***/ }),
5709
+ /* 29 */
5710
+ /***/ (function(module, exports, __webpack_require__) {
5711
+
5712
+ // to indexed object, toObject with fallback for non-array-like ES3 strings
5713
+ var IObject = __webpack_require__(70);
5714
+ var defined = __webpack_require__(40);
5715
+ module.exports = function (it) {
5716
+ return IObject(defined(it));
5717
+ };
5718
+
5719
+
5720
+ /***/ }),
5721
+ /* 30 */
5722
+ /***/ (function(module, exports, __webpack_require__) {
5723
+
5724
+ "use strict";
5725
+
5726
+
5727
+ exports.__esModule = true;
5728
+ exports.normalizeSelection = normalizeSelection;
5729
+ exports.isSeparator = isSeparator;
5730
+ exports.hasSubMenu = hasSubMenu;
5731
+ exports.isDisabled = isDisabled;
5732
+ exports.isSelectionDisabled = isSelectionDisabled;
5733
+ exports.getValidSelection = getValidSelection;
5734
+ exports.prepareVerticalAlignClass = prepareVerticalAlignClass;
5735
+ exports.prepareHorizontalAlignClass = prepareHorizontalAlignClass;
5736
+ exports.getAlignmentClasses = getAlignmentClasses;
5737
+ exports.align = align;
5738
+ exports.checkSelectionConsistency = checkSelectionConsistency;
5739
+ exports.markLabelAsSelected = markLabelAsSelected;
5740
+ exports.isItemHidden = isItemHidden;
5741
+ exports.filterSeparators = filterSeparators;
5742
+
5743
+ var _array = __webpack_require__(3);
5744
+
5745
+ var _element = __webpack_require__(1);
5746
+
5747
+ var _separator = __webpack_require__(126);
5748
+
5749
+ function normalizeSelection(selRanges) {
5750
+ return (0, _array.arrayMap)(selRanges, function (range) {
5751
+ return {
5752
+ start: range.getTopLeftCorner(),
5753
+ end: range.getBottomRightCorner()
5754
+ };
5755
+ });
5756
+ }
5757
+
5758
+ function isSeparator(cell) {
5759
+ return (0, _element.hasClass)(cell, 'htSeparator');
5760
+ }
5761
+
5762
+ function hasSubMenu(cell) {
5763
+ return (0, _element.hasClass)(cell, 'htSubmenu');
5764
+ }
5765
+
5766
+ function isDisabled(cell) {
5767
+ return (0, _element.hasClass)(cell, 'htDisabled');
5768
+ }
5769
+
5770
+ function isSelectionDisabled(cell) {
5771
+ return (0, _element.hasClass)(cell, 'htSelectionDisabled');
5772
+ }
5773
+
5774
+ function getValidSelection(hot) {
5775
+ var selected = hot.getSelected();
5776
+
5777
+ if (!selected) {
5778
+ return null;
5779
+ }
5780
+
5781
+ if (selected[0] < 0) {
5782
+ return null;
5783
+ }
5784
+
5785
+ return selected;
5786
+ }
5787
+
5788
+ function prepareVerticalAlignClass(className, alignment) {
5789
+ if (className.indexOf(alignment) !== -1) {
5790
+ return className;
5791
+ }
5792
+
5793
+ var replacedClassName = className.replace('htTop', '').replace('htMiddle', '').replace('htBottom', '').replace(' ', '');
5794
+ return "".concat(replacedClassName, " ").concat(alignment);
5795
+ }
5796
+
5797
+ function prepareHorizontalAlignClass(className, alignment) {
5798
+ if (className.indexOf(alignment) !== -1) {
5799
+ return className;
5800
+ }
5801
+
5802
+ var replacedClassName = className.replace('htLeft', '').replace('htCenter', '').replace('htRight', '').replace('htJustify', '').replace(' ', '');
5803
+ return "".concat(replacedClassName, " ").concat(alignment);
5804
+ }
5805
+
5806
+ function getAlignmentClasses(ranges, callback) {
5807
+ var classes = {};
5808
+ (0, _array.arrayEach)(ranges, function (_ref) {
5809
+ var from = _ref.from,
5810
+ to = _ref.to;
5811
+
5812
+ for (var row = from.row; row <= to.row; row++) {
5813
+ for (var col = from.col; col <= to.col; col++) {
5814
+ if (!classes[row]) {
5815
+ classes[row] = [];
5816
+ }
5817
+
5818
+ classes[row][col] = callback(row, col);
5819
+ }
5820
+ }
5821
+ });
5822
+ return classes;
5823
+ }
5824
+
5825
+ function align(ranges, type, alignment, cellDescriptor, propertySetter) {
5826
+ (0, _array.arrayEach)(ranges, function (_ref2) {
5827
+ var from = _ref2.from,
5828
+ to = _ref2.to;
5829
+
5830
+ if (from.row === to.row && from.col === to.col) {
5831
+ applyAlignClassName(from.row, from.col, type, alignment, cellDescriptor, propertySetter);
5832
+ } else {
5833
+ for (var row = from.row; row <= to.row; row++) {
5834
+ for (var col = from.col; col <= to.col; col++) {
5835
+ applyAlignClassName(row, col, type, alignment, cellDescriptor, propertySetter);
5836
+ }
5837
+ }
5838
+ }
5839
+ });
5840
+ }
5841
+
5842
+ function applyAlignClassName(row, col, type, alignment, cellDescriptor, propertySetter) {
5843
+ var cellMeta = cellDescriptor(row, col);
5844
+ var className = alignment;
5845
+
5846
+ if (cellMeta.className) {
5847
+ if (type === 'vertical') {
5848
+ className = prepareVerticalAlignClass(cellMeta.className, alignment);
5849
+ } else {
5850
+ className = prepareHorizontalAlignClass(cellMeta.className, alignment);
5851
+ }
5852
+ }
5853
+
5854
+ propertySetter(row, col, 'className', className);
5855
+ }
5856
+
5857
+ function checkSelectionConsistency(ranges, comparator) {
5858
+ var result = false;
5859
+
5860
+ if (Array.isArray(ranges)) {
5861
+ (0, _array.arrayEach)(ranges, function (range) {
5862
+ range.forAll(function (row, col) {
5863
+ if (comparator(row, col)) {
5864
+ result = true;
5865
+ return false;
5866
+ }
5867
+ });
5868
+ return result;
5869
+ });
5870
+ }
5871
+
5872
+ return result;
5873
+ }
5874
+
5875
+ function markLabelAsSelected(label) {
5876
+ // workaround for https://github.com/handsontable/handsontable/issues/1946
5877
+ return "<span class=\"selected\">".concat(String.fromCharCode(10003), "</span>").concat(label);
5878
+ }
5879
+
5880
+ function isItemHidden(item, instance) {
5881
+ return !item.hidden || !(typeof item.hidden === 'function' && item.hidden.call(instance));
5882
+ }
5883
+
5884
+ function shiftSeparators(items, separator) {
5885
+ var result = items.slice(0);
5886
+
5887
+ for (var i = 0; i < result.length;) {
5888
+ if (result[i].name === separator) {
5889
+ result.shift();
5890
+ } else {
5891
+ break;
5892
+ }
5893
+ }
5894
+
5895
+ return result;
5896
+ }
5897
+
5898
+ function popSeparators(items, separator) {
5899
+ var result = items.slice(0);
5900
+ result.reverse();
5901
+ result = shiftSeparators(result, separator);
5902
+ result.reverse();
5903
+ return result;
5904
+ }
5905
+
5906
+ function removeDuplicatedSeparators(items) {
5907
+ var result = [];
5908
+ (0, _array.arrayEach)(items, function (value, index) {
5909
+ if (index > 0) {
5910
+ if (result[result.length - 1].name !== value.name) {
5911
+ result.push(value);
5912
+ }
5913
+ } else {
5914
+ result.push(value);
5915
+ }
5916
+ });
5917
+ return result;
5918
+ }
5919
+
5920
+ function filterSeparators(items) {
5921
+ var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _separator.KEY;
5922
+ var result = items.slice(0);
5923
+ result = shiftSeparators(result, separator);
5924
+ result = popSeparators(result, separator);
5925
+ result = removeDuplicatedSeparators(result);
5926
+ return result;
5927
+ }
5928
+
5929
+ /***/ }),
5930
+ /* 31 */
5931
+ /***/ (function(module, exports, __webpack_require__) {
5932
+
5933
+ "use strict";
5934
+
5935
+ var fails = __webpack_require__(4);
5936
+
5937
+ module.exports = function (method, arg) {
5938
+ return !!method && fails(function () {
5939
+ // eslint-disable-next-line no-useless-call
5940
+ arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
5941
+ });
5942
+ };
5943
+
5944
+
5945
+ /***/ }),
5946
+ /* 32 */
5947
+ /***/ (function(module, exports, __webpack_require__) {
5948
+
5949
+ "use strict";
5950
+
5951
+
5952
+ exports.__esModule = true;
5953
+ exports.isPrintableChar = isPrintableChar;
5954
+ exports.isMetaKey = isMetaKey;
5955
+ exports.isCtrlKey = isCtrlKey;
5956
+ exports.isCtrlMetaKey = isCtrlMetaKey;
5957
+ exports.isKey = isKey;
5958
+ exports.KEY_CODES = void 0;
5959
+
5960
+ var _array = __webpack_require__(3);
5961
+
5962
+ var KEY_CODES = {
5963
+ MOUSE_LEFT: 1,
5964
+ MOUSE_RIGHT: 3,
5965
+ MOUSE_MIDDLE: 2,
5966
+ BACKSPACE: 8,
5967
+ COMMA: 188,
5968
+ INSERT: 45,
5969
+ DELETE: 46,
5970
+ END: 35,
5971
+ ENTER: 13,
5972
+ ESCAPE: 27,
5973
+ CONTROL: 17,
5974
+ COMMAND_LEFT: 91,
5975
+ COMMAND_RIGHT: 93,
5976
+ COMMAND_FIREFOX: 224,
5977
+ ALT: 18,
5978
+ HOME: 36,
5979
+ PAGE_DOWN: 34,
5980
+ PAGE_UP: 33,
5981
+ PERIOD: 190,
5982
+ SPACE: 32,
5983
+ SHIFT: 16,
5984
+ CAPS_LOCK: 20,
5985
+ TAB: 9,
5986
+ ARROW_RIGHT: 39,
5987
+ ARROW_LEFT: 37,
5988
+ ARROW_UP: 38,
5989
+ ARROW_DOWN: 40,
5990
+ F1: 112,
5991
+ F2: 113,
5992
+ F3: 114,
5993
+ F4: 115,
5994
+ F5: 116,
5995
+ F6: 117,
5996
+ F7: 118,
5997
+ F8: 119,
5998
+ F9: 120,
5999
+ F10: 121,
6000
+ F11: 122,
6001
+ F12: 123,
6002
+ A: 65,
6003
+ C: 67,
6004
+ D: 68,
6005
+ F: 70,
6006
+ L: 76,
6007
+ O: 79,
6008
+ P: 80,
6009
+ S: 83,
6010
+ V: 86,
6011
+ X: 88
6012
+ };
6013
+ /**
6014
+ * Returns true if keyCode represents a printable character.
6015
+ *
6016
+ * @param {Number} keyCode
6017
+ * @returns {Boolean}
6018
+ */
6019
+
6020
+ exports.KEY_CODES = KEY_CODES;
6021
+
6022
+ function isPrintableChar(keyCode) {
6023
+ return keyCode === 32 || // space
6024
+ keyCode >= 48 && keyCode <= 57 || // 0-9
6025
+ keyCode >= 96 && keyCode <= 111 || // numpad
6026
+ keyCode >= 186 && keyCode <= 192 || // ;=,-./`
6027
+ keyCode >= 219 && keyCode <= 222 || // []{}\|"'
6028
+ keyCode >= 226 || // special chars (229 for Asian chars)
6029
+ keyCode >= 65 && keyCode <= 90; // a-z
6030
+ }
6031
+ /**
6032
+ * @param {Number} keyCode
6033
+ * @returns {Boolean}
6034
+ */
6035
+
6036
+
6037
+ function isMetaKey(keyCode) {
6038
+ var metaKeys = [KEY_CODES.ARROW_DOWN, KEY_CODES.ARROW_UP, KEY_CODES.ARROW_LEFT, KEY_CODES.ARROW_RIGHT, KEY_CODES.HOME, KEY_CODES.END, KEY_CODES.DELETE, KEY_CODES.BACKSPACE, KEY_CODES.F1, KEY_CODES.F2, KEY_CODES.F3, KEY_CODES.F4, KEY_CODES.F5, KEY_CODES.F6, KEY_CODES.F7, KEY_CODES.F8, KEY_CODES.F9, KEY_CODES.F10, KEY_CODES.F11, KEY_CODES.F12, KEY_CODES.TAB, KEY_CODES.PAGE_DOWN, KEY_CODES.PAGE_UP, KEY_CODES.ENTER, KEY_CODES.ESCAPE, KEY_CODES.SHIFT, KEY_CODES.CAPS_LOCK, KEY_CODES.ALT];
6039
+ return metaKeys.indexOf(keyCode) !== -1;
6040
+ }
6041
+ /**
6042
+ * Checks if passed key code is ctrl or cmd key. Depends on what OS the code runs it check key code based on
6043
+ * different meta key codes.
6044
+ *
6045
+ * @param {Number} keyCode Key code to check.
6046
+ * @returns {Boolean}
6047
+ */
6048
+
6049
+
6050
+ function isCtrlKey(keyCode) {
6051
+ var keys = [];
6052
+
6053
+ if (window.navigator.platform.includes('Mac')) {
6054
+ keys.push(KEY_CODES.COMMAND_LEFT, KEY_CODES.COMMAND_RIGHT, KEY_CODES.COMMAND_FIREFOX);
6055
+ } else {
6056
+ keys.push(KEY_CODES.CONTROL);
6057
+ }
6058
+
6059
+ return keys.includes(keyCode);
6060
+ }
6061
+ /**
6062
+ * Checks if passed key code is ctrl or cmd key. This helper checks if the key code matches to meta keys
6063
+ * regardless of the OS on which it is running.
6064
+ *
6065
+ * @param {Number} keyCode Key code to check.
6066
+ * @returns {Boolean}
6067
+ */
6068
+
6069
+
6070
+ function isCtrlMetaKey(keyCode) {
6071
+ return [KEY_CODES.CONTROL, KEY_CODES.COMMAND_LEFT, KEY_CODES.COMMAND_RIGHT, KEY_CODES.COMMAND_FIREFOX].includes(keyCode);
6072
+ }
6073
+ /**
6074
+ * @param {Number} keyCode
6075
+ * @param {String} baseCode
6076
+ * @returns {Boolean}
6077
+ */
6078
+
6079
+
6080
+ function isKey(keyCode, baseCode) {
6081
+ var keys = baseCode.split('|');
6082
+ var result = false;
6083
+ (0, _array.arrayEach)(keys, function (key) {
6084
+ if (keyCode === KEY_CODES[key]) {
6085
+ result = true;
6086
+ return false;
6087
+ }
6088
+ });
6089
+ return result;
6090
+ }
6091
+
6092
+ /***/ }),
6093
+ /* 33 */
6094
+ /***/ (function(module, exports) {
6095
+
6096
+ // 7.1.4 ToInteger
6097
+ var ceil = Math.ceil;
6098
+ var floor = Math.floor;
6099
+ module.exports = function (it) {
6100
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
6101
+ };
6102
+
6103
+
6104
+ /***/ }),
6105
+ /* 34 */
6106
+ /***/ (function(module, exports, __webpack_require__) {
6107
+
6108
+ var pIE = __webpack_require__(71);
6109
+ var createDesc = __webpack_require__(50);
6110
+ var toIObject = __webpack_require__(29);
6111
+ var toPrimitive = __webpack_require__(44);
6112
+ var has = __webpack_require__(27);
6113
+ var IE8_DOM_DEFINE = __webpack_require__(130);
6114
+ var gOPD = Object.getOwnPropertyDescriptor;
6115
+
6116
+ exports.f = __webpack_require__(20) ? gOPD : function getOwnPropertyDescriptor(O, P) {
6117
+ O = toIObject(O);
6118
+ P = toPrimitive(P, true);
6119
+ if (IE8_DOM_DEFINE) try {
6120
+ return gOPD(O, P);
6121
+ } catch (e) { /* empty */ }
6122
+ if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
6123
+ };
6124
+
6125
+
6126
+ /***/ }),
6127
+ /* 35 */
6128
+ /***/ (function(module, exports, __webpack_require__) {
6129
+
6130
+ // most Object methods by ES6 should accept primitives
6131
+ var $export = __webpack_require__(0);
6132
+ var core = __webpack_require__(21);
6133
+ var fails = __webpack_require__(4);
6134
+ module.exports = function (KEY, exec) {
6135
+ var fn = (core.Object || {})[KEY] || Object[KEY];
6136
+ var exp = {};
6137
+ exp[KEY] = exec(fn);
6138
+ $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
6139
+ };
6140
+
6141
+
6142
+ /***/ }),
6143
+ /* 36 */
6144
+ /***/ (function(module, exports, __webpack_require__) {
6145
+
6146
+ // 0 -> Array#forEach
6147
+ // 1 -> Array#map
6148
+ // 2 -> Array#filter
6149
+ // 3 -> Array#some
6150
+ // 4 -> Array#every
6151
+ // 5 -> Array#find
6152
+ // 6 -> Array#findIndex
6153
+ var ctx = __webpack_require__(37);
6154
+ var IObject = __webpack_require__(70);
6155
+ var toObject = __webpack_require__(24);
6156
+ var toLength = __webpack_require__(16);
6157
+ var asc = __webpack_require__(529);
6158
+ module.exports = function (TYPE, $create) {
6159
+ var IS_MAP = TYPE == 1;
6160
+ var IS_FILTER = TYPE == 2;
6161
+ var IS_SOME = TYPE == 3;
6162
+ var IS_EVERY = TYPE == 4;
6163
+ var IS_FIND_INDEX = TYPE == 6;
6164
+ var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
6165
+ var create = $create || asc;
6166
+ return function ($this, callbackfn, that) {
6167
+ var O = toObject($this);
6168
+ var self = IObject(O);
6169
+ var f = ctx(callbackfn, that, 3);
6170
+ var length = toLength(self.length);
6171
+ var index = 0;
6172
+ var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
6173
+ var val, res;
6174
+ for (;length > index; index++) if (NO_HOLES || index in self) {
6175
+ val = self[index];
6176
+ res = f(val, index, O);
6177
+ if (TYPE) {
6178
+ if (IS_MAP) result[index] = res; // map
6179
+ else if (res) switch (TYPE) {
6180
+ case 3: return true; // some
6181
+ case 5: return val; // find
6182
+ case 6: return index; // findIndex
6183
+ case 2: result.push(val); // filter
6184
+ } else if (IS_EVERY) return false; // every
6185
+ }
6186
+ }
6187
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
6188
+ };
6189
+ };
6190
+
6191
+
6192
+ /***/ }),
6193
+ /* 37 */
6194
+ /***/ (function(module, exports, __webpack_require__) {
6195
+
6196
+ // optional / simple context binding
6197
+ var aFunction = __webpack_require__(38);
6198
+ module.exports = function (fn, that, length) {
6199
+ aFunction(fn);
6200
+ if (that === undefined) return fn;
6201
+ switch (length) {
6202
+ case 1: return function (a) {
6203
+ return fn.call(that, a);
6204
+ };
6205
+ case 2: return function (a, b) {
6206
+ return fn.call(that, a, b);
6207
+ };
6208
+ case 3: return function (a, b, c) {
6209
+ return fn.call(that, a, b, c);
6210
+ };
6211
+ }
6212
+ return function (/* ...args */) {
6213
+ return fn.apply(that, arguments);
6214
+ };
6215
+ };
6216
+
6217
+
6218
+ /***/ }),
6219
+ /* 38 */
6220
+ /***/ (function(module, exports) {
6221
+
6222
+ module.exports = function (it) {
6223
+ if (typeof it != 'function') throw TypeError(it + ' is not a function!');
6224
+ return it;
6225
+ };
6226
+
6227
+
6228
+ /***/ }),
6229
+ /* 39 */
6230
+ /***/ (function(module, exports) {
6231
+
6232
+ var toString = {}.toString;
6233
+
6234
+ module.exports = function (it) {
6235
+ return toString.call(it).slice(8, -1);
6236
+ };
6237
+
6238
+
6239
+ /***/ }),
6240
+ /* 40 */
6241
+ /***/ (function(module, exports) {
6242
+
6243
+ // 7.2.1 RequireObjectCoercible(argument)
6244
+ module.exports = function (it) {
6245
+ if (it == undefined) throw TypeError("Can't call method on " + it);
6246
+ return it;
6247
+ };
6248
+
6249
+
6250
+ /***/ }),
6251
+ /* 41 */
6252
+ /***/ (function(module, exports, __webpack_require__) {
6253
+
6254
+ "use strict";
6255
+
6256
+ if (__webpack_require__(20)) {
6257
+ var LIBRARY = __webpack_require__(52);
6258
+ var global = __webpack_require__(6);
6259
+ var fails = __webpack_require__(4);
6260
+ var $export = __webpack_require__(0);
6261
+ var $typed = __webpack_require__(89);
6262
+ var $buffer = __webpack_require__(118);
6263
+ var ctx = __webpack_require__(37);
6264
+ var anInstance = __webpack_require__(64);
6265
+ var propertyDesc = __webpack_require__(50);
6266
+ var hide = __webpack_require__(28);
6267
+ var redefineAll = __webpack_require__(65);
6268
+ var toInteger = __webpack_require__(33);
6269
+ var toLength = __webpack_require__(16);
6270
+ var toIndex = __webpack_require__(156);
6271
+ var toAbsoluteIndex = __webpack_require__(54);
6272
+ var toPrimitive = __webpack_require__(44);
6273
+ var has = __webpack_require__(27);
6274
+ var classof = __webpack_require__(72);
6275
+ var isObject = __webpack_require__(7);
6276
+ var toObject = __webpack_require__(24);
6277
+ var isArrayIter = __webpack_require__(110);
6278
+ var create = __webpack_require__(55);
6279
+ var getPrototypeOf = __webpack_require__(57);
6280
+ var gOPN = __webpack_require__(56).f;
6281
+ var getIterFn = __webpack_require__(112);
6282
+ var uid = __webpack_require__(51);
6283
+ var wks = __webpack_require__(12);
6284
+ var createArrayMethod = __webpack_require__(36);
6285
+ var createArrayIncludes = __webpack_require__(79);
6286
+ var speciesConstructor = __webpack_require__(73);
6287
+ var ArrayIterators = __webpack_require__(114);
6288
+ var Iterators = __webpack_require__(61);
6289
+ var $iterDetect = __webpack_require__(82);
6290
+ var setSpecies = __webpack_require__(63);
6291
+ var arrayFill = __webpack_require__(113);
6292
+ var arrayCopyWithin = __webpack_require__(147);
6293
+ var $DP = __webpack_require__(17);
6294
+ var $GOPD = __webpack_require__(34);
6295
+ var dP = $DP.f;
6296
+ var gOPD = $GOPD.f;
6297
+ var RangeError = global.RangeError;
6298
+ var TypeError = global.TypeError;
6299
+ var Uint8Array = global.Uint8Array;
6300
+ var ARRAY_BUFFER = 'ArrayBuffer';
6301
+ var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;
6302
+ var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
6303
+ var PROTOTYPE = 'prototype';
6304
+ var ArrayProto = Array[PROTOTYPE];
6305
+ var $ArrayBuffer = $buffer.ArrayBuffer;
6306
+ var $DataView = $buffer.DataView;
6307
+ var arrayForEach = createArrayMethod(0);
6308
+ var arrayFilter = createArrayMethod(2);
6309
+ var arraySome = createArrayMethod(3);
6310
+ var arrayEvery = createArrayMethod(4);
6311
+ var arrayFind = createArrayMethod(5);
6312
+ var arrayFindIndex = createArrayMethod(6);
6313
+ var arrayIncludes = createArrayIncludes(true);
6314
+ var arrayIndexOf = createArrayIncludes(false);
6315
+ var arrayValues = ArrayIterators.values;
6316
+ var arrayKeys = ArrayIterators.keys;
6317
+ var arrayEntries = ArrayIterators.entries;
6318
+ var arrayLastIndexOf = ArrayProto.lastIndexOf;
6319
+ var arrayReduce = ArrayProto.reduce;
6320
+ var arrayReduceRight = ArrayProto.reduceRight;
6321
+ var arrayJoin = ArrayProto.join;
6322
+ var arraySort = ArrayProto.sort;
6323
+ var arraySlice = ArrayProto.slice;
6324
+ var arrayToString = ArrayProto.toString;
6325
+ var arrayToLocaleString = ArrayProto.toLocaleString;
6326
+ var ITERATOR = wks('iterator');
6327
+ var TAG = wks('toStringTag');
6328
+ var TYPED_CONSTRUCTOR = uid('typed_constructor');
6329
+ var DEF_CONSTRUCTOR = uid('def_constructor');
6330
+ var ALL_CONSTRUCTORS = $typed.CONSTR;
6331
+ var TYPED_ARRAY = $typed.TYPED;
6332
+ var VIEW = $typed.VIEW;
6333
+ var WRONG_LENGTH = 'Wrong length!';
6334
+
6335
+ var $map = createArrayMethod(1, function (O, length) {
6336
+ return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
6337
+ });
6338
+
6339
+ var LITTLE_ENDIAN = fails(function () {
6340
+ // eslint-disable-next-line no-undef
6341
+ return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
6342
+ });
6343
+
6344
+ var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {
6345
+ new Uint8Array(1).set({});
6346
+ });
6347
+
6348
+ var toOffset = function (it, BYTES) {
6349
+ var offset = toInteger(it);
6350
+ if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');
6351
+ return offset;
6352
+ };
6353
+
6354
+ var validate = function (it) {
6355
+ if (isObject(it) && TYPED_ARRAY in it) return it;
6356
+ throw TypeError(it + ' is not a typed array!');
6357
+ };
6358
+
6359
+ var allocate = function (C, length) {
6360
+ if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {
6361
+ throw TypeError('It is not a typed array constructor!');
6362
+ } return new C(length);
6363
+ };
6364
+
6365
+ var speciesFromList = function (O, list) {
6366
+ return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
6367
+ };
6368
+
6369
+ var fromList = function (C, list) {
6370
+ var index = 0;
6371
+ var length = list.length;
6372
+ var result = allocate(C, length);
6373
+ while (length > index) result[index] = list[index++];
6374
+ return result;
6375
+ };
6376
+
6377
+ var addGetter = function (it, key, internal) {
6378
+ dP(it, key, { get: function () { return this._d[internal]; } });
6379
+ };
6380
+
6381
+ var $from = function from(source /* , mapfn, thisArg */) {
6382
+ var O = toObject(source);
6383
+ var aLen = arguments.length;
6384
+ var mapfn = aLen > 1 ? arguments[1] : undefined;
6385
+ var mapping = mapfn !== undefined;
6386
+ var iterFn = getIterFn(O);
6387
+ var i, length, values, result, step, iterator;
6388
+ if (iterFn != undefined && !isArrayIter(iterFn)) {
6389
+ for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {
6390
+ values.push(step.value);
6391
+ } O = values;
6392
+ }
6393
+ if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);
6394
+ for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {
6395
+ result[i] = mapping ? mapfn(O[i], i) : O[i];
6396
+ }
6397
+ return result;
6398
+ };
6399
+
6400
+ var $of = function of(/* ...items */) {
6401
+ var index = 0;
6402
+ var length = arguments.length;
6403
+ var result = allocate(this, length);
6404
+ while (length > index) result[index] = arguments[index++];
6405
+ return result;
6406
+ };
6407
+
6408
+ // iOS Safari 6.x fails here
6409
+ var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });
6410
+
6411
+ var $toLocaleString = function toLocaleString() {
6412
+ return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
6413
+ };
6414
+
6415
+ var proto = {
6416
+ copyWithin: function copyWithin(target, start /* , end */) {
6417
+ return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
6418
+ },
6419
+ every: function every(callbackfn /* , thisArg */) {
6420
+ return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
6421
+ },
6422
+ fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars
6423
+ return arrayFill.apply(validate(this), arguments);
6424
+ },
6425
+ filter: function filter(callbackfn /* , thisArg */) {
6426
+ return speciesFromList(this, arrayFilter(validate(this), callbackfn,
6427
+ arguments.length > 1 ? arguments[1] : undefined));
6428
+ },
6429
+ find: function find(predicate /* , thisArg */) {
6430
+ return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
6431
+ },
6432
+ findIndex: function findIndex(predicate /* , thisArg */) {
6433
+ return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
6434
+ },
6435
+ forEach: function forEach(callbackfn /* , thisArg */) {
6436
+ arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
6437
+ },
6438
+ indexOf: function indexOf(searchElement /* , fromIndex */) {
6439
+ return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
6440
+ },
6441
+ includes: function includes(searchElement /* , fromIndex */) {
6442
+ return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
6443
+ },
6444
+ join: function join(separator) { // eslint-disable-line no-unused-vars
6445
+ return arrayJoin.apply(validate(this), arguments);
6446
+ },
6447
+ lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars
6448
+ return arrayLastIndexOf.apply(validate(this), arguments);
6449
+ },
6450
+ map: function map(mapfn /* , thisArg */) {
6451
+ return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
6452
+ },
6453
+ reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
6454
+ return arrayReduce.apply(validate(this), arguments);
6455
+ },
6456
+ reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
6457
+ return arrayReduceRight.apply(validate(this), arguments);
6458
+ },
6459
+ reverse: function reverse() {
6460
+ var that = this;
6461
+ var length = validate(that).length;
6462
+ var middle = Math.floor(length / 2);
6463
+ var index = 0;
6464
+ var value;
6465
+ while (index < middle) {
6466
+ value = that[index];
6467
+ that[index++] = that[--length];
6468
+ that[length] = value;
6469
+ } return that;
6470
+ },
6471
+ some: function some(callbackfn /* , thisArg */) {
6472
+ return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
6473
+ },
6474
+ sort: function sort(comparefn) {
6475
+ return arraySort.call(validate(this), comparefn);
6476
+ },
6477
+ subarray: function subarray(begin, end) {
6478
+ var O = validate(this);
6479
+ var length = O.length;
6480
+ var $begin = toAbsoluteIndex(begin, length);
6481
+ return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
6482
+ O.buffer,
6483
+ O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
6484
+ toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)
6485
+ );
6486
+ }
6487
+ };
6488
+
6489
+ var $slice = function slice(start, end) {
6490
+ return speciesFromList(this, arraySlice.call(validate(this), start, end));
6491
+ };
6492
+
6493
+ var $set = function set(arrayLike /* , offset */) {
6494
+ validate(this);
6495
+ var offset = toOffset(arguments[1], 1);
6496
+ var length = this.length;
6497
+ var src = toObject(arrayLike);
6498
+ var len = toLength(src.length);
6499
+ var index = 0;
6500
+ if (len + offset > length) throw RangeError(WRONG_LENGTH);
6501
+ while (index < len) this[offset + index] = src[index++];
6502
+ };
6503
+
6504
+ var $iterators = {
6505
+ entries: function entries() {
6506
+ return arrayEntries.call(validate(this));
6507
+ },
6508
+ keys: function keys() {
6509
+ return arrayKeys.call(validate(this));
6510
+ },
6511
+ values: function values() {
6512
+ return arrayValues.call(validate(this));
6513
+ }
6514
+ };
6515
+
6516
+ var isTAIndex = function (target, key) {
6517
+ return isObject(target)
6518
+ && target[TYPED_ARRAY]
6519
+ && typeof key != 'symbol'
6520
+ && key in target
6521
+ && String(+key) == String(key);
6522
+ };
6523
+ var $getDesc = function getOwnPropertyDescriptor(target, key) {
6524
+ return isTAIndex(target, key = toPrimitive(key, true))
6525
+ ? propertyDesc(2, target[key])
6526
+ : gOPD(target, key);
6527
+ };
6528
+ var $setDesc = function defineProperty(target, key, desc) {
6529
+ if (isTAIndex(target, key = toPrimitive(key, true))
6530
+ && isObject(desc)
6531
+ && has(desc, 'value')
6532
+ && !has(desc, 'get')
6533
+ && !has(desc, 'set')
6534
+ // TODO: add validation descriptor w/o calling accessors
6535
+ && !desc.configurable
6536
+ && (!has(desc, 'writable') || desc.writable)
6537
+ && (!has(desc, 'enumerable') || desc.enumerable)
6538
+ ) {
6539
+ target[key] = desc.value;
6540
+ return target;
6541
+ } return dP(target, key, desc);
6542
+ };
6543
+
6544
+ if (!ALL_CONSTRUCTORS) {
6545
+ $GOPD.f = $getDesc;
6546
+ $DP.f = $setDesc;
6547
+ }
6548
+
6549
+ $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
6550
+ getOwnPropertyDescriptor: $getDesc,
6551
+ defineProperty: $setDesc
6552
+ });
6553
+
6554
+ if (fails(function () { arrayToString.call({}); })) {
6555
+ arrayToString = arrayToLocaleString = function toString() {
6556
+ return arrayJoin.call(this);
6557
+ };
6558
+ }
6559
+
6560
+ var $TypedArrayPrototype$ = redefineAll({}, proto);
6561
+ redefineAll($TypedArrayPrototype$, $iterators);
6562
+ hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
6563
+ redefineAll($TypedArrayPrototype$, {
6564
+ slice: $slice,
6565
+ set: $set,
6566
+ constructor: function () { /* noop */ },
6567
+ toString: arrayToString,
6568
+ toLocaleString: $toLocaleString
6569
+ });
6570
+ addGetter($TypedArrayPrototype$, 'buffer', 'b');
6571
+ addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
6572
+ addGetter($TypedArrayPrototype$, 'byteLength', 'l');
6573
+ addGetter($TypedArrayPrototype$, 'length', 'e');
6574
+ dP($TypedArrayPrototype$, TAG, {
6575
+ get: function () { return this[TYPED_ARRAY]; }
6576
+ });
6577
+
6578
+ // eslint-disable-next-line max-statements
6579
+ module.exports = function (KEY, BYTES, wrapper, CLAMPED) {
6580
+ CLAMPED = !!CLAMPED;
6581
+ var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';
6582
+ var GETTER = 'get' + KEY;
6583
+ var SETTER = 'set' + KEY;
6584
+ var TypedArray = global[NAME];
6585
+ var Base = TypedArray || {};
6586
+ var TAC = TypedArray && getPrototypeOf(TypedArray);
6587
+ var FORCED = !TypedArray || !$typed.ABV;
6588
+ var O = {};
6589
+ var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
6590
+ var getter = function (that, index) {
6591
+ var data = that._d;
6592
+ return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
6593
+ };
6594
+ var setter = function (that, index, value) {
6595
+ var data = that._d;
6596
+ if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
6597
+ data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
6598
+ };
6599
+ var addElement = function (that, index) {
6600
+ dP(that, index, {
6601
+ get: function () {
6602
+ return getter(this, index);
6603
+ },
6604
+ set: function (value) {
6605
+ return setter(this, index, value);
6606
+ },
6607
+ enumerable: true
6608
+ });
6609
+ };
6610
+ if (FORCED) {
6611
+ TypedArray = wrapper(function (that, data, $offset, $length) {
6612
+ anInstance(that, TypedArray, NAME, '_d');
6613
+ var index = 0;
6614
+ var offset = 0;
6615
+ var buffer, byteLength, length, klass;
6616
+ if (!isObject(data)) {
6617
+ length = toIndex(data);
6618
+ byteLength = length * BYTES;
6619
+ buffer = new $ArrayBuffer(byteLength);
6620
+ } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
6621
+ buffer = data;
6622
+ offset = toOffset($offset, BYTES);
6623
+ var $len = data.byteLength;
6624
+ if ($length === undefined) {
6625
+ if ($len % BYTES) throw RangeError(WRONG_LENGTH);
6626
+ byteLength = $len - offset;
6627
+ if (byteLength < 0) throw RangeError(WRONG_LENGTH);
6628
+ } else {
6629
+ byteLength = toLength($length) * BYTES;
6630
+ if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);
6631
+ }
6632
+ length = byteLength / BYTES;
6633
+ } else if (TYPED_ARRAY in data) {
6634
+ return fromList(TypedArray, data);
6635
+ } else {
6636
+ return $from.call(TypedArray, data);
6637
+ }
6638
+ hide(that, '_d', {
6639
+ b: buffer,
6640
+ o: offset,
6641
+ l: byteLength,
6642
+ e: length,
6643
+ v: new $DataView(buffer)
6644
+ });
6645
+ while (index < length) addElement(that, index++);
6646
+ });
6647
+ TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
6648
+ hide(TypedArrayPrototype, 'constructor', TypedArray);
6649
+ } else if (!fails(function () {
6650
+ TypedArray(1);
6651
+ }) || !fails(function () {
6652
+ new TypedArray(-1); // eslint-disable-line no-new
6653
+ }) || !$iterDetect(function (iter) {
6654
+ new TypedArray(); // eslint-disable-line no-new
6655
+ new TypedArray(null); // eslint-disable-line no-new
6656
+ new TypedArray(1.5); // eslint-disable-line no-new
6657
+ new TypedArray(iter); // eslint-disable-line no-new
6658
+ }, true)) {
6659
+ TypedArray = wrapper(function (that, data, $offset, $length) {
6660
+ anInstance(that, TypedArray, NAME);
6661
+ var klass;
6662
+ // `ws` module bug, temporarily remove validation length for Uint8Array
6663
+ // https://github.com/websockets/ws/pull/645
6664
+ if (!isObject(data)) return new Base(toIndex(data));
6665
+ if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
6666
+ return $length !== undefined
6667
+ ? new Base(data, toOffset($offset, BYTES), $length)
6668
+ : $offset !== undefined
6669
+ ? new Base(data, toOffset($offset, BYTES))
6670
+ : new Base(data);
6671
+ }
6672
+ if (TYPED_ARRAY in data) return fromList(TypedArray, data);
6673
+ return $from.call(TypedArray, data);
6674
+ });
6675
+ arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {
6676
+ if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);
6677
+ });
6678
+ TypedArray[PROTOTYPE] = TypedArrayPrototype;
6679
+ if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;
6680
+ }
6681
+ var $nativeIterator = TypedArrayPrototype[ITERATOR];
6682
+ var CORRECT_ITER_NAME = !!$nativeIterator
6683
+ && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);
6684
+ var $iterator = $iterators.values;
6685
+ hide(TypedArray, TYPED_CONSTRUCTOR, true);
6686
+ hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
6687
+ hide(TypedArrayPrototype, VIEW, true);
6688
+ hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
6689
+
6690
+ if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {
6691
+ dP(TypedArrayPrototype, TAG, {
6692
+ get: function () { return NAME; }
6693
+ });
6694
+ }
6695
+
6696
+ O[NAME] = TypedArray;
6697
+
6698
+ $export($export.G + $export.W + $export.F * (TypedArray != Base), O);
6699
+
6700
+ $export($export.S, NAME, {
6701
+ BYTES_PER_ELEMENT: BYTES
6702
+ });
6703
+
6704
+ $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {
6705
+ from: $from,
6706
+ of: $of
6707
+ });
6708
+
6709
+ if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);
6710
+
6711
+ $export($export.P, NAME, proto);
6712
+
6713
+ setSpecies(NAME);
6714
+
6715
+ $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });
6716
+
6717
+ $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);
6718
+
6719
+ if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;
6720
+
6721
+ $export($export.P + $export.F * fails(function () {
6722
+ new TypedArray(1).slice();
6723
+ }), NAME, { slice: $slice });
6724
+
6725
+ $export($export.P + $export.F * (fails(function () {
6726
+ return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();
6727
+ }) || !fails(function () {
6728
+ TypedArrayPrototype.toLocaleString.call([1, 2]);
6729
+ })), NAME, { toLocaleString: $toLocaleString });
6730
+
6731
+ Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
6732
+ if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);
6733
+ };
6734
+ } else module.exports = function () { /* empty */ };
6735
+
6736
+
6737
+ /***/ }),
6738
+ /* 42 */
6739
+ /***/ (function(module, exports, __webpack_require__) {
6740
+
6741
+ "use strict";
6742
+
6743
+
6744
+ exports.__esModule = true;
6745
+ exports.setBrowserMeta = setBrowserMeta;
6746
+ exports.isChrome = isChrome;
6747
+ exports.isEdge = isEdge;
6748
+ exports.isIE = isIE;
6749
+ exports.isIE8 = isIE8;
6750
+ exports.isIE9 = isIE9;
6751
+ exports.isMSBrowser = isMSBrowser;
6752
+ exports.isMobileBrowser = isMobileBrowser;
6753
+ exports.isSafari = isSafari;
6754
+
6755
+ var _object = __webpack_require__(2);
6756
+
6757
+ var tester = function tester(testerFunc) {
6758
+ var result = {
6759
+ value: false
6760
+ };
6761
+
6762
+ result.test = function (ua, vendor) {
6763
+ result.value = testerFunc(ua, vendor);
6764
+ };
6765
+
6766
+ return result;
6767
+ };
6768
+
6769
+ var browsers = {
6770
+ chrome: tester(function (ua, vendor) {
6771
+ return /Chrome/.test(ua) && /Google/.test(vendor);
6772
+ }),
6773
+ edge: tester(function (ua) {
6774
+ return /Edge/.test(ua);
6775
+ }),
6776
+ ie: tester(function (ua) {
6777
+ return /Trident/.test(ua);
6778
+ }),
6779
+ ie8: tester(function () {
6780
+ return !document.createTextNode('test').textContent;
6781
+ }),
6782
+ ie9: tester(function () {
6783
+ return !!document.documentMode;
6784
+ }),
6785
+ mobile: tester(function (ua) {
6786
+ return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(ua);
6787
+ }),
6788
+ safari: tester(function (ua, vendor) {
6789
+ return /Safari/.test(ua) && /Apple Computer/.test(vendor);
6790
+ })
6791
+ };
6792
+
6793
+ function setBrowserMeta() {
6794
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
6795
+ _ref$userAgent = _ref.userAgent,
6796
+ userAgent = _ref$userAgent === void 0 ? navigator.userAgent : _ref$userAgent,
6797
+ _ref$vendor = _ref.vendor,
6798
+ vendor = _ref$vendor === void 0 ? navigator.vendor : _ref$vendor;
6799
+
6800
+ (0, _object.objectEach)(browsers, function (_ref2) {
6801
+ var test = _ref2.test;
6802
+ return void test(userAgent, vendor);
6803
+ });
6804
+ }
6805
+
6806
+ setBrowserMeta();
6807
+
6808
+ function isChrome() {
6809
+ return browsers.chrome.value;
6810
+ }
6811
+
6812
+ function isEdge() {
6813
+ return browsers.edge.value;
6814
+ }
6815
+
6816
+ function isIE() {
6817
+ return browsers.ie.value;
6818
+ }
6819
+
6820
+ function isIE8() {
6821
+ return browsers.ie8.value;
6822
+ }
6823
+
6824
+ function isIE9() {
6825
+ return browsers.ie9.value;
6826
+ }
6827
+
6828
+ function isMSBrowser() {
6829
+ return browsers.ie.value || browsers.edge.value;
6830
+ }
6831
+
6832
+ function isMobileBrowser() {
6833
+ return browsers.mobile.value;
6834
+ }
6835
+
6836
+ function isSafari() {
6837
+ return browsers.safari.value;
6838
+ }
6839
+
6840
+ /***/ }),
6841
+ /* 43 */
6842
+ /***/ (function(module, exports, __webpack_require__) {
6843
+
6844
+ "use strict";
6845
+
6846
+
6847
+ exports.__esModule = true;
6848
+ exports.default = void 0;
6849
+
6850
+ var _element = __webpack_require__(1);
6851
+
6852
+ var _object = __webpack_require__(2);
6853
+
6854
+ var _array = __webpack_require__(3);
6855
+
6856
+ var _eventManager = _interopRequireDefault(__webpack_require__(10));
6857
+
6858
+ var _core = _interopRequireDefault(__webpack_require__(165));
6859
+
6860
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6861
+
6862
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6863
+
6864
+ 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); } }
6865
+
6866
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
6867
+
6868
+ var registeredOverlays = {};
6869
+ /**
6870
+ * Creates an overlay over the original Walkontable instance. The overlay renders the clone of the original Walkontable
6871
+ * and (optionally) implements behavior needed for native horizontal and vertical scrolling.
6872
+ *
6873
+ * @class Overlay
6874
+ */
6875
+
6876
+ var Overlay =
6877
+ /*#__PURE__*/
6878
+ function () {
6879
+ _createClass(Overlay, null, [{
6880
+ key: "registerOverlay",
6881
+
6882
+ /**
6883
+ * Register overlay class.
6884
+ *
6885
+ * @param {String} type Overlay type, one of the CLONE_TYPES value
6886
+ * @param {Overlay} overlayClass Overlay class extended from base overlay class {@link Overlay}
6887
+ */
6888
+ value: function registerOverlay(type, overlayClass) {
6889
+ if (Overlay.CLONE_TYPES.indexOf(type) === -1) {
6890
+ throw new Error("Unsupported overlay (".concat(type, ")."));
6891
+ }
6892
+
6893
+ registeredOverlays[type] = overlayClass;
6894
+ }
6895
+ /**
6896
+ * Create new instance of overlay type.
6897
+ *
6898
+ * @param {String} type Overlay type, one of the CLONE_TYPES value
6899
+ * @param {Walkontable} wot Walkontable instance
6900
+ */
6901
+
6902
+ }, {
6903
+ key: "createOverlay",
6904
+ value: function createOverlay(type, wot) {
6905
+ return new registeredOverlays[type](wot);
6906
+ }
6907
+ /**
6908
+ * Check if specified overlay was registered.
6909
+ *
6910
+ * @param {String} type Overlay type, one of the CLONE_TYPES value
6911
+ * @returns {Boolean}
6912
+ */
6913
+
6914
+ }, {
6915
+ key: "hasOverlay",
6916
+ value: function hasOverlay(type) {
6917
+ return registeredOverlays[type] !== void 0;
6918
+ }
6919
+ /**
6920
+ * Checks if overlay object (`overlay`) is instance of overlay type (`type`).
6921
+ *
6922
+ * @param {Overlay} overlay Overlay object
6923
+ * @param {String} type Overlay type, one of the CLONE_TYPES value
6924
+ * @returns {Boolean}
6925
+ */
6926
+
6927
+ }, {
6928
+ key: "isOverlayTypeOf",
6929
+ value: function isOverlayTypeOf(overlay, type) {
6930
+ if (!overlay || !registeredOverlays[type]) {
6931
+ return false;
6932
+ }
6933
+
6934
+ return overlay instanceof registeredOverlays[type];
6935
+ }
6936
+ /**
6937
+ * @param {Walkontable} wotInstance
6938
+ */
6939
+
6940
+ }, {
6941
+ key: "CLONE_TOP",
6942
+
6943
+ /**
6944
+ * @type {String}
6945
+ */
6946
+ get: function get() {
6947
+ return 'top';
6948
+ }
6949
+ /**
6950
+ * @type {String}
6951
+ */
6952
+
6953
+ }, {
6954
+ key: "CLONE_BOTTOM",
6955
+ get: function get() {
6956
+ return 'bottom';
6957
+ }
6958
+ /**
6959
+ * @type {String}
6960
+ */
6961
+
6962
+ }, {
6963
+ key: "CLONE_LEFT",
6964
+ get: function get() {
6965
+ return 'left';
6966
+ }
6967
+ /**
6968
+ * @type {String}
6969
+ */
6970
+
6971
+ }, {
6972
+ key: "CLONE_TOP_LEFT_CORNER",
6973
+ get: function get() {
6974
+ return 'top_left_corner';
6975
+ }
6976
+ /**
6977
+ * @type {String}
6978
+ */
6979
+
6980
+ }, {
6981
+ key: "CLONE_BOTTOM_LEFT_CORNER",
6982
+ get: function get() {
6983
+ return 'bottom_left_corner';
6984
+ }
6985
+ /**
6986
+ * @type {String}
6987
+ */
6988
+
6989
+ }, {
6990
+ key: "CLONE_DEBUG",
6991
+ get: function get() {
6992
+ return 'debug';
6993
+ }
6994
+ /**
6995
+ * List of all availables clone types
6996
+ *
6997
+ * @type {Array}
6998
+ */
6999
+
7000
+ }, {
7001
+ key: "CLONE_TYPES",
7002
+ get: function get() {
7003
+ return [Overlay.CLONE_TOP, Overlay.CLONE_BOTTOM, Overlay.CLONE_LEFT, Overlay.CLONE_TOP_LEFT_CORNER, Overlay.CLONE_BOTTOM_LEFT_CORNER, Overlay.CLONE_DEBUG];
7004
+ }
7005
+ }]);
7006
+
7007
+ function Overlay(wotInstance) {
7008
+ _classCallCheck(this, Overlay);
7009
+
7010
+ (0, _object.defineGetter)(this, 'wot', wotInstance, {
7011
+ writable: false
7012
+ }); // legacy support, deprecated in the future
7013
+
7014
+ this.instance = this.wot;
7015
+ this.type = '';
7016
+ this.mainTableScrollableElement = null;
7017
+ this.TABLE = this.wot.wtTable.TABLE;
7018
+ this.hider = this.wot.wtTable.hider;
7019
+ this.spreader = this.wot.wtTable.spreader;
7020
+ this.holder = this.wot.wtTable.holder;
7021
+ this.wtRootElement = this.wot.wtTable.wtRootElement;
7022
+ this.trimmingContainer = (0, _element.getTrimmingContainer)(this.hider.parentNode.parentNode);
7023
+ this.areElementSizesAdjusted = false;
7024
+ this.updateStateOfRendering();
7025
+ }
7026
+ /**
7027
+ * Update internal state of object with an information about the need of full rendering of the overlay.
7028
+ *
7029
+ * @returns {Boolean} Returns `true` if the state has changed since the last check.
7030
+ */
7031
+
7032
+
7033
+ _createClass(Overlay, [{
7034
+ key: "updateStateOfRendering",
7035
+ value: function updateStateOfRendering() {
7036
+ var previousState = this.needFullRender;
7037
+ this.needFullRender = this.shouldBeRendered();
7038
+ var changed = previousState !== this.needFullRender;
7039
+
7040
+ if (changed && !this.needFullRender) {
7041
+ this.reset();
7042
+ }
7043
+
7044
+ return changed;
7045
+ }
7046
+ /**
7047
+ * Checks if overlay should be fully rendered
7048
+ *
7049
+ * @returns {Boolean}
7050
+ */
7051
+
7052
+ }, {
7053
+ key: "shouldBeRendered",
7054
+ value: function shouldBeRendered() {
7055
+ return true;
7056
+ }
7057
+ /**
7058
+ * Update the trimming container.
7059
+ */
7060
+
7061
+ }, {
7062
+ key: "updateTrimmingContainer",
7063
+ value: function updateTrimmingContainer() {
7064
+ this.trimmingContainer = (0, _element.getTrimmingContainer)(this.hider.parentNode.parentNode);
7065
+ }
7066
+ /**
7067
+ * Update the main scrollable element.
7068
+ */
7069
+
7070
+ }, {
7071
+ key: "updateMainScrollableElement",
7072
+ value: function updateMainScrollableElement() {
7073
+ this.mainTableScrollableElement = (0, _element.getScrollableElement)(this.wot.wtTable.TABLE);
7074
+ }
7075
+ /**
7076
+ * Make a clone of table for overlay
7077
+ *
7078
+ * @param {String} direction Can be `Overlay.CLONE_TOP`, `Overlay.CLONE_LEFT`,
7079
+ * `Overlay.CLONE_TOP_LEFT_CORNER`, `Overlay.CLONE_DEBUG`
7080
+ * @returns {Walkontable}
7081
+ */
7082
+
7083
+ }, {
7084
+ key: "makeClone",
7085
+ value: function makeClone(direction) {
7086
+ if (Overlay.CLONE_TYPES.indexOf(direction) === -1) {
7087
+ throw new Error("Clone type \"".concat(direction, "\" is not supported."));
7088
+ }
7089
+
7090
+ var clone = document.createElement('DIV');
7091
+ var clonedTable = document.createElement('TABLE');
7092
+ clone.className = "ht_clone_".concat(direction, " handsontable");
7093
+ clone.style.position = 'absolute';
7094
+ clone.style.top = 0;
7095
+ clone.style.left = 0;
7096
+ clone.style.overflow = 'hidden';
7097
+ clonedTable.className = this.wot.wtTable.TABLE.className;
7098
+ clone.appendChild(clonedTable);
7099
+ this.type = direction;
7100
+ this.wot.wtTable.wtRootElement.parentNode.appendChild(clone);
7101
+ var preventOverflow = this.wot.getSetting('preventOverflow');
7102
+
7103
+ if (preventOverflow === true || preventOverflow === 'horizontal' && this.type === Overlay.CLONE_TOP || preventOverflow === 'vertical' && this.type === Overlay.CLONE_LEFT) {
7104
+ this.mainTableScrollableElement = window;
7105
+ } else {
7106
+ this.mainTableScrollableElement = (0, _element.getScrollableElement)(this.wot.wtTable.TABLE);
7107
+ }
7108
+
7109
+ return new _core.default({
7110
+ cloneSource: this.wot,
7111
+ cloneOverlay: this,
7112
+ table: clonedTable
7113
+ });
7114
+ }
7115
+ /**
7116
+ * Refresh/Redraw overlay
7117
+ *
7118
+ * @param {Boolean} [fastDraw=false]
7119
+ */
7120
+
7121
+ }, {
7122
+ key: "refresh",
7123
+ value: function refresh() {
7124
+ var fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
7125
+ // When hot settings are changed we allow to refresh overlay once before blocking
7126
+ var nextCycleRenderFlag = this.shouldBeRendered();
7127
+
7128
+ if (this.clone && (this.needFullRender || nextCycleRenderFlag)) {
7129
+ this.clone.draw(fastDraw);
7130
+ }
7131
+
7132
+ this.needFullRender = nextCycleRenderFlag;
7133
+ }
7134
+ /**
7135
+ * Reset overlay styles to initial values.
7136
+ */
7137
+
7138
+ }, {
7139
+ key: "reset",
7140
+ value: function reset() {
7141
+ if (!this.clone) {
7142
+ return;
7143
+ }
7144
+
7145
+ var holder = this.clone.wtTable.holder;
7146
+ var hider = this.clone.wtTable.hider;
7147
+ var holderStyle = holder.style;
7148
+ var hidderStyle = hider.style;
7149
+ var rootStyle = holder.parentNode.style;
7150
+ (0, _array.arrayEach)([holderStyle, hidderStyle, rootStyle], function (style) {
7151
+ style.width = '';
7152
+ style.height = '';
7153
+ });
7154
+ }
7155
+ /**
7156
+ * Destroy overlay instance
7157
+ */
7158
+
7159
+ }, {
7160
+ key: "destroy",
7161
+ value: function destroy() {
7162
+ new _eventManager.default(this.clone).destroy();
7163
+ }
7164
+ }]);
7165
+
7166
+ return Overlay;
7167
+ }();
7168
+
7169
+ var _default = Overlay;
7170
+ exports.default = _default;
7171
+
7172
+ /***/ }),
7173
+ /* 44 */
7174
+ /***/ (function(module, exports, __webpack_require__) {
7175
+
7176
+ // 7.1.1 ToPrimitive(input [, PreferredType])
7177
+ var isObject = __webpack_require__(7);
7178
+ // instead of the ES6 spec version, we didn't implement @@toPrimitive case
7179
+ // and the second argument - flag - preferred type is a string
7180
+ module.exports = function (it, S) {
7181
+ if (!isObject(it)) return it;
7182
+ var fn, val;
7183
+ if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
7184
+ if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
7185
+ if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
7186
+ throw TypeError("Can't convert object to primitive value");
7187
+ };
7188
+
7189
+
7190
+ /***/ }),
7191
+ /* 45 */
7192
+ /***/ (function(module, exports, __webpack_require__) {
7193
+
7194
+ var META = __webpack_require__(51)('meta');
7195
+ var isObject = __webpack_require__(7);
7196
+ var has = __webpack_require__(27);
7197
+ var setDesc = __webpack_require__(17).f;
7198
+ var id = 0;
7199
+ var isExtensible = Object.isExtensible || function () {
7200
+ return true;
7201
+ };
7202
+ var FREEZE = !__webpack_require__(4)(function () {
7203
+ return isExtensible(Object.preventExtensions({}));
7204
+ });
7205
+ var setMeta = function (it) {
7206
+ setDesc(it, META, { value: {
7207
+ i: 'O' + ++id, // object ID
7208
+ w: {} // weak collections IDs
7209
+ } });
7210
+ };
7211
+ var fastKey = function (it, create) {
7212
+ // return primitive with prefix
7213
+ if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
7214
+ if (!has(it, META)) {
7215
+ // can't set metadata to uncaught frozen object
7216
+ if (!isExtensible(it)) return 'F';
7217
+ // not necessary to add metadata
7218
+ if (!create) return 'E';
7219
+ // add missing metadata
7220
+ setMeta(it);
7221
+ // return object ID
7222
+ } return it[META].i;
7223
+ };
7224
+ var getWeak = function (it, create) {
7225
+ if (!has(it, META)) {
7226
+ // can't set metadata to uncaught frozen object
7227
+ if (!isExtensible(it)) return true;
7228
+ // not necessary to add metadata
7229
+ if (!create) return false;
7230
+ // add missing metadata
7231
+ setMeta(it);
7232
+ // return hash weak collections IDs
7233
+ } return it[META].w;
7234
+ };
7235
+ // add metadata on freeze-family methods calling
7236
+ var onFreeze = function (it) {
7237
+ if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
7238
+ return it;
7239
+ };
7240
+ var meta = module.exports = {
7241
+ KEY: META,
7242
+ NEED: false,
7243
+ fastKey: fastKey,
7244
+ getWeak: getWeak,
7245
+ onFreeze: onFreeze
7246
+ };
7247
+
7248
+
7249
+ /***/ }),
7250
+ /* 46 */
7251
+ /***/ (function(module, exports, __webpack_require__) {
7252
+
7253
+ "use strict";
7254
+
7255
+
7256
+ exports.__esModule = true;
7257
+ exports.default = staticRegister;
7258
+ exports.collection = void 0;
7259
+
7260
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
7261
+
7262
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
7263
+
7264
+ function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
7265
+
7266
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
7267
+
7268
+ var collection = new Map();
7269
+ exports.collection = collection;
7270
+
7271
+ function staticRegister() {
7272
+ var namespace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'common';
7273
+
7274
+ if (!collection.has(namespace)) {
7275
+ collection.set(namespace, new Map());
7276
+ }
7277
+
7278
+ var subCollection = collection.get(namespace);
7279
+ /**
7280
+ * Register an item to the collection. If the item under the same was exist earlier then this item will be replaced with new one.
7281
+ *
7282
+ * @param {String} name Identification of the item.
7283
+ * @param {*} item Item to save in the collection.
7284
+ */
7285
+
7286
+ function register(name, item) {
7287
+ subCollection.set(name, item);
7288
+ }
7289
+ /**
7290
+ * Retrieve the item from the collection.
7291
+ *
7292
+ * @param {String} name Identification of the item.
7293
+ * @returns {*} Returns item which was saved in the collection.
7294
+ */
7295
+
7296
+
7297
+ function getItem(name) {
7298
+ return subCollection.get(name);
7299
+ }
7300
+ /**
7301
+ * Check if item under specyfied name is exists.
7302
+ *
7303
+ * @param {String} name Identification of the item.
7304
+ * @returns {Boolean} Returns `true` or `false` depends on if element exists in the collection.
7305
+ */
7306
+
7307
+
7308
+ function hasItem(name) {
7309
+ return subCollection.has(name);
7310
+ }
7311
+ /**
7312
+ * Retrieve list of names registered from the collection.
7313
+ *
7314
+ * @returns {Array} Returns an array of strings with all names under which objects are stored.
7315
+ */
7316
+
7317
+
7318
+ function getNames() {
7319
+ return _toConsumableArray(subCollection.keys());
7320
+ }
7321
+ /**
7322
+ * Retrieve all registered values from the collection.
7323
+ *
7324
+ * @returns {Array} Returns an array with all values stored in the collection.
7325
+ */
7326
+
7327
+
7328
+ function getValues() {
7329
+ return _toConsumableArray(subCollection.values());
7330
+ }
7331
+
7332
+ return {
7333
+ register: register,
7334
+ getItem: getItem,
7335
+ hasItem: hasItem,
7336
+ getNames: getNames,
7337
+ getValues: getValues
7338
+ };
7339
+ }
7340
+
7341
+ /***/ }),
7342
+ /* 47 */
7343
+ /***/ (function(module, exports, __webpack_require__) {
7344
+
7345
+ "use strict";
7346
+
7347
+
7348
+ exports.__esModule = true;
7349
+ exports.requestAnimationFrame = requestAnimationFrame;
7350
+ exports.cancelAnimationFrame = cancelAnimationFrame;
7351
+ exports.isTouchSupported = isTouchSupported;
7352
+ exports.isWebComponentSupportedNatively = isWebComponentSupportedNatively;
7353
+ exports.hasCaptionProblem = hasCaptionProblem;
7354
+ exports.getComparisonFunction = getComparisonFunction;
7355
+
7356
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
7357
+
7358
+ // https://gist.github.com/paulirish/1579671
7359
+ var lastTime = 0;
7360
+ var vendors = ['ms', 'moz', 'webkit', 'o'];
7361
+ var _requestAnimationFrame = window.requestAnimationFrame;
7362
+ var _cancelAnimationFrame = window.cancelAnimationFrame;
7363
+
7364
+ for (var x = 0; x < vendors.length && !_requestAnimationFrame; ++x) {
7365
+ _requestAnimationFrame = window["".concat(vendors[x], "RequestAnimationFrame")];
7366
+ _cancelAnimationFrame = window["".concat(vendors[x], "CancelAnimationFrame")] || window["".concat(vendors[x], "CancelRequestAnimationFrame")];
7367
+ }
7368
+
7369
+ if (!_requestAnimationFrame) {
7370
+ _requestAnimationFrame = function _requestAnimationFrame(callback) {
7371
+ var currTime = new Date().getTime();
7372
+ var timeToCall = Math.max(0, 16 - (currTime - lastTime));
7373
+ var id = window.setTimeout(function () {
7374
+ callback(currTime + timeToCall);
7375
+ }, timeToCall);
7376
+ lastTime = currTime + timeToCall;
7377
+ return id;
7378
+ };
7379
+ }
7380
+
7381
+ if (!_cancelAnimationFrame) {
7382
+ _cancelAnimationFrame = function _cancelAnimationFrame(id) {
7383
+ clearTimeout(id);
7384
+ };
7385
+ }
7386
+ /**
7387
+ * Polyfill for requestAnimationFrame
7388
+ *
7389
+ * @param {Function} callback
7390
+ * @returns {Number}
7391
+ */
7392
+
7393
+
7394
+ function requestAnimationFrame(callback) {
7395
+ return _requestAnimationFrame.call(window, callback);
7396
+ }
7397
+ /**
7398
+ * Polyfill for cancelAnimationFrame
7399
+ *
7400
+ * @param {Number} id
7401
+ */
7402
+
7403
+
7404
+ function cancelAnimationFrame(id) {
7405
+ _cancelAnimationFrame.call(window, id);
7406
+ }
7407
+
7408
+ function isTouchSupported() {
7409
+ return 'ontouchstart' in window;
7410
+ }
7411
+ /**
7412
+ * Checks if browser is support web components natively
7413
+ *
7414
+ * @returns {Boolean}
7415
+ */
7416
+
7417
+
7418
+ function isWebComponentSupportedNatively() {
7419
+ var test = document.createElement('div');
7420
+ return !!(test.createShadowRoot && test.createShadowRoot.toString().match(/\[native code\]/));
7421
+ }
7422
+
7423
+ var _hasCaptionProblem;
7424
+
7425
+ function detectCaptionProblem() {
7426
+ var TABLE = document.createElement('TABLE');
7427
+ TABLE.style.borderSpacing = '0';
7428
+ TABLE.style.borderWidth = '0';
7429
+ TABLE.style.padding = '0';
7430
+ var TBODY = document.createElement('TBODY');
7431
+ TABLE.appendChild(TBODY);
7432
+ TBODY.appendChild(document.createElement('TR'));
7433
+ TBODY.firstChild.appendChild(document.createElement('TD'));
7434
+ TBODY.firstChild.firstChild.innerHTML = '<tr><td>t<br>t</td></tr>';
7435
+ var CAPTION = document.createElement('CAPTION');
7436
+ CAPTION.innerHTML = 'c<br>c<br>c<br>c';
7437
+ CAPTION.style.padding = '0';
7438
+ CAPTION.style.margin = '0';
7439
+ TABLE.insertBefore(CAPTION, TBODY);
7440
+ document.body.appendChild(TABLE);
7441
+ _hasCaptionProblem = TABLE.offsetHeight < 2 * TABLE.lastChild.offsetHeight; // boolean
7442
+
7443
+ document.body.removeChild(TABLE);
7444
+ }
7445
+
7446
+ function hasCaptionProblem() {
7447
+ if (_hasCaptionProblem === void 0) {
7448
+ detectCaptionProblem();
7449
+ }
7450
+
7451
+ return _hasCaptionProblem;
7452
+ }
7453
+
7454
+ var comparisonFunction;
7455
+ /**
7456
+ * Get string comparison function for sorting purposes. It supports multilingual string comparison base on Internationalization API.
7457
+ *
7458
+ * @param {String} [language]
7459
+ * @param {Object} [options]
7460
+ * @returns {*}
7461
+ */
7462
+
7463
+ function getComparisonFunction(language) {
7464
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7465
+
7466
+ if (comparisonFunction) {
7467
+ return comparisonFunction;
7468
+ }
7469
+
7470
+ if ((typeof Intl === "undefined" ? "undefined" : _typeof(Intl)) === 'object') {
7471
+ comparisonFunction = new Intl.Collator(language, options).compare;
7472
+ } else if (typeof String.prototype.localeCompare === 'function') {
7473
+ comparisonFunction = function comparisonFunction(a, b) {
7474
+ return "".concat(a).localeCompare(b);
7475
+ };
7476
+ } else {
7477
+ comparisonFunction = function comparisonFunction(a, b) {
7478
+ if (a === b) {
7479
+ return 0;
7480
+ }
7481
+
7482
+ return a > b ? -1 : 1;
7483
+ };
7484
+ }
7485
+
7486
+ return comparisonFunction;
7487
+ }
7488
+
7489
+ /***/ }),
7490
+ /* 48 */
7491
+ /***/ (function(module, exports, __webpack_require__) {
7492
+
7493
+ "use strict";
7494
+
7495
+
7496
+ exports.__esModule = true;
7497
+ exports.toUpperCaseFirst = toUpperCaseFirst;
7498
+ exports.equalsIgnoreCase = equalsIgnoreCase;
7499
+ exports.randomString = randomString;
7500
+ exports.isPercentValue = isPercentValue;
7501
+ exports.substitute = substitute;
7502
+ exports.stripTags = stripTags;
7503
+
7504
+ var _mixed = __webpack_require__(14);
7505
+
7506
+ /**
7507
+ * Convert string to upper case first letter.
7508
+ *
7509
+ * @param {String} string String to convert.
7510
+ * @returns {String}
7511
+ */
7512
+ function toUpperCaseFirst(string) {
7513
+ return string[0].toUpperCase() + string.substr(1);
7514
+ }
7515
+ /**
7516
+ * Compare strings case insensitively.
7517
+ *
7518
+ * @param {...String} strings Strings to compare.
7519
+ * @returns {Boolean}
7520
+ */
7521
+
7522
+
7523
+ function equalsIgnoreCase() {
7524
+ var unique = [];
7525
+
7526
+ for (var _len = arguments.length, strings = new Array(_len), _key = 0; _key < _len; _key++) {
7527
+ strings[_key] = arguments[_key];
7528
+ }
7529
+
7530
+ var length = strings.length;
7531
+
7532
+ while (length) {
7533
+ length -= 1;
7534
+ var string = (0, _mixed.stringify)(strings[length]).toLowerCase();
7535
+
7536
+ if (unique.indexOf(string) === -1) {
7537
+ unique.push(string);
7538
+ }
7539
+ }
7540
+
7541
+ return unique.length === 1;
7542
+ }
7543
+ /**
7544
+ * Generates a random hex string. Used as namespace for Handsontable instance events.
7545
+ *
7546
+ * @return {String} Returns 16-long character random string (eq. `'92b1bfc74ec4'`).
7547
+ */
7548
+
7549
+
7550
+ function randomString() {
7551
+ function s4() {
7552
+ return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
7553
+ }
7554
+
7555
+ return s4() + s4() + s4() + s4();
7556
+ }
7557
+ /**
7558
+ * Checks if value is valid percent.
7559
+ *
7560
+ * @param {String} value
7561
+ * @returns {Boolean}
7562
+ */
7563
+
7564
+
7565
+ function isPercentValue(value) {
7566
+ return /^([0-9][0-9]?%$)|(^100%$)/.test(value);
7567
+ }
7568
+ /**
7569
+ * Substitute strings placed beetwen square brackets into value defined in `variables` object. String names defined in
7570
+ * square brackets must be the same as property name of `variables` object.
7571
+ *
7572
+ * @param {String} template Template string.
7573
+ * @param {Object} variables Object which contains all available values which can be injected into template.
7574
+ * @returns {String}
7575
+ */
7576
+
7577
+
7578
+ function substitute(template) {
7579
+ var variables = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7580
+ return "".concat(template).replace(/(?:\\)?\[([^[\]]+)]/g, function (match, name) {
7581
+ if (match.charAt(0) === '\\') {
7582
+ return match.substr(1, match.length - 1);
7583
+ }
7584
+
7585
+ return variables[name] === void 0 ? '' : variables[name];
7586
+ });
7587
+ }
7588
+
7589
+ var STRIP_TAGS_REGEX = /<\/?\w+\/?>|<\w+[\s|/][^>]*>/gi;
7590
+ /**
7591
+ * Strip any HTML tag from the string.
7592
+ *
7593
+ * @param {String} string String to cut HTML from.
7594
+ * @return {String}
7595
+ */
7596
+
7597
+ function stripTags(string) {
7598
+ return "".concat(string).replace(STRIP_TAGS_REGEX, '');
7599
+ }
7600
+
7601
+ /***/ }),
7602
+ /* 49 */
7603
+ /***/ (function(module, exports, __webpack_require__) {
7604
+
7605
+ "use strict";
7606
+
7607
+
7608
+ exports.__esModule = true;
7609
+ exports.getValidator = _getItem;
7610
+ exports.getRegisteredValidators = exports.getRegisteredValidatorNames = exports.hasValidator = exports.registerValidator = void 0;
7611
+
7612
+ var _staticRegister2 = _interopRequireDefault(__webpack_require__(46));
7613
+
7614
+ var _autocompleteValidator = _interopRequireDefault(__webpack_require__(631));
7615
+
7616
+ var _dateValidator = _interopRequireDefault(__webpack_require__(632));
7617
+
7618
+ var _numericValidator = _interopRequireDefault(__webpack_require__(633));
7619
+
7620
+ var _timeValidator = _interopRequireDefault(__webpack_require__(634));
7621
+
7622
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7623
+
7624
+ var _staticRegister = (0, _staticRegister2.default)('validators'),
7625
+ register = _staticRegister.register,
7626
+ getItem = _staticRegister.getItem,
7627
+ hasItem = _staticRegister.hasItem,
7628
+ getNames = _staticRegister.getNames,
7629
+ getValues = _staticRegister.getValues;
7630
+
7631
+ exports.getRegisteredValidators = getValues;
7632
+ exports.getRegisteredValidatorNames = getNames;
7633
+ exports.hasValidator = hasItem;
7634
+ exports.registerValidator = register;
7635
+ register('autocomplete', _autocompleteValidator.default);
7636
+ register('date', _dateValidator.default);
7637
+ register('numeric', _numericValidator.default);
7638
+ register('time', _timeValidator.default);
7639
+ /**
7640
+ * Retrieve validator function.
7641
+ *
7642
+ * @param {String} name Validator identification.
7643
+ * @returns {Function} Returns validator function.
7644
+ */
7645
+
7646
+ function _getItem(name) {
7647
+ if (typeof name === 'function') {
7648
+ return name;
7649
+ }
7650
+
7651
+ if (!hasItem(name)) {
7652
+ throw Error("No registered validator found under \"".concat(name, "\" name"));
7653
+ }
7654
+
7655
+ return getItem(name);
7656
+ }
7657
+
7658
+ /***/ }),
7659
+ /* 50 */
7660
+ /***/ (function(module, exports) {
7661
+
7662
+ module.exports = function (bitmap, value) {
7663
+ return {
7664
+ enumerable: !(bitmap & 1),
7665
+ configurable: !(bitmap & 2),
7666
+ writable: !(bitmap & 4),
7667
+ value: value
7668
+ };
7669
+ };
7670
+
7671
+
7672
+ /***/ }),
7673
+ /* 51 */
7674
+ /***/ (function(module, exports) {
7675
+
7676
+ var id = 0;
7677
+ var px = Math.random();
7678
+ module.exports = function (key) {
7679
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
7680
+ };
7681
+
7682
+
7683
+ /***/ }),
7684
+ /* 52 */
7685
+ /***/ (function(module, exports) {
7686
+
7687
+ module.exports = false;
7688
+
7689
+
7690
+ /***/ }),
7691
+ /* 53 */
7692
+ /***/ (function(module, exports, __webpack_require__) {
7693
+
7694
+ // 19.1.2.14 / 15.2.3.14 Object.keys(O)
7695
+ var $keys = __webpack_require__(132);
7696
+ var enumBugKeys = __webpack_require__(96);
7697
+
7698
+ module.exports = Object.keys || function keys(O) {
7699
+ return $keys(O, enumBugKeys);
7700
+ };
7701
+
7702
+
7703
+ /***/ }),
7704
+ /* 54 */
7705
+ /***/ (function(module, exports, __webpack_require__) {
7706
+
7707
+ var toInteger = __webpack_require__(33);
7708
+ var max = Math.max;
7709
+ var min = Math.min;
7710
+ module.exports = function (index, length) {
7711
+ index = toInteger(index);
7712
+ return index < 0 ? max(index + length, 0) : min(index, length);
7713
+ };
7714
+
7715
+
7716
+ /***/ }),
7717
+ /* 55 */
7718
+ /***/ (function(module, exports, __webpack_require__) {
7719
+
7720
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
7721
+ var anObject = __webpack_require__(5);
7722
+ var dPs = __webpack_require__(133);
7723
+ var enumBugKeys = __webpack_require__(96);
7724
+ var IE_PROTO = __webpack_require__(95)('IE_PROTO');
7725
+ var Empty = function () { /* empty */ };
7726
+ var PROTOTYPE = 'prototype';
7727
+
7728
+ // Create object with fake `null` prototype: use iframe Object with cleared prototype
7729
+ var createDict = function () {
7730
+ // Thrash, waste and sodomy: IE GC bug
7731
+ var iframe = __webpack_require__(92)('iframe');
7732
+ var i = enumBugKeys.length;
7733
+ var lt = '<';
7734
+ var gt = '>';
7735
+ var iframeDocument;
7736
+ iframe.style.display = 'none';
7737
+ __webpack_require__(98).appendChild(iframe);
7738
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
7739
+ // createDict = iframe.contentWindow.Object;
7740
+ // html.removeChild(iframe);
7741
+ iframeDocument = iframe.contentWindow.document;
7742
+ iframeDocument.open();
7743
+ iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
7744
+ iframeDocument.close();
7745
+ createDict = iframeDocument.F;
7746
+ while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
7747
+ return createDict();
7748
+ };
7749
+
7750
+ module.exports = Object.create || function create(O, Properties) {
7751
+ var result;
7752
+ if (O !== null) {
7753
+ Empty[PROTOTYPE] = anObject(O);
7754
+ result = new Empty();
7755
+ Empty[PROTOTYPE] = null;
7756
+ // add "__proto__" for Object.getPrototypeOf polyfill
7757
+ result[IE_PROTO] = O;
7758
+ } else result = createDict();
7759
+ return Properties === undefined ? result : dPs(result, Properties);
7760
+ };
7761
+
7762
+
7763
+ /***/ }),
7764
+ /* 56 */
7765
+ /***/ (function(module, exports, __webpack_require__) {
7766
+
7767
+ // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
7768
+ var $keys = __webpack_require__(132);
7769
+ var hiddenKeys = __webpack_require__(96).concat('length', 'prototype');
7770
+
7771
+ exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
7772
+ return $keys(O, hiddenKeys);
7773
+ };
7774
+
7775
+
7776
+ /***/ }),
7777
+ /* 57 */
7778
+ /***/ (function(module, exports, __webpack_require__) {
7779
+
7780
+ // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
7781
+ var has = __webpack_require__(27);
7782
+ var toObject = __webpack_require__(24);
7783
+ var IE_PROTO = __webpack_require__(95)('IE_PROTO');
7784
+ var ObjectProto = Object.prototype;
7785
+
7786
+ module.exports = Object.getPrototypeOf || function (O) {
7787
+ O = toObject(O);
7788
+ if (has(O, IE_PROTO)) return O[IE_PROTO];
7789
+ if (typeof O.constructor == 'function' && O instanceof O.constructor) {
7790
+ return O.constructor.prototype;
7791
+ } return O instanceof Object ? ObjectProto : null;
7792
+ };
7793
+
7794
+
7795
+ /***/ }),
7796
+ /* 58 */
7797
+ /***/ (function(module, exports, __webpack_require__) {
7798
+
7799
+ "use strict";
7800
+
7801
+
7802
+ exports.__esModule = true;
7803
+ exports.toSingleLine = toSingleLine;
7804
+
7805
+ var _array = __webpack_require__(3);
7806
+
7807
+ /* eslint-disable import/prefer-default-export */
7808
+
7809
+ /**
7810
+ * Tags a multiline string and return new one without line break characters and following spaces.
7811
+ *
7812
+ * @param {Array} strings Parts of the entire string without expressions.
7813
+ * @param {...String} expressions Expressions converted to strings, which are added to the entire string.
7814
+ * @returns {String}
7815
+ */
7816
+ function toSingleLine(strings) {
7817
+ for (var _len = arguments.length, expressions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
7818
+ expressions[_key - 1] = arguments[_key];
7819
+ }
7820
+
7821
+ var result = (0, _array.arrayReduce)(strings, function (previousValue, currentValue, index) {
7822
+ var valueWithoutWhiteSpaces = currentValue.replace(/(?:\r?\n\s+)/g, '');
7823
+ var expressionForIndex = expressions[index] ? expressions[index] : '';
7824
+ return previousValue + valueWithoutWhiteSpaces + expressionForIndex;
7825
+ }, '');
7826
+ return result.trim();
7827
+ }
7828
+
7829
+ /***/ }),
7830
+ /* 59 */
7831
+ /***/ (function(module, exports, __webpack_require__) {
7832
+
7833
+ "use strict";
7834
+
7835
+
7836
+ exports.__esModule = true;
7837
+ exports.isFunction = isFunction;
7838
+ exports.throttle = throttle;
7839
+ exports.throttleAfterHits = throttleAfterHits;
7840
+ exports.debounce = debounce;
7841
+ exports.pipe = pipe;
7842
+ exports.partial = partial;
7843
+ exports.curry = curry;
7844
+ exports.curryRight = curryRight;
7845
+
7846
+ var _array = __webpack_require__(3);
7847
+
7848
+ /**
7849
+ * Checks if given variable is function.
7850
+ *
7851
+ * @param {*} func Variable to check.
7852
+ * @returns {Boolean}
7853
+ */
7854
+ function isFunction(func) {
7855
+ return typeof func === 'function';
7856
+ }
7857
+ /**
7858
+ * Creates throttle function that enforces a maximum number of times a function (`func`) can be called over time (`wait`).
7859
+ *
7860
+ * @param {Function} func Function to invoke.
7861
+ * @param {Number} wait Delay in miliseconds.
7862
+ * @returns {Function}
7863
+ */
7864
+
7865
+
7866
+ function throttle(func) {
7867
+ var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200;
7868
+ var lastCalled = 0;
7869
+ var result = {
7870
+ lastCallThrottled: true
7871
+ };
7872
+ var lastTimer = null;
7873
+
7874
+ function _throttle() {
7875
+ var _this = this;
7876
+
7877
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
7878
+ args[_key] = arguments[_key];
7879
+ }
7880
+
7881
+ var stamp = Date.now();
7882
+ var needCall = false;
7883
+ result.lastCallThrottled = true;
7884
+
7885
+ if (!lastCalled) {
7886
+ lastCalled = stamp;
7887
+ needCall = true;
7888
+ }
7889
+
7890
+ var remaining = wait - (stamp - lastCalled);
7891
+
7892
+ if (needCall) {
7893
+ result.lastCallThrottled = false;
7894
+ func.apply(this, args);
7895
+ } else {
7896
+ if (lastTimer) {
7897
+ clearTimeout(lastTimer);
7898
+ }
7899
+
7900
+ lastTimer = setTimeout(function () {
7901
+ result.lastCallThrottled = false;
7902
+ func.apply(_this, args);
7903
+ lastCalled = 0;
7904
+ lastTimer = void 0;
7905
+ }, remaining);
7906
+ }
7907
+
7908
+ return result;
7909
+ }
7910
+
7911
+ return _throttle;
7912
+ }
7913
+ /**
7914
+ * Creates throttle function that enforces a maximum number of times a function (`func`) can be called over
7915
+ * time (`wait`) after specified hits.
7916
+ *
7917
+ * @param {Function} func Function to invoke.
7918
+ * @param {Number} wait Delay in miliseconds.
7919
+ * @param {Number} hits Number of hits after throttling will be applied.
7920
+ * @returns {Function}
7921
+ */
7922
+
7923
+
7924
+ function throttleAfterHits(func) {
7925
+ var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200;
7926
+ var hits = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
7927
+ var funcThrottle = throttle(func, wait);
7928
+ var remainHits = hits;
7929
+
7930
+ function _clearHits() {
7931
+ remainHits = hits;
7932
+ }
7933
+
7934
+ function _throttleAfterHits() {
7935
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
7936
+ args[_key2] = arguments[_key2];
7937
+ }
7938
+
7939
+ if (remainHits) {
7940
+ remainHits -= 1;
7941
+ return func.apply(this, args);
7942
+ }
7943
+
7944
+ return funcThrottle.apply(this, args);
7945
+ }
7946
+
7947
+ _throttleAfterHits.clearHits = _clearHits;
7948
+ return _throttleAfterHits;
7949
+ }
7950
+ /**
7951
+ * Creates debounce function that enforces a function (`func`) not be called again until a certain amount of time (`wait`)
7952
+ * has passed without it being called.
7953
+ *
7954
+ * @param {Function} func Function to invoke.
7955
+ * @param {Number} wait Delay in milliseconds.
7956
+ * @returns {Function}
7957
+ */
7958
+
7959
+
7960
+ function debounce(func) {
7961
+ var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200;
7962
+ var lastTimer = null;
7963
+ var result;
7964
+
7965
+ function _debounce() {
7966
+ var _this2 = this;
7967
+
7968
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
7969
+ args[_key3] = arguments[_key3];
7970
+ }
7971
+
7972
+ if (lastTimer) {
7973
+ clearTimeout(lastTimer);
7974
+ }
7975
+
7976
+ lastTimer = setTimeout(function () {
7977
+ result = func.apply(_this2, args);
7978
+ }, wait);
7979
+ return result;
7980
+ }
7981
+
7982
+ return _debounce;
7983
+ }
7984
+ /**
7985
+ * Creates the function that returns the result of calling the given functions. Result of the first function is passed to
7986
+ * the second as an argument and so on. Only first function in the chain can handle multiple arguments.
7987
+ *
7988
+ * @param {Function} functions Functions to compose.
7989
+ * @returns {Function}
7990
+ */
7991
+
7992
+
7993
+ function pipe() {
7994
+ for (var _len4 = arguments.length, functions = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
7995
+ functions[_key4] = arguments[_key4];
7996
+ }
7997
+
7998
+ var firstFunc = functions[0],
7999
+ restFunc = functions.slice(1);
8000
+ return function _pipe() {
8001
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
8002
+ args[_key5] = arguments[_key5];
8003
+ }
8004
+
8005
+ return (0, _array.arrayReduce)(restFunc, function (acc, fn) {
8006
+ return fn(acc);
8007
+ }, firstFunc.apply(this, args));
8008
+ };
8009
+ }
8010
+ /**
8011
+ * Creates the function that returns the function with cached arguments.
8012
+ *
8013
+ * @param {Function} func Function to partialization.
8014
+ * @param {Array} params Function arguments to cache.
8015
+ * @returns {Function}
8016
+ */
8017
+
8018
+
8019
+ function partial(func) {
8020
+ for (var _len6 = arguments.length, params = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {
8021
+ params[_key6 - 1] = arguments[_key6];
8022
+ }
8023
+
8024
+ return function _partial() {
8025
+ for (var _len7 = arguments.length, restParams = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
8026
+ restParams[_key7] = arguments[_key7];
8027
+ }
8028
+
8029
+ return func.apply(this, params.concat(restParams));
8030
+ };
8031
+ }
8032
+ /**
8033
+ * Creates the functions that returns the function with cached arguments. If count if passed arguments will be matched
8034
+ * to the arguments defined in `func` then function will be invoked.
8035
+ * Arguments are added to the stack in direction from the left to the right.
8036
+ *
8037
+ * @example
8038
+ * ```
8039
+ * var replace = curry(function(find, replace, string) {
8040
+ * return string.replace(find, replace);
8041
+ * });
8042
+ *
8043
+ * // returns function with bounded first argument
8044
+ * var replace = replace('foo')
8045
+ *
8046
+ * // returns replaced string - all arguments was passed so function was invoked
8047
+ * replace('bar', 'Some test with foo...');
8048
+ *
8049
+ * ```
8050
+ *
8051
+ * @param {Function} func Function to currying.
8052
+ * @returns {Function}
8053
+ */
8054
+
8055
+
8056
+ function curry(func) {
8057
+ var argsLength = func.length;
8058
+
8059
+ function given(argsSoFar) {
8060
+ return function _curry() {
8061
+ for (var _len8 = arguments.length, params = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
8062
+ params[_key8] = arguments[_key8];
8063
+ }
8064
+
8065
+ var passedArgsSoFar = argsSoFar.concat(params);
8066
+ var result;
8067
+
8068
+ if (passedArgsSoFar.length >= argsLength) {
8069
+ result = func.apply(this, passedArgsSoFar);
8070
+ } else {
8071
+ result = given(passedArgsSoFar);
8072
+ }
8073
+
8074
+ return result;
8075
+ };
8076
+ }
8077
+
8078
+ return given([]);
8079
+ }
8080
+ /**
8081
+ * Creates the functions that returns the function with cached arguments. If count if passed arguments will be matched
8082
+ * to the arguments defined in `func` then function will be invoked.
8083
+ * Arguments are added to the stack in direction from the right to the left.
8084
+ *
8085
+ * @example
8086
+ * ```
8087
+ * var replace = curry(function(find, replace, string) {
8088
+ * return string.replace(find, replace);
8089
+ * });
8090
+ *
8091
+ * // returns function with bounded first argument
8092
+ * var replace = replace('Some test with foo...')
8093
+ *
8094
+ * // returns replaced string - all arguments was passed so function was invoked
8095
+ * replace('bar', 'foo');
8096
+ *
8097
+ * ```
8098
+ *
8099
+ * @param {Function} func Function to currying.
8100
+ * @returns {Function}
8101
+ */
8102
+
8103
+
8104
+ function curryRight(func) {
8105
+ var argsLength = func.length;
8106
+
8107
+ function given(argsSoFar) {
8108
+ return function _curry() {
8109
+ for (var _len9 = arguments.length, params = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
8110
+ params[_key9] = arguments[_key9];
8111
+ }
8112
+
8113
+ var passedArgsSoFar = argsSoFar.concat(params.reverse());
8114
+ var result;
8115
+
8116
+ if (passedArgsSoFar.length >= argsLength) {
8117
+ result = func.apply(this, passedArgsSoFar);
8118
+ } else {
8119
+ result = given(passedArgsSoFar);
8120
+ }
8121
+
8122
+ return result;
8123
+ };
8124
+ }
8125
+
8126
+ return given([]);
8127
+ }
8128
+
8129
+ /***/ }),
8130
+ /* 60 */
8131
+ /***/ (function(module, exports, __webpack_require__) {
8132
+
8133
+ var def = __webpack_require__(17).f;
8134
+ var has = __webpack_require__(27);
8135
+ var TAG = __webpack_require__(12)('toStringTag');
8136
+
8137
+ module.exports = function (it, tag, stat) {
8138
+ if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
8139
+ };
8140
+
8141
+
8142
+ /***/ }),
8143
+ /* 61 */
8144
+ /***/ (function(module, exports) {
8145
+
8146
+ module.exports = {};
8147
+
8148
+
8149
+ /***/ }),
8150
+ /* 62 */
8151
+ /***/ (function(module, exports, __webpack_require__) {
8152
+
8153
+ // 22.1.3.31 Array.prototype[@@unscopables]
8154
+ var UNSCOPABLES = __webpack_require__(12)('unscopables');
8155
+ var ArrayProto = Array.prototype;
8156
+ if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(28)(ArrayProto, UNSCOPABLES, {});
8157
+ module.exports = function (key) {
8158
+ ArrayProto[UNSCOPABLES][key] = true;
8159
+ };
8160
+
8161
+
8162
+ /***/ }),
8163
+ /* 63 */
8164
+ /***/ (function(module, exports, __webpack_require__) {
8165
+
8166
+ "use strict";
8167
+
8168
+ var global = __webpack_require__(6);
8169
+ var dP = __webpack_require__(17);
8170
+ var DESCRIPTORS = __webpack_require__(20);
8171
+ var SPECIES = __webpack_require__(12)('species');
8172
+
8173
+ module.exports = function (KEY) {
8174
+ var C = global[KEY];
8175
+ if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
8176
+ configurable: true,
8177
+ get: function () { return this; }
8178
+ });
8179
+ };
8180
+
8181
+
8182
+ /***/ }),
8183
+ /* 64 */
8184
+ /***/ (function(module, exports) {
8185
+
8186
+ module.exports = function (it, Constructor, name, forbiddenField) {
8187
+ if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
8188
+ throw TypeError(name + ': incorrect invocation!');
8189
+ } return it;
8190
+ };
8191
+
8192
+
8193
+ /***/ }),
8194
+ /* 65 */
8195
+ /***/ (function(module, exports, __webpack_require__) {
8196
+
8197
+ var redefine = __webpack_require__(23);
8198
+ module.exports = function (target, src, safe) {
8199
+ for (var key in src) redefine(target, key, src[key], safe);
8200
+ return target;
8201
+ };
8202
+
8203
+
8204
+ /***/ }),
8205
+ /* 66 */
8206
+ /***/ (function(module, exports, __webpack_require__) {
8207
+
8208
+ var isObject = __webpack_require__(7);
8209
+ module.exports = function (it, TYPE) {
8210
+ if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
8211
+ return it;
8212
+ };
8213
+
8214
+
8215
+ /***/ }),
8216
+ /* 67 */
8217
+ /***/ (function(module, exports, __webpack_require__) {
8218
+
8219
+ /* WEBPACK VAR INJECTION */(function(module) {var require;//! moment.js
8220
+ //! version : 2.20.1
8221
+ //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
8222
+ //! license : MIT
8223
+ //! momentjs.com
8224
+
8225
+ ;(function (global, factory) {
8226
+ true ? module.exports = factory() :
8227
+ typeof define === 'function' && define.amd ? define(factory) :
8228
+ global.moment = factory()
8229
+ }(this, (function () { 'use strict';
8230
+
8231
+ var hookCallback;
8232
+
8233
+ function hooks () {
8234
+ return hookCallback.apply(null, arguments);
8235
+ }
8236
+
8237
+ // This is done to register the method called with moment()
8238
+ // without creating circular dependencies.
8239
+ function setHookCallback (callback) {
8240
+ hookCallback = callback;
8241
+ }
8242
+
8243
+ function isArray(input) {
8244
+ return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
8245
+ }
8246
+
8247
+ function isObject(input) {
8248
+ // IE8 will treat undefined and null as object if it wasn't for
8249
+ // input != null
8250
+ return input != null && Object.prototype.toString.call(input) === '[object Object]';
8251
+ }
8252
+
8253
+ function isObjectEmpty(obj) {
8254
+ if (Object.getOwnPropertyNames) {
8255
+ return (Object.getOwnPropertyNames(obj).length === 0);
8256
+ } else {
8257
+ var k;
8258
+ for (k in obj) {
8259
+ if (obj.hasOwnProperty(k)) {
8260
+ return false;
8261
+ }
8262
+ }
8263
+ return true;
8264
+ }
8265
+ }
8266
+
8267
+ function isUndefined(input) {
8268
+ return input === void 0;
8269
+ }
8270
+
8271
+ function isNumber(input) {
8272
+ return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
8273
+ }
8274
+
8275
+ function isDate(input) {
8276
+ return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
8277
+ }
8278
+
8279
+ function map(arr, fn) {
8280
+ var res = [], i;
8281
+ for (i = 0; i < arr.length; ++i) {
8282
+ res.push(fn(arr[i], i));
8283
+ }
8284
+ return res;
8285
+ }
8286
+
8287
+ function hasOwnProp(a, b) {
8288
+ return Object.prototype.hasOwnProperty.call(a, b);
8289
+ }
8290
+
8291
+ function extend(a, b) {
8292
+ for (var i in b) {
8293
+ if (hasOwnProp(b, i)) {
8294
+ a[i] = b[i];
8295
+ }
8296
+ }
8297
+
8298
+ if (hasOwnProp(b, 'toString')) {
8299
+ a.toString = b.toString;
8300
+ }
8301
+
8302
+ if (hasOwnProp(b, 'valueOf')) {
8303
+ a.valueOf = b.valueOf;
8304
+ }
8305
+
8306
+ return a;
8307
+ }
8308
+
8309
+ function createUTC (input, format, locale, strict) {
8310
+ return createLocalOrUTC(input, format, locale, strict, true).utc();
8311
+ }
8312
+
8313
+ function defaultParsingFlags() {
8314
+ // We need to deep clone this object.
8315
+ return {
8316
+ empty : false,
8317
+ unusedTokens : [],
8318
+ unusedInput : [],
8319
+ overflow : -2,
8320
+ charsLeftOver : 0,
8321
+ nullInput : false,
8322
+ invalidMonth : null,
8323
+ invalidFormat : false,
8324
+ userInvalidated : false,
8325
+ iso : false,
8326
+ parsedDateParts : [],
8327
+ meridiem : null,
8328
+ rfc2822 : false,
8329
+ weekdayMismatch : false
8330
+ };
8331
+ }
8332
+
8333
+ function getParsingFlags(m) {
8334
+ if (m._pf == null) {
8335
+ m._pf = defaultParsingFlags();
8336
+ }
8337
+ return m._pf;
8338
+ }
8339
+
8340
+ var some;
8341
+ if (Array.prototype.some) {
8342
+ some = Array.prototype.some;
8343
+ } else {
8344
+ some = function (fun) {
8345
+ var t = Object(this);
8346
+ var len = t.length >>> 0;
8347
+
8348
+ for (var i = 0; i < len; i++) {
8349
+ if (i in t && fun.call(this, t[i], i, t)) {
8350
+ return true;
8351
+ }
8352
+ }
8353
+
8354
+ return false;
8355
+ };
8356
+ }
8357
+
8358
+ function isValid(m) {
8359
+ if (m._isValid == null) {
8360
+ var flags = getParsingFlags(m);
8361
+ var parsedParts = some.call(flags.parsedDateParts, function (i) {
8362
+ return i != null;
8363
+ });
8364
+ var isNowValid = !isNaN(m._d.getTime()) &&
8365
+ flags.overflow < 0 &&
8366
+ !flags.empty &&
8367
+ !flags.invalidMonth &&
8368
+ !flags.invalidWeekday &&
8369
+ !flags.weekdayMismatch &&
8370
+ !flags.nullInput &&
8371
+ !flags.invalidFormat &&
8372
+ !flags.userInvalidated &&
8373
+ (!flags.meridiem || (flags.meridiem && parsedParts));
8374
+
8375
+ if (m._strict) {
8376
+ isNowValid = isNowValid &&
8377
+ flags.charsLeftOver === 0 &&
8378
+ flags.unusedTokens.length === 0 &&
8379
+ flags.bigHour === undefined;
8380
+ }
8381
+
8382
+ if (Object.isFrozen == null || !Object.isFrozen(m)) {
8383
+ m._isValid = isNowValid;
8384
+ }
8385
+ else {
8386
+ return isNowValid;
8387
+ }
8388
+ }
8389
+ return m._isValid;
8390
+ }
8391
+
8392
+ function createInvalid (flags) {
8393
+ var m = createUTC(NaN);
8394
+ if (flags != null) {
8395
+ extend(getParsingFlags(m), flags);
8396
+ }
8397
+ else {
8398
+ getParsingFlags(m).userInvalidated = true;
8399
+ }
8400
+
8401
+ return m;
8402
+ }
8403
+
8404
+ // Plugins that add properties should also add the key here (null value),
8405
+ // so we can properly clone ourselves.
8406
+ var momentProperties = hooks.momentProperties = [];
8407
+
8408
+ function copyConfig(to, from) {
8409
+ var i, prop, val;
8410
+
8411
+ if (!isUndefined(from._isAMomentObject)) {
8412
+ to._isAMomentObject = from._isAMomentObject;
8413
+ }
8414
+ if (!isUndefined(from._i)) {
8415
+ to._i = from._i;
8416
+ }
8417
+ if (!isUndefined(from._f)) {
8418
+ to._f = from._f;
8419
+ }
8420
+ if (!isUndefined(from._l)) {
8421
+ to._l = from._l;
8422
+ }
8423
+ if (!isUndefined(from._strict)) {
8424
+ to._strict = from._strict;
8425
+ }
8426
+ if (!isUndefined(from._tzm)) {
8427
+ to._tzm = from._tzm;
8428
+ }
8429
+ if (!isUndefined(from._isUTC)) {
8430
+ to._isUTC = from._isUTC;
8431
+ }
8432
+ if (!isUndefined(from._offset)) {
8433
+ to._offset = from._offset;
8434
+ }
8435
+ if (!isUndefined(from._pf)) {
8436
+ to._pf = getParsingFlags(from);
8437
+ }
8438
+ if (!isUndefined(from._locale)) {
8439
+ to._locale = from._locale;
8440
+ }
8441
+
8442
+ if (momentProperties.length > 0) {
8443
+ for (i = 0; i < momentProperties.length; i++) {
8444
+ prop = momentProperties[i];
8445
+ val = from[prop];
8446
+ if (!isUndefined(val)) {
8447
+ to[prop] = val;
8448
+ }
8449
+ }
8450
+ }
8451
+
8452
+ return to;
8453
+ }
8454
+
8455
+ var updateInProgress = false;
8456
+
8457
+ // Moment prototype object
8458
+ function Moment(config) {
8459
+ copyConfig(this, config);
8460
+ this._d = new Date(config._d != null ? config._d.getTime() : NaN);
8461
+ if (!this.isValid()) {
8462
+ this._d = new Date(NaN);
8463
+ }
8464
+ // Prevent infinite loop in case updateOffset creates new moment
8465
+ // objects.
8466
+ if (updateInProgress === false) {
8467
+ updateInProgress = true;
8468
+ hooks.updateOffset(this);
8469
+ updateInProgress = false;
8470
+ }
8471
+ }
8472
+
8473
+ function isMoment (obj) {
8474
+ return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
8475
+ }
8476
+
8477
+ function absFloor (number) {
8478
+ if (number < 0) {
8479
+ // -0 -> 0
8480
+ return Math.ceil(number) || 0;
8481
+ } else {
8482
+ return Math.floor(number);
8483
+ }
8484
+ }
8485
+
8486
+ function toInt(argumentForCoercion) {
8487
+ var coercedNumber = +argumentForCoercion,
8488
+ value = 0;
8489
+
8490
+ if (coercedNumber !== 0 && isFinite(coercedNumber)) {
8491
+ value = absFloor(coercedNumber);
8492
+ }
8493
+
8494
+ return value;
8495
+ }
8496
+
8497
+ // compare two arrays, return the number of differences
8498
+ function compareArrays(array1, array2, dontConvert) {
8499
+ var len = Math.min(array1.length, array2.length),
8500
+ lengthDiff = Math.abs(array1.length - array2.length),
8501
+ diffs = 0,
8502
+ i;
8503
+ for (i = 0; i < len; i++) {
8504
+ if ((dontConvert && array1[i] !== array2[i]) ||
8505
+ (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
8506
+ diffs++;
8507
+ }
8508
+ }
8509
+ return diffs + lengthDiff;
8510
+ }
8511
+
8512
+ function warn(msg) {
8513
+ if (hooks.suppressDeprecationWarnings === false &&
8514
+ (typeof console !== 'undefined') && console.warn) {
8515
+ console.warn('Deprecation warning: ' + msg);
8516
+ }
8517
+ }
8518
+
8519
+ function deprecate(msg, fn) {
8520
+ var firstTime = true;
8521
+
8522
+ return extend(function () {
8523
+ if (hooks.deprecationHandler != null) {
8524
+ hooks.deprecationHandler(null, msg);
8525
+ }
8526
+ if (firstTime) {
8527
+ var args = [];
8528
+ var arg;
8529
+ for (var i = 0; i < arguments.length; i++) {
8530
+ arg = '';
8531
+ if (typeof arguments[i] === 'object') {
8532
+ arg += '\n[' + i + '] ';
8533
+ for (var key in arguments[0]) {
8534
+ arg += key + ': ' + arguments[0][key] + ', ';
8535
+ }
8536
+ arg = arg.slice(0, -2); // Remove trailing comma and space
8537
+ } else {
8538
+ arg = arguments[i];
8539
+ }
8540
+ args.push(arg);
8541
+ }
8542
+ warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack);
8543
+ firstTime = false;
8544
+ }
8545
+ return fn.apply(this, arguments);
8546
+ }, fn);
8547
+ }
8548
+
8549
+ var deprecations = {};
8550
+
8551
+ function deprecateSimple(name, msg) {
8552
+ if (hooks.deprecationHandler != null) {
8553
+ hooks.deprecationHandler(name, msg);
8554
+ }
8555
+ if (!deprecations[name]) {
8556
+ warn(msg);
8557
+ deprecations[name] = true;
8558
+ }
8559
+ }
8560
+
8561
+ hooks.suppressDeprecationWarnings = false;
8562
+ hooks.deprecationHandler = null;
8563
+
8564
+ function isFunction(input) {
8565
+ return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
8566
+ }
8567
+
8568
+ function set (config) {
8569
+ var prop, i;
8570
+ for (i in config) {
8571
+ prop = config[i];
8572
+ if (isFunction(prop)) {
8573
+ this[i] = prop;
8574
+ } else {
8575
+ this['_' + i] = prop;
8576
+ }
8577
+ }
8578
+ this._config = config;
8579
+ // Lenient ordinal parsing accepts just a number in addition to
8580
+ // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
8581
+ // TODO: Remove "ordinalParse" fallback in next major release.
8582
+ this._dayOfMonthOrdinalParseLenient = new RegExp(
8583
+ (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
8584
+ '|' + (/\d{1,2}/).source);
8585
+ }
8586
+
8587
+ function mergeConfigs(parentConfig, childConfig) {
8588
+ var res = extend({}, parentConfig), prop;
8589
+ for (prop in childConfig) {
8590
+ if (hasOwnProp(childConfig, prop)) {
8591
+ if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
8592
+ res[prop] = {};
8593
+ extend(res[prop], parentConfig[prop]);
8594
+ extend(res[prop], childConfig[prop]);
8595
+ } else if (childConfig[prop] != null) {
8596
+ res[prop] = childConfig[prop];
8597
+ } else {
8598
+ delete res[prop];
8599
+ }
8600
+ }
8601
+ }
8602
+ for (prop in parentConfig) {
8603
+ if (hasOwnProp(parentConfig, prop) &&
8604
+ !hasOwnProp(childConfig, prop) &&
8605
+ isObject(parentConfig[prop])) {
8606
+ // make sure changes to properties don't modify parent config
8607
+ res[prop] = extend({}, res[prop]);
8608
+ }
8609
+ }
8610
+ return res;
8611
+ }
8612
+
8613
+ function Locale(config) {
8614
+ if (config != null) {
8615
+ this.set(config);
8616
+ }
8617
+ }
8618
+
8619
+ var keys;
8620
+
8621
+ if (Object.keys) {
8622
+ keys = Object.keys;
8623
+ } else {
8624
+ keys = function (obj) {
8625
+ var i, res = [];
8626
+ for (i in obj) {
8627
+ if (hasOwnProp(obj, i)) {
8628
+ res.push(i);
8629
+ }
8630
+ }
8631
+ return res;
8632
+ };
8633
+ }
8634
+
8635
+ var defaultCalendar = {
8636
+ sameDay : '[Today at] LT',
8637
+ nextDay : '[Tomorrow at] LT',
8638
+ nextWeek : 'dddd [at] LT',
8639
+ lastDay : '[Yesterday at] LT',
8640
+ lastWeek : '[Last] dddd [at] LT',
8641
+ sameElse : 'L'
8642
+ };
8643
+
8644
+ function calendar (key, mom, now) {
8645
+ var output = this._calendar[key] || this._calendar['sameElse'];
8646
+ return isFunction(output) ? output.call(mom, now) : output;
8647
+ }
8648
+
8649
+ var defaultLongDateFormat = {
8650
+ LTS : 'h:mm:ss A',
8651
+ LT : 'h:mm A',
8652
+ L : 'MM/DD/YYYY',
8653
+ LL : 'MMMM D, YYYY',
8654
+ LLL : 'MMMM D, YYYY h:mm A',
8655
+ LLLL : 'dddd, MMMM D, YYYY h:mm A'
8656
+ };
8657
+
8658
+ function longDateFormat (key) {
8659
+ var format = this._longDateFormat[key],
8660
+ formatUpper = this._longDateFormat[key.toUpperCase()];
8661
+
8662
+ if (format || !formatUpper) {
8663
+ return format;
8664
+ }
8665
+
8666
+ this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
8667
+ return val.slice(1);
8668
+ });
8669
+
8670
+ return this._longDateFormat[key];
8671
+ }
8672
+
8673
+ var defaultInvalidDate = 'Invalid date';
8674
+
8675
+ function invalidDate () {
8676
+ return this._invalidDate;
8677
+ }
8678
+
8679
+ var defaultOrdinal = '%d';
8680
+ var defaultDayOfMonthOrdinalParse = /\d{1,2}/;
8681
+
8682
+ function ordinal (number) {
8683
+ return this._ordinal.replace('%d', number);
8684
+ }
8685
+
8686
+ var defaultRelativeTime = {
8687
+ future : 'in %s',
8688
+ past : '%s ago',
8689
+ s : 'a few seconds',
8690
+ ss : '%d seconds',
8691
+ m : 'a minute',
8692
+ mm : '%d minutes',
8693
+ h : 'an hour',
8694
+ hh : '%d hours',
8695
+ d : 'a day',
8696
+ dd : '%d days',
8697
+ M : 'a month',
8698
+ MM : '%d months',
8699
+ y : 'a year',
8700
+ yy : '%d years'
8701
+ };
8702
+
8703
+ function relativeTime (number, withoutSuffix, string, isFuture) {
8704
+ var output = this._relativeTime[string];
8705
+ return (isFunction(output)) ?
8706
+ output(number, withoutSuffix, string, isFuture) :
8707
+ output.replace(/%d/i, number);
8708
+ }
8709
+
8710
+ function pastFuture (diff, output) {
8711
+ var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
8712
+ return isFunction(format) ? format(output) : format.replace(/%s/i, output);
8713
+ }
8714
+
8715
+ var aliases = {};
8716
+
8717
+ function addUnitAlias (unit, shorthand) {
8718
+ var lowerCase = unit.toLowerCase();
8719
+ aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
8720
+ }
8721
+
8722
+ function normalizeUnits(units) {
8723
+ return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
8724
+ }
8725
+
8726
+ function normalizeObjectUnits(inputObject) {
8727
+ var normalizedInput = {},
8728
+ normalizedProp,
8729
+ prop;
8730
+
8731
+ for (prop in inputObject) {
8732
+ if (hasOwnProp(inputObject, prop)) {
8733
+ normalizedProp = normalizeUnits(prop);
8734
+ if (normalizedProp) {
8735
+ normalizedInput[normalizedProp] = inputObject[prop];
8736
+ }
8737
+ }
8738
+ }
8739
+
8740
+ return normalizedInput;
8741
+ }
8742
+
8743
+ var priorities = {};
8744
+
8745
+ function addUnitPriority(unit, priority) {
8746
+ priorities[unit] = priority;
8747
+ }
8748
+
8749
+ function getPrioritizedUnits(unitsObj) {
8750
+ var units = [];
8751
+ for (var u in unitsObj) {
8752
+ units.push({unit: u, priority: priorities[u]});
8753
+ }
8754
+ units.sort(function (a, b) {
8755
+ return a.priority - b.priority;
8756
+ });
8757
+ return units;
8758
+ }
8759
+
8760
+ function zeroFill(number, targetLength, forceSign) {
8761
+ var absNumber = '' + Math.abs(number),
8762
+ zerosToFill = targetLength - absNumber.length,
8763
+ sign = number >= 0;
8764
+ return (sign ? (forceSign ? '+' : '') : '-') +
8765
+ Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
8766
+ }
8767
+
8768
+ var formattingTokens = /(\[[^\[]*\])|(\\)?([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;
8769
+
8770
+ var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
8771
+
8772
+ var formatFunctions = {};
8773
+
8774
+ var formatTokenFunctions = {};
8775
+
8776
+ // token: 'M'
8777
+ // padded: ['MM', 2]
8778
+ // ordinal: 'Mo'
8779
+ // callback: function () { this.month() + 1 }
8780
+ function addFormatToken (token, padded, ordinal, callback) {
8781
+ var func = callback;
8782
+ if (typeof callback === 'string') {
8783
+ func = function () {
8784
+ return this[callback]();
8785
+ };
8786
+ }
8787
+ if (token) {
8788
+ formatTokenFunctions[token] = func;
8789
+ }
8790
+ if (padded) {
8791
+ formatTokenFunctions[padded[0]] = function () {
8792
+ return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
8793
+ };
8794
+ }
8795
+ if (ordinal) {
8796
+ formatTokenFunctions[ordinal] = function () {
8797
+ return this.localeData().ordinal(func.apply(this, arguments), token);
8798
+ };
8799
+ }
8800
+ }
8801
+
8802
+ function removeFormattingTokens(input) {
8803
+ if (input.match(/\[[\s\S]/)) {
8804
+ return input.replace(/^\[|\]$/g, '');
8805
+ }
8806
+ return input.replace(/\\/g, '');
8807
+ }
8808
+
8809
+ function makeFormatFunction(format) {
8810
+ var array = format.match(formattingTokens), i, length;
8811
+
8812
+ for (i = 0, length = array.length; i < length; i++) {
8813
+ if (formatTokenFunctions[array[i]]) {
8814
+ array[i] = formatTokenFunctions[array[i]];
8815
+ } else {
8816
+ array[i] = removeFormattingTokens(array[i]);
8817
+ }
8818
+ }
8819
+
8820
+ return function (mom) {
8821
+ var output = '', i;
8822
+ for (i = 0; i < length; i++) {
8823
+ output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];
8824
+ }
8825
+ return output;
8826
+ };
8827
+ }
8828
+
8829
+ // format date using native date object
8830
+ function formatMoment(m, format) {
8831
+ if (!m.isValid()) {
8832
+ return m.localeData().invalidDate();
8833
+ }
8834
+
8835
+ format = expandFormat(format, m.localeData());
8836
+ formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
8837
+
8838
+ return formatFunctions[format](m);
8839
+ }
8840
+
8841
+ function expandFormat(format, locale) {
8842
+ var i = 5;
8843
+
8844
+ function replaceLongDateFormatTokens(input) {
8845
+ return locale.longDateFormat(input) || input;
8846
+ }
8847
+
8848
+ localFormattingTokens.lastIndex = 0;
8849
+ while (i >= 0 && localFormattingTokens.test(format)) {
8850
+ format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
8851
+ localFormattingTokens.lastIndex = 0;
8852
+ i -= 1;
8853
+ }
8854
+
8855
+ return format;
8856
+ }
8857
+
8858
+ var match1 = /\d/; // 0 - 9
8859
+ var match2 = /\d\d/; // 00 - 99
8860
+ var match3 = /\d{3}/; // 000 - 999
8861
+ var match4 = /\d{4}/; // 0000 - 9999
8862
+ var match6 = /[+-]?\d{6}/; // -999999 - 999999
8863
+ var match1to2 = /\d\d?/; // 0 - 99
8864
+ var match3to4 = /\d\d\d\d?/; // 999 - 9999
8865
+ var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999
8866
+ var match1to3 = /\d{1,3}/; // 0 - 999
8867
+ var match1to4 = /\d{1,4}/; // 0 - 9999
8868
+ var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999
8869
+
8870
+ var matchUnsigned = /\d+/; // 0 - inf
8871
+ var matchSigned = /[+-]?\d+/; // -inf - inf
8872
+
8873
+ var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
8874
+ var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
8875
+
8876
+ var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
8877
+
8878
+ // any word (or two) characters or numbers including two/three word month in arabic.
8879
+ // includes scottish gaelic two word and hyphenated months
8880
+ var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;
8881
+
8882
+
8883
+ var regexes = {};
8884
+
8885
+ function addRegexToken (token, regex, strictRegex) {
8886
+ regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
8887
+ return (isStrict && strictRegex) ? strictRegex : regex;
8888
+ };
8889
+ }
8890
+
8891
+ function getParseRegexForToken (token, config) {
8892
+ if (!hasOwnProp(regexes, token)) {
8893
+ return new RegExp(unescapeFormat(token));
8894
+ }
8895
+
8896
+ return regexes[token](config._strict, config._locale);
8897
+ }
8898
+
8899
+ // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
8900
+ function unescapeFormat(s) {
8901
+ return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
8902
+ return p1 || p2 || p3 || p4;
8903
+ }));
8904
+ }
8905
+
8906
+ function regexEscape(s) {
8907
+ return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
8908
+ }
8909
+
8910
+ var tokens = {};
8911
+
8912
+ function addParseToken (token, callback) {
8913
+ var i, func = callback;
8914
+ if (typeof token === 'string') {
8915
+ token = [token];
8916
+ }
8917
+ if (isNumber(callback)) {
8918
+ func = function (input, array) {
8919
+ array[callback] = toInt(input);
8920
+ };
8921
+ }
8922
+ for (i = 0; i < token.length; i++) {
8923
+ tokens[token[i]] = func;
8924
+ }
8925
+ }
8926
+
8927
+ function addWeekParseToken (token, callback) {
8928
+ addParseToken(token, function (input, array, config, token) {
8929
+ config._w = config._w || {};
8930
+ callback(input, config._w, config, token);
8931
+ });
8932
+ }
8933
+
8934
+ function addTimeToArrayFromToken(token, input, config) {
8935
+ if (input != null && hasOwnProp(tokens, token)) {
8936
+ tokens[token](input, config._a, config, token);
8937
+ }
8938
+ }
8939
+
8940
+ var YEAR = 0;
8941
+ var MONTH = 1;
8942
+ var DATE = 2;
8943
+ var HOUR = 3;
8944
+ var MINUTE = 4;
8945
+ var SECOND = 5;
8946
+ var MILLISECOND = 6;
8947
+ var WEEK = 7;
8948
+ var WEEKDAY = 8;
8949
+
8950
+ // FORMATTING
8951
+
8952
+ addFormatToken('Y', 0, 0, function () {
8953
+ var y = this.year();
8954
+ return y <= 9999 ? '' + y : '+' + y;
8955
+ });
8956
+
8957
+ addFormatToken(0, ['YY', 2], 0, function () {
8958
+ return this.year() % 100;
8959
+ });
8960
+
8961
+ addFormatToken(0, ['YYYY', 4], 0, 'year');
8962
+ addFormatToken(0, ['YYYYY', 5], 0, 'year');
8963
+ addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
8964
+
8965
+ // ALIASES
8966
+
8967
+ addUnitAlias('year', 'y');
8968
+
8969
+ // PRIORITIES
8970
+
8971
+ addUnitPriority('year', 1);
8972
+
8973
+ // PARSING
8974
+
8975
+ addRegexToken('Y', matchSigned);
8976
+ addRegexToken('YY', match1to2, match2);
8977
+ addRegexToken('YYYY', match1to4, match4);
8978
+ addRegexToken('YYYYY', match1to6, match6);
8979
+ addRegexToken('YYYYYY', match1to6, match6);
8980
+
8981
+ addParseToken(['YYYYY', 'YYYYYY'], YEAR);
8982
+ addParseToken('YYYY', function (input, array) {
8983
+ array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
8984
+ });
8985
+ addParseToken('YY', function (input, array) {
8986
+ array[YEAR] = hooks.parseTwoDigitYear(input);
8987
+ });
8988
+ addParseToken('Y', function (input, array) {
8989
+ array[YEAR] = parseInt(input, 10);
8990
+ });
8991
+
8992
+ // HELPERS
8993
+
8994
+ function daysInYear(year) {
8995
+ return isLeapYear(year) ? 366 : 365;
8996
+ }
8997
+
8998
+ function isLeapYear(year) {
8999
+ return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
9000
+ }
9001
+
9002
+ // HOOKS
9003
+
9004
+ hooks.parseTwoDigitYear = function (input) {
9005
+ return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
9006
+ };
9007
+
9008
+ // MOMENTS
9009
+
9010
+ var getSetYear = makeGetSet('FullYear', true);
9011
+
9012
+ function getIsLeapYear () {
9013
+ return isLeapYear(this.year());
9014
+ }
9015
+
9016
+ function makeGetSet (unit, keepTime) {
9017
+ return function (value) {
9018
+ if (value != null) {
9019
+ set$1(this, unit, value);
9020
+ hooks.updateOffset(this, keepTime);
9021
+ return this;
9022
+ } else {
9023
+ return get(this, unit);
9024
+ }
9025
+ };
9026
+ }
9027
+
9028
+ function get (mom, unit) {
9029
+ return mom.isValid() ?
9030
+ mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
9031
+ }
9032
+
9033
+ function set$1 (mom, unit, value) {
9034
+ if (mom.isValid() && !isNaN(value)) {
9035
+ if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {
9036
+ mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));
9037
+ }
9038
+ else {
9039
+ mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
9040
+ }
9041
+ }
9042
+ }
9043
+
9044
+ // MOMENTS
9045
+
9046
+ function stringGet (units) {
9047
+ units = normalizeUnits(units);
9048
+ if (isFunction(this[units])) {
9049
+ return this[units]();
9050
+ }
9051
+ return this;
9052
+ }
9053
+
9054
+
9055
+ function stringSet (units, value) {
9056
+ if (typeof units === 'object') {
9057
+ units = normalizeObjectUnits(units);
9058
+ var prioritized = getPrioritizedUnits(units);
9059
+ for (var i = 0; i < prioritized.length; i++) {
9060
+ this[prioritized[i].unit](units[prioritized[i].unit]);
9061
+ }
9062
+ } else {
9063
+ units = normalizeUnits(units);
9064
+ if (isFunction(this[units])) {
9065
+ return this[units](value);
9066
+ }
9067
+ }
9068
+ return this;
9069
+ }
9070
+
9071
+ function mod(n, x) {
9072
+ return ((n % x) + x) % x;
9073
+ }
9074
+
9075
+ var indexOf;
9076
+
9077
+ if (Array.prototype.indexOf) {
9078
+ indexOf = Array.prototype.indexOf;
9079
+ } else {
9080
+ indexOf = function (o) {
9081
+ // I know
9082
+ var i;
9083
+ for (i = 0; i < this.length; ++i) {
9084
+ if (this[i] === o) {
9085
+ return i;
9086
+ }
9087
+ }
9088
+ return -1;
9089
+ };
9090
+ }
9091
+
9092
+ function daysInMonth(year, month) {
9093
+ if (isNaN(year) || isNaN(month)) {
9094
+ return NaN;
9095
+ }
9096
+ var modMonth = mod(month, 12);
9097
+ year += (month - modMonth) / 12;
9098
+ return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);
9099
+ }
9100
+
9101
+ // FORMATTING
9102
+
9103
+ addFormatToken('M', ['MM', 2], 'Mo', function () {
9104
+ return this.month() + 1;
9105
+ });
9106
+
9107
+ addFormatToken('MMM', 0, 0, function (format) {
9108
+ return this.localeData().monthsShort(this, format);
9109
+ });
9110
+
9111
+ addFormatToken('MMMM', 0, 0, function (format) {
9112
+ return this.localeData().months(this, format);
9113
+ });
9114
+
9115
+ // ALIASES
9116
+
9117
+ addUnitAlias('month', 'M');
9118
+
9119
+ // PRIORITY
9120
+
9121
+ addUnitPriority('month', 8);
9122
+
9123
+ // PARSING
9124
+
9125
+ addRegexToken('M', match1to2);
9126
+ addRegexToken('MM', match1to2, match2);
9127
+ addRegexToken('MMM', function (isStrict, locale) {
9128
+ return locale.monthsShortRegex(isStrict);
9129
+ });
9130
+ addRegexToken('MMMM', function (isStrict, locale) {
9131
+ return locale.monthsRegex(isStrict);
9132
+ });
9133
+
9134
+ addParseToken(['M', 'MM'], function (input, array) {
9135
+ array[MONTH] = toInt(input) - 1;
9136
+ });
9137
+
9138
+ addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
9139
+ var month = config._locale.monthsParse(input, token, config._strict);
9140
+ // if we didn't find a month name, mark the date as invalid.
9141
+ if (month != null) {
9142
+ array[MONTH] = month;
9143
+ } else {
9144
+ getParsingFlags(config).invalidMonth = input;
9145
+ }
9146
+ });
9147
+
9148
+ // LOCALES
9149
+
9150
+ var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;
9151
+ var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
9152
+ function localeMonths (m, format) {
9153
+ if (!m) {
9154
+ return isArray(this._months) ? this._months :
9155
+ this._months['standalone'];
9156
+ }
9157
+ return isArray(this._months) ? this._months[m.month()] :
9158
+ this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
9159
+ }
9160
+
9161
+ var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
9162
+ function localeMonthsShort (m, format) {
9163
+ if (!m) {
9164
+ return isArray(this._monthsShort) ? this._monthsShort :
9165
+ this._monthsShort['standalone'];
9166
+ }
9167
+ return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
9168
+ this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
9169
+ }
9170
+
9171
+ function handleStrictParse(monthName, format, strict) {
9172
+ var i, ii, mom, llc = monthName.toLocaleLowerCase();
9173
+ if (!this._monthsParse) {
9174
+ // this is not used
9175
+ this._monthsParse = [];
9176
+ this._longMonthsParse = [];
9177
+ this._shortMonthsParse = [];
9178
+ for (i = 0; i < 12; ++i) {
9179
+ mom = createUTC([2000, i]);
9180
+ this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
9181
+ this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
9182
+ }
9183
+ }
9184
+
9185
+ if (strict) {
9186
+ if (format === 'MMM') {
9187
+ ii = indexOf.call(this._shortMonthsParse, llc);
9188
+ return ii !== -1 ? ii : null;
9189
+ } else {
9190
+ ii = indexOf.call(this._longMonthsParse, llc);
9191
+ return ii !== -1 ? ii : null;
9192
+ }
9193
+ } else {
9194
+ if (format === 'MMM') {
9195
+ ii = indexOf.call(this._shortMonthsParse, llc);
9196
+ if (ii !== -1) {
9197
+ return ii;
9198
+ }
9199
+ ii = indexOf.call(this._longMonthsParse, llc);
9200
+ return ii !== -1 ? ii : null;
9201
+ } else {
9202
+ ii = indexOf.call(this._longMonthsParse, llc);
9203
+ if (ii !== -1) {
9204
+ return ii;
9205
+ }
9206
+ ii = indexOf.call(this._shortMonthsParse, llc);
9207
+ return ii !== -1 ? ii : null;
9208
+ }
9209
+ }
9210
+ }
9211
+
9212
+ function localeMonthsParse (monthName, format, strict) {
9213
+ var i, mom, regex;
9214
+
9215
+ if (this._monthsParseExact) {
9216
+ return handleStrictParse.call(this, monthName, format, strict);
9217
+ }
9218
+
9219
+ if (!this._monthsParse) {
9220
+ this._monthsParse = [];
9221
+ this._longMonthsParse = [];
9222
+ this._shortMonthsParse = [];
9223
+ }
9224
+
9225
+ // TODO: add sorting
9226
+ // Sorting makes sure if one month (or abbr) is a prefix of another
9227
+ // see sorting in computeMonthsParse
9228
+ for (i = 0; i < 12; i++) {
9229
+ // make the regex if we don't have it already
9230
+ mom = createUTC([2000, i]);
9231
+ if (strict && !this._longMonthsParse[i]) {
9232
+ this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
9233
+ this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
9234
+ }
9235
+ if (!strict && !this._monthsParse[i]) {
9236
+ regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
9237
+ this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
9238
+ }
9239
+ // test the regex
9240
+ if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
9241
+ return i;
9242
+ } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
9243
+ return i;
9244
+ } else if (!strict && this._monthsParse[i].test(monthName)) {
9245
+ return i;
9246
+ }
9247
+ }
9248
+ }
9249
+
9250
+ // MOMENTS
9251
+
9252
+ function setMonth (mom, value) {
9253
+ var dayOfMonth;
9254
+
9255
+ if (!mom.isValid()) {
9256
+ // No op
9257
+ return mom;
9258
+ }
9259
+
9260
+ if (typeof value === 'string') {
9261
+ if (/^\d+$/.test(value)) {
9262
+ value = toInt(value);
9263
+ } else {
9264
+ value = mom.localeData().monthsParse(value);
9265
+ // TODO: Another silent failure?
9266
+ if (!isNumber(value)) {
9267
+ return mom;
9268
+ }
9269
+ }
9270
+ }
9271
+
9272
+ dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
9273
+ mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
9274
+ return mom;
9275
+ }
9276
+
9277
+ function getSetMonth (value) {
9278
+ if (value != null) {
9279
+ setMonth(this, value);
9280
+ hooks.updateOffset(this, true);
9281
+ return this;
9282
+ } else {
9283
+ return get(this, 'Month');
9284
+ }
9285
+ }
9286
+
9287
+ function getDaysInMonth () {
9288
+ return daysInMonth(this.year(), this.month());
9289
+ }
9290
+
9291
+ var defaultMonthsShortRegex = matchWord;
9292
+ function monthsShortRegex (isStrict) {
9293
+ if (this._monthsParseExact) {
9294
+ if (!hasOwnProp(this, '_monthsRegex')) {
9295
+ computeMonthsParse.call(this);
9296
+ }
9297
+ if (isStrict) {
9298
+ return this._monthsShortStrictRegex;
9299
+ } else {
9300
+ return this._monthsShortRegex;
9301
+ }
9302
+ } else {
9303
+ if (!hasOwnProp(this, '_monthsShortRegex')) {
9304
+ this._monthsShortRegex = defaultMonthsShortRegex;
9305
+ }
9306
+ return this._monthsShortStrictRegex && isStrict ?
9307
+ this._monthsShortStrictRegex : this._monthsShortRegex;
9308
+ }
9309
+ }
9310
+
9311
+ var defaultMonthsRegex = matchWord;
9312
+ function monthsRegex (isStrict) {
9313
+ if (this._monthsParseExact) {
9314
+ if (!hasOwnProp(this, '_monthsRegex')) {
9315
+ computeMonthsParse.call(this);
9316
+ }
9317
+ if (isStrict) {
9318
+ return this._monthsStrictRegex;
9319
+ } else {
9320
+ return this._monthsRegex;
9321
+ }
9322
+ } else {
9323
+ if (!hasOwnProp(this, '_monthsRegex')) {
9324
+ this._monthsRegex = defaultMonthsRegex;
9325
+ }
9326
+ return this._monthsStrictRegex && isStrict ?
9327
+ this._monthsStrictRegex : this._monthsRegex;
9328
+ }
9329
+ }
9330
+
9331
+ function computeMonthsParse () {
9332
+ function cmpLenRev(a, b) {
9333
+ return b.length - a.length;
9334
+ }
9335
+
9336
+ var shortPieces = [], longPieces = [], mixedPieces = [],
9337
+ i, mom;
9338
+ for (i = 0; i < 12; i++) {
9339
+ // make the regex if we don't have it already
9340
+ mom = createUTC([2000, i]);
9341
+ shortPieces.push(this.monthsShort(mom, ''));
9342
+ longPieces.push(this.months(mom, ''));
9343
+ mixedPieces.push(this.months(mom, ''));
9344
+ mixedPieces.push(this.monthsShort(mom, ''));
9345
+ }
9346
+ // Sorting makes sure if one month (or abbr) is a prefix of another it
9347
+ // will match the longer piece.
9348
+ shortPieces.sort(cmpLenRev);
9349
+ longPieces.sort(cmpLenRev);
9350
+ mixedPieces.sort(cmpLenRev);
9351
+ for (i = 0; i < 12; i++) {
9352
+ shortPieces[i] = regexEscape(shortPieces[i]);
9353
+ longPieces[i] = regexEscape(longPieces[i]);
9354
+ }
9355
+ for (i = 0; i < 24; i++) {
9356
+ mixedPieces[i] = regexEscape(mixedPieces[i]);
9357
+ }
9358
+
9359
+ this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
9360
+ this._monthsShortRegex = this._monthsRegex;
9361
+ this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
9362
+ this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
9363
+ }
9364
+
9365
+ function createDate (y, m, d, h, M, s, ms) {
9366
+ // can't just apply() to create a date:
9367
+ // https://stackoverflow.com/q/181348
9368
+ var date = new Date(y, m, d, h, M, s, ms);
9369
+
9370
+ // the date constructor remaps years 0-99 to 1900-1999
9371
+ if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
9372
+ date.setFullYear(y);
9373
+ }
9374
+ return date;
9375
+ }
9376
+
9377
+ function createUTCDate (y) {
9378
+ var date = new Date(Date.UTC.apply(null, arguments));
9379
+
9380
+ // the Date.UTC function remaps years 0-99 to 1900-1999
9381
+ if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
9382
+ date.setUTCFullYear(y);
9383
+ }
9384
+ return date;
9385
+ }
9386
+
9387
+ // start-of-first-week - start-of-year
9388
+ function firstWeekOffset(year, dow, doy) {
9389
+ var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
9390
+ fwd = 7 + dow - doy,
9391
+ // first-week day local weekday -- which local weekday is fwd
9392
+ fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
9393
+
9394
+ return -fwdlw + fwd - 1;
9395
+ }
9396
+
9397
+ // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
9398
+ function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
9399
+ var localWeekday = (7 + weekday - dow) % 7,
9400
+ weekOffset = firstWeekOffset(year, dow, doy),
9401
+ dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
9402
+ resYear, resDayOfYear;
9403
+
9404
+ if (dayOfYear <= 0) {
9405
+ resYear = year - 1;
9406
+ resDayOfYear = daysInYear(resYear) + dayOfYear;
9407
+ } else if (dayOfYear > daysInYear(year)) {
9408
+ resYear = year + 1;
9409
+ resDayOfYear = dayOfYear - daysInYear(year);
9410
+ } else {
9411
+ resYear = year;
9412
+ resDayOfYear = dayOfYear;
9413
+ }
9414
+
9415
+ return {
9416
+ year: resYear,
9417
+ dayOfYear: resDayOfYear
9418
+ };
9419
+ }
9420
+
9421
+ function weekOfYear(mom, dow, doy) {
9422
+ var weekOffset = firstWeekOffset(mom.year(), dow, doy),
9423
+ week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
9424
+ resWeek, resYear;
9425
+
9426
+ if (week < 1) {
9427
+ resYear = mom.year() - 1;
9428
+ resWeek = week + weeksInYear(resYear, dow, doy);
9429
+ } else if (week > weeksInYear(mom.year(), dow, doy)) {
9430
+ resWeek = week - weeksInYear(mom.year(), dow, doy);
9431
+ resYear = mom.year() + 1;
9432
+ } else {
9433
+ resYear = mom.year();
9434
+ resWeek = week;
9435
+ }
9436
+
9437
+ return {
9438
+ week: resWeek,
9439
+ year: resYear
9440
+ };
9441
+ }
9442
+
9443
+ function weeksInYear(year, dow, doy) {
9444
+ var weekOffset = firstWeekOffset(year, dow, doy),
9445
+ weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
9446
+ return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
9447
+ }
9448
+
9449
+ // FORMATTING
9450
+
9451
+ addFormatToken('w', ['ww', 2], 'wo', 'week');
9452
+ addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
9453
+
9454
+ // ALIASES
9455
+
9456
+ addUnitAlias('week', 'w');
9457
+ addUnitAlias('isoWeek', 'W');
9458
+
9459
+ // PRIORITIES
9460
+
9461
+ addUnitPriority('week', 5);
9462
+ addUnitPriority('isoWeek', 5);
9463
+
9464
+ // PARSING
9465
+
9466
+ addRegexToken('w', match1to2);
9467
+ addRegexToken('ww', match1to2, match2);
9468
+ addRegexToken('W', match1to2);
9469
+ addRegexToken('WW', match1to2, match2);
9470
+
9471
+ addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
9472
+ week[token.substr(0, 1)] = toInt(input);
9473
+ });
9474
+
9475
+ // HELPERS
9476
+
9477
+ // LOCALES
9478
+
9479
+ function localeWeek (mom) {
9480
+ return weekOfYear(mom, this._week.dow, this._week.doy).week;
9481
+ }
9482
+
9483
+ var defaultLocaleWeek = {
9484
+ dow : 0, // Sunday is the first day of the week.
9485
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
9486
+ };
9487
+
9488
+ function localeFirstDayOfWeek () {
9489
+ return this._week.dow;
9490
+ }
9491
+
9492
+ function localeFirstDayOfYear () {
9493
+ return this._week.doy;
9494
+ }
9495
+
9496
+ // MOMENTS
9497
+
9498
+ function getSetWeek (input) {
9499
+ var week = this.localeData().week(this);
9500
+ return input == null ? week : this.add((input - week) * 7, 'd');
9501
+ }
9502
+
9503
+ function getSetISOWeek (input) {
9504
+ var week = weekOfYear(this, 1, 4).week;
9505
+ return input == null ? week : this.add((input - week) * 7, 'd');
9506
+ }
9507
+
9508
+ // FORMATTING
9509
+
9510
+ addFormatToken('d', 0, 'do', 'day');
9511
+
9512
+ addFormatToken('dd', 0, 0, function (format) {
9513
+ return this.localeData().weekdaysMin(this, format);
9514
+ });
9515
+
9516
+ addFormatToken('ddd', 0, 0, function (format) {
9517
+ return this.localeData().weekdaysShort(this, format);
9518
+ });
9519
+
9520
+ addFormatToken('dddd', 0, 0, function (format) {
9521
+ return this.localeData().weekdays(this, format);
9522
+ });
9523
+
9524
+ addFormatToken('e', 0, 0, 'weekday');
9525
+ addFormatToken('E', 0, 0, 'isoWeekday');
9526
+
9527
+ // ALIASES
9528
+
9529
+ addUnitAlias('day', 'd');
9530
+ addUnitAlias('weekday', 'e');
9531
+ addUnitAlias('isoWeekday', 'E');
9532
+
9533
+ // PRIORITY
9534
+ addUnitPriority('day', 11);
9535
+ addUnitPriority('weekday', 11);
9536
+ addUnitPriority('isoWeekday', 11);
9537
+
9538
+ // PARSING
9539
+
9540
+ addRegexToken('d', match1to2);
9541
+ addRegexToken('e', match1to2);
9542
+ addRegexToken('E', match1to2);
9543
+ addRegexToken('dd', function (isStrict, locale) {
9544
+ return locale.weekdaysMinRegex(isStrict);
9545
+ });
9546
+ addRegexToken('ddd', function (isStrict, locale) {
9547
+ return locale.weekdaysShortRegex(isStrict);
9548
+ });
9549
+ addRegexToken('dddd', function (isStrict, locale) {
9550
+ return locale.weekdaysRegex(isStrict);
9551
+ });
9552
+
9553
+ addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
9554
+ var weekday = config._locale.weekdaysParse(input, token, config._strict);
9555
+ // if we didn't get a weekday name, mark the date as invalid
9556
+ if (weekday != null) {
9557
+ week.d = weekday;
9558
+ } else {
9559
+ getParsingFlags(config).invalidWeekday = input;
9560
+ }
9561
+ });
9562
+
9563
+ addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
9564
+ week[token] = toInt(input);
9565
+ });
9566
+
9567
+ // HELPERS
9568
+
9569
+ function parseWeekday(input, locale) {
9570
+ if (typeof input !== 'string') {
9571
+ return input;
9572
+ }
9573
+
9574
+ if (!isNaN(input)) {
9575
+ return parseInt(input, 10);
9576
+ }
9577
+
9578
+ input = locale.weekdaysParse(input);
9579
+ if (typeof input === 'number') {
9580
+ return input;
9581
+ }
9582
+
9583
+ return null;
9584
+ }
9585
+
9586
+ function parseIsoWeekday(input, locale) {
9587
+ if (typeof input === 'string') {
9588
+ return locale.weekdaysParse(input) % 7 || 7;
9589
+ }
9590
+ return isNaN(input) ? null : input;
9591
+ }
9592
+
9593
+ // LOCALES
9594
+
9595
+ var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
9596
+ function localeWeekdays (m, format) {
9597
+ if (!m) {
9598
+ return isArray(this._weekdays) ? this._weekdays :
9599
+ this._weekdays['standalone'];
9600
+ }
9601
+ return isArray(this._weekdays) ? this._weekdays[m.day()] :
9602
+ this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];
9603
+ }
9604
+
9605
+ var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
9606
+ function localeWeekdaysShort (m) {
9607
+ return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;
9608
+ }
9609
+
9610
+ var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
9611
+ function localeWeekdaysMin (m) {
9612
+ return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;
9613
+ }
9614
+
9615
+ function handleStrictParse$1(weekdayName, format, strict) {
9616
+ var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
9617
+ if (!this._weekdaysParse) {
9618
+ this._weekdaysParse = [];
9619
+ this._shortWeekdaysParse = [];
9620
+ this._minWeekdaysParse = [];
9621
+
9622
+ for (i = 0; i < 7; ++i) {
9623
+ mom = createUTC([2000, 1]).day(i);
9624
+ this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
9625
+ this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
9626
+ this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
9627
+ }
9628
+ }
9629
+
9630
+ if (strict) {
9631
+ if (format === 'dddd') {
9632
+ ii = indexOf.call(this._weekdaysParse, llc);
9633
+ return ii !== -1 ? ii : null;
9634
+ } else if (format === 'ddd') {
9635
+ ii = indexOf.call(this._shortWeekdaysParse, llc);
9636
+ return ii !== -1 ? ii : null;
9637
+ } else {
9638
+ ii = indexOf.call(this._minWeekdaysParse, llc);
9639
+ return ii !== -1 ? ii : null;
9640
+ }
9641
+ } else {
9642
+ if (format === 'dddd') {
9643
+ ii = indexOf.call(this._weekdaysParse, llc);
9644
+ if (ii !== -1) {
9645
+ return ii;
9646
+ }
9647
+ ii = indexOf.call(this._shortWeekdaysParse, llc);
9648
+ if (ii !== -1) {
9649
+ return ii;
9650
+ }
9651
+ ii = indexOf.call(this._minWeekdaysParse, llc);
9652
+ return ii !== -1 ? ii : null;
9653
+ } else if (format === 'ddd') {
9654
+ ii = indexOf.call(this._shortWeekdaysParse, llc);
9655
+ if (ii !== -1) {
9656
+ return ii;
9657
+ }
9658
+ ii = indexOf.call(this._weekdaysParse, llc);
9659
+ if (ii !== -1) {
9660
+ return ii;
9661
+ }
9662
+ ii = indexOf.call(this._minWeekdaysParse, llc);
9663
+ return ii !== -1 ? ii : null;
9664
+ } else {
9665
+ ii = indexOf.call(this._minWeekdaysParse, llc);
9666
+ if (ii !== -1) {
9667
+ return ii;
9668
+ }
9669
+ ii = indexOf.call(this._weekdaysParse, llc);
9670
+ if (ii !== -1) {
9671
+ return ii;
9672
+ }
9673
+ ii = indexOf.call(this._shortWeekdaysParse, llc);
9674
+ return ii !== -1 ? ii : null;
9675
+ }
9676
+ }
9677
+ }
9678
+
9679
+ function localeWeekdaysParse (weekdayName, format, strict) {
9680
+ var i, mom, regex;
9681
+
9682
+ if (this._weekdaysParseExact) {
9683
+ return handleStrictParse$1.call(this, weekdayName, format, strict);
9684
+ }
9685
+
9686
+ if (!this._weekdaysParse) {
9687
+ this._weekdaysParse = [];
9688
+ this._minWeekdaysParse = [];
9689
+ this._shortWeekdaysParse = [];
9690
+ this._fullWeekdaysParse = [];
9691
+ }
9692
+
9693
+ for (i = 0; i < 7; i++) {
9694
+ // make the regex if we don't have it already
9695
+
9696
+ mom = createUTC([2000, 1]).day(i);
9697
+ if (strict && !this._fullWeekdaysParse[i]) {
9698
+ this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i');
9699
+ this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i');
9700
+ this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i');
9701
+ }
9702
+ if (!this._weekdaysParse[i]) {
9703
+ regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
9704
+ this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
9705
+ }
9706
+ // test the regex
9707
+ if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
9708
+ return i;
9709
+ } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
9710
+ return i;
9711
+ } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
9712
+ return i;
9713
+ } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
9714
+ return i;
9715
+ }
9716
+ }
9717
+ }
9718
+
9719
+ // MOMENTS
9720
+
9721
+ function getSetDayOfWeek (input) {
9722
+ if (!this.isValid()) {
9723
+ return input != null ? this : NaN;
9724
+ }
9725
+ var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
9726
+ if (input != null) {
9727
+ input = parseWeekday(input, this.localeData());
9728
+ return this.add(input - day, 'd');
9729
+ } else {
9730
+ return day;
9731
+ }
9732
+ }
9733
+
9734
+ function getSetLocaleDayOfWeek (input) {
9735
+ if (!this.isValid()) {
9736
+ return input != null ? this : NaN;
9737
+ }
9738
+ var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
9739
+ return input == null ? weekday : this.add(input - weekday, 'd');
9740
+ }
9741
+
9742
+ function getSetISODayOfWeek (input) {
9743
+ if (!this.isValid()) {
9744
+ return input != null ? this : NaN;
9745
+ }
9746
+
9747
+ // behaves the same as moment#day except
9748
+ // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
9749
+ // as a setter, sunday should belong to the previous week.
9750
+
9751
+ if (input != null) {
9752
+ var weekday = parseIsoWeekday(input, this.localeData());
9753
+ return this.day(this.day() % 7 ? weekday : weekday - 7);
9754
+ } else {
9755
+ return this.day() || 7;
9756
+ }
9757
+ }
9758
+
9759
+ var defaultWeekdaysRegex = matchWord;
9760
+ function weekdaysRegex (isStrict) {
9761
+ if (this._weekdaysParseExact) {
9762
+ if (!hasOwnProp(this, '_weekdaysRegex')) {
9763
+ computeWeekdaysParse.call(this);
9764
+ }
9765
+ if (isStrict) {
9766
+ return this._weekdaysStrictRegex;
9767
+ } else {
9768
+ return this._weekdaysRegex;
9769
+ }
9770
+ } else {
9771
+ if (!hasOwnProp(this, '_weekdaysRegex')) {
9772
+ this._weekdaysRegex = defaultWeekdaysRegex;
9773
+ }
9774
+ return this._weekdaysStrictRegex && isStrict ?
9775
+ this._weekdaysStrictRegex : this._weekdaysRegex;
9776
+ }
9777
+ }
9778
+
9779
+ var defaultWeekdaysShortRegex = matchWord;
9780
+ function weekdaysShortRegex (isStrict) {
9781
+ if (this._weekdaysParseExact) {
9782
+ if (!hasOwnProp(this, '_weekdaysRegex')) {
9783
+ computeWeekdaysParse.call(this);
9784
+ }
9785
+ if (isStrict) {
9786
+ return this._weekdaysShortStrictRegex;
9787
+ } else {
9788
+ return this._weekdaysShortRegex;
9789
+ }
9790
+ } else {
9791
+ if (!hasOwnProp(this, '_weekdaysShortRegex')) {
9792
+ this._weekdaysShortRegex = defaultWeekdaysShortRegex;
9793
+ }
9794
+ return this._weekdaysShortStrictRegex && isStrict ?
9795
+ this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
9796
+ }
9797
+ }
9798
+
9799
+ var defaultWeekdaysMinRegex = matchWord;
9800
+ function weekdaysMinRegex (isStrict) {
9801
+ if (this._weekdaysParseExact) {
9802
+ if (!hasOwnProp(this, '_weekdaysRegex')) {
9803
+ computeWeekdaysParse.call(this);
9804
+ }
9805
+ if (isStrict) {
9806
+ return this._weekdaysMinStrictRegex;
9807
+ } else {
9808
+ return this._weekdaysMinRegex;
9809
+ }
9810
+ } else {
9811
+ if (!hasOwnProp(this, '_weekdaysMinRegex')) {
9812
+ this._weekdaysMinRegex = defaultWeekdaysMinRegex;
9813
+ }
9814
+ return this._weekdaysMinStrictRegex && isStrict ?
9815
+ this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
9816
+ }
9817
+ }
9818
+
9819
+
9820
+ function computeWeekdaysParse () {
9821
+ function cmpLenRev(a, b) {
9822
+ return b.length - a.length;
9823
+ }
9824
+
9825
+ var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
9826
+ i, mom, minp, shortp, longp;
9827
+ for (i = 0; i < 7; i++) {
9828
+ // make the regex if we don't have it already
9829
+ mom = createUTC([2000, 1]).day(i);
9830
+ minp = this.weekdaysMin(mom, '');
9831
+ shortp = this.weekdaysShort(mom, '');
9832
+ longp = this.weekdays(mom, '');
9833
+ minPieces.push(minp);
9834
+ shortPieces.push(shortp);
9835
+ longPieces.push(longp);
9836
+ mixedPieces.push(minp);
9837
+ mixedPieces.push(shortp);
9838
+ mixedPieces.push(longp);
9839
+ }
9840
+ // Sorting makes sure if one weekday (or abbr) is a prefix of another it
9841
+ // will match the longer piece.
9842
+ minPieces.sort(cmpLenRev);
9843
+ shortPieces.sort(cmpLenRev);
9844
+ longPieces.sort(cmpLenRev);
9845
+ mixedPieces.sort(cmpLenRev);
9846
+ for (i = 0; i < 7; i++) {
9847
+ shortPieces[i] = regexEscape(shortPieces[i]);
9848
+ longPieces[i] = regexEscape(longPieces[i]);
9849
+ mixedPieces[i] = regexEscape(mixedPieces[i]);
9850
+ }
9851
+
9852
+ this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
9853
+ this._weekdaysShortRegex = this._weekdaysRegex;
9854
+ this._weekdaysMinRegex = this._weekdaysRegex;
9855
+
9856
+ this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
9857
+ this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
9858
+ this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
9859
+ }
9860
+
9861
+ // FORMATTING
9862
+
9863
+ function hFormat() {
9864
+ return this.hours() % 12 || 12;
9865
+ }
9866
+
9867
+ function kFormat() {
9868
+ return this.hours() || 24;
9869
+ }
9870
+
9871
+ addFormatToken('H', ['HH', 2], 0, 'hour');
9872
+ addFormatToken('h', ['hh', 2], 0, hFormat);
9873
+ addFormatToken('k', ['kk', 2], 0, kFormat);
9874
+
9875
+ addFormatToken('hmm', 0, 0, function () {
9876
+ return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
9877
+ });
9878
+
9879
+ addFormatToken('hmmss', 0, 0, function () {
9880
+ return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
9881
+ zeroFill(this.seconds(), 2);
9882
+ });
9883
+
9884
+ addFormatToken('Hmm', 0, 0, function () {
9885
+ return '' + this.hours() + zeroFill(this.minutes(), 2);
9886
+ });
9887
+
9888
+ addFormatToken('Hmmss', 0, 0, function () {
9889
+ return '' + this.hours() + zeroFill(this.minutes(), 2) +
9890
+ zeroFill(this.seconds(), 2);
9891
+ });
9892
+
9893
+ function meridiem (token, lowercase) {
9894
+ addFormatToken(token, 0, 0, function () {
9895
+ return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
9896
+ });
9897
+ }
9898
+
9899
+ meridiem('a', true);
9900
+ meridiem('A', false);
9901
+
9902
+ // ALIASES
9903
+
9904
+ addUnitAlias('hour', 'h');
9905
+
9906
+ // PRIORITY
9907
+ addUnitPriority('hour', 13);
9908
+
9909
+ // PARSING
9910
+
9911
+ function matchMeridiem (isStrict, locale) {
9912
+ return locale._meridiemParse;
9913
+ }
9914
+
9915
+ addRegexToken('a', matchMeridiem);
9916
+ addRegexToken('A', matchMeridiem);
9917
+ addRegexToken('H', match1to2);
9918
+ addRegexToken('h', match1to2);
9919
+ addRegexToken('k', match1to2);
9920
+ addRegexToken('HH', match1to2, match2);
9921
+ addRegexToken('hh', match1to2, match2);
9922
+ addRegexToken('kk', match1to2, match2);
9923
+
9924
+ addRegexToken('hmm', match3to4);
9925
+ addRegexToken('hmmss', match5to6);
9926
+ addRegexToken('Hmm', match3to4);
9927
+ addRegexToken('Hmmss', match5to6);
9928
+
9929
+ addParseToken(['H', 'HH'], HOUR);
9930
+ addParseToken(['k', 'kk'], function (input, array, config) {
9931
+ var kInput = toInt(input);
9932
+ array[HOUR] = kInput === 24 ? 0 : kInput;
9933
+ });
9934
+ addParseToken(['a', 'A'], function (input, array, config) {
9935
+ config._isPm = config._locale.isPM(input);
9936
+ config._meridiem = input;
9937
+ });
9938
+ addParseToken(['h', 'hh'], function (input, array, config) {
9939
+ array[HOUR] = toInt(input);
9940
+ getParsingFlags(config).bigHour = true;
9941
+ });
9942
+ addParseToken('hmm', function (input, array, config) {
9943
+ var pos = input.length - 2;
9944
+ array[HOUR] = toInt(input.substr(0, pos));
9945
+ array[MINUTE] = toInt(input.substr(pos));
9946
+ getParsingFlags(config).bigHour = true;
9947
+ });
9948
+ addParseToken('hmmss', function (input, array, config) {
9949
+ var pos1 = input.length - 4;
9950
+ var pos2 = input.length - 2;
9951
+ array[HOUR] = toInt(input.substr(0, pos1));
9952
+ array[MINUTE] = toInt(input.substr(pos1, 2));
9953
+ array[SECOND] = toInt(input.substr(pos2));
9954
+ getParsingFlags(config).bigHour = true;
9955
+ });
9956
+ addParseToken('Hmm', function (input, array, config) {
9957
+ var pos = input.length - 2;
9958
+ array[HOUR] = toInt(input.substr(0, pos));
9959
+ array[MINUTE] = toInt(input.substr(pos));
9960
+ });
9961
+ addParseToken('Hmmss', function (input, array, config) {
9962
+ var pos1 = input.length - 4;
9963
+ var pos2 = input.length - 2;
9964
+ array[HOUR] = toInt(input.substr(0, pos1));
9965
+ array[MINUTE] = toInt(input.substr(pos1, 2));
9966
+ array[SECOND] = toInt(input.substr(pos2));
9967
+ });
9968
+
9969
+ // LOCALES
9970
+
9971
+ function localeIsPM (input) {
9972
+ // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
9973
+ // Using charAt should be more compatible.
9974
+ return ((input + '').toLowerCase().charAt(0) === 'p');
9975
+ }
9976
+
9977
+ var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
9978
+ function localeMeridiem (hours, minutes, isLower) {
9979
+ if (hours > 11) {
9980
+ return isLower ? 'pm' : 'PM';
9981
+ } else {
9982
+ return isLower ? 'am' : 'AM';
9983
+ }
9984
+ }
9985
+
9986
+
9987
+ // MOMENTS
9988
+
9989
+ // Setting the hour should keep the time, because the user explicitly
9990
+ // specified which hour he wants. So trying to maintain the same hour (in
9991
+ // a new timezone) makes sense. Adding/subtracting hours does not follow
9992
+ // this rule.
9993
+ var getSetHour = makeGetSet('Hours', true);
9994
+
9995
+ // months
9996
+ // week
9997
+ // weekdays
9998
+ // meridiem
9999
+ var baseConfig = {
10000
+ calendar: defaultCalendar,
10001
+ longDateFormat: defaultLongDateFormat,
10002
+ invalidDate: defaultInvalidDate,
10003
+ ordinal: defaultOrdinal,
10004
+ dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
10005
+ relativeTime: defaultRelativeTime,
10006
+
10007
+ months: defaultLocaleMonths,
10008
+ monthsShort: defaultLocaleMonthsShort,
10009
+
10010
+ week: defaultLocaleWeek,
10011
+
10012
+ weekdays: defaultLocaleWeekdays,
10013
+ weekdaysMin: defaultLocaleWeekdaysMin,
10014
+ weekdaysShort: defaultLocaleWeekdaysShort,
10015
+
10016
+ meridiemParse: defaultLocaleMeridiemParse
10017
+ };
10018
+
10019
+ // internal storage for locale config files
10020
+ var locales = {};
10021
+ var localeFamilies = {};
10022
+ var globalLocale;
10023
+
10024
+ function normalizeLocale(key) {
10025
+ return key ? key.toLowerCase().replace('_', '-') : key;
10026
+ }
10027
+
10028
+ // pick the locale from the array
10029
+ // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
10030
+ // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
10031
+ function chooseLocale(names) {
10032
+ var i = 0, j, next, locale, split;
10033
+
10034
+ while (i < names.length) {
10035
+ split = normalizeLocale(names[i]).split('-');
10036
+ j = split.length;
10037
+ next = normalizeLocale(names[i + 1]);
10038
+ next = next ? next.split('-') : null;
10039
+ while (j > 0) {
10040
+ locale = loadLocale(split.slice(0, j).join('-'));
10041
+ if (locale) {
10042
+ return locale;
10043
+ }
10044
+ if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
10045
+ //the next array item is better than a shallower substring of this one
10046
+ break;
10047
+ }
10048
+ j--;
10049
+ }
10050
+ i++;
10051
+ }
10052
+ return null;
10053
+ }
10054
+
10055
+ function loadLocale(name) {
10056
+ var oldLocale = null;
10057
+ // TODO: Find a better way to register and load all the locales in Node
10058
+ if (!locales[name] && (typeof module !== 'undefined') &&
10059
+ module && module.exports) {
10060
+ try {
10061
+ oldLocale = globalLocale._abbr;
10062
+ var aliasedRequire = require;
10063
+ __webpack_require__(606)("./" + name);
10064
+ getSetGlobalLocale(oldLocale);
10065
+ } catch (e) {}
10066
+ }
10067
+ return locales[name];
10068
+ }
10069
+
10070
+ // This function will load locale and then set the global locale. If
10071
+ // no arguments are passed in, it will simply return the current global
10072
+ // locale key.
10073
+ function getSetGlobalLocale (key, values) {
10074
+ var data;
10075
+ if (key) {
10076
+ if (isUndefined(values)) {
10077
+ data = getLocale(key);
10078
+ }
10079
+ else {
10080
+ data = defineLocale(key, values);
10081
+ }
10082
+
10083
+ if (data) {
10084
+ // moment.duration._locale = moment._locale = data;
10085
+ globalLocale = data;
10086
+ }
10087
+ }
10088
+
10089
+ return globalLocale._abbr;
10090
+ }
10091
+
10092
+ function defineLocale (name, config) {
10093
+ if (config !== null) {
10094
+ var parentConfig = baseConfig;
10095
+ config.abbr = name;
10096
+ if (locales[name] != null) {
10097
+ deprecateSimple('defineLocaleOverride',
10098
+ 'use moment.updateLocale(localeName, config) to change ' +
10099
+ 'an existing locale. moment.defineLocale(localeName, ' +
10100
+ 'config) should only be used for creating a new locale ' +
10101
+ 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');
10102
+ parentConfig = locales[name]._config;
10103
+ } else if (config.parentLocale != null) {
10104
+ if (locales[config.parentLocale] != null) {
10105
+ parentConfig = locales[config.parentLocale]._config;
10106
+ } else {
10107
+ if (!localeFamilies[config.parentLocale]) {
10108
+ localeFamilies[config.parentLocale] = [];
10109
+ }
10110
+ localeFamilies[config.parentLocale].push({
10111
+ name: name,
10112
+ config: config
10113
+ });
10114
+ return null;
10115
+ }
10116
+ }
10117
+ locales[name] = new Locale(mergeConfigs(parentConfig, config));
10118
+
10119
+ if (localeFamilies[name]) {
10120
+ localeFamilies[name].forEach(function (x) {
10121
+ defineLocale(x.name, x.config);
10122
+ });
10123
+ }
10124
+
10125
+ // backwards compat for now: also set the locale
10126
+ // make sure we set the locale AFTER all child locales have been
10127
+ // created, so we won't end up with the child locale set.
10128
+ getSetGlobalLocale(name);
10129
+
10130
+
10131
+ return locales[name];
10132
+ } else {
10133
+ // useful for testing
10134
+ delete locales[name];
10135
+ return null;
10136
+ }
10137
+ }
10138
+
10139
+ function updateLocale(name, config) {
10140
+ if (config != null) {
10141
+ var locale, tmpLocale, parentConfig = baseConfig;
10142
+ // MERGE
10143
+ tmpLocale = loadLocale(name);
10144
+ if (tmpLocale != null) {
10145
+ parentConfig = tmpLocale._config;
10146
+ }
10147
+ config = mergeConfigs(parentConfig, config);
10148
+ locale = new Locale(config);
10149
+ locale.parentLocale = locales[name];
10150
+ locales[name] = locale;
10151
+
10152
+ // backwards compat for now: also set the locale
10153
+ getSetGlobalLocale(name);
10154
+ } else {
10155
+ // pass null for config to unupdate, useful for tests
10156
+ if (locales[name] != null) {
10157
+ if (locales[name].parentLocale != null) {
10158
+ locales[name] = locales[name].parentLocale;
10159
+ } else if (locales[name] != null) {
10160
+ delete locales[name];
10161
+ }
10162
+ }
10163
+ }
10164
+ return locales[name];
10165
+ }
10166
+
10167
+ // returns locale data
10168
+ function getLocale (key) {
10169
+ var locale;
10170
+
10171
+ if (key && key._locale && key._locale._abbr) {
10172
+ key = key._locale._abbr;
10173
+ }
10174
+
10175
+ if (!key) {
10176
+ return globalLocale;
10177
+ }
10178
+
10179
+ if (!isArray(key)) {
10180
+ //short-circuit everything else
10181
+ locale = loadLocale(key);
10182
+ if (locale) {
10183
+ return locale;
10184
+ }
10185
+ key = [key];
10186
+ }
10187
+
10188
+ return chooseLocale(key);
10189
+ }
10190
+
10191
+ function listLocales() {
10192
+ return keys(locales);
10193
+ }
10194
+
10195
+ function checkOverflow (m) {
10196
+ var overflow;
10197
+ var a = m._a;
10198
+
10199
+ if (a && getParsingFlags(m).overflow === -2) {
10200
+ overflow =
10201
+ a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
10202
+ a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
10203
+ a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
10204
+ a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
10205
+ a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
10206
+ a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
10207
+ -1;
10208
+
10209
+ if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
10210
+ overflow = DATE;
10211
+ }
10212
+ if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
10213
+ overflow = WEEK;
10214
+ }
10215
+ if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
10216
+ overflow = WEEKDAY;
10217
+ }
10218
+
10219
+ getParsingFlags(m).overflow = overflow;
10220
+ }
10221
+
10222
+ return m;
10223
+ }
10224
+
10225
+ // Pick the first defined of two or three arguments.
10226
+ function defaults(a, b, c) {
10227
+ if (a != null) {
10228
+ return a;
10229
+ }
10230
+ if (b != null) {
10231
+ return b;
10232
+ }
10233
+ return c;
10234
+ }
10235
+
10236
+ function currentDateArray(config) {
10237
+ // hooks is actually the exported moment object
10238
+ var nowValue = new Date(hooks.now());
10239
+ if (config._useUTC) {
10240
+ return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
10241
+ }
10242
+ return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
10243
+ }
10244
+
10245
+ // convert an array to a date.
10246
+ // the array should mirror the parameters below
10247
+ // note: all values past the year are optional and will default to the lowest possible value.
10248
+ // [year, month, day , hour, minute, second, millisecond]
10249
+ function configFromArray (config) {
10250
+ var i, date, input = [], currentDate, expectedWeekday, yearToUse;
10251
+
10252
+ if (config._d) {
10253
+ return;
10254
+ }
10255
+
10256
+ currentDate = currentDateArray(config);
10257
+
10258
+ //compute day of the year from weeks and weekdays
10259
+ if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
10260
+ dayOfYearFromWeekInfo(config);
10261
+ }
10262
+
10263
+ //if the day of the year is set, figure out what it is
10264
+ if (config._dayOfYear != null) {
10265
+ yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
10266
+
10267
+ if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
10268
+ getParsingFlags(config)._overflowDayOfYear = true;
10269
+ }
10270
+
10271
+ date = createUTCDate(yearToUse, 0, config._dayOfYear);
10272
+ config._a[MONTH] = date.getUTCMonth();
10273
+ config._a[DATE] = date.getUTCDate();
10274
+ }
10275
+
10276
+ // Default to current date.
10277
+ // * if no year, month, day of month are given, default to today
10278
+ // * if day of month is given, default month and year
10279
+ // * if month is given, default only year
10280
+ // * if year is given, don't default anything
10281
+ for (i = 0; i < 3 && config._a[i] == null; ++i) {
10282
+ config._a[i] = input[i] = currentDate[i];
10283
+ }
10284
+
10285
+ // Zero out whatever was not defaulted, including time
10286
+ for (; i < 7; i++) {
10287
+ config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
10288
+ }
10289
+
10290
+ // Check for 24:00:00.000
10291
+ if (config._a[HOUR] === 24 &&
10292
+ config._a[MINUTE] === 0 &&
10293
+ config._a[SECOND] === 0 &&
10294
+ config._a[MILLISECOND] === 0) {
10295
+ config._nextDay = true;
10296
+ config._a[HOUR] = 0;
10297
+ }
10298
+
10299
+ config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
10300
+ expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();
10301
+
10302
+ // Apply timezone offset from input. The actual utcOffset can be changed
10303
+ // with parseZone.
10304
+ if (config._tzm != null) {
10305
+ config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
10306
+ }
10307
+
10308
+ if (config._nextDay) {
10309
+ config._a[HOUR] = 24;
10310
+ }
10311
+
10312
+ // check for mismatching day of week
10313
+ if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {
10314
+ getParsingFlags(config).weekdayMismatch = true;
10315
+ }
10316
+ }
10317
+
10318
+ function dayOfYearFromWeekInfo(config) {
10319
+ var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
10320
+
10321
+ w = config._w;
10322
+ if (w.GG != null || w.W != null || w.E != null) {
10323
+ dow = 1;
10324
+ doy = 4;
10325
+
10326
+ // TODO: We need to take the current isoWeekYear, but that depends on
10327
+ // how we interpret now (local, utc, fixed offset). So create
10328
+ // a now version of current config (take local/utc/offset flags, and
10329
+ // create now).
10330
+ weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);
10331
+ week = defaults(w.W, 1);
10332
+ weekday = defaults(w.E, 1);
10333
+ if (weekday < 1 || weekday > 7) {
10334
+ weekdayOverflow = true;
10335
+ }
10336
+ } else {
10337
+ dow = config._locale._week.dow;
10338
+ doy = config._locale._week.doy;
10339
+
10340
+ var curWeek = weekOfYear(createLocal(), dow, doy);
10341
+
10342
+ weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
10343
+
10344
+ // Default to current week.
10345
+ week = defaults(w.w, curWeek.week);
10346
+
10347
+ if (w.d != null) {
10348
+ // weekday -- low day numbers are considered next week
10349
+ weekday = w.d;
10350
+ if (weekday < 0 || weekday > 6) {
10351
+ weekdayOverflow = true;
10352
+ }
10353
+ } else if (w.e != null) {
10354
+ // local weekday -- counting starts from begining of week
10355
+ weekday = w.e + dow;
10356
+ if (w.e < 0 || w.e > 6) {
10357
+ weekdayOverflow = true;
10358
+ }
10359
+ } else {
10360
+ // default to begining of week
10361
+ weekday = dow;
10362
+ }
10363
+ }
10364
+ if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
10365
+ getParsingFlags(config)._overflowWeeks = true;
10366
+ } else if (weekdayOverflow != null) {
10367
+ getParsingFlags(config)._overflowWeekday = true;
10368
+ } else {
10369
+ temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
10370
+ config._a[YEAR] = temp.year;
10371
+ config._dayOfYear = temp.dayOfYear;
10372
+ }
10373
+ }
10374
+
10375
+ // iso 8601 regex
10376
+ // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
10377
+ var extendedIsoRegex = /^\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)?)?$/;
10378
+ var basicIsoRegex = /^\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)?)?$/;
10379
+
10380
+ var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
10381
+
10382
+ var isoDates = [
10383
+ ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
10384
+ ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
10385
+ ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
10386
+ ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
10387
+ ['YYYY-DDD', /\d{4}-\d{3}/],
10388
+ ['YYYY-MM', /\d{4}-\d\d/, false],
10389
+ ['YYYYYYMMDD', /[+-]\d{10}/],
10390
+ ['YYYYMMDD', /\d{8}/],
10391
+ // YYYYMM is NOT allowed by the standard
10392
+ ['GGGG[W]WWE', /\d{4}W\d{3}/],
10393
+ ['GGGG[W]WW', /\d{4}W\d{2}/, false],
10394
+ ['YYYYDDD', /\d{7}/]
10395
+ ];
10396
+
10397
+ // iso time formats and regexes
10398
+ var isoTimes = [
10399
+ ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
10400
+ ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
10401
+ ['HH:mm:ss', /\d\d:\d\d:\d\d/],
10402
+ ['HH:mm', /\d\d:\d\d/],
10403
+ ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
10404
+ ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
10405
+ ['HHmmss', /\d\d\d\d\d\d/],
10406
+ ['HHmm', /\d\d\d\d/],
10407
+ ['HH', /\d\d/]
10408
+ ];
10409
+
10410
+ var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
10411
+
10412
+ // date from iso format
10413
+ function configFromISO(config) {
10414
+ var i, l,
10415
+ string = config._i,
10416
+ match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
10417
+ allowTime, dateFormat, timeFormat, tzFormat;
10418
+
10419
+ if (match) {
10420
+ getParsingFlags(config).iso = true;
10421
+
10422
+ for (i = 0, l = isoDates.length; i < l; i++) {
10423
+ if (isoDates[i][1].exec(match[1])) {
10424
+ dateFormat = isoDates[i][0];
10425
+ allowTime = isoDates[i][2] !== false;
10426
+ break;
10427
+ }
10428
+ }
10429
+ if (dateFormat == null) {
10430
+ config._isValid = false;
10431
+ return;
10432
+ }
10433
+ if (match[3]) {
10434
+ for (i = 0, l = isoTimes.length; i < l; i++) {
10435
+ if (isoTimes[i][1].exec(match[3])) {
10436
+ // match[2] should be 'T' or space
10437
+ timeFormat = (match[2] || ' ') + isoTimes[i][0];
10438
+ break;
10439
+ }
10440
+ }
10441
+ if (timeFormat == null) {
10442
+ config._isValid = false;
10443
+ return;
10444
+ }
10445
+ }
10446
+ if (!allowTime && timeFormat != null) {
10447
+ config._isValid = false;
10448
+ return;
10449
+ }
10450
+ if (match[4]) {
10451
+ if (tzRegex.exec(match[4])) {
10452
+ tzFormat = 'Z';
10453
+ } else {
10454
+ config._isValid = false;
10455
+ return;
10456
+ }
10457
+ }
10458
+ config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
10459
+ configFromStringAndFormat(config);
10460
+ } else {
10461
+ config._isValid = false;
10462
+ }
10463
+ }
10464
+
10465
+ // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
10466
+ var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;
10467
+
10468
+ function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {
10469
+ var result = [
10470
+ untruncateYear(yearStr),
10471
+ defaultLocaleMonthsShort.indexOf(monthStr),
10472
+ parseInt(dayStr, 10),
10473
+ parseInt(hourStr, 10),
10474
+ parseInt(minuteStr, 10)
10475
+ ];
10476
+
10477
+ if (secondStr) {
10478
+ result.push(parseInt(secondStr, 10));
10479
+ }
10480
+
10481
+ return result;
10482
+ }
10483
+
10484
+ function untruncateYear(yearStr) {
10485
+ var year = parseInt(yearStr, 10);
10486
+ if (year <= 49) {
10487
+ return 2000 + year;
10488
+ } else if (year <= 999) {
10489
+ return 1900 + year;
10490
+ }
10491
+ return year;
10492
+ }
10493
+
10494
+ function preprocessRFC2822(s) {
10495
+ // Remove comments and folding whitespace and replace multiple-spaces with a single space
10496
+ return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').trim();
10497
+ }
10498
+
10499
+ function checkWeekday(weekdayStr, parsedInput, config) {
10500
+ if (weekdayStr) {
10501
+ // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.
10502
+ var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
10503
+ weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();
10504
+ if (weekdayProvided !== weekdayActual) {
10505
+ getParsingFlags(config).weekdayMismatch = true;
10506
+ config._isValid = false;
10507
+ return false;
10508
+ }
10509
+ }
10510
+ return true;
10511
+ }
10512
+
10513
+ var obsOffsets = {
10514
+ UT: 0,
10515
+ GMT: 0,
10516
+ EDT: -4 * 60,
10517
+ EST: -5 * 60,
10518
+ CDT: -5 * 60,
10519
+ CST: -6 * 60,
10520
+ MDT: -6 * 60,
10521
+ MST: -7 * 60,
10522
+ PDT: -7 * 60,
10523
+ PST: -8 * 60
10524
+ };
10525
+
10526
+ function calculateOffset(obsOffset, militaryOffset, numOffset) {
10527
+ if (obsOffset) {
10528
+ return obsOffsets[obsOffset];
10529
+ } else if (militaryOffset) {
10530
+ // the only allowed military tz is Z
10531
+ return 0;
10532
+ } else {
10533
+ var hm = parseInt(numOffset, 10);
10534
+ var m = hm % 100, h = (hm - m) / 100;
10535
+ return h * 60 + m;
10536
+ }
10537
+ }
10538
+
10539
+ // date and time from ref 2822 format
10540
+ function configFromRFC2822(config) {
10541
+ var match = rfc2822.exec(preprocessRFC2822(config._i));
10542
+ if (match) {
10543
+ var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);
10544
+ if (!checkWeekday(match[1], parsedArray, config)) {
10545
+ return;
10546
+ }
10547
+
10548
+ config._a = parsedArray;
10549
+ config._tzm = calculateOffset(match[8], match[9], match[10]);
10550
+
10551
+ config._d = createUTCDate.apply(null, config._a);
10552
+ config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
10553
+
10554
+ getParsingFlags(config).rfc2822 = true;
10555
+ } else {
10556
+ config._isValid = false;
10557
+ }
10558
+ }
10559
+
10560
+ // date from iso format or fallback
10561
+ function configFromString(config) {
10562
+ var matched = aspNetJsonRegex.exec(config._i);
10563
+
10564
+ if (matched !== null) {
10565
+ config._d = new Date(+matched[1]);
10566
+ return;
10567
+ }
10568
+
10569
+ configFromISO(config);
10570
+ if (config._isValid === false) {
10571
+ delete config._isValid;
10572
+ } else {
10573
+ return;
10574
+ }
10575
+
10576
+ configFromRFC2822(config);
10577
+ if (config._isValid === false) {
10578
+ delete config._isValid;
10579
+ } else {
10580
+ return;
10581
+ }
10582
+
10583
+ // Final attempt, use Input Fallback
10584
+ hooks.createFromInputFallback(config);
10585
+ }
10586
+
10587
+ hooks.createFromInputFallback = deprecate(
10588
+ 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
10589
+ 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
10590
+ 'discouraged and will be removed in an upcoming major release. Please refer to ' +
10591
+ 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
10592
+ function (config) {
10593
+ config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
10594
+ }
10595
+ );
10596
+
10597
+ // constant that refers to the ISO standard
10598
+ hooks.ISO_8601 = function () {};
10599
+
10600
+ // constant that refers to the RFC 2822 form
10601
+ hooks.RFC_2822 = function () {};
10602
+
10603
+ // date from string and format string
10604
+ function configFromStringAndFormat(config) {
10605
+ // TODO: Move this to another part of the creation flow to prevent circular deps
10606
+ if (config._f === hooks.ISO_8601) {
10607
+ configFromISO(config);
10608
+ return;
10609
+ }
10610
+ if (config._f === hooks.RFC_2822) {
10611
+ configFromRFC2822(config);
10612
+ return;
10613
+ }
10614
+ config._a = [];
10615
+ getParsingFlags(config).empty = true;
10616
+
10617
+ // This array is used to make a Date, either with `new Date` or `Date.UTC`
10618
+ var string = '' + config._i,
10619
+ i, parsedInput, tokens, token, skipped,
10620
+ stringLength = string.length,
10621
+ totalParsedInputLength = 0;
10622
+
10623
+ tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
10624
+
10625
+ for (i = 0; i < tokens.length; i++) {
10626
+ token = tokens[i];
10627
+ parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
10628
+ // console.log('token', token, 'parsedInput', parsedInput,
10629
+ // 'regex', getParseRegexForToken(token, config));
10630
+ if (parsedInput) {
10631
+ skipped = string.substr(0, string.indexOf(parsedInput));
10632
+ if (skipped.length > 0) {
10633
+ getParsingFlags(config).unusedInput.push(skipped);
10634
+ }
10635
+ string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
10636
+ totalParsedInputLength += parsedInput.length;
10637
+ }
10638
+ // don't parse if it's not a known token
10639
+ if (formatTokenFunctions[token]) {
10640
+ if (parsedInput) {
10641
+ getParsingFlags(config).empty = false;
10642
+ }
10643
+ else {
10644
+ getParsingFlags(config).unusedTokens.push(token);
10645
+ }
10646
+ addTimeToArrayFromToken(token, parsedInput, config);
10647
+ }
10648
+ else if (config._strict && !parsedInput) {
10649
+ getParsingFlags(config).unusedTokens.push(token);
10650
+ }
10651
+ }
10652
+
10653
+ // add remaining unparsed input length to the string
10654
+ getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
10655
+ if (string.length > 0) {
10656
+ getParsingFlags(config).unusedInput.push(string);
10657
+ }
10658
+
10659
+ // clear _12h flag if hour is <= 12
10660
+ if (config._a[HOUR] <= 12 &&
10661
+ getParsingFlags(config).bigHour === true &&
10662
+ config._a[HOUR] > 0) {
10663
+ getParsingFlags(config).bigHour = undefined;
10664
+ }
10665
+
10666
+ getParsingFlags(config).parsedDateParts = config._a.slice(0);
10667
+ getParsingFlags(config).meridiem = config._meridiem;
10668
+ // handle meridiem
10669
+ config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
10670
+
10671
+ configFromArray(config);
10672
+ checkOverflow(config);
10673
+ }
10674
+
10675
+
10676
+ function meridiemFixWrap (locale, hour, meridiem) {
10677
+ var isPm;
10678
+
10679
+ if (meridiem == null) {
10680
+ // nothing to do
10681
+ return hour;
10682
+ }
10683
+ if (locale.meridiemHour != null) {
10684
+ return locale.meridiemHour(hour, meridiem);
10685
+ } else if (locale.isPM != null) {
10686
+ // Fallback
10687
+ isPm = locale.isPM(meridiem);
10688
+ if (isPm && hour < 12) {
10689
+ hour += 12;
10690
+ }
10691
+ if (!isPm && hour === 12) {
10692
+ hour = 0;
10693
+ }
10694
+ return hour;
10695
+ } else {
10696
+ // this is not supposed to happen
10697
+ return hour;
10698
+ }
10699
+ }
10700
+
10701
+ // date from string and array of format strings
10702
+ function configFromStringAndArray(config) {
10703
+ var tempConfig,
10704
+ bestMoment,
10705
+
10706
+ scoreToBeat,
10707
+ i,
10708
+ currentScore;
10709
+
10710
+ if (config._f.length === 0) {
10711
+ getParsingFlags(config).invalidFormat = true;
10712
+ config._d = new Date(NaN);
10713
+ return;
10714
+ }
10715
+
10716
+ for (i = 0; i < config._f.length; i++) {
10717
+ currentScore = 0;
10718
+ tempConfig = copyConfig({}, config);
10719
+ if (config._useUTC != null) {
10720
+ tempConfig._useUTC = config._useUTC;
10721
+ }
10722
+ tempConfig._f = config._f[i];
10723
+ configFromStringAndFormat(tempConfig);
10724
+
10725
+ if (!isValid(tempConfig)) {
10726
+ continue;
10727
+ }
10728
+
10729
+ // if there is any input that was not parsed add a penalty for that format
10730
+ currentScore += getParsingFlags(tempConfig).charsLeftOver;
10731
+
10732
+ //or tokens
10733
+ currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
10734
+
10735
+ getParsingFlags(tempConfig).score = currentScore;
10736
+
10737
+ if (scoreToBeat == null || currentScore < scoreToBeat) {
10738
+ scoreToBeat = currentScore;
10739
+ bestMoment = tempConfig;
10740
+ }
10741
+ }
10742
+
10743
+ extend(config, bestMoment || tempConfig);
10744
+ }
10745
+
10746
+ function configFromObject(config) {
10747
+ if (config._d) {
10748
+ return;
10749
+ }
10750
+
10751
+ var i = normalizeObjectUnits(config._i);
10752
+ config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
10753
+ return obj && parseInt(obj, 10);
10754
+ });
10755
+
10756
+ configFromArray(config);
10757
+ }
10758
+
10759
+ function createFromConfig (config) {
10760
+ var res = new Moment(checkOverflow(prepareConfig(config)));
10761
+ if (res._nextDay) {
10762
+ // Adding is smart enough around DST
10763
+ res.add(1, 'd');
10764
+ res._nextDay = undefined;
10765
+ }
10766
+
10767
+ return res;
10768
+ }
10769
+
10770
+ function prepareConfig (config) {
10771
+ var input = config._i,
10772
+ format = config._f;
10773
+
10774
+ config._locale = config._locale || getLocale(config._l);
10775
+
10776
+ if (input === null || (format === undefined && input === '')) {
10777
+ return createInvalid({nullInput: true});
10778
+ }
10779
+
10780
+ if (typeof input === 'string') {
10781
+ config._i = input = config._locale.preparse(input);
10782
+ }
10783
+
10784
+ if (isMoment(input)) {
10785
+ return new Moment(checkOverflow(input));
10786
+ } else if (isDate(input)) {
10787
+ config._d = input;
10788
+ } else if (isArray(format)) {
10789
+ configFromStringAndArray(config);
10790
+ } else if (format) {
10791
+ configFromStringAndFormat(config);
10792
+ } else {
10793
+ configFromInput(config);
10794
+ }
10795
+
10796
+ if (!isValid(config)) {
10797
+ config._d = null;
10798
+ }
10799
+
10800
+ return config;
10801
+ }
10802
+
10803
+ function configFromInput(config) {
10804
+ var input = config._i;
10805
+ if (isUndefined(input)) {
10806
+ config._d = new Date(hooks.now());
10807
+ } else if (isDate(input)) {
10808
+ config._d = new Date(input.valueOf());
10809
+ } else if (typeof input === 'string') {
10810
+ configFromString(config);
10811
+ } else if (isArray(input)) {
10812
+ config._a = map(input.slice(0), function (obj) {
10813
+ return parseInt(obj, 10);
10814
+ });
10815
+ configFromArray(config);
10816
+ } else if (isObject(input)) {
10817
+ configFromObject(config);
10818
+ } else if (isNumber(input)) {
10819
+ // from milliseconds
10820
+ config._d = new Date(input);
10821
+ } else {
10822
+ hooks.createFromInputFallback(config);
10823
+ }
10824
+ }
10825
+
10826
+ function createLocalOrUTC (input, format, locale, strict, isUTC) {
10827
+ var c = {};
10828
+
10829
+ if (locale === true || locale === false) {
10830
+ strict = locale;
10831
+ locale = undefined;
10832
+ }
10833
+
10834
+ if ((isObject(input) && isObjectEmpty(input)) ||
10835
+ (isArray(input) && input.length === 0)) {
10836
+ input = undefined;
10837
+ }
10838
+ // object construction must be done this way.
10839
+ // https://github.com/moment/moment/issues/1423
10840
+ c._isAMomentObject = true;
10841
+ c._useUTC = c._isUTC = isUTC;
10842
+ c._l = locale;
10843
+ c._i = input;
10844
+ c._f = format;
10845
+ c._strict = strict;
10846
+
10847
+ return createFromConfig(c);
10848
+ }
10849
+
10850
+ function createLocal (input, format, locale, strict) {
10851
+ return createLocalOrUTC(input, format, locale, strict, false);
10852
+ }
10853
+
10854
+ var prototypeMin = deprecate(
10855
+ 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
10856
+ function () {
10857
+ var other = createLocal.apply(null, arguments);
10858
+ if (this.isValid() && other.isValid()) {
10859
+ return other < this ? this : other;
10860
+ } else {
10861
+ return createInvalid();
10862
+ }
10863
+ }
10864
+ );
10865
+
10866
+ var prototypeMax = deprecate(
10867
+ 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
10868
+ function () {
10869
+ var other = createLocal.apply(null, arguments);
10870
+ if (this.isValid() && other.isValid()) {
10871
+ return other > this ? this : other;
10872
+ } else {
10873
+ return createInvalid();
10874
+ }
10875
+ }
10876
+ );
10877
+
10878
+ // Pick a moment m from moments so that m[fn](other) is true for all
10879
+ // other. This relies on the function fn to be transitive.
10880
+ //
10881
+ // moments should either be an array of moment objects or an array, whose
10882
+ // first element is an array of moment objects.
10883
+ function pickBy(fn, moments) {
10884
+ var res, i;
10885
+ if (moments.length === 1 && isArray(moments[0])) {
10886
+ moments = moments[0];
10887
+ }
10888
+ if (!moments.length) {
10889
+ return createLocal();
10890
+ }
10891
+ res = moments[0];
10892
+ for (i = 1; i < moments.length; ++i) {
10893
+ if (!moments[i].isValid() || moments[i][fn](res)) {
10894
+ res = moments[i];
10895
+ }
10896
+ }
10897
+ return res;
10898
+ }
10899
+
10900
+ // TODO: Use [].sort instead?
10901
+ function min () {
10902
+ var args = [].slice.call(arguments, 0);
10903
+
10904
+ return pickBy('isBefore', args);
10905
+ }
10906
+
10907
+ function max () {
10908
+ var args = [].slice.call(arguments, 0);
10909
+
10910
+ return pickBy('isAfter', args);
10911
+ }
10912
+
10913
+ var now = function () {
10914
+ return Date.now ? Date.now() : +(new Date());
10915
+ };
10916
+
10917
+ var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];
10918
+
10919
+ function isDurationValid(m) {
10920
+ for (var key in m) {
10921
+ if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
10922
+ return false;
10923
+ }
10924
+ }
10925
+
10926
+ var unitHasDecimal = false;
10927
+ for (var i = 0; i < ordering.length; ++i) {
10928
+ if (m[ordering[i]]) {
10929
+ if (unitHasDecimal) {
10930
+ return false; // only allow non-integers for smallest unit
10931
+ }
10932
+ if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
10933
+ unitHasDecimal = true;
10934
+ }
10935
+ }
10936
+ }
10937
+
10938
+ return true;
10939
+ }
10940
+
10941
+ function isValid$1() {
10942
+ return this._isValid;
10943
+ }
10944
+
10945
+ function createInvalid$1() {
10946
+ return createDuration(NaN);
10947
+ }
10948
+
10949
+ function Duration (duration) {
10950
+ var normalizedInput = normalizeObjectUnits(duration),
10951
+ years = normalizedInput.year || 0,
10952
+ quarters = normalizedInput.quarter || 0,
10953
+ months = normalizedInput.month || 0,
10954
+ weeks = normalizedInput.week || 0,
10955
+ days = normalizedInput.day || 0,
10956
+ hours = normalizedInput.hour || 0,
10957
+ minutes = normalizedInput.minute || 0,
10958
+ seconds = normalizedInput.second || 0,
10959
+ milliseconds = normalizedInput.millisecond || 0;
10960
+
10961
+ this._isValid = isDurationValid(normalizedInput);
10962
+
10963
+ // representation for dateAddRemove
10964
+ this._milliseconds = +milliseconds +
10965
+ seconds * 1e3 + // 1000
10966
+ minutes * 6e4 + // 1000 * 60
10967
+ hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
10968
+ // Because of dateAddRemove treats 24 hours as different from a
10969
+ // day when working around DST, we need to store them separately
10970
+ this._days = +days +
10971
+ weeks * 7;
10972
+ // It is impossible to translate months into days without knowing
10973
+ // which months you are are talking about, so we have to store
10974
+ // it separately.
10975
+ this._months = +months +
10976
+ quarters * 3 +
10977
+ years * 12;
10978
+
10979
+ this._data = {};
10980
+
10981
+ this._locale = getLocale();
10982
+
10983
+ this._bubble();
10984
+ }
10985
+
10986
+ function isDuration (obj) {
10987
+ return obj instanceof Duration;
10988
+ }
10989
+
10990
+ function absRound (number) {
10991
+ if (number < 0) {
10992
+ return Math.round(-1 * number) * -1;
10993
+ } else {
10994
+ return Math.round(number);
10995
+ }
10996
+ }
10997
+
10998
+ // FORMATTING
10999
+
11000
+ function offset (token, separator) {
11001
+ addFormatToken(token, 0, 0, function () {
11002
+ var offset = this.utcOffset();
11003
+ var sign = '+';
11004
+ if (offset < 0) {
11005
+ offset = -offset;
11006
+ sign = '-';
11007
+ }
11008
+ return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
11009
+ });
11010
+ }
11011
+
11012
+ offset('Z', ':');
11013
+ offset('ZZ', '');
11014
+
11015
+ // PARSING
11016
+
11017
+ addRegexToken('Z', matchShortOffset);
11018
+ addRegexToken('ZZ', matchShortOffset);
11019
+ addParseToken(['Z', 'ZZ'], function (input, array, config) {
11020
+ config._useUTC = true;
11021
+ config._tzm = offsetFromString(matchShortOffset, input);
11022
+ });
11023
+
11024
+ // HELPERS
11025
+
11026
+ // timezone chunker
11027
+ // '+10:00' > ['10', '00']
11028
+ // '-1530' > ['-15', '30']
11029
+ var chunkOffset = /([\+\-]|\d\d)/gi;
11030
+
11031
+ function offsetFromString(matcher, string) {
11032
+ var matches = (string || '').match(matcher);
11033
+
11034
+ if (matches === null) {
11035
+ return null;
11036
+ }
11037
+
11038
+ var chunk = matches[matches.length - 1] || [];
11039
+ var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
11040
+ var minutes = +(parts[1] * 60) + toInt(parts[2]);
11041
+
11042
+ return minutes === 0 ?
11043
+ 0 :
11044
+ parts[0] === '+' ? minutes : -minutes;
11045
+ }
11046
+
11047
+ // Return a moment from input, that is local/utc/zone equivalent to model.
11048
+ function cloneWithOffset(input, model) {
11049
+ var res, diff;
11050
+ if (model._isUTC) {
11051
+ res = model.clone();
11052
+ diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
11053
+ // Use low-level api, because this fn is low-level api.
11054
+ res._d.setTime(res._d.valueOf() + diff);
11055
+ hooks.updateOffset(res, false);
11056
+ return res;
11057
+ } else {
11058
+ return createLocal(input).local();
11059
+ }
11060
+ }
11061
+
11062
+ function getDateOffset (m) {
11063
+ // On Firefox.24 Date#getTimezoneOffset returns a floating point.
11064
+ // https://github.com/moment/moment/pull/1871
11065
+ return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
11066
+ }
11067
+
11068
+ // HOOKS
11069
+
11070
+ // This function will be called whenever a moment is mutated.
11071
+ // It is intended to keep the offset in sync with the timezone.
11072
+ hooks.updateOffset = function () {};
11073
+
11074
+ // MOMENTS
11075
+
11076
+ // keepLocalTime = true means only change the timezone, without
11077
+ // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
11078
+ // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
11079
+ // +0200, so we adjust the time as needed, to be valid.
11080
+ //
11081
+ // Keeping the time actually adds/subtracts (one hour)
11082
+ // from the actual represented time. That is why we call updateOffset
11083
+ // a second time. In case it wants us to change the offset again
11084
+ // _changeInProgress == true case, then we have to adjust, because
11085
+ // there is no such time in the given timezone.
11086
+ function getSetOffset (input, keepLocalTime, keepMinutes) {
11087
+ var offset = this._offset || 0,
11088
+ localAdjust;
11089
+ if (!this.isValid()) {
11090
+ return input != null ? this : NaN;
11091
+ }
11092
+ if (input != null) {
11093
+ if (typeof input === 'string') {
11094
+ input = offsetFromString(matchShortOffset, input);
11095
+ if (input === null) {
11096
+ return this;
11097
+ }
11098
+ } else if (Math.abs(input) < 16 && !keepMinutes) {
11099
+ input = input * 60;
11100
+ }
11101
+ if (!this._isUTC && keepLocalTime) {
11102
+ localAdjust = getDateOffset(this);
11103
+ }
11104
+ this._offset = input;
11105
+ this._isUTC = true;
11106
+ if (localAdjust != null) {
11107
+ this.add(localAdjust, 'm');
11108
+ }
11109
+ if (offset !== input) {
11110
+ if (!keepLocalTime || this._changeInProgress) {
11111
+ addSubtract(this, createDuration(input - offset, 'm'), 1, false);
11112
+ } else if (!this._changeInProgress) {
11113
+ this._changeInProgress = true;
11114
+ hooks.updateOffset(this, true);
11115
+ this._changeInProgress = null;
11116
+ }
11117
+ }
11118
+ return this;
11119
+ } else {
11120
+ return this._isUTC ? offset : getDateOffset(this);
11121
+ }
11122
+ }
11123
+
11124
+ function getSetZone (input, keepLocalTime) {
11125
+ if (input != null) {
11126
+ if (typeof input !== 'string') {
11127
+ input = -input;
11128
+ }
11129
+
11130
+ this.utcOffset(input, keepLocalTime);
11131
+
11132
+ return this;
11133
+ } else {
11134
+ return -this.utcOffset();
11135
+ }
11136
+ }
11137
+
11138
+ function setOffsetToUTC (keepLocalTime) {
11139
+ return this.utcOffset(0, keepLocalTime);
11140
+ }
11141
+
11142
+ function setOffsetToLocal (keepLocalTime) {
11143
+ if (this._isUTC) {
11144
+ this.utcOffset(0, keepLocalTime);
11145
+ this._isUTC = false;
11146
+
11147
+ if (keepLocalTime) {
11148
+ this.subtract(getDateOffset(this), 'm');
11149
+ }
11150
+ }
11151
+ return this;
11152
+ }
11153
+
11154
+ function setOffsetToParsedOffset () {
11155
+ if (this._tzm != null) {
11156
+ this.utcOffset(this._tzm, false, true);
11157
+ } else if (typeof this._i === 'string') {
11158
+ var tZone = offsetFromString(matchOffset, this._i);
11159
+ if (tZone != null) {
11160
+ this.utcOffset(tZone);
11161
+ }
11162
+ else {
11163
+ this.utcOffset(0, true);
11164
+ }
11165
+ }
11166
+ return this;
11167
+ }
11168
+
11169
+ function hasAlignedHourOffset (input) {
11170
+ if (!this.isValid()) {
11171
+ return false;
11172
+ }
11173
+ input = input ? createLocal(input).utcOffset() : 0;
11174
+
11175
+ return (this.utcOffset() - input) % 60 === 0;
11176
+ }
11177
+
11178
+ function isDaylightSavingTime () {
11179
+ return (
11180
+ this.utcOffset() > this.clone().month(0).utcOffset() ||
11181
+ this.utcOffset() > this.clone().month(5).utcOffset()
11182
+ );
11183
+ }
11184
+
11185
+ function isDaylightSavingTimeShifted () {
11186
+ if (!isUndefined(this._isDSTShifted)) {
11187
+ return this._isDSTShifted;
11188
+ }
11189
+
11190
+ var c = {};
11191
+
11192
+ copyConfig(c, this);
11193
+ c = prepareConfig(c);
11194
+
11195
+ if (c._a) {
11196
+ var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
11197
+ this._isDSTShifted = this.isValid() &&
11198
+ compareArrays(c._a, other.toArray()) > 0;
11199
+ } else {
11200
+ this._isDSTShifted = false;
11201
+ }
11202
+
11203
+ return this._isDSTShifted;
11204
+ }
11205
+
11206
+ function isLocal () {
11207
+ return this.isValid() ? !this._isUTC : false;
11208
+ }
11209
+
11210
+ function isUtcOffset () {
11211
+ return this.isValid() ? this._isUTC : false;
11212
+ }
11213
+
11214
+ function isUtc () {
11215
+ return this.isValid() ? this._isUTC && this._offset === 0 : false;
11216
+ }
11217
+
11218
+ // ASP.NET json date format regex
11219
+ var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;
11220
+
11221
+ // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
11222
+ // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
11223
+ // and further modified to allow for strings containing both week and day
11224
+ var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
11225
+
11226
+ function createDuration (input, key) {
11227
+ var duration = input,
11228
+ // matching against regexp is expensive, do it on demand
11229
+ match = null,
11230
+ sign,
11231
+ ret,
11232
+ diffRes;
11233
+
11234
+ if (isDuration(input)) {
11235
+ duration = {
11236
+ ms : input._milliseconds,
11237
+ d : input._days,
11238
+ M : input._months
11239
+ };
11240
+ } else if (isNumber(input)) {
11241
+ duration = {};
11242
+ if (key) {
11243
+ duration[key] = input;
11244
+ } else {
11245
+ duration.milliseconds = input;
11246
+ }
11247
+ } else if (!!(match = aspNetRegex.exec(input))) {
11248
+ sign = (match[1] === '-') ? -1 : 1;
11249
+ duration = {
11250
+ y : 0,
11251
+ d : toInt(match[DATE]) * sign,
11252
+ h : toInt(match[HOUR]) * sign,
11253
+ m : toInt(match[MINUTE]) * sign,
11254
+ s : toInt(match[SECOND]) * sign,
11255
+ ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match
11256
+ };
11257
+ } else if (!!(match = isoRegex.exec(input))) {
11258
+ sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;
11259
+ duration = {
11260
+ y : parseIso(match[2], sign),
11261
+ M : parseIso(match[3], sign),
11262
+ w : parseIso(match[4], sign),
11263
+ d : parseIso(match[5], sign),
11264
+ h : parseIso(match[6], sign),
11265
+ m : parseIso(match[7], sign),
11266
+ s : parseIso(match[8], sign)
11267
+ };
11268
+ } else if (duration == null) {// checks for null or undefined
11269
+ duration = {};
11270
+ } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
11271
+ diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));
11272
+
11273
+ duration = {};
11274
+ duration.ms = diffRes.milliseconds;
11275
+ duration.M = diffRes.months;
11276
+ }
11277
+
11278
+ ret = new Duration(duration);
11279
+
11280
+ if (isDuration(input) && hasOwnProp(input, '_locale')) {
11281
+ ret._locale = input._locale;
11282
+ }
11283
+
11284
+ return ret;
11285
+ }
11286
+
11287
+ createDuration.fn = Duration.prototype;
11288
+ createDuration.invalid = createInvalid$1;
11289
+
11290
+ function parseIso (inp, sign) {
11291
+ // We'd normally use ~~inp for this, but unfortunately it also
11292
+ // converts floats to ints.
11293
+ // inp may be undefined, so careful calling replace on it.
11294
+ var res = inp && parseFloat(inp.replace(',', '.'));
11295
+ // apply sign while we're at it
11296
+ return (isNaN(res) ? 0 : res) * sign;
11297
+ }
11298
+
11299
+ function positiveMomentsDifference(base, other) {
11300
+ var res = {milliseconds: 0, months: 0};
11301
+
11302
+ res.months = other.month() - base.month() +
11303
+ (other.year() - base.year()) * 12;
11304
+ if (base.clone().add(res.months, 'M').isAfter(other)) {
11305
+ --res.months;
11306
+ }
11307
+
11308
+ res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
11309
+
11310
+ return res;
11311
+ }
11312
+
11313
+ function momentsDifference(base, other) {
11314
+ var res;
11315
+ if (!(base.isValid() && other.isValid())) {
11316
+ return {milliseconds: 0, months: 0};
11317
+ }
11318
+
11319
+ other = cloneWithOffset(other, base);
11320
+ if (base.isBefore(other)) {
11321
+ res = positiveMomentsDifference(base, other);
11322
+ } else {
11323
+ res = positiveMomentsDifference(other, base);
11324
+ res.milliseconds = -res.milliseconds;
11325
+ res.months = -res.months;
11326
+ }
11327
+
11328
+ return res;
11329
+ }
11330
+
11331
+ // TODO: remove 'name' arg after deprecation is removed
11332
+ function createAdder(direction, name) {
11333
+ return function (val, period) {
11334
+ var dur, tmp;
11335
+ //invert the arguments, but complain about it
11336
+ if (period !== null && !isNaN(+period)) {
11337
+ deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +
11338
+ 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');
11339
+ tmp = val; val = period; period = tmp;
11340
+ }
11341
+
11342
+ val = typeof val === 'string' ? +val : val;
11343
+ dur = createDuration(val, period);
11344
+ addSubtract(this, dur, direction);
11345
+ return this;
11346
+ };
11347
+ }
11348
+
11349
+ function addSubtract (mom, duration, isAdding, updateOffset) {
11350
+ var milliseconds = duration._milliseconds,
11351
+ days = absRound(duration._days),
11352
+ months = absRound(duration._months);
11353
+
11354
+ if (!mom.isValid()) {
11355
+ // No op
11356
+ return;
11357
+ }
11358
+
11359
+ updateOffset = updateOffset == null ? true : updateOffset;
11360
+
11361
+ if (months) {
11362
+ setMonth(mom, get(mom, 'Month') + months * isAdding);
11363
+ }
11364
+ if (days) {
11365
+ set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
11366
+ }
11367
+ if (milliseconds) {
11368
+ mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
11369
+ }
11370
+ if (updateOffset) {
11371
+ hooks.updateOffset(mom, days || months);
11372
+ }
11373
+ }
11374
+
11375
+ var add = createAdder(1, 'add');
11376
+ var subtract = createAdder(-1, 'subtract');
11377
+
11378
+ function getCalendarFormat(myMoment, now) {
11379
+ var diff = myMoment.diff(now, 'days', true);
11380
+ return diff < -6 ? 'sameElse' :
11381
+ diff < -1 ? 'lastWeek' :
11382
+ diff < 0 ? 'lastDay' :
11383
+ diff < 1 ? 'sameDay' :
11384
+ diff < 2 ? 'nextDay' :
11385
+ diff < 7 ? 'nextWeek' : 'sameElse';
11386
+ }
11387
+
11388
+ function calendar$1 (time, formats) {
11389
+ // We want to compare the start of today, vs this.
11390
+ // Getting start-of-today depends on whether we're local/utc/offset or not.
11391
+ var now = time || createLocal(),
11392
+ sod = cloneWithOffset(now, this).startOf('day'),
11393
+ format = hooks.calendarFormat(this, sod) || 'sameElse';
11394
+
11395
+ var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
11396
+
11397
+ return this.format(output || this.localeData().calendar(format, this, createLocal(now)));
11398
+ }
11399
+
11400
+ function clone () {
11401
+ return new Moment(this);
11402
+ }
11403
+
11404
+ function isAfter (input, units) {
11405
+ var localInput = isMoment(input) ? input : createLocal(input);
11406
+ if (!(this.isValid() && localInput.isValid())) {
11407
+ return false;
11408
+ }
11409
+ units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
11410
+ if (units === 'millisecond') {
11411
+ return this.valueOf() > localInput.valueOf();
11412
+ } else {
11413
+ return localInput.valueOf() < this.clone().startOf(units).valueOf();
11414
+ }
11415
+ }
11416
+
11417
+ function isBefore (input, units) {
11418
+ var localInput = isMoment(input) ? input : createLocal(input);
11419
+ if (!(this.isValid() && localInput.isValid())) {
11420
+ return false;
11421
+ }
11422
+ units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
11423
+ if (units === 'millisecond') {
11424
+ return this.valueOf() < localInput.valueOf();
11425
+ } else {
11426
+ return this.clone().endOf(units).valueOf() < localInput.valueOf();
11427
+ }
11428
+ }
11429
+
11430
+ function isBetween (from, to, units, inclusivity) {
11431
+ inclusivity = inclusivity || '()';
11432
+ return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&
11433
+ (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));
11434
+ }
11435
+
11436
+ function isSame (input, units) {
11437
+ var localInput = isMoment(input) ? input : createLocal(input),
11438
+ inputMs;
11439
+ if (!(this.isValid() && localInput.isValid())) {
11440
+ return false;
11441
+ }
11442
+ units = normalizeUnits(units || 'millisecond');
11443
+ if (units === 'millisecond') {
11444
+ return this.valueOf() === localInput.valueOf();
11445
+ } else {
11446
+ inputMs = localInput.valueOf();
11447
+ return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
11448
+ }
11449
+ }
11450
+
11451
+ function isSameOrAfter (input, units) {
11452
+ return this.isSame(input, units) || this.isAfter(input,units);
11453
+ }
11454
+
11455
+ function isSameOrBefore (input, units) {
11456
+ return this.isSame(input, units) || this.isBefore(input,units);
11457
+ }
11458
+
11459
+ function diff (input, units, asFloat) {
11460
+ var that,
11461
+ zoneDelta,
11462
+ delta, output;
11463
+
11464
+ if (!this.isValid()) {
11465
+ return NaN;
11466
+ }
11467
+
11468
+ that = cloneWithOffset(input, this);
11469
+
11470
+ if (!that.isValid()) {
11471
+ return NaN;
11472
+ }
11473
+
11474
+ zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
11475
+
11476
+ units = normalizeUnits(units);
11477
+
11478
+ switch (units) {
11479
+ case 'year': output = monthDiff(this, that) / 12; break;
11480
+ case 'month': output = monthDiff(this, that); break;
11481
+ case 'quarter': output = monthDiff(this, that) / 3; break;
11482
+ case 'second': output = (this - that) / 1e3; break; // 1000
11483
+ case 'minute': output = (this - that) / 6e4; break; // 1000 * 60
11484
+ case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60
11485
+ case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst
11486
+ case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst
11487
+ default: output = this - that;
11488
+ }
11489
+
11490
+ return asFloat ? output : absFloor(output);
11491
+ }
11492
+
11493
+ function monthDiff (a, b) {
11494
+ // difference in months
11495
+ var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
11496
+ // b is in (anchor - 1 month, anchor + 1 month)
11497
+ anchor = a.clone().add(wholeMonthDiff, 'months'),
11498
+ anchor2, adjust;
11499
+
11500
+ if (b - anchor < 0) {
11501
+ anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
11502
+ // linear across the month
11503
+ adjust = (b - anchor) / (anchor - anchor2);
11504
+ } else {
11505
+ anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
11506
+ // linear across the month
11507
+ adjust = (b - anchor) / (anchor2 - anchor);
11508
+ }
11509
+
11510
+ //check for negative zero, return zero if negative zero
11511
+ return -(wholeMonthDiff + adjust) || 0;
11512
+ }
11513
+
11514
+ hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
11515
+ hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
11516
+
11517
+ function toString () {
11518
+ return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
11519
+ }
11520
+
11521
+ function toISOString(keepOffset) {
11522
+ if (!this.isValid()) {
11523
+ return null;
11524
+ }
11525
+ var utc = keepOffset !== true;
11526
+ var m = utc ? this.clone().utc() : this;
11527
+ if (m.year() < 0 || m.year() > 9999) {
11528
+ return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');
11529
+ }
11530
+ if (isFunction(Date.prototype.toISOString)) {
11531
+ // native implementation is ~50x faster, use it when we can
11532
+ if (utc) {
11533
+ return this.toDate().toISOString();
11534
+ } else {
11535
+ return new Date(this._d.valueOf()).toISOString().replace('Z', formatMoment(m, 'Z'));
11536
+ }
11537
+ }
11538
+ return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');
11539
+ }
11540
+
11541
+ /**
11542
+ * Return a human readable representation of a moment that can
11543
+ * also be evaluated to get a new moment which is the same
11544
+ *
11545
+ * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
11546
+ */
11547
+ function inspect () {
11548
+ if (!this.isValid()) {
11549
+ return 'moment.invalid(/* ' + this._i + ' */)';
11550
+ }
11551
+ var func = 'moment';
11552
+ var zone = '';
11553
+ if (!this.isLocal()) {
11554
+ func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
11555
+ zone = 'Z';
11556
+ }
11557
+ var prefix = '[' + func + '("]';
11558
+ var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
11559
+ var datetime = '-MM-DD[T]HH:mm:ss.SSS';
11560
+ var suffix = zone + '[")]';
11561
+
11562
+ return this.format(prefix + year + datetime + suffix);
11563
+ }
11564
+
11565
+ function format (inputString) {
11566
+ if (!inputString) {
11567
+ inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
11568
+ }
11569
+ var output = formatMoment(this, inputString);
11570
+ return this.localeData().postformat(output);
11571
+ }
11572
+
11573
+ function from (time, withoutSuffix) {
11574
+ if (this.isValid() &&
11575
+ ((isMoment(time) && time.isValid()) ||
11576
+ createLocal(time).isValid())) {
11577
+ return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
11578
+ } else {
11579
+ return this.localeData().invalidDate();
11580
+ }
11581
+ }
11582
+
11583
+ function fromNow (withoutSuffix) {
11584
+ return this.from(createLocal(), withoutSuffix);
11585
+ }
11586
+
11587
+ function to (time, withoutSuffix) {
11588
+ if (this.isValid() &&
11589
+ ((isMoment(time) && time.isValid()) ||
11590
+ createLocal(time).isValid())) {
11591
+ return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
11592
+ } else {
11593
+ return this.localeData().invalidDate();
11594
+ }
11595
+ }
11596
+
11597
+ function toNow (withoutSuffix) {
11598
+ return this.to(createLocal(), withoutSuffix);
11599
+ }
11600
+
11601
+ // If passed a locale key, it will set the locale for this
11602
+ // instance. Otherwise, it will return the locale configuration
11603
+ // variables for this instance.
11604
+ function locale (key) {
11605
+ var newLocaleData;
11606
+
11607
+ if (key === undefined) {
11608
+ return this._locale._abbr;
11609
+ } else {
11610
+ newLocaleData = getLocale(key);
11611
+ if (newLocaleData != null) {
11612
+ this._locale = newLocaleData;
11613
+ }
11614
+ return this;
11615
+ }
11616
+ }
11617
+
11618
+ var lang = deprecate(
11619
+ 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
11620
+ function (key) {
11621
+ if (key === undefined) {
11622
+ return this.localeData();
11623
+ } else {
11624
+ return this.locale(key);
11625
+ }
11626
+ }
11627
+ );
11628
+
11629
+ function localeData () {
11630
+ return this._locale;
11631
+ }
11632
+
11633
+ function startOf (units) {
11634
+ units = normalizeUnits(units);
11635
+ // the following switch intentionally omits break keywords
11636
+ // to utilize falling through the cases.
11637
+ switch (units) {
11638
+ case 'year':
11639
+ this.month(0);
11640
+ /* falls through */
11641
+ case 'quarter':
11642
+ case 'month':
11643
+ this.date(1);
11644
+ /* falls through */
11645
+ case 'week':
11646
+ case 'isoWeek':
11647
+ case 'day':
11648
+ case 'date':
11649
+ this.hours(0);
11650
+ /* falls through */
11651
+ case 'hour':
11652
+ this.minutes(0);
11653
+ /* falls through */
11654
+ case 'minute':
11655
+ this.seconds(0);
11656
+ /* falls through */
11657
+ case 'second':
11658
+ this.milliseconds(0);
11659
+ }
11660
+
11661
+ // weeks are a special case
11662
+ if (units === 'week') {
11663
+ this.weekday(0);
11664
+ }
11665
+ if (units === 'isoWeek') {
11666
+ this.isoWeekday(1);
11667
+ }
11668
+
11669
+ // quarters are also special
11670
+ if (units === 'quarter') {
11671
+ this.month(Math.floor(this.month() / 3) * 3);
11672
+ }
11673
+
11674
+ return this;
11675
+ }
11676
+
11677
+ function endOf (units) {
11678
+ units = normalizeUnits(units);
11679
+ if (units === undefined || units === 'millisecond') {
11680
+ return this;
11681
+ }
11682
+
11683
+ // 'date' is an alias for 'day', so it should be considered as such.
11684
+ if (units === 'date') {
11685
+ units = 'day';
11686
+ }
11687
+
11688
+ return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
11689
+ }
11690
+
11691
+ function valueOf () {
11692
+ return this._d.valueOf() - ((this._offset || 0) * 60000);
11693
+ }
11694
+
11695
+ function unix () {
11696
+ return Math.floor(this.valueOf() / 1000);
11697
+ }
11698
+
11699
+ function toDate () {
11700
+ return new Date(this.valueOf());
11701
+ }
11702
+
11703
+ function toArray () {
11704
+ var m = this;
11705
+ return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
11706
+ }
11707
+
11708
+ function toObject () {
11709
+ var m = this;
11710
+ return {
11711
+ years: m.year(),
11712
+ months: m.month(),
11713
+ date: m.date(),
11714
+ hours: m.hours(),
11715
+ minutes: m.minutes(),
11716
+ seconds: m.seconds(),
11717
+ milliseconds: m.milliseconds()
11718
+ };
11719
+ }
11720
+
11721
+ function toJSON () {
11722
+ // new Date(NaN).toJSON() === null
11723
+ return this.isValid() ? this.toISOString() : null;
11724
+ }
11725
+
11726
+ function isValid$2 () {
11727
+ return isValid(this);
11728
+ }
11729
+
11730
+ function parsingFlags () {
11731
+ return extend({}, getParsingFlags(this));
11732
+ }
11733
+
11734
+ function invalidAt () {
11735
+ return getParsingFlags(this).overflow;
11736
+ }
11737
+
11738
+ function creationData() {
11739
+ return {
11740
+ input: this._i,
11741
+ format: this._f,
11742
+ locale: this._locale,
11743
+ isUTC: this._isUTC,
11744
+ strict: this._strict
11745
+ };
11746
+ }
11747
+
11748
+ // FORMATTING
11749
+
11750
+ addFormatToken(0, ['gg', 2], 0, function () {
11751
+ return this.weekYear() % 100;
11752
+ });
11753
+
11754
+ addFormatToken(0, ['GG', 2], 0, function () {
11755
+ return this.isoWeekYear() % 100;
11756
+ });
11757
+
11758
+ function addWeekYearFormatToken (token, getter) {
11759
+ addFormatToken(0, [token, token.length], 0, getter);
11760
+ }
11761
+
11762
+ addWeekYearFormatToken('gggg', 'weekYear');
11763
+ addWeekYearFormatToken('ggggg', 'weekYear');
11764
+ addWeekYearFormatToken('GGGG', 'isoWeekYear');
11765
+ addWeekYearFormatToken('GGGGG', 'isoWeekYear');
11766
+
11767
+ // ALIASES
11768
+
11769
+ addUnitAlias('weekYear', 'gg');
11770
+ addUnitAlias('isoWeekYear', 'GG');
11771
+
11772
+ // PRIORITY
11773
+
11774
+ addUnitPriority('weekYear', 1);
11775
+ addUnitPriority('isoWeekYear', 1);
11776
+
11777
+
11778
+ // PARSING
11779
+
11780
+ addRegexToken('G', matchSigned);
11781
+ addRegexToken('g', matchSigned);
11782
+ addRegexToken('GG', match1to2, match2);
11783
+ addRegexToken('gg', match1to2, match2);
11784
+ addRegexToken('GGGG', match1to4, match4);
11785
+ addRegexToken('gggg', match1to4, match4);
11786
+ addRegexToken('GGGGG', match1to6, match6);
11787
+ addRegexToken('ggggg', match1to6, match6);
11788
+
11789
+ addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
11790
+ week[token.substr(0, 2)] = toInt(input);
11791
+ });
11792
+
11793
+ addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
11794
+ week[token] = hooks.parseTwoDigitYear(input);
11795
+ });
11796
+
11797
+ // MOMENTS
11798
+
11799
+ function getSetWeekYear (input) {
11800
+ return getSetWeekYearHelper.call(this,
11801
+ input,
11802
+ this.week(),
11803
+ this.weekday(),
11804
+ this.localeData()._week.dow,
11805
+ this.localeData()._week.doy);
11806
+ }
11807
+
11808
+ function getSetISOWeekYear (input) {
11809
+ return getSetWeekYearHelper.call(this,
11810
+ input, this.isoWeek(), this.isoWeekday(), 1, 4);
11811
+ }
11812
+
11813
+ function getISOWeeksInYear () {
11814
+ return weeksInYear(this.year(), 1, 4);
11815
+ }
11816
+
11817
+ function getWeeksInYear () {
11818
+ var weekInfo = this.localeData()._week;
11819
+ return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
11820
+ }
11821
+
11822
+ function getSetWeekYearHelper(input, week, weekday, dow, doy) {
11823
+ var weeksTarget;
11824
+ if (input == null) {
11825
+ return weekOfYear(this, dow, doy).year;
11826
+ } else {
11827
+ weeksTarget = weeksInYear(input, dow, doy);
11828
+ if (week > weeksTarget) {
11829
+ week = weeksTarget;
11830
+ }
11831
+ return setWeekAll.call(this, input, week, weekday, dow, doy);
11832
+ }
11833
+ }
11834
+
11835
+ function setWeekAll(weekYear, week, weekday, dow, doy) {
11836
+ var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
11837
+ date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
11838
+
11839
+ this.year(date.getUTCFullYear());
11840
+ this.month(date.getUTCMonth());
11841
+ this.date(date.getUTCDate());
11842
+ return this;
11843
+ }
11844
+
11845
+ // FORMATTING
11846
+
11847
+ addFormatToken('Q', 0, 'Qo', 'quarter');
11848
+
11849
+ // ALIASES
11850
+
11851
+ addUnitAlias('quarter', 'Q');
11852
+
11853
+ // PRIORITY
11854
+
11855
+ addUnitPriority('quarter', 7);
11856
+
11857
+ // PARSING
11858
+
11859
+ addRegexToken('Q', match1);
11860
+ addParseToken('Q', function (input, array) {
11861
+ array[MONTH] = (toInt(input) - 1) * 3;
11862
+ });
11863
+
11864
+ // MOMENTS
11865
+
11866
+ function getSetQuarter (input) {
11867
+ return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
11868
+ }
11869
+
11870
+ // FORMATTING
11871
+
11872
+ addFormatToken('D', ['DD', 2], 'Do', 'date');
11873
+
11874
+ // ALIASES
11875
+
11876
+ addUnitAlias('date', 'D');
11877
+
11878
+ // PRIOROITY
11879
+ addUnitPriority('date', 9);
11880
+
11881
+ // PARSING
11882
+
11883
+ addRegexToken('D', match1to2);
11884
+ addRegexToken('DD', match1to2, match2);
11885
+ addRegexToken('Do', function (isStrict, locale) {
11886
+ // TODO: Remove "ordinalParse" fallback in next major release.
11887
+ return isStrict ?
11888
+ (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :
11889
+ locale._dayOfMonthOrdinalParseLenient;
11890
+ });
11891
+
11892
+ addParseToken(['D', 'DD'], DATE);
11893
+ addParseToken('Do', function (input, array) {
11894
+ array[DATE] = toInt(input.match(match1to2)[0]);
11895
+ });
11896
+
11897
+ // MOMENTS
11898
+
11899
+ var getSetDayOfMonth = makeGetSet('Date', true);
11900
+
11901
+ // FORMATTING
11902
+
11903
+ addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
11904
+
11905
+ // ALIASES
11906
+
11907
+ addUnitAlias('dayOfYear', 'DDD');
11908
+
11909
+ // PRIORITY
11910
+ addUnitPriority('dayOfYear', 4);
11911
+
11912
+ // PARSING
11913
+
11914
+ addRegexToken('DDD', match1to3);
11915
+ addRegexToken('DDDD', match3);
11916
+ addParseToken(['DDD', 'DDDD'], function (input, array, config) {
11917
+ config._dayOfYear = toInt(input);
11918
+ });
11919
+
11920
+ // HELPERS
11921
+
11922
+ // MOMENTS
11923
+
11924
+ function getSetDayOfYear (input) {
11925
+ var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
11926
+ return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
11927
+ }
11928
+
11929
+ // FORMATTING
11930
+
11931
+ addFormatToken('m', ['mm', 2], 0, 'minute');
11932
+
11933
+ // ALIASES
11934
+
11935
+ addUnitAlias('minute', 'm');
11936
+
11937
+ // PRIORITY
11938
+
11939
+ addUnitPriority('minute', 14);
11940
+
11941
+ // PARSING
11942
+
11943
+ addRegexToken('m', match1to2);
11944
+ addRegexToken('mm', match1to2, match2);
11945
+ addParseToken(['m', 'mm'], MINUTE);
11946
+
11947
+ // MOMENTS
11948
+
11949
+ var getSetMinute = makeGetSet('Minutes', false);
11950
+
11951
+ // FORMATTING
11952
+
11953
+ addFormatToken('s', ['ss', 2], 0, 'second');
11954
+
11955
+ // ALIASES
11956
+
11957
+ addUnitAlias('second', 's');
11958
+
11959
+ // PRIORITY
11960
+
11961
+ addUnitPriority('second', 15);
11962
+
11963
+ // PARSING
11964
+
11965
+ addRegexToken('s', match1to2);
11966
+ addRegexToken('ss', match1to2, match2);
11967
+ addParseToken(['s', 'ss'], SECOND);
11968
+
11969
+ // MOMENTS
11970
+
11971
+ var getSetSecond = makeGetSet('Seconds', false);
11972
+
11973
+ // FORMATTING
11974
+
11975
+ addFormatToken('S', 0, 0, function () {
11976
+ return ~~(this.millisecond() / 100);
11977
+ });
11978
+
11979
+ addFormatToken(0, ['SS', 2], 0, function () {
11980
+ return ~~(this.millisecond() / 10);
11981
+ });
11982
+
11983
+ addFormatToken(0, ['SSS', 3], 0, 'millisecond');
11984
+ addFormatToken(0, ['SSSS', 4], 0, function () {
11985
+ return this.millisecond() * 10;
11986
+ });
11987
+ addFormatToken(0, ['SSSSS', 5], 0, function () {
11988
+ return this.millisecond() * 100;
11989
+ });
11990
+ addFormatToken(0, ['SSSSSS', 6], 0, function () {
11991
+ return this.millisecond() * 1000;
11992
+ });
11993
+ addFormatToken(0, ['SSSSSSS', 7], 0, function () {
11994
+ return this.millisecond() * 10000;
11995
+ });
11996
+ addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
11997
+ return this.millisecond() * 100000;
11998
+ });
11999
+ addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
12000
+ return this.millisecond() * 1000000;
12001
+ });
12002
+
12003
+
12004
+ // ALIASES
12005
+
12006
+ addUnitAlias('millisecond', 'ms');
12007
+
12008
+ // PRIORITY
12009
+
12010
+ addUnitPriority('millisecond', 16);
12011
+
12012
+ // PARSING
12013
+
12014
+ addRegexToken('S', match1to3, match1);
12015
+ addRegexToken('SS', match1to3, match2);
12016
+ addRegexToken('SSS', match1to3, match3);
12017
+
12018
+ var token;
12019
+ for (token = 'SSSS'; token.length <= 9; token += 'S') {
12020
+ addRegexToken(token, matchUnsigned);
12021
+ }
12022
+
12023
+ function parseMs(input, array) {
12024
+ array[MILLISECOND] = toInt(('0.' + input) * 1000);
12025
+ }
12026
+
12027
+ for (token = 'S'; token.length <= 9; token += 'S') {
12028
+ addParseToken(token, parseMs);
12029
+ }
12030
+ // MOMENTS
12031
+
12032
+ var getSetMillisecond = makeGetSet('Milliseconds', false);
12033
+
12034
+ // FORMATTING
12035
+
12036
+ addFormatToken('z', 0, 0, 'zoneAbbr');
12037
+ addFormatToken('zz', 0, 0, 'zoneName');
12038
+
12039
+ // MOMENTS
12040
+
12041
+ function getZoneAbbr () {
12042
+ return this._isUTC ? 'UTC' : '';
12043
+ }
12044
+
12045
+ function getZoneName () {
12046
+ return this._isUTC ? 'Coordinated Universal Time' : '';
12047
+ }
12048
+
12049
+ var proto = Moment.prototype;
12050
+
12051
+ proto.add = add;
12052
+ proto.calendar = calendar$1;
12053
+ proto.clone = clone;
12054
+ proto.diff = diff;
12055
+ proto.endOf = endOf;
12056
+ proto.format = format;
12057
+ proto.from = from;
12058
+ proto.fromNow = fromNow;
12059
+ proto.to = to;
12060
+ proto.toNow = toNow;
12061
+ proto.get = stringGet;
12062
+ proto.invalidAt = invalidAt;
12063
+ proto.isAfter = isAfter;
12064
+ proto.isBefore = isBefore;
12065
+ proto.isBetween = isBetween;
12066
+ proto.isSame = isSame;
12067
+ proto.isSameOrAfter = isSameOrAfter;
12068
+ proto.isSameOrBefore = isSameOrBefore;
12069
+ proto.isValid = isValid$2;
12070
+ proto.lang = lang;
12071
+ proto.locale = locale;
12072
+ proto.localeData = localeData;
12073
+ proto.max = prototypeMax;
12074
+ proto.min = prototypeMin;
12075
+ proto.parsingFlags = parsingFlags;
12076
+ proto.set = stringSet;
12077
+ proto.startOf = startOf;
12078
+ proto.subtract = subtract;
12079
+ proto.toArray = toArray;
12080
+ proto.toObject = toObject;
12081
+ proto.toDate = toDate;
12082
+ proto.toISOString = toISOString;
12083
+ proto.inspect = inspect;
12084
+ proto.toJSON = toJSON;
12085
+ proto.toString = toString;
12086
+ proto.unix = unix;
12087
+ proto.valueOf = valueOf;
12088
+ proto.creationData = creationData;
12089
+
12090
+ // Year
12091
+ proto.year = getSetYear;
12092
+ proto.isLeapYear = getIsLeapYear;
12093
+
12094
+ // Week Year
12095
+ proto.weekYear = getSetWeekYear;
12096
+ proto.isoWeekYear = getSetISOWeekYear;
12097
+
12098
+ // Quarter
12099
+ proto.quarter = proto.quarters = getSetQuarter;
12100
+
12101
+ // Month
12102
+ proto.month = getSetMonth;
12103
+ proto.daysInMonth = getDaysInMonth;
12104
+
12105
+ // Week
12106
+ proto.week = proto.weeks = getSetWeek;
12107
+ proto.isoWeek = proto.isoWeeks = getSetISOWeek;
12108
+ proto.weeksInYear = getWeeksInYear;
12109
+ proto.isoWeeksInYear = getISOWeeksInYear;
12110
+
12111
+ // Day
12112
+ proto.date = getSetDayOfMonth;
12113
+ proto.day = proto.days = getSetDayOfWeek;
12114
+ proto.weekday = getSetLocaleDayOfWeek;
12115
+ proto.isoWeekday = getSetISODayOfWeek;
12116
+ proto.dayOfYear = getSetDayOfYear;
12117
+
12118
+ // Hour
12119
+ proto.hour = proto.hours = getSetHour;
12120
+
12121
+ // Minute
12122
+ proto.minute = proto.minutes = getSetMinute;
12123
+
12124
+ // Second
12125
+ proto.second = proto.seconds = getSetSecond;
12126
+
12127
+ // Millisecond
12128
+ proto.millisecond = proto.milliseconds = getSetMillisecond;
12129
+
12130
+ // Offset
12131
+ proto.utcOffset = getSetOffset;
12132
+ proto.utc = setOffsetToUTC;
12133
+ proto.local = setOffsetToLocal;
12134
+ proto.parseZone = setOffsetToParsedOffset;
12135
+ proto.hasAlignedHourOffset = hasAlignedHourOffset;
12136
+ proto.isDST = isDaylightSavingTime;
12137
+ proto.isLocal = isLocal;
12138
+ proto.isUtcOffset = isUtcOffset;
12139
+ proto.isUtc = isUtc;
12140
+ proto.isUTC = isUtc;
12141
+
12142
+ // Timezone
12143
+ proto.zoneAbbr = getZoneAbbr;
12144
+ proto.zoneName = getZoneName;
12145
+
12146
+ // Deprecations
12147
+ proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
12148
+ proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
12149
+ proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
12150
+ proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);
12151
+ proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);
12152
+
12153
+ function createUnix (input) {
12154
+ return createLocal(input * 1000);
12155
+ }
12156
+
12157
+ function createInZone () {
12158
+ return createLocal.apply(null, arguments).parseZone();
12159
+ }
12160
+
12161
+ function preParsePostFormat (string) {
12162
+ return string;
12163
+ }
12164
+
12165
+ var proto$1 = Locale.prototype;
12166
+
12167
+ proto$1.calendar = calendar;
12168
+ proto$1.longDateFormat = longDateFormat;
12169
+ proto$1.invalidDate = invalidDate;
12170
+ proto$1.ordinal = ordinal;
12171
+ proto$1.preparse = preParsePostFormat;
12172
+ proto$1.postformat = preParsePostFormat;
12173
+ proto$1.relativeTime = relativeTime;
12174
+ proto$1.pastFuture = pastFuture;
12175
+ proto$1.set = set;
12176
+
12177
+ // Month
12178
+ proto$1.months = localeMonths;
12179
+ proto$1.monthsShort = localeMonthsShort;
12180
+ proto$1.monthsParse = localeMonthsParse;
12181
+ proto$1.monthsRegex = monthsRegex;
12182
+ proto$1.monthsShortRegex = monthsShortRegex;
12183
+
12184
+ // Week
12185
+ proto$1.week = localeWeek;
12186
+ proto$1.firstDayOfYear = localeFirstDayOfYear;
12187
+ proto$1.firstDayOfWeek = localeFirstDayOfWeek;
12188
+
12189
+ // Day of Week
12190
+ proto$1.weekdays = localeWeekdays;
12191
+ proto$1.weekdaysMin = localeWeekdaysMin;
12192
+ proto$1.weekdaysShort = localeWeekdaysShort;
12193
+ proto$1.weekdaysParse = localeWeekdaysParse;
12194
+
12195
+ proto$1.weekdaysRegex = weekdaysRegex;
12196
+ proto$1.weekdaysShortRegex = weekdaysShortRegex;
12197
+ proto$1.weekdaysMinRegex = weekdaysMinRegex;
12198
+
12199
+ // Hours
12200
+ proto$1.isPM = localeIsPM;
12201
+ proto$1.meridiem = localeMeridiem;
12202
+
12203
+ function get$1 (format, index, field, setter) {
12204
+ var locale = getLocale();
12205
+ var utc = createUTC().set(setter, index);
12206
+ return locale[field](utc, format);
12207
+ }
12208
+
12209
+ function listMonthsImpl (format, index, field) {
12210
+ if (isNumber(format)) {
12211
+ index = format;
12212
+ format = undefined;
12213
+ }
12214
+
12215
+ format = format || '';
12216
+
12217
+ if (index != null) {
12218
+ return get$1(format, index, field, 'month');
12219
+ }
12220
+
12221
+ var i;
12222
+ var out = [];
12223
+ for (i = 0; i < 12; i++) {
12224
+ out[i] = get$1(format, i, field, 'month');
12225
+ }
12226
+ return out;
12227
+ }
12228
+
12229
+ // ()
12230
+ // (5)
12231
+ // (fmt, 5)
12232
+ // (fmt)
12233
+ // (true)
12234
+ // (true, 5)
12235
+ // (true, fmt, 5)
12236
+ // (true, fmt)
12237
+ function listWeekdaysImpl (localeSorted, format, index, field) {
12238
+ if (typeof localeSorted === 'boolean') {
12239
+ if (isNumber(format)) {
12240
+ index = format;
12241
+ format = undefined;
12242
+ }
12243
+
12244
+ format = format || '';
12245
+ } else {
12246
+ format = localeSorted;
12247
+ index = format;
12248
+ localeSorted = false;
12249
+
12250
+ if (isNumber(format)) {
12251
+ index = format;
12252
+ format = undefined;
12253
+ }
12254
+
12255
+ format = format || '';
12256
+ }
12257
+
12258
+ var locale = getLocale(),
12259
+ shift = localeSorted ? locale._week.dow : 0;
12260
+
12261
+ if (index != null) {
12262
+ return get$1(format, (index + shift) % 7, field, 'day');
12263
+ }
12264
+
12265
+ var i;
12266
+ var out = [];
12267
+ for (i = 0; i < 7; i++) {
12268
+ out[i] = get$1(format, (i + shift) % 7, field, 'day');
12269
+ }
12270
+ return out;
12271
+ }
12272
+
12273
+ function listMonths (format, index) {
12274
+ return listMonthsImpl(format, index, 'months');
12275
+ }
12276
+
12277
+ function listMonthsShort (format, index) {
12278
+ return listMonthsImpl(format, index, 'monthsShort');
12279
+ }
12280
+
12281
+ function listWeekdays (localeSorted, format, index) {
12282
+ return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
12283
+ }
12284
+
12285
+ function listWeekdaysShort (localeSorted, format, index) {
12286
+ return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
12287
+ }
12288
+
12289
+ function listWeekdaysMin (localeSorted, format, index) {
12290
+ return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
12291
+ }
12292
+
12293
+ getSetGlobalLocale('en', {
12294
+ dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
12295
+ ordinal : function (number) {
12296
+ var b = number % 10,
12297
+ output = (toInt(number % 100 / 10) === 1) ? 'th' :
12298
+ (b === 1) ? 'st' :
12299
+ (b === 2) ? 'nd' :
12300
+ (b === 3) ? 'rd' : 'th';
12301
+ return number + output;
12302
+ }
12303
+ });
12304
+
12305
+ // Side effect imports
12306
+ hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);
12307
+ hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);
12308
+
12309
+ var mathAbs = Math.abs;
12310
+
12311
+ function abs () {
12312
+ var data = this._data;
12313
+
12314
+ this._milliseconds = mathAbs(this._milliseconds);
12315
+ this._days = mathAbs(this._days);
12316
+ this._months = mathAbs(this._months);
12317
+
12318
+ data.milliseconds = mathAbs(data.milliseconds);
12319
+ data.seconds = mathAbs(data.seconds);
12320
+ data.minutes = mathAbs(data.minutes);
12321
+ data.hours = mathAbs(data.hours);
12322
+ data.months = mathAbs(data.months);
12323
+ data.years = mathAbs(data.years);
12324
+
12325
+ return this;
12326
+ }
12327
+
12328
+ function addSubtract$1 (duration, input, value, direction) {
12329
+ var other = createDuration(input, value);
12330
+
12331
+ duration._milliseconds += direction * other._milliseconds;
12332
+ duration._days += direction * other._days;
12333
+ duration._months += direction * other._months;
12334
+
12335
+ return duration._bubble();
12336
+ }
12337
+
12338
+ // supports only 2.0-style add(1, 's') or add(duration)
12339
+ function add$1 (input, value) {
12340
+ return addSubtract$1(this, input, value, 1);
12341
+ }
12342
+
12343
+ // supports only 2.0-style subtract(1, 's') or subtract(duration)
12344
+ function subtract$1 (input, value) {
12345
+ return addSubtract$1(this, input, value, -1);
12346
+ }
12347
+
12348
+ function absCeil (number) {
12349
+ if (number < 0) {
12350
+ return Math.floor(number);
12351
+ } else {
12352
+ return Math.ceil(number);
12353
+ }
12354
+ }
12355
+
12356
+ function bubble () {
12357
+ var milliseconds = this._milliseconds;
12358
+ var days = this._days;
12359
+ var months = this._months;
12360
+ var data = this._data;
12361
+ var seconds, minutes, hours, years, monthsFromDays;
12362
+
12363
+ // if we have a mix of positive and negative values, bubble down first
12364
+ // check: https://github.com/moment/moment/issues/2166
12365
+ if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
12366
+ (milliseconds <= 0 && days <= 0 && months <= 0))) {
12367
+ milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
12368
+ days = 0;
12369
+ months = 0;
12370
+ }
12371
+
12372
+ // The following code bubbles up values, see the tests for
12373
+ // examples of what that means.
12374
+ data.milliseconds = milliseconds % 1000;
12375
+
12376
+ seconds = absFloor(milliseconds / 1000);
12377
+ data.seconds = seconds % 60;
12378
+
12379
+ minutes = absFloor(seconds / 60);
12380
+ data.minutes = minutes % 60;
12381
+
12382
+ hours = absFloor(minutes / 60);
12383
+ data.hours = hours % 24;
12384
+
12385
+ days += absFloor(hours / 24);
12386
+
12387
+ // convert days to months
12388
+ monthsFromDays = absFloor(daysToMonths(days));
12389
+ months += monthsFromDays;
12390
+ days -= absCeil(monthsToDays(monthsFromDays));
12391
+
12392
+ // 12 months -> 1 year
12393
+ years = absFloor(months / 12);
12394
+ months %= 12;
12395
+
12396
+ data.days = days;
12397
+ data.months = months;
12398
+ data.years = years;
12399
+
12400
+ return this;
12401
+ }
12402
+
12403
+ function daysToMonths (days) {
12404
+ // 400 years have 146097 days (taking into account leap year rules)
12405
+ // 400 years have 12 months === 4800
12406
+ return days * 4800 / 146097;
12407
+ }
12408
+
12409
+ function monthsToDays (months) {
12410
+ // the reverse of daysToMonths
12411
+ return months * 146097 / 4800;
12412
+ }
12413
+
12414
+ function as (units) {
12415
+ if (!this.isValid()) {
12416
+ return NaN;
12417
+ }
12418
+ var days;
12419
+ var months;
12420
+ var milliseconds = this._milliseconds;
12421
+
12422
+ units = normalizeUnits(units);
12423
+
12424
+ if (units === 'month' || units === 'year') {
12425
+ days = this._days + milliseconds / 864e5;
12426
+ months = this._months + daysToMonths(days);
12427
+ return units === 'month' ? months : months / 12;
12428
+ } else {
12429
+ // handle milliseconds separately because of floating point math errors (issue #1867)
12430
+ days = this._days + Math.round(monthsToDays(this._months));
12431
+ switch (units) {
12432
+ case 'week' : return days / 7 + milliseconds / 6048e5;
12433
+ case 'day' : return days + milliseconds / 864e5;
12434
+ case 'hour' : return days * 24 + milliseconds / 36e5;
12435
+ case 'minute' : return days * 1440 + milliseconds / 6e4;
12436
+ case 'second' : return days * 86400 + milliseconds / 1000;
12437
+ // Math.floor prevents floating point math errors here
12438
+ case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
12439
+ default: throw new Error('Unknown unit ' + units);
12440
+ }
12441
+ }
12442
+ }
12443
+
12444
+ // TODO: Use this.as('ms')?
12445
+ function valueOf$1 () {
12446
+ if (!this.isValid()) {
12447
+ return NaN;
12448
+ }
12449
+ return (
12450
+ this._milliseconds +
12451
+ this._days * 864e5 +
12452
+ (this._months % 12) * 2592e6 +
12453
+ toInt(this._months / 12) * 31536e6
12454
+ );
12455
+ }
12456
+
12457
+ function makeAs (alias) {
12458
+ return function () {
12459
+ return this.as(alias);
12460
+ };
12461
+ }
12462
+
12463
+ var asMilliseconds = makeAs('ms');
12464
+ var asSeconds = makeAs('s');
12465
+ var asMinutes = makeAs('m');
12466
+ var asHours = makeAs('h');
12467
+ var asDays = makeAs('d');
12468
+ var asWeeks = makeAs('w');
12469
+ var asMonths = makeAs('M');
12470
+ var asYears = makeAs('y');
12471
+
12472
+ function clone$1 () {
12473
+ return createDuration(this);
12474
+ }
12475
+
12476
+ function get$2 (units) {
12477
+ units = normalizeUnits(units);
12478
+ return this.isValid() ? this[units + 's']() : NaN;
12479
+ }
12480
+
12481
+ function makeGetter(name) {
12482
+ return function () {
12483
+ return this.isValid() ? this._data[name] : NaN;
12484
+ };
12485
+ }
12486
+
12487
+ var milliseconds = makeGetter('milliseconds');
12488
+ var seconds = makeGetter('seconds');
12489
+ var minutes = makeGetter('minutes');
12490
+ var hours = makeGetter('hours');
12491
+ var days = makeGetter('days');
12492
+ var months = makeGetter('months');
12493
+ var years = makeGetter('years');
12494
+
12495
+ function weeks () {
12496
+ return absFloor(this.days() / 7);
12497
+ }
12498
+
12499
+ var round = Math.round;
12500
+ var thresholds = {
12501
+ ss: 44, // a few seconds to seconds
12502
+ s : 45, // seconds to minute
12503
+ m : 45, // minutes to hour
12504
+ h : 22, // hours to day
12505
+ d : 26, // days to month
12506
+ M : 11 // months to year
12507
+ };
12508
+
12509
+ // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
12510
+ function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
12511
+ return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
12512
+ }
12513
+
12514
+ function relativeTime$1 (posNegDuration, withoutSuffix, locale) {
12515
+ var duration = createDuration(posNegDuration).abs();
12516
+ var seconds = round(duration.as('s'));
12517
+ var minutes = round(duration.as('m'));
12518
+ var hours = round(duration.as('h'));
12519
+ var days = round(duration.as('d'));
12520
+ var months = round(duration.as('M'));
12521
+ var years = round(duration.as('y'));
12522
+
12523
+ var a = seconds <= thresholds.ss && ['s', seconds] ||
12524
+ seconds < thresholds.s && ['ss', seconds] ||
12525
+ minutes <= 1 && ['m'] ||
12526
+ minutes < thresholds.m && ['mm', minutes] ||
12527
+ hours <= 1 && ['h'] ||
12528
+ hours < thresholds.h && ['hh', hours] ||
12529
+ days <= 1 && ['d'] ||
12530
+ days < thresholds.d && ['dd', days] ||
12531
+ months <= 1 && ['M'] ||
12532
+ months < thresholds.M && ['MM', months] ||
12533
+ years <= 1 && ['y'] || ['yy', years];
12534
+
12535
+ a[2] = withoutSuffix;
12536
+ a[3] = +posNegDuration > 0;
12537
+ a[4] = locale;
12538
+ return substituteTimeAgo.apply(null, a);
12539
+ }
12540
+
12541
+ // This function allows you to set the rounding function for relative time strings
12542
+ function getSetRelativeTimeRounding (roundingFunction) {
12543
+ if (roundingFunction === undefined) {
12544
+ return round;
12545
+ }
12546
+ if (typeof(roundingFunction) === 'function') {
12547
+ round = roundingFunction;
12548
+ return true;
12549
+ }
12550
+ return false;
12551
+ }
12552
+
12553
+ // This function allows you to set a threshold for relative time strings
12554
+ function getSetRelativeTimeThreshold (threshold, limit) {
12555
+ if (thresholds[threshold] === undefined) {
12556
+ return false;
12557
+ }
12558
+ if (limit === undefined) {
12559
+ return thresholds[threshold];
12560
+ }
12561
+ thresholds[threshold] = limit;
12562
+ if (threshold === 's') {
12563
+ thresholds.ss = limit - 1;
12564
+ }
12565
+ return true;
12566
+ }
12567
+
12568
+ function humanize (withSuffix) {
12569
+ if (!this.isValid()) {
12570
+ return this.localeData().invalidDate();
12571
+ }
12572
+
12573
+ var locale = this.localeData();
12574
+ var output = relativeTime$1(this, !withSuffix, locale);
12575
+
12576
+ if (withSuffix) {
12577
+ output = locale.pastFuture(+this, output);
12578
+ }
12579
+
12580
+ return locale.postformat(output);
12581
+ }
12582
+
12583
+ var abs$1 = Math.abs;
12584
+
12585
+ function sign(x) {
12586
+ return ((x > 0) - (x < 0)) || +x;
12587
+ }
12588
+
12589
+ function toISOString$1() {
12590
+ // for ISO strings we do not use the normal bubbling rules:
12591
+ // * milliseconds bubble up until they become hours
12592
+ // * days do not bubble at all
12593
+ // * months bubble up until they become years
12594
+ // This is because there is no context-free conversion between hours and days
12595
+ // (think of clock changes)
12596
+ // and also not between days and months (28-31 days per month)
12597
+ if (!this.isValid()) {
12598
+ return this.localeData().invalidDate();
12599
+ }
12600
+
12601
+ var seconds = abs$1(this._milliseconds) / 1000;
12602
+ var days = abs$1(this._days);
12603
+ var months = abs$1(this._months);
12604
+ var minutes, hours, years;
12605
+
12606
+ // 3600 seconds -> 60 minutes -> 1 hour
12607
+ minutes = absFloor(seconds / 60);
12608
+ hours = absFloor(minutes / 60);
12609
+ seconds %= 60;
12610
+ minutes %= 60;
12611
+
12612
+ // 12 months -> 1 year
12613
+ years = absFloor(months / 12);
12614
+ months %= 12;
12615
+
12616
+
12617
+ // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
12618
+ var Y = years;
12619
+ var M = months;
12620
+ var D = days;
12621
+ var h = hours;
12622
+ var m = minutes;
12623
+ var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
12624
+ var total = this.asSeconds();
12625
+
12626
+ if (!total) {
12627
+ // this is the same as C#'s (Noda) and python (isodate)...
12628
+ // but not other JS (goog.date)
12629
+ return 'P0D';
12630
+ }
12631
+
12632
+ var totalSign = total < 0 ? '-' : '';
12633
+ var ymSign = sign(this._months) !== sign(total) ? '-' : '';
12634
+ var daysSign = sign(this._days) !== sign(total) ? '-' : '';
12635
+ var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
12636
+
12637
+ return totalSign + 'P' +
12638
+ (Y ? ymSign + Y + 'Y' : '') +
12639
+ (M ? ymSign + M + 'M' : '') +
12640
+ (D ? daysSign + D + 'D' : '') +
12641
+ ((h || m || s) ? 'T' : '') +
12642
+ (h ? hmsSign + h + 'H' : '') +
12643
+ (m ? hmsSign + m + 'M' : '') +
12644
+ (s ? hmsSign + s + 'S' : '');
12645
+ }
12646
+
12647
+ var proto$2 = Duration.prototype;
12648
+
12649
+ proto$2.isValid = isValid$1;
12650
+ proto$2.abs = abs;
12651
+ proto$2.add = add$1;
12652
+ proto$2.subtract = subtract$1;
12653
+ proto$2.as = as;
12654
+ proto$2.asMilliseconds = asMilliseconds;
12655
+ proto$2.asSeconds = asSeconds;
12656
+ proto$2.asMinutes = asMinutes;
12657
+ proto$2.asHours = asHours;
12658
+ proto$2.asDays = asDays;
12659
+ proto$2.asWeeks = asWeeks;
12660
+ proto$2.asMonths = asMonths;
12661
+ proto$2.asYears = asYears;
12662
+ proto$2.valueOf = valueOf$1;
12663
+ proto$2._bubble = bubble;
12664
+ proto$2.clone = clone$1;
12665
+ proto$2.get = get$2;
12666
+ proto$2.milliseconds = milliseconds;
12667
+ proto$2.seconds = seconds;
12668
+ proto$2.minutes = minutes;
12669
+ proto$2.hours = hours;
12670
+ proto$2.days = days;
12671
+ proto$2.weeks = weeks;
12672
+ proto$2.months = months;
12673
+ proto$2.years = years;
12674
+ proto$2.humanize = humanize;
12675
+ proto$2.toISOString = toISOString$1;
12676
+ proto$2.toString = toISOString$1;
12677
+ proto$2.toJSON = toISOString$1;
12678
+ proto$2.locale = locale;
12679
+ proto$2.localeData = localeData;
12680
+
12681
+ // Deprecations
12682
+ proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);
12683
+ proto$2.lang = lang;
12684
+
12685
+ // Side effect imports
12686
+
12687
+ // FORMATTING
12688
+
12689
+ addFormatToken('X', 0, 0, 'unix');
12690
+ addFormatToken('x', 0, 0, 'valueOf');
12691
+
12692
+ // PARSING
12693
+
12694
+ addRegexToken('x', matchSigned);
12695
+ addRegexToken('X', matchTimestamp);
12696
+ addParseToken('X', function (input, array, config) {
12697
+ config._d = new Date(parseFloat(input, 10) * 1000);
12698
+ });
12699
+ addParseToken('x', function (input, array, config) {
12700
+ config._d = new Date(toInt(input));
12701
+ });
12702
+
12703
+ // Side effect imports
12704
+
12705
+
12706
+ hooks.version = '2.20.1';
12707
+
12708
+ setHookCallback(createLocal);
12709
+
12710
+ hooks.fn = proto;
12711
+ hooks.min = min;
12712
+ hooks.max = max;
12713
+ hooks.now = now;
12714
+ hooks.utc = createUTC;
12715
+ hooks.unix = createUnix;
12716
+ hooks.months = listMonths;
12717
+ hooks.isDate = isDate;
12718
+ hooks.locale = getSetGlobalLocale;
12719
+ hooks.invalid = createInvalid;
12720
+ hooks.duration = createDuration;
12721
+ hooks.isMoment = isMoment;
12722
+ hooks.weekdays = listWeekdays;
12723
+ hooks.parseZone = createInZone;
12724
+ hooks.localeData = getLocale;
12725
+ hooks.isDuration = isDuration;
12726
+ hooks.monthsShort = listMonthsShort;
12727
+ hooks.weekdaysMin = listWeekdaysMin;
12728
+ hooks.defineLocale = defineLocale;
12729
+ hooks.updateLocale = updateLocale;
12730
+ hooks.locales = listLocales;
12731
+ hooks.weekdaysShort = listWeekdaysShort;
12732
+ hooks.normalizeUnits = normalizeUnits;
12733
+ hooks.relativeTimeRounding = getSetRelativeTimeRounding;
12734
+ hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
12735
+ hooks.calendarFormat = getCalendarFormat;
12736
+ hooks.prototype = proto;
12737
+
12738
+ // currently HTML5 input type only supports 24-hour formats
12739
+ hooks.HTML5_FMT = {
12740
+ DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
12741
+ DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
12742
+ DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
12743
+ DATE: 'YYYY-MM-DD', // <input type="date" />
12744
+ TIME: 'HH:mm', // <input type="time" />
12745
+ TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
12746
+ TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
12747
+ WEEK: 'YYYY-[W]WW', // <input type="week" />
12748
+ MONTH: 'YYYY-MM' // <input type="month" />
12749
+ };
12750
+
12751
+ return hooks;
12752
+
12753
+ })));
12754
+
12755
+
12756
+ /*** EXPORTS FROM exports-to-window-loader ***/
12757
+ window['moment'] = __webpack_require__(67);
12758
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(166)(module)))
12759
+
12760
+ /***/ }),
12761
+ /* 68 */
12762
+ /***/ (function(module, exports, __webpack_require__) {
12763
+
12764
+ "use strict";
12765
+
12766
+
12767
+ exports.__esModule = true;
12768
+ exports.default = void 0;
12769
+
12770
+ var _array = __webpack_require__(3);
12771
+
12772
+ var _object = __webpack_require__(2);
12773
+
12774
+ var MIXIN_NAME = 'localHooks';
12775
+ /**
12776
+ * Mixin object to extend objects functionality for local hooks.
12777
+ *
12778
+ * @type {Object}
12779
+ */
12780
+
12781
+ var localHooks = {
12782
+ /**
12783
+ * Internal hooks storage.
12784
+ */
12785
+ _localHooks: Object.create(null),
12786
+
12787
+ /**
12788
+ * Add hook to the collection.
12789
+ *
12790
+ * @param {String} key Hook name.
12791
+ * @param {Function} callback Hook callback
12792
+ * @returns {Object}
12793
+ */
12794
+ addLocalHook: function addLocalHook(key, callback) {
12795
+ if (!this._localHooks[key]) {
12796
+ this._localHooks[key] = [];
12797
+ }
12798
+
12799
+ this._localHooks[key].push(callback);
12800
+
12801
+ return this;
12802
+ },
12803
+
12804
+ /**
12805
+ * Run hooks.
12806
+ *
12807
+ * @param {String} key Hook name.
12808
+ * @param {*} params
12809
+ */
12810
+ runLocalHooks: function runLocalHooks(key) {
12811
+ var _this = this;
12812
+
12813
+ for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
12814
+ params[_key - 1] = arguments[_key];
12815
+ }
12816
+
12817
+ if (this._localHooks[key]) {
12818
+ (0, _array.arrayEach)(this._localHooks[key], function (callback) {
12819
+ return callback.apply(_this, params);
12820
+ });
12821
+ }
12822
+ },
12823
+
12824
+ /**
12825
+ * Clear all added hooks.
12826
+ *
12827
+ * @returns {Object}
12828
+ */
12829
+ clearLocalHooks: function clearLocalHooks() {
12830
+ this._localHooks = {};
12831
+ return this;
12832
+ }
12833
+ };
12834
+ (0, _object.defineGetter)(localHooks, 'MIXIN_NAME', MIXIN_NAME, {
12835
+ writable: false,
12836
+ enumerable: false
12837
+ });
12838
+ var _default = localHooks;
12839
+ exports.default = _default;
12840
+
12841
+ /***/ }),
12842
+ /* 69 */
12843
+ /***/ (function(module, exports, __webpack_require__) {
12844
+
12845
+ "use strict";
12846
+
12847
+
12848
+ exports.__esModule = true;
12849
+ exports.createId = createId;
12850
+ exports.createDefaultCustomBorder = createDefaultCustomBorder;
12851
+ exports.createSingleEmptyBorder = createSingleEmptyBorder;
12852
+ exports.createDefaultHtBorder = createDefaultHtBorder;
12853
+ exports.createEmptyBorders = createEmptyBorders;
12854
+ exports.extendDefaultBorder = extendDefaultBorder;
12855
+ exports.checkSelectionBorders = checkSelectionBorders;
12856
+ exports.markSelected = markSelected;
12857
+
12858
+ var _object = __webpack_require__(2);
12859
+
12860
+ var _array = __webpack_require__(3);
12861
+
12862
+ /**
12863
+ * Create separated id for borders for each cell.
12864
+ *
12865
+ * @param {Number} row Visual row index.
12866
+ * @param {Number} col Visual column index.
12867
+ * @returns {String}
12868
+ */
12869
+ function createId(row, col) {
12870
+ return "border_row".concat(row, "col").concat(col);
12871
+ }
12872
+ /**
12873
+ * Create default single border for each position (top/right/bottom/left).
12874
+ *
12875
+ * @returns {Object} `{{width: number, color: string}}`
12876
+ */
12877
+
12878
+
12879
+ function createDefaultCustomBorder() {
12880
+ return {
12881
+ width: 1,
12882
+ color: '#000'
12883
+ };
12884
+ }
12885
+ /**
12886
+ * Create default object for empty border.
12887
+ *
12888
+ * @returns {Object} `{{hide: boolean}}`
12889
+ */
12890
+
12891
+
12892
+ function createSingleEmptyBorder() {
12893
+ return {
12894
+ hide: true
12895
+ };
12896
+ }
12897
+ /**
12898
+ * Create default Handsontable border object.
12899
+ *
12900
+ * @returns {Object} `{{width: number, color: string, cornerVisible: boolean}}`
12901
+ */
12902
+
12903
+
12904
+ function createDefaultHtBorder() {
12905
+ return {
12906
+ width: 1,
12907
+ color: '#000',
12908
+ cornerVisible: false
12909
+ };
12910
+ }
12911
+ /**
12912
+ * Prepare empty border for each cell with all custom borders hidden.
12913
+ *
12914
+ * @param {Number} row Visual row index.
12915
+ * @param {Number} col Visual column index.
12916
+ * @returns {Object} `{{id: *, border: *, row: *, col: *, top: {hide: boolean}, right: {hide: boolean}, bottom: {hide: boolean}, left: {hide: boolean}}}`
12917
+ */
12918
+
12919
+
12920
+ function createEmptyBorders(row, col) {
12921
+ return {
12922
+ id: createId(row, col),
12923
+ border: createDefaultHtBorder(),
12924
+ row: row,
12925
+ col: col,
12926
+ top: createSingleEmptyBorder(),
12927
+ right: createSingleEmptyBorder(),
12928
+ bottom: createSingleEmptyBorder(),
12929
+ left: createSingleEmptyBorder()
12930
+ };
12931
+ }
12932
+
12933
+ function extendDefaultBorder(defaultBorder, customBorder) {
12934
+ if ((0, _object.hasOwnProperty)(customBorder, 'border')) {
12935
+ defaultBorder.border = customBorder.border;
12936
+ }
12937
+
12938
+ if ((0, _object.hasOwnProperty)(customBorder, 'top')) {
12939
+ if (customBorder.top) {
12940
+ if (!(0, _object.isObject)(customBorder.top)) {
12941
+ customBorder.top = createDefaultCustomBorder();
12942
+ }
12943
+
12944
+ defaultBorder.top = customBorder.top;
12945
+ } else {
12946
+ customBorder.top = createSingleEmptyBorder();
12947
+ defaultBorder.top = customBorder.top;
12948
+ }
12949
+ }
12950
+
12951
+ if ((0, _object.hasOwnProperty)(customBorder, 'right')) {
12952
+ if (customBorder.right) {
12953
+ if (!(0, _object.isObject)(customBorder.right)) {
12954
+ customBorder.right = createDefaultCustomBorder();
12955
+ }
12956
+
12957
+ defaultBorder.right = customBorder.right;
12958
+ } else {
12959
+ customBorder.right = createSingleEmptyBorder();
12960
+ defaultBorder.right = customBorder.right;
12961
+ }
12962
+ }
12963
+
12964
+ if ((0, _object.hasOwnProperty)(customBorder, 'bottom')) {
12965
+ if (customBorder.bottom) {
12966
+ if (!(0, _object.isObject)(customBorder.bottom)) {
12967
+ customBorder.bottom = createDefaultCustomBorder();
12968
+ }
12969
+
12970
+ defaultBorder.bottom = customBorder.bottom;
12971
+ } else {
12972
+ customBorder.bottom = createSingleEmptyBorder();
12973
+ defaultBorder.bottom = customBorder.bottom;
12974
+ }
12975
+ }
12976
+
12977
+ if ((0, _object.hasOwnProperty)(customBorder, 'left')) {
12978
+ if (customBorder.left) {
12979
+ if (!(0, _object.isObject)(customBorder.left)) {
12980
+ customBorder.left = createDefaultCustomBorder();
12981
+ }
12982
+
12983
+ defaultBorder.left = customBorder.left;
12984
+ } else {
12985
+ customBorder.left = createSingleEmptyBorder();
12986
+ defaultBorder.left = customBorder.left;
12987
+ }
12988
+ }
12989
+
12990
+ return defaultBorder;
12991
+ }
12992
+ /**
12993
+ * Check if selection has border.
12994
+ *
12995
+ * @param hot
12996
+ * @param direction
12997
+ */
12998
+
12999
+
13000
+ function checkSelectionBorders(hot, direction) {
13001
+ var atLeastOneHasBorder = false;
13002
+ (0, _array.arrayEach)(hot.getSelectedRange(), function (range) {
13003
+ range.forAll(function (r, c) {
13004
+ var metaBorders = hot.getCellMeta(r, c).borders;
13005
+
13006
+ if (metaBorders) {
13007
+ if (direction) {
13008
+ if (!(0, _object.hasOwnProperty)(metaBorders[direction], 'hide') || metaBorders[direction].hide === false) {
13009
+ atLeastOneHasBorder = true;
13010
+ return false; // breaks forAll
13011
+ }
13012
+ } else {
13013
+ atLeastOneHasBorder = true;
13014
+ return false; // breaks forAll
13015
+ }
13016
+ }
13017
+ });
13018
+ });
13019
+ return atLeastOneHasBorder;
13020
+ }
13021
+ /**
13022
+ * Mark label in contextMenu as selected.
13023
+ *
13024
+ * @param label
13025
+ * @returns {string}
13026
+ */
13027
+
13028
+
13029
+ function markSelected(label) {
13030
+ return "<span class=\"selected\">".concat(String.fromCharCode(10003), "</span>").concat(label); // workaround for https://github.com/handsontable/handsontable/issues/1946
13031
+ }
13032
+
13033
+ /***/ }),
13034
+ /* 70 */
13035
+ /***/ (function(module, exports, __webpack_require__) {
13036
+
13037
+ // fallback for non-array-like ES3 and non-enumerable old V8 strings
13038
+ var cof = __webpack_require__(39);
13039
+ // eslint-disable-next-line no-prototype-builtins
13040
+ module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
13041
+ return cof(it) == 'String' ? it.split('') : Object(it);
13042
+ };
13043
+
13044
+
13045
+ /***/ }),
13046
+ /* 71 */
13047
+ /***/ (function(module, exports) {
13048
+
13049
+ exports.f = {}.propertyIsEnumerable;
13050
+
13051
+
13052
+ /***/ }),
13053
+ /* 72 */
13054
+ /***/ (function(module, exports, __webpack_require__) {
13055
+
13056
+ // getting tag from 19.1.3.6 Object.prototype.toString()
13057
+ var cof = __webpack_require__(39);
13058
+ var TAG = __webpack_require__(12)('toStringTag');
13059
+ // ES3 wrong here
13060
+ var ARG = cof(function () { return arguments; }()) == 'Arguments';
13061
+
13062
+ // fallback for IE11 Script Access Denied error
13063
+ var tryGet = function (it, key) {
13064
+ try {
13065
+ return it[key];
13066
+ } catch (e) { /* empty */ }
13067
+ };
13068
+
13069
+ module.exports = function (it) {
13070
+ var O, T, B;
13071
+ return it === undefined ? 'Undefined' : it === null ? 'Null'
13072
+ // @@toStringTag case
13073
+ : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
13074
+ // builtinTag case
13075
+ : ARG ? cof(O)
13076
+ // ES3 arguments fallback
13077
+ : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
13078
+ };
13079
+
13080
+
13081
+ /***/ }),
13082
+ /* 73 */
13083
+ /***/ (function(module, exports, __webpack_require__) {
13084
+
13085
+ // 7.3.20 SpeciesConstructor(O, defaultConstructor)
13086
+ var anObject = __webpack_require__(5);
13087
+ var aFunction = __webpack_require__(38);
13088
+ var SPECIES = __webpack_require__(12)('species');
13089
+ module.exports = function (O, D) {
13090
+ var C = anObject(O).constructor;
13091
+ var S;
13092
+ return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
13093
+ };
13094
+
13095
+
13096
+ /***/ }),
13097
+ /* 74 */
13098
+ /***/ (function(module, exports, __webpack_require__) {
13099
+
13100
+ "use strict";
13101
+
13102
+
13103
+ exports.__esModule = true;
13104
+ exports.default = exports.EditorState = void 0;
13105
+
13106
+ var _src = __webpack_require__(8);
13107
+
13108
+ var _mixed = __webpack_require__(14);
13109
+
13110
+ var EditorState = {
13111
+ VIRGIN: 'STATE_VIRGIN',
13112
+ // before editing
13113
+ EDITING: 'STATE_EDITING',
13114
+ WAITING: 'STATE_WAITING',
13115
+ // waiting for async validation
13116
+ FINISHED: 'STATE_FINISHED'
13117
+ };
13118
+ /**
13119
+ * @util
13120
+ * @class BaseEditor
13121
+ */
13122
+
13123
+ exports.EditorState = EditorState;
13124
+
13125
+ function BaseEditor(instance) {
13126
+ this.instance = instance;
13127
+ this.state = EditorState.VIRGIN;
13128
+ this._opened = false;
13129
+ this._fullEditMode = false;
13130
+ this._closeCallback = null;
13131
+ this.init();
13132
+ }
13133
+
13134
+ BaseEditor.prototype._fireCallbacks = function (result) {
13135
+ if (this._closeCallback) {
13136
+ this._closeCallback(result);
13137
+
13138
+ this._closeCallback = null;
13139
+ }
13140
+ };
13141
+
13142
+ BaseEditor.prototype.init = function () {};
13143
+
13144
+ BaseEditor.prototype.getValue = function () {
13145
+ throw Error('Editor getValue() method unimplemented');
13146
+ };
13147
+
13148
+ BaseEditor.prototype.setValue = function () {
13149
+ throw Error('Editor setValue() method unimplemented');
13150
+ };
13151
+
13152
+ BaseEditor.prototype.open = function () {
13153
+ throw Error('Editor open() method unimplemented');
13154
+ };
13155
+
13156
+ BaseEditor.prototype.close = function () {
13157
+ throw Error('Editor close() method unimplemented');
13158
+ };
13159
+
13160
+ BaseEditor.prototype.prepare = function (row, col, prop, td, originalValue, cellProperties) {
13161
+ this.TD = td;
13162
+ this.row = row;
13163
+ this.col = col;
13164
+ this.prop = prop;
13165
+ this.originalValue = originalValue;
13166
+ this.cellProperties = cellProperties;
13167
+ this.state = EditorState.VIRGIN;
13168
+ };
13169
+
13170
+ BaseEditor.prototype.extend = function () {
13171
+ var baseClass = this.constructor;
13172
+
13173
+ function Editor() {
13174
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
13175
+ args[_key] = arguments[_key];
13176
+ }
13177
+
13178
+ baseClass.apply(this, args);
13179
+ }
13180
+
13181
+ function inherit(Child, Parent) {
13182
+ function Bridge() {}
13183
+
13184
+ Bridge.prototype = Parent.prototype;
13185
+ Child.prototype = new Bridge();
13186
+ Child.prototype.constructor = Child;
13187
+ return Child;
13188
+ }
13189
+
13190
+ return inherit(Editor, baseClass);
13191
+ };
13192
+
13193
+ BaseEditor.prototype.saveValue = function (value, ctrlDown) {
13194
+ var selection;
13195
+ var tmp; // if ctrl+enter and multiple cells selected, behave like Excel (finish editing and apply to all cells)
13196
+
13197
+ if (ctrlDown) {
13198
+ selection = this.instance.getSelectedLast();
13199
+
13200
+ if (selection[0] > selection[2]) {
13201
+ tmp = selection[0];
13202
+ selection[0] = selection[2];
13203
+ selection[2] = tmp;
13204
+ }
13205
+
13206
+ if (selection[1] > selection[3]) {
13207
+ tmp = selection[1];
13208
+ selection[1] = selection[3];
13209
+ selection[3] = tmp;
13210
+ }
13211
+ } else {
13212
+ selection = [this.row, this.col, null, null];
13213
+ }
13214
+
13215
+ this.instance.populateFromArray(selection[0], selection[1], value, selection[2], selection[3], 'edit');
13216
+ };
13217
+
13218
+ BaseEditor.prototype.beginEditing = function (newInitialValue, event) {
13219
+ if (this.state !== EditorState.VIRGIN) {
13220
+ return;
13221
+ }
13222
+
13223
+ this.instance.view.scrollViewport(new _src.CellCoords(this.row, this.col));
13224
+ this.state = EditorState.EDITING; // Set the editor value only in the full edit mode. In other mode the focusable element has to be empty,
13225
+ // otherwise IME (editor for Asia users) doesn't work.
13226
+
13227
+ if (this.isInFullEditMode()) {
13228
+ var stringifiedInitialValue = typeof newInitialValue === 'string' ? newInitialValue : (0, _mixed.stringify)(this.originalValue);
13229
+ this.setValue(stringifiedInitialValue);
13230
+ }
13231
+
13232
+ this.open(event);
13233
+ this._opened = true;
13234
+ this.focus(); // only rerender the selections (FillHandle should disappear when beginediting is triggered)
13235
+
13236
+ this.instance.view.render();
13237
+ this.instance.runHooks('afterBeginEditing', this.row, this.col);
13238
+ };
13239
+
13240
+ BaseEditor.prototype.finishEditing = function (restoreOriginalValue, ctrlDown, callback) {
13241
+ var _this = this;
13242
+
13243
+ var val;
13244
+
13245
+ if (callback) {
13246
+ var previousCloseCallback = this._closeCallback;
13247
+
13248
+ this._closeCallback = function (result) {
13249
+ if (previousCloseCallback) {
13250
+ previousCloseCallback(result);
13251
+ }
13252
+
13253
+ callback(result);
13254
+
13255
+ _this.instance.view.render();
13256
+ };
13257
+ }
13258
+
13259
+ if (this.isWaiting()) {
13260
+ return;
13261
+ }
13262
+
13263
+ if (this.state === EditorState.VIRGIN) {
13264
+ this.instance._registerTimeout(function () {
13265
+ _this._fireCallbacks(true);
13266
+ });
13267
+
13268
+ return;
13269
+ }
13270
+
13271
+ if (this.state === EditorState.EDITING) {
13272
+ if (restoreOriginalValue) {
13273
+ this.cancelChanges();
13274
+ this.instance.view.render();
13275
+ return;
13276
+ }
13277
+
13278
+ var value = this.getValue();
13279
+
13280
+ if (this.instance.getSettings().trimWhitespace) {
13281
+ // We trim only string values
13282
+ val = [[typeof value === 'string' ? String.prototype.trim.call(value || '') : value]];
13283
+ } else {
13284
+ val = [[value]];
13285
+ }
13286
+
13287
+ this.state = EditorState.WAITING;
13288
+ this.saveValue(val, ctrlDown);
13289
+
13290
+ if (this.instance.getCellValidator(this.cellProperties)) {
13291
+ this.instance.addHookOnce('postAfterValidate', function (result) {
13292
+ _this.state = EditorState.FINISHED;
13293
+
13294
+ _this.discardEditor(result);
13295
+ });
13296
+ } else {
13297
+ this.state = EditorState.FINISHED;
13298
+ this.discardEditor(true);
13299
+ }
13300
+ }
13301
+ };
13302
+
13303
+ BaseEditor.prototype.cancelChanges = function () {
13304
+ this.state = EditorState.FINISHED;
13305
+ this.discardEditor();
13306
+ };
13307
+
13308
+ BaseEditor.prototype.discardEditor = function (result) {
13309
+ if (this.state !== EditorState.FINISHED) {
13310
+ return;
13311
+ } // validator was defined and failed
13312
+
13313
+
13314
+ if (result === false && this.cellProperties.allowInvalid !== true) {
13315
+ this.instance.selectCell(this.row, this.col);
13316
+ this.focus();
13317
+ this.state = EditorState.EDITING;
13318
+
13319
+ this._fireCallbacks(false);
13320
+ } else {
13321
+ this.close();
13322
+ this._opened = false;
13323
+ this._fullEditMode = false;
13324
+ this.state = EditorState.VIRGIN;
13325
+
13326
+ this._fireCallbacks(true);
13327
+ }
13328
+ };
13329
+ /**
13330
+ * Switch editor into full edit mode. In this state navigation keys don't close editor. This mode is activated
13331
+ * automatically after hit ENTER or F2 key on the cell or while editing cell press F2 key.
13332
+ */
13333
+
13334
+
13335
+ BaseEditor.prototype.enableFullEditMode = function () {
13336
+ this._fullEditMode = true;
13337
+ };
13338
+ /**
13339
+ * Checks if editor is in full edit mode.
13340
+ *
13341
+ * @returns {Boolean}
13342
+ */
13343
+
13344
+
13345
+ BaseEditor.prototype.isInFullEditMode = function () {
13346
+ return this._fullEditMode;
13347
+ };
13348
+
13349
+ BaseEditor.prototype.isOpened = function () {
13350
+ return this._opened;
13351
+ };
13352
+
13353
+ BaseEditor.prototype.isWaiting = function () {
13354
+ return this.state === EditorState.WAITING;
13355
+ };
13356
+
13357
+ BaseEditor.prototype.checkEditorSection = function () {
13358
+ var totalRows = this.instance.countRows();
13359
+ var section = '';
13360
+
13361
+ if (this.row < this.instance.getSettings().fixedRowsTop) {
13362
+ if (this.col < this.instance.getSettings().fixedColumnsLeft) {
13363
+ section = 'top-left-corner';
13364
+ } else {
13365
+ section = 'top';
13366
+ }
13367
+ } else if (this.instance.getSettings().fixedRowsBottom && this.row >= totalRows - this.instance.getSettings().fixedRowsBottom) {
13368
+ if (this.col < this.instance.getSettings().fixedColumnsLeft) {
13369
+ section = 'bottom-left-corner';
13370
+ } else {
13371
+ section = 'bottom';
13372
+ }
13373
+ } else if (this.col < this.instance.getSettings().fixedColumnsLeft) {
13374
+ section = 'left';
13375
+ }
13376
+
13377
+ return section;
13378
+ };
13379
+
13380
+ var _default = BaseEditor;
13381
+ exports.default = _default;
13382
+
13383
+ /***/ }),
13384
+ /* 75 */
13385
+ /***/ (function(module, exports, __webpack_require__) {
13386
+
13387
+ "use strict";
13388
+
13389
+
13390
+ exports.__esModule = true;
13391
+ exports.default = void 0;
13392
+
13393
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13394
+
13395
+ 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); } }
13396
+
13397
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
13398
+
13399
+ /**
13400
+ * CellCoords holds cell coordinates (row, column) and few method to validate them and retrieve as an array or an object.
13401
+ *
13402
+ * @util
13403
+ */
13404
+ var CellCoords =
13405
+ /*#__PURE__*/
13406
+ function () {
13407
+ function CellCoords(row, column) {
13408
+ _classCallCheck(this, CellCoords);
13409
+
13410
+ /**
13411
+ * Row index.
13412
+ *
13413
+ * @type {Number}
13414
+ */
13415
+ this.row = null;
13416
+ /**
13417
+ * Column index.
13418
+ *
13419
+ * @type {Number}
13420
+ */
13421
+
13422
+ this.col = null;
13423
+
13424
+ if (typeof row !== 'undefined' && typeof column !== 'undefined') {
13425
+ this.row = row;
13426
+ this.col = column;
13427
+ }
13428
+ }
13429
+ /**
13430
+ * Checks if given set of coordinates is valid in context of a given Walkontable instance.
13431
+ *
13432
+ * @param {Walkontable} wot A Walkontable instance.
13433
+ * @returns {Boolean}
13434
+ */
13435
+
13436
+
13437
+ _createClass(CellCoords, [{
13438
+ key: "isValid",
13439
+ value: function isValid(wot) {
13440
+ // is it a valid cell index (0 or higher)
13441
+ if (this.row < 0 || this.col < 0) {
13442
+ return false;
13443
+ } // is selection within total rows and columns
13444
+
13445
+
13446
+ if (this.row >= wot.getSetting('totalRows') || this.col >= wot.getSetting('totalColumns')) {
13447
+ return false;
13448
+ }
13449
+
13450
+ return true;
13451
+ }
13452
+ /**
13453
+ * Checks if this cell coordinates are the same as cell coordinates given as an argument.
13454
+ *
13455
+ * @param {CellCoords} cellCoords Cell coordinates to equal.
13456
+ * @returns {Boolean}
13457
+ */
13458
+
13459
+ }, {
13460
+ key: "isEqual",
13461
+ value: function isEqual(cellCoords) {
13462
+ if (cellCoords === this) {
13463
+ return true;
13464
+ }
13465
+
13466
+ return this.row === cellCoords.row && this.col === cellCoords.col;
13467
+ }
13468
+ /**
13469
+ * Checks if tested coordinates are positioned in south-east from this cell coordinates.
13470
+ *
13471
+ * @param {Object} testedCoords Cell coordinates to check.
13472
+ * @returns {Boolean}
13473
+ */
13474
+
13475
+ }, {
13476
+ key: "isSouthEastOf",
13477
+ value: function isSouthEastOf(testedCoords) {
13478
+ return this.row >= testedCoords.row && this.col >= testedCoords.col;
13479
+ }
13480
+ /**
13481
+ * Checks if tested coordinates are positioned in north-east from this cell coordinates.
13482
+ *
13483
+ * @param {Object} testedCoords Cell coordinates to check.
13484
+ * @returns {Boolean}
13485
+ */
13486
+
13487
+ }, {
13488
+ key: "isNorthWestOf",
13489
+ value: function isNorthWestOf(testedCoords) {
13490
+ return this.row <= testedCoords.row && this.col <= testedCoords.col;
13491
+ }
13492
+ /**
13493
+ * Checks if tested coordinates are positioned in south-west from this cell coordinates.
13494
+ *
13495
+ * @param {Object} testedCoords Cell coordinates to check.
13496
+ * @returns {Boolean}
13497
+ */
13498
+
13499
+ }, {
13500
+ key: "isSouthWestOf",
13501
+ value: function isSouthWestOf(testedCoords) {
13502
+ return this.row >= testedCoords.row && this.col <= testedCoords.col;
13503
+ }
13504
+ /**
13505
+ * Checks if tested coordinates are positioned in north-east from this cell coordinates.
13506
+ *
13507
+ * @param {Object} testedCoords Cell coordinates to check.
13508
+ * @returns {Boolean}
13509
+ */
13510
+
13511
+ }, {
13512
+ key: "isNorthEastOf",
13513
+ value: function isNorthEastOf(testedCoords) {
13514
+ return this.row <= testedCoords.row && this.col >= testedCoords.col;
13515
+ }
13516
+ /**
13517
+ * Converts CellCoords to literal object with `row` and `col` properties.
13518
+ *
13519
+ * @return {Object} Returns a literal object with `row` and `col` properties.
13520
+ */
13521
+
13522
+ }, {
13523
+ key: "toObject",
13524
+ value: function toObject() {
13525
+ return {
13526
+ row: this.row,
13527
+ col: this.col
13528
+ };
13529
+ }
13530
+ }]);
13531
+
13532
+ return CellCoords;
13533
+ }();
13534
+
13535
+ var _default = CellCoords;
13536
+ exports.default = _default;
13537
+
13538
+ /***/ }),
13539
+ /* 76 */
13540
+ /***/ (function(module, exports, __webpack_require__) {
13541
+
13542
+ "use strict";
13543
+
13544
+
13545
+ exports.__esModule = true;
13546
+ exports.log = log;
13547
+ exports.warn = warn;
13548
+ exports.info = info;
13549
+ exports.error = error;
13550
+
13551
+ var _mixed = __webpack_require__(14);
13552
+
13553
+ /* eslint-disable no-console */
13554
+
13555
+ /* eslint-disable no-restricted-globals */
13556
+
13557
+ /**
13558
+ * "In Internet Explorer 9 (and 8), the console object is only exposed when the developer tools are opened
13559
+ * for a particular tab."
13560
+ *
13561
+ * Source: https://stackoverflow.com/a/5473193
13562
+ */
13563
+
13564
+ /**
13565
+ * Logs message to the console if the `console` object is exposed.
13566
+ *
13567
+ * @param {...*} args Values which will be logged.
13568
+ */
13569
+ function log() {
13570
+ if ((0, _mixed.isDefined)(console)) {
13571
+ var _console;
13572
+
13573
+ (_console = console).log.apply(_console, arguments);
13574
+ }
13575
+ }
13576
+ /**
13577
+ * Logs warn to the console if the `console` object is exposed.
13578
+ *
13579
+ * @param {...*} args Values which will be logged.
13580
+ */
13581
+
13582
+
13583
+ function warn() {
13584
+ if ((0, _mixed.isDefined)(console)) {
13585
+ var _console2;
13586
+
13587
+ (_console2 = console).warn.apply(_console2, arguments);
13588
+ }
13589
+ }
13590
+ /**
13591
+ * Logs info to the console if the `console` object is exposed.
13592
+ *
13593
+ * @param {...*} args Values which will be logged.
13594
+ */
13595
+
13596
+
13597
+ function info() {
13598
+ if ((0, _mixed.isDefined)(console)) {
13599
+ var _console3;
13600
+
13601
+ (_console3 = console).info.apply(_console3, arguments);
13602
+ }
13603
+ }
13604
+ /**
13605
+ * Logs error to the console if the `console` object is exposed.
13606
+ *
13607
+ * @param {...*} args Values which will be logged.
13608
+ */
13609
+
13610
+
13611
+ function error() {
13612
+ if ((0, _mixed.isDefined)(console)) {
13613
+ var _console4;
13614
+
13615
+ (_console4 = console).error.apply(_console4, arguments);
13616
+ }
13617
+ }
13618
+
13619
+ /***/ }),
13620
+ /* 77 */
13621
+ /***/ (function(module, exports, __webpack_require__) {
13622
+
13623
+ "use strict";
13624
+
13625
+
13626
+ exports.__esModule = true;
13627
+ exports.default = void 0;
13628
+
13629
+ var _element = __webpack_require__(1);
13630
+
13631
+ var _autoResize = _interopRequireDefault(__webpack_require__(613));
13632
+
13633
+ var _browser = __webpack_require__(42);
13634
+
13635
+ var _baseEditor = _interopRequireWildcard(__webpack_require__(74));
13636
+
13637
+ var _eventManager = _interopRequireDefault(__webpack_require__(10));
13638
+
13639
+ var _unicode = __webpack_require__(32);
13640
+
13641
+ var _event = __webpack_require__(18);
13642
+
13643
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
13644
+
13645
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13646
+
13647
+ var TextEditor = _baseEditor.default.prototype.extend();
13648
+ /**
13649
+ * @private
13650
+ * @editor TextEditor
13651
+ * @class TextEditor
13652
+ * @dependencies autoResize
13653
+ */
13654
+
13655
+
13656
+ TextEditor.prototype.init = function () {
13657
+ var that = this;
13658
+ this.createElements();
13659
+ this.eventManager = new _eventManager.default(this);
13660
+ this.bindEvents();
13661
+ this.autoResize = (0, _autoResize.default)();
13662
+ this.holderZIndex = -1;
13663
+ this.instance.addHook('afterDestroy', function () {
13664
+ that.destroy();
13665
+ });
13666
+ };
13667
+
13668
+ TextEditor.prototype.prepare = function (row, col, prop, td, originalValue, cellProperties) {
13669
+ var _this = this;
13670
+
13671
+ var previousState = this.state;
13672
+
13673
+ for (var _len = arguments.length, args = new Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {
13674
+ args[_key - 6] = arguments[_key];
13675
+ }
13676
+
13677
+ _baseEditor.default.prototype.prepare.apply(this, [row, col, prop, td, originalValue, cellProperties].concat(args));
13678
+
13679
+ if (!cellProperties.readOnly) {
13680
+ this.refreshDimensions(true);
13681
+ var allowInvalid = cellProperties.allowInvalid,
13682
+ fragmentSelection = cellProperties.fragmentSelection;
13683
+
13684
+ if (allowInvalid) {
13685
+ this.TEXTAREA.value = ''; // Remove an empty space from texarea (added by copyPaste plugin to make copy/paste functionality work with IME)
13686
+ }
13687
+
13688
+ if (previousState !== _baseEditor.EditorState.FINISHED) {
13689
+ this.hideEditableElement();
13690
+ } // @TODO: The fragmentSelection functionality is conflicted with IME. For this feature refocus has to
13691
+ // be disabled (to make IME working).
13692
+
13693
+
13694
+ var restoreFocus = !fragmentSelection;
13695
+
13696
+ if (restoreFocus && !(0, _browser.isMobileBrowser)()) {
13697
+ this.instance._registerImmediate(function () {
13698
+ return _this.focus();
13699
+ });
13700
+ }
13701
+ }
13702
+ };
13703
+
13704
+ TextEditor.prototype.hideEditableElement = function () {
13705
+ this.textareaParentStyle.top = '-9999px';
13706
+ this.textareaParentStyle.left = '-9999px';
13707
+ this.textareaParentStyle.zIndex = '-1';
13708
+ this.textareaParentStyle.position = 'fixed';
13709
+ };
13710
+
13711
+ TextEditor.prototype.showEditableElement = function () {
13712
+ this.textareaParentStyle.zIndex = this.holderZIndex >= 0 ? this.holderZIndex : '';
13713
+ this.textareaParentStyle.position = '';
13714
+ };
13715
+
13716
+ TextEditor.prototype.getValue = function () {
13717
+ return this.TEXTAREA.value;
13718
+ };
13719
+
13720
+ TextEditor.prototype.setValue = function (newValue) {
13721
+ this.TEXTAREA.value = newValue;
13722
+ };
13723
+
13724
+ TextEditor.prototype.beginEditing = function () {
13725
+ if (this.state !== _baseEditor.EditorState.VIRGIN) {
13726
+ return;
13727
+ }
13728
+
13729
+ this.TEXTAREA.value = ''; // Remove an empty space from texarea (added by copyPaste plugin to make copy/paste functionality work with IME).
13730
+
13731
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
13732
+ args[_key2] = arguments[_key2];
13733
+ }
13734
+
13735
+ _baseEditor.default.prototype.beginEditing.apply(this, args);
13736
+ };
13737
+
13738
+ var onBeforeKeyDown = function onBeforeKeyDown(event) {
13739
+ var instance = this;
13740
+ var that = instance.getActiveEditor(); // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
13741
+
13742
+ var ctrlDown = (event.ctrlKey || event.metaKey) && !event.altKey; // Process only events that have been fired in the editor
13743
+
13744
+ if (event.target !== that.TEXTAREA || (0, _event.isImmediatePropagationStopped)(event)) {
13745
+ return;
13746
+ }
13747
+
13748
+ switch (event.keyCode) {
13749
+ case _unicode.KEY_CODES.ARROW_RIGHT:
13750
+ if (that.isInFullEditMode()) {
13751
+ if (!that.isWaiting() && !that.allowKeyEventPropagation || !that.isWaiting() && that.allowKeyEventPropagation && !that.allowKeyEventPropagation(event.keyCode)) {
13752
+ (0, _event.stopImmediatePropagation)(event);
13753
+ }
13754
+ }
13755
+
13756
+ break;
13757
+
13758
+ case _unicode.KEY_CODES.ARROW_LEFT:
13759
+ if (that.isInFullEditMode()) {
13760
+ if (!that.isWaiting() && !that.allowKeyEventPropagation || !that.isWaiting() && that.allowKeyEventPropagation && !that.allowKeyEventPropagation(event.keyCode)) {
13761
+ (0, _event.stopImmediatePropagation)(event);
13762
+ }
13763
+ }
13764
+
13765
+ break;
13766
+
13767
+ case _unicode.KEY_CODES.ARROW_UP:
13768
+ case _unicode.KEY_CODES.ARROW_DOWN:
13769
+ if (that.isInFullEditMode()) {
13770
+ if (!that.isWaiting() && !that.allowKeyEventPropagation || !that.isWaiting() && that.allowKeyEventPropagation && !that.allowKeyEventPropagation(event.keyCode)) {
13771
+ (0, _event.stopImmediatePropagation)(event);
13772
+ }
13773
+ }
13774
+
13775
+ break;
13776
+
13777
+ case _unicode.KEY_CODES.ENTER:
13778
+ {
13779
+ var isMultipleSelection = this.selection.isMultiple();
13780
+
13781
+ if (ctrlDown && !isMultipleSelection || event.altKey) {
13782
+ // if ctrl+enter or alt+enter, add new line
13783
+ if (that.isOpened()) {
13784
+ var caretPosition = (0, _element.getCaretPosition)(that.TEXTAREA);
13785
+ var value = that.getValue();
13786
+ var newValue = "".concat(value.slice(0, caretPosition), "\n").concat(value.slice(caretPosition));
13787
+ that.setValue(newValue);
13788
+ (0, _element.setCaretPosition)(that.TEXTAREA, caretPosition + 1);
13789
+ } else {
13790
+ that.beginEditing("".concat(that.originalValue, "\n"));
13791
+ }
13792
+
13793
+ (0, _event.stopImmediatePropagation)(event);
13794
+ }
13795
+
13796
+ event.preventDefault(); // don't add newline to field
13797
+
13798
+ break;
13799
+ }
13800
+
13801
+ case _unicode.KEY_CODES.BACKSPACE:
13802
+ case _unicode.KEY_CODES.DELETE:
13803
+ case _unicode.KEY_CODES.HOME:
13804
+ case _unicode.KEY_CODES.END:
13805
+ (0, _event.stopImmediatePropagation)(event); // backspace, delete, home, end should only work locally when cell is edited (not in table context)
13806
+
13807
+ break;
13808
+
13809
+ default:
13810
+ break;
13811
+ }
13812
+
13813
+ if ([_unicode.KEY_CODES.ARROW_UP, _unicode.KEY_CODES.ARROW_RIGHT, _unicode.KEY_CODES.ARROW_DOWN, _unicode.KEY_CODES.ARROW_LEFT].indexOf(event.keyCode) === -1) {
13814
+ that.autoResize.resize(String.fromCharCode(event.keyCode));
13815
+ }
13816
+ };
13817
+
13818
+ TextEditor.prototype.open = function () {
13819
+ this.refreshDimensions(); // need it instantly, to prevent https://github.com/handsontable/handsontable/issues/348
13820
+
13821
+ this.showEditableElement();
13822
+ this.instance.addHook('beforeKeyDown', onBeforeKeyDown);
13823
+ };
13824
+
13825
+ TextEditor.prototype.close = function () {
13826
+ this.autoResize.unObserve();
13827
+
13828
+ if (document.activeElement === this.TEXTAREA) {
13829
+ this.instance.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
13830
+ }
13831
+
13832
+ this.hideEditableElement();
13833
+ this.instance.removeHook('beforeKeyDown', onBeforeKeyDown);
13834
+ };
13835
+
13836
+ TextEditor.prototype.focus = function () {
13837
+ // For IME editor textarea element must be focused using ".select" method. Using ".focus" browser automatically scroll into
13838
+ // the focused element which is undesire effect.
13839
+ this.TEXTAREA.select();
13840
+ (0, _element.setCaretPosition)(this.TEXTAREA, this.TEXTAREA.value.length);
13841
+ };
13842
+
13843
+ TextEditor.prototype.createElements = function () {
13844
+ this.TEXTAREA = document.createElement('TEXTAREA');
13845
+ this.TEXTAREA.tabIndex = -1;
13846
+ (0, _element.addClass)(this.TEXTAREA, 'handsontableInput');
13847
+ this.textareaStyle = this.TEXTAREA.style;
13848
+ this.textareaStyle.width = 0;
13849
+ this.textareaStyle.height = 0;
13850
+ this.TEXTAREA_PARENT = document.createElement('DIV');
13851
+ (0, _element.addClass)(this.TEXTAREA_PARENT, 'handsontableInputHolder');
13852
+ this.textareaParentStyle = this.TEXTAREA_PARENT.style;
13853
+ this.textareaParentStyle.zIndex = '-1';
13854
+ this.TEXTAREA_PARENT.appendChild(this.TEXTAREA);
13855
+ this.instance.rootElement.appendChild(this.TEXTAREA_PARENT);
13856
+ };
13857
+
13858
+ TextEditor.prototype.getEditedCell = function () {
13859
+ var editorSection = this.checkEditorSection();
13860
+ var editedCell;
13861
+
13862
+ switch (editorSection) {
13863
+ case 'top':
13864
+ editedCell = this.instance.view.wt.wtOverlays.topOverlay.clone.wtTable.getCell({
13865
+ row: this.row,
13866
+ col: this.col
13867
+ });
13868
+ this.holderZIndex = 101;
13869
+ break;
13870
+
13871
+ case 'top-left-corner':
13872
+ editedCell = this.instance.view.wt.wtOverlays.topLeftCornerOverlay.clone.wtTable.getCell({
13873
+ row: this.row,
13874
+ col: this.col
13875
+ });
13876
+ this.holderZIndex = 103;
13877
+ break;
13878
+
13879
+ case 'bottom-left-corner':
13880
+ editedCell = this.instance.view.wt.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.getCell({
13881
+ row: this.row,
13882
+ col: this.col
13883
+ });
13884
+ this.holderZIndex = 103;
13885
+ break;
13886
+
13887
+ case 'left':
13888
+ editedCell = this.instance.view.wt.wtOverlays.leftOverlay.clone.wtTable.getCell({
13889
+ row: this.row,
13890
+ col: this.col
13891
+ });
13892
+ this.holderZIndex = 102;
13893
+ break;
13894
+
13895
+ case 'bottom':
13896
+ editedCell = this.instance.view.wt.wtOverlays.bottomOverlay.clone.wtTable.getCell({
13897
+ row: this.row,
13898
+ col: this.col
13899
+ });
13900
+ this.holderZIndex = 102;
13901
+ break;
13902
+
13903
+ default:
13904
+ editedCell = this.instance.getCell(this.row, this.col);
13905
+ this.holderZIndex = -1;
13906
+ break;
13907
+ }
13908
+
13909
+ return editedCell !== -1 && editedCell !== -2 ? editedCell : void 0;
13910
+ };
13911
+
13912
+ TextEditor.prototype.refreshValue = function () {
13913
+ var physicalRow = this.instance.toPhysicalRow(this.row);
13914
+ var sourceData = this.instance.getSourceDataAtCell(physicalRow, this.col);
13915
+ this.originalValue = sourceData;
13916
+ this.setValue(sourceData);
13917
+ this.refreshDimensions();
13918
+ };
13919
+
13920
+ TextEditor.prototype.refreshDimensions = function () {
13921
+ var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
13922
+
13923
+ if (this.state !== _baseEditor.EditorState.EDITING && !force) {
13924
+ return;
13925
+ }
13926
+
13927
+ this.TD = this.getEditedCell(); // TD is outside of the viewport.
13928
+
13929
+ if (!this.TD) {
13930
+ if (!force) {
13931
+ this.close(true);
13932
+ }
13933
+
13934
+ return;
13935
+ }
13936
+
13937
+ var currentOffset = (0, _element.offset)(this.TD);
13938
+ var containerOffset = (0, _element.offset)(this.instance.rootElement);
13939
+ var scrollableContainerTop = this.instance.view.wt.wtOverlays.topOverlay.mainTableScrollableElement;
13940
+ var scrollableContainerLeft = this.instance.view.wt.wtOverlays.leftOverlay.mainTableScrollableElement;
13941
+ var totalRowsCount = this.instance.countRows();
13942
+ var containerScrollTop = scrollableContainerTop !== window ? scrollableContainerTop.scrollTop : 0;
13943
+ var containerScrollLeft = scrollableContainerLeft !== window ? scrollableContainerLeft.scrollLeft : 0;
13944
+ var editorSection = this.checkEditorSection();
13945
+ var scrollTop = ['', 'left'].includes(editorSection) ? containerScrollTop : 0;
13946
+ var scrollLeft = ['', 'top', 'bottom'].includes(editorSection) ? containerScrollLeft : 0; // If colHeaders is disabled, cells in the first row have border-top
13947
+
13948
+ var editTopModifier = currentOffset.top === containerOffset.top ? 0 : 1;
13949
+ var settings = this.instance.getSettings();
13950
+ var colHeadersCount = this.instance.hasColHeaders();
13951
+ var backgroundColor = this.TD.style.backgroundColor;
13952
+ var editTop = currentOffset.top - containerOffset.top - editTopModifier - scrollTop;
13953
+ var editLeft = currentOffset.left - containerOffset.left - 1 - scrollLeft;
13954
+ var cssTransformOffset; // TODO: Refactor this to the new instance.getCell method (from #ply-59), after 0.12.1 is released
13955
+
13956
+ switch (editorSection) {
13957
+ case 'top':
13958
+ cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.topOverlay.clone.wtTable.holder.parentNode);
13959
+ break;
13960
+
13961
+ case 'left':
13962
+ cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.leftOverlay.clone.wtTable.holder.parentNode);
13963
+ break;
13964
+
13965
+ case 'top-left-corner':
13966
+ cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.topLeftCornerOverlay.clone.wtTable.holder.parentNode);
13967
+ break;
13968
+
13969
+ case 'bottom-left-corner':
13970
+ cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.holder.parentNode);
13971
+ break;
13972
+
13973
+ case 'bottom':
13974
+ cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.bottomOverlay.clone.wtTable.holder.parentNode);
13975
+ break;
13976
+
13977
+ default:
13978
+ break;
13979
+ }
13980
+
13981
+ if (colHeadersCount && this.instance.getSelectedLast()[0] === 0 || settings.fixedRowsBottom && this.instance.getSelectedLast()[0] === totalRowsCount - settings.fixedRowsBottom) {
13982
+ editTop += 1;
13983
+ }
13984
+
13985
+ if (this.instance.getSelectedLast()[1] === 0) {
13986
+ editLeft += 1;
13987
+ }
13988
+
13989
+ if (cssTransformOffset && cssTransformOffset !== -1) {
13990
+ this.textareaParentStyle[cssTransformOffset[0]] = cssTransformOffset[1];
13991
+ } else {
13992
+ (0, _element.resetCssTransform)(this.TEXTAREA_PARENT);
13993
+ }
13994
+
13995
+ this.textareaParentStyle.top = "".concat(editTop, "px");
13996
+ this.textareaParentStyle.left = "".concat(editLeft, "px");
13997
+ this.showEditableElement();
13998
+ var firstRowOffset = this.instance.view.wt.wtViewport.rowsRenderCalculator.startPosition;
13999
+ var firstColumnOffset = this.instance.view.wt.wtViewport.columnsRenderCalculator.startPosition;
14000
+ var horizontalScrollPosition = this.instance.view.wt.wtOverlays.leftOverlay.getScrollPosition();
14001
+ var verticalScrollPosition = this.instance.view.wt.wtOverlays.topOverlay.getScrollPosition();
14002
+ var scrollbarWidth = (0, _element.getScrollbarWidth)();
14003
+ var cellTopOffset = this.TD.offsetTop + firstRowOffset - verticalScrollPosition;
14004
+ var cellLeftOffset = this.TD.offsetLeft + firstColumnOffset - horizontalScrollPosition;
14005
+ var width = (0, _element.innerWidth)(this.TD) - 8;
14006
+ var actualVerticalScrollbarWidth = (0, _element.hasVerticalScrollbar)(scrollableContainerTop) ? scrollbarWidth : 0;
14007
+ var actualHorizontalScrollbarWidth = (0, _element.hasHorizontalScrollbar)(scrollableContainerLeft) ? scrollbarWidth : 0;
14008
+ var maxWidth = this.instance.view.maximumVisibleElementWidth(cellLeftOffset) - 9 - actualVerticalScrollbarWidth;
14009
+ var height = this.TD.scrollHeight + 1;
14010
+ var maxHeight = Math.max(this.instance.view.maximumVisibleElementHeight(cellTopOffset) - actualHorizontalScrollbarWidth, 23);
14011
+ var cellComputedStyle = (0, _element.getComputedStyle)(this.TD);
14012
+ this.TEXTAREA.style.fontSize = cellComputedStyle.fontSize;
14013
+ this.TEXTAREA.style.fontFamily = cellComputedStyle.fontFamily;
14014
+ this.TEXTAREA.style.backgroundColor = backgroundColor;
14015
+ this.autoResize.init(this.TEXTAREA, {
14016
+ minHeight: Math.min(height, maxHeight),
14017
+ maxHeight: maxHeight,
14018
+ // TEXTAREA should never be higher than visible part of the viewport (should not cover the scrollbar)
14019
+ minWidth: Math.min(width, maxWidth),
14020
+ maxWidth: maxWidth // TEXTAREA should never be wider than visible part of the viewport (should not cover the scrollbar)
14021
+
14022
+ }, true);
14023
+ };
14024
+
14025
+ TextEditor.prototype.bindEvents = function () {
14026
+ var editor = this;
14027
+ this.eventManager.addEventListener(this.TEXTAREA, 'cut', function (event) {
14028
+ (0, _event.stopPropagation)(event);
14029
+ });
14030
+ this.eventManager.addEventListener(this.TEXTAREA, 'paste', function (event) {
14031
+ (0, _event.stopPropagation)(event);
14032
+ });
14033
+ this.instance.addHook('afterScrollHorizontally', function () {
14034
+ editor.refreshDimensions();
14035
+ });
14036
+ this.instance.addHook('afterScrollVertically', function () {
14037
+ editor.refreshDimensions();
14038
+ });
14039
+ this.instance.addHook('afterColumnResize', function () {
14040
+ editor.refreshDimensions();
14041
+ editor.focus();
14042
+ });
14043
+ this.instance.addHook('afterRowResize', function () {
14044
+ editor.refreshDimensions();
14045
+ editor.focus();
14046
+ });
14047
+ this.instance.addHook('afterDestroy', function () {
14048
+ editor.eventManager.destroy();
14049
+ });
14050
+ };
14051
+
14052
+ TextEditor.prototype.destroy = function () {
14053
+ this.eventManager.destroy();
14054
+ };
14055
+
14056
+ var _default = TextEditor;
14057
+ exports.default = _default;
14058
+
14059
+ /***/ }),
14060
+ /* 78 */
14061
+ /***/ (function(module, exports, __webpack_require__) {
14062
+
14063
+ "use strict";
14064
+
14065
+
14066
+ exports.__esModule = true;
14067
+
14068
+ var _registry = __webpack_require__(433);
14069
+
14070
+ exports.registerRootComparator = _registry.registerRootComparator;
14071
+ exports.getRootComparator = _registry.getRootComparator;
14072
+ exports.getCompareFunctionFactory = _registry.getCompareFunctionFactory;
14073
+
14074
+ var _engine = __webpack_require__(679);
14075
+
14076
+ exports.FIRST_AFTER_SECOND = _engine.FIRST_AFTER_SECOND;
14077
+ exports.FIRST_BEFORE_SECOND = _engine.FIRST_BEFORE_SECOND;
14078
+ exports.DO_NOT_SWAP = _engine.DO_NOT_SWAP;
14079
+ exports.sort = _engine.sort;
14080
+
14081
+ /***/ }),
14082
+ /* 79 */
14083
+ /***/ (function(module, exports, __webpack_require__) {
14084
+
14085
+ // false -> Array#indexOf
14086
+ // true -> Array#includes
14087
+ var toIObject = __webpack_require__(29);
14088
+ var toLength = __webpack_require__(16);
14089
+ var toAbsoluteIndex = __webpack_require__(54);
14090
+ module.exports = function (IS_INCLUDES) {
14091
+ return function ($this, el, fromIndex) {
14092
+ var O = toIObject($this);
14093
+ var length = toLength(O.length);
14094
+ var index = toAbsoluteIndex(fromIndex, length);
14095
+ var value;
14096
+ // Array#includes uses SameValueZero equality algorithm
14097
+ // eslint-disable-next-line no-self-compare
14098
+ if (IS_INCLUDES && el != el) while (length > index) {
14099
+ value = O[index++];
14100
+ // eslint-disable-next-line no-self-compare
14101
+ if (value != value) return true;
14102
+ // Array#indexOf ignores holes, Array#includes - not
14103
+ } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
14104
+ if (O[index] === el) return IS_INCLUDES || index || 0;
14105
+ } return !IS_INCLUDES && -1;
14106
+ };
14107
+ };
14108
+
14109
+
14110
+ /***/ }),
14111
+ /* 80 */
14112
+ /***/ (function(module, exports) {
14113
+
14114
+ exports.f = Object.getOwnPropertySymbols;
14115
+
14116
+
14117
+ /***/ }),
14118
+ /* 81 */
14119
+ /***/ (function(module, exports, __webpack_require__) {
14120
+
14121
+ var $export = __webpack_require__(0);
14122
+ var defined = __webpack_require__(40);
14123
+ var fails = __webpack_require__(4);
14124
+ var spaces = __webpack_require__(100);
14125
+ var space = '[' + spaces + ']';
14126
+ var non = '\u200b\u0085';
14127
+ var ltrim = RegExp('^' + space + space + '*');
14128
+ var rtrim = RegExp(space + space + '*$');
14129
+
14130
+ var exporter = function (KEY, exec, ALIAS) {
14131
+ var exp = {};
14132
+ var FORCE = fails(function () {
14133
+ return !!spaces[KEY]() || non[KEY]() != non;
14134
+ });
14135
+ var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
14136
+ if (ALIAS) exp[ALIAS] = fn;
14137
+ $export($export.P + $export.F * FORCE, 'String', exp);
14138
+ };
14139
+
14140
+ // 1 -> String#trimLeft
14141
+ // 2 -> String#trimRight
14142
+ // 3 -> String#trim
14143
+ var trim = exporter.trim = function (string, TYPE) {
14144
+ string = String(defined(string));
14145
+ if (TYPE & 1) string = string.replace(ltrim, '');
14146
+ if (TYPE & 2) string = string.replace(rtrim, '');
14147
+ return string;
14148
+ };
14149
+
14150
+ module.exports = exporter;
14151
+
14152
+
14153
+ /***/ }),
14154
+ /* 82 */
14155
+ /***/ (function(module, exports, __webpack_require__) {
14156
+
14157
+ var ITERATOR = __webpack_require__(12)('iterator');
14158
+ var SAFE_CLOSING = false;
14159
+
14160
+ try {
14161
+ var riter = [7][ITERATOR]();
14162
+ riter['return'] = function () { SAFE_CLOSING = true; };
14163
+ // eslint-disable-next-line no-throw-literal
14164
+ Array.from(riter, function () { throw 2; });
14165
+ } catch (e) { /* empty */ }
14166
+
14167
+ module.exports = function (exec, skipClosing) {
14168
+ if (!skipClosing && !SAFE_CLOSING) return false;
14169
+ var safe = false;
14170
+ try {
14171
+ var arr = [7];
14172
+ var iter = arr[ITERATOR]();
14173
+ iter.next = function () { return { done: safe = true }; };
14174
+ arr[ITERATOR] = function () { return iter; };
14175
+ exec(arr);
14176
+ } catch (e) { /* empty */ }
14177
+ return safe;
14178
+ };
14179
+
14180
+
14181
+ /***/ }),
14182
+ /* 83 */
14183
+ /***/ (function(module, exports, __webpack_require__) {
14184
+
14185
+ "use strict";
14186
+
14187
+ // 21.2.5.3 get RegExp.prototype.flags
14188
+ var anObject = __webpack_require__(5);
14189
+ module.exports = function () {
14190
+ var that = anObject(this);
14191
+ var result = '';
14192
+ if (that.global) result += 'g';
14193
+ if (that.ignoreCase) result += 'i';
14194
+ if (that.multiline) result += 'm';
14195
+ if (that.unicode) result += 'u';
14196
+ if (that.sticky) result += 'y';
14197
+ return result;
14198
+ };
14199
+
14200
+
14201
+ /***/ }),
14202
+ /* 84 */
14203
+ /***/ (function(module, exports, __webpack_require__) {
14204
+
14205
+ "use strict";
14206
+
14207
+
14208
+ var classof = __webpack_require__(72);
14209
+ var builtinExec = RegExp.prototype.exec;
14210
+
14211
+ // `RegExpExec` abstract operation
14212
+ // https://tc39.github.io/ecma262/#sec-regexpexec
14213
+ module.exports = function (R, S) {
14214
+ var exec = R.exec;
14215
+ if (typeof exec === 'function') {
14216
+ var result = exec.call(R, S);
14217
+ if (typeof result !== 'object') {
14218
+ throw new TypeError('RegExp exec method returned something other than an Object or null');
14219
+ }
14220
+ return result;
14221
+ }
14222
+ if (classof(R) !== 'RegExp') {
14223
+ throw new TypeError('RegExp#exec called on incompatible receiver');
14224
+ }
14225
+ return builtinExec.call(R, S);
14226
+ };
14227
+
14228
+
14229
+ /***/ }),
14230
+ /* 85 */
14231
+ /***/ (function(module, exports, __webpack_require__) {
14232
+
14233
+ "use strict";
14234
+
14235
+ __webpack_require__(149);
14236
+ var redefine = __webpack_require__(23);
14237
+ var hide = __webpack_require__(28);
14238
+ var fails = __webpack_require__(4);
14239
+ var defined = __webpack_require__(40);
14240
+ var wks = __webpack_require__(12);
14241
+ var regexpExec = __webpack_require__(115);
14242
+
14243
+ var SPECIES = wks('species');
14244
+
14245
+ var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
14246
+ // #replace needs built-in support for named groups.
14247
+ // #match works fine because it just return the exec results, even if it has
14248
+ // a "grops" property.
14249
+ var re = /./;
14250
+ re.exec = function () {
14251
+ var result = [];
14252
+ result.groups = { a: '7' };
14253
+ return result;
14254
+ };
14255
+ return ''.replace(re, '$<a>') !== '7';
14256
+ });
14257
+
14258
+ var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {
14259
+ // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
14260
+ var re = /(?:)/;
14261
+ var originalExec = re.exec;
14262
+ re.exec = function () { return originalExec.apply(this, arguments); };
14263
+ var result = 'ab'.split(re);
14264
+ return result.length === 2 && result[0] === 'a' && result[1] === 'b';
14265
+ })();
14266
+
14267
+ module.exports = function (KEY, length, exec) {
14268
+ var SYMBOL = wks(KEY);
14269
+
14270
+ var DELEGATES_TO_SYMBOL = !fails(function () {
14271
+ // String methods call symbol-named RegEp methods
14272
+ var O = {};
14273
+ O[SYMBOL] = function () { return 7; };
14274
+ return ''[KEY](O) != 7;
14275
+ });
14276
+
14277
+ var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {
14278
+ // Symbol-named RegExp methods call .exec
14279
+ var execCalled = false;
14280
+ var re = /a/;
14281
+ re.exec = function () { execCalled = true; return null; };
14282
+ if (KEY === 'split') {
14283
+ // RegExp[@@split] doesn't call the regex's exec method, but first creates
14284
+ // a new one. We need to return the patched regex when creating the new one.
14285
+ re.constructor = {};
14286
+ re.constructor[SPECIES] = function () { return re; };
14287
+ }
14288
+ re[SYMBOL]('');
14289
+ return !execCalled;
14290
+ }) : undefined;
14291
+
14292
+ if (
14293
+ !DELEGATES_TO_SYMBOL ||
14294
+ !DELEGATES_TO_EXEC ||
14295
+ (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
14296
+ (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
14297
+ ) {
14298
+ var nativeRegExpMethod = /./[SYMBOL];
14299
+ var fns = exec(
14300
+ defined,
14301
+ SYMBOL,
14302
+ ''[KEY],
14303
+ function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {
14304
+ if (regexp.exec === regexpExec) {
14305
+ if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
14306
+ // The native String method already delegates to @@method (this
14307
+ // polyfilled function), leasing to infinite recursion.
14308
+ // We avoid it by directly calling the native @@method method.
14309
+ return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
14310
+ }
14311
+ return { done: true, value: nativeMethod.call(str, regexp, arg2) };
14312
+ }
14313
+ return { done: false };
14314
+ }
14315
+ );
14316
+ var strfn = fns[0];
14317
+ var rxfn = fns[1];
14318
+
14319
+ redefine(String.prototype, KEY, strfn);
14320
+ hide(RegExp.prototype, SYMBOL, length == 2
14321
+ // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
14322
+ // 21.2.5.11 RegExp.prototype[@@split](string, limit)
14323
+ ? function (string, arg) { return rxfn.call(string, this, arg); }
14324
+ // 21.2.5.6 RegExp.prototype[@@match](string)
14325
+ // 21.2.5.9 RegExp.prototype[@@search](string)
14326
+ : function (string) { return rxfn.call(string, this); }
14327
+ );
14328
+ }
14329
+ };
14330
+
14331
+
14332
+ /***/ }),
14333
+ /* 86 */
14334
+ /***/ (function(module, exports, __webpack_require__) {
14335
+
14336
+ var ctx = __webpack_require__(37);
14337
+ var call = __webpack_require__(145);
14338
+ var isArrayIter = __webpack_require__(110);
14339
+ var anObject = __webpack_require__(5);
14340
+ var toLength = __webpack_require__(16);
14341
+ var getIterFn = __webpack_require__(112);
14342
+ var BREAK = {};
14343
+ var RETURN = {};
14344
+ var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
14345
+ var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
14346
+ var f = ctx(fn, that, entries ? 2 : 1);
14347
+ var index = 0;
14348
+ var length, step, iterator, result;
14349
+ if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
14350
+ // fast case for arrays with default iterator
14351
+ if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
14352
+ result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
14353
+ if (result === BREAK || result === RETURN) return result;
14354
+ } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
14355
+ result = call(iterator, f, step.value, entries);
14356
+ if (result === BREAK || result === RETURN) return result;
14357
+ }
14358
+ };
14359
+ exports.BREAK = BREAK;
14360
+ exports.RETURN = RETURN;
14361
+
14362
+
14363
+ /***/ }),
14364
+ /* 87 */
14365
+ /***/ (function(module, exports, __webpack_require__) {
14366
+
14367
+ var global = __webpack_require__(6);
14368
+ var navigator = global.navigator;
14369
+
14370
+ module.exports = navigator && navigator.userAgent || '';
14371
+
14372
+
14373
+ /***/ }),
14374
+ /* 88 */
14375
+ /***/ (function(module, exports, __webpack_require__) {
14376
+
14377
+ "use strict";
14378
+
14379
+ var global = __webpack_require__(6);
14380
+ var $export = __webpack_require__(0);
14381
+ var redefine = __webpack_require__(23);
14382
+ var redefineAll = __webpack_require__(65);
14383
+ var meta = __webpack_require__(45);
14384
+ var forOf = __webpack_require__(86);
14385
+ var anInstance = __webpack_require__(64);
14386
+ var isObject = __webpack_require__(7);
14387
+ var fails = __webpack_require__(4);
14388
+ var $iterDetect = __webpack_require__(82);
14389
+ var setToStringTag = __webpack_require__(60);
14390
+ var inheritIfRequired = __webpack_require__(101);
14391
+
14392
+ module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
14393
+ var Base = global[NAME];
14394
+ var C = Base;
14395
+ var ADDER = IS_MAP ? 'set' : 'add';
14396
+ var proto = C && C.prototype;
14397
+ var O = {};
14398
+ var fixMethod = function (KEY) {
14399
+ var fn = proto[KEY];
14400
+ redefine(proto, KEY,
14401
+ KEY == 'delete' ? function (a) {
14402
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
14403
+ } : KEY == 'has' ? function has(a) {
14404
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
14405
+ } : KEY == 'get' ? function get(a) {
14406
+ return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
14407
+ } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }
14408
+ : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }
14409
+ );
14410
+ };
14411
+ if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
14412
+ new C().entries().next();
14413
+ }))) {
14414
+ // create collection constructor
14415
+ C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
14416
+ redefineAll(C.prototype, methods);
14417
+ meta.NEED = true;
14418
+ } else {
14419
+ var instance = new C();
14420
+ // early implementations not supports chaining
14421
+ var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
14422
+ // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
14423
+ var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });
14424
+ // most early implementations doesn't supports iterables, most modern - not close it correctly
14425
+ var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new
14426
+ // for early implementations -0 and +0 not the same
14427
+ var BUGGY_ZERO = !IS_WEAK && fails(function () {
14428
+ // V8 ~ Chromium 42- fails only with 5+ elements
14429
+ var $instance = new C();
14430
+ var index = 5;
14431
+ while (index--) $instance[ADDER](index, index);
14432
+ return !$instance.has(-0);
14433
+ });
14434
+ if (!ACCEPT_ITERABLES) {
14435
+ C = wrapper(function (target, iterable) {
14436
+ anInstance(target, C, NAME);
14437
+ var that = inheritIfRequired(new Base(), target, C);
14438
+ if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
14439
+ return that;
14440
+ });
14441
+ C.prototype = proto;
14442
+ proto.constructor = C;
14443
+ }
14444
+ if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
14445
+ fixMethod('delete');
14446
+ fixMethod('has');
14447
+ IS_MAP && fixMethod('get');
14448
+ }
14449
+ if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
14450
+ // weak collections should not contains .clear method
14451
+ if (IS_WEAK && proto.clear) delete proto.clear;
14452
+ }
14453
+
14454
+ setToStringTag(C, NAME);
14455
+
14456
+ O[NAME] = C;
14457
+ $export($export.G + $export.W + $export.F * (C != Base), O);
14458
+
14459
+ if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
14460
+
14461
+ return C;
14462
+ };
14463
+
14464
+
14465
+ /***/ }),
14466
+ /* 89 */
14467
+ /***/ (function(module, exports, __webpack_require__) {
14468
+
14469
+ var global = __webpack_require__(6);
14470
+ var hide = __webpack_require__(28);
14471
+ var uid = __webpack_require__(51);
14472
+ var TYPED = uid('typed_array');
14473
+ var VIEW = uid('view');
14474
+ var ABV = !!(global.ArrayBuffer && global.DataView);
14475
+ var CONSTR = ABV;
14476
+ var i = 0;
14477
+ var l = 9;
14478
+ var Typed;
14479
+
14480
+ var TypedArrayConstructors = (
14481
+ 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
14482
+ ).split(',');
14483
+
14484
+ while (i < l) {
14485
+ if (Typed = global[TypedArrayConstructors[i++]]) {
14486
+ hide(Typed.prototype, TYPED, true);
14487
+ hide(Typed.prototype, VIEW, true);
14488
+ } else CONSTR = false;
14489
+ }
14490
+
14491
+ module.exports = {
14492
+ ABV: ABV,
14493
+ CONSTR: CONSTR,
14494
+ TYPED: TYPED,
14495
+ VIEW: VIEW
14496
+ };
14497
+
14498
+
14499
+ /***/ }),
14500
+ /* 90 */
14501
+ /***/ (function(module, exports, __webpack_require__) {
14502
+
14503
+ "use strict";
14504
+
14505
+
14506
+ exports.__esModule = true;
14507
+ exports.registerLanguageDictionary = registerLanguage;
14508
+ exports.getLanguageDictionary = getLanguage;
14509
+ exports.hasLanguageDictionary = hasLanguage;
14510
+ exports.getDefaultLanguageDictionary = getDefaultLanguage;
14511
+ exports.getLanguagesDictionaries = getLanguages;
14512
+ exports.DEFAULT_LANGUAGE_CODE = void 0;
14513
+
14514
+ var _object = __webpack_require__(2);
14515
+
14516
+ var _utils = __webpack_require__(428);
14517
+
14518
+ var _staticRegister2 = _interopRequireDefault(__webpack_require__(46));
14519
+
14520
+ var _enUS = _interopRequireDefault(__webpack_require__(650));
14521
+
14522
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14523
+
14524
+ var DEFAULT_LANGUAGE_CODE = _enUS.default.languageCode;
14525
+ exports.DEFAULT_LANGUAGE_CODE = DEFAULT_LANGUAGE_CODE;
14526
+
14527
+ var _staticRegister = (0, _staticRegister2.default)('languagesDictionaries'),
14528
+ registerGloballyLanguageDictionary = _staticRegister.register,
14529
+ getGlobalLanguageDictionary = _staticRegister.getItem,
14530
+ hasGlobalLanguageDictionary = _staticRegister.hasItem,
14531
+ getGlobalLanguagesDictionaries = _staticRegister.getValues;
14532
+ /**
14533
+ * Register language dictionary for specific language code.
14534
+ *
14535
+ * @param {String|Object} languageCodeOrDictionary Language code for specific language i.e. 'en-US', 'pt-BR', 'de-DE' or object representing dictionary.
14536
+ * @param {Object} dictionary Dictionary for specific language (optional if first parameter has already dictionary).
14537
+ */
14538
+
14539
+
14540
+ function registerLanguage(languageCodeOrDictionary, dictionary) {
14541
+ var languageCode = languageCodeOrDictionary;
14542
+ var dictionaryObject = dictionary; // Dictionary passed as first argument.
14543
+
14544
+ if ((0, _object.isObject)(languageCodeOrDictionary)) {
14545
+ dictionaryObject = languageCodeOrDictionary;
14546
+ languageCode = dictionaryObject.languageCode;
14547
+ }
14548
+
14549
+ extendLanguageDictionary(languageCode, dictionaryObject);
14550
+ registerGloballyLanguageDictionary(languageCode, (0, _object.deepClone)(dictionaryObject)); // We do not allow user to work with dictionary by reference, it can cause lot of bugs.
14551
+
14552
+ return (0, _object.deepClone)(dictionaryObject);
14553
+ }
14554
+ /**
14555
+ * Get language dictionary for specific language code.
14556
+ *
14557
+ * @param {String} languageCode Language code.
14558
+ * @returns {Object} Object with constants representing identifiers for translation (as keys) and corresponding translation phrases (as values).
14559
+ */
14560
+
14561
+
14562
+ function getLanguage(languageCode) {
14563
+ if (!hasLanguage(languageCode)) {
14564
+ return null;
14565
+ }
14566
+
14567
+ return (0, _object.deepClone)(getGlobalLanguageDictionary(languageCode));
14568
+ }
14569
+ /**
14570
+ *
14571
+ * Get if language with specified language code was registered.
14572
+ *
14573
+ * @param {String} languageCode Language code for specific language i.e. 'en-US', 'pt-BR', 'de-DE'.
14574
+ * @returns {Boolean}
14575
+ */
14576
+
14577
+
14578
+ function hasLanguage(languageCode) {
14579
+ return hasGlobalLanguageDictionary(languageCode);
14580
+ }
14581
+ /**
14582
+ * Get default language dictionary.
14583
+ *
14584
+ * @returns {Object} Object with constants representing identifiers for translation (as keys) and corresponding translation phrases (as values).
14585
+ */
14586
+
14587
+
14588
+ function getDefaultLanguage() {
14589
+ return _enUS.default;
14590
+ }
14591
+ /**
14592
+ * Extend handled dictionary by default language dictionary. As result, if any dictionary key isn't defined for specific language, it will be filled with default language value ("dictionary gaps" are supplemented).
14593
+ *
14594
+ * @private
14595
+ * @param {String} languageCode Language code.
14596
+ * @param {Object} dictionary Dictionary which is extended.
14597
+ */
14598
+
14599
+
14600
+ function extendLanguageDictionary(languageCode, dictionary) {
14601
+ if (languageCode !== DEFAULT_LANGUAGE_CODE) {
14602
+ (0, _utils.extendNotExistingKeys)(dictionary, getGlobalLanguageDictionary(DEFAULT_LANGUAGE_CODE));
14603
+ }
14604
+ }
14605
+ /**
14606
+ * Get registered language dictionaries.
14607
+ *
14608
+ * @returns {Array}
14609
+ */
14610
+
14611
+
14612
+ function getLanguages() {
14613
+ return getGlobalLanguagesDictionaries();
14614
+ }
14615
+
14616
+ /**
14617
+ * Automatically registers default dictionary.
14618
+ */
14619
+ registerLanguage(_enUS.default);
14620
+
14621
+ /***/ }),
14622
+ /* 91 */
14623
+ /***/ (function(module, exports, __webpack_require__) {
14624
+
14625
+ "use strict";
14626
+
14627
+
14628
+ exports.__esModule = true;
14629
+ exports.detectSelectionType = detectSelectionType;
14630
+ exports.normalizeSelectionFactory = normalizeSelectionFactory;
14631
+ exports.transformSelectionToColumnDistance = transformSelectionToColumnDistance;
14632
+ exports.transformSelectionToRowDistance = transformSelectionToRowDistance;
14633
+ exports.isValidCoord = isValidCoord;
14634
+ exports.SELECTION_TYPES = exports.SELECTION_TYPE_OBJECT = exports.SELECTION_TYPE_ARRAY = exports.SELECTION_TYPE_EMPTY = exports.SELECTION_TYPE_UNRECOGNIZED = void 0;
14635
+
14636
+ var _src = __webpack_require__(8);
14637
+
14638
+ var _array = __webpack_require__(3);
14639
+
14640
+ var _mixed = __webpack_require__(14);
14641
+
14642
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
14643
+
14644
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
14645
+
14646
+ function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
14647
+
14648
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14649
+
14650
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
14651
+
14652
+ var SELECTION_TYPE_UNRECOGNIZED = 0;
14653
+ exports.SELECTION_TYPE_UNRECOGNIZED = SELECTION_TYPE_UNRECOGNIZED;
14654
+ var SELECTION_TYPE_EMPTY = 1;
14655
+ exports.SELECTION_TYPE_EMPTY = SELECTION_TYPE_EMPTY;
14656
+ var SELECTION_TYPE_ARRAY = 2;
14657
+ exports.SELECTION_TYPE_ARRAY = SELECTION_TYPE_ARRAY;
14658
+ var SELECTION_TYPE_OBJECT = 3;
14659
+ exports.SELECTION_TYPE_OBJECT = SELECTION_TYPE_OBJECT;
14660
+ var SELECTION_TYPES = [SELECTION_TYPE_OBJECT, SELECTION_TYPE_ARRAY];
14661
+ exports.SELECTION_TYPES = SELECTION_TYPES;
14662
+ var ARRAY_TYPE_PATTERN = [['number'], ['number', 'string'], ['number', 'undefined'], ['number', 'string', 'undefined']];
14663
+ var rootCall = Symbol('root');
14664
+ var childCall = Symbol('child');
14665
+ /**
14666
+ * Detect selection schema structure.
14667
+ *
14668
+ * @param {*} selectionRanges The selected range or and array of selected ranges. This type of data is produced by
14669
+ * `hot.getSelected()`, `hot.getSelectedLast()`, `hot.getSelectedRange()`
14670
+ * and `hot.getSelectedRangeLast()` methods.
14671
+ * @returns {Number} Returns a number that specifies the type of detected selection schema. If selection schema type
14672
+ * is unrecognized than it returns `0`.
14673
+ */
14674
+
14675
+ function detectSelectionType(selectionRanges) {
14676
+ var _callSymbol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : rootCall;
14677
+
14678
+ if (_callSymbol !== rootCall && _callSymbol !== childCall) {
14679
+ throw new Error('The second argument is used internally only and cannot be overwritten.');
14680
+ }
14681
+
14682
+ var isArray = Array.isArray(selectionRanges);
14683
+ var isRootCall = _callSymbol === rootCall;
14684
+ var result = SELECTION_TYPE_UNRECOGNIZED;
14685
+
14686
+ if (isArray) {
14687
+ var firstItem = selectionRanges[0];
14688
+
14689
+ if (selectionRanges.length === 0) {
14690
+ result = SELECTION_TYPE_EMPTY;
14691
+ } else if (isRootCall && firstItem instanceof _src.CellRange) {
14692
+ result = SELECTION_TYPE_OBJECT;
14693
+ } else if (isRootCall && Array.isArray(firstItem)) {
14694
+ result = detectSelectionType(firstItem, childCall);
14695
+ } else if (selectionRanges.length >= 2 && selectionRanges.length <= 4) {
14696
+ var isArrayType = !selectionRanges.some(function (value, index) {
14697
+ return !ARRAY_TYPE_PATTERN[index].includes(_typeof(value));
14698
+ });
14699
+
14700
+ if (isArrayType) {
14701
+ result = SELECTION_TYPE_ARRAY;
14702
+ }
14703
+ }
14704
+ }
14705
+
14706
+ return result;
14707
+ }
14708
+ /**
14709
+ * Factory function designed for normalization data schema from different data structures of the selection ranges.
14710
+ *
14711
+ * @param {String} type Selection type which will be processed.
14712
+ * @param {Object} [options]
14713
+ * @param {Boolean} [options.keepDirection=false] If `true`, the coordinates which contain the direction of the
14714
+ * selected cells won't be changed. Otherwise, the selection will be
14715
+ * normalized to values starting from top-left to bottom-right.
14716
+ * @param {Function} [options.propToCol] Pass the converting function (usually `datamap.propToCol`) if the column
14717
+ * defined as props should be normalized to the numeric values.
14718
+ * @returns {Number[]} Returns normalized data about selected range as an array (`[rowStart, columnStart, rowEnd, columnEnd]`).
14719
+ */
14720
+
14721
+
14722
+ function normalizeSelectionFactory(type) {
14723
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
14724
+ _ref$keepDirection = _ref.keepDirection,
14725
+ keepDirection = _ref$keepDirection === void 0 ? false : _ref$keepDirection,
14726
+ propToCol = _ref.propToCol;
14727
+
14728
+ if (!SELECTION_TYPES.includes(type)) {
14729
+ throw new Error('Unsupported selection ranges schema type was provided.');
14730
+ }
14731
+
14732
+ return function (selection) {
14733
+ var isObjectType = type === SELECTION_TYPE_OBJECT;
14734
+ var rowStart = isObjectType ? selection.from.row : selection[0];
14735
+ var columnStart = isObjectType ? selection.from.col : selection[1];
14736
+ var rowEnd = isObjectType ? selection.to.row : selection[2];
14737
+ var columnEnd = isObjectType ? selection.to.col : selection[3];
14738
+
14739
+ if (typeof propToCol === 'function') {
14740
+ if (typeof columnStart === 'string') {
14741
+ columnStart = propToCol(columnStart);
14742
+ }
14743
+
14744
+ if (typeof columnEnd === 'string') {
14745
+ columnEnd = propToCol(columnEnd);
14746
+ }
14747
+ }
14748
+
14749
+ if ((0, _mixed.isUndefined)(rowEnd)) {
14750
+ rowEnd = rowStart;
14751
+ }
14752
+
14753
+ if ((0, _mixed.isUndefined)(columnEnd)) {
14754
+ columnEnd = columnStart;
14755
+ }
14756
+
14757
+ if (!keepDirection) {
14758
+ var origRowStart = rowStart;
14759
+ var origColumnStart = columnStart;
14760
+ var origRowEnd = rowEnd;
14761
+ var origColumnEnd = columnEnd;
14762
+ rowStart = Math.min(origRowStart, origRowEnd);
14763
+ columnStart = Math.min(origColumnStart, origColumnEnd);
14764
+ rowEnd = Math.max(origRowStart, origRowEnd);
14765
+ columnEnd = Math.max(origColumnStart, origColumnEnd);
14766
+ }
14767
+
14768
+ return [rowStart, columnStart, rowEnd, columnEnd];
14769
+ };
14770
+ }
14771
+ /**
14772
+ * Function transform selection ranges (produced by `hot.getSelected()` and `hot.getSelectedRange()`) to normali