diff --git a/.gitignore b/.gitignore index c6284b0e..9234a1f4 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,7 @@ assets/js/build/vendors~xlsx.min.js assets/js/build/vendors~xlsx.min.js.map assets/js/build/xlsx.min.js assets/js/build/xlsx.min.js.map + +assets/js/build/canvg.js +assets/js/build/pdfmake.js +assets/js/build/xlsx.js diff --git a/assets/css/admin-blocks.css b/assets/css/admin-blocks.css new file mode 100644 index 00000000..720d6d31 --- /dev/null +++ b/assets/css/admin-blocks.css @@ -0,0 +1 @@ +.bdb-book-info{clear:both;overflow:hidden}.bdb-block-book-search-result:hover{cursor:pointer}.bdb-book-grid{display:flex;flex-flow:row wrap;margin:0 -10px}@media (min-width:768px){.bdb-book-grid:not(.bdb-book-grid-col-2) .bdb-grid-entry{flex:0 33.3%}}@media (min-width:992px){.bdb-book-grid:not(.bdb-book-grid-col-2) .bdb-grid-entry{flex:0 25%}}.bdb-grid-entry{flex:0 50%;margin-bottom:3em;padding:10px;text-align:center}.bdb-grid-entry a{border:none}.bdb-read-review-link{display:block;width:100%}.bdb-pagination{margin:1.5em 0}@media (min-width:768px){.bdb-book-grid-number-results{text-align:right}} diff --git a/assets/css/admin-global.css b/assets/css/admin-global.css new file mode 100644 index 00000000..f24346f4 --- /dev/null +++ b/assets/css/admin-global.css @@ -0,0 +1 @@ +.bdb-currently-reading-widget-list{display:flex;flex-flow:row wrap;text-align:center}.bdb-currently-reading-widget-list li{flex:0;padding:1em}.bdb-currently-reading-progress{background:#f4f4f4;height:20px;margin-bottom:1em;position:relative}.bdb-currently-reading-progress-bar{background:#0085ba;height:20px}.bdb-currently-reading-progress-number{height:100%;left:0;position:absolute;top:0;width:100%}.bdb-currently-reading-progress-unit-selected,.bdb-currently-reading-progress-unit-selected:hover{color:#444}.bdb-currently-reading-unit-pages-wrap>span,.bdb-currently-reading-unit-percentage-wrap>span{display:flex}.bdb-currently-reading-unit-pages-wrap input,.bdb-currently-reading-unit-percentage-wrap input{margin:0}.bdb-currently-reading-unit-pages-wrap .bdb-input-suffix,.bdb-currently-reading-unit-percentage-wrap .bdb-input-suffix{flex-shrink:0}.bdb-id-col{color:#555}.bdb-admin-page .postbox>h2{border-bottom:1px solid #eee}.bdb-input-has-suffix{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.bdb-input-suffix{background:#f1f1f1;border:1px solid #7e8993;border-left:none;display:inline-block;font-size:14px;line-height:2;margin:0 0 0 -4px;padding:0 8px}.bdb-meta-row{margin:1.5em 0}.bdb-meta-row>label{display:block;font-weight:600}.bdb-meta-row .description{color:#666;display:block;font-size:13px;font-style:italic;margin:2px 0 5px}.bdb-meta-row input[type=text]:not(.bdb-color-picker):not(.text-small),.bdb-meta-row input[type=url]:not(.bdb-color-picker):not(.text-small),.bdb-meta-row textarea:not(.bdb-color-picker):not(.text-small){display:block;width:99%}.bdb-meta-row input[type=number]{display:inline-block;width:auto}.bdb-meta-row textarea{min-height:250px}.bdb-meta-row .bdb-datepicker,.bdb-meta-row .regular-text{max-width:550px}@media (min-width:900px){.bdb-meta-row{clear:both;overflow:hidden}.bdb-meta-row>label{float:left;margin:0;width:18%}.bdb-meta-row .bdb-meta-value{float:right;width:80%}} diff --git a/assets/css/admin-style-blocks.min.css b/assets/css/admin-style-blocks.min.css deleted file mode 100644 index e4732d1f..00000000 --- a/assets/css/admin-style-blocks.min.css +++ /dev/null @@ -1,4 +0,0 @@ -.bdb-book-info{clear:both;overflow:hidden}.bdb-block-book-search-result:hover{cursor:pointer}.bdb-book-grid{display:flex;flex-flow:row wrap;margin:0 -10px}@media (min-width: 768px){.bdb-book-grid:not(.bdb-book-grid-col-2) .bdb-grid-entry{flex:0 33.3%}}@media (min-width: 992px){.bdb-book-grid:not(.bdb-book-grid-col-2) .bdb-grid-entry{flex:0 25%}}.bdb-grid-entry{flex:0 50%;margin-bottom:3em;padding:10px;text-align:center}.bdb-grid-entry a{border:none}.bdb-read-review-link{display:block;width:100%}.bdb-pagination{margin:1.5em 0}@media (min-width: 768px){.bdb-book-grid-number-results{text-align:right}} - - -/*# sourceMappingURL=admin-style-blocks.min.css.map*/ \ No newline at end of file diff --git a/assets/css/admin-style-global.min.css b/assets/css/admin-style-global.min.css deleted file mode 100644 index 08cbeb3e..00000000 --- a/assets/css/admin-style-global.min.css +++ /dev/null @@ -1,4 +0,0 @@ -.bdb-currently-reading-widget-list{display:flex;flex-flow:row wrap;text-align:center}.bdb-currently-reading-widget-list li{flex:0;padding:1em}.bdb-currently-reading-progress{background:#f4f4f4;height:20px;margin-bottom:1em;position:relative}.bdb-currently-reading-progress-bar{background:#0085ba;height:20px}.bdb-currently-reading-progress-number{height:100%;width:100%;position:absolute;top:0;left:0}.bdb-currently-reading-progress-unit-selected,.bdb-currently-reading-progress-unit-selected:hover{color:#444}.bdb-currently-reading-unit-percentage-wrap>span,.bdb-currently-reading-unit-pages-wrap>span{display:flex}.bdb-currently-reading-unit-percentage-wrap input,.bdb-currently-reading-unit-pages-wrap input{margin:0}.bdb-currently-reading-unit-percentage-wrap .bdb-input-suffix,.bdb-currently-reading-unit-pages-wrap .bdb-input-suffix{flex-shrink:0}.bdb-id-col{color:#555}.bdb-admin-page .postbox>h2{border-bottom:1px solid #eee}.bdb-input-has-suffix{border-bottom-right-radius:0 !important;border-top-right-radius:0 !important}.bdb-input-suffix{background:#f1f1f1;border:1px solid #7e8993;border-left:none;display:inline-block;font-size:14px;line-height:2;margin:0 0 0 -4px;padding:0 8px 0}.bdb-meta-row{margin:1.5em 0}.bdb-meta-row>label{display:block;font-weight:600}.bdb-meta-row .description{color:#666;display:block;font-size:13px;font-style:italic;margin:2px 0 5px}.bdb-meta-row input[type="text"]:not(.bdb-color-picker):not(.text-small),.bdb-meta-row input[type="url"]:not(.bdb-color-picker):not(.text-small),.bdb-meta-row textarea:not(.bdb-color-picker):not(.text-small){display:block;width:99%}.bdb-meta-row input[type="number"]{display:inline-block;width:auto}.bdb-meta-row textarea{min-height:250px}.bdb-meta-row .regular-text,.bdb-meta-row .bdb-datepicker{max-width:550px}@media (min-width: 900px){.bdb-meta-row{clear:both;overflow:hidden}.bdb-meta-row>label{float:left;margin:0;width:18%}.bdb-meta-row .bdb-meta-value{float:right;width:80%}} - - -/*# sourceMappingURL=admin-style-global.min.css.map*/ \ No newline at end of file diff --git a/assets/css/admin-style.min.css b/assets/css/admin-style.min.css deleted file mode 100644 index 41454962..00000000 --- a/assets/css/admin-style.min.css +++ /dev/null @@ -1,4 +0,0 @@ -#bdb-book-analytics-wrap hr{margin:3em 0}#bdb-book-analytics-wrap .bdb-flexbox-container{align-items:normal}.bdb-analytics-block{flex-grow:1;position:relative}.bdb-analytics-block.bdb-dataset-type-value,.bdb-analytics-block.bdb-dataset-type-dataset{text-align:center}.bdb-analytics-block.bdb-dataset-type-graph{max-width:100%;width:inherit !important}.bdb-analytics-block.bdb-dataset-type-graph>div>div,.bdb-analytics-block.bdb-dataset-type-chart>div>div{min-height:500px}.bdb-analytics-block .bdb-dataset-book-grid{justify-content:start}.bdb-analytics-block .bdb-dataset-book-grid figure{box-sizing:border-box;margin:0;padding:5px;width:25%}.bdb-analytics-block .bdb-dataset-book-grid figure img{height:auto;max-width:100%}.bdb-analytics-block.bdb-dataset-type-dataset{display:flex}.bdb-analytics-block.bdb-dataset-type-dataset .bdb-dataset-section{flex-grow:1;flex-basis:0}.bdb-analytics-block .spinner{float:none}.bdb-analytics-block .bdb-dataset-value{font-size:16px}.bdb-analytics-block .bdb-dataset-period{background:white;border:1px solid #e5e5e5;border-bottom-color:white;border-right-color:white;border-top-left-radius:8px;color:#aaa;margin:0 -1px -1px 0;padding:4px 0 0 9px;position:absolute;bottom:0;right:0}.bdb-loading{min-height:30px}#bdb-circleG{width:64px;margin:auto}.bdb-circleG{background-color:rgba(255,255,255,0.86);float:left;height:14px;margin-left:7px;width:14px;animation-name:bounce_circleG;-o-animation-name:bounce_circleG;-ms-animation-name:bounce_circleG;-webkit-animation-name:bounce_circleG;-moz-animation-name:bounce_circleG;animation-duration:1.3675s;-o-animation-duration:1.3675s;-ms-animation-duration:1.3675s;-webkit-animation-duration:1.3675s;-moz-animation-duration:1.3675s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;animation-direction:normal;-o-animation-direction:normal;-ms-animation-direction:normal;-webkit-animation-direction:normal;-moz-animation-direction:normal;border-radius:9px;-o-border-radius:9px;-ms-border-radius:9px;-webkit-border-radius:9px;-moz-border-radius:9px}#bdb-circleG_1{animation-delay:0.2695s;-o-animation-delay:0.2695s;-ms-animation-delay:0.2695s;-webkit-animation-delay:0.2695s;-moz-animation-delay:0.2695s}#bdb-circleG_2{animation-delay:0.6355s;-o-animation-delay:0.6355s;-ms-animation-delay:0.6355s;-webkit-animation-delay:0.6355s;-moz-animation-delay:0.6355s}#bdb-circleG_3{animation-delay:0.8185s;-o-animation-delay:0.8185s;-ms-animation-delay:0.8185s;-webkit-animation-delay:0.8185s;-moz-animation-delay:0.8185s}@keyframes bounce_circleG{0%{}50%{background-color:rgba(112,112,112,0.84)}100%{}}@-o-keyframes bounce_circleG{0%{}50%{background-color:rgba(112,112,112,0.84)}100%{}}@-ms-keyframes bounce_circleG{50%{background-color:rgba(112,112,112,0.84)}}@-webkit-keyframes bounce_circleG{0%{}50%{background-color:rgba(112,112,112,0.84)}100%{}}@-moz-keyframes bounce_circleG{0%{}50%{background-color:rgba(112,112,112,0.84)}100%{}}#bdb-books-filter .view-month:before{content:'\f508';font-size:23px;font-weight:500;margin-top:-3px;-webkit-font-smoothing:subpixel-antialiased}#bdb-books-filter .view-week:before{content:'\f164'}#bdb-books-filter .view-day:before{content:'\f163'}#bdb-books-filter #bdb-filter-by-year{float:left}#bdb-books-filter .calendar{table-layout:fixed;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#bdb-books-filter .calendar thead th,#bdb-books-filter .calendar tfoot th{text-align:center}#bdb-books-filter .calendar tbody td{border-bottom:1px solid #e1e1e1;border-right:1px solid #e1e1e1;padding:0;position:relative;text-align:left}#bdb-books-filter .calendar tbody td:hover{box-shadow:inset 0 0 0 1px #ccc !important}#bdb-books-filter .calendar a{display:block;margin:0;overflow-x:hidden;padding:0;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}#bdb-books-filter .calendar a:before{display:inline-block;font-family:'dashicons';font-size:15px;font-weight:normal;margin:0;width:18px;height:18px;position:absolute;left:2px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bdb-books-filter .calendar .bdb-books-for-cell{display:flex;flex-flow:row wrap}#bdb-books-filter .calendar .bdb-calendar-book-link{flex:0 33%;margin-right:-1px;overflow:visible;padding:0 0 0 20px;position:relative}#bdb-books-filter .calendar .bdb-calendar-book-link img{height:auto;max-width:100%}#bdb-books-filter .calendar .bdb-calendar-book-link .bdb-calendar-book-flags{background:white;border:1px solid #e1e1e1;border-bottom:none;border-left:none;box-shadow:-1px 1px 1px rgba(0,0,0,0.2);color:#aaa;position:absolute;top:-3px;right:-3px}#bdb-books-filter .calendar:not(.day) tbody td.saturday,#bdb-books-filter .calendar:not(.day) tbody td.sunday{background-color:#f1f1f1}#bdb-books-filter .calendar.month tbody tr th:last-of-type{border-right:1px solid #e1e1e1}#bdb-books-filter .calendar.month tbody th{background-color:#fff;border-bottom:1px solid #e1e1e1;height:80px}#bdb-books-filter .calendar.month tbody td{min-height:110px;position:relative}#bdb-books-filter .calendar.month tbody td .bdb-day-number,#bdb-books-filter .calendar.month tbody td a.bdb-add-book-for-day{background-color:rgba(255,255,255,0.8);border:1px solid transparent;border-bottom:1px solid #e1e1e1;color:#aaa;font-weight:600;line-height:1.9em;height:26px;width:26px;margin:0;padding:0;position:absolute;top:0;text-align:center}#bdb-books-filter .calendar.month tbody td .bdb-day-number:hover,#bdb-books-filter .calendar.month tbody td a.bdb-add-book-for-day:hover{background:rgba(245,245,245,0.8)}#bdb-books-filter .calendar.month tbody td a.bdb-add-book-for-day{border-left:1px solid #e1e1e1;right:0;visibility:hidden}#bdb-books-filter .calendar.month tbody td.today{background:#ffe}#bdb-books-filter .calendar.month tbody td:hover .bdb-day-number,#bdb-books-filter .calendar.month tbody td:hover a.bdb-add-book-for-day{border-color:#ccc}#bdb-books-filter .calendar.month tbody td:hover a.bdb-add-book-for-day{visibility:visible}#bdb-books-filter .calendar.month tbody td:last-of-type{border-right:none}#bdb-books-filter .calendar.month tbody td:last-of-type:not(.position-6){border-right:1px solid #e1e1e1}#bdb-books-filter .calendar.month tbody a i{font-size:15px;line-height:1.9em;overflow:hidden}#bdb-books-filter .calendar.month .bdb-books-for-cell{margin:30px 0 5px;min-height:80px}@media screen and (max-width: 782px){#bdb-books-filter .calendar.month .bdb-books-for-cell{margin:0;padding-top:30px}#bdb-books-filter .calendar.month tbody th.padding{display:none}#bdb-books-filter .calendar.month tbody td{border-width:0 0 1px 0 !important;padding:0;margin:0}}#bdb-filter-by-cy{float:left;width:80px}#bdb-book-index-title-custom{display:none}@media (min-width: 768px){#bdb-book-series-name-wrap{float:left;max-width:400px;width:60%}#bdb-book-series-position-wrap{float:left;max-width:150px;width:30%}}.bdb-books-in-series-wrap{display:flex;flex-flow:row wrap;margin:0 -5px}.bdb-books-in-series-wrap,.bdb-books-in-series-wrap *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bdb-books-in-series-wrap>a{flex:0 50%;padding:0 5px 5px}.bdb-books-in-series-wrap>a img{display:block;height:auto;max-width:100%}#bdb-book-purchase-links input[type="text"]{display:inline-block;min-width:300px;width:auto}#bdb-new-edition-fields,#bdb-new-reading-log-fields,.bdb-table-edit-value{display:none}.bdb-table-edit-value{display:none}.bdb-table-edit-value input,.bdb-table-edit-value select{max-width:100%}#bdb-book-reading-logs-list>h2>label{float:right;font-size:12px;font-weight:normal}.bdb-reading-log-progress-wrap{display:flex}.bdb-reading-log-progress-wrap input[type="number"]{width:100%}.bdb-reading-log-percentage-complete .bdb-input-suffix{display:block;padding:0 12px}.bdb-reading-log-percentage-complete .bdb-input-suffix:not(.bdb-input-suffix-selected){background:white;color:#b5b4b4}.bdb-reading-log-percentage-complete .bdb-input-suffix:not(.bdb-input-suffix-selected):hover{background:#f2f2f2;color:#6d6d6d}@media screen and (max-width: 782px){.bdb-reading-log-percentage-complete .bdb-input-suffix{line-height:38px}}.bdb-reading-log-percentage-complete .bdb-input-suffix-page{border-left:1px solid #7e8993}.bdb-reading-log-page-wrap>span{display:inline-block;position:relative}.bdb-reading-log-page-wrap .bdb-reading-log-max-pages{color:#a8a8a8;line-height:30px;position:absolute;right:28px;top:0}@media screen and (max-width: 782px){.bdb-reading-log-page-wrap .bdb-reading-log-max-pages{line-height:40px}}.bdb-edit-object #major-publishing-actions{overflow:hidden}.bdb-edit-object #delete-action a{color:#a00;text-decoration:none}#bdb-book-associated-with-review{clear:both;line-height:1.8;overflow:hidden}#bdb-book-associated-with-review .alignleft{margin-right:1.5em}#bdb-book-associated-with-review .alignright{margin-left:1.5em}#bdb-book-associated-with-review blockquote{font-style:italic}#bdb-edit-review #minor-publishing-actions{padding-bottom:10px}.bdb-id-col{color:#555}.bdb-admin-page .postbox>h2{border-bottom:1px solid #eee}.bdb-input-has-suffix{border-bottom-right-radius:0 !important;border-top-right-radius:0 !important}.bdb-input-suffix{background:#f1f1f1;border:1px solid #7e8993;border-left:none;display:inline-block;font-size:14px;line-height:2;margin:0 0 0 -4px;padding:0 8px 0}.bdb-meta-row{margin:1.5em 0}.bdb-meta-row>label{display:block;font-weight:600}.bdb-meta-row .description{color:#666;display:block;font-size:13px;font-style:italic;margin:2px 0 5px}.bdb-meta-row input[type="text"]:not(.bdb-color-picker):not(.text-small),.bdb-meta-row input[type="url"]:not(.bdb-color-picker):not(.text-small),.bdb-meta-row textarea:not(.bdb-color-picker):not(.text-small){display:block;width:99%}.bdb-meta-row input[type="number"]{display:inline-block;width:auto}.bdb-meta-row textarea{min-height:250px}.bdb-meta-row .regular-text,.bdb-meta-row .bdb-datepicker{max-width:550px}@media (min-width: 900px){.bdb-meta-row{clear:both;overflow:hidden}.bdb-meta-row>label{float:left;margin:0;width:18%}.bdb-meta-row .bdb-meta-value{float:right;width:80%}}.bdb-flexbox-container{box-sizing:border-box;display:flex;flex-flow:row wrap;justify-content:space-between;align-items:flex-start}#bdb-client-overview .bdb-flexbox-container{margin:0 -30px}.bdb-flexbox-container>section{background:#fafafa;border:1px solid #e5e5e5;box-sizing:border-box;margin:1em 0;padding:15px;width:100%}.bdb-flexbox-container>section h3{font-size:16px;margin-top:0}@media (min-width: 992px){.bdb-flexbox-container>section{margin:1em;width:auto}.bdb-flexbox-container>section.bdb-flexbox-third{flex-grow:0;margin-left:1%;margin-right:1%;width:31%}.bdb-flexbox-container>section.bdb-flexbox-half{flex-grow:0;margin-left:1%;margin-right:1%;width:48%}.bdb-flexbox-container>section.bdb-flexbox-full{flex-grow:0;flex-shrink:0;width:100%}}.bdb-notice{background:#fff;border-left:4px solid #fff;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);margin:1em 0;padding:.5em 12px}.bdb-notice-error{border-left-color:#dc3232}.bdb-notice-success{border-left-color:#46b450}.bdb-panels-wrap{background:white;border:1px solid #e5e5e5;margin:1em 0;min-height:350px;overflow:hidden}@media (min-width: 768px){.bdb-panels-wrap{display:flex}}.bdb-tabs{background:#f5f5f5;border-right:1px solid #e5e5e5;box-sizing:border-box;min-height:1em;margin:0;padding:0 0 10px;position:relative}@media (min-width: 768px){.bdb-tabs{min-width:25%}}.bdb-tabs>li{background:#fcfcfc;display:block;margin:0;padding:0}.bdb-tabs>li>a{border-bottom:1px solid #e5e5e5;box-shadow:none;display:block;line-height:20px;margin:0;padding:10px;text-decoration:none}.bdb-tabs>li>a:focus{box-shadow:none}.bdb-tabs>li>a .dashicons{color:#888}.bdb-tabs>li.bdb-tab-active>a{background:white;border-left:5px solid;border-right:none;color:#555;font-weight:bold}.bdb-tabs>li.bdb-tab-active>a .dashicons{color:#555}.admin-color-fresh .bdb-tabs>li.bdb-tab-active>a{border-left-color:#0073aa}.admin-color-blue .bdb-tabs>li.bdb-tab-active>a{border-left-color:#096484}.admin-color-coffee .bdb-tabs>li.bdb-tab-active>a{border-left-color:#096484}.admin-color-ectoplasm .bdb-tabs>li.bdb-tab-active>a{border-left-color:#a3b745}.admin-color-midnight .bdb-tabs>li.bdb-tab-active>a{border-left-color:#26292c}.admin-color-ocean .bdb-tabs>li.bdb-tab-active>a{border-left-color:#627c83}.admin-color-sunrise .bdb-tabs>li.bdb-tab-active>a{border-left-color:#be3631}.admin-color-light .bdb-tabs>li.bdb-tab-active>a{border-left-color:#888}.admin-color-evergreen .bdb-tabs>li.bdb-tab-active>a{border-left-color:#36533f}.admin-color-mint .bdb-tabs>li.bdb-tab-active>a{border-left-color:#4f6d59}.bdb-panels{flex:1}.bdb-panel{padding:0 30px 30px}.bdb-panel>h2{border-bottom:1px solid #e5e5e5;font-size:14px;font-weight:600;margin:0 -30px 1em -30px;padding:11px 30px 11px;text-align:left}.bdb-panel>h2:not(:first-child){border-top:1px solid #e5e5e5;margin-top:1em}.bdb-panel:not(.bdb-panel-active){display:none}.bdb-rating{display:inline-block;min-width:60px}.bdb-rating.bdb-five-stars,.bdb-rating.bdb-four-half-stars,.bdb-rating.bdb-four-stars{color:#090}.bdb-rating.bdb-three-half-stars,.bdb-rating.bdb-three-stars,.bdb-rating.bdb-two-half-stars{color:#da9d1c}.bdb-rating.bdb-two-stars,.bdb-rating.bdb-one-half-stars,.bdb-rating.bdb-one-star,.bdb-rating.bdb-half-star,.bdb-rating.bdb-zero-stars,.bdb-rating.bdb-dnf{color:#c00}.bdb-tags-wrap input[type="text"],.bdb-new-checkbox-term input[type="text"]{float:left;height:28px;margin:0 4px 0 0;max-width:504px !important;position:relative}.bdb-tags-checklist{clear:both;font-size:12px;margin-left:14px;overflow:auto}.bdb-tags-checklist:before,.bdb-tags-checklist:after{clear:both;content:' ';display:table}.bdb-tags-checklist span{cursor:default;display:block;float:left;font-size:13px;line-height:1.8em;margin-right:25px;max-width:100%;overflow:hidden;text-overflow:ellipsis}.bdb-tags-checklist span a{cursor:pointer;display:block;float:left;margin:1px 0 0 -17px;width:20px;height:20px;overflow:hidden;position:absolute;text-indent:0}.bdb-tags-checklist span a:before{background:none;color:#b4b9be;content:"\f153";display:block;font:normal 16px/20px dashicons;margin:1px 0;height:20px;width:20px;speak:none;text-align:center;-webkit-font-smoothing:antialiased}.bdb-tags-checklist span a:hover:before{color:#c00}.bdb-taxonomy-checkboxes label{display:block;float:none;font-weight:normal;margin-bottom:3px;width:auto}.bdb-checkbox-wrap{background:#fdfdfd;border:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:1em;max-height:150px;max-width:550px;overflow-y:scroll;padding:.9em}#bdb-book-layout-builder{clear:both;margin:0 0 1em;overflow:hidden;position:relative}#bdb-book-layout-builder *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bdb-book-layout-builder h3{text-align:center;margin:0 0 1em}@media (min-width: 950px){#bdb-book-layout-builder{max-width:950px}}@media (min-width: 1200px){#bdb-enabled-book-settings{float:left;width:70%}}#bdb-enabled-book-settings #bdb-book-option-cover{background:#93648d;background-size:cover;border:none;color:white;display:block;margin:0 auto 1em;height:415px;width:300px;text-align:center;z-index:20}#bdb-enabled-book-settings #bdb-book-option-cover:before{color:rgba(255,255,255,0.25);content:'Book Title by Book Author';display:block;font-size:22px;margin-top:-28px;max-width:100%;padding:0 20%;position:absolute;top:50%;left:0;z-index:1}#bdb-enabled-book-settings #bdb-book-option-cover .bdb-book-option-title,#bdb-enabled-book-settings #bdb-book-option-cover .bdb-book-option-fields,#bdb-enabled-book-settings #bdb-book-option-cover button{position:relative;z-index:20}#bdb-enabled-book-settings #bdb-book-option-cover button{background:white}#bdb-enabled-book-settings #bdb-book-option-cover button:hover{background:rgba(255,255,255,0.8)}#bdb-enabled-book-settings #bdb-book-option-cover .bdb-book-option-fields{background:white;color:#444;overflow:visible;padding:5px}@media (min-width: 768px){#bdb-enabled-book-settings #bdb-book-option-cover.bdb-book-cover-align-left{float:left;margin:0 1em 1em 0}#bdb-enabled-book-settings #bdb-book-option-cover.bdb-book-cover-align-center{display:block;margin:0 auto 1em}#bdb-enabled-book-settings #bdb-book-option-cover.bdb-book-cover-align-right{float:right;margin:0 0 1em 1em}}#bdb-enabled-book-settings-inner{background:white;clear:both;overflow:hidden;padding:15px}#bdb-available-book-settings{margin-top:1.5em}@media (min-width: 1200px){#bdb-available-book-settings{float:right;margin-top:0;width:28%}}#bdb-available-book-settings .bdb-book-option-name{display:none}#bdb-available-book-settings .bdb-book-option button{display:none}#bdb-available-book-settings-inner{border:2px dashed #ccc;padding:15px}.bdb-book-option{background:white;border:1px solid rgba(0,0,0,0.1);margin:5px 0;padding:10px;position:relative}.bdb-book-option:hover{cursor:move}.bdb-book-option button{background:rgba(0,0,0,0.05);border:none;cursor:pointer;font-size:12px}.bdb-book-option button:hover{background:rgba(0,0,0,0.1)}.bdb-book-option textarea,.bdb-book-option select,.bdb-book-option label{display:block;width:100%}.bdb-book-option textarea{height:100px}.bdb-book-option-name{background:white;color:rgba(0,0,0,0.5);font-size:10px;padding:0 4px;position:absolute;top:5px;right:5px;text-transform:uppercase;z-index:10}.bdb-book-option-fields{display:none;margin-top:.5em;overflow:hidden}.bdb-sortable-placeholder{border:1px dashed rgba(0,0,0,0.1);height:40px}.bdb-book-option-field-wrap{margin-top:.5em}.bdb-new-line-option{margin-top:.5em}.bdb-new-line-option label{display:inline}#bdb-settings-wrap .widefat th{padding:8px 10px !important}#bdb-settings-wrap tfoot tr:not(:first-child){background:#f9f9f9}#bdb-retailers .regular-text{max-width:100%} - - -/*# sourceMappingURL=admin-style.min.css.map*/ \ No newline at end of file diff --git a/assets/css/admin.css b/assets/css/admin.css new file mode 100644 index 00000000..15984787 --- /dev/null +++ b/assets/css/admin.css @@ -0,0 +1 @@ +#bdb-book-analytics-wrap hr{margin:3em 0}#bdb-book-analytics-wrap .bdb-flexbox-container{align-items:normal}.bdb-analytics-block{flex-grow:1;position:relative}.bdb-analytics-block.bdb-dataset-type-dataset,.bdb-analytics-block.bdb-dataset-type-value{text-align:center}.bdb-analytics-block.bdb-dataset-type-graph{max-width:100%;width:inherit!important}.bdb-analytics-block.bdb-dataset-type-chart>div>div,.bdb-analytics-block.bdb-dataset-type-graph>div>div{min-height:500px}.bdb-analytics-block .bdb-dataset-book-grid{justify-content:start}.bdb-analytics-block .bdb-dataset-book-grid figure{box-sizing:border-box;margin:0;padding:5px;width:25%}.bdb-analytics-block .bdb-dataset-book-grid figure img{height:auto;max-width:100%}.bdb-analytics-block.bdb-dataset-type-dataset{display:flex}.bdb-analytics-block.bdb-dataset-type-dataset .bdb-dataset-section{flex-basis:0;flex-grow:1}.bdb-analytics-block .spinner{float:none}.bdb-analytics-block .bdb-dataset-value{font-size:16px}.bdb-analytics-block .bdb-dataset-period{background:#fff;border-color:#e5e5e5 #fff #fff #e5e5e5;border-style:solid;border-top-left-radius:8px;border-width:1px;bottom:0;color:#aaa;margin:0 -1px -1px 0;padding:4px 0 0 9px;position:absolute;right:0}.bdb-loading{min-height:30px}#bdb-circleG{margin:auto;width:64px}.bdb-circleG{animation-direction:normal;-o-animation-direction:normal;-ms-animation-direction:normal;-webkit-animation-direction:normal;-moz-animation-direction:normal;animation-duration:1.3675s;-o-animation-duration:1.3675s;-ms-animation-duration:1.3675s;-webkit-animation-duration:1.3675s;-moz-animation-duration:1.3675s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;animation-name:bounce_circleG;-o-animation-name:bounce_circleG;-ms-animation-name:bounce_circleG;-webkit-animation-name:bounce_circleG;-moz-animation-name:bounce_circleG;background-color:hsla(0,0%,100%,.86);border-radius:9px;-o-border-radius:9px;-ms-border-radius:9px;-webkit-border-radius:9px;-moz-border-radius:9px;float:left;height:14px;margin-left:7px;width:14px}#bdb-circleG_1{animation-delay:.2695s;-o-animation-delay:.2695s;-ms-animation-delay:.2695s;-webkit-animation-delay:.2695s;-moz-animation-delay:.2695s}#bdb-circleG_2{animation-delay:.6355s;-o-animation-delay:.6355s;-ms-animation-delay:.6355s;-webkit-animation-delay:.6355s;-moz-animation-delay:.6355s}#bdb-circleG_3{animation-delay:.8185s;-o-animation-delay:.8185s;-ms-animation-delay:.8185s;-webkit-animation-delay:.8185s;-moz-animation-delay:.8185s}@keyframes bounce_circleG{50%{background-color:hsla(0,0%,44%,.84)}}@-webkit-keyframes bounce_circleG{50%{background-color:hsla(0,0%,44%,.84)}}#bdb-books-filter .view-month:before{-webkit-font-smoothing:subpixel-antialiased;content:"\f508";font-size:23px;font-weight:500;margin-top:-3px}#bdb-books-filter .view-week:before{content:"\f164"}#bdb-books-filter .view-day:before{content:"\f163"}#bdb-books-filter #bdb-filter-by-year{float:left}#bdb-books-filter .calendar{-webkit-touch-callout:none;table-layout:fixed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#bdb-books-filter .calendar tfoot th,#bdb-books-filter .calendar thead th{text-align:center}#bdb-books-filter .calendar tbody td{border-bottom:1px solid #e1e1e1;border-right:1px solid #e1e1e1;padding:0;position:relative;text-align:left}#bdb-books-filter .calendar tbody td:hover{box-shadow:inset 0 0 0 1px #ccc!important}#bdb-books-filter .calendar a{display:block;margin:0;overflow-x:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}#bdb-books-filter .calendar a:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:dashicons;font-size:15px;font-weight:400;height:18px;left:2px;margin:0;position:absolute;width:18px}#bdb-books-filter .calendar .bdb-books-for-cell{display:flex;flex-flow:row wrap}#bdb-books-filter .calendar .bdb-calendar-book-link{flex:0 33%;margin-right:-1px;overflow:visible;padding:0 0 0 20px;position:relative}#bdb-books-filter .calendar .bdb-calendar-book-link img{height:auto;max-width:100%}#bdb-books-filter .calendar .bdb-calendar-book-link .bdb-calendar-book-flags{background:#fff;border:1px solid #e1e1e1;border-bottom:none;border-left:none;box-shadow:-1px 1px 1px rgba(0,0,0,.2);color:#aaa;position:absolute;right:-3px;top:-3px}#bdb-books-filter .calendar:not(.day) tbody td.saturday,#bdb-books-filter .calendar:not(.day) tbody td.sunday{background-color:#f1f1f1}#bdb-books-filter .calendar.month tbody tr th:last-of-type{border-right:1px solid #e1e1e1}#bdb-books-filter .calendar.month tbody th{background-color:#fff;border-bottom:1px solid #e1e1e1;height:80px}#bdb-books-filter .calendar.month tbody td{min-height:110px;position:relative}#bdb-books-filter .calendar.month tbody td .bdb-day-number,#bdb-books-filter .calendar.month tbody td a.bdb-add-book-for-day{background-color:hsla(0,0%,100%,.8);border:1px solid transparent;border-bottom-color:#e1e1e1;color:#aaa;font-weight:600;height:26px;line-height:1.9em;margin:0;padding:0;position:absolute;text-align:center;top:0;width:26px}#bdb-books-filter .calendar.month tbody td .bdb-day-number:hover,#bdb-books-filter .calendar.month tbody td a.bdb-add-book-for-day:hover{background:hsla(0,0%,96%,.8)}#bdb-books-filter .calendar.month tbody td a.bdb-add-book-for-day{border-left:1px solid #e1e1e1;right:0;visibility:hidden}#bdb-books-filter .calendar.month tbody td.today{background:#ffe}#bdb-books-filter .calendar.month tbody td:hover .bdb-day-number,#bdb-books-filter .calendar.month tbody td:hover a.bdb-add-book-for-day{border-color:#ccc}#bdb-books-filter .calendar.month tbody td:hover a.bdb-add-book-for-day{visibility:visible}#bdb-books-filter .calendar.month tbody td:last-of-type{border-right:none}#bdb-books-filter .calendar.month tbody td:last-of-type:not(.position-6){border-right:1px solid #e1e1e1}#bdb-books-filter .calendar.month tbody a i{font-size:15px;line-height:1.9em;overflow:hidden}#bdb-books-filter .calendar.month .bdb-books-for-cell{margin:30px 0 5px;min-height:80px}@media screen and (max-width:782px){#bdb-books-filter .calendar.month .bdb-books-for-cell{margin:0;padding-top:30px}#bdb-books-filter .calendar.month tbody th.padding{display:none}#bdb-books-filter .calendar.month tbody td{border-width:0 0 1px!important;margin:0;padding:0}}#bdb-filter-by-cy{float:left;width:80px}#bdb-book-index-title-custom{display:none}@media (min-width:768px){#bdb-book-series-name-wrap{float:left;max-width:400px;width:60%}#bdb-book-series-position-wrap{float:left;max-width:150px;width:30%}}.bdb-books-in-series-wrap{display:flex;flex-flow:row wrap;margin:0 -5px}.bdb-books-in-series-wrap,.bdb-books-in-series-wrap *{box-sizing:border-box}.bdb-books-in-series-wrap>a{flex:0 50%;padding:0 5px 5px}.bdb-books-in-series-wrap>a img{display:block;height:auto;max-width:100%}#bdb-book-purchase-links input[type=text]{display:inline-block;min-width:300px;width:auto}#bdb-new-edition-fields,#bdb-new-reading-log-fields,.bdb-table-edit-value{display:none}.bdb-table-edit-value input,.bdb-table-edit-value select{max-width:100%}#bdb-book-reading-logs-list>h2>label{float:right;font-size:12px;font-weight:400}.bdb-reading-log-progress-wrap{display:flex}.bdb-reading-log-progress-wrap input[type=number]{width:100%}.bdb-reading-log-percentage-complete .bdb-input-suffix{display:block;padding:0 12px}.bdb-reading-log-percentage-complete .bdb-input-suffix:not(.bdb-input-suffix-selected){background:#fff;color:#b5b4b4}.bdb-reading-log-percentage-complete .bdb-input-suffix:not(.bdb-input-suffix-selected):hover{background:#f2f2f2;color:#6d6d6d}@media screen and (max-width:782px){.bdb-reading-log-percentage-complete .bdb-input-suffix{line-height:38px}}.bdb-reading-log-percentage-complete .bdb-input-suffix-page{border-left:1px solid #7e8993}.bdb-reading-log-page-wrap>span{display:inline-block;position:relative}.bdb-reading-log-page-wrap .bdb-reading-log-max-pages{color:#a8a8a8;line-height:30px;position:absolute;right:28px;top:0}@media screen and (max-width:782px){.bdb-reading-log-page-wrap .bdb-reading-log-max-pages{line-height:40px}}.bdb-edit-object #major-publishing-actions{overflow:hidden}.bdb-edit-object #delete-action a{color:#a00;text-decoration:none}#bdb-book-associated-with-review{clear:both;line-height:1.8;overflow:hidden}#bdb-book-associated-with-review .alignleft{margin-right:1.5em}#bdb-book-associated-with-review .alignright{margin-left:1.5em}#bdb-book-associated-with-review blockquote{font-style:italic}#bdb-edit-review #minor-publishing-actions{padding-bottom:10px}.bdb-id-col{color:#555}.bdb-admin-page .postbox>h2{border-bottom:1px solid #eee}.bdb-input-has-suffix{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.bdb-input-suffix{background:#f1f1f1;border:1px solid #7e8993;border-left:none;display:inline-block;font-size:14px;line-height:2;margin:0 0 0 -4px;padding:0 8px}.bdb-meta-row{margin:1.5em 0}.bdb-meta-row>label{display:block;font-weight:600}.bdb-meta-row .description{color:#666;display:block;font-size:13px;font-style:italic;margin:2px 0 5px}.bdb-meta-row input[type=text]:not(.bdb-color-picker):not(.text-small),.bdb-meta-row input[type=url]:not(.bdb-color-picker):not(.text-small),.bdb-meta-row textarea:not(.bdb-color-picker):not(.text-small){display:block;width:99%}.bdb-meta-row input[type=number]{display:inline-block;width:auto}.bdb-meta-row textarea{min-height:250px}.bdb-meta-row .bdb-datepicker,.bdb-meta-row .regular-text{max-width:550px}@media (min-width:900px){.bdb-meta-row{clear:both;overflow:hidden}.bdb-meta-row>label{float:left;margin:0;width:18%}.bdb-meta-row .bdb-meta-value{float:right;width:80%}}.bdb-flexbox-container{align-items:flex-start;box-sizing:border-box;display:flex;flex-flow:row wrap;justify-content:space-between}#bdb-client-overview .bdb-flexbox-container{margin:0 -30px}.bdb-flexbox-container>section{background:#fafafa;border:1px solid #e5e5e5;box-sizing:border-box;margin:1em 0;padding:15px;width:100%}.bdb-flexbox-container>section h3{font-size:16px;margin-top:0}@media (min-width:992px){.bdb-flexbox-container>section{margin:1em;width:auto}.bdb-flexbox-container>section.bdb-flexbox-third{flex-grow:0;margin-left:1%;margin-right:1%;width:31%}.bdb-flexbox-container>section.bdb-flexbox-half{flex-grow:0;margin-left:1%;margin-right:1%;width:48%}.bdb-flexbox-container>section.bdb-flexbox-full{flex-grow:0;flex-shrink:0;width:100%}}.bdb-notice{background:#fff;border-left:4px solid #fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:1em 0;padding:.5em 12px}.bdb-notice-error{border-left-color:#dc3232}.bdb-notice-success{border-left-color:#46b450}.bdb-panels-wrap{background:#fff;border:1px solid #e5e5e5;margin:1em 0;min-height:350px;overflow:hidden}@media (min-width:768px){.bdb-panels-wrap{display:flex}}.bdb-tabs{background:#f5f5f5;border-right:1px solid #e5e5e5;box-sizing:border-box;margin:0;min-height:1em;padding:0 0 10px;position:relative}@media (min-width:768px){.bdb-tabs{min-width:25%}}.bdb-tabs>li{background:#fcfcfc;display:block;margin:0;padding:0}.bdb-tabs>li>a{border-bottom:1px solid #e5e5e5;display:block;line-height:20px;margin:0;padding:10px;text-decoration:none}.bdb-tabs>li>a,.bdb-tabs>li>a:focus{box-shadow:none}.bdb-tabs>li>a .dashicons{color:#888}.bdb-tabs>li.bdb-tab-active>a{background:#fff;border-left:5px solid;border-right:none;color:#555;font-weight:700}.bdb-tabs>li.bdb-tab-active>a .dashicons{color:#555}.admin-color-fresh .bdb-tabs>li.bdb-tab-active>a{border-left-color:#0073aa}.admin-color-blue .bdb-tabs>li.bdb-tab-active>a,.admin-color-coffee .bdb-tabs>li.bdb-tab-active>a{border-left-color:#096484}.admin-color-ectoplasm .bdb-tabs>li.bdb-tab-active>a{border-left-color:#a3b745}.admin-color-midnight .bdb-tabs>li.bdb-tab-active>a{border-left-color:#26292c}.admin-color-ocean .bdb-tabs>li.bdb-tab-active>a{border-left-color:#627c83}.admin-color-sunrise .bdb-tabs>li.bdb-tab-active>a{border-left-color:#be3631}.admin-color-light .bdb-tabs>li.bdb-tab-active>a{border-left-color:#888}.admin-color-evergreen .bdb-tabs>li.bdb-tab-active>a{border-left-color:#36533f}.admin-color-mint .bdb-tabs>li.bdb-tab-active>a{border-left-color:#4f6d59}.bdb-panels{flex:1}.bdb-panel{padding:0 30px 30px}.bdb-panel>h2{border-bottom:1px solid #e5e5e5;font-size:14px;font-weight:600;margin:0 -30px 1em;padding:11px 30px;text-align:left}.bdb-panel>h2:not(:first-child){border-top:1px solid #e5e5e5;margin-top:1em}.bdb-panel:not(.bdb-panel-active){display:none}.bdb-rating{display:inline-block;min-width:60px}.bdb-rating.bdb-five-stars,.bdb-rating.bdb-four-half-stars,.bdb-rating.bdb-four-stars{color:#090}.bdb-rating.bdb-three-half-stars,.bdb-rating.bdb-three-stars,.bdb-rating.bdb-two-half-stars{color:#da9d1c}.bdb-rating.bdb-dnf,.bdb-rating.bdb-half-star,.bdb-rating.bdb-one-half-stars,.bdb-rating.bdb-one-star,.bdb-rating.bdb-two-stars,.bdb-rating.bdb-zero-stars{color:#c00}.bdb-new-checkbox-term input[type=text],.bdb-tags-wrap input[type=text]{float:left;height:28px;margin:0 4px 0 0;max-width:504px!important;position:relative}.bdb-tags-checklist{clear:both;font-size:12px;margin-left:14px;overflow:auto}.bdb-tags-checklist:after,.bdb-tags-checklist:before{clear:both;content:" ";display:table}.bdb-tags-checklist span{cursor:default;display:block;float:left;font-size:13px;line-height:1.8em;margin-right:25px;max-width:100%;overflow:hidden;text-overflow:ellipsis}.bdb-tags-checklist span a{cursor:pointer;display:block;float:left;height:20px;margin:1px 0 0 -17px;overflow:hidden;position:absolute;text-indent:0;width:20px}.bdb-tags-checklist span a:before{speak:none;-webkit-font-smoothing:antialiased;background:none;color:#b4b9be;content:"\f153";display:block;font:normal 16px/20px dashicons;height:20px;margin:1px 0;text-align:center;width:20px}.bdb-tags-checklist span a:hover:before{color:#c00}.bdb-taxonomy-checkboxes label{display:block;float:none;font-weight:400;margin-bottom:3px;width:auto}.bdb-checkbox-wrap{background:#fdfdfd;border:1px solid #ddd;box-sizing:border-box;margin-bottom:1em;max-height:150px;max-width:550px;overflow-y:scroll;padding:.9em}#bdb-book-layout-builder{clear:both;margin:0 0 1em;overflow:hidden;position:relative}#bdb-book-layout-builder *{box-sizing:border-box}#bdb-book-layout-builder h3{margin:0 0 1em;text-align:center}@media (min-width:950px){#bdb-book-layout-builder{max-width:950px}}@media (min-width:1200px){#bdb-enabled-book-settings{float:left;width:70%}}#bdb-enabled-book-settings #bdb-book-option-cover{background:#93648d;background-size:cover;border:none;color:#fff;display:block;height:415px;margin:0 auto 1em;text-align:center;width:300px;z-index:20}#bdb-enabled-book-settings #bdb-book-option-cover:before{color:hsla(0,0%,100%,.25);content:"Book Title by Book Author";display:block;font-size:22px;left:0;margin-top:-28px;max-width:100%;padding:0 20%;position:absolute;top:50%;z-index:1}#bdb-enabled-book-settings #bdb-book-option-cover .bdb-book-option-fields,#bdb-enabled-book-settings #bdb-book-option-cover .bdb-book-option-title,#bdb-enabled-book-settings #bdb-book-option-cover button{position:relative;z-index:20}#bdb-enabled-book-settings #bdb-book-option-cover button{background:#fff}#bdb-enabled-book-settings #bdb-book-option-cover button:hover{background:hsla(0,0%,100%,.8)}#bdb-enabled-book-settings #bdb-book-option-cover .bdb-book-option-fields{background:#fff;color:#444;overflow:visible;padding:5px}@media (min-width:768px){#bdb-enabled-book-settings #bdb-book-option-cover.bdb-book-cover-align-left{float:left;margin:0 1em 1em 0}#bdb-enabled-book-settings #bdb-book-option-cover.bdb-book-cover-align-center{display:block;margin:0 auto 1em}#bdb-enabled-book-settings #bdb-book-option-cover.bdb-book-cover-align-right{float:right;margin:0 0 1em 1em}}#bdb-enabled-book-settings-inner{background:#fff;clear:both;overflow:hidden;padding:15px}#bdb-available-book-settings{margin-top:1.5em}@media (min-width:1200px){#bdb-available-book-settings{float:right;margin-top:0;width:28%}}#bdb-available-book-settings .bdb-book-option button,#bdb-available-book-settings .bdb-book-option-name{display:none}#bdb-available-book-settings-inner{border:2px dashed #ccc;padding:15px}.bdb-book-option{background:#fff;border:1px solid rgba(0,0,0,.1);margin:5px 0;padding:10px;position:relative}.bdb-book-option:hover{cursor:move}.bdb-book-option button{background:rgba(0,0,0,.05);border:none;cursor:pointer;font-size:12px}.bdb-book-option button:hover{background:rgba(0,0,0,.1)}.bdb-book-option label,.bdb-book-option select,.bdb-book-option textarea{display:block;width:100%}.bdb-book-option textarea{height:100px}.bdb-book-option-name{background:#fff;color:rgba(0,0,0,.5);font-size:10px;padding:0 4px;position:absolute;right:5px;text-transform:uppercase;top:5px;z-index:10}.bdb-book-option-fields{display:none;margin-top:.5em;overflow:hidden}.bdb-sortable-placeholder{border:1px dashed rgba(0,0,0,.1);height:40px}.bdb-book-option-field-wrap,.bdb-new-line-option{margin-top:.5em}.bdb-new-line-option label{display:inline}#bdb-settings-wrap .widefat th{padding:8px 10px!important}#bdb-settings-wrap tfoot tr:not(:first-child){background:#f9f9f9}#bdb-retailers .regular-text{max-width:100%} diff --git a/assets/css/front-end.css b/assets/css/front-end.css new file mode 100644 index 00000000..187e0160 --- /dev/null +++ b/assets/css/front-end.css @@ -0,0 +1 @@ +.bdb-book-grid{display:flex;flex-flow:row wrap;margin:0 -10px}@media (min-width:768px){.bdb-book-grid:not(.bdb-book-grid-col-2) .bdb-grid-entry{flex:0 33.3%}}@media (min-width:992px){.bdb-book-grid:not(.bdb-book-grid-col-2) .bdb-grid-entry{flex:0 25%}}.bdb-grid-entry{flex:0 50%;margin-bottom:3em;padding:10px;text-align:center}.bdb-grid-entry a{border:none}.bdb-read-review-link{display:block;width:100%}.bdb-pagination{margin:1.5em 0}@media (min-width:768px){.bdb-book-grid-number-results{text-align:right}}#bdb-filter-book-reviews{margin:0 0 1.5em}.bdb-reset-search-filters{display:inline-block;margin-left:1em}.bdb-filter-option{margin:0 0 1.5em}@media (min-width:768px){.bdb-filters{display:flex;flex-flow:row wrap;margin:0 -10px}.bdb-filter-option{flex:0 33.3%;padding:0 10px}}.bdb-reading-log-widget-list .bdb-reading-log-book-title,.bdb-reviews-widget .bdb-reviews-widget-book-title{display:block;font-weight:700} diff --git a/assets/css/front-end.min.css b/assets/css/front-end.min.css deleted file mode 100644 index f66b1b20..00000000 --- a/assets/css/front-end.min.css +++ /dev/null @@ -1,4 +0,0 @@ -.bdb-book-grid{display:flex;flex-flow:row wrap;margin:0 -10px}@media (min-width: 768px){.bdb-book-grid:not(.bdb-book-grid-col-2) .bdb-grid-entry{flex:0 33.3%}}@media (min-width: 992px){.bdb-book-grid:not(.bdb-book-grid-col-2) .bdb-grid-entry{flex:0 25%}}.bdb-grid-entry{flex:0 50%;margin-bottom:3em;padding:10px;text-align:center}.bdb-grid-entry a{border:none}.bdb-read-review-link{display:block;width:100%}.bdb-pagination{margin:1.5em 0}@media (min-width: 768px){.bdb-book-grid-number-results{text-align:right}}#bdb-filter-book-reviews{margin:0 0 1.5em}.bdb-reset-search-filters{display:inline-block;margin-left:1em}.bdb-filter-option{margin:0 0 1.5em}@media (min-width: 768px){.bdb-filters{display:flex;flex-flow:row wrap;margin:0 -10px}.bdb-filter-option{flex:0 33.3%;padding:0 10px}}.bdb-reviews-widget .bdb-reviews-widget-book-title,.bdb-reading-log-widget-list .bdb-reading-log-book-title{display:block;font-weight:bold} - - -/*# sourceMappingURL=front-end.min.css.map*/ \ No newline at end of file diff --git a/assets/js/build/admin-global.js b/assets/js/build/admin-global.js new file mode 100644 index 00000000..e9e87db4 --- /dev/null +++ b/assets/js/build/admin-global.js @@ -0,0 +1 @@ +(()=>{"use strict";function e(e){var t=bdbVars.is_admin?'':bdbVars.please_wait;e.prop("disabled",!0).data("text",e.text()).html(t)}function t(e){e.prop("disabled",!1).text(e.data("text"))}function r(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"POST",n={method:r,url:bdbVars.api_base+"book-database/"+e,beforeSend:function(e){e.setRequestHeader("X-WP-Nonce",bdbVars.api_nonce)},xhrFields:{withCredentials:!0},data:t};return new Promise((function(e,t){jQuery.ajax(n).success((function(t){e(t)})).error((function(e,r,n){var a=bdbVars.generic_erroc;void 0!==e.responseJSON?void 0!==(a=e.responseJSON).message&&(a=a.message):void 0!==e.message&&(a=e.message),t(a)}))}))}var n={init:function(){jQuery(".bdb-currently-reading-widget-update-progress").on("click",this.updatePercentage),jQuery(".bdb-currently-reading-progress-unit-choices").on("click","a",this.setUnit),jQuery(".bdb-currently-reading-widget-save-progress").on("click",this.saveProgress),jQuery(".bdb-currently-reading-set-progress-wrap").on("keydown","input",this.saveProgressOnEnter),jQuery(".bdb-currently-reading-widget-finish-book").on("click",this.finishBook),jQuery(".bdb-currently-reading-widget-dnf-book").on("click",this.dnfBook),jQuery(".bdb-currently-reading-widget-set-rating").on("click",this.setRating)},updatePercentage:function(e){e.preventDefault(),jQuery(this).closest("li").find(".bdb-currently-reading-set-progress-wrap").slideToggle()},setUnit:function(e){e.preventDefault();var t=jQuery(this).closest(".bdb-currently-reading-set-progress-wrap"),r=jQuery(this).data("unit");t.find(".bdb-currently-reading-progress-unit-choices a").removeClass("bdb-currently-reading-progress-unit-selected"),jQuery(this).addClass("bdb-currently-reading-progress-unit-selected"),"page"===r?(t.find(".bdb-currently-reading-unit-percentage-wrap").hide(),t.find(".bdb-currently-reading-unit-pages-wrap").show()):(t.find(".bdb-currently-reading-unit-percentage-wrap").show(),t.find(".bdb-currently-reading-unit-pages-wrap").hide())},saveProgress:function(n){n.preventDefault();var a,i=jQuery(this),o=i.closest("li"),s=o.data("log-id"),d=o.find(".bdb-currently-reading-progress-unit-selected").data("unit"),u=0,l=o.find(".bdb-currently-reading-progress-bar"),c=o.find(".bdb-currently-reading-progress-number");if(e(i),"page"===d){var b=o.find(".bdb-currently-reading-unit-page"),p=parseInt(b.data("max")),f=parseInt(b.val());p>0&&(u=f/p,a=Math.round(100*u))}else{var h=o.find(".bdb-currently-reading-unit-percentage");(a=parseFloat(h.val()))>0&&(u=a/100)}r("v1/reading-log/update/"+s,{percentage_complete:u},"POST").then((function(e){l.css("width",a+"%"),c.text(a+"%")})).catch((function(e){console.log(e)})).finally((function(){t(i),o.find(".bdb-currently-reading-set-progress-wrap").slideUp()}))},saveProgressOnEnter:function(e){13===e.keyCode&&(e.preventDefault(),jQuery(this).closest("li").find(".bdb-currently-reading-widget-save-progress").trigger("click"))},finishBook:function(n){if(n.preventDefault(),!confirm(bdbVars.confirm_finish_book))return!1;var a=jQuery(this);e(a);var i=a.closest("li"),o={percentage_complete:1,date_finished:i.data("now")};r("v1/reading-log/update/"+i.data("log-id"),o,"POST").then((function(e){i.find(".bdb-currently-reading-data").remove(),i.find(".bdb-currently-reading-rate-book").show()})).catch((function(e){console.log(e)})).finally((function(){t(a)}))},dnfBook:function(n){if(n.preventDefault(),!confirm(bdbVars.confirm_dnf_book))return!1;var a=jQuery(this);e(a);var i=a.closest("li"),o={date_finished:i.data("now")};r("v1/reading-log/update/"+i.data("log-id"),o,"POST").then((function(e){i.find(".bdb-currently-reading-data").remove(),i.find(".bdb-currently-reading-rate-book").show()})).catch((function(e){console.log(e)})).finally((function(){t(a)}))},setRating:function(n){n.preventDefault();var a=jQuery(this);e(a);var i=a.closest("li"),o={rating:i.find(".bdb-currently-reading-rating").val()};r("v1/reading-log/update/"+i.data("log-id"),o,"POST").then((function(e){var t,r,n,a;i.find(".bdb-currently-reading-rate-book").empty().append("

"+(t=o.rating,r="",n=Math.floor(t),a=Math.ceil(t-n),(r+="★".repeat(n))+"½".repeat(a)+"

"))})).catch((function(e){console.log(e)})).finally((function(){t(a)}))}},a="YYYY-MM-DD HH:mm:ss",i="MMMM D, YYYY";function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mysql";if(""===e||!e)return"";t="display"===t?i:a;var r=(e=moment.utc(e)).local().format(t);return r}var s={postID:0,userID:0,bookID:0,table:!1,tableBody:!1,errorWrap:!1,searchResultsWrap:!1,init:function(){document.getElementById("bdb-post-reviews-table")&&(this.table=jQuery("#bdb-post-reviews-table"),this.postID=this.table.data("post-id"),this.userID=this.table.data("user-id"),this.tableBody=this.table.find("tbody"),this.errorWrap=jQuery("#bdb-post-reviews-errors"),this.searchResultsWrap=jQuery("#bdb-book-search-results"),this.getReviews(),jQuery("#bdb-associated-review-post").on("click",this.toggleSearch),jQuery("#bdb-search-book-title-author").on("keypress",this.searchBooks),jQuery("#bdb-search-book-fields").on("click","button",this.searchBooks),this.searchResultsWrap.on("click","a",this.selectBook),jQuery("#bdb-add-review").on("click",this.addReview),jQuery(document).on("click",".bdb-disassociate-review-from-post",this.disassociateReview),jQuery(document).on("click",".bdb-delete-review",this.deleteReview))},getReviews:function(){r("v1/reviews",{rating_format:"text",review_query:[{field:"post_id",value:s.postID}]},"GET").then((function(e){s.tableBody.empty(),0===e.length||void 0===e.length?s.tableBody.append(wp.template("bdb-table-post-reviews-row-empty")):jQuery.each(e,(function(e,t){s.tableBody.append(wp.template("bdb-table-post-reviews-row")(t))}))})).catch((function(e){s.errorWrap.empty().append(e).show()}))},toggleSearch:function(e){e.preventDefault(),jQuery("#bdb-search-book-fields").slideToggle()},searchBooks:function(n){if("click"===n.type&&n.preventDefault(),"keypress"===n.type&&13!==n.which)return!0;n.preventDefault();var a=jQuery("#bdb-search-book-fields").find("button"),i=jQuery("#bdb-search-book-title-author").val(),o=jQuery("#bdb-search-book-type").val(),d={};e(a),s.errorWrap.empty().hide(),s.searchResultsWrap.empty(),"author"===o?d.author_query=[{field:"name",value:i,operator:"LIKE"}]:d.book_query=[{field:"title",value:i,operator:"LIKE"}],r("v1/books",d,"GET").then((function(e){if(0===e.length||void 0===e.length)s.searchResultsWrap.append("

"+bdbVars.no_books+"

");else{var t="";jQuery.each(e,(function(e,r){t=t+'
  • '+r.title+" "+bdbVars.by+" "+r.author_name+"
  • "})),s.searchResultsWrap.append("")}})).catch((function(e){s.errorWrap.append(e).show()})).finally((function(){t(a)}))},selectBook:function(e){e.preventDefault(),s.bookID=jQuery(this).data("id"),s.searchResultsWrap.empty().append("

    "+bdbVars.please_wait+"

    "),r("v1/reading-log",{book_id:jQuery(this).data("id")},"GET").then((function(e){var t=jQuery("#bdb-review-reading-log");e.length>0&&(t.empty(),jQuery.each(e,(function(e,r){t.append('")}))),s.searchResultsWrap.empty(),jQuery("#bdb-add-review-fields").show()})).catch((function(e){s.errorWrap.append(e).show()}))},shapeLog:function(e){return e.date_started_formatted=o(e.date_started,"display"),e.date_finished_formatted=o(e.date_finished,"display"),e.rating=null===e.rating?null:parseFloat(e.rating)+" "+bdbVars.stars,e.date_started_formatted||(e.date_started_formatted="("+bdbVars.unknown+")"),e.date_finished_formatted||(e.date_finished_formatted="("+bdbVars.unknown+")"),e.date_started_formatted+" - "+e.date_finished_formatted+" ("+e.rating+")"},addReview:function(n){n.preventDefault();var a=jQuery(this);e(a),r("v1/review/add",{book_id:s.bookID,reading_log_id:jQuery("#bdb-review-reading-log").val(),user_id:s.userID,post_id:s.postID},"POST").then((function(e){return r("v1/reviews",{rating_format:"text",review_query:[{field:"id",value:e.id}]},"GET")})).then((function(e){jQuery.each(e,(function(e,t){jQuery("#bdb-no-post-reviews").remove(),s.tableBody.append(wp.template("bdb-table-post-reviews-row")(t))})),jQuery("#bdb-add-review-fields").hide()})).catch((function(e){s.errorWrap.append(e).show()})).finally((function(){t(a)}))},disassociateReview:function(n){if(n.preventDefault(),!confirm(bdbVars.confirm_remove_review_association))return!1;var a=jQuery(this);e(a),s.errorWrap.empty().hide();var i=a.closest("tr");r("v1/review/update/"+i.data("id"),{post_id:null},"POST").then((function(e){i.remove()})).catch((function(e){s.errorWrap.append(e).show()})).finally((function(){t(a)}))},deleteReview:function(n){if(n.preventDefault(),!confirm(bdbVars.confirm_delete_review))return!1;var a=jQuery(this);e(a),s.errorWrap.empty().hide();var i=a.closest("tr");r("v1/review/delete/"+i.data("id"),{post_id:null},"DELETE").then((function(e){i.remove()})).catch((function(e){s.errorWrap.append(e).show()})).finally((function(){t(a)}))}};jQuery,n.init(),s.init()})(); \ No newline at end of file diff --git a/assets/js/build/admin-global.min.js b/assets/js/build/admin-global.min.js deleted file mode 100644 index 75991363..00000000 --- a/assets/js/build/admin-global.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(n,a,function(t){return e[t]}.bind(null,a));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=139)}({132:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return a}));var n=r(16),a={init:function(){e(".bdb-currently-reading-widget-update-progress").on("click",this.updatePercentage),e(".bdb-currently-reading-progress-unit-choices").on("click","a",this.setUnit),e(".bdb-currently-reading-widget-save-progress").on("click",this.saveProgress),e(".bdb-currently-reading-set-progress-wrap").on("keydown","input",this.saveProgressOnEnter),e(".bdb-currently-reading-widget-finish-book").on("click",this.finishBook),e(".bdb-currently-reading-widget-dnf-book").on("click",this.dnfBook),e(".bdb-currently-reading-widget-set-rating").on("click",this.setRating)},updatePercentage:function(t){t.preventDefault(),e(this).closest("li").find(".bdb-currently-reading-set-progress-wrap").slideToggle()},setUnit:function(t){t.preventDefault();var r=e(this).closest(".bdb-currently-reading-set-progress-wrap"),n=e(this).data("unit");r.find(".bdb-currently-reading-progress-unit-choices a").removeClass("bdb-currently-reading-progress-unit-selected"),e(this).addClass("bdb-currently-reading-progress-unit-selected"),"page"===n?(r.find(".bdb-currently-reading-unit-percentage-wrap").hide(),r.find(".bdb-currently-reading-unit-pages-wrap").show()):(r.find(".bdb-currently-reading-unit-percentage-wrap").show(),r.find(".bdb-currently-reading-unit-pages-wrap").hide())},saveProgress:function(t){t.preventDefault();var r,a=e(this),i=a.closest("li"),o=i.data("log-id"),s=i.find(".bdb-currently-reading-progress-unit-selected").data("unit"),d=0,c=i.find(".bdb-currently-reading-progress-bar"),u=i.find(".bdb-currently-reading-progress-number");if(Object(n.d)(a),"page"===s){var l=i.find(".bdb-currently-reading-unit-page"),b=parseInt(l.data("max")),f=parseInt(l.val());b>0&&(d=f/b,r=Math.round(100*d))}else{var p=i.find(".bdb-currently-reading-unit-percentage");(r=parseFloat(p.val()))>0&&(d=r/100)}var h={percentage_complete:d};Object(n.b)("v1/reading-log/update/"+o,h,"POST").then((function(e){c.css("width",r+"%"),u.text(r+"%")})).catch((function(e){console.log(e)})).finally((function(){Object(n.e)(a),i.find(".bdb-currently-reading-set-progress-wrap").slideUp()}))},saveProgressOnEnter:function(t){13===t.keyCode&&(t.preventDefault(),e(this).closest("li").find(".bdb-currently-reading-widget-save-progress").trigger("click"))},finishBook:function(t){if(t.preventDefault(),!confirm(bdbVars.confirm_finish_book))return!1;var r=e(this);Object(n.d)(r);var a=r.closest("li"),i={percentage_complete:1,date_finished:a.data("now")};Object(n.b)("v1/reading-log/update/"+a.data("log-id"),i,"POST").then((function(e){a.find(".bdb-currently-reading-data").remove(),a.find(".bdb-currently-reading-rate-book").show()})).catch((function(e){console.log(e)})).finally((function(){Object(n.e)(r)}))},dnfBook:function(t){if(t.preventDefault(),!confirm(bdbVars.confirm_dnf_book))return!1;var r=e(this);Object(n.d)(r);var a=r.closest("li"),i={date_finished:a.data("now")};Object(n.b)("v1/reading-log/update/"+a.data("log-id"),i,"POST").then((function(e){a.find(".bdb-currently-reading-data").remove(),a.find(".bdb-currently-reading-rate-book").show()})).catch((function(e){console.log(e)})).finally((function(){Object(n.e)(r)}))},setRating:function(t){t.preventDefault();var r=e(this);Object(n.d)(r);var a=r.closest("li"),i={rating:a.find(".bdb-currently-reading-rating").val()};Object(n.b)("v1/reading-log/update/"+a.data("log-id"),i,"POST").then((function(e){a.find(".bdb-currently-reading-rate-book").empty().append("

    "+Object(n.c)(i.rating)+"

    ")})).catch((function(e){console.log(e)})).finally((function(){Object(n.e)(r)}))}}}).call(this,r(31))},133:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return i}));var n=r(16),a=r(34),i={postID:0,userID:0,bookID:0,table:!1,tableBody:!1,errorWrap:!1,searchResultsWrap:!1,init:function(){document.getElementById("bdb-post-reviews-table")&&(this.table=e("#bdb-post-reviews-table"),this.postID=this.table.data("post-id"),this.userID=this.table.data("user-id"),this.tableBody=this.table.find("tbody"),this.errorWrap=e("#bdb-post-reviews-errors"),this.searchResultsWrap=e("#bdb-book-search-results"),this.getReviews(),e("#bdb-associated-review-post").on("click",this.toggleSearch),e("#bdb-search-book-title-author").on("keypress",this.searchBooks),e("#bdb-search-book-fields").on("click","button",this.searchBooks),this.searchResultsWrap.on("click","a",this.selectBook),e("#bdb-add-review").on("click",this.addReview),e(document).on("click",".bdb-disassociate-review-from-post",this.disassociateReview),e(document).on("click",".bdb-delete-review",this.deleteReview))},getReviews:function(){var t={rating_format:"text",review_query:[{field:"post_id",value:i.postID}]};Object(n.b)("v1/reviews",t,"GET").then((function(t){i.tableBody.empty(),0===t.length||void 0===t.length?i.tableBody.append(wp.template("bdb-table-post-reviews-row-empty")):e.each(t,(function(e,t){i.tableBody.append(wp.template("bdb-table-post-reviews-row")(t))}))})).catch((function(e){i.errorWrap.empty().append(e).show()}))},toggleSearch:function(t){t.preventDefault(),e("#bdb-search-book-fields").slideToggle()},searchBooks:function(t){if("click"===t.type&&t.preventDefault(),"keypress"===t.type&&13!==t.which)return!0;t.preventDefault();var r=e("#bdb-search-book-fields").find("button"),a=e("#bdb-search-book-title-author").val(),o=e("#bdb-search-book-type").val(),s={};Object(n.d)(r),i.errorWrap.empty().hide(),i.searchResultsWrap.empty(),"author"===o?s.author_query=[{field:"name",value:a,operator:"LIKE"}]:s.book_query=[{field:"title",value:a,operator:"LIKE"}],Object(n.b)("v1/books",s,"GET").then((function(t){if(0===t.length||void 0===t.length)i.searchResultsWrap.append("

    "+bdbVars.no_books+"

    ");else{var r="";e.each(t,(function(e,t){r=r+'
  • '+t.title+" "+bdbVars.by+" "+t.author_name+"
  • "})),i.searchResultsWrap.append("")}})).catch((function(e){i.errorWrap.append(e).show()})).finally((function(){Object(n.e)(r)}))},selectBook:function(t){t.preventDefault(),i.bookID=e(this).data("id"),i.searchResultsWrap.empty().append("

    "+bdbVars.please_wait+"

    ");var r={book_id:e(this).data("id")};Object(n.b)("v1/reading-log",r,"GET").then((function(t){var r=e("#bdb-review-reading-log");t.length>0&&(r.empty(),e.each(t,(function(e,t){r.append('")}))),i.searchResultsWrap.empty(),e("#bdb-add-review-fields").show()})).catch((function(e){i.errorWrap.append(e).show()}))},shapeLog:function(e){return e.date_started_formatted=Object(a.b)(e.date_started,"display"),e.date_finished_formatted=Object(a.b)(e.date_finished,"display"),e.rating=null===e.rating?null:parseFloat(e.rating)+" "+bdbVars.stars,e.date_started_formatted||(e.date_started_formatted="("+bdbVars.unknown+")"),e.date_finished_formatted||(e.date_finished_formatted="("+bdbVars.unknown+")"),e.date_started_formatted+" - "+e.date_finished_formatted+" ("+e.rating+")"},addReview:function(t){t.preventDefault();var r=e(this);Object(n.d)(r);var a={book_id:i.bookID,reading_log_id:e("#bdb-review-reading-log").val(),user_id:i.userID,post_id:i.postID};Object(n.b)("v1/review/add",a,"POST").then((function(e){var t={rating_format:"text",review_query:[{field:"id",value:e.id}]};return Object(n.b)("v1/reviews",t,"GET")})).then((function(t){e.each(t,(function(t,r){e("#bdb-no-post-reviews").remove(),i.tableBody.append(wp.template("bdb-table-post-reviews-row")(r))})),e("#bdb-add-review-fields").hide()})).catch((function(e){i.errorWrap.append(e).show()})).finally((function(){Object(n.e)(r)}))},disassociateReview:function(t){if(t.preventDefault(),!confirm(bdbVars.confirm_remove_review_association))return!1;var r=e(this);Object(n.d)(r),i.errorWrap.empty().hide();var a=r.closest("tr");Object(n.b)("v1/review/update/"+a.data("id"),{post_id:null},"POST").then((function(e){a.remove()})).catch((function(e){i.errorWrap.append(e).show()})).finally((function(){Object(n.e)(r)}))},deleteReview:function(t){if(t.preventDefault(),!confirm(bdbVars.confirm_delete_review))return!1;var r=e(this);Object(n.d)(r),i.errorWrap.empty().hide();var a=r.closest("tr");Object(n.b)("v1/review/delete/"+a.data("id"),{post_id:null},"DELETE").then((function(e){a.remove()})).catch((function(e){i.errorWrap.append(e).show()})).finally((function(){Object(n.e)(r)}))}}}).call(this,r(31))},139:function(e,t,r){"use strict";r.r(t);var n=r(132),a=r(133);jQuery,n.a.init(),a.a.init()},16:function(e,t,r){"use strict";r.d(t,"b",(function(){return n.b})),r.d(t,"a",(function(){return n.a})),r.d(t,"d",(function(){return a})),r.d(t,"e",(function(){return i})),r.d(t,"c",(function(){return o}));var n=r(68);function a(e){var t=bdbVars.is_admin?'':bdbVars.please_wait;e.prop("disabled",!0).data("text",e.text()).html(t)}function i(e){e.prop("disabled",!1).text(e.data("text"))}function o(e){var t="",r=Math.floor(e),n=Math.ceil(e-r);return t+="★".repeat(r),t+="½".repeat(n)}},31:function(e,t){e.exports=jQuery},34:function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"a",(function(){return a}));function n(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mysql";if(""===e||!e)return"";t="display"===t?"MMMM D, YYYY":"YYYY-MM-DD HH:mm:ss";var r=(e=moment.utc(e)).local().format(t);return r}function a(e){return""!==e&&e?(e=moment(e)).utc().format("YYYY-MM-DD HH:mm:ss"):""}},68:function(e,t,r){"use strict";(function(e){function n(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"POST",a={method:n,url:bdbVars.api_base+"book-database/"+t,beforeSend:function(e){e.setRequestHeader("X-WP-Nonce",bdbVars.api_nonce)},xhrFields:{withCredentials:!0},data:r};return new Promise((function(t,r){e.ajax(a).success((function(e){t(e)})).error((function(e,t,n){var a=bdbVars.generic_erroc;void 0!==e.responseJSON?void 0!==(a=e.responseJSON).message&&(a=a.message):void 0!==e.message&&(a=e.message),r(a)}))}))}function a(t){var r={method:"POST",dataType:"JSON",url:ajaxurl,data:t};return new Promise((function(t,n){e.ajax(r).success((function(e){e.success?t(e.data):n(e.data)})).error((function(e,t,r){var a=bdbVars.generic_erroc;void 0!==e.responseJSON?void 0!==(a=e.responseJSON).message&&(a=a.message):void 0!==e.message&&(a=e.message),n(a)}))}))}r.d(t,"b",(function(){return n})),r.d(t,"a",(function(){return a}))}).call(this,r(31))}}); -//# sourceMappingURL=admin-global.min.js.map \ No newline at end of file diff --git a/assets/js/build/admin-global.min.js.map b/assets/js/build/admin-global.min.js.map deleted file mode 100644 index e0788c68..00000000 --- a/assets/js/build/admin-global.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/src/admin/modules/dashboard-widgets.js","webpack:///./assets/js/src/admin/modules/post-metabox.js","webpack:///./assets/js/src/admin/global.js","webpack:///./assets/js/src/utils/loaders.js","webpack:///./assets/js/src/utils/ratings.js","webpack:///external \"jQuery\"","webpack:///./assets/js/src/admin/modules/dates.js","webpack:///./assets/js/src/utils/api-request.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","BDB_Dashboard_Widgets","init","$","on","this","updatePercentage","setUnit","saveProgress","saveProgressOnEnter","finishBook","dnfBook","setRating","e","preventDefault","closest","find","slideToggle","wrap","unit","data","removeClass","addClass","hide","show","readablePercentage","button","logID","percentage","progressWrap","progressNumber","spinButton","pageField","maxPages","parseInt","currentPage","val","Math","round","percentageField","parseFloat","args","percentage_complete","apiRequest","then","apiResponse","css","text","catch","errorMessage","console","log","finally","unspinButton","slideUp","keyCode","trigger","confirm","bdbVars","confirm_finish_book","date_finished","remove","confirm_dnf_book","rating","empty","append","getStars","BDB_Post_Metabox","postID","userID","bookID","table","tableBody","errorWrap","searchResultsWrap","document","getElementById","getReviews","toggleSearch","searchBooks","selectBook","addReview","disassociateReview","deleteReview","rating_format","review_query","field","response","length","wp","template","each","review","error","type","which","search","searchType","author_query","operator","book_query","no_books","booksHTML","book","id","title","by","author_name","please_wait","book_id","logOptions","shapeLog","readingLog","date_started_formatted","dateUTCtoLocal","date_started","date_finished_formatted","stars","unknown","reading_log_id","user_id","post_id","confirm_remove_review_association","confirm_delete_review","jQuery","newText","is_admin","prop","html","fullStars","floor","halfStars","ceil","repeat","utcDate","format","localDate","moment","utc","local","dateLocalToUTC","endpoint","method","options","url","api_base","beforeSend","xhr","setRequestHeader","api_nonce","xhrFields","withCredentials","Promise","resolve","reject","ajax","success","qpXHR","textStatus","errorThrown","generic_erroc","responseJSON","message","ajaxRequest","dataType","ajaxurl"],"mappings":"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","file":"assets/js/build/admin-global.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 139);\n","/* global $, bdbVars, wp */\n\nimport { apiRequest, spinButton, unspinButton, getStars } from 'utils';\n\n/**\n * Admin Dashboard Widgets\n */\nvar BDB_Dashboard_Widgets = {\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\n\t\t$( '.bdb-currently-reading-widget-update-progress' ).on( 'click', this.updatePercentage );\n\t\t$( '.bdb-currently-reading-progress-unit-choices' ).on( 'click', 'a', this.setUnit );\n\t\t$( '.bdb-currently-reading-widget-save-progress' ).on( 'click', this.saveProgress );\n\t\t$( '.bdb-currently-reading-set-progress-wrap' ).on( 'keydown', 'input', this.saveProgressOnEnter );\n\t\t$( '.bdb-currently-reading-widget-finish-book' ).on( 'click', this.finishBook );\n\t\t$( '.bdb-currently-reading-widget-dnf-book' ).on( 'click', this.dnfBook );\n\t\t$( '.bdb-currently-reading-widget-set-rating' ).on( 'click', this.setRating );\n\n\t},\n\n\t/**\n\t * Update the percentage\n\t *\n\t * @param e\n\t */\n\tupdatePercentage: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet wrap = $( this ).closest( 'li' );\n\n\t\twrap.find( '.bdb-currently-reading-set-progress-wrap' ).slideToggle();\n\n\t},\n\n\t/**\n\t * Set the unit to use for updating progress\n\t *\n\t * @param e\n\t */\n\tsetUnit: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet wrap = $( this ).closest( '.bdb-currently-reading-set-progress-wrap' ),\n\t\t\tunit = $( this ).data( 'unit' );\n\n\t\twrap.find( '.bdb-currently-reading-progress-unit-choices a' ).removeClass( 'bdb-currently-reading-progress-unit-selected' );\n\t\t$( this ).addClass( 'bdb-currently-reading-progress-unit-selected' );\n\n\t\tif ( 'page' === unit ) {\n\t\t\twrap.find( '.bdb-currently-reading-unit-percentage-wrap' ).hide();\n\t\t\twrap.find( '.bdb-currently-reading-unit-pages-wrap' ).show();\n\t\t} else {\n\t\t\twrap.find( '.bdb-currently-reading-unit-percentage-wrap' ).show();\n\t\t\twrap.find( '.bdb-currently-reading-unit-pages-wrap' ).hide();\n\t\t}\n\n\t},\n\n\t/**\n\t * Save the new progress\n\t *\n\t * @param e\n\t */\n\tsaveProgress: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this ),\n\t\t\twrap = button.closest( 'li' ),\n\t\t\tlogID = wrap.data( 'log-id' ),\n\t\t\tunit = wrap.find( '.bdb-currently-reading-progress-unit-selected' ).data( 'unit' ),\n\t\t\tpercentage = 0,\n\t\t\treadablePercentage,\n\t\t\tprogressWrap = wrap.find( '.bdb-currently-reading-progress-bar' ),\n\t\t\tprogressNumber = wrap.find( '.bdb-currently-reading-progress-number' );\n\n\t\tspinButton( button );\n\n\t\t// Figure out the percentage.\n\t\tif ( 'page' === unit ) {\n\t\t\tlet pageField = wrap.find( '.bdb-currently-reading-unit-page' ),\n\t\t\t\tmaxPages = parseInt( pageField.data( 'max' ) ),\n\t\t\t\tcurrentPage = parseInt( pageField.val() );\n\n\t\t\tif ( maxPages > 0 ) {\n\t\t\t\tpercentage = currentPage / maxPages;\n\t\t\t\treadablePercentage = Math.round( percentage * 100 );\n\t\t\t}\n\t\t} else {\n\t\t\tlet percentageField = wrap.find( '.bdb-currently-reading-unit-percentage' );\n\n\t\t\treadablePercentage = parseFloat( percentageField.val() );\n\n\t\t\tif ( readablePercentage > 0 ) {\n\t\t\t\tpercentage = readablePercentage / 100;\n\t\t\t}\n\t\t}\n\n\t\tlet args = {\n\t\t\tpercentage_complete: percentage\n\t\t};\n\n\t\tapiRequest( 'v1/reading-log/update/' + logID, args, 'POST' ).then( function( apiResponse ) {\n\t\t\tprogressWrap.css( 'width', readablePercentage + '%' );\n\t\t\tprogressNumber.text( readablePercentage + '%' );\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tconsole.log( errorMessage );\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t\twrap.find( '.bdb-currently-reading-set-progress-wrap' ).slideUp();\n\t\t} );\n\n\t},\n\n\t/**\n\t * Trigger progress saving when clicking \"enter\"\n\t *\n\t * @param e\n\t */\n\tsaveProgressOnEnter: function ( e ) {\n\n\t\tif ( 13 === e.keyCode ) {\n\t\t\te.preventDefault();\n\n\t\t\t$( this ).closest( 'li' ).find( '.bdb-currently-reading-widget-save-progress' ).trigger( 'click' );\n\t\t}\n\n\t},\n\n\t/**\n\t * Finish a book\n\t *\n\t * This sets the percentage to 100% and the finished date to today.\n\t *\n\t * @param e\n\t */\n\tfinishBook: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tif ( ! confirm( bdbVars.confirm_finish_book ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\n\t\tlet wrap = button.closest( 'li' );\n\n\t\tlet args = {\n\t\t\tpercentage_complete: 1,\n\t\t\tdate_finished: wrap.data( 'now' )\n\t\t};\n\n\t\tapiRequest( 'v1/reading-log/update/' + wrap.data( 'log-id' ), args, 'POST' ).then( function( apiResponse ) {\n\t\t\twrap.find( '.bdb-currently-reading-data' ).remove();\n\t\t\twrap.find( '.bdb-currently-reading-rate-book' ).show();\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tconsole.log( errorMessage );\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * DNF book\n\t *\n\t * @param e\n\t * @returns {boolean}\n\t */\n\tdnfBook: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tif ( ! confirm( bdbVars.confirm_dnf_book ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\n\t\tlet wrap = button.closest( 'li' );\n\n\t\tlet args = {\n\t\t\tdate_finished: wrap.data( 'now' )\n\t\t};\n\n\t\tapiRequest( 'v1/reading-log/update/' + wrap.data( 'log-id' ), args, 'POST' ).then( function( apiResponse ) {\n\t\t\twrap.find( '.bdb-currently-reading-data' ).remove();\n\t\t\twrap.find( '.bdb-currently-reading-rate-book' ).show();\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tconsole.log( errorMessage );\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Set the rating\n\t *\n\t * @param e\n\t */\n\tsetRating: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\n\t\tlet wrap = button.closest( 'li' );\n\n\t\tlet args = {\n\t\t\trating: wrap.find( '.bdb-currently-reading-rating' ).val()\n\t\t};\n\n\t\tapiRequest( 'v1/reading-log/update/' + wrap.data( 'log-id' ), args, 'POST' ).then( function( apiResponse ) {\n\t\t\twrap.find( '.bdb-currently-reading-rate-book' ).empty().append( '

    ' + getStars( args.rating ) + '

    ' )\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tconsole.log( errorMessage );\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t}\n\n};\n\nexport { BDB_Dashboard_Widgets }","/* global $, bdbVars, wp */\n\nimport { apiRequest, spinButton, unspinButton } from 'utils';\nimport { dateLocalToUTC, dateUTCtoLocal } from \"./dates\";\n\n/**\n * Post Metabox\n */\nvar BDB_Post_Metabox = {\n\n\tpostID: 0,\n\n\tuserID: 0,\n\n\tbookID: 0,\n\n\ttable: false,\n\n\ttableBody: false,\n\n\terrorWrap: false,\n\n\tsearchResultsWrap: false,\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\n\t\tif ( ! document.getElementById('bdb-post-reviews-table') ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.table = $( '#bdb-post-reviews-table' );\n\t\tthis.postID = this.table.data( 'post-id' );\n\t\tthis.userID = this.table.data( 'user-id' );\n\t\tthis.tableBody = this.table.find( 'tbody' );\n\t\tthis.errorWrap = $( '#bdb-post-reviews-errors' );\n\t\tthis.searchResultsWrap = $( '#bdb-book-search-results' );\n\n\t\tthis.getReviews();\n\n\t\t$( '#bdb-associated-review-post' ).on( 'click', this.toggleSearch );\n\t\t$( '#bdb-search-book-title-author' ).on( 'keypress', this.searchBooks );\n\t\t$( '#bdb-search-book-fields' ).on( 'click', 'button', this.searchBooks );\n\t\tthis.searchResultsWrap.on( 'click', 'a', this.selectBook );\n\t\t$( '#bdb-add-review' ).on( 'click', this.addReview );\n\t\t$( document ).on( 'click', '.bdb-disassociate-review-from-post', this.disassociateReview );\n\t\t$( document ).on( 'click', '.bdb-delete-review', this.deleteReview );\n\n\t},\n\n\t/**\n\t * Get the reviews associated with this post\n\t */\n\tgetReviews: function() {\n\n\t\tlet args = {\n\t\t\trating_format: 'text',\n\t\t\treview_query: [ {\n\t\t\t\tfield: 'post_id',\n\t\t\t\tvalue: BDB_Post_Metabox.postID\n\t\t\t} ]\n\t\t};\n\n\t\tapiRequest( 'v1/reviews', args, 'GET' ).then( function( response ) {\n\n\t\t\tBDB_Post_Metabox.tableBody.empty();\n\n\t\t\tif ( 0 === response.length || 'undefined' === typeof response.length ) {\n\t\t\t\tBDB_Post_Metabox.tableBody.append( wp.template( 'bdb-table-post-reviews-row-empty' ) );\n\t\t\t} else {\n\t\t\t\t$.each( response, function( key, review ) {\n\t\t\t\t\tBDB_Post_Metabox.tableBody.append( wp.template( 'bdb-table-post-reviews-row' )( review ) );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t} ).catch( function( error ) {\n\t\t\tBDB_Post_Metabox.errorWrap.empty().append( error ).show();\n\t\t} );\n\n\t},\n\n\t/**\n\t * Toggle the search fields\n\t *\n\t * @param e\n\t */\n\ttoggleSearch: function ( e ) {\n\t\te.preventDefault();\n\t\t$( '#bdb-search-book-fields' ).slideToggle();\n\t},\n\n\t/**\n\t * Search for books\n\t *\n\t * @param e\n\t */\n\tsearchBooks: function ( e ) {\n\n\t\tif ( 'click' === e.type ) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif ( 'keypress' === e.type && 13 !== e.which ) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tlet button = $( '#bdb-search-book-fields' ).find( 'button' ),\n\t\t\tsearch = $( '#bdb-search-book-title-author' ).val(),\n\t\t\tsearchType = $( '#bdb-search-book-type' ).val(),\n\t\t\targs = {};\n\n\t\tspinButton( button );\n\n\t\tBDB_Post_Metabox.errorWrap.empty().hide();\n\t\tBDB_Post_Metabox.searchResultsWrap.empty();\n\n\t\tif ( 'author' === searchType ) {\n\t\t\targs.author_query = [ {\n\t\t\t\tfield: 'name',\n\t\t\t\tvalue: search,\n\t\t\t\toperator: 'LIKE'\n\t\t\t} ];\n\t\t} else {\n\t\t\targs.book_query = [ {\n\t\t\t\tfield: 'title',\n\t\t\t\tvalue: search,\n\t\t\t\toperator: 'LIKE'\n\t\t\t} ];\n\t\t}\n\n\t\tapiRequest( 'v1/books', args, 'GET' ).then( function( apiResponse ) {\n\n\t\t\tif ( 0 === apiResponse.length || 'undefined' === typeof apiResponse.length ) {\n\t\t\t\tBDB_Post_Metabox.searchResultsWrap.append( '

    ' + bdbVars.no_books + '

    ' );\n\t\t\t} else {\n\t\t\t\tlet booksHTML = '';\n\t\t\t\t$.each( apiResponse, function( key, book ) {\n\t\t\t\t\tbooksHTML = booksHTML + '
  • ' + book.title + ' ' + bdbVars.by + ' ' + book.author_name + '
  • ';\n\t\t\t\t} );\n\t\t\t\tBDB_Post_Metabox.searchResultsWrap.append( '' );\n\t\t\t}\n\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Post_Metabox.errorWrap.append( errorMessage ).show();\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Select a book to review\n\t *\n\t * @param e\n\t */\n\tselectBook: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\t// Set the book ID.\n\t\tBDB_Post_Metabox.bookID = $( this ).data( 'id' );\n\n\t\t// Wipe the search results.\n\t\tBDB_Post_Metabox.searchResultsWrap.empty().append( '

    ' + bdbVars.please_wait + '

    ' );\n\n\t\tlet args = {\n\t\t\tbook_id: $( this ).data( 'id' )\n\t\t};\n\n\t\t// Get reading logs.\n\t\tapiRequest( 'v1/reading-log', args, 'GET' ).then( function( apiResponse ) {\n\n\t\t\tlet logOptions = $( '#bdb-review-reading-log' );\n\n\t\t\tif ( apiResponse.length > 0 ) {\n\t\t\t\tlogOptions.empty();\n\t\t\t\t$.each( apiResponse, function( key, log ) {\n\t\t\t\t\tlogOptions.append( '' );\n\t\t\t\t} )\n\t\t\t}\n\n\t\t\t// Wipe the search results again.\n\t\t\tBDB_Post_Metabox.searchResultsWrap.empty();\n\n\t\t\t// Show the log selection.\n\t\t\t$( '#bdb-add-review-fields' ).show();\n\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Post_Metabox.errorWrap.append( errorMessage ).show();\n\t\t} );\n\n\t},\n\n\t/**\n\t * Shape the reading log entry for display in an `")})).catch((function(e){console.log("Index title generation error",e)}))}};function o(e){var t=bdbVars.is_admin?'':bdbVars.please_wait;e.prop("disabled",!0).data("text",e.text()).html(t)}function r(e){e.prop("disabled",!1).text(e.data("text"))}var d={bookID:0,linkWrap:!1,linkTemplateAdd:wp.template("bdb-book-link-add"),linkTemplateEdit:wp.template("bdb-book-link-edit"),errorWrap:"",init:function(){this.bookID=jQuery("#bdb-book-id").val(),this.linkWrap=jQuery("#bdb-book-links"),this.errorWrap=jQuery("#bdb-book-links-errors"),this.linkWrap.length&&(jQuery("#bdb-new-purchase-link").on("keydown","input",this.clickOnEnter),jQuery("#bdb-new-purchase-link").on("click","button",this.addLink),jQuery(document).on("click",".bdb-update-book-link",this.updateLink),jQuery(document).on("click",".bdb-remove-book-link",this.deleteLink),this.getLinks())},getLinks:function(){this.bookID&&t("v1/book-link",{book_id:d.bookID,number:50},"GET").then((function(e){d.linkWrap.empty(),0===e.length||void 0===e.length||jQuery.each(e,(function(e,t){d.linkWrap.append(d.linkTemplateEdit(t))}))})).catch((function(e){d.errorWrap.empty().append(e).show()}))},clickOnEnter:function(e){13===e.keyCode&&(e.preventDefault(),jQuery("#bdb-new-purchase-link").find("button").trigger("click"))},addLink:function(e){e.preventDefault();var n=jQuery(this);if(o(n),d.errorWrap.empty().hide(),d.bookID){t("v1/book-link/add",{book_id:d.bookID,retailer_id:jQuery("#bdb-new-book-link-retailer").val(),url:jQuery("#bdb-new-book-link-url").val()},"POST").then((function(e){d.linkWrap.append(d.linkTemplateEdit(e)),jQuery("#bdb-new-purchase-link").find("input").val(""),r(n)})).catch((function(e){d.errorWrap.append(e).show(),r(n)}))}else{var i={id:jQuery(".bdb-book-link").length,retailer_id:jQuery("#bdb-new-book-link-retailer").val(),url:jQuery("#bdb-new-book-link-url").val()};d.linkWrap.append(d.linkTemplateAdd(i)),jQuery("#bdb-new-purchase-link").find("input").val(""),r(n)}},updateLink:function(e){e.preventDefault();var n=jQuery(this);o(n),d.errorWrap.empty().hide();var i=n.closest(".bdb-book-link"),a={retailer_id:i.find(".bdb-book-link-retailer").val(),url:i.find(".bdb-book-link-url").val()};t("v1/book-link/update/"+i.data("id"),a,"POST").then((function(e){r(n)})).catch((function(e){d.errorWrap.append(e).show(),r(n)}))},deleteLink:function(e){if(e.preventDefault(),!confirm(bdbVars.confirm_delete_book_link))return!1;var n=jQuery(this);o(n),d.errorWrap.empty().hide();var i=n.closest(".bdb-book-link");d.bookID?t("v1/book-link/delete/"+i.data("id"),{},"DELETE").then((function(e){i.remove()})).catch((function(e){d.errorWrap.append(e).show(),r(n)})):i.remove()}},l={init:function(){jQuery(".bdb-new-checkbox-term").on("click",".button",this.addCheckboxTerm),jQuery(".bdb-new-checkbox-term-value").on("keypress",this.addCheckboxTerm)},addCheckboxTerm:function(e){if("click"===e.type&&e.preventDefault(),"keypress"===e.type&&13!==e.which)return!0;e.preventDefault();var t=jQuery(this).closest(".bdb-taxonomy-checkboxes"),n=t.data("name"),i=t.data("taxonomy"),a=t.find(".bdb-checkbox-wrap"),o=t.find(".bdb-new-checkbox-term-value"),r=l.createID(o.val(),i+"-");a.append('"),o.val("")},createID:function(e,t){return e.replace(/[^a-z0-9]/g,(function(e){var n=e.charCodeAt(0);return 32===n?"-":n>=65&&n<=90?t+e.toLowerCase():t+("000"+n.toString(16)).slice(-4)}))}};const s=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],c={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:"object"==typeof window&&-1===window.navigator.userAgent.indexOf("MSIE"),ariaDateFormat:"F j, Y",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:e=>"undefined"!=typeof console&&console.warn(e),getWeek:e=>{const t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var n=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-n.getTime())/864e5-3+(n.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},u={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:e=>{const t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},p=u,f=(e,t=2)=>`000${e}`.slice(-1*t),m=e=>!0===e?1:0;function g(e,t){let n;return function(){clearTimeout(n),n=setTimeout((()=>e.apply(this,arguments)),t)}}const b=e=>e instanceof Array?e:[e];function h(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function y(e,t,n){const i=window.document.createElement(e);return t=t||"",n=n||"",i.className=t,void 0!==n&&(i.textContent=n),i}function v(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function w(e,t){return t(e)?e:e.parentNode?w(e.parentNode,t):void 0}function D(e,t){const n=y("div","numInputWrapper"),i=y("input","numInput "+e),a=y("span","arrowUp"),o=y("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?i.type="number":(i.type="text",i.pattern="\\d*"),void 0!==t)for(const e in t)i.setAttribute(e,t[e]);return n.appendChild(i),n.appendChild(a),n.appendChild(o),n}function k(e){try{if("function"==typeof e.composedPath){return e.composedPath()[0]}return e.target}catch(t){return e.target}}const C=()=>{},j=(e,t,n)=>n.months[t?"shorthand":"longhand"][e],x={D:C,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:(e,t)=>{e.setHours(parseFloat(t))},H:(e,t)=>{e.setHours(parseFloat(t))},J:(e,t)=>{e.setDate(parseFloat(t))},K:(e,t,n)=>{e.setHours(e.getHours()%12+12*m(new RegExp(n.amPM[1],"i").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:(e,t)=>{e.setSeconds(parseFloat(t))},U:(e,t)=>new Date(1e3*parseFloat(t)),W:function(e,t,n){const i=parseInt(t),a=new Date(e.getFullYear(),0,2+7*(i-1),0,0,0,0);return a.setDate(a.getDate()-a.getDay()+n.firstDayOfWeek),a},Y:(e,t)=>{e.setFullYear(parseFloat(t))},Z:(e,t)=>new Date(t),d:(e,t)=>{e.setDate(parseFloat(t))},h:(e,t)=>{e.setHours(parseFloat(t))},i:(e,t)=>{e.setMinutes(parseFloat(t))},j:(e,t)=>{e.setDate(parseFloat(t))},l:C,m:(e,t)=>{e.setMonth(parseFloat(t)-1)},n:(e,t)=>{e.setMonth(parseFloat(t)-1)},s:(e,t)=>{e.setSeconds(parseFloat(t))},u:(e,t)=>new Date(parseFloat(t)),w:C,y:(e,t)=>{e.setFullYear(2e3+parseFloat(t))}},M={D:"(\\w+)",F:"(\\w+)",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"(\\w+)",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"(\\w+)",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},_={Z:e=>e.toISOString(),D:function(e,t,n){return t.weekdays.shorthand[_.w(e,t,n)]},F:function(e,t,n){return j(_.n(e,t,n)-1,!1,t)},G:function(e,t,n){return f(_.h(e,t,n))},H:e=>f(e.getHours()),J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:(e,t)=>t.amPM[m(e.getHours()>11)],M:function(e,t){return j(e.getMonth(),!0,t)},S:e=>f(e.getSeconds()),U:e=>e.getTime()/1e3,W:function(e,t,n){return n.getWeek(e)},Y:e=>f(e.getFullYear(),4),d:e=>f(e.getDate()),h:e=>e.getHours()%12?e.getHours()%12:12,i:e=>f(e.getMinutes()),j:e=>e.getDate(),l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:e=>f(e.getMonth()+1),n:e=>e.getMonth()+1,s:e=>e.getSeconds(),u:e=>e.getTime(),w:e=>e.getDay(),y:e=>String(e.getFullYear()).substring(2)},T=({config:e=c,l10n:t=u,isMobile:n=!1})=>(i,a,o)=>{const r=o||t;return void 0===e.formatDate||n?a.split("").map(((t,n,a)=>_[t]&&"\\"!==a[n-1]?_[t](i,r,e):"\\"!==t?t:"")).join(""):e.formatDate(i,a,r)},E=({config:e=c,l10n:t=u})=>(n,i,a,o)=>{if(0!==n&&!n)return;const r=o||t;let d;const l=n;if(n instanceof Date)d=new Date(n.getTime());else if("string"!=typeof n&&void 0!==n.toFixed)d=new Date(n);else if("string"==typeof n){const t=i||(e||c).dateFormat,o=String(n).trim();if("today"===o)d=new Date,a=!0;else if(/Z$/.test(o)||/GMT$/.test(o))d=new Date(n);else if(e&&e.parseDate)d=e.parseDate(n,t);else{d=e&&e.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);let i,a=[];for(let e=0,o=0,l="";ed=e(d,t,r)||d))}d=i?d:void 0}}if(d instanceof Date&&!isNaN(d.getTime()))return!0===a&&d.setHours(0,0,0,0),d;e.errorHandler(new Error(`Invalid date provided: ${l}`))};function Q(e,t,n=!0){return!1!==n?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()}const O=864e5;function I(e){let t=e.defaultHour,n=e.defaultMinute,i=e.defaultSeconds;if(void 0!==e.minDate){const a=e.minDate.getHours(),o=e.minDate.getMinutes(),r=e.minDate.getSeconds();t=0?new Date:new Date(n.config.minDate.getTime()),t=I(n.config);e.setHours(t.hours,t.minutes,t.seconds,e.getMilliseconds()),n.selectedDates=[e],n.latestSelectedDateObj=e}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();const t="keydown"===e.type,i=k(e),a=i;void 0!==n.amPM&&i===n.amPM&&(n.amPM.textContent=n.l10n.amPM[m(n.amPM.textContent===n.l10n.amPM[0])]);const o=parseFloat(a.getAttribute("min")),r=parseFloat(a.getAttribute("max")),d=parseFloat(a.getAttribute("step")),l=parseInt(a.value,10),s=e.delta||(t?38===e.which?1:-1:0);let c=l+d*s;if(void 0!==a.value&&2===a.value.length){const e=a===n.hourElement,t=a===n.minuteElement;cr&&(c=a===n.hourElement?c-r-m(!n.amPM):o,t&&F(void 0,1,n.hourElement)),n.amPM&&e&&(1===d?c+l===23:Math.abs(c-l)>d)&&(n.amPM.textContent=n.l10n.amPM[m(n.amPM.textContent===n.l10n.amPM[0])]),a.value=f(c)}}(e);const t=n._input.value;r(),ye(),n._input.value!==t&&n._debouncedChange()}function r(){if(void 0===n.hourElement||void 0===n.minuteElement)return;let e=(parseInt(n.hourElement.value.slice(-2),10)||0)%24,t=(parseInt(n.minuteElement.value,10)||0)%60,i=void 0!==n.secondElement?(parseInt(n.secondElement.value,10)||0)%60:0;var a,o;void 0!==n.amPM&&(a=e,o=n.amPM.textContent,e=a%12+12*m(o===n.l10n.amPM[1]));const r=void 0!==n.config.minTime||n.config.minDate&&n.minDateHasTime&&n.latestSelectedDateObj&&0===Q(n.latestSelectedDateObj,n.config.minDate,!0);if(void 0!==n.config.maxTime||n.config.maxDate&&n.maxDateHasTime&&n.latestSelectedDateObj&&0===Q(n.latestSelectedDateObj,n.config.maxDate,!0)){const a=void 0!==n.config.maxTime?n.config.maxTime:n.config.maxDate;e=Math.min(e,a.getHours()),e===a.getHours()&&(t=Math.min(t,a.getMinutes())),t===a.getMinutes()&&(i=Math.min(i,a.getSeconds()))}if(r){const a=void 0!==n.config.minTime?n.config.minTime:n.config.minDate;e=Math.max(e,a.getHours()),e===a.getHours()&&t=12)]),void 0!==n.secondElement&&(n.secondElement.value=f(i)))}function u(e){const t=k(e),n=parseInt(t.value)+(e.delta||0);(n/1e3>1||"Enter"===e.key&&!/[^\d]/.test(n.toString()))&&G(n)}function C(e,t,i,a){return t instanceof Array?t.forEach((t=>C(e,t,i,a))):e instanceof Array?e.forEach((e=>C(e,t,i,a))):(e.addEventListener(t,i,a),void n._handlers.push({remove:()=>e.removeEventListener(t,i)}))}function x(){fe("onChange")}function _(e,t){const i=void 0!==e?n.parseDate(e):n.latestSelectedDateObj||(n.config.minDate&&n.config.minDate>n.now?n.config.minDate:n.config.maxDate&&n.config.maxDate=0&&Q(e,n.selectedDates[1])<=0)}(t)&&!ge(t)&&r.classList.add("inRange"),n.weekNumbers&&1===n.config.showMonths&&"prevMonthDay"!==e&&i%7==1&&n.weekNumbers.insertAdjacentHTML("beforeend",""+n.config.getWeek(t)+""),fe("onDayCreate",r),r}function N(e){e.focus(),"range"===n.config.mode&&te(e)}function Y(e){const t=e>0?0:n.config.showMonths-1,i=e>0?n.config.showMonths:-1;for(let a=t;a!=i;a+=e){const t=n.daysContainer.children[a],i=e>0?0:t.children.length-1,o=e>0?t.children.length:-1;for(let n=i;n!=o;n+=e){const e=t.children[n];if(-1===e.className.indexOf("hidden")&&z(e.dateObj))return e}}}function W(e,t){const i=X(document.activeElement||document.body),a=void 0!==e?e:i?document.activeElement:void 0!==n.selectedDateElem&&X(n.selectedDateElem)?n.selectedDateElem:void 0!==n.todayDateElem&&X(n.todayDateElem)?n.todayDateElem:Y(t>0?1:-1);void 0===a?n._input.focus():i?function(e,t){const i=-1===e.className.indexOf("Month")?e.dateObj.getMonth():n.currentMonth,a=t>0?n.config.showMonths:-1,o=t>0?1:-1;for(let r=i-n.currentMonth;r!=a;r+=o){const a=n.daysContainer.children[r],d=i-n.currentMonth===r?e.$i+t:t<0?a.children.length-1:0,l=a.children.length;for(let n=d;n>=0&&n0?l:-1);n+=o){const i=a.children[n];if(-1===i.className.indexOf("hidden")&&z(i.dateObj)&&Math.abs(e.$i-n)>=Math.abs(t))return N(i)}}n.changeMonth(o),W(Y(o),0)}(a,t):N(a)}function L(e,t){const i=(new Date(e,t,1).getDay()-n.l10n.firstDayOfWeek+7)%7,a=n.utils.getDaysInMonth((t-1+12)%12,e),o=n.utils.getDaysInMonth(t,e),r=window.document.createDocumentFragment(),d=n.config.showMonths>1,l=d?"prevMonthDay hidden":"prevMonthDay",s=d?"nextMonthDay hidden":"nextMonthDay";let c=a+1-i,u=0;for(;c<=a;c++,u++)r.appendChild(A(l,new Date(e,t-1,c),c,u));for(c=1;c<=o;c++,u++)r.appendChild(A("",new Date(e,t,c),c,u));for(let a=o+1;a<=42-i&&(1===n.config.showMonths||u%7!=0);a++,u++)r.appendChild(A(s,new Date(e,t+1,a%o),a,u));const p=y("div","dayContainer");return p.appendChild(r),p}function H(){if(void 0===n.daysContainer)return;v(n.daysContainer),n.weekNumbers&&v(n.weekNumbers);const e=document.createDocumentFragment();for(let t=0;t1||"dropdown"!==n.config.monthSelectorType)return;const e=function(e){return!(void 0!==n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&en.config.maxDate.getMonth())};n.monthsDropdownContainer.tabIndex=-1,n.monthsDropdownContainer.innerHTML="";for(let t=0;t<12;t++){if(!e(t))continue;const i=y("option","flatpickr-monthDropdown-month");i.value=new Date(n.currentYear,t).getMonth().toString(),i.textContent=j(t,n.config.shorthandCurrentMonth,n.l10n),i.tabIndex=-1,n.currentMonth===t&&(i.selected=!0),n.monthsDropdownContainer.appendChild(i)}}function q(){const e=y("div","flatpickr-month"),t=window.document.createDocumentFragment();let i;n.config.showMonths>1||"static"===n.config.monthSelectorType?i=y("span","cur-month"):(n.monthsDropdownContainer=y("select","flatpickr-monthDropdown-months"),n.monthsDropdownContainer.setAttribute("aria-label",n.l10n.monthAriaLabel),C(n.monthsDropdownContainer,"change",(e=>{const t=k(e),i=parseInt(t.value,10);n.changeMonth(i-n.currentMonth),fe("onMonthChange")})),B(),i=n.monthsDropdownContainer);const a=D("cur-year",{tabindex:"-1"}),o=a.getElementsByTagName("input")[0];o.setAttribute("aria-label",n.l10n.yearAriaLabel),n.config.minDate&&o.setAttribute("min",n.config.minDate.getFullYear().toString()),n.config.maxDate&&(o.setAttribute("max",n.config.maxDate.getFullYear().toString()),o.disabled=!!n.config.minDate&&n.config.minDate.getFullYear()===n.config.maxDate.getFullYear());const r=y("div","flatpickr-current-month");return r.appendChild(i),r.appendChild(a),t.appendChild(r),e.appendChild(t),{container:e,yearElement:o,monthElement:i}}function R(){v(n.monthNav),n.monthNav.appendChild(n.prevMonthNav),n.config.showMonths&&(n.yearElements=[],n.monthElements=[]);for(let e=n.config.showMonths;e--;){const e=q();n.yearElements.push(e.yearElement),n.monthElements.push(e.monthElement),n.monthNav.appendChild(e.container)}n.monthNav.appendChild(n.nextMonthNav)}function V(){n.weekdayContainer?v(n.weekdayContainer):n.weekdayContainer=y("div","flatpickr-weekdays");for(let e=n.config.showMonths;e--;){const e=y("div","flatpickr-weekdaycontainer");n.weekdayContainer.appendChild(e)}return $(),n.weekdayContainer}function $(){if(!n.weekdayContainer)return;const e=n.l10n.firstDayOfWeek;let t=[...n.l10n.weekdays.shorthand];e>0&&e\n ${t.join("")}\n \n `}function J(e,t=!0){const i=t?e:e-n.currentMonth;i<0&&!0===n._hidePrevMonthArrow||i>0&&!0===n._hideNextMonthArrow||(n.currentMonth+=i,(n.currentMonth<0||n.currentMonth>11)&&(n.currentYear+=n.currentMonth>11?1:-1,n.currentMonth=(n.currentMonth+12)%12,fe("onYearChange"),B()),H(),fe("onMonthChange"),be())}function K(e){return!(!n.config.appendTo||!n.config.appendTo.contains(e))||n.calendarContainer.contains(e)}function U(e){if(n.isOpen&&!n.config.inline){const t=k(e),i=K(t),a=t===n.input||t===n.altInput||n.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(n.input)||~e.path.indexOf(n.altInput)),r="blur"===e.type?a&&e.relatedTarget&&!K(e.relatedTarget):!a&&!i&&!K(e.relatedTarget),d=!n.config.ignoredFocusElements.some((e=>e.contains(t)));r&&d&&(void 0!==n.timeContainer&&void 0!==n.minuteElement&&void 0!==n.hourElement&&""!==n.input.value&&void 0!==n.input.value&&o(),n.close(),n.config&&"range"===n.config.mode&&1===n.selectedDates.length&&(n.clear(!1),n.redraw()))}}function G(e){if(!e||n.config.minDate&&en.config.maxDate.getFullYear())return;const t=e,i=n.currentYear!==t;n.currentYear=t||n.currentYear,n.config.maxDate&&n.currentYear===n.config.maxDate.getFullYear()?n.currentMonth=Math.min(n.config.maxDate.getMonth(),n.currentMonth):n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&(n.currentMonth=Math.max(n.config.minDate.getMonth(),n.currentMonth)),i&&(n.redraw(),fe("onYearChange"),B())}function z(e,t=!0){var i;const a=n.parseDate(e,void 0,t);if(n.config.minDate&&a&&Q(a,n.config.minDate,void 0!==t?t:!n.minDateHasTime)<0||n.config.maxDate&&a&&Q(a,n.config.maxDate,void 0!==t?t:!n.maxDateHasTime)>0)return!1;if(!n.config.enable&&0===n.config.disable.length)return!0;if(void 0===a)return!1;const o=!!n.config.enable,r=null!==(i=n.config.enable)&&void 0!==i?i:n.config.disable;for(let e,t=0;t=e.from.getTime()&&a.getTime()<=e.to.getTime())return o}return!o}function X(e){return void 0!==n.daysContainer&&(-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&n.daysContainer.contains(e))}function Z(e){!(e.target===n._input)||!(n.selectedDates.length>0||n._input.value.length>0)||e.relatedTarget&&K(e.relatedTarget)||n.setDate(n._input.value,!0,e.target===n.altInput?n.config.altFormat:n.config.dateFormat)}function ee(t){const i=k(t),a=n.config.wrap?e.contains(i):i===n._input,d=n.config.allowInput,l=n.isOpen&&(!d||!a),s=n.config.inline&&a&&!d;if(13===t.keyCode&&a){if(d)return n.setDate(n._input.value,!0,i===n.altInput?n.config.altFormat:n.config.dateFormat),i.blur();n.open()}else if(K(i)||l||s){const e=!!n.timeContainer&&n.timeContainer.contains(i);switch(t.keyCode){case 13:e?(t.preventDefault(),o(),le()):se(t);break;case 27:t.preventDefault(),le();break;case 8:case 46:a&&!n.config.allowInput&&(t.preventDefault(),n.clear());break;case 37:case 39:if(e||a)n.hourElement&&n.hourElement.focus();else if(t.preventDefault(),void 0!==n.daysContainer&&(!1===d||document.activeElement&&X(document.activeElement))){const e=39===t.keyCode?1:-1;t.ctrlKey?(t.stopPropagation(),J(e),W(Y(1),0)):W(void 0,e)}break;case 38:case 40:t.preventDefault();const r=40===t.keyCode?1:-1;n.daysContainer&&void 0!==i.$i||i===n.input||i===n.altInput?t.ctrlKey?(t.stopPropagation(),G(n.currentYear-r),W(Y(1),0)):e||W(void 0,7*r):i===n.currentYearElement?G(n.currentYear-r):n.config.enableTime&&(!e&&n.hourElement&&n.hourElement.focus(),o(t),n._debouncedChange());break;case 9:if(e){const e=[n.hourElement,n.minuteElement,n.secondElement,n.amPM].concat(n.pluginElements).filter((e=>e)),a=e.indexOf(i);if(-1!==a){const i=e[a+(t.shiftKey?-1:1)];t.preventDefault(),(i||n._input).focus()}}else!n.config.noCalendar&&n.daysContainer&&n.daysContainer.contains(i)&&t.shiftKey&&(t.preventDefault(),n._input.focus())}}if(void 0!==n.amPM&&i===n.amPM)switch(t.key){case n.l10n.amPM[0].charAt(0):case n.l10n.amPM[0].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[0],r(),ye();break;case n.l10n.amPM[1].charAt(0):case n.l10n.amPM[1].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[1],r(),ye()}(a||K(i))&&fe("onKeyDown",t)}function te(e){if(1!==n.selectedDates.length||e&&(!e.classList.contains("flatpickr-day")||e.classList.contains("flatpickr-disabled")))return;const t=e?e.dateObj.getTime():n.days.firstElementChild.dateObj.getTime(),i=n.parseDate(n.selectedDates[0],void 0,!0).getTime(),a=Math.min(t,n.selectedDates[0].getTime()),o=Math.max(t,n.selectedDates[0].getTime());let r=!1,d=0,l=0;for(let e=a;ea&&ed)?d=e:e>i&&(!l||e0&&f0&&f>l;m?(p.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach((e=>{p.classList.remove(e)}))):r&&!m||(["startRange","inRange","endRange","notAllowed"].forEach((e=>{p.classList.remove(e)})),void 0!==e&&(e.classList.add(t<=n.selectedDates[0].getTime()?"startRange":"endRange"),it&&f===i&&p.classList.add("endRange"),f>=d&&(0===l||f<=l)&&(c=i,u=t,(s=f)>Math.min(c,u)&&s{const i=n.config[`_${e}Date`]=n.parseDate(t,n.config.dateFormat),a=n.config[`_${"min"===e?"max":"min"}Date`];void 0!==i&&(n["min"===e?"minDateHasTime":"maxDateHasTime"]=i.getHours()>0||i.getMinutes()>0||i.getSeconds()>0),n.selectedDates&&(n.selectedDates=n.selectedDates.filter((e=>z(e))),n.selectedDates.length||"min"!==e||d(i),ye()),n.daysContainer&&(de(),void 0!==i?n.currentYearElement[e]=i.getFullYear().toString():n.currentYearElement.removeAttribute(e),n.currentYearElement.disabled=!!a&&void 0!==i&&a.getFullYear()===i.getFullYear())}}function ae(){return n.config.wrap?e.querySelector("[data-input]"):e}function oe(){"object"!=typeof n.config.locale&&void 0===P.l10ns[n.config.locale]&&n.config.errorHandler(new Error(`flatpickr: invalid locale ${n.config.locale}`)),n.l10n=Object.assign(Object.assign({},P.l10ns.default),"object"==typeof n.config.locale?n.config.locale:"default"!==n.config.locale?P.l10ns[n.config.locale]:void 0),M.K=`(${n.l10n.amPM[0]}|${n.l10n.amPM[1]}|${n.l10n.amPM[0].toLowerCase()}|${n.l10n.amPM[1].toLowerCase()})`;void 0===Object.assign(Object.assign({},t),JSON.parse(JSON.stringify(e.dataset||{}))).time_24hr&&void 0===P.defaultConfig.time_24hr&&(n.config.time_24hr=n.l10n.time_24hr),n.formatDate=T(n),n.parseDate=E({config:n.config,l10n:n.l10n})}function re(e){if("function"==typeof n.config.position)return void n.config.position(n,e);if(void 0===n.calendarContainer)return;fe("onPreCalendarPosition");const t=e||n._positionElement,i=Array.prototype.reduce.call(n.calendarContainer.children,((e,t)=>e+t.offsetHeight),0),a=n.calendarContainer.offsetWidth,o=n.config.position.split(" "),r=o[0],d=o.length>1?o[1]:null,l=t.getBoundingClientRect(),s=window.innerHeight-l.bottom,c="above"===r||"below"!==r&&si,u=window.pageYOffset+l.top+(c?-i-2:t.offsetHeight+2);if(h(n.calendarContainer,"arrowTop",!c),h(n.calendarContainer,"arrowBottom",c),n.config.inline)return;let p=window.pageXOffset+l.left,f=!1,m=!1;"center"===d?(p-=(a-l.width)/2,f=!0):"right"===d&&(p-=a-l.width,m=!0),h(n.calendarContainer,"arrowLeft",!f&&!m),h(n.calendarContainer,"arrowCenter",f),h(n.calendarContainer,"arrowRight",m);const g=window.document.body.offsetWidth-(window.pageXOffset+l.right),b=p+a>window.document.body.offsetWidth,y=g+a>window.document.body.offsetWidth;if(h(n.calendarContainer,"rightMost",b),!n.config.static)if(n.calendarContainer.style.top=`${u}px`,b)if(y){const e=function(){let e=null;for(let t=0;te.classList&&e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled")&&!e.classList.contains("notAllowed")));if(void 0===t)return;const i=t,a=n.latestSelectedDateObj=new Date(i.dateObj.getTime()),o=(a.getMonth()n.currentMonth+n.config.showMonths-1)&&"range"!==n.config.mode;if(n.selectedDateElem=i,"single"===n.config.mode)n.selectedDates=[a];else if("multiple"===n.config.mode){const e=ge(a);e?n.selectedDates.splice(parseInt(e),1):n.selectedDates.push(a)}else"range"===n.config.mode&&(2===n.selectedDates.length&&n.clear(!1,!1),n.latestSelectedDateObj=a,n.selectedDates.push(a),0!==Q(a,n.selectedDates[0],!0)&&n.selectedDates.sort(((e,t)=>e.getTime()-t.getTime())));if(r(),o){const e=n.currentYear!==a.getFullYear();n.currentYear=a.getFullYear(),n.currentMonth=a.getMonth(),e&&(fe("onYearChange"),B()),fe("onMonthChange")}if(be(),H(),ye(),o||"range"===n.config.mode||1!==n.config.showMonths?void 0!==n.selectedDateElem&&void 0===n.hourElement&&n.selectedDateElem&&n.selectedDateElem.focus():N(i),void 0!==n.hourElement&&void 0!==n.hourElement&&n.hourElement.focus(),n.config.closeOnSelect){const e="single"===n.config.mode&&!n.config.enableTime,t="range"===n.config.mode&&2===n.selectedDates.length&&!n.config.enableTime;(e||t)&&le()}x()}n.parseDate=E({config:n.config,l10n:n.l10n}),n._handlers=[],n.pluginElements=[],n.loadedPlugins=[],n._bind=C,n._setHoursFromDate=d,n._positionCalendar=re,n.changeMonth=J,n.changeYear=G,n.clear=function(e=!0,t=!0){n.input.value="",void 0!==n.altInput&&(n.altInput.value="");void 0!==n.mobileInput&&(n.mobileInput.value="");n.selectedDates=[],n.latestSelectedDateObj=void 0,!0===t&&(n.currentYear=n._initialDate.getFullYear(),n.currentMonth=n._initialDate.getMonth());if(!0===n.config.enableTime){const{hours:e,minutes:t,seconds:i}=I(n.config);l(e,t,i)}n.redraw(),e&&fe("onChange")},n.close=function(){n.isOpen=!1,n.isMobile||(void 0!==n.calendarContainer&&n.calendarContainer.classList.remove("open"),void 0!==n._input&&n._input.classList.remove("active"));fe("onClose")},n._createElement=y,n.destroy=function(){void 0!==n.config&&fe("onDestroy");for(let e=n._handlers.length;e--;)n._handlers[e].remove();if(n._handlers=[],n.mobileInput)n.mobileInput.parentNode&&n.mobileInput.parentNode.removeChild(n.mobileInput),n.mobileInput=void 0;else if(n.calendarContainer&&n.calendarContainer.parentNode)if(n.config.static&&n.calendarContainer.parentNode){const e=n.calendarContainer.parentNode;if(e.lastChild&&e.removeChild(e.lastChild),e.parentNode){for(;e.firstChild;)e.parentNode.insertBefore(e.firstChild,e);e.parentNode.removeChild(e)}}else n.calendarContainer.parentNode.removeChild(n.calendarContainer);n.altInput&&(n.input.type="text",n.altInput.parentNode&&n.altInput.parentNode.removeChild(n.altInput),delete n.altInput);n.input&&(n.input.type=n.input._type,n.input.classList.remove("flatpickr-input"),n.input.removeAttribute("readonly"));["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach((e=>{try{delete n[e]}catch(e){}}))},n.isEnabled=z,n.jumpToDate=_,n.open=function(e,t=n._positionElement){if(!0===n.isMobile){if(e){e.preventDefault();const t=k(e);t&&t.blur()}return void 0!==n.mobileInput&&(n.mobileInput.focus(),n.mobileInput.click()),void fe("onOpen")}if(n._input.disabled||n.config.inline)return;const i=n.isOpen;n.isOpen=!0,i||(n.calendarContainer.classList.add("open"),n._input.classList.add("active"),fe("onOpen"),re(t));!0===n.config.enableTime&&!0===n.config.noCalendar&&(!1!==n.config.allowInput||void 0!==e&&n.timeContainer.contains(e.relatedTarget)||setTimeout((()=>n.hourElement.select()),50))},n.redraw=de,n.set=function(e,t){if(null!==e&&"object"==typeof e){Object.assign(n.config,e);for(const t in e)void 0!==ce[t]&&ce[t].forEach((e=>e()))}else n.config[e]=t,void 0!==ce[e]?ce[e].forEach((e=>e())):s.indexOf(e)>-1&&(n.config[e]=b(t));n.redraw(),ye(!0)},n.setDate=function(e,t=!1,i=n.config.dateFormat){if(0!==e&&!e||e instanceof Array&&0===e.length)return n.clear(t);ue(e,i),n.latestSelectedDateObj=n.selectedDates[n.selectedDates.length-1],n.redraw(),_(void 0,t),d(),0===n.selectedDates.length&&n.clear(!1);ye(t),t&&fe("onChange")},n.toggle=function(e){if(!0===n.isOpen)return n.close();n.open(e)};const ce={locale:[oe,$],showMonths:[R,a,V],minDate:[_],maxDate:[_],clickOpens:[()=>{!0===n.config.clickOpens?(C(n._input,"focus",n.open),C(n._input,"click",n.open)):(n._input.removeEventListener("focus",n.open),n._input.removeEventListener("click",n.open))}]};function ue(e,t){let i=[];if(e instanceof Array)i=e.map((e=>n.parseDate(e,t)));else if(e instanceof Date||"number"==typeof e)i=[n.parseDate(e,t)];else if("string"==typeof e)switch(n.config.mode){case"single":case"time":i=[n.parseDate(e,t)];break;case"multiple":i=e.split(n.config.conjunction).map((e=>n.parseDate(e,t)));break;case"range":i=e.split(n.l10n.rangeSeparator).map((e=>n.parseDate(e,t)))}else n.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(e)}`));n.selectedDates=n.config.allowInvalidPreload?i:i.filter((e=>e instanceof Date&&z(e,!1))),"range"===n.config.mode&&n.selectedDates.sort(((e,t)=>e.getTime()-t.getTime()))}function pe(e){return e.slice().map((e=>"string"==typeof e||"number"==typeof e||e instanceof Date?n.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:n.parseDate(e.from,void 0),to:n.parseDate(e.to,void 0)}:e)).filter((e=>e))}function fe(e,t){if(void 0===n.config)return;const i=n.config[e];if(void 0!==i&&i.length>0)for(let e=0;i[e]&&e{const i=new Date(n.currentYear,n.currentMonth,1);i.setMonth(n.currentMonth+t),n.config.showMonths>1||"static"===n.config.monthSelectorType?n.monthElements[t].textContent=j(i.getMonth(),n.config.shorthandCurrentMonth,n.l10n)+" ":n.monthsDropdownContainer.value=i.getMonth().toString(),e.value=i.getFullYear().toString()})),n._hidePrevMonthArrow=void 0!==n.config.minDate&&(n.currentYear===n.config.minDate.getFullYear()?n.currentMonth<=n.config.minDate.getMonth():n.currentYearn.config.maxDate.getMonth():n.currentYear>n.config.maxDate.getFullYear()))}function he(e){return n.selectedDates.map((t=>n.formatDate(t,e))).filter(((e,t,i)=>"range"!==n.config.mode||n.config.enableTime||i.indexOf(e)===t)).join("range"!==n.config.mode?n.config.conjunction:n.l10n.rangeSeparator)}function ye(e=!0){void 0!==n.mobileInput&&n.mobileFormatStr&&(n.mobileInput.value=void 0!==n.latestSelectedDateObj?n.formatDate(n.latestSelectedDateObj,n.mobileFormatStr):""),n.input.value=he(n.config.dateFormat),void 0!==n.altInput&&(n.altInput.value=he(n.config.altFormat)),!1!==e&&fe("onValueUpdate")}function ve(e){const t=k(e),i=n.prevMonthNav.contains(t),a=n.nextMonthNav.contains(t);i||a?J(i?-1:1):n.yearElements.indexOf(t)>=0?t.select():t.classList.contains("arrowUp")?n.changeYear(n.currentYear+1):t.classList.contains("arrowDown")&&n.changeYear(n.currentYear-1)}return function(){n.element=n.input=e,n.isOpen=!1,function(){const a=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],o=Object.assign(Object.assign({},JSON.parse(JSON.stringify(e.dataset||{}))),t),r={};n.config.parseDate=o.parseDate,n.config.formatDate=o.formatDate,Object.defineProperty(n.config,"enable",{get:()=>n.config._enable,set:e=>{n.config._enable=pe(e)}}),Object.defineProperty(n.config,"disable",{get:()=>n.config._disable,set:e=>{n.config._disable=pe(e)}});const d="time"===o.mode;if(!o.dateFormat&&(o.enableTime||d)){const e=P.defaultConfig.dateFormat||c.dateFormat;r.dateFormat=o.noCalendar||d?"H:i"+(o.enableSeconds?":S":""):e+" H:i"+(o.enableSeconds?":S":"")}if(o.altInput&&(o.enableTime||d)&&!o.altFormat){const e=P.defaultConfig.altFormat||c.altFormat;r.altFormat=o.noCalendar||d?"h:i"+(o.enableSeconds?":S K":" K"):e+` h:i${o.enableSeconds?":S":""} K`}Object.defineProperty(n.config,"minDate",{get:()=>n.config._minDate,set:ie("min")}),Object.defineProperty(n.config,"maxDate",{get:()=>n.config._maxDate,set:ie("max")});const l=e=>t=>{n.config["min"===e?"_minTime":"_maxTime"]=n.parseDate(t,"H:i:S")};Object.defineProperty(n.config,"minTime",{get:()=>n.config._minTime,set:l("min")}),Object.defineProperty(n.config,"maxTime",{get:()=>n.config._maxTime,set:l("max")}),"time"===o.mode&&(n.config.noCalendar=!0,n.config.enableTime=!0);Object.assign(n.config,r,o);for(let e=0;evoid 0!==n.config[e])).forEach((e=>{n.config[e]=b(n.config[e]||[]).map(i)})),n.isMobile=!n.config.disableMobile&&!n.config.inline&&"single"===n.config.mode&&!n.config.disable.length&&!n.config.enable&&!n.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(let e=0;e-1?n.config[e]=b(t[e]).map(i).concat(n.config[e]):void 0===o[e]&&(n.config[e]=t[e])}o.altInputClass||(n.config.altInputClass=ae().className+" "+n.config.altInputClass);fe("onParseConfig")}(),oe(),function(){if(n.input=ae(),!n.input)return void n.config.errorHandler(new Error("Invalid input element specified"));n.input._type=n.input.type,n.input.type="text",n.input.classList.add("flatpickr-input"),n._input=n.input,n.config.altInput&&(n.altInput=y(n.input.nodeName,n.config.altInputClass),n._input=n.altInput,n.altInput.placeholder=n.input.placeholder,n.altInput.disabled=n.input.disabled,n.altInput.required=n.input.required,n.altInput.tabIndex=n.input.tabIndex,n.altInput.type="text",n.input.setAttribute("type","hidden"),!n.config.static&&n.input.parentNode&&n.input.parentNode.insertBefore(n.altInput,n.input.nextSibling));n.config.allowInput||n._input.setAttribute("readonly","readonly");n._positionElement=n.config.positionElement||n._input}(),function(){n.selectedDates=[],n.now=n.parseDate(n.config.now)||new Date;const e=n.config.defaultDate||("INPUT"!==n.input.nodeName&&"TEXTAREA"!==n.input.nodeName||!n.input.placeholder||n.input.value!==n.input.placeholder?n.input.value:null);e&&ue(e,n.config.dateFormat);n._initialDate=n.selectedDates.length>0?n.selectedDates[0]:n.config.minDate&&n.config.minDate.getTime()>n.now.getTime()?n.config.minDate:n.config.maxDate&&n.config.maxDate.getTime()0&&(n.latestSelectedDateObj=n.selectedDates[0]);void 0!==n.config.minTime&&(n.config.minTime=n.parseDate(n.config.minTime,"H:i"));void 0!==n.config.maxTime&&(n.config.maxTime=n.parseDate(n.config.maxTime,"H:i"));n.minDateHasTime=!!n.config.minDate&&(n.config.minDate.getHours()>0||n.config.minDate.getMinutes()>0||n.config.minDate.getSeconds()>0),n.maxDateHasTime=!!n.config.maxDate&&(n.config.maxDate.getHours()>0||n.config.maxDate.getMinutes()>0||n.config.maxDate.getSeconds()>0)}(),n.utils={getDaysInMonth:(e=n.currentMonth,t=n.currentYear)=>1===e&&(t%4==0&&t%100!=0||t%400==0)?29:n.l10n.daysInMonth[e]},n.isMobile||function(){const e=window.document.createDocumentFragment();if(n.calendarContainer=y("div","flatpickr-calendar"),n.calendarContainer.tabIndex=-1,!n.config.noCalendar){if(e.appendChild((n.monthNav=y("div","flatpickr-months"),n.yearElements=[],n.monthElements=[],n.prevMonthNav=y("span","flatpickr-prev-month"),n.prevMonthNav.innerHTML=n.config.prevArrow,n.nextMonthNav=y("span","flatpickr-next-month"),n.nextMonthNav.innerHTML=n.config.nextArrow,R(),Object.defineProperty(n,"_hidePrevMonthArrow",{get:()=>n.__hidePrevMonthArrow,set(e){n.__hidePrevMonthArrow!==e&&(h(n.prevMonthNav,"flatpickr-disabled",e),n.__hidePrevMonthArrow=e)}}),Object.defineProperty(n,"_hideNextMonthArrow",{get:()=>n.__hideNextMonthArrow,set(e){n.__hideNextMonthArrow!==e&&(h(n.nextMonthNav,"flatpickr-disabled",e),n.__hideNextMonthArrow=e)}}),n.currentYearElement=n.yearElements[0],be(),n.monthNav)),n.innerContainer=y("div","flatpickr-innerContainer"),n.config.weekNumbers){const{weekWrapper:e,weekNumbers:t}=function(){n.calendarContainer.classList.add("hasWeeks");const e=y("div","flatpickr-weekwrapper");e.appendChild(y("span","flatpickr-weekday",n.l10n.weekAbbreviation));const t=y("div","flatpickr-weeks");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}();n.innerContainer.appendChild(e),n.weekNumbers=t,n.weekWrapper=e}n.rContainer=y("div","flatpickr-rContainer"),n.rContainer.appendChild(V()),n.daysContainer||(n.daysContainer=y("div","flatpickr-days"),n.daysContainer.tabIndex=-1),H(),n.rContainer.appendChild(n.daysContainer),n.innerContainer.appendChild(n.rContainer),e.appendChild(n.innerContainer)}n.config.enableTime&&e.appendChild(function(){n.calendarContainer.classList.add("hasTime"),n.config.noCalendar&&n.calendarContainer.classList.add("noCalendar");const e=I(n.config);n.timeContainer=y("div","flatpickr-time"),n.timeContainer.tabIndex=-1;const t=y("span","flatpickr-time-separator",":"),i=D("flatpickr-hour",{"aria-label":n.l10n.hourAriaLabel});n.hourElement=i.getElementsByTagName("input")[0];const a=D("flatpickr-minute",{"aria-label":n.l10n.minuteAriaLabel});n.minuteElement=a.getElementsByTagName("input")[0],n.hourElement.tabIndex=n.minuteElement.tabIndex=-1,n.hourElement.value=f(n.latestSelectedDateObj?n.latestSelectedDateObj.getHours():n.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),n.minuteElement.value=f(n.latestSelectedDateObj?n.latestSelectedDateObj.getMinutes():e.minutes),n.hourElement.setAttribute("step",n.config.hourIncrement.toString()),n.minuteElement.setAttribute("step",n.config.minuteIncrement.toString()),n.hourElement.setAttribute("min",n.config.time_24hr?"0":"1"),n.hourElement.setAttribute("max",n.config.time_24hr?"23":"12"),n.hourElement.setAttribute("maxlength","2"),n.minuteElement.setAttribute("min","0"),n.minuteElement.setAttribute("max","59"),n.minuteElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(i),n.timeContainer.appendChild(t),n.timeContainer.appendChild(a),n.config.time_24hr&&n.timeContainer.classList.add("time24hr");if(n.config.enableSeconds){n.timeContainer.classList.add("hasSeconds");const t=D("flatpickr-second");n.secondElement=t.getElementsByTagName("input")[0],n.secondElement.value=f(n.latestSelectedDateObj?n.latestSelectedDateObj.getSeconds():e.seconds),n.secondElement.setAttribute("step",n.minuteElement.getAttribute("step")),n.secondElement.setAttribute("min","0"),n.secondElement.setAttribute("max","59"),n.secondElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(y("span","flatpickr-time-separator",":")),n.timeContainer.appendChild(t)}n.config.time_24hr||(n.amPM=y("span","flatpickr-am-pm",n.l10n.amPM[m((n.latestSelectedDateObj?n.hourElement.value:n.config.defaultHour)>11)]),n.amPM.title=n.l10n.toggleTitle,n.amPM.tabIndex=-1,n.timeContainer.appendChild(n.amPM));return n.timeContainer}());h(n.calendarContainer,"rangeMode","range"===n.config.mode),h(n.calendarContainer,"animate",!0===n.config.animate),h(n.calendarContainer,"multiMonth",n.config.showMonths>1),n.calendarContainer.appendChild(e);const t=void 0!==n.config.appendTo&&void 0!==n.config.appendTo.nodeType;if((n.config.inline||n.config.static)&&(n.calendarContainer.classList.add(n.config.inline?"inline":"static"),n.config.inline&&(!t&&n.element.parentNode?n.element.parentNode.insertBefore(n.calendarContainer,n._input.nextSibling):void 0!==n.config.appendTo&&n.config.appendTo.appendChild(n.calendarContainer)),n.config.static)){const e=y("div","flatpickr-wrapper");n.element.parentNode&&n.element.parentNode.insertBefore(e,n.element),e.appendChild(n.element),n.altInput&&e.appendChild(n.altInput),e.appendChild(n.calendarContainer)}n.config.static||n.config.inline||(void 0!==n.config.appendTo?n.config.appendTo:window.document.body).appendChild(n.calendarContainer)}(),function(){n.config.wrap&&["open","close","toggle","clear"].forEach((e=>{Array.prototype.forEach.call(n.element.querySelectorAll(`[data-${e}]`),(t=>C(t,"click",n[e])))}));if(n.isMobile)return void function(){const e=n.config.enableTime?n.config.noCalendar?"time":"datetime-local":"date";n.mobileInput=y("input",n.input.className+" flatpickr-mobile"),n.mobileInput.tabIndex=1,n.mobileInput.type=e,n.mobileInput.disabled=n.input.disabled,n.mobileInput.required=n.input.required,n.mobileInput.placeholder=n.input.placeholder,n.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",n.selectedDates.length>0&&(n.mobileInput.defaultValue=n.mobileInput.value=n.formatDate(n.selectedDates[0],n.mobileFormatStr));n.config.minDate&&(n.mobileInput.min=n.formatDate(n.config.minDate,"Y-m-d"));n.config.maxDate&&(n.mobileInput.max=n.formatDate(n.config.maxDate,"Y-m-d"));n.input.getAttribute("step")&&(n.mobileInput.step=String(n.input.getAttribute("step")));n.input.type="hidden",void 0!==n.altInput&&(n.altInput.type="hidden");try{n.input.parentNode&&n.input.parentNode.insertBefore(n.mobileInput,n.input.nextSibling)}catch(e){}C(n.mobileInput,"change",(e=>{n.setDate(k(e).value,!1,n.mobileFormatStr),fe("onChange"),fe("onClose")}))}();const e=g(ne,50);n._debouncedChange=g(x,300),n.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&C(n.daysContainer,"mouseover",(e=>{"range"===n.config.mode&&te(k(e))}));C(window.document.body,"keydown",ee),n.config.inline||n.config.static||C(window,"resize",e);void 0!==window.ontouchstart?C(window.document,"touchstart",U):C(window.document,"mousedown",U);C(window.document,"focus",U,{capture:!0}),!0===n.config.clickOpens&&(C(n._input,"focus",n.open),C(n._input,"click",n.open));void 0!==n.daysContainer&&(C(n.monthNav,"click",ve),C(n.monthNav,["keyup","increment"],u),C(n.daysContainer,"click",se));if(void 0!==n.timeContainer&&void 0!==n.minuteElement&&void 0!==n.hourElement){const e=e=>k(e).select();C(n.timeContainer,["increment"],o),C(n.timeContainer,"blur",o,{capture:!0}),C(n.timeContainer,"click",S),C([n.hourElement,n.minuteElement],["focus","click"],e),void 0!==n.secondElement&&C(n.secondElement,"focus",(()=>n.secondElement&&n.secondElement.select())),void 0!==n.amPM&&C(n.amPM,"click",(e=>{o(e),x()}))}n.config.allowInput&&C(n._input,"blur",Z)}(),(n.selectedDates.length||n.config.noCalendar)&&(n.config.enableTime&&d(n.config.noCalendar?n.latestSelectedDateObj:void 0),ye(!1)),a();const r=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!n.isMobile&&r&&re(),fe("onReady")}(),n}function F(e,t){const n=Array.prototype.slice.call(e).filter((e=>e instanceof HTMLElement)),i=[];for(let e=0;e{P.l10ns.default=Object.assign(Object.assign({},P.l10ns.default),e)},P.setDefaults=e=>{P.defaultConfig=Object.assign(Object.assign({},P.defaultConfig),e)},P.parseDate=E({}),P.formatDate=T({}),P.compareDates=Q,"undefined"!=typeof jQuery&&void 0!==jQuery.fn&&(jQuery.fn.flatpickr=function(e){return F(this,e)}),Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+("string"==typeof e?parseInt(e,10):e))},"undefined"!=typeof window&&(window.flatpickr=P);const A=P;var N={init:function(){jQuery(".bdb-datepicker").length>0&&this.initDatepickers(),jQuery(document).on("click",".bdb-edit-row-with-datepicker",this.maybeAddDatepicker)},createDatepicker:function(e){var t={allowInput:!0,dateFormat:"Y-m-d"};e.classList.contains("bdb-timepicker")&&(t.enableTime=!0,t.dateFormat="Y-m-d H:i",t.altFormat="F J, Y, h:i K"),A(e,t)},initDatepickers:function(){document.querySelectorAll(".bdb-datepicker").forEach((function(e){N.createDatepicker(e)}))},maybeAddDatepicker:function(e){this.closest("tr").querySelectorAll(".bdb-datepicker").forEach((function(e){void 0===e._flatpickr&&N.createDatepicker(e)}))}},Y={init:function(){jQuery(".bdb-delete-item").on("click",this.confirm)},confirm:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){var t=jQuery(this).data("object"),n=bdbVars["confirm_delete_"+t];return!!confirm(n)}))},W="YYYY-MM-DD HH:mm:ss",L="MMMM D, YYYY";function H(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mysql";if(""===e||!e)return"";t="display"===t?L:W;var n=(e=moment.utc(e)).local().format(t);return n}function B(e){return""!==e&&e?(e=moment(e)).utc().format(W):""}var q={bookID:0,tableBody:!1,rowTemplate:wp.template("bdb-editions-table-row"),rowEmptyTemplate:wp.template("bdb-editions-table-row-empty"),errorWrap:"",init:function(){this.bookID=jQuery("#bdb-book-id").val(),this.tableBody=jQuery("#bdb-book-editions-list .wp-list-table tbody"),this.errorWrap=jQuery("#bdb-editions-errors"),this.tableBody.length&&void 0!==this.bookID&&this.bookID&&(jQuery("#bdb-add-edition").on("click",this.toggleNewEditionFields),jQuery("#bdb-submit-new-edition").on("click",this.addEdition),jQuery(document).on("click",".bdb-edition-toggle-editable",this.toggleEditableFields),jQuery(document).on("click",".bdb-update-edition",this.updateEdition),jQuery(document).on("click",".bdb-remove-edition",this.removeEdition),this.getEditions())},getEditions:function(){t("v1/edition",{book_id:q.bookID,number:50},"GET").then((function(e){q.tableBody.empty(),0===e.length||void 0===e.length?q.tableBody.append(q.rowEmptyTemplate):(jQuery("#bdb-book-editions-empty").remove(),jQuery.each(e,(function(e,t){t.date_acquired_formatted=H(t.date_acquired,"display"),t.date_acquired=H(t.date_acquired),q.tableBody.append(q.rowTemplate(t))}))),jQuery(document).trigger("bdb_editions_loaded")})).catch((function(e){q.errorWrap.empty().append(e).show()}))},toggleNewEditionFields:function(e){void 0!==e&&e.preventDefault(),jQuery("#bdb-new-edition-fields").slideToggle()},addEdition:function(e){e.preventDefault();var n=jQuery(this);o(n),q.errorWrap.empty().hide(),t("v1/edition/add",{book_id:q.bookID,isbn:jQuery("#bdb-new-edition-isbn").val(),format:jQuery("#bdb-new-edition-format").val(),date_acquired:B(jQuery("#bdb-new-edition-date-acquired").val()),source_id:jQuery("#bdb-checkboxes-source-edition").find("input:checked").val(),signed:jQuery("#bdb-new-edition-signed").prop("checked")?1:0},"POST").then((function(e){e.date_acquired_formatted=H(e.date_acquired,"display"),e.date_acquired=H(e.date_acquired),jQuery("#bdb-book-editions-empty").remove(),q.tableBody.append(q.rowTemplate(e));var t=jQuery("#bdb-new-edition-fields");t.find('input[type="text"]').val(""),t.find('input[type="checkbox"]').prop("checked",!1),q.toggleNewEditionFields(),V(e),jQuery(document).trigger("bdb_edition_added",e)})).catch((function(e){q.errorWrap.append(e).show()})).finally((function(){r(n)}))},toggleEditableFields:function(e){e.preventDefault();var t=jQuery(this),n=t.closest("tr");n.find(".bdb-table-display-value").hide(),n.find(".bdb-table-edit-value").show(),t.removeClass("bdb-edition-toggle-editable").addClass("bdb-update-edition button-primary").text(bdbVars.save)},updateEdition:function(e){e.preventDefault();var n=jQuery(this);o(n),q.errorWrap.empty().hide();var i=n.closest("tr"),a={isbn:i.find(".bdb-edition-isbn input").val(),format:i.find(".bdb-edition-format select").val(),date_acquired:B(i.find(".bdb-edition-date-acquired input").val()),source_id:i.find(".bdb-edition-source select").val(),signed:i.find('.bdb-edition-signed input[type="checkbox"]').prop("checked")?1:0};t("v1/edition/update/"+i.data("id"),a,"POST").then((function(e){e.date_acquired_formatted=H(e.date_acquired,"display"),e.date_acquired=H(e.date_acquired),i.replaceWith(q.rowTemplate(e)),V(e),jQuery(document).trigger("bdb_edition_updated",e)})).catch((function(e){q.errorWrap.append(e).show()})).finally((function(){r(n)}))},removeEdition:function(e){if(e.preventDefault(),!confirm(bdbVars.confirm_delete_edition))return!1;var n=jQuery(this);o(n),q.errorWrap.empty().hide();var i=n.closest("tr"),a=i.data("id");t("v1/edition/delete/"+a,{},"DELETE").then((function(e){i.remove(),function(e){jQuery(".bdb-book-edition-list").each((function(){jQuery(this).find('option[value="'+e+'"]').remove()}))}(a)})).catch((function(e){q.errorWrap.append(e).show()})).finally((function(){r(n)}))}};function R(e,t){var n=e.data("selected");e.empty().append('"),jQuery.each(t,(function(t,i){var a=i.id==n?' selected="selected"':"";e.append('")}))}function V(e){jQuery(".bdb-book-edition-list").each((function(){var t=jQuery(this),n=t.find('option[value="'+e.id+'"]');n.length?n.text(e.isbn+" - "+e.format_name):t.append('")}))}var $={responseWrap:!1,init:function(){this.responseWrap=jQuery("#bdb-license-key-response"),jQuery("#bdb-activate-license-key").on("click",this.activate),jQuery("#bdb-deactivate-license-key").on("click",this.deactivate),jQuery("#bdb-refresh-license-key").on("click",this.refresh)},activate:function(e){e.preventDefault();var t=jQuery(this);o(t),$.responseWrap.empty().removeClass("bdb-notice bdb-notice-error"),i({action:"bdb_activate_license_key",license_key:jQuery("#bdb-license-key").val(),nonce:t.data("nonce")}).then((function(e){$.responseWrap.empty().addClass("bdb-notice bdb-notice-success").append(e),jQuery("#bdb-activate-license-key").remove()})).catch((function(e){$.responseWrap.empty().addClass("bdb-notice bdb-notice-error").append(e),r(t)}))},deactivate:function(e){e.preventDefault();var t=jQuery(this);o(t),$.responseWrap.empty().removeClass("bdb-notice bdb-notice-error"),i({action:"bdb_deactivate_license_key",license_key:jQuery("#bdb-license-key").val(),nonce:t.data("nonce")}).then((function(e){$.responseWrap.empty().addClass("bdb-notice bdb-notice-success").append(e),jQuery("#bdb-deactivate-license-key").remove()})).catch((function(e){$.responseWrap.empty().addClass("bdb-notice bdb-notice-error").append(e),r(t)}))},refresh:function(e){e.preventDefault();var t=jQuery(this),n=t.parent().find(".description");o(t),$.responseWrap.empty().removeClass("bdb-notice bdb-notice-error"),i({action:"bdb_refresh_license_key",license_key:jQuery("#bdb-license-key").val(),nonce:t.data("nonce")}).then((function(e){n.empty().append(e)})).catch((function(e){$.responseWrap.empty().addClass("bdb-notice bdb-notice-error").append(e)})).finally((function(){r(t)}))}},J={frame:!1,init:function(){jQuery(".bdb-upload-image").on("click",this.createFrame),jQuery(".bdb-remove-image").on("click",this.removeImage)},createFrame:function(e){e.preventDefault();var t=jQuery(this),n=jQuery(this).parent().data("image"),i=jQuery(this).parent().data("image-id"),a=jQuery(this).parent().data("image-size");a&&void 0!==a||(a="medium"),J.frame=wp.media.frames.bookDB=wp.media({title:t.data("choose"),button:{text:t.data("update")},states:[new wp.media.controller.Library({title:t.data("choose"),filterable:"all",multiple:!1})]}),J.frame.on("select",(function(){J.frame.state().get("selection").map((function(e){if((e=e.toJSON()).id){jQuery(i).val(e.id);var o=e.sizes&&e.sizes[a]?e.sizes[a].url:e.url;if(void 0!==jQuery(n).attributes)for(;jQuery(n).attributes.length>0;)elem.removeAttribute(elem.attributes[0].name);jQuery(n).attr("src",o).attr("alt",e.alt).show(),t.parent().find(".bdb-remove-image").show()}}))})),J.frame.open()},removeImage:function(e){e.preventDefault();var t=jQuery(this),n=t.parent().data("image"),i=t.parent().data("image-id");if(void 0!==jQuery(n).attributes)for(;jQuery(n).attributes.length>0;)elem.removeAttribute(elem.attributes[0].name);jQuery(n).hide(),jQuery(i).val(""),t.hide()}},K={bookID:0,userID:0,maxPages:0,tableBody:!1,rowTemplate:wp.template("bdb-reading-logs-table-row"),rowEmptyTemplate:wp.template("bdb-reading-logs-table-row-empty"),errorWrap:"",userFilter:!1,editions:[],init:function(){this.bookID=jQuery("#bdb-book-id").val(),this.userID=jQuery("#bdb-book-reading-logs-list").data("user-id"),this.tableBody=jQuery("#bdb-book-reading-logs-list .wp-list-table tbody"),this.errorWrap=jQuery("#bdb-reading-logs-errors"),this.userFilter=jQuery("#bdb-book-reading-logs-user-filter"),this.tableBody.length&&void 0!==this.bookID&&this.bookID&&(this.maxPages=jQuery("#bdb-book-pages").val(),jQuery("#bdb-add-reading-log").on("click",this.toggleNewLogFields),jQuery("#bdb-submit-new-reading-log").on("click",this.addLog),jQuery(document).on("click",".bdb-reading-log-toggle-editable",this.toggleEditableFields),jQuery(document).on("click",".bdb-reading-log-percentage-complete .bdb-input-suffix",this.toggleCompleteUnit),jQuery(document).on("click",".bdb-update-reading-log",this.updateLog),jQuery(document).on("click",".bdb-remove-reading-log",this.removeLog),this.userFilter.on("change",this.getLogs),this.userFilter.trigger("change"),jQuery(document).on("bdb_edition_added",this.updateEditions))},shapeObject:function(e){return e.date_started_formatted=H(e.date_started,"display"),e.date_started=H(e.date_started),e.date_finished_formatted=H(e.date_finished,"display"),e.date_finished=H(e.date_finished),e.percentage_complete=(100*e.percentage_complete).toFixed(0),e.rating=null===e.rating?null:parseFloat(e.rating),e.rating_formatted=null===e.rating?null:parseFloat(e.rating)+" "+bdbVars.stars,e},loadEditions:function(){return t("v1/edition",{book_id:K.bookID,number:50},"GET")},getLogs:function(){var e={book_id:K.bookID,number:50};jQuery("#bdb-book-reading-logs-user-filter").prop("checked")&&(e.user_id=K.userID),K.loadEditions().then((function(n){if(K.editions=n,K.editions.length){var i=jQuery("#bdb-new-log-edition-id-wrap"),a=jQuery("#bdb-new-log-edition-id");a.empty().append('"),jQuery.each(K.editions,(function(e,t){a.append('")})),i.show()}return t("v1/reading-log",e,"GET")})).then((function(e){K.tableBody.empty(),0===e.length||void 0===e.length?K.tableBody.append(K.rowEmptyTemplate):(jQuery("#bdb-book-reading-logs-empty").remove(),jQuery.each(e,(function(e,t){t=K.shapeObject(t),K.tableBody.append(K.rowTemplate(t))})),K.tableBody.find(".bdb-book-edition-list").each((function(){R(jQuery(this),K.editions)}))),jQuery(document).trigger("bdb_reading_logs_loaded")})).catch((function(e){K.errorWrap.empty().append(e).show()}))},toggleNewLogFields:function(e){void 0!==e&&e.preventDefault(),jQuery("#bdb-new-reading-log-fields").slideToggle()},addLog:function(e){e.preventDefault();var n=jQuery(this);o(n),K.errorWrap.empty().hide();var i=jQuery("#bdb-new-log-percent-complete").val();""!==i&&i>0?i/=100:i=0;var a=jQuery("#bdb-new-log-edition-id").val();t("v1/reading-log/add",{book_id:K.bookID,edition_id:a.length>0?a:null,user_id:K.userID,date_started:B(jQuery("#bdb-new-log-start-date").val()),date_finished:B(jQuery("#bdb-new-log-end-date").val()),percentage_complete:i,rating:jQuery("#bdb-new-log-rating").val()},"POST").then((function(e){e=K.shapeObject(e),jQuery("#bdb-book-reading-logs-empty").remove(),K.tableBody.append(K.rowTemplate(e));var t=jQuery("#bdb-reading-log-edition-id-"+e.id);t.length&&R(t,K.editions);var n=jQuery("#bdb-new-reading-log-fields");n.find('input[type="text"]').val(""),n.find('input[type="checkbox"]').prop("checked",!1),K.toggleNewLogFields(),jQuery(document).trigger("bdb_reading_log_added",e)})).catch((function(e){K.errorWrap.append(e).show()})).finally((function(){r(n)}))},toggleEditableFields:function(e){e.preventDefault();var t=jQuery(this),n=t.closest("tr");n.find(".bdb-table-display-value").hide(),n.find(".bdb-table-edit-value").show(),t.removeClass("bdb-reading-log-toggle-editable").addClass("bdb-update-reading-log button-primary").text(bdbVars.save)},toggleCompleteUnit:function(e){e.preventDefault();var t=jQuery(this).closest(".bdb-reading-log-percentage-complete"),n="percentage";jQuery(this).hasClass("bdb-input-suffix-page")&&(n="page"),t.find(".bdb-input-suffix").removeClass("bdb-input-suffix-selected"),jQuery(this).addClass("bdb-input-suffix-selected"),"page"===n?(t.find(".bdb-reading-log-percentage-complete-wrap").hide(),t.find(".bdb-reading-log-page-wrap").show()):(t.find(".bdb-reading-log-percentage-complete-wrap").show(),t.find(".bdb-reading-log-page-wrap").hide())},updateLog:function(e){e.preventDefault();var n=jQuery(this);o(n),K.errorWrap.empty().hide();var i=n.closest("tr"),a=0,d="percentage";if(i.find(".bdb-input-suffix-selected").hasClass("bdb-input-suffix-page")&&(d="page"),"page"===d){var l=i.find(".bdb-reading-log-page-wrap input").val();a=K.maxPages>0?l/K.maxPages:0}else""!==(a=i.find(".bdb-reading-log-percentage-complete-wrap input").val())&&a>0?a/=100:a=0;var s=i.find(".bdb-book-edition-list").val(),c={date_started:B(i.find(".bdb-reading-log-date-started input").val()),date_finished:B(i.find(".bdb-reading-log-date-finished input").val()),edition_id:s.length>0?s:null,user_id:i.find(".bdb-reading-log-user-id input").val(),percentage_complete:a,rating:i.find(".bdb-reading-log-rating select").val()};t("v1/reading-log/update/"+i.data("id"),c,"POST").then((function(e){e=K.shapeObject(e),i.replaceWith(K.rowTemplate(e));var t=jQuery("#bdb-reading-log-edition-id-"+e.id);t.length&&R(t,K.editions),jQuery(document).trigger("bdb_reading_log_updated",e)})).catch((function(e){K.errorWrap.append(e).show()})).finally((function(){r(n)}))},removeLog:function(e){if(e.preventDefault(),!confirm(bdbVars.confirm_delete_reading_log))return!1;var n=jQuery(this);o(n),K.errorWrap.empty().hide();var i=n.closest("tr");t("v1/reading-log/delete/"+i.data("id"),{},"DELETE").then((function(e){i.remove()})).catch((function(e){K.errorWrap.append(e).show()})).finally((function(){r(n)}))},updateEditions:function(e,t){K.editions.push(t)}},U={tableBody:!1,rowTemplate:wp.template("bdb-retailers-table-row"),rowEmptyTemplate:wp.template("bdb-retailers-table-row-empty"),errorWrap:"",init:function(){this.tableBody=jQuery("#bdb-retailers tbody"),this.errorWrap=jQuery("#bdb-retailers-errors"),this.tableBody.length&&(jQuery("#bdb-new-retailer-fields").on("keydown","input",this.clickOnEnter),jQuery("#bdb-new-retailer-fields").on("click","button",this.addRetailer),jQuery(document).on("click",".bdb-update-retailer",this.updateRetailer),jQuery(document).on("click",".bdb-remove-retailer",this.deleteRetailer),this.getRetailers())},getRetailers:function(){t("v1/retailer",{number:50},"GET").then((function(e){U.tableBody.empty(),0===e.length||void 0===e.length?U.tableBody.append(U.rowEmptyTemplate):(jQuery("#bdb-retailers-empty").remove(),jQuery.each(e,(function(e,t){U.tableBody.append(U.rowTemplate(t))})))})).catch((function(e){U.errorWrap.empty().append(e).show()}))},clickOnEnter:function(e){13===e.keyCode&&(e.preventDefault(),jQuery("#bdb-new-retailer-fields").find("button").trigger("click"))},addRetailer:function(e){e.preventDefault();var n=jQuery(this);o(n),U.errorWrap.empty().hide();var i={name:jQuery("#bdb-new-retailer-name").val(),template:jQuery("#bdb-new-retailer-template").val()};U.checkRequiredFields(i).then((function(e){return t("v1/retailer/add",i,"POST")})).then((function(e){jQuery("#bdb-retailers-empty").remove(),U.tableBody.append(U.rowTemplate(e)),jQuery("#bdb-newretailer-fields").find("input").val(""),r(n)})).catch((function(e){U.errorWrap.append(e).show(),r(n)}))},updateRetailer:function(e){e.preventDefault();var n=jQuery(this);o(n),U.errorWrap.empty().hide();var i=n.closest("tr"),a={name:i.find(".bdb-retailer-name input").val(),template:i.find(".bdb-retailer-template textarea").val()};U.checkRequiredFields(a).then((function(e){return t("v1/retailer/update/"+i.data("id"),a,"POST")})).then((function(e){r(n)})).catch((function(e){U.errorWrap.append(e).show(),r(n)}))},deleteRetailer:function(e){e.preventDefault();var n=jQuery(this),i=!1;o(n),U.errorWrap.empty().hide();var a=n.closest("tr"),d=a.data("id"),l=bdbVars.confirm_delete_retailer;t("v1/book-link",{retailer_id:d,number:1},"GET").then((function(e){if(void 0!==e&&void 0!==e.length&&e.length>0&&(l=bdbVars.confirm_delete_retailer_links),!confirm(l))throw i=!0,Error();return t("v1/retailer/delete/"+d,{},"DELETE")})).then((function(e){a.remove()})).catch((function(e){i||U.errorWrap.append(e).show()})).finally((function(){r(n)}))},checkRequiredFields:function(e){return new Promise((function(t,n){e.hasOwnProperty("name")&&""!==e.name?t():n(bdbVars.error_required_fields)}))}},G={tag:!1,init:function(){this.tag=jQuery(".bdb-ajaxtag"),this.tag.length&&(jQuery(".bdb-tags-wrap").each((function(){G.quickClicks(jQuery(this))})),jQuery(".button",G.tag).on("click",(function(){G.flushTags(jQuery(this).closest(".bdb-tags-wrap"))})),G.tag.each((function(){var e=jQuery(".bdb-new-tag",jQuery(this)),t=jQuery(this).closest(".bdb-tags-wrap").data("taxonomy"),n=bdbVars.api_base+"book-database/v1/book-term/suggest/?taxonomy="+t+"&format=text&_wpnonce="+bdbVars.api_nonce;"author"===t&&(n=bdbVars.api_base+"book-database/v1/author/suggest/?format=text&_wpnonce="+bdbVars.api_nonce),e.on("keyup",(function(e){if(13===e.which)return G.flushTags(jQuery(this).closest(".bdb-tags-wrap")),!1})).on("keypress",(function(e){if(13===e.which)return e.preventDefault(),!1})).suggest(n)})),jQuery("#bdb-book-series-name").suggest(bdbVars.api_base+"book-database/v1/series/suggest/?format=text&_wpnonce="+bdbVars.api_nonce),jQuery(".bdb-admin-page > form").on("submit",(function(e){jQuery(".bdb-tags-wrap").each((function(){G.flushTags(this,!1,1)}))})))},clean:function(e){return e.replace(/\s*,\s*/g,",").replace(/,+/g,",").replace(/[,\s]+$/,"").replace(/^[,\s]+/,"")},parseTags:function(e){var t=e.id.split("-check-num-")[1],n=jQuery(e).closest(".bdb-tags-wrap"),i=n.find("textarea"),a=i.val().split(","),o=[];return delete a[t],jQuery.each(a,(function(e,t){(t=jQuery.trim(t))&&o.push(t)})),i.val(G.clean(o.join(","))),G.quickClicks(n),!1},quickClicks:function(e){var t,n,i=jQuery("textarea",e),a=jQuery(".bdb-tags-checklist",e),o=jQuery(e).attr("id");i.length&&(n=i.prop("disabled"),t=i.val().split(","),a.empty(),jQuery.each(t,(function(e,t){var i,r;(t=jQuery.trim(t))&&(i=jQuery("").text(t),n||((r=jQuery('X')).on("click",(function(e){G.parseTags(this)})),i.prepend(" ").prepend(r)),a.append(i))})))},flushTags:function(e,t,n){var i;t=t||!1;var a,o,r=jQuery("textarea",e),d=jQuery(".bdb-new-tag",e);return i=t?t.text():d.val(),o=(a=r.val())?a+","+i:i,o=G.clean(o),o=G.uniqueArray(o.split(",")).join(","),r.val(o),G.quickClicks(e),t||d.val(""),void 0===n&&d.focus(),!1},uniqueArray:function(e){var t=[];return jQuery.each(e,(function(e,n){(n=jQuery.trim(n))&&-1===jQuery.inArray(n,t)&&t.push(n)})),t}},z={tableBody:!1,rowTemplate:wp.template("bdb-taxonomies-table-row"),rowEmptyTemplate:wp.template("bdb-taxonomies-table-row-empty"),errorWrap:"",init:function(){this.tableBody=jQuery("#bdb-book-taxonomies tbody"),this.errorWrap=jQuery("#bdb-book-taxonomies-errors"),this.tableBody.length&&(jQuery("#bdb-new-book-taxonomy-name").on("keyup",this.generateSlug),jQuery("#bdb-new-book-taxonomy-fields").on("keydown","input",this.clickOnEnter),jQuery("#bdb-new-book-taxonomy-fields").on("click",".button-primary",this.addTaxonomy),jQuery(document).on("click",".bdb-update-book-taxonomy",this.updateTaxonomy),jQuery(document).on("click",".bdb-remove-book-taxonomy",this.deleteTaxonomy),this.getTaxonomies())},getTaxonomies:function(){t("v1/taxonomy",{number:50},"GET").then((function(e){z.tableBody.empty(),0===e.length||void 0===e.length?z.tableBody.append(z.rowEmptyTemplate):(jQuery("#bdb-book-taxonomies-empty").remove(),jQuery.each(e,(function(e,t){z.tableBody.append(z.rowTemplate(t))})))})).catch((function(e){z.errorWrap.empty().append(e).show()}))},generateSlug:function(e){var t=jQuery("#bdb-new-book-taxonomy-name").val().toLowerCase().replace(/[^a-z0-9_\-]/g,"");jQuery("#bdb-new-book-taxonomy-slug").val(t)},clickOnEnter:function(e){13===e.keyCode&&(e.preventDefault(),jQuery("#bdb-new-book-taxonomy-fields").find("button").trigger("click"))},addTaxonomy:function(e){e.preventDefault();var n=jQuery(this);o(n),z.errorWrap.empty().hide();var i={name:jQuery("#bdb-new-book-taxonomy-name").val(),slug:jQuery("#bdb-new-book-taxonomy-slug").val(),format:jQuery("#bdb-new-book-taxonomy-format").val()};z.checkRequiredFields(i).then((function(e){return t("v1/taxonomy/add",i,"POST")})).then((function(e){jQuery("#bdb-book-taxonomies-empty").remove(),z.tableBody.append(z.rowTemplate(e)),jQuery("#bdb-new-book-taxonomy-fields").find("input").val(""),r(n)})).catch((function(e){z.errorWrap.append(e).show(),r(n)}))},updateTaxonomy:function(e){e.preventDefault();var n=jQuery(this);o(n),z.errorWrap.empty().hide();var i=n.closest("tr"),a={name:i.find(".bdb-book-taxonomy-name input").val(),slug:i.find(".bdb-book-taxonomy-slug input").val(),format:i.find(".bdb-book-taxonomy-format select").val()};z.checkRequiredFields(a).then((function(e){return t("v1/taxonomy/update/"+i.data("id"),a,"POST")})).then((function(e){r(n)})).catch((function(e){z.errorWrap.append(e).show(),r(n)}))},deleteTaxonomy:function(e){if(e.preventDefault(),!confirm(bdbVars.confirm_delete_taxonomy))return!1;var n=jQuery(this);o(n),z.errorWrap.empty().hide();var i=n.closest("tr");t("v1/taxonomy/delete/"+i.data("id"),{},"DELETE").then((function(e){i.remove()})).catch((function(e){z.errorWrap.append(e).show(),r(n)}))},checkRequiredFields:function(e){return new Promise((function(t,n){e.hasOwnProperty("name")&&""!==e.name&&e.hasOwnProperty("slug")&&""!==e.slug&&e.hasOwnProperty("format")&&""!==e.format?t():n(bdbVars.error_required_fields)}))}};jQuery,e.init(),a.init(),d.init(),l.init(),N.init(),Y.init(),q.init(),$.init(),J.init(),K.init(),U.init(),G.init(),z.init()})()})(); \ No newline at end of file diff --git a/assets/js/build/admin.min.deps.json b/assets/js/build/admin.min.deps.json deleted file mode 100644 index cdd2fd70..00000000 --- a/assets/js/build/admin.min.deps.json +++ /dev/null @@ -1 +0,0 @@ -["wp-polyfill"] \ No newline at end of file diff --git a/assets/js/build/admin.min.js b/assets/js/build/admin.min.js deleted file mode 100644 index f5221823..00000000 --- a/assets/js/build/admin.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e){var t={};function n(i){if(t[i])return t[i].exports;var a=t[i]={i:i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(i,a,function(t){return e[t]}.bind(null,a));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=138)}({100:function(e,t,n){"use strict";const i=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],a={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:"object"==typeof window&&-1===window.navigator.userAgent.indexOf("MSIE"),ariaDateFormat:"F j, Y",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:e=>"undefined"!=typeof console&&console.warn(e),getWeek:e=>{const t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var n=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-n.getTime())/864e5-3+(n.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},o={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:e=>{const t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1};var r=o;const d=(e,t=2)=>("000"+e).slice(-1*t),l=e=>!0===e?1:0;function c(e,t){let n;return function(){clearTimeout(n),n=setTimeout(()=>e.apply(this,arguments),t)}}const s=e=>e instanceof Array?e:[e];function u(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function f(e,t,n){const i=window.document.createElement(e);return t=t||"",n=n||"",i.className=t,void 0!==n&&(i.textContent=n),i}function p(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function b(e,t){const n=f("div","numInputWrapper"),i=f("input","numInput "+e),a=f("span","arrowUp"),o=f("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?i.type="number":(i.type="text",i.pattern="\\d*"),void 0!==t)for(const e in t)i.setAttribute(e,t[e]);return n.appendChild(i),n.appendChild(a),n.appendChild(o),n}function m(e){try{if("function"==typeof e.composedPath){return e.composedPath()[0]}return e.target}catch(t){return e.target}}const g=()=>{},h=(e,t,n)=>n.months[t?"shorthand":"longhand"][e],v={D:g,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:(e,t)=>{e.setHours(parseFloat(t))},H:(e,t)=>{e.setHours(parseFloat(t))},J:(e,t)=>{e.setDate(parseFloat(t))},K:(e,t,n)=>{e.setHours(e.getHours()%12+12*l(new RegExp(n.amPM[1],"i").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:(e,t)=>{e.setSeconds(parseFloat(t))},U:(e,t)=>new Date(1e3*parseFloat(t)),W:function(e,t,n){const i=parseInt(t),a=new Date(e.getFullYear(),0,2+7*(i-1),0,0,0,0);return a.setDate(a.getDate()-a.getDay()+n.firstDayOfWeek),a},Y:(e,t)=>{e.setFullYear(parseFloat(t))},Z:(e,t)=>new Date(t),d:(e,t)=>{e.setDate(parseFloat(t))},h:(e,t)=>{e.setHours(parseFloat(t))},i:(e,t)=>{e.setMinutes(parseFloat(t))},j:(e,t)=>{e.setDate(parseFloat(t))},l:g,m:(e,t)=>{e.setMonth(parseFloat(t)-1)},n:(e,t)=>{e.setMonth(parseFloat(t)-1)},s:(e,t)=>{e.setSeconds(parseFloat(t))},u:(e,t)=>new Date(parseFloat(t)),w:g,y:(e,t)=>{e.setFullYear(2e3+parseFloat(t))}},y={D:"(\\w+)",F:"(\\w+)",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"(\\w+)",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"(\\w+)",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},w={Z:e=>e.toISOString(),D:function(e,t,n){return t.weekdays.shorthand[w.w(e,t,n)]},F:function(e,t,n){return h(w.n(e,t,n)-1,!1,t)},G:function(e,t,n){return d(w.h(e,t,n))},H:e=>d(e.getHours()),J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:(e,t)=>t.amPM[l(e.getHours()>11)],M:function(e,t){return h(e.getMonth(),!0,t)},S:e=>d(e.getSeconds()),U:e=>e.getTime()/1e3,W:function(e,t,n){return n.getWeek(e)},Y:e=>d(e.getFullYear(),4),d:e=>d(e.getDate()),h:e=>e.getHours()%12?e.getHours()%12:12,i:e=>d(e.getMinutes()),j:e=>e.getDate(),l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:e=>d(e.getMonth()+1),n:e=>e.getMonth()+1,s:e=>e.getSeconds(),u:e=>e.getTime(),w:e=>e.getDay(),y:e=>String(e.getFullYear()).substring(2)},D=({config:e=a,l10n:t=o,isMobile:n=!1})=>(i,a,o)=>{const r=o||t;return void 0===e.formatDate||n?a.split("").map((t,n,a)=>w[t]&&"\\"!==a[n-1]?w[t](i,r,e):"\\"!==t?t:"").join(""):e.formatDate(i,a,r)},k=({config:e=a,l10n:t=o})=>(n,i,o,r)=>{if(0!==n&&!n)return;const d=r||t;let l;const c=n;if(n instanceof Date)l=new Date(n.getTime());else if("string"!=typeof n&&void 0!==n.toFixed)l=new Date(n);else if("string"==typeof n){const t=i||(e||a).dateFormat,r=String(n).trim();if("today"===r)l=new Date,o=!0;else if(/Z$/.test(r)||/GMT$/.test(r))l=new Date(n);else if(e&&e.parseDate)l=e.parseDate(n,t);else{l=e&&e.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);let i,a=[];for(let e=0,o=0,r="";el=e(l,t,d)||l)}l=i?l:void 0}}if(l instanceof Date&&!isNaN(l.getTime()))return!0===o&&l.setHours(0,0,0,0),l;e.errorHandler(new Error("Invalid date provided: "+c))};function C(e,t,n=!0){return!1!==n?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()}const M=864e5;function x(e){let t=e.defaultHour,n=e.defaultMinute,i=e.defaultSeconds;if(void 0!==e.minDate){const a=e.minDate.getHours(),o=e.minDate.getMinutes(),r=e.minDate.getSeconds();t=0?new Date:new Date(n.config.minDate.getTime()),t=x(n.config);e.setHours(t.hours,t.minutes,t.seconds,e.getMilliseconds()),n.selectedDates=[e],n.latestSelectedDateObj=e}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();const t="keydown"===e.type,i=m(e),a=i;void 0!==n.amPM&&i===n.amPM&&(n.amPM.textContent=n.l10n.amPM[l(n.amPM.textContent===n.l10n.amPM[0])]);const o=parseFloat(a.getAttribute("min")),r=parseFloat(a.getAttribute("max")),c=parseFloat(a.getAttribute("step")),s=parseInt(a.value,10),u=e.delta||(t?38===e.which?1:-1:0);let f=s+c*u;if(void 0!==a.value&&2===a.value.length){const e=a===n.hourElement,t=a===n.minuteElement;fr&&(f=a===n.hourElement?f-r-l(!n.amPM):o,t&&P(void 0,1,n.hourElement)),n.amPM&&e&&(1===c?f+s===23:Math.abs(f-s)>c)&&(n.amPM.textContent=n.l10n.amPM[l(n.amPM.textContent===n.l10n.amPM[0])]),a.value=d(f)}}(e);const t=n._input.value;w(),he(),n._input.value!==t&&n._debouncedChange()}function w(){if(void 0===n.hourElement||void 0===n.minuteElement)return;let e=(parseInt(n.hourElement.value.slice(-2),10)||0)%24,t=(parseInt(n.minuteElement.value,10)||0)%60,i=void 0!==n.secondElement?(parseInt(n.secondElement.value,10)||0)%60:0;var a,o;void 0!==n.amPM&&(a=e,o=n.amPM.textContent,e=a%12+12*l(o===n.l10n.amPM[1]));const r=void 0!==n.config.minTime||n.config.minDate&&n.minDateHasTime&&n.latestSelectedDateObj&&0===C(n.latestSelectedDateObj,n.config.minDate,!0);if(void 0!==n.config.maxTime||n.config.maxDate&&n.maxDateHasTime&&n.latestSelectedDateObj&&0===C(n.latestSelectedDateObj,n.config.maxDate,!0)){const a=void 0!==n.config.maxTime?n.config.maxTime:n.config.maxDate;e=Math.min(e,a.getHours()),e===a.getHours()&&(t=Math.min(t,a.getMinutes())),t===a.getMinutes()&&(i=Math.min(i,a.getSeconds()))}if(r){const a=void 0!==n.config.minTime?n.config.minTime:n.config.minDate;e=Math.max(e,a.getHours()),e===a.getHours()&&t=12)]),void 0!==n.secondElement&&(n.secondElement.value=d(i)))}function E(e){const t=m(e),n=parseInt(t.value)+(e.delta||0);(n/1e3>1||"Enter"===e.key&&!/[^\d]/.test(n.toString()))&&G(n)}function j(e,t,i,a){return t instanceof Array?t.forEach(t=>j(e,t,i,a)):e instanceof Array?e.forEach(e=>j(e,t,i,a)):(e.addEventListener(t,i,a),void n._handlers.push({remove:()=>e.removeEventListener(t,i)}))}function S(){fe("onChange")}function I(e,t){const i=void 0!==e?n.parseDate(e):n.latestSelectedDateObj||(n.config.minDate&&n.config.minDate>n.now?n.config.minDate:n.config.maxDate&&n.config.maxDate=0&&C(e,n.selectedDates[1])<=0)}(t)&&!be(t)&&r.classList.add("inRange"),n.weekNumbers&&1===n.config.showMonths&&"prevMonthDay"!==e&&i%7==1&&n.weekNumbers.insertAdjacentHTML("beforeend",""+n.config.getWeek(t)+""),fe("onDayCreate",r),r}function N(e){e.focus(),"range"===n.config.mode&&ee(e)}function Y(e){const t=e>0?0:n.config.showMonths-1,i=e>0?n.config.showMonths:-1;for(let a=t;a!=i;a+=e){const t=n.daysContainer.children[a],i=e>0?0:t.children.length-1,o=e>0?t.children.length:-1;for(let n=i;n!=o;n+=e){const e=t.children[n];if(-1===e.className.indexOf("hidden")&&z(e.dateObj))return e}}}function W(e,t){const i=Q(document.activeElement||document.body),a=void 0!==e?e:i?document.activeElement:void 0!==n.selectedDateElem&&Q(n.selectedDateElem)?n.selectedDateElem:void 0!==n.todayDateElem&&Q(n.todayDateElem)?n.todayDateElem:Y(t>0?1:-1);void 0===a?n._input.focus():i?function(e,t){const i=-1===e.className.indexOf("Month")?e.dateObj.getMonth():n.currentMonth,a=t>0?n.config.showMonths:-1,o=t>0?1:-1;for(let r=i-n.currentMonth;r!=a;r+=o){const a=n.daysContainer.children[r],d=i-n.currentMonth===r?e.$i+t:t<0?a.children.length-1:0,l=a.children.length;for(let n=d;n>=0&&n0?l:-1);n+=o){const i=a.children[n];if(-1===i.className.indexOf("hidden")&&z(i.dateObj)&&Math.abs(e.$i-n)>=Math.abs(t))return N(i)}}n.changeMonth(o),W(Y(o),0)}(a,t):N(a)}function L(e,t){const i=(new Date(e,t,1).getDay()-n.l10n.firstDayOfWeek+7)%7,a=n.utils.getDaysInMonth((t-1+12)%12,e),o=n.utils.getDaysInMonth(t,e),r=window.document.createDocumentFragment(),d=n.config.showMonths>1,l=d?"prevMonthDay hidden":"prevMonthDay",c=d?"nextMonthDay hidden":"nextMonthDay";let s=a+1-i,u=0;for(;s<=a;s++,u++)r.appendChild(A(l,new Date(e,t-1,s),s,u));for(s=1;s<=o;s++,u++)r.appendChild(A("",new Date(e,t,s),s,u));for(let a=o+1;a<=42-i&&(1===n.config.showMonths||u%7!=0);a++,u++)r.appendChild(A(c,new Date(e,t+1,a%o),a,u));const p=f("div","dayContainer");return p.appendChild(r),p}function H(){if(void 0===n.daysContainer)return;p(n.daysContainer),n.weekNumbers&&p(n.weekNumbers);const e=document.createDocumentFragment();for(let t=0;t1||"dropdown"!==n.config.monthSelectorType)return;const e=function(e){return!(void 0!==n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&en.config.maxDate.getMonth())};n.monthsDropdownContainer.tabIndex=-1,n.monthsDropdownContainer.innerHTML="";for(let t=0;t<12;t++){if(!e(t))continue;const i=f("option","flatpickr-monthDropdown-month");i.value=new Date(n.currentYear,t).getMonth().toString(),i.textContent=h(t,n.config.shorthandCurrentMonth,n.l10n),i.tabIndex=-1,n.currentMonth===t&&(i.selected=!0),n.monthsDropdownContainer.appendChild(i)}}function q(){const e=f("div","flatpickr-month"),t=window.document.createDocumentFragment();let i;n.config.showMonths>1||"static"===n.config.monthSelectorType?i=f("span","cur-month"):(n.monthsDropdownContainer=f("select","flatpickr-monthDropdown-months"),n.monthsDropdownContainer.setAttribute("aria-label",n.l10n.monthAriaLabel),j(n.monthsDropdownContainer,"change",e=>{const t=m(e),i=parseInt(t.value,10);n.changeMonth(i-n.currentMonth),fe("onMonthChange")}),B(),i=n.monthsDropdownContainer);const a=b("cur-year",{tabindex:"-1"}),o=a.getElementsByTagName("input")[0];o.setAttribute("aria-label",n.l10n.yearAriaLabel),n.config.minDate&&o.setAttribute("min",n.config.minDate.getFullYear().toString()),n.config.maxDate&&(o.setAttribute("max",n.config.maxDate.getFullYear().toString()),o.disabled=!!n.config.minDate&&n.config.minDate.getFullYear()===n.config.maxDate.getFullYear());const r=f("div","flatpickr-current-month");return r.appendChild(i),r.appendChild(a),t.appendChild(r),e.appendChild(t),{container:e,yearElement:o,monthElement:i}}function R(){p(n.monthNav),n.monthNav.appendChild(n.prevMonthNav),n.config.showMonths&&(n.yearElements=[],n.monthElements=[]);for(let e=n.config.showMonths;e--;){const e=q();n.yearElements.push(e.yearElement),n.monthElements.push(e.monthElement),n.monthNav.appendChild(e.container)}n.monthNav.appendChild(n.nextMonthNav)}function V(){n.weekdayContainer?p(n.weekdayContainer):n.weekdayContainer=f("div","flatpickr-weekdays");for(let e=n.config.showMonths;e--;){const e=f("div","flatpickr-weekdaycontainer");n.weekdayContainer.appendChild(e)}return J(),n.weekdayContainer}function J(){if(!n.weekdayContainer)return;const e=n.l10n.firstDayOfWeek;let t=[...n.l10n.weekdays.shorthand];e>0&&e\n ${t.join("")}\n \n `}function $(e,t=!0){const i=t?e:e-n.currentMonth;i<0&&!0===n._hidePrevMonthArrow||i>0&&!0===n._hideNextMonthArrow||(n.currentMonth+=i,(n.currentMonth<0||n.currentMonth>11)&&(n.currentYear+=n.currentMonth>11?1:-1,n.currentMonth=(n.currentMonth+12)%12,fe("onYearChange"),B()),H(),fe("onMonthChange"),me())}function K(e){return!(!n.config.appendTo||!n.config.appendTo.contains(e))||n.calendarContainer.contains(e)}function U(e){if(n.isOpen&&!n.config.inline){const t=m(e),i=K(t),a=t===n.input||t===n.altInput||n.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(n.input)||~e.path.indexOf(n.altInput)),o="blur"===e.type?a&&e.relatedTarget&&!K(e.relatedTarget):!a&&!i&&!K(e.relatedTarget),r=!n.config.ignoredFocusElements.some(e=>e.contains(t));o&&r&&(void 0!==n.timeContainer&&void 0!==n.minuteElement&&void 0!==n.hourElement&&""!==n.input.value&&void 0!==n.input.value&&v(),n.close(),n.config&&"range"===n.config.mode&&1===n.selectedDates.length&&(n.clear(!1),n.redraw()))}}function G(e){if(!e||n.config.minDate&&en.config.maxDate.getFullYear())return;const t=e,i=n.currentYear!==t;n.currentYear=t||n.currentYear,n.config.maxDate&&n.currentYear===n.config.maxDate.getFullYear()?n.currentMonth=Math.min(n.config.maxDate.getMonth(),n.currentMonth):n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&(n.currentMonth=Math.max(n.config.minDate.getMonth(),n.currentMonth)),i&&(n.redraw(),fe("onYearChange"),B())}function z(e,t=!0){var i;const a=n.parseDate(e,void 0,t);if(n.config.minDate&&a&&C(a,n.config.minDate,void 0!==t?t:!n.minDateHasTime)<0||n.config.maxDate&&a&&C(a,n.config.maxDate,void 0!==t?t:!n.maxDateHasTime)>0)return!1;if(!n.config.enable&&0===n.config.disable.length)return!0;if(void 0===a)return!1;const o=!!n.config.enable,r=null!==(i=n.config.enable)&&void 0!==i?i:n.config.disable;for(let e,t=0;t=e.from.getTime()&&a.getTime()<=e.to.getTime())return o}return!o}function Q(e){return void 0!==n.daysContainer&&(-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&n.daysContainer.contains(e))}function X(e){!(e.target===n._input)||!(n.selectedDates.length>0||n._input.value.length>0)||e.relatedTarget&&K(e.relatedTarget)||n.setDate(n._input.value,!0,e.target===n.altInput?n.config.altFormat:n.config.dateFormat)}function Z(t){const i=m(t),a=n.config.wrap?e.contains(i):i===n._input,o=n.config.allowInput,r=n.isOpen&&(!o||!a),d=n.config.inline&&a&&!o;if(13===t.keyCode&&a){if(o)return n.setDate(n._input.value,!0,i===n.altInput?n.config.altFormat:n.config.dateFormat),i.blur();n.open()}else if(K(i)||r||d){const e=!!n.timeContainer&&n.timeContainer.contains(i);switch(t.keyCode){case 13:e?(t.preventDefault(),v(),de()):le(t);break;case 27:t.preventDefault(),de();break;case 8:case 46:a&&!n.config.allowInput&&(t.preventDefault(),n.clear());break;case 37:case 39:if(e||a)n.hourElement&&n.hourElement.focus();else if(t.preventDefault(),void 0!==n.daysContainer&&(!1===o||document.activeElement&&Q(document.activeElement))){const e=39===t.keyCode?1:-1;t.ctrlKey?(t.stopPropagation(),$(e),W(Y(1),0)):W(void 0,e)}break;case 38:case 40:t.preventDefault();const r=40===t.keyCode?1:-1;n.daysContainer&&void 0!==i.$i||i===n.input||i===n.altInput?t.ctrlKey?(t.stopPropagation(),G(n.currentYear-r),W(Y(1),0)):e||W(void 0,7*r):i===n.currentYearElement?G(n.currentYear-r):n.config.enableTime&&(!e&&n.hourElement&&n.hourElement.focus(),v(t),n._debouncedChange());break;case 9:if(e){const e=[n.hourElement,n.minuteElement,n.secondElement,n.amPM].concat(n.pluginElements).filter(e=>e),a=e.indexOf(i);if(-1!==a){const i=e[a+(t.shiftKey?-1:1)];t.preventDefault(),(i||n._input).focus()}}else!n.config.noCalendar&&n.daysContainer&&n.daysContainer.contains(i)&&t.shiftKey&&(t.preventDefault(),n._input.focus())}}if(void 0!==n.amPM&&i===n.amPM)switch(t.key){case n.l10n.amPM[0].charAt(0):case n.l10n.amPM[0].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[0],w(),he();break;case n.l10n.amPM[1].charAt(0):case n.l10n.amPM[1].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[1],w(),he()}(a||K(i))&&fe("onKeyDown",t)}function ee(e){if(1!==n.selectedDates.length||e&&(!e.classList.contains("flatpickr-day")||e.classList.contains("flatpickr-disabled")))return;const t=e?e.dateObj.getTime():n.days.firstElementChild.dateObj.getTime(),i=n.parseDate(n.selectedDates[0],void 0,!0).getTime(),a=Math.min(t,n.selectedDates[0].getTime()),o=Math.max(t,n.selectedDates[0].getTime());let r=!1,d=0,l=0;for(let e=a;ea&&ed)?d=e:e>i&&(!l||e0&&p0&&p>l;b?(f.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(e=>{f.classList.remove(e)})):r&&!b||(["startRange","inRange","endRange","notAllowed"].forEach(e=>{f.classList.remove(e)}),void 0!==e&&(e.classList.add(t<=n.selectedDates[0].getTime()?"startRange":"endRange"),it&&p===i&&f.classList.add("endRange"),p>=d&&(0===l||p<=l)&&(s=i,u=t,(c=p)>Math.min(s,u)&&c{const i=n.config[`_${e}Date`]=n.parseDate(t,n.config.dateFormat),a=n.config[`_${"min"===e?"max":"min"}Date`];void 0!==i&&(n["min"===e?"minDateHasTime":"maxDateHasTime"]=i.getHours()>0||i.getMinutes()>0||i.getSeconds()>0),n.selectedDates&&(n.selectedDates=n.selectedDates.filter(e=>z(e)),n.selectedDates.length||"min"!==e||O(i),he()),n.daysContainer&&(re(),void 0!==i?n.currentYearElement[e]=i.getFullYear().toString():n.currentYearElement.removeAttribute(e),n.currentYearElement.disabled=!!a&&void 0!==i&&a.getFullYear()===i.getFullYear())}}function ie(){return n.config.wrap?e.querySelector("[data-input]"):e}function ae(){"object"!=typeof n.config.locale&&void 0===T.l10ns[n.config.locale]&&n.config.errorHandler(new Error("flatpickr: invalid locale "+n.config.locale)),n.l10n=Object.assign(Object.assign({},T.l10ns.default),"object"==typeof n.config.locale?n.config.locale:"default"!==n.config.locale?T.l10ns[n.config.locale]:void 0),y.K=`(${n.l10n.amPM[0]}|${n.l10n.amPM[1]}|${n.l10n.amPM[0].toLowerCase()}|${n.l10n.amPM[1].toLowerCase()})`;void 0===Object.assign(Object.assign({},t),JSON.parse(JSON.stringify(e.dataset||{}))).time_24hr&&void 0===T.defaultConfig.time_24hr&&(n.config.time_24hr=n.l10n.time_24hr),n.formatDate=D(n),n.parseDate=k({config:n.config,l10n:n.l10n})}function oe(e){if("function"==typeof n.config.position)return void n.config.position(n,e);if(void 0===n.calendarContainer)return;fe("onPreCalendarPosition");const t=e||n._positionElement,i=Array.prototype.reduce.call(n.calendarContainer.children,(e,t)=>e+t.offsetHeight,0),a=n.calendarContainer.offsetWidth,o=n.config.position.split(" "),r=o[0],d=o.length>1?o[1]:null,l=t.getBoundingClientRect(),c=window.innerHeight-l.bottom,s="above"===r||"below"!==r&&ci,f=window.pageYOffset+l.top+(s?-i-2:t.offsetHeight+2);if(u(n.calendarContainer,"arrowTop",!s),u(n.calendarContainer,"arrowBottom",s),n.config.inline)return;let p=window.pageXOffset+l.left,b=!1,m=!1;"center"===d?(p-=(a-l.width)/2,b=!0):"right"===d&&(p-=a-l.width,m=!0),u(n.calendarContainer,"arrowLeft",!b&&!m),u(n.calendarContainer,"arrowCenter",b),u(n.calendarContainer,"arrowRight",m);const g=window.document.body.offsetWidth-(window.pageXOffset+l.right),h=p+a>window.document.body.offsetWidth,v=g+a>window.document.body.offsetWidth;if(u(n.calendarContainer,"rightMost",h),!n.config.static)if(n.calendarContainer.style.top=f+"px",h)if(v){const e=function(){let e=null;for(let t=0;te.classList&&e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled")&&!e.classList.contains("notAllowed"));if(void 0===t)return;const i=t,a=n.latestSelectedDateObj=new Date(i.dateObj.getTime()),o=(a.getMonth()n.currentMonth+n.config.showMonths-1)&&"range"!==n.config.mode;if(n.selectedDateElem=i,"single"===n.config.mode)n.selectedDates=[a];else if("multiple"===n.config.mode){const e=be(a);e?n.selectedDates.splice(parseInt(e),1):n.selectedDates.push(a)}else"range"===n.config.mode&&(2===n.selectedDates.length&&n.clear(!1,!1),n.latestSelectedDateObj=a,n.selectedDates.push(a),0!==C(a,n.selectedDates[0],!0)&&n.selectedDates.sort((e,t)=>e.getTime()-t.getTime()));if(w(),o){const e=n.currentYear!==a.getFullYear();n.currentYear=a.getFullYear(),n.currentMonth=a.getMonth(),e&&(fe("onYearChange"),B()),fe("onMonthChange")}if(me(),H(),he(),o||"range"===n.config.mode||1!==n.config.showMonths?void 0!==n.selectedDateElem&&void 0===n.hourElement&&n.selectedDateElem&&n.selectedDateElem.focus():N(i),void 0!==n.hourElement&&void 0!==n.hourElement&&n.hourElement.focus(),n.config.closeOnSelect){const e="single"===n.config.mode&&!n.config.enableTime,t="range"===n.config.mode&&2===n.selectedDates.length&&!n.config.enableTime;(e||t)&&de()}S()}n.parseDate=k({config:n.config,l10n:n.l10n}),n._handlers=[],n.pluginElements=[],n.loadedPlugins=[],n._bind=j,n._setHoursFromDate=O,n._positionCalendar=oe,n.changeMonth=$,n.changeYear=G,n.clear=function(e=!0,t=!0){n.input.value="",void 0!==n.altInput&&(n.altInput.value="");void 0!==n.mobileInput&&(n.mobileInput.value="");n.selectedDates=[],n.latestSelectedDateObj=void 0,!0===t&&(n.currentYear=n._initialDate.getFullYear(),n.currentMonth=n._initialDate.getMonth());if(!0===n.config.enableTime){const{hours:e,minutes:t,seconds:i}=x(n.config);_(e,t,i)}n.redraw(),e&&fe("onChange")},n.close=function(){n.isOpen=!1,n.isMobile||(void 0!==n.calendarContainer&&n.calendarContainer.classList.remove("open"),void 0!==n._input&&n._input.classList.remove("active"));fe("onClose")},n._createElement=f,n.destroy=function(){void 0!==n.config&&fe("onDestroy");for(let e=n._handlers.length;e--;)n._handlers[e].remove();if(n._handlers=[],n.mobileInput)n.mobileInput.parentNode&&n.mobileInput.parentNode.removeChild(n.mobileInput),n.mobileInput=void 0;else if(n.calendarContainer&&n.calendarContainer.parentNode)if(n.config.static&&n.calendarContainer.parentNode){const e=n.calendarContainer.parentNode;if(e.lastChild&&e.removeChild(e.lastChild),e.parentNode){for(;e.firstChild;)e.parentNode.insertBefore(e.firstChild,e);e.parentNode.removeChild(e)}}else n.calendarContainer.parentNode.removeChild(n.calendarContainer);n.altInput&&(n.input.type="text",n.altInput.parentNode&&n.altInput.parentNode.removeChild(n.altInput),delete n.altInput);n.input&&(n.input.type=n.input._type,n.input.classList.remove("flatpickr-input"),n.input.removeAttribute("readonly"));["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(e=>{try{delete n[e]}catch(e){}})},n.isEnabled=z,n.jumpToDate=I,n.open=function(e,t=n._positionElement){if(!0===n.isMobile){if(e){e.preventDefault();const t=m(e);t&&t.blur()}return void 0!==n.mobileInput&&(n.mobileInput.focus(),n.mobileInput.click()),void fe("onOpen")}if(n._input.disabled||n.config.inline)return;const i=n.isOpen;n.isOpen=!0,i||(n.calendarContainer.classList.add("open"),n._input.classList.add("active"),fe("onOpen"),oe(t));!0===n.config.enableTime&&!0===n.config.noCalendar&&(!1!==n.config.allowInput||void 0!==e&&n.timeContainer.contains(e.relatedTarget)||setTimeout(()=>n.hourElement.select(),50))},n.redraw=re,n.set=function(e,t){if(null!==e&&"object"==typeof e){Object.assign(n.config,e);for(const t in e)void 0!==ce[t]&&ce[t].forEach(e=>e())}else n.config[e]=t,void 0!==ce[e]?ce[e].forEach(e=>e()):i.indexOf(e)>-1&&(n.config[e]=s(t));n.redraw(),he(!0)},n.setDate=function(e,t=!1,i=n.config.dateFormat){if(0!==e&&!e||e instanceof Array&&0===e.length)return n.clear(t);se(e,i),n.latestSelectedDateObj=n.selectedDates[n.selectedDates.length-1],n.redraw(),I(void 0,t),O(),0===n.selectedDates.length&&n.clear(!1);he(t),t&&fe("onChange")},n.toggle=function(e){if(!0===n.isOpen)return n.close();n.open(e)};const ce={locale:[ae,J],showMonths:[R,g,V],minDate:[I],maxDate:[I],clickOpens:[()=>{!0===n.config.clickOpens?(j(n._input,"focus",n.open),j(n._input,"click",n.open)):(n._input.removeEventListener("focus",n.open),n._input.removeEventListener("click",n.open))}]};function se(e,t){let i=[];if(e instanceof Array)i=e.map(e=>n.parseDate(e,t));else if(e instanceof Date||"number"==typeof e)i=[n.parseDate(e,t)];else if("string"==typeof e)switch(n.config.mode){case"single":case"time":i=[n.parseDate(e,t)];break;case"multiple":i=e.split(n.config.conjunction).map(e=>n.parseDate(e,t));break;case"range":i=e.split(n.l10n.rangeSeparator).map(e=>n.parseDate(e,t))}else n.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));n.selectedDates=n.config.allowInvalidPreload?i:i.filter(e=>e instanceof Date&&z(e,!1)),"range"===n.config.mode&&n.selectedDates.sort((e,t)=>e.getTime()-t.getTime())}function ue(e){return e.slice().map(e=>"string"==typeof e||"number"==typeof e||e instanceof Date?n.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:n.parseDate(e.from,void 0),to:n.parseDate(e.to,void 0)}:e).filter(e=>e)}function fe(e,t){if(void 0===n.config)return;const i=n.config[e];if(void 0!==i&&i.length>0)for(let e=0;i[e]&&e{const i=new Date(n.currentYear,n.currentMonth,1);i.setMonth(n.currentMonth+t),n.config.showMonths>1||"static"===n.config.monthSelectorType?n.monthElements[t].textContent=h(i.getMonth(),n.config.shorthandCurrentMonth,n.l10n)+" ":n.monthsDropdownContainer.value=i.getMonth().toString(),e.value=i.getFullYear().toString()}),n._hidePrevMonthArrow=void 0!==n.config.minDate&&(n.currentYear===n.config.minDate.getFullYear()?n.currentMonth<=n.config.minDate.getMonth():n.currentYearn.config.maxDate.getMonth():n.currentYear>n.config.maxDate.getFullYear()))}function ge(e){return n.selectedDates.map(t=>n.formatDate(t,e)).filter((e,t,i)=>"range"!==n.config.mode||n.config.enableTime||i.indexOf(e)===t).join("range"!==n.config.mode?n.config.conjunction:n.l10n.rangeSeparator)}function he(e=!0){void 0!==n.mobileInput&&n.mobileFormatStr&&(n.mobileInput.value=void 0!==n.latestSelectedDateObj?n.formatDate(n.latestSelectedDateObj,n.mobileFormatStr):""),n.input.value=ge(n.config.dateFormat),void 0!==n.altInput&&(n.altInput.value=ge(n.config.altFormat)),!1!==e&&fe("onValueUpdate")}function ve(e){const t=m(e),i=n.prevMonthNav.contains(t),a=n.nextMonthNav.contains(t);i||a?$(i?-1:1):n.yearElements.indexOf(t)>=0?t.select():t.classList.contains("arrowUp")?n.changeYear(n.currentYear+1):t.classList.contains("arrowDown")&&n.changeYear(n.currentYear-1)}return function(){n.element=n.input=e,n.isOpen=!1,function(){const r=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],d=Object.assign(Object.assign({},JSON.parse(JSON.stringify(e.dataset||{}))),t),l={};n.config.parseDate=d.parseDate,n.config.formatDate=d.formatDate,Object.defineProperty(n.config,"enable",{get:()=>n.config._enable,set:e=>{n.config._enable=ue(e)}}),Object.defineProperty(n.config,"disable",{get:()=>n.config._disable,set:e=>{n.config._disable=ue(e)}});const c="time"===d.mode;if(!d.dateFormat&&(d.enableTime||c)){const e=T.defaultConfig.dateFormat||a.dateFormat;l.dateFormat=d.noCalendar||c?"H:i"+(d.enableSeconds?":S":""):e+" H:i"+(d.enableSeconds?":S":"")}if(d.altInput&&(d.enableTime||c)&&!d.altFormat){const e=T.defaultConfig.altFormat||a.altFormat;l.altFormat=d.noCalendar||c?"h:i"+(d.enableSeconds?":S K":" K"):e+` h:i${d.enableSeconds?":S":""} K`}Object.defineProperty(n.config,"minDate",{get:()=>n.config._minDate,set:ne("min")}),Object.defineProperty(n.config,"maxDate",{get:()=>n.config._maxDate,set:ne("max")});const u=e=>t=>{n.config["min"===e?"_minTime":"_maxTime"]=n.parseDate(t,"H:i:S")};Object.defineProperty(n.config,"minTime",{get:()=>n.config._minTime,set:u("min")}),Object.defineProperty(n.config,"maxTime",{get:()=>n.config._maxTime,set:u("max")}),"time"===d.mode&&(n.config.noCalendar=!0,n.config.enableTime=!0);Object.assign(n.config,l,d);for(let e=0;evoid 0!==n.config[e]).forEach(e=>{n.config[e]=s(n.config[e]||[]).map(o)}),n.isMobile=!n.config.disableMobile&&!n.config.inline&&"single"===n.config.mode&&!n.config.disable.length&&!n.config.enable&&!n.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(let e=0;e-1?n.config[e]=s(t[e]).map(o).concat(n.config[e]):void 0===d[e]&&(n.config[e]=t[e])}d.altInputClass||(n.config.altInputClass=ie().className+" "+n.config.altInputClass);fe("onParseConfig")}(),ae(),function(){if(n.input=ie(),!n.input)return void n.config.errorHandler(new Error("Invalid input element specified"));n.input._type=n.input.type,n.input.type="text",n.input.classList.add("flatpickr-input"),n._input=n.input,n.config.altInput&&(n.altInput=f(n.input.nodeName,n.config.altInputClass),n._input=n.altInput,n.altInput.placeholder=n.input.placeholder,n.altInput.disabled=n.input.disabled,n.altInput.required=n.input.required,n.altInput.tabIndex=n.input.tabIndex,n.altInput.type="text",n.input.setAttribute("type","hidden"),!n.config.static&&n.input.parentNode&&n.input.parentNode.insertBefore(n.altInput,n.input.nextSibling));n.config.allowInput||n._input.setAttribute("readonly","readonly");n._positionElement=n.config.positionElement||n._input}(),function(){n.selectedDates=[],n.now=n.parseDate(n.config.now)||new Date;const e=n.config.defaultDate||("INPUT"!==n.input.nodeName&&"TEXTAREA"!==n.input.nodeName||!n.input.placeholder||n.input.value!==n.input.placeholder?n.input.value:null);e&&se(e,n.config.dateFormat);n._initialDate=n.selectedDates.length>0?n.selectedDates[0]:n.config.minDate&&n.config.minDate.getTime()>n.now.getTime()?n.config.minDate:n.config.maxDate&&n.config.maxDate.getTime()0&&(n.latestSelectedDateObj=n.selectedDates[0]);void 0!==n.config.minTime&&(n.config.minTime=n.parseDate(n.config.minTime,"H:i"));void 0!==n.config.maxTime&&(n.config.maxTime=n.parseDate(n.config.maxTime,"H:i"));n.minDateHasTime=!!n.config.minDate&&(n.config.minDate.getHours()>0||n.config.minDate.getMinutes()>0||n.config.minDate.getSeconds()>0),n.maxDateHasTime=!!n.config.maxDate&&(n.config.maxDate.getHours()>0||n.config.maxDate.getMinutes()>0||n.config.maxDate.getSeconds()>0)}(),n.utils={getDaysInMonth:(e=n.currentMonth,t=n.currentYear)=>1===e&&(t%4==0&&t%100!=0||t%400==0)?29:n.l10n.daysInMonth[e]},n.isMobile||function(){const e=window.document.createDocumentFragment();if(n.calendarContainer=f("div","flatpickr-calendar"),n.calendarContainer.tabIndex=-1,!n.config.noCalendar){if(e.appendChild((n.monthNav=f("div","flatpickr-months"),n.yearElements=[],n.monthElements=[],n.prevMonthNav=f("span","flatpickr-prev-month"),n.prevMonthNav.innerHTML=n.config.prevArrow,n.nextMonthNav=f("span","flatpickr-next-month"),n.nextMonthNav.innerHTML=n.config.nextArrow,R(),Object.defineProperty(n,"_hidePrevMonthArrow",{get:()=>n.__hidePrevMonthArrow,set(e){n.__hidePrevMonthArrow!==e&&(u(n.prevMonthNav,"flatpickr-disabled",e),n.__hidePrevMonthArrow=e)}}),Object.defineProperty(n,"_hideNextMonthArrow",{get:()=>n.__hideNextMonthArrow,set(e){n.__hideNextMonthArrow!==e&&(u(n.nextMonthNav,"flatpickr-disabled",e),n.__hideNextMonthArrow=e)}}),n.currentYearElement=n.yearElements[0],me(),n.monthNav)),n.innerContainer=f("div","flatpickr-innerContainer"),n.config.weekNumbers){const{weekWrapper:e,weekNumbers:t}=function(){n.calendarContainer.classList.add("hasWeeks");const e=f("div","flatpickr-weekwrapper");e.appendChild(f("span","flatpickr-weekday",n.l10n.weekAbbreviation));const t=f("div","flatpickr-weeks");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}();n.innerContainer.appendChild(e),n.weekNumbers=t,n.weekWrapper=e}n.rContainer=f("div","flatpickr-rContainer"),n.rContainer.appendChild(V()),n.daysContainer||(n.daysContainer=f("div","flatpickr-days"),n.daysContainer.tabIndex=-1),H(),n.rContainer.appendChild(n.daysContainer),n.innerContainer.appendChild(n.rContainer),e.appendChild(n.innerContainer)}n.config.enableTime&&e.appendChild(function(){n.calendarContainer.classList.add("hasTime"),n.config.noCalendar&&n.calendarContainer.classList.add("noCalendar");const e=x(n.config);n.timeContainer=f("div","flatpickr-time"),n.timeContainer.tabIndex=-1;const t=f("span","flatpickr-time-separator",":"),i=b("flatpickr-hour",{"aria-label":n.l10n.hourAriaLabel});n.hourElement=i.getElementsByTagName("input")[0];const a=b("flatpickr-minute",{"aria-label":n.l10n.minuteAriaLabel});n.minuteElement=a.getElementsByTagName("input")[0],n.hourElement.tabIndex=n.minuteElement.tabIndex=-1,n.hourElement.value=d(n.latestSelectedDateObj?n.latestSelectedDateObj.getHours():n.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),n.minuteElement.value=d(n.latestSelectedDateObj?n.latestSelectedDateObj.getMinutes():e.minutes),n.hourElement.setAttribute("step",n.config.hourIncrement.toString()),n.minuteElement.setAttribute("step",n.config.minuteIncrement.toString()),n.hourElement.setAttribute("min",n.config.time_24hr?"0":"1"),n.hourElement.setAttribute("max",n.config.time_24hr?"23":"12"),n.hourElement.setAttribute("maxlength","2"),n.minuteElement.setAttribute("min","0"),n.minuteElement.setAttribute("max","59"),n.minuteElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(i),n.timeContainer.appendChild(t),n.timeContainer.appendChild(a),n.config.time_24hr&&n.timeContainer.classList.add("time24hr");if(n.config.enableSeconds){n.timeContainer.classList.add("hasSeconds");const t=b("flatpickr-second");n.secondElement=t.getElementsByTagName("input")[0],n.secondElement.value=d(n.latestSelectedDateObj?n.latestSelectedDateObj.getSeconds():e.seconds),n.secondElement.setAttribute("step",n.minuteElement.getAttribute("step")),n.secondElement.setAttribute("min","0"),n.secondElement.setAttribute("max","59"),n.secondElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(f("span","flatpickr-time-separator",":")),n.timeContainer.appendChild(t)}n.config.time_24hr||(n.amPM=f("span","flatpickr-am-pm",n.l10n.amPM[l((n.latestSelectedDateObj?n.hourElement.value:n.config.defaultHour)>11)]),n.amPM.title=n.l10n.toggleTitle,n.amPM.tabIndex=-1,n.timeContainer.appendChild(n.amPM));return n.timeContainer}());u(n.calendarContainer,"rangeMode","range"===n.config.mode),u(n.calendarContainer,"animate",!0===n.config.animate),u(n.calendarContainer,"multiMonth",n.config.showMonths>1),n.calendarContainer.appendChild(e);const t=void 0!==n.config.appendTo&&void 0!==n.config.appendTo.nodeType;if((n.config.inline||n.config.static)&&(n.calendarContainer.classList.add(n.config.inline?"inline":"static"),n.config.inline&&(!t&&n.element.parentNode?n.element.parentNode.insertBefore(n.calendarContainer,n._input.nextSibling):void 0!==n.config.appendTo&&n.config.appendTo.appendChild(n.calendarContainer)),n.config.static)){const e=f("div","flatpickr-wrapper");n.element.parentNode&&n.element.parentNode.insertBefore(e,n.element),e.appendChild(n.element),n.altInput&&e.appendChild(n.altInput),e.appendChild(n.calendarContainer)}n.config.static||n.config.inline||(void 0!==n.config.appendTo?n.config.appendTo:window.document.body).appendChild(n.calendarContainer)}(),function(){n.config.wrap&&["open","close","toggle","clear"].forEach(e=>{Array.prototype.forEach.call(n.element.querySelectorAll(`[data-${e}]`),t=>j(t,"click",n[e]))});if(n.isMobile)return void function(){const e=n.config.enableTime?n.config.noCalendar?"time":"datetime-local":"date";n.mobileInput=f("input",n.input.className+" flatpickr-mobile"),n.mobileInput.tabIndex=1,n.mobileInput.type=e,n.mobileInput.disabled=n.input.disabled,n.mobileInput.required=n.input.required,n.mobileInput.placeholder=n.input.placeholder,n.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",n.selectedDates.length>0&&(n.mobileInput.defaultValue=n.mobileInput.value=n.formatDate(n.selectedDates[0],n.mobileFormatStr));n.config.minDate&&(n.mobileInput.min=n.formatDate(n.config.minDate,"Y-m-d"));n.config.maxDate&&(n.mobileInput.max=n.formatDate(n.config.maxDate,"Y-m-d"));n.input.getAttribute("step")&&(n.mobileInput.step=String(n.input.getAttribute("step")));n.input.type="hidden",void 0!==n.altInput&&(n.altInput.type="hidden");try{n.input.parentNode&&n.input.parentNode.insertBefore(n.mobileInput,n.input.nextSibling)}catch(e){}j(n.mobileInput,"change",e=>{n.setDate(m(e).value,!1,n.mobileFormatStr),fe("onChange"),fe("onClose")})}();const e=c(te,50);n._debouncedChange=c(S,300),n.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&j(n.daysContainer,"mouseover",e=>{"range"===n.config.mode&&ee(m(e))});j(window.document.body,"keydown",Z),n.config.inline||n.config.static||j(window,"resize",e);void 0!==window.ontouchstart?j(window.document,"touchstart",U):j(window.document,"mousedown",U);j(window.document,"focus",U,{capture:!0}),!0===n.config.clickOpens&&(j(n._input,"focus",n.open),j(n._input,"click",n.open));void 0!==n.daysContainer&&(j(n.monthNav,"click",ve),j(n.monthNav,["keyup","increment"],E),j(n.daysContainer,"click",le));if(void 0!==n.timeContainer&&void 0!==n.minuteElement&&void 0!==n.hourElement){const e=e=>m(e).select();j(n.timeContainer,["increment"],v),j(n.timeContainer,"blur",v,{capture:!0}),j(n.timeContainer,"click",F),j([n.hourElement,n.minuteElement],["focus","click"],e),void 0!==n.secondElement&&j(n.secondElement,"focus",()=>n.secondElement&&n.secondElement.select()),void 0!==n.amPM&&j(n.amPM,"click",e=>{v(e),S()})}n.config.allowInput&&j(n._input,"blur",X)}(),(n.selectedDates.length||n.config.noCalendar)&&(n.config.enableTime&&O(n.config.noCalendar?n.latestSelectedDateObj:void 0),he(!1)),g();const r=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!n.isMobile&&r&&oe(),fe("onReady")}(),n}function _(e,t){const n=Array.prototype.slice.call(e).filter(e=>e instanceof HTMLElement),i=[];for(let e=0;e{T.l10ns.default=Object.assign(Object.assign({},T.l10ns.default),e)},T.setDefaults=e=>{T.defaultConfig=Object.assign(Object.assign({},T.defaultConfig),e)},T.parseDate=k({}),T.formatDate=D({}),T.compareDates=C,"undefined"!=typeof jQuery&&void 0!==jQuery.fn&&(jQuery.fn.flatpickr=function(e){return _(this,e)}),Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+("string"==typeof e?parseInt(e,10):e))},"undefined"!=typeof window&&(window.flatpickr=T);t.a=T},120:function(e,t,n){"use strict";"function"!=typeof Object.assign&&(Object.assign=function(e,...t){if(!e)throw TypeError("Cannot convert undefined or null to object");for(const n of t)n&&Object.keys(n).forEach(t=>e[t]=n[t]);return e})},121:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var i={init:function(){e(".bdb-book-option-toggle").on("click",this.toggleBookTextarea),e("#bdb-book-layout-cover-changer").on("change",this.changeCoverAlignment),this.sort()},toggleBookTextarea:function(t){e(this).next().slideToggle()},changeCoverAlignment:function(t){e("#bdb-book-option-cover").removeClass((function(e,t){return(t.match(/(^|\s)bdb-book-cover-align-\S+/g)||[]).join(" ")})).addClass("bdb-book-cover-align-"+e(this).val())},sort:function(){e(".bdb-sortable").sortable({cancel:".bdb-no-sort, textarea, input, select",connectWith:".bdb-sortable",placeholder:"bdb-sortable-placeholder",update:function(t,n){var i=n.item.parent().attr("id"),a=n.item.find(".bdb-book-option-disabled");e("#"+i).hasClass("bdb-sorter-enabled-column")?a.val("false"):a.val("true")}})}}}).call(this,n(31))},122:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var i=n(16),a={bookTitleField:!1,indexTitleSelect:!1,indexTitleCustomField:!1,init:function(){this.bookTitleField=e("#bdb-book-title"),this.indexTitleSelect=e("#bdb-book-index-title"),this.indexTitleCustomField=e("#bdb-book-index-title-custom"),this.indexTitleSelect.on("change",this.toggleCustomIndexTitle).trigger("change"),this.bookTitleField.on("keyup",this.writeOriginalTitle),this.bookTitleField.on("blur",this.populateIndexTitles)},toggleCustomIndexTitle:function(){"custom"===e(this).val()?a.indexTitleCustomField.slideDown().css("display","block"):a.indexTitleCustomField.slideUp()},writeOriginalTitle:function(){a.indexTitleSelect.find('option[value="original"]').text(e(this).val())},populateIndexTitles:function(){var t={title:e(this).val()};Object(i.b)("v1/book/index-title",t,"GET").then((function(e){a.indexTitleSelect.find('option[value="original"]').after('")})).catch((function(e){console.log("Index title generation error",e)}))}}}).call(this,n(31))},123:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var i=n(16),a={bookID:0,linkWrap:!1,linkTemplateAdd:wp.template("bdb-book-link-add"),linkTemplateEdit:wp.template("bdb-book-link-edit"),errorWrap:"",init:function(){this.bookID=e("#bdb-book-id").val(),this.linkWrap=e("#bdb-book-links"),this.errorWrap=e("#bdb-book-links-errors"),this.linkWrap.length&&(e("#bdb-new-purchase-link").on("keydown","input",this.clickOnEnter),e("#bdb-new-purchase-link").on("click","button",this.addLink),e(document).on("click",".bdb-update-book-link",this.updateLink),e(document).on("click",".bdb-remove-book-link",this.deleteLink),this.getLinks())},getLinks:function(){if(this.bookID){var t={book_id:a.bookID,number:50};Object(i.b)("v1/book-link",t,"GET").then((function(t){a.linkWrap.empty(),0===t.length||void 0===t.length||e.each(t,(function(e,t){a.linkWrap.append(a.linkTemplateEdit(t))}))})).catch((function(e){a.errorWrap.empty().append(e).show()}))}},clickOnEnter:function(t){13===t.keyCode&&(t.preventDefault(),e("#bdb-new-purchase-link").find("button").trigger("click"))},addLink:function(t){t.preventDefault();var n=e(this);if(Object(i.d)(n),a.errorWrap.empty().hide(),a.bookID){var o={book_id:a.bookID,retailer_id:e("#bdb-new-book-link-retailer").val(),url:e("#bdb-new-book-link-url").val()};Object(i.b)("v1/book-link/add",o,"POST").then((function(t){a.linkWrap.append(a.linkTemplateEdit(t)),e("#bdb-new-purchase-link").find("input").val(""),Object(i.e)(n)})).catch((function(e){a.errorWrap.append(e).show(),Object(i.e)(n)}))}else{var r={id:e(".bdb-book-link").length,retailer_id:e("#bdb-new-book-link-retailer").val(),url:e("#bdb-new-book-link-url").val()};a.linkWrap.append(a.linkTemplateAdd(r)),e("#bdb-new-purchase-link").find("input").val(""),Object(i.e)(n)}},updateLink:function(t){t.preventDefault();var n=e(this);Object(i.d)(n),a.errorWrap.empty().hide();var o=n.closest(".bdb-book-link"),r={retailer_id:o.find(".bdb-book-link-retailer").val(),url:o.find(".bdb-book-link-url").val()};Object(i.b)("v1/book-link/update/"+o.data("id"),r,"POST").then((function(e){Object(i.e)(n)})).catch((function(e){a.errorWrap.append(e).show(),Object(i.e)(n)}))},deleteLink:function(t){if(t.preventDefault(),!confirm(bdbVars.confirm_delete_book_link))return!1;var n=e(this);Object(i.d)(n),a.errorWrap.empty().hide();var o=n.closest(".bdb-book-link");a.bookID?Object(i.b)("v1/book-link/delete/"+o.data("id"),{},"DELETE").then((function(e){o.remove()})).catch((function(e){a.errorWrap.append(e).show(),Object(i.e)(n)})):o.remove()}}}).call(this,n(31))},124:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var i={init:function(){e(".bdb-new-checkbox-term").on("click",".button",this.addCheckboxTerm),e(".bdb-new-checkbox-term-value").on("keypress",this.addCheckboxTerm)},addCheckboxTerm:function(t){if("click"===t.type&&t.preventDefault(),"keypress"===t.type&&13!==t.which)return!0;t.preventDefault();var n=e(this).closest(".bdb-taxonomy-checkboxes"),a=n.data("name"),o=n.data("taxonomy"),r=n.find(".bdb-checkbox-wrap"),d=n.find(".bdb-new-checkbox-term-value"),l=i.createID(d.val(),o+"-");r.append('"),d.val("")},createID:function(e,t){return e.replace(/[^a-z0-9]/g,(function(e){var n=e.charCodeAt(0);return 32===n?"-":n>=65&&n<=90?t+e.toLowerCase():t+("000"+n.toString(16)).slice(-4)}))}}}).call(this,n(31))},125:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var i={init:function(){e(".bdb-delete-item").on("click",this.confirm)},confirm:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(t){var n=e(this).data("object"),i=bdbVars["confirm_delete_"+n];return!!confirm(i)}))}}).call(this,n(31))},126:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var i=n(16),a={responseWrap:!1,init:function(){this.responseWrap=e("#bdb-license-key-response"),e("#bdb-activate-license-key").on("click",this.activate),e("#bdb-deactivate-license-key").on("click",this.deactivate),e("#bdb-refresh-license-key").on("click",this.refresh)},activate:function(t){t.preventDefault();var n=e(this);Object(i.d)(n),a.responseWrap.empty().removeClass("bdb-notice bdb-notice-error");var o={action:"bdb_activate_license_key",license_key:e("#bdb-license-key").val(),nonce:n.data("nonce")};Object(i.a)(o).then((function(t){a.responseWrap.empty().addClass("bdb-notice bdb-notice-success").append(t),e("#bdb-activate-license-key").remove()})).catch((function(e){a.responseWrap.empty().addClass("bdb-notice bdb-notice-error").append(e),Object(i.e)(n)}))},deactivate:function(t){t.preventDefault();var n=e(this);Object(i.d)(n),a.responseWrap.empty().removeClass("bdb-notice bdb-notice-error");var o={action:"bdb_deactivate_license_key",license_key:e("#bdb-license-key").val(),nonce:n.data("nonce")};Object(i.a)(o).then((function(t){a.responseWrap.empty().addClass("bdb-notice bdb-notice-success").append(t),e("#bdb-deactivate-license-key").remove()})).catch((function(e){a.responseWrap.empty().addClass("bdb-notice bdb-notice-error").append(e),Object(i.e)(n)}))},refresh:function(t){t.preventDefault();var n=e(this),o=n.parent().find(".description");Object(i.d)(n),a.responseWrap.empty().removeClass("bdb-notice bdb-notice-error");var r={action:"bdb_refresh_license_key",license_key:e("#bdb-license-key").val(),nonce:n.data("nonce")};Object(i.a)(r).then((function(e){o.empty().append(e)})).catch((function(e){a.responseWrap.empty().addClass("bdb-notice bdb-notice-error").append(e)})).finally((function(){Object(i.e)(n)}))}}}).call(this,n(31))},127:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var i={frame:!1,init:function(){e(".bdb-upload-image").on("click",this.createFrame),e(".bdb-remove-image").on("click",this.removeImage)},createFrame:function(t){t.preventDefault();var n=e(this),a=e(this).parent().data("image"),o=e(this).parent().data("image-id"),r=e(this).parent().data("image-size");r&&void 0!==r||(r="medium"),i.frame=wp.media.frames.bookDB=wp.media({title:n.data("choose"),button:{text:n.data("update")},states:[new wp.media.controller.Library({title:n.data("choose"),filterable:"all",multiple:!1})]}),i.frame.on("select",(function(){i.frame.state().get("selection").map((function(t){if((t=t.toJSON()).id){e(o).val(t.id);var i=t.sizes&&t.sizes[r]?t.sizes[r].url:t.url;if(void 0!==e(a).attributes)for(;e(a).attributes.length>0;)elem.removeAttribute(elem.attributes[0].name);e(a).attr("src",i).attr("alt",t.alt).show(),n.parent().find(".bdb-remove-image").show()}}))})),i.frame.open()},removeImage:function(t){t.preventDefault();var n=e(this),i=n.parent().data("image"),a=n.parent().data("image-id");if(void 0!==e(i).attributes)for(;e(i).attributes.length>0;)elem.removeAttribute(elem.attributes[0].name);e(i).hide(),e(a).val(""),n.hide()}}}).call(this,n(31))},128:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return r}));var i=n(16),a=n(34),o=n(92),r={bookID:0,userID:0,maxPages:0,tableBody:!1,rowTemplate:wp.template("bdb-reading-logs-table-row"),rowEmptyTemplate:wp.template("bdb-reading-logs-table-row-empty"),errorWrap:"",userFilter:!1,editions:[],init:function(){this.bookID=e("#bdb-book-id").val(),this.userID=e("#bdb-book-reading-logs-list").data("user-id"),this.tableBody=e("#bdb-book-reading-logs-list .wp-list-table tbody"),this.errorWrap=e("#bdb-reading-logs-errors"),this.userFilter=e("#bdb-book-reading-logs-user-filter"),this.tableBody.length&&void 0!==this.bookID&&this.bookID&&(this.maxPages=e("#bdb-book-pages").val(),e("#bdb-add-reading-log").on("click",this.toggleNewLogFields),e("#bdb-submit-new-reading-log").on("click",this.addLog),e(document).on("click",".bdb-reading-log-toggle-editable",this.toggleEditableFields),e(document).on("click",".bdb-reading-log-percentage-complete .bdb-input-suffix",this.toggleCompleteUnit),e(document).on("click",".bdb-update-reading-log",this.updateLog),e(document).on("click",".bdb-remove-reading-log",this.removeLog),this.userFilter.on("change",this.getLogs),this.userFilter.trigger("change"),e(document).on("bdb_edition_added",this.updateEditions))},shapeObject:function(e){return e.date_started_formatted=Object(a.b)(e.date_started,"display"),e.date_started=Object(a.b)(e.date_started),e.date_finished_formatted=Object(a.b)(e.date_finished,"display"),e.date_finished=Object(a.b)(e.date_finished),e.percentage_complete=(100*e.percentage_complete).toFixed(0),e.rating=null===e.rating?null:parseFloat(e.rating),e.rating_formatted=null===e.rating?null:parseFloat(e.rating)+" "+bdbVars.stars,e},loadEditions:function(){return Object(i.b)("v1/edition",{book_id:r.bookID,number:50},"GET")},getLogs:function(){var t={book_id:r.bookID,number:50};e("#bdb-book-reading-logs-user-filter").prop("checked")&&(t.user_id=r.userID),r.loadEditions().then((function(n){if(r.editions=n,r.editions.length){var a=e("#bdb-new-log-edition-id-wrap"),o=e("#bdb-new-log-edition-id");o.empty().append('"),e.each(r.editions,(function(e,t){o.append('")})),a.show()}return Object(i.b)("v1/reading-log",t,"GET")})).then((function(t){r.tableBody.empty(),0===t.length||void 0===t.length?r.tableBody.append(r.rowEmptyTemplate):(e("#bdb-book-reading-logs-empty").remove(),e.each(t,(function(e,t){t=r.shapeObject(t),r.tableBody.append(r.rowTemplate(t))})),r.tableBody.find(".bdb-book-edition-list").each((function(){Object(o.b)(e(this),r.editions)}))),e(document).trigger("bdb_reading_logs_loaded")})).catch((function(e){r.errorWrap.empty().append(e).show()}))},toggleNewLogFields:function(t){void 0!==t&&t.preventDefault(),e("#bdb-new-reading-log-fields").slideToggle()},addLog:function(t){t.preventDefault();var n=e(this);Object(i.d)(n),r.errorWrap.empty().hide();var d=e("#bdb-new-log-percent-complete").val();""!==d&&d>0?d/=100:d=0;var l=e("#bdb-new-log-edition-id").val(),c={book_id:r.bookID,edition_id:l.length>0?l:null,user_id:r.userID,date_started:Object(a.a)(e("#bdb-new-log-start-date").val()),date_finished:Object(a.a)(e("#bdb-new-log-end-date").val()),percentage_complete:d,rating:e("#bdb-new-log-rating").val()};Object(i.b)("v1/reading-log/add",c,"POST").then((function(t){t=r.shapeObject(t),e("#bdb-book-reading-logs-empty").remove(),r.tableBody.append(r.rowTemplate(t));var n=e("#bdb-reading-log-edition-id-"+t.id);n.length&&Object(o.b)(n,r.editions);var i=e("#bdb-new-reading-log-fields");i.find('input[type="text"]').val(""),i.find('input[type="checkbox"]').prop("checked",!1),r.toggleNewLogFields(),e(document).trigger("bdb_reading_log_added",t)})).catch((function(e){r.errorWrap.append(e).show()})).finally((function(){Object(i.e)(n)}))},toggleEditableFields:function(t){t.preventDefault();var n=e(this),i=n.closest("tr");i.find(".bdb-table-display-value").hide(),i.find(".bdb-table-edit-value").show(),n.removeClass("bdb-reading-log-toggle-editable").addClass("bdb-update-reading-log button-primary").text(bdbVars.save)},toggleCompleteUnit:function(t){t.preventDefault();var n=e(this).closest(".bdb-reading-log-percentage-complete"),i="percentage";e(this).hasClass("bdb-input-suffix-page")&&(i="page"),n.find(".bdb-input-suffix").removeClass("bdb-input-suffix-selected"),e(this).addClass("bdb-input-suffix-selected"),"page"===i?(n.find(".bdb-reading-log-percentage-complete-wrap").hide(),n.find(".bdb-reading-log-page-wrap").show()):(n.find(".bdb-reading-log-percentage-complete-wrap").show(),n.find(".bdb-reading-log-page-wrap").hide())},updateLog:function(t){t.preventDefault();var n=e(this);Object(i.d)(n),r.errorWrap.empty().hide();var d=n.closest("tr"),l=0,c="percentage";if(d.find(".bdb-input-suffix-selected").hasClass("bdb-input-suffix-page")&&(c="page"),"page"===c){var s=d.find(".bdb-reading-log-page-wrap input").val();l=r.maxPages>0?s/r.maxPages:0}else""!==(l=d.find(".bdb-reading-log-percentage-complete-wrap input").val())&&l>0?l/=100:l=0;var u=d.find(".bdb-book-edition-list").val(),f={date_started:Object(a.a)(d.find(".bdb-reading-log-date-started input").val()),date_finished:Object(a.a)(d.find(".bdb-reading-log-date-finished input").val()),edition_id:u.length>0?u:null,user_id:d.find(".bdb-reading-log-user-id input").val(),percentage_complete:l,rating:d.find(".bdb-reading-log-rating select").val()};Object(i.b)("v1/reading-log/update/"+d.data("id"),f,"POST").then((function(t){t=r.shapeObject(t),d.replaceWith(r.rowTemplate(t));var n=e("#bdb-reading-log-edition-id-"+t.id);n.length&&Object(o.b)(n,r.editions),e(document).trigger("bdb_reading_log_updated",t)})).catch((function(e){r.errorWrap.append(e).show()})).finally((function(){Object(i.e)(n)}))},removeLog:function(t){if(t.preventDefault(),!confirm(bdbVars.confirm_delete_reading_log))return!1;var n=e(this);Object(i.d)(n),r.errorWrap.empty().hide();var a=n.closest("tr");Object(i.b)("v1/reading-log/delete/"+a.data("id"),{},"DELETE").then((function(e){a.remove()})).catch((function(e){r.errorWrap.append(e).show()})).finally((function(){Object(i.e)(n)}))},updateEditions:function(e,t){r.editions.push(t)}}}).call(this,n(31))},129:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var i=n(16),a={tableBody:!1,rowTemplate:wp.template("bdb-retailers-table-row"),rowEmptyTemplate:wp.template("bdb-retailers-table-row-empty"),errorWrap:"",init:function(){this.tableBody=e("#bdb-retailers tbody"),this.errorWrap=e("#bdb-retailers-errors"),this.tableBody.length&&(e("#bdb-new-retailer-fields").on("keydown","input",this.clickOnEnter),e("#bdb-new-retailer-fields").on("click","button",this.addRetailer),e(document).on("click",".bdb-update-retailer",this.updateRetailer),e(document).on("click",".bdb-remove-retailer",this.deleteRetailer),this.getRetailers())},getRetailers:function(){Object(i.b)("v1/retailer",{number:50},"GET").then((function(t){a.tableBody.empty(),0===t.length||void 0===t.length?a.tableBody.append(a.rowEmptyTemplate):(e("#bdb-retailers-empty").remove(),e.each(t,(function(e,t){a.tableBody.append(a.rowTemplate(t))})))})).catch((function(e){a.errorWrap.empty().append(e).show()}))},clickOnEnter:function(t){13===t.keyCode&&(t.preventDefault(),e("#bdb-new-retailer-fields").find("button").trigger("click"))},addRetailer:function(t){t.preventDefault();var n=e(this);Object(i.d)(n),a.errorWrap.empty().hide();var o={name:e("#bdb-new-retailer-name").val(),template:e("#bdb-new-retailer-template").val()};a.checkRequiredFields(o).then((function(e){return Object(i.b)("v1/retailer/add",o,"POST")})).then((function(t){e("#bdb-retailers-empty").remove(),a.tableBody.append(a.rowTemplate(t)),e("#bdb-newretailer-fields").find("input").val(""),Object(i.e)(n)})).catch((function(e){a.errorWrap.append(e).show(),Object(i.e)(n)}))},updateRetailer:function(t){t.preventDefault();var n=e(this);Object(i.d)(n),a.errorWrap.empty().hide();var o=n.closest("tr"),r={name:o.find(".bdb-retailer-name input").val(),template:o.find(".bdb-retailer-template textarea").val()};a.checkRequiredFields(r).then((function(e){return Object(i.b)("v1/retailer/update/"+o.data("id"),r,"POST")})).then((function(e){Object(i.e)(n)})).catch((function(e){a.errorWrap.append(e).show(),Object(i.e)(n)}))},deleteRetailer:function(t){t.preventDefault();var n=e(this),o=!1;Object(i.d)(n),a.errorWrap.empty().hide();var r=n.closest("tr"),d=r.data("id"),l=bdbVars.confirm_delete_retailer;Object(i.b)("v1/book-link",{retailer_id:d,number:1},"GET").then((function(e){if(void 0!==e&&void 0!==e.length&&e.length>0&&(l=bdbVars.confirm_delete_retailer_links),!confirm(l))throw o=!0,Error();return Object(i.b)("v1/retailer/delete/"+d,{},"DELETE")})).then((function(e){r.remove()})).catch((function(e){o||a.errorWrap.append(e).show()})).finally((function(){Object(i.e)(n)}))},checkRequiredFields:function(e){return new Promise((function(t,n){e.hasOwnProperty("name")&&""!==e.name?t():n(bdbVars.error_required_fields)}))}}}).call(this,n(31))},130:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var i={tag:!1,init:function(){this.tag=e(".bdb-ajaxtag"),this.tag.length&&(e(".bdb-tags-wrap").each((function(){i.quickClicks(e(this))})),e(".button",i.tag).on("click",(function(){i.flushTags(e(this).closest(".bdb-tags-wrap"))})),i.tag.each((function(){var t=e(".bdb-new-tag",e(this)),n=e(this).closest(".bdb-tags-wrap").data("taxonomy"),a=bdbVars.api_base+"book-database/v1/book-term/suggest/?taxonomy="+n+"&format=text&_wpnonce="+bdbVars.api_nonce;"author"===n&&(a=bdbVars.api_base+"book-database/v1/author/suggest/?format=text&_wpnonce="+bdbVars.api_nonce),t.on("keyup",(function(t){if(13===t.which)return i.flushTags(e(this).closest(".bdb-tags-wrap")),!1})).on("keypress",(function(e){if(13===e.which)return e.preventDefault(),!1})).suggest(a)})),e("#bdb-book-series-name").suggest(bdbVars.api_base+"book-database/v1/series/suggest/?format=text&_wpnonce="+bdbVars.api_nonce),e(".bdb-admin-page > form").on("submit",(function(t){e(".bdb-tags-wrap").each((function(){i.flushTags(this,!1,1)}))})))},clean:function(e){return e.replace(/\s*,\s*/g,",").replace(/,+/g,",").replace(/[,\s]+$/,"").replace(/^[,\s]+/,"")},parseTags:function(t){var n=t.id.split("-check-num-")[1],a=e(t).closest(".bdb-tags-wrap"),o=a.find("textarea"),r=o.val().split(","),d=[];return delete r[n],e.each(r,(function(t,n){(n=e.trim(n))&&d.push(n)})),o.val(i.clean(d.join(","))),i.quickClicks(a),!1},quickClicks:function(t){var n,a,o=e("textarea",t),r=e(".bdb-tags-checklist",t),d=e(t).attr("id");o.length&&(a=o.prop("disabled"),n=o.val().split(","),r.empty(),e.each(n,(function(t,n){var o,l;(n=e.trim(n))&&(o=e("").text(n),a||((l=e('X')).on("click",(function(e){i.parseTags(this)})),o.prepend(" ").prepend(l)),r.append(o))})))},flushTags:function(t,n,a){var o;n=n||!1;var r,d,l=e("textarea",t),c=e(".bdb-new-tag",t);return o=n?n.text():c.val(),d=(r=l.val())?r+","+o:o,d=i.clean(d),d=i.uniqueArray(d.split(",")).join(","),l.val(d),i.quickClicks(t),n||c.val(""),void 0===a&&c.focus(),!1},uniqueArray:function(t){var n=[];return e.each(t,(function(t,i){(i=e.trim(i))&&-1===e.inArray(i,n)&&n.push(i)})),n}}}).call(this,n(31))},131:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var i=n(16),a={tableBody:!1,rowTemplate:wp.template("bdb-taxonomies-table-row"),rowEmptyTemplate:wp.template("bdb-taxonomies-table-row-empty"),errorWrap:"",init:function(){this.tableBody=e("#bdb-book-taxonomies tbody"),this.errorWrap=e("#bdb-book-taxonomies-errors"),this.tableBody.length&&(e("#bdb-new-book-taxonomy-name").on("keyup",this.generateSlug),e("#bdb-new-book-taxonomy-fields").on("keydown","input",this.clickOnEnter),e("#bdb-new-book-taxonomy-fields").on("click",".button-primary",this.addTaxonomy),e(document).on("click",".bdb-update-book-taxonomy",this.updateTaxonomy),e(document).on("click",".bdb-remove-book-taxonomy",this.deleteTaxonomy),this.getTaxonomies())},getTaxonomies:function(){Object(i.b)("v1/taxonomy",{number:50},"GET").then((function(t){a.tableBody.empty(),0===t.length||void 0===t.length?a.tableBody.append(a.rowEmptyTemplate):(e("#bdb-book-taxonomies-empty").remove(),e.each(t,(function(e,t){a.tableBody.append(a.rowTemplate(t))})))})).catch((function(e){a.errorWrap.empty().append(e).show()}))},generateSlug:function(t){var n=e("#bdb-new-book-taxonomy-name").val().toLowerCase().replace(/[^a-z0-9_\-]/g,"");e("#bdb-new-book-taxonomy-slug").val(n)},clickOnEnter:function(t){13===t.keyCode&&(t.preventDefault(),e("#bdb-new-book-taxonomy-fields").find("button").trigger("click"))},addTaxonomy:function(t){t.preventDefault();var n=e(this);Object(i.d)(n),a.errorWrap.empty().hide();var o={name:e("#bdb-new-book-taxonomy-name").val(),slug:e("#bdb-new-book-taxonomy-slug").val(),format:e("#bdb-new-book-taxonomy-format").val()};a.checkRequiredFields(o).then((function(e){return Object(i.b)("v1/taxonomy/add",o,"POST")})).then((function(t){e("#bdb-book-taxonomies-empty").remove(),a.tableBody.append(a.rowTemplate(t)),e("#bdb-new-book-taxonomy-fields").find("input").val(""),Object(i.e)(n)})).catch((function(e){a.errorWrap.append(e).show(),Object(i.e)(n)}))},updateTaxonomy:function(t){t.preventDefault();var n=e(this);Object(i.d)(n),a.errorWrap.empty().hide();var o=n.closest("tr"),r={name:o.find(".bdb-book-taxonomy-name input").val(),slug:o.find(".bdb-book-taxonomy-slug input").val(),format:o.find(".bdb-book-taxonomy-format select").val()};a.checkRequiredFields(r).then((function(e){return Object(i.b)("v1/taxonomy/update/"+o.data("id"),r,"POST")})).then((function(e){Object(i.e)(n)})).catch((function(e){a.errorWrap.append(e).show(),Object(i.e)(n)}))},deleteTaxonomy:function(t){if(t.preventDefault(),!confirm(bdbVars.confirm_delete_taxonomy))return!1;var n=e(this);Object(i.d)(n),a.errorWrap.empty().hide();var o=n.closest("tr");Object(i.b)("v1/taxonomy/delete/"+o.data("id"),{},"DELETE").then((function(e){o.remove()})).catch((function(e){a.errorWrap.append(e).show(),Object(i.e)(n)}))},checkRequiredFields:function(e){return new Promise((function(t,n){e.hasOwnProperty("name")&&""!==e.name&&e.hasOwnProperty("slug")&&""!==e.slug&&e.hasOwnProperty("format")&&""!==e.format?t():n(bdbVars.error_required_fields)}))}}}).call(this,n(31))},138:function(e,t,n){"use strict";n.r(t);var i=n(121),a=n(122),o=n(123),r=n(124),d=n(96),l=n(125),c=n(92),s=n(126),u=n(127),f=n(128),p=n(129),b=n(130),m=n(131);jQuery,i.a.init(),a.a.init(),o.a.init(),r.a.init(),d.a.init(),l.a.init(),c.a.init(),s.a.init(),u.a.init(),f.a.init(),p.a.init(),b.a.init(),m.a.init()},16:function(e,t,n){"use strict";n.d(t,"b",(function(){return i.b})),n.d(t,"a",(function(){return i.a})),n.d(t,"d",(function(){return a})),n.d(t,"e",(function(){return o})),n.d(t,"c",(function(){return r}));var i=n(68);function a(e){var t=bdbVars.is_admin?'':bdbVars.please_wait;e.prop("disabled",!0).data("text",e.text()).html(t)}function o(e){e.prop("disabled",!1).text(e.data("text"))}function r(e){var t="",n=Math.floor(e),i=Math.ceil(e-n);return t+="★".repeat(n),t+="½".repeat(i)}},31:function(e,t){e.exports=jQuery},34:function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return a}));function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mysql";if(""===e||!e)return"";t="display"===t?"MMMM D, YYYY":"YYYY-MM-DD HH:mm:ss";var n=(e=moment.utc(e)).local().format(t);return n}function a(e){return""!==e&&e?(e=moment(e)).utc().format("YYYY-MM-DD HH:mm:ss"):""}},68:function(e,t,n){"use strict";(function(e){function i(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"POST",a={method:i,url:bdbVars.api_base+"book-database/"+t,beforeSend:function(e){e.setRequestHeader("X-WP-Nonce",bdbVars.api_nonce)},xhrFields:{withCredentials:!0},data:n};return new Promise((function(t,n){e.ajax(a).success((function(e){t(e)})).error((function(e,t,i){var a=bdbVars.generic_erroc;void 0!==e.responseJSON?void 0!==(a=e.responseJSON).message&&(a=a.message):void 0!==e.message&&(a=e.message),n(a)}))}))}function a(t){var n={method:"POST",dataType:"JSON",url:ajaxurl,data:t};return new Promise((function(t,i){e.ajax(n).success((function(e){e.success?t(e.data):i(e.data)})).error((function(e,t,n){var a=bdbVars.generic_erroc;void 0!==e.responseJSON?void 0!==(a=e.responseJSON).message&&(a=a.message):void 0!==e.message&&(a=e.message),i(a)}))}))}n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return a}))}).call(this,n(31))},92:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return r}));var i=n(16),a=n(34),o={bookID:0,tableBody:!1,rowTemplate:wp.template("bdb-editions-table-row"),rowEmptyTemplate:wp.template("bdb-editions-table-row-empty"),errorWrap:"",init:function(){this.bookID=e("#bdb-book-id").val(),this.tableBody=e("#bdb-book-editions-list .wp-list-table tbody"),this.errorWrap=e("#bdb-editions-errors"),this.tableBody.length&&void 0!==this.bookID&&this.bookID&&(e("#bdb-add-edition").on("click",this.toggleNewEditionFields),e("#bdb-submit-new-edition").on("click",this.addEdition),e(document).on("click",".bdb-edition-toggle-editable",this.toggleEditableFields),e(document).on("click",".bdb-update-edition",this.updateEdition),e(document).on("click",".bdb-remove-edition",this.removeEdition),this.getEditions())},getEditions:function(){Object(i.b)("v1/edition",{book_id:o.bookID,number:50},"GET").then((function(t){o.tableBody.empty(),0===t.length||void 0===t.length?o.tableBody.append(o.rowEmptyTemplate):(e("#bdb-book-editions-empty").remove(),e.each(t,(function(e,t){t.date_acquired_formatted=Object(a.b)(t.date_acquired,"display"),t.date_acquired=Object(a.b)(t.date_acquired),o.tableBody.append(o.rowTemplate(t))}))),e(document).trigger("bdb_editions_loaded")})).catch((function(e){o.errorWrap.empty().append(e).show()}))},toggleNewEditionFields:function(t){void 0!==t&&t.preventDefault(),e("#bdb-new-edition-fields").slideToggle()},addEdition:function(t){t.preventDefault();var n=e(this);Object(i.d)(n),o.errorWrap.empty().hide();var r={book_id:o.bookID,isbn:e("#bdb-new-edition-isbn").val(),format:e("#bdb-new-edition-format").val(),date_acquired:Object(a.a)(e("#bdb-new-edition-date-acquired").val()),source_id:e("#bdb-checkboxes-source-edition").find("input:checked").val(),signed:e("#bdb-new-edition-signed").prop("checked")?1:0};Object(i.b)("v1/edition/add",r,"POST").then((function(t){t.date_acquired_formatted=Object(a.b)(t.date_acquired,"display"),t.date_acquired=Object(a.b)(t.date_acquired),e("#bdb-book-editions-empty").remove(),o.tableBody.append(o.rowTemplate(t));var n=e("#bdb-new-edition-fields");n.find('input[type="text"]').val(""),n.find('input[type="checkbox"]').prop("checked",!1),o.toggleNewEditionFields(),d(t),e(document).trigger("bdb_edition_added",t)})).catch((function(e){o.errorWrap.append(e).show()})).finally((function(){Object(i.e)(n)}))},toggleEditableFields:function(t){t.preventDefault();var n=e(this),i=n.closest("tr");i.find(".bdb-table-display-value").hide(),i.find(".bdb-table-edit-value").show(),n.removeClass("bdb-edition-toggle-editable").addClass("bdb-update-edition button-primary").text(bdbVars.save)},updateEdition:function(t){t.preventDefault();var n=e(this);Object(i.d)(n),o.errorWrap.empty().hide();var r=n.closest("tr"),l={isbn:r.find(".bdb-edition-isbn input").val(),format:r.find(".bdb-edition-format select").val(),date_acquired:Object(a.a)(r.find(".bdb-edition-date-acquired input").val()),source_id:r.find(".bdb-edition-source select").val(),signed:r.find('.bdb-edition-signed input[type="checkbox"]').prop("checked")?1:0};Object(i.b)("v1/edition/update/"+r.data("id"),l,"POST").then((function(t){t.date_acquired_formatted=Object(a.b)(t.date_acquired,"display"),t.date_acquired=Object(a.b)(t.date_acquired),r.replaceWith(o.rowTemplate(t)),d(t),e(document).trigger("bdb_edition_updated",t)})).catch((function(e){o.errorWrap.append(e).show()})).finally((function(){Object(i.e)(n)}))},removeEdition:function(t){if(t.preventDefault(),!confirm(bdbVars.confirm_delete_edition))return!1;var n=e(this);Object(i.d)(n),o.errorWrap.empty().hide();var a=n.closest("tr"),r=a.data("id");Object(i.b)("v1/edition/delete/"+r,{},"DELETE").then((function(t){a.remove(),function(t){e(".bdb-book-edition-list").each((function(){e(this).find('option[value="'+t+'"]').remove()}))}(r)})).catch((function(e){o.errorWrap.append(e).show()})).finally((function(){Object(i.e)(n)}))}};function r(t,n){var i=t.data("selected");t.empty().append('"),e.each(n,(function(e,n){var a=n.id==i?' selected="selected"':"";t.append('")}))}function d(t){e(".bdb-book-edition-list").each((function(){var n=e(this),i=n.find('option[value="'+t.id+'"]');i.length?i.text(t.isbn+" - "+t.format_name):n.append('")}))}}).call(this,n(31))},96:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var i=n(100),a={init:function(){e(".bdb-datepicker").length>0&&this.initDatepickers(),e(document).on("click",".bdb-edit-row-with-datepicker",this.maybeAddDatepicker)},createDatepicker:function(e){var t={allowInput:!0,dateFormat:"Y-m-d"};e.classList.contains("bdb-timepicker")&&(t.enableTime=!0,t.dateFormat="Y-m-d H:i",t.altFormat="F J, Y, h:i K"),Object(i.a)(e,t)},initDatepickers:function(){document.querySelectorAll(".bdb-datepicker").forEach((function(e){a.createDatepicker(e)}))},maybeAddDatepicker:function(e){this.closest("tr").querySelectorAll(".bdb-datepicker").forEach((function(e){void 0===e._flatpickr&&a.createDatepicker(e)}))}}}).call(this,n(31))}}); -//# sourceMappingURL=admin.min.js.map \ No newline at end of file diff --git a/assets/js/build/admin.min.js.map b/assets/js/build/admin.min.js.map deleted file mode 100644 index 9ce2199c..00000000 --- a/assets/js/build/admin.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/flatpickr/dist/esm/types/options.js","webpack:///./node_modules/flatpickr/dist/esm/l10n/default.js","webpack:///./node_modules/flatpickr/dist/esm/utils/index.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dom.js","webpack:///./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dates.js","webpack:///./node_modules/flatpickr/dist/esm/index.js","webpack:///./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack:///./assets/js/src/admin/modules/book-layout.js","webpack:///./assets/js/src/admin/modules/book-index-title.js","webpack:///./assets/js/src/admin/modules/book-links.js","webpack:///./assets/js/src/admin/modules/categories.js","webpack:///./assets/js/src/admin/modules/delete-objects.js","webpack:///./assets/js/src/admin/modules/license.js","webpack:///./assets/js/src/admin/modules/media-upload.js","webpack:///./assets/js/src/admin/modules/reading-logs.js","webpack:///./assets/js/src/admin/modules/retailers.js","webpack:///./assets/js/src/admin/modules/tags.js","webpack:///./assets/js/src/admin/modules/taxonomies.js","webpack:///./assets/js/src/admin/index.js","webpack:///./assets/js/src/utils/loaders.js","webpack:///./assets/js/src/utils/ratings.js","webpack:///external \"jQuery\"","webpack:///./assets/js/src/admin/modules/dates.js","webpack:///./assets/js/src/utils/api-request.js","webpack:///./assets/js/src/admin/modules/editions.js","webpack:///./assets/js/src/admin/modules/datepicker.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","HOOKS","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","animate","window","navigator","userAgent","indexOf","ariaDateFormat","autoFillDefaultTime","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enableSeconds","enableTime","errorHandler","err","console","warn","getWeek","givenDate","date","Date","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","Math","round","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","monthSelectorType","nextArrow","noCalendar","now","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","position","positionElement","undefined","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","wrap","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","length","slice","bool","debounce","fn","wait","clearTimeout","setTimeout","apply","this","arguments","arrayify","obj","Array","toggleClass","elem","className","classList","add","remove","createElement","tag","content","e","document","textContent","clearNode","node","firstChild","removeChild","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","type","pattern","setAttribute","appendChild","getEventTarget","event","composedPath","target","error","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","hour","parseFloat","H","J","day","K","getHours","RegExp","test","M","shortMonth","S","seconds","setSeconds","U","_","unixSeconds","W","weekNum","weekNumber","parseInt","Y","year","setFullYear","Z","ISODate","h","minutes","setMinutes","j","month","u","unixMillSeconds","w","y","tokenRegex","toISOString","options","getMonth","getSeconds","getMinutes","String","substring","createDateFormatter","config","l10n","isMobile","frmt","overrideLocale","formatDate","split","map","arr","join","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","format","datestr","trim","parseDate","matched","ops","matchIndex","regexStr","token","isBackSlash","escaped","match","exec","val","forEach","isNaN","Error","compareDates","date1","date2","duration","getDefaultHours","hours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","min","FlatpickrInstance","element","instanceConfig","self","assign","flatpickr","defaultConfig","bindToInstance","setCalendarWidth","requestAnimationFrame","calendarContainer","style","visibility","display","daysContainer","daysWidth","days","offsetWidth","width","weekWrapper","removeProperty","updateTime","selectedDates","defaultDate","defaults","getMilliseconds","latestSelectedDateObj","preventDefault","isKeyDown","eventTarget","input","getAttribute","max","step","curValue","delta","which","newValue","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","abs","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","limitMinHours","minTime","minDateHasTime","maxTime","maxDateHasTime","setHoursFromDate","onYearInput","toString","changeYear","handler","ev","el","addEventListener","_handlers","push","removeEventListener","triggerChange","triggerEvent","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","message","buildMonthSwitch","redraw","timeIncrement","contains","inputElem","parentNode","createEvent","dispatchEvent","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","tabIndex","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","focus","onMouseOver","getFirstAvailableDay","startMonth","endMonth","children","startIndex","endIndex","focusOnDay","current","offset","dayFocused","isInView","activeElement","body","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","buildDays","frag","shouldBuildMonth","monthsDropdownContainer","innerHTML","selected","buildMonth","container","monthNavFragment","monthElement","selectedMonth","yearInput","tabindex","yearElement","getElementsByTagName","disabled","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","splice","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","appendTo","documentClick","isOpen","isCalendarElement","isInput","path","lostFocus","relatedTarget","isIgnored","some","timeContainer","close","clear","newYear","newYearNum","isNewYear","_a","dateToCheck","enable","array","parsed","from","to","onBlur","allowKeydown","allowInlineKeydown","keyCode","blur","open","isTimeObj","focusAndClose","selectDate","ctrlKey","stopPropagation","currentYearElement","elems","concat","pluginElements","filter","x","shiftKey","charAt","toLowerCase","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","dayElem","timestamp","outOfRange","ts1","ts2","ts","onResize","positionCalendar","minMaxDateSetter","inverseDateObj","removeAttribute","getInputElem","querySelector","setupLocale","l10ns","default","JSON","parse","stringify","dataset","customPositionElement","_positionElement","calendarHeight","reduce","acc","child","offsetHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","getBoundingClientRect","distanceFromBottom","innerHeight","bottom","showOnTop","top","pageYOffset","left","pageXOffset","isCenter","isRight","right","rightMost","centerMost","doc","editableSheet","styleSheets","sheet","cssRules","head","createStyleSheet","getDocumentStyleSheet","bodyWidth","centerLeft","centerBefore","centerAfter","centerIndex","centerStyle","insertRule","msMaxTouchPoints","findParent","condition","selectedDate","shouldChangeMonth","selectedIndex","sort","a","b","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","destroy","lastChild","insertBefore","_type","k","click","wasOpen","select","set","option","CALLBACKS","setSelectedDate","toggle","inputDate","dates","parseDateRules","rule","data","hooks","initEvent","getDateStr","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","userConfig","formats","_enable","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","parseConfig","nodeName","placeholder","required","nextSibling","setupInputs","preloadedDate","setupDates","yr","fragment","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","rContainer","separator","hourInput","minuteInput","military2ampm","secondInput","title","buildTime","customAppend","nodeType","build","evt","querySelectorAll","inputType","defaultValue","setupMobile","debouncedResize","ontouchstart","capture","selText","bindEvents","isSafari","init","_flatpickr","nodeList","nodes","HTMLElement","instances","HTMLCollection","NodeList","selector","Node","en","localize","setDefaults","jQuery","fp_incr","args","TypeError","source","keys","BDB_Book_Layout","$","on","toggleBookTextarea","changeCoverAlignment","next","slideToggle","removeClass","index","css","addClass","sortable","cancel","connectWith","update","ui","parentID","item","parent","attr","disabledIndicator","find","hasClass","BDB_Book_Index_Title","bookTitleField","indexTitleSelect","indexTitleCustomField","toggleCustomIndexTitle","trigger","writeOriginalTitle","populateIndexTitles","slideDown","slideUp","text","apiRequest","then","response","after","catch","log","BDB_Book_Links","bookID","linkWrap","linkTemplateAdd","wp","template","linkTemplateEdit","errorWrap","clickOnEnter","addLink","updateLink","deleteLink","getLinks","book_id","apiResponse","empty","each","link","append","show","button","spinButton","hide","retailer_id","url","unspinButton","errorMessage","id","closest","confirm","bdbVars","confirm_delete_book_link","BDB_Categories","addCheckboxTerm","checkboxName","checkboxTaxonomy","checkboxWrap","newTerm","elID","createID","prefix","replace","charCodeAt","BDB_Delete_Objects","BDB_License","responseWrap","activate","deactivate","refresh","action","license_key","nonce","ajaxRequest","finally","BDB_Media","frame","createFrame","removeImage","imageField","imageIDField","imageSize","media","frames","bookDB","states","controller","Library","filterable","multiple","state","attachment","toJSON","attachmentImage","sizes","attributes","alt","BDB_Reading_Logs","userID","maxPages","tableBody","rowTemplate","rowEmptyTemplate","userFilter","editions","toggleNewLogFields","addLog","toggleEditableFields","toggleCompleteUnit","updateLog","removeLog","getLogs","updateEditions","shapeObject","readingLog","date_started_formatted","dateUTCtoLocal","date_started","date_finished_formatted","date_finished","percentage_complete","rating","rating_formatted","stars","loadEditions","prop","user_id","selectEditionWrap","selectEditionDropdown","none","edition","isbn","format_name","fillEditionsDropdown","percentage","selectedEditionID","edition_id","dateLocalToUTC","editionDropdown","newFieldsWrap","save","unitType","pageNumber","replaceWith","confirm_delete_reading_log","newEdition","BDB_Retailers","addRetailer","updateRetailer","deleteRetailer","getRetailers","taxonomy","checkRequiredFields","requirementsResponse","unconfirmed","retailerID","confirmMessage","confirm_delete_retailer","purchaseLinks","confirm_delete_retailer_links","Promise","resolve","reject","error_required_fields","BDB_Tags","quickClicks","flushTags","newTag","apiURL","api_base","api_nonce","suggest","clean","tags","parseTags","num","tagBox","theTags","currentTags","newTags","tagChecklist","span","xbutton","prepend","f","tagsVal","uniqueArray","out","inArray","BDB_Book_Taxonomies","generateSlug","addTaxonomy","updateTaxonomy","deleteTaxonomy","getTaxonomies","slug","confirm_delete_taxonomy","BDB_Datepicker","BDB_Editions","newText","is_admin","please_wait","html","getStars","fullStars","floor","halfStars","ceil","repeat","utcDate","localDate","moment","utc","local","endpoint","method","beforeSend","xhr","setRequestHeader","xhrFields","withCredentials","ajax","success","qpXHR","textStatus","errorThrown","generic_erroc","responseJSON","dataType","ajaxurl","toggleNewEditionFields","addEdition","updateEdition","removeEdition","getEditions","date_acquired_formatted","date_acquired","source_id","signed","addEditionToDropdown","confirm_delete_edition","editionID","removeEditionFromDropdown","dropdown","editionsArray","selectedEdition","existingEdition","initDatepickers","maybeAddDatepicker","createDatepicker"],"mappings":"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","file":"assets/js/build/admin.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 138);\n","export const HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport const defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: (err) => typeof console !== \"undefined\" && console.warn(err),\n getWeek: (givenDate) => {\n const date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export const english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: (nth) => {\n const s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export const pad = (number, length = 2) => `000${number}`.slice(length * -1);\nexport const int = (bool) => (bool === true ? 1 : 0);\nexport function debounce(fn, wait) {\n let t;\n return function () {\n clearTimeout(t);\n t = setTimeout(() => fn.apply(this, arguments), wait);\n };\n}\nexport const arrayify = (obj) => obj instanceof Array ? obj : [obj];\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n const e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n const wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (const key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n const path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nconst doNothing = () => undefined;\nexport const monthToStr = (monthNumber, shorthand, locale) => locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\nexport const revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n H: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n J: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n K: (dateObj, amPM, locale) => {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1000),\n W: function (dateObj, weekNum, locale) {\n const weekNumber = parseInt(weekNum);\n const date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: (dateObj, year) => {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: (_, ISODate) => new Date(ISODate),\n d: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n h: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n i: (dateObj, minutes) => {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),\n w: doNothing,\n y: (dateObj, year) => {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport const tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport const formats = {\n Z: (date) => date.toISOString(),\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: (date) => pad(date.getHours()),\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: (date, locale) => locale.amPM[int(date.getHours() > 11)],\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: (date) => pad(date.getSeconds()),\n U: (date) => date.getTime() / 1000,\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: (date) => pad(date.getFullYear(), 4),\n d: (date) => pad(date.getDate()),\n h: (date) => (date.getHours() % 12 ? date.getHours() % 12 : 12),\n i: (date) => pad(date.getMinutes()),\n j: (date) => date.getDate(),\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: (date) => pad(date.getMonth() + 1),\n n: (date) => date.getMonth() + 1,\n s: (date) => date.getSeconds(),\n u: (date) => date.getTime(),\n w: (date) => date.getDay(),\n y: (date) => String(date.getFullYear()).substring(2),\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport const createDateFormatter = ({ config = defaults, l10n = english, isMobile = false, }) => (dateObj, frmt, overrideLocale) => {\n const locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map((c, i, arr) => formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\")\n .join(\"\");\n};\nexport const createDateParser = ({ config = defaults, l10n = english }) => (date, givenFormat, timeless, customLocale) => {\n if (date !== 0 && !date)\n return undefined;\n const locale = customLocale || l10n;\n let parsedDate;\n const dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n const format = givenFormat || (config || defaults).dateFormat;\n const datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr))\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n let matched, ops = [];\n for (let i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n const token = format[i];\n const isBackSlash = token === \"\\\\\";\n const escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n const match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n ops.forEach(({ fn, val }) => (parsedDate = fn(parsedDate, val, locale) || parsedDate));\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(`Invalid date provided: ${dateOrig}`));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n};\nexport function compareDates(date1, date2, timeless = true) {\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport const isBetween = (ts, ts1, ts2) => {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport const duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n let hours = config.defaultHour;\n let minutes = config.defaultMinute;\n let seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n const minHour = config.minDate.getHours();\n const minMinutes = config.minDate.getMinutes();\n const minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n const maxHr = config.maxDate.getHours();\n const maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours, minutes, seconds };\n}\n","import { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nconst DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n const self = {\n config: Object.assign(Object.assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth(month = self.currentMonth, yr = self.currentYear) {\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n const config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n const daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n const defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n const defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n const prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n let hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n const limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n const limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n const maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n const minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n const date = dateObj || self.latestSelectedDateObj;\n if (date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n const eventTarget = getEventTarget(event);\n const year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach((ev) => bind(element, ev, handler, options));\n if (element instanceof Array)\n return element.forEach((el) => bind(el, event, handler, options));\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: () => element.removeEventListener(event, handler),\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach((evt) => {\n Array.prototype.forEach.call(self.element.querySelectorAll(`[data-${evt}]`), (el) => bind(el, \"click\", self[evt]));\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n const debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", (e) => {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n const selText = (e) => getEventTarget(e).select();\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", () => self.secondElement && self.secondElement.select());\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", (e) => {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n const jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n const oldYear = self.currentYear;\n const oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n const eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n const target = e && getEventTarget(e);\n const input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n const event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n const fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n const { weekWrapper, weekNumbers } = buildWeeks();\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n const customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n const wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n const dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n const startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n for (let m = startMonth; m != endMonth; m += delta) {\n const month = self.daysContainer.children[m];\n const startIndex = delta > 0 ? 0 : month.children.length - 1;\n const endIndex = delta > 0 ? month.children.length : -1;\n for (let i = startIndex; i != endIndex; i += delta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n const givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n const loopDelta = delta > 0 ? 1 : -1;\n for (let m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n const month = self.daysContainer.children[m];\n const startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n const numMonthDays = month.children.length;\n for (let i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n const dayFocused = isInView(document.activeElement || document.body);\n const startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n const firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n const prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n const daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n let dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n const dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n const frag = document.createDocumentFragment();\n for (let i = 0; i < self.config.showMonths; i++) {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n const shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (let i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n const month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n const container = createElement(\"div\", \"flatpickr-month\");\n const monthNavFragment = window.document.createDocumentFragment();\n let monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", (e) => {\n const target = getEventTarget(e);\n const selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n const yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n const yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n const currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container,\n yearElement,\n monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (let m = self.config.showMonths; m--;) {\n const month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: () => self.__hidePrevMonthArrow,\n set(bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: () => self.__hideNextMonthArrow,\n set(bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n const defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n const separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n const hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n const minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n const secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (let i = self.config.showMonths; i--;) {\n const container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n const firstDayOfWeek = self.l10n.firstDayOfWeek;\n let weekdays = [...self.l10n.weekdays.shorthand];\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = [\n ...weekdays.splice(firstDayOfWeek, weekdays.length),\n ...weekdays.splice(0, firstDayOfWeek),\n ];\n }\n for (let i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = `\n \n ${weekdays.join(\"\")}\n \n `;\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n const weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n const weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper,\n weekNumbers,\n };\n }\n function changeMonth(value, isOffset = true) {\n const delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent = true, toInitial = true) {\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n const { hours, minutes, seconds } = getDefaultHours(self.config);\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (let i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n const wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach((k) => {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n const eventTarget = getEventTarget(e);\n const isCalendarElement = isCalendarElem(eventTarget);\n const isInput = eventTarget === self.input ||\n eventTarget === self.altInput ||\n self.element.contains(eventTarget) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n const lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n const isIgnored = !self.config.ignoredFocusElements.some((elem) => elem.contains(eventTarget));\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n const newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless = true) {\n var _a;\n const dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n const bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (let i = 0, d; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n const parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n const isInput = e.target === self._input;\n if (isInput &&\n (self.selectedDates.length > 0 || self._input.value.length > 0) &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n const eventTarget = getEventTarget(e);\n const isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n const allowInput = self.config.allowInput;\n const allowKeydown = self.isOpen && (!allowInput || !isInput);\n const allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n const isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n const delta = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta);\n else {\n e.stopPropagation();\n changeMonth(delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n const delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n const elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter((x) => x);\n const i = elems.indexOf(eventTarget);\n if (i !== -1) {\n const target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n const hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n let containsDisabled = false;\n let minRange = 0, maxRange = 0;\n for (let t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (let m = 0; m < self.config.showMonths; m++) {\n const month = self.daysContainer.children[m];\n for (let i = 0, l = month.children.length; i < l; i++) {\n const dayElem = month.children[i], date = dayElem.dateObj;\n const timestamp = date.getTime();\n const outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n continue;\n }\n else if (containsDisabled && !outOfRange)\n continue;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement = self._positionElement) {\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n const eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n const wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(() => self.hourElement.select(), 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return (date) => {\n const dateObj = (self.config[`_${type}Date`] = self.parseDate(date, self.config.dateFormat));\n const inverseDateObj = self.config[`_${type === \"min\" ? \"max\" : \"min\"}Date`];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter((d) => isEnabled(d));\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n const boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n const formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: () => self.config._enable,\n set: (dates) => {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: () => self.config._disable,\n set: (dates) => {\n self.config._disable = parseDateRules(dates);\n },\n });\n const timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n const defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n const defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + ` h:i${userConfig.enableSeconds ? \":S\" : \"\"} K`;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: () => self.config._minDate,\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: () => self.config._maxDate,\n set: minMaxDateSetter(\"max\"),\n });\n const minMaxTimeSetter = (type) => (val) => {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n };\n Object.defineProperty(self.config, \"minTime\", {\n get: () => self.config._minTime,\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: () => self.config._maxTime,\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (let i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter((hook) => self.config[hook] !== undefined).forEach((hook) => {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (let i = 0; i < self.config.plugins.length; i++) {\n const pluginConf = self.config.plugins[i](self) || {};\n for (const key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(`flatpickr: invalid locale ${self.config.locale}`));\n self.l10n = Object.assign(Object.assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = `(${self.l10n.amPM[0]}|${self.l10n.amPM[1]}|${self.l10n.amPM[0].toLowerCase()}|${self.l10n.amPM[1].toLowerCase()})`;\n const userConfig = Object.assign(Object.assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n const positionElement = customPositionElement || self._positionElement;\n const calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, ((acc, child) => acc + child.offsetHeight), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n const top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n let left = window.pageXOffset + inputBounds.left;\n let isCenter = false;\n let isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n const right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n const centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = `${top}px`;\n if (!rightMost) {\n self.calendarContainer.style.left = `${left}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = `${right}px`;\n }\n else {\n const doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n const bodyWidth = window.document.body.offsetWidth;\n const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n const centerBefore = \".flatpickr-calendar.centerMost:before\";\n const centerAfter = \".flatpickr-calendar.centerMost:after\";\n const centerIndex = doc.cssRules.length;\n const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);\n self.calendarContainer.style.left = `${centerLeft}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n let editableSheet = null;\n for (let i = 0; i < document.styleSheets.length; i++) {\n const sheet = document.styleSheets[i];\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n const isSelectable = (day) => day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n const t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n const target = t;\n const selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n const shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n const selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n const isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n const single = self.config.mode === \"single\" && !self.config.enableTime;\n const range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n const CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n clickOpens: [\n () => {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (const key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach((x) => x());\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach((x) => x());\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n let dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map((d) => self.parseDate(d, format));\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map((date) => self.parseDate(date, format));\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map((date) => self.parseDate(date, format));\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(inputDate)}`));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter((d) => d instanceof Date && isEnabled(d, false)));\n if (self.config.mode === \"range\")\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n function setDate(date, triggerChange = false, format = self.config.dateFormat) {\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map((rule) => {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter((x) => x);\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n const preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n const inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", (e) => {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n const hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (let i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n const e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (let i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach((yearElement, i) => {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map((dObj) => self.formatDate(dObj, format))\n .filter((d, i, arr) => self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i)\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange = true) {\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n const eventTarget = getEventTarget(e);\n const isPrevMonth = self.prevMonthNav.contains(eventTarget);\n const isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n const isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n const min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n let newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n const isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n const nodes = Array.prototype.slice\n .call(nodeList)\n .filter((x) => x instanceof HTMLElement);\n const instances = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: Object.assign({}, English),\n default: Object.assign({}, English),\n};\nflatpickr.localize = (l10n) => {\n flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = (config) => {\n flatpickr.defaultConfig = Object.assign(Object.assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target, ...args) {\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n for (const source of args) {\n if (source) {\n Object.keys(source).forEach((key) => (target[key] = source[key]));\n }\n }\n return target;\n };\n}\n","/* global $, bdbVars, wp */\n\n/**\n * Book Layout\n */\nvar BDB_Book_Layout = {\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\t\t$( '.bdb-book-option-toggle' ).on( 'click', this.toggleBookTextarea );\n\t\t$( '#bdb-book-layout-cover-changer' ).on( 'change', this.changeCoverAlignment );\n\n\t\tthis.sort();\n\t},\n\n\t/**\n\t * Toggle the book textarea\n\t *\n\t * @param e\n\t */\n\ttoggleBookTextarea: function( e ) {\n\t\t$( this ).next().slideToggle();\n\t},\n\n\t/**\n\t * Change the real-time alignment of the book coversss123\n\t *\n\t * @param e\n\t */\n\tchangeCoverAlignment: function ( e ) {\n\t\tlet parentDiv = $( '#bdb-book-option-cover' );\n\n\t\tparentDiv.removeClass( function ( index, css ) {\n\t\t\treturn ( css.match(/(^|\\s)bdb-book-cover-align-\\S+/g) || [] ).join(' ');\n\t\t} ).addClass( 'bdb-book-cover-align-' + $( this ).val() );\n\t},\n\n\tsort: function() {\n\t\t$( '.bdb-sortable' ).sortable( {\n\t\t\tcancel: '.bdb-no-sort, textarea, input, select',\n\t\t\tconnectWith: '.bdb-sortable',\n\t\t\tplaceholder: 'bdb-sortable-placeholder',\n\t\t\tupdate: function ( event, ui ) {\n\t\t\t\tlet parentID = ui.item.parent().attr( 'id' );\n\t\t\t\tlet disabledIndicator = ui.item.find( '.bdb-book-option-disabled' );\n\t\t\t\tif ( $( '#' + parentID ).hasClass( 'bdb-sorter-enabled-column' ) ) {\n\t\t\t\t\tdisabledIndicator.val( 'false' );\n\t\t\t\t} else {\n\t\t\t\t\tdisabledIndicator.val( 'true' );\n\t\t\t\t}\n\t\t\t}\n\t\t} )\n\t}\n\n};\n\nexport { BDB_Book_Layout };","/* global $, bdbVars, wp */\n\nimport { apiRequest, spinButton, unspinButton } from 'utils';\n\nvar BDB_Book_Index_Title = {\n\n\tbookTitleField: false,\n\n\tindexTitleSelect: false,\n\n\tindexTitleCustomField: false,\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\n\t\tthis.bookTitleField = $( '#bdb-book-title' );\n\t\tthis.indexTitleSelect = $( '#bdb-book-index-title' );\n\t\tthis.indexTitleCustomField = $( '#bdb-book-index-title-custom' );\n\n\t\tthis.indexTitleSelect.on( 'change', this.toggleCustomIndexTitle ).trigger( 'change' );\n\t\tthis.bookTitleField.on( 'keyup', this.writeOriginalTitle );\n\t\tthis.bookTitleField.on( 'blur', this.populateIndexTitles );\n\n\t},\n\n\t/**\n\t * Show the \"Custom\" box if \"Custom\" is selected. Otherwise, hide it.\n\t */\n\ttoggleCustomIndexTitle: function () {\n\n\t\tlet selectedIndexTitle = $( this ).val();\n\n\t\tif ( 'custom' === selectedIndexTitle ) {\n\t\t\tBDB_Book_Index_Title.indexTitleCustomField.slideDown().css( 'display', 'block' );\n\t\t} else {\n\t\t\tBDB_Book_Index_Title.indexTitleCustomField.slideUp();\n\t\t}\n\n\t},\n\n\t/**\n\t * Copies the contents of the original \"Book Title\" field to the \"original\" index title option.\n\t */\n\twriteOriginalTitle: function () {\n\t\tBDB_Book_Index_Title.indexTitleSelect.find( 'option[value=\"original\"]' ).text( $( this ).val() );\n\t},\n\n\t/**\n\t * Create an index-friendly version of the entered book title and insert it as an\n\t * option in the ` field.\n\t *\n\t * @param e\n\t */\n\tclickOnEnter: function ( e ) {\n\n\t\tif ( 13 === e.keyCode ) {\n\t\t\te.preventDefault();\n\n\t\t\t$( '#bdb-new-purchase-link' ).find( 'button' ).trigger( 'click' );\n\t\t}\n\n\t},\n\n\t/**\n\t * Add a new link\n\t *\n\t * @param e\n\t */\n\taddLink: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Book_Links.errorWrap.empty().hide();\n\n\t\tif ( BDB_Book_Links.bookID ) {\n\n\t\t\t// Editing an existing book.\n\n\t\t\tlet args = {\n\t\t\t\tbook_id: BDB_Book_Links.bookID,\n\t\t\t\tretailer_id: $( '#bdb-new-book-link-retailer' ).val(),\n\t\t\t\turl: $( '#bdb-new-book-link-url' ).val()\n\t\t\t};\n\n\t\t\tapiRequest( 'v1/book-link/add', args, 'POST' ).then( function ( apiResponse ) {\n\n\t\t\t\tBDB_Book_Links.linkWrap.append( BDB_Book_Links.linkTemplateEdit( apiResponse ) );\n\n\t\t\t\t// Wipe field values.\n\t\t\t\t$( '#bdb-new-purchase-link' ).find( 'input' ).val( '' );\n\n\t\t\t\tunspinButton( button );\n\t\t\t} ).catch( function ( errorMessage ) {\n\t\t\t\tBDB_Book_Links.errorWrap.append( errorMessage ).show();\n\t\t\t\tunspinButton( button );\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\t// Adding a new book.\n\n\t\t\tlet data = {\n\t\t\t\tid: $( '.bdb-book-link' ).length,\n\t\t\t\tretailer_id: $( '#bdb-new-book-link-retailer' ).val(),\n\t\t\t\turl: $( '#bdb-new-book-link-url' ).val()\n\t\t\t};\n\n\t\t\tBDB_Book_Links.linkWrap.append( BDB_Book_Links.linkTemplateAdd( data ) );\n\n\t\t\t// Wipe field values.\n\t\t\t$( '#bdb-new-purchase-link' ).find( 'input' ).val( '' );\n\n\t\t\tunspinButton( button );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Update a link\n\t *\n\t * @param e\n\t */\n\tupdateLink: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Book_Links.errorWrap.empty().hide();\n\n\t\tlet wrap = button.closest( '.bdb-book-link' );\n\n\t\tlet args = {\n\t\t\tretailer_id: wrap.find( '.bdb-book-link-retailer' ).val(),\n\t\t\turl: wrap.find( '.bdb-book-link-url' ).val()\n\t\t};\n\n\t\tapiRequest( 'v1/book-link/update/' + wrap.data( 'id' ), args, 'POST' ).then( function( apiResponse ) {\n\t\t\tunspinButton( button );\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Book_Links.errorWrap.append( errorMessage ).show();\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Delete a link\n\t *\n\t * @param e\n\t */\n\tdeleteLink: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tif ( ! confirm( bdbVars.confirm_delete_book_link ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Book_Links.errorWrap.empty().hide();\n\n\t\tlet wrap = button.closest( '.bdb-book-link' );\n\n\t\tif ( BDB_Book_Links.bookID ) {\n\t\t\tapiRequest( 'v1/book-link/delete/' + wrap.data( 'id' ), {}, 'DELETE' ).then( function ( apiResponse ) {\n\t\t\t\twrap.remove();\n\t\t\t} ).catch( function ( errorMessage ) {\n\t\t\t\tBDB_Book_Links.errorWrap.append( errorMessage ).show();\n\t\t\t\tunspinButton( button );\n\t\t\t} );\n\t\t} else {\n\t\t\twrap.remove();\n\t\t}\n\n\t}\n\n};\n\nexport { BDB_Book_Links }","/* global $, bdbVars, wp */\n\n/**\n * Category style checkboxes\n */\nvar BDB_Categories = {\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\n\t\t$( '.bdb-new-checkbox-term' ).on( 'click', '.button', this.addCheckboxTerm );\n\t\t$( '.bdb-new-checkbox-term-value' ).on( 'keypress', this.addCheckboxTerm );\n\n\t},\n\n\taddCheckboxTerm: function ( e ) {\n\n\t\tif ( 'click' === e.type ) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif ( 'keypress' === e.type && 13 !== e.which ) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tlet wrap = $( this ).closest( '.bdb-taxonomy-checkboxes' ),\n\t\t\tcheckboxName = wrap.data( 'name' ),\n\t\t\tcheckboxTaxonomy = wrap.data( 'taxonomy' ),\n\t\t\tcheckboxWrap = wrap.find( '.bdb-checkbox-wrap' ),\n\t\t\tnewTerm = wrap.find( '.bdb-new-checkbox-term-value' ),\n\t\t\telID = BDB_Categories.createID( newTerm.val(), checkboxTaxonomy + '-' );\n\n\t\tcheckboxWrap.append( '' );\n\n\t\tnewTerm.val( '' );\n\n\t},\n\n\tcreateID: function ( value, prefix ) {\n\n\t\treturn value.replace( /[^a-z0-9]/g, function( s ) {\n\t\t\tlet c = s.charCodeAt( 0 );\n\n\t\t\tif ( 32 === c ) {\n\t\t\t\treturn '-';\n\t\t\t}\n\n\t\t\tif ( c >= 65 && c <= 90 ) {\n\t\t\t\treturn prefix + s.toLowerCase();\n\t\t\t}\n\n\t\t\treturn prefix + ( '000' + c.toString( 16 ) ).slice( -4 );\n\t\t} );\n\n\t}\n\n};\n\nexport { BDB_Categories }","/* global $, bdbVars, wp */\n\n/**\n * Confirmation when deleting objects\n */\nvar BDB_Delete_Objects = {\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\t\t$( '.bdb-delete-item' ).on( 'click', this.confirm );\n\t},\n\n\t/**\n\t * Confirm deleting the item\n\t *\n\t * @param e\n\t * @returns {boolean}\n\t */\n\tconfirm: function( e ) {\n\t\tlet type = $( this ).data( 'object' );\n\t\tlet message = bdbVars['confirm_delete_' + type];\n\n\t\tif ( ! confirm( message ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n};\n\nexport { BDB_Delete_Objects }","/* global $, bdbVars, wp, ajaxurl */\n\nimport { ajaxRequest, spinButton, unspinButton } from 'utils';\n\n/**\n * License Key\n */\nvar BDB_License = {\n\n\tresponseWrap: false,\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\n\t\tthis.responseWrap = $( '#bdb-license-key-response' );\n\n\t\t$( '#bdb-activate-license-key' ).on( 'click', this.activate );\n\t\t$( '#bdb-deactivate-license-key' ).on( 'click', this.deactivate );\n\t\t$( '#bdb-refresh-license-key' ).on( 'click', this.refresh );\n\n\t},\n\n\t/**\n\t * Activate a license key\n\t *\n\t * @param e\n\t */\n\tactivate: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_License.responseWrap.empty().removeClass( 'bdb-notice bdb-notice-error' );\n\n\t\tlet args = {\n\t\t\taction: 'bdb_activate_license_key',\n\t\t\tlicense_key: $( '#bdb-license-key' ).val(),\n\t\t\tnonce: button.data( 'nonce' )\n\t\t};\n\n\t\tajaxRequest( args ).then( function( apiResponse ) {\n\n\t\t\tBDB_License.responseWrap.empty().addClass( 'bdb-notice bdb-notice-success' ).append( apiResponse );\n\t\t\t$( '#bdb-activate-license-key' ).remove();\n\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_License.responseWrap.empty().addClass( 'bdb-notice bdb-notice-error' ).append( errorMessage );\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Deactivate a license key\n\t *\n\t * @param e\n\t */\n\tdeactivate: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_License.responseWrap.empty().removeClass( 'bdb-notice bdb-notice-error' );\n\n\t\tlet args = {\n\t\t\taction: 'bdb_deactivate_license_key',\n\t\t\tlicense_key: $( '#bdb-license-key' ).val(),\n\t\t\tnonce: button.data( 'nonce' )\n\t\t};\n\n\t\tajaxRequest( args ).then( function( apiResponse ) {\n\n\t\t\tBDB_License.responseWrap.empty().addClass( 'bdb-notice bdb-notice-success' ).append( apiResponse );\n\t\t\t$( '#bdb-deactivate-license-key' ).remove();\n\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_License.responseWrap.empty().addClass( 'bdb-notice bdb-notice-error' ).append( errorMessage );\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Refresh the license key status\n\t *\n\t * @param e\n\t */\n\trefresh: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this ),\n\t\t\twrap = button.parent().find( '.description' );\n\n\t\tspinButton( button );\n\t\tBDB_License.responseWrap.empty().removeClass( 'bdb-notice bdb-notice-error' );\n\n\t\tlet args = {\n\t\t\taction: 'bdb_refresh_license_key',\n\t\t\tlicense_key: $( '#bdb-license-key' ).val(),\n\t\t\tnonce: button.data( 'nonce' )\n\t\t};\n\n\t\tajaxRequest( args ).then( function( apiResponse ) {\n\n\t\t\twrap.empty().append( apiResponse );\n\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_License.responseWrap.empty().addClass( 'bdb-notice bdb-notice-error' ).append( errorMessage );\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t}\n\n};\n\nexport { BDB_License }","/* global $, bdbVars, wp */\n\n/**\n * Interface with the WP media modal\n */\nvar BDB_Media = {\n\n\tframe: false,\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\t\t$( '.bdb-upload-image' ).on( 'click', this.createFrame );\n\t\t$( '.bdb-remove-image' ).on( 'click', this.removeImage );\n\t},\n\n\t/**\n\t * Create and open the media frame\n\t *\n\t * @param e\n\t */\n\tcreateFrame: function( e ) {\n\t\te.preventDefault();\n\n\t\tlet button = $( this ),\n\t\t\timageField = $( this ).parent().data( 'image' ),\n\t\t\timageIDField = $( this ).parent().data( 'image-id' ),\n\t\t\timageSize = $( this ).parent().data( 'image-size' );\n\n\t\tif ( ! imageSize || 'undefined' === typeof imageSize ) {\n\t\t\timageSize = 'medium';\n\t\t}\n\n\t\t// Create the media frame.\n\t\tBDB_Media.frame = wp.media.frames.bookDB = wp.media( {\n\t\t\ttitle: button.data( 'choose' ),\n\t\t\tbutton: {\n\t\t\t\ttext: button.data( 'update' )\n\t\t\t},\n\t\t\tstates: [\n\t\t\t\tnew wp.media.controller.Library( {\n\t\t\t\t\ttitle: button.data( 'choose' ),\n\t\t\t\t\tfilterable: 'all',\n\t\t\t\t\tmultiple: false\n\t\t\t\t} )\n\t\t\t]\n\t\t} );\n\n\t\t// When an image is selected, run a callback.\n\t\tBDB_Media.frame.on( 'select', function() {\n\t\t\tlet selection = BDB_Media.frame.state().get( 'selection' );\n\n\t\t\tselection.map( function( attachment ) {\n\t\t\t\tattachment = attachment.toJSON();\n\n\t\t\t\tif ( attachment.id ) {\n\t\t\t\t\t$( imageIDField ).val( attachment.id );\n\n\t\t\t\t\tlet attachmentImage = attachment.sizes && attachment.sizes[imageSize] ? attachment.sizes[imageSize].url : attachment.url;\n\n\t\t\t\t\t// Remove all image attributes.\n\t\t\t\t\tif ( 'undefined' !== typeof $( imageField ).attributes ) {\n\t\t\t\t\t\twhile ( $( imageField ).attributes.length > 0 ) {\n\t\t\t\t\t\t\telem.removeAttribute( elem.attributes[0].name );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update image src and alt text, then show image.\n\t\t\t\t\t$( imageField ).attr( 'src', attachmentImage ).attr( 'alt', attachment.alt ).show();\n\n\t\t\t\t\t// Show remove button.\n\t\t\t\t\tbutton.parent().find( '.bdb-remove-image' ).show();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\t// Finally, open the modal.\n\t\tBDB_Media.frame.open();\n\t},\n\n\t/**\n\t * Remove the chosen image\n\t *\n\t * @param e\n\t */\n\tremoveImage: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this ),\n\t\t\timageField = button.parent().data( 'image' ),\n\t\t\timageIDField = button.parent().data( 'image-id' );\n\n\t\t// Remove image attributes and hide.\n\t\tif ( 'undefined' !== typeof $( imageField ).attributes ) {\n\t\t\twhile ( $( imageField ).attributes.length > 0 ) {\n\t\t\t\telem.removeAttribute( elem.attributes[0].name );\n\t\t\t}\n\t\t}\n\n\t\t$( imageField ).hide();\n\n\t\t// Delete image ID value.\n\t\t$( imageIDField ).val( '' );\n\n\t\t// Now hide the remove button.\n\t\tbutton.hide();\n\n\t}\n\n};\n\nexport { BDB_Media }","/* global $, bdbVars, wp */\n\nimport { apiRequest, spinButton, unspinButton } from 'utils';\nimport { dateLocalToUTC, dateUTCtoLocal } from \"./dates\";\nimport { fillEditionsDropdown } from \"./editions\";\n\n/**\n * Editions\n */\nvar BDB_Reading_Logs = {\n\n\tbookID: 0,\n\n\tuserID: 0,\n\n\tmaxPages: 0,\n\n\ttableBody: false,\n\n\trowTemplate: wp.template( 'bdb-reading-logs-table-row' ),\n\n\trowEmptyTemplate: wp.template( 'bdb-reading-logs-table-row-empty' ),\n\n\terrorWrap: '',\n\n\tuserFilter: false,\n\n\teditions: [],\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\n\t\tthis.bookID = $( '#bdb-book-id' ).val();\n\t\tthis.userID = $( '#bdb-book-reading-logs-list' ).data( 'user-id' );\n\t\tthis.tableBody = $( '#bdb-book-reading-logs-list .wp-list-table tbody' );\n\t\tthis.errorWrap = $( '#bdb-reading-logs-errors' );\n\t\tthis.userFilter = $( '#bdb-book-reading-logs-user-filter' );\n\n\t\tif ( ! this.tableBody.length || 'undefined' === typeof this.bookID || ! this.bookID ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.maxPages = $( '#bdb-book-pages' ).val();\n\t\t$( '#bdb-add-reading-log' ).on( 'click', this.toggleNewLogFields );\n\t\t$( '#bdb-submit-new-reading-log' ).on( 'click', this.addLog );\n\t\t$( document ).on( 'click', '.bdb-reading-log-toggle-editable', this.toggleEditableFields );\n\t\t$( document ).on( 'click', '.bdb-reading-log-percentage-complete .bdb-input-suffix', this.toggleCompleteUnit );\n\t\t$( document ).on( 'click', '.bdb-update-reading-log', this.updateLog );\n\t\t$( document ).on( 'click', '.bdb-remove-reading-log', this.removeLog );\n\n\t\tthis.userFilter.on( 'change', this.getLogs );\n\t\tthis.userFilter.trigger( 'change' );\n\n\t\t// Update editions array.\n\t\t$( document ).on( 'bdb_edition_added', this.updateEditions );\n\n\t},\n\n\t/**\n\t * Set up the object for use in the template\n\t *\n\t * - Convert UTC dates to local\n\t * - Set up the percentage for display (0 - 100)\n\t *\n\t * @param {object} readingLog\n\t * @returns {object}\n\t */\n\tshapeObject: function( readingLog ) {\n\t\treadingLog.date_started_formatted = dateUTCtoLocal( readingLog.date_started, 'display' );\n\t\treadingLog.date_started = dateUTCtoLocal( readingLog.date_started );\n\t\treadingLog.date_finished_formatted = dateUTCtoLocal( readingLog.date_finished, 'display' );\n\t\treadingLog.date_finished = dateUTCtoLocal( readingLog.date_finished );\n\t\treadingLog.percentage_complete = ( readingLog.percentage_complete * 100 ).toFixed( 0 );\n\t\treadingLog.rating = null === readingLog.rating ? null : parseFloat( readingLog.rating );\n\t\treadingLog.rating_formatted = null === readingLog.rating ? null : parseFloat( readingLog.rating ) + ' ' + bdbVars.stars;\n\n\t\treturn readingLog;\n\t},\n\n\t/**\n\t * Load editions\n\t *\n\t * @returns {Promise}\n\t */\n\tloadEditions: function () {\n\t\treturn apiRequest( 'v1/edition', { book_id: BDB_Reading_Logs.bookID, number: 50 }, 'GET' );\n\t},\n\n\t/**\n\t * Get the reading logs\n\t */\n\tgetLogs: function() {\n\n\t\tlet args = {\n\t\t\tbook_id: BDB_Reading_Logs.bookID,\n\t\t\tnumber: 50\n\t\t};\n\n\t\tif ( $( '#bdb-book-reading-logs-user-filter' ).prop( 'checked' ) ) {\n\t\t\targs.user_id = BDB_Reading_Logs.userID;\n\t\t}\n\n\t\tBDB_Reading_Logs.loadEditions().then( function( editions ) {\n\t\t\tBDB_Reading_Logs.editions = editions;\n\n\t\t\t// Populate editions in \"New Log\".\n\t\t\tif ( BDB_Reading_Logs.editions.length ) {\n\t\t\t\tconst selectEditionWrap = $( '#bdb-new-log-edition-id-wrap' );\n\t\t\t\tconst selectEditionDropdown = $( '#bdb-new-log-edition-id' );\n\n\t\t\t\tselectEditionDropdown.empty().append( '' );\n\n\t\t\t\t$.each( BDB_Reading_Logs.editions, function( key, edition ) {\n\t\t\t\t\tselectEditionDropdown.append( '' );\n\t\t\t\t} );\n\n\t\t\t\tselectEditionWrap.show();\n\t\t\t}\n\n\t\t\treturn apiRequest( 'v1/reading-log', args, 'GET' );\n\t\t} ).then( function( response ) {\n\n\t\t\tBDB_Reading_Logs.tableBody.empty();\n\n\t\t\tif ( 0 === response.length || 'undefined' === typeof response.length ) {\n\t\t\t\tBDB_Reading_Logs.tableBody.append( BDB_Reading_Logs.rowEmptyTemplate );\n\t\t\t} else {\n\t\t\t\t$( '#bdb-book-reading-logs-empty' ).remove();\n\t\t\t\t$.each( response, function( key, readingLog ) {\n\t\t\t\t\treadingLog = BDB_Reading_Logs.shapeObject( readingLog );\n\n\t\t\t\t\tBDB_Reading_Logs.tableBody.append( BDB_Reading_Logs.rowTemplate( readingLog ) );\n\t\t\t\t} );\n\n\t\t\t\tBDB_Reading_Logs.tableBody.find( '.bdb-book-edition-list' ).each( function() {\n\t\t\t\t\tfillEditionsDropdown( $( this ), BDB_Reading_Logs.editions );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t$( document ).trigger( 'bdb_reading_logs_loaded' );\n\n\t\t} ).catch( function( error ) {\n\t\t\tBDB_Reading_Logs.errorWrap.empty().append( error ).show();\n\t\t} );\n\n\t},\n\n\t/**\n\t * Toggle the new log fields\n\t *\n\t * @param e\n\t */\n\ttoggleNewLogFields: function ( e ) {\n\n\t\tif ( 'undefined' !== typeof e ) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\t$( '#bdb-new-reading-log-fields' ).slideToggle();\n\n\t},\n\n\t/**\n\t * Add a new reading log\n\t *\n\t * @param e\n\t */\n\taddLog: function ( e ) {\n\n\t\te.preventDefault();\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Reading_Logs.errorWrap.empty().hide();\n\n\t\tlet percentage = $( '#bdb-new-log-percent-complete' ).val();\n\t\tif ( '' !== percentage && percentage > 0 ) {\n\t\t\tpercentage = percentage / 100;\n\t\t} else {\n\t\t\tpercentage = 0;\n\t\t}\n\n\t\tconst selectedEditionID = $( '#bdb-new-log-edition-id' ).val();\n\n\t\tlet args = {\n\t\t\tbook_id: BDB_Reading_Logs.bookID,\n\t\t\tedition_id: selectedEditionID.length > 0 ? selectedEditionID : null,\n\t\t\tuser_id: BDB_Reading_Logs.userID,\n\t\t\tdate_started: dateLocalToUTC( $( '#bdb-new-log-start-date' ).val() ),\n\t\t\tdate_finished: dateLocalToUTC( $( '#bdb-new-log-end-date' ).val() ),\n\t\t\tpercentage_complete: percentage,\n\t\t\trating: $( '#bdb-new-log-rating' ).val()\n\t\t};\n\n\t\tapiRequest( 'v1/reading-log/add', args, 'POST' ).then( function( apiResponse ) {\n\t\t\tapiResponse = BDB_Reading_Logs.shapeObject( apiResponse );\n\n\t\t\t$( '#bdb-book-reading-logs-empty' ).remove();\n\n\t\t\tBDB_Reading_Logs.tableBody.append( BDB_Reading_Logs.rowTemplate( apiResponse ) );\n\n\t\t\tconst editionDropdown = $( '#bdb-reading-log-edition-id-' + apiResponse.id );\n\t\t\tif ( editionDropdown.length ) {\n\t\t\t\tfillEditionsDropdown( editionDropdown, BDB_Reading_Logs.editions );\n\t\t\t}\n\n\t\t\t// Wipe new field values.\n\t\t\tlet newFieldsWrap = $( '#bdb-new-reading-log-fields' );\n\t\t\tnewFieldsWrap.find( 'input[type=\"text\"]' ).val( '' );\n\t\t\tnewFieldsWrap.find( 'input[type=\"checkbox\"]' ).prop( 'checked', false );\n\n\t\t\tBDB_Reading_Logs.toggleNewLogFields();\n\n\t\t\t// Trigger event\n\t\t\t$( document ).trigger( 'bdb_reading_log_added', apiResponse );\n\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Reading_Logs.errorWrap.append( errorMessage ).show();\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Toggle the editable reading log fields\n\t *\n\t * @param e\n\t */\n\ttoggleEditableFields: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\t\tlet wrap = button.closest( 'tr' );\n\n\t\twrap.find( '.bdb-table-display-value' ).hide();\n\t\twrap.find( '.bdb-table-edit-value' ).show();\n\n\t\tbutton.removeClass( 'bdb-reading-log-toggle-editable' ).addClass( 'bdb-update-reading-log button-primary' ).text( bdbVars.save );\n\n\t},\n\n\t/**\n\t * Toggle the fields for the chosen unit (page vs percentage)\n\t *\n\t * @param e\n\t */\n\ttoggleCompleteUnit: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet wrap = $( this ).closest( '.bdb-reading-log-percentage-complete' );\n\t\tlet type = 'percentage';\n\n\t\tif ( $( this ).hasClass( 'bdb-input-suffix-page' ) ) {\n\t\t\ttype = 'page';\n\t\t}\n\n\t\t// Change which one is selected.\n\t\twrap.find( '.bdb-input-suffix' ).removeClass( 'bdb-input-suffix-selected' );\n\t\t$( this ).addClass( 'bdb-input-suffix-selected' );\n\n\t\t// Show/hide relevant inputs.\n\t\tif ( 'page' === type ) {\n\t\t\twrap.find( '.bdb-reading-log-percentage-complete-wrap' ).hide();\n\t\t\twrap.find( '.bdb-reading-log-page-wrap' ).show();\n\t\t} else {\n\t\t\twrap.find( '.bdb-reading-log-percentage-complete-wrap' ).show();\n\t\t\twrap.find( '.bdb-reading-log-page-wrap' ).hide();\n\t\t}\n\n\t},\n\n\t/**\n\t * Update a reading log\n\t *\n\t * @param e\n\t */\n\tupdateLog: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Reading_Logs.errorWrap.empty().hide();\n\n\t\tlet wrap = button.closest( 'tr' );\n\n\t\t// Figure out if we're working with page numbers or percentages.\n\t\tlet percentage = 0,\n\t\t\tunitType = 'percentage',\n\t\t\tselectedSuffix = wrap.find( '.bdb-input-suffix-selected' );\n\n\t\tif ( selectedSuffix.hasClass( 'bdb-input-suffix-page' ) ) {\n\t\t\tunitType = 'page';\n\t\t}\n\n\t\tif ( 'page' === unitType ) {\n\t\t\t// Page number.\n\t\t\tlet pageNumber = wrap.find( '.bdb-reading-log-page-wrap input' ).val();\n\t\t\tpercentage = ( BDB_Reading_Logs.maxPages > 0 ) ? pageNumber / BDB_Reading_Logs.maxPages : 0;\n\t\t} else {\n\t\t\t// Percentage.\n\t\t\tpercentage = wrap.find( '.bdb-reading-log-percentage-complete-wrap input' ).val();\n\t\t\tif ( '' !== percentage && percentage > 0 ) {\n\t\t\t\tpercentage = percentage / 100;\n\t\t\t} else {\n\t\t\t\tpercentage = 0;\n\t\t\t}\n\t\t}\n\n\t\tconst selectedEditionID = wrap.find( '.bdb-book-edition-list' ).val();\n\n\t\tlet args = {\n\t\t\tdate_started: dateLocalToUTC( wrap.find( '.bdb-reading-log-date-started input' ).val() ),\n\t\t\tdate_finished: dateLocalToUTC( wrap.find( '.bdb-reading-log-date-finished input' ).val() ),\n\t\t\tedition_id: selectedEditionID.length > 0 ? selectedEditionID : null,\n\t\t\tuser_id: wrap.find( '.bdb-reading-log-user-id input' ).val(),\n\t\t\tpercentage_complete: percentage,\n\t\t\trating: wrap.find( '.bdb-reading-log-rating select' ).val()\n\t\t};\n\n\t\tapiRequest( 'v1/reading-log/update/' + wrap.data( 'id' ), args, 'POST' ).then( function( apiResponse ) {\n\t\t\tapiResponse = BDB_Reading_Logs.shapeObject( apiResponse );\n\t\t\twrap.replaceWith( BDB_Reading_Logs.rowTemplate( apiResponse ) );\n\n\t\t\tconst editionDropdown = $( '#bdb-reading-log-edition-id-' + apiResponse.id );\n\t\t\tif ( editionDropdown.length ) {\n\t\t\t\tfillEditionsDropdown( editionDropdown, BDB_Reading_Logs.editions );\n\t\t\t}\n\n\t\t\t$( document ).trigger( 'bdb_reading_log_updated', apiResponse );\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Reading_Logs.errorWrap.append( errorMessage ).show();\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Delete an edition\n\t *\n\t * @param e\n\t * @returns {boolean}\n\t */\n\tremoveLog: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tif ( ! confirm( bdbVars.confirm_delete_reading_log ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Reading_Logs.errorWrap.empty().hide();\n\n\t\tlet wrap = button.closest( 'tr' );\n\n\t\tapiRequest( 'v1/reading-log/delete/' + wrap.data( 'id' ), {}, 'DELETE' ).then( function( apiResponse ) {\n\t\t\twrap.remove();\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Reading_Logs.errorWrap.append( errorMessage ).show();\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * When a new edition is added, insert it into our array\n\t *\n\t * @param e\n\t * @param {object} newEdition\n\t */\n\tupdateEditions: function ( e, newEdition ) {\n\t\tBDB_Reading_Logs.editions.push( newEdition );\n\t}\n\n};\n\nexport { BDB_Reading_Logs }","/* global $, bdbVars, wp */\n\nimport { apiRequest, spinButton, unspinButton } from 'utils';\n\n/**\n * Retailers\n */\nvar BDB_Retailers = {\n\n\ttableBody: false,\n\n\trowTemplate: wp.template( 'bdb-retailers-table-row' ),\n\n\trowEmptyTemplate: wp.template( 'bdb-retailers-table-row-empty' ),\n\n\terrorWrap: '',\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\n\t\tthis.tableBody = $( '#bdb-retailers tbody' );\n\t\tthis.errorWrap = $( '#bdb-retailers-errors' );\n\n\t\tif ( ! this.tableBody.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$( '#bdb-new-retailer-fields' ).on( 'keydown', 'input', this.clickOnEnter );\n\t\t$( '#bdb-new-retailer-fields' ).on( 'click', 'button', this.addRetailer );\n\t\t$( document ).on( 'click', '.bdb-update-retailer', this.updateRetailer );\n\t\t$( document ).on( 'click', '.bdb-remove-retailer', this.deleteRetailer );\n\n\t\tthis.getRetailers();\n\n\t},\n\n\t/**\n\t * Get the list of retailers\n\t */\n\tgetRetailers: function() {\n\n\t\tapiRequest( 'v1/retailer', { number: 50 }, 'GET' ).then( function( response ) {\n\n\t\t\tBDB_Retailers.tableBody.empty();\n\n\t\t\tif ( 0 === response.length || 'undefined' === typeof response.length ) {\n\t\t\t\tBDB_Retailers.tableBody.append( BDB_Retailers.rowEmptyTemplate );\n\t\t\t} else {\n\t\t\t\t$( '#bdb-retailers-empty' ).remove();\n\t\t\t\t$.each( response, function( key, taxonomy ) {\n\t\t\t\t\tBDB_Retailers.tableBody.append( BDB_Retailers.rowTemplate( taxonomy ) );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t} ).catch( function( error ) {\n\t\t\tBDB_Retailers.errorWrap.empty().append( error ).show();\n\t\t} );\n\n\t},\n\n\t/**\n\t * Trigger a button click when pressing `enter` inside an `` field.\n\t *\n\t * @param e\n\t */\n\tclickOnEnter: function ( e ) {\n\n\t\tif ( 13 === e.keyCode ) {\n\t\t\te.preventDefault();\n\n\t\t\t$( '#bdb-new-retailer-fields' ).find( 'button' ).trigger( 'click' );\n\t\t}\n\n\t},\n\n\t/**\n\t * Add a new retailer\n\t *\n\t * @param e\n\t */\n\taddRetailer: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Retailers.errorWrap.empty().hide();\n\n\t\tlet args = {\n\t\t\tname: $( '#bdb-new-retailer-name' ).val(),\n\t\t\ttemplate: $( '#bdb-new-retailer-template' ).val()\n\t\t};\n\n\t\tBDB_Retailers.checkRequiredFields( args ).then( function( requirementsResponse ) {\n\t\t\treturn apiRequest( 'v1/retailer/add', args, 'POST' );\n\t\t} ).then( function( apiResponse ) {\n\t\t\t$( '#bdb-retailers-empty' ).remove();\n\n\t\t\tBDB_Retailers.tableBody.append( BDB_Retailers.rowTemplate( apiResponse ) );\n\n\t\t\t// Wipe field values.\n\t\t\t$( '#bdb-newretailer-fields' ).find( 'input' ).val( '' );\n\n\t\t\tunspinButton( button );\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Retailers.errorWrap.append( errorMessage ).show();\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Update a retailer\n\t *\n\t * @param e\n\t */\n\tupdateRetailer: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Retailers.errorWrap.empty().hide();\n\n\t\tlet wrap = button.closest( 'tr' );\n\n\t\tlet args = {\n\t\t\tname: wrap.find( '.bdb-retailer-name input' ).val(),\n\t\t\ttemplate: wrap.find( '.bdb-retailer-template textarea' ).val()\n\t\t};\n\n\t\tBDB_Retailers.checkRequiredFields( args ).then( function( requirementsResponse ) {\n\t\t\treturn apiRequest( 'v1/retailer/update/' + wrap.data( 'id' ), args, 'POST' )\n\t\t} ).then( function( apiResponse ) {\n\t\t\tunspinButton( button );\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Retailers.errorWrap.append( errorMessage ).show();\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Delete a retailer\n\t *\n\t * @param e\n\t * @returns {boolean}\n\t */\n\tdeleteRetailer: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this ),\n\t\t\tunconfirmed = false;\n\n\t\tspinButton( button );\n\t\tBDB_Retailers.errorWrap.empty().hide();\n\n\t\tlet wrap = button.closest( 'tr' ),\n\t\t\tretailerID = wrap.data( 'id' ),\n\t\t\tconfirmMessage = bdbVars.confirm_delete_retailer;\n\t\t\n\t\tapiRequest( 'v1/book-link', { retailer_id: retailerID, number: 1 }, 'GET' ).then( function( purchaseLinks ) {\n\n\t\t\tif ( 'undefined' !== typeof purchaseLinks && 'undefined' !== typeof purchaseLinks.length && purchaseLinks.length > 0 ) {\n\t\t\t\tconfirmMessage = bdbVars.confirm_delete_retailer_links;\n\t\t\t}\n\n\t\t\tif ( ! confirm( confirmMessage ) ) {\n\t\t\t\tunconfirmed = true;\n\t\t\t\tthrow Error();\n\t\t\t}\n\n\t\t\treturn apiRequest( 'v1/retailer/delete/' + retailerID, {}, 'DELETE' );\n\n\t\t} ).then( function( apiResponse ) {\n\t\t\twrap.remove();\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tif ( ! unconfirmed ) {\n\t\t\t\tBDB_Retailers.errorWrap.append( errorMessage ).show();\n\t\t\t}\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Check required fields are filled out\n\t *\n\t * @param {object} args\n\t * @returns {Promise}\n\t */\n\tcheckRequiredFields: function( args ) {\n\n\t\treturn new Promise( function( resolve, reject ) {\n\n\t\t\tif ( ! args.hasOwnProperty( 'name' ) || '' === args.name ) {\n\t\t\t\treject( bdbVars.error_required_fields );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve();\n\n\t\t} );\n\n\t}\n\n};\n\nexport { BDB_Retailers }","/* global $, bdbVars, wp */\n\n/**\n * Autocomplete for tags\n */\nvar BDB_Tags = {\n\n\ttag: false,\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\n\t\tthis.tag = $( '.bdb-ajaxtag' );\n\n\t\tif ( ! this.tag.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$( '.bdb-tags-wrap' ).each( function() {\n\t\t\tBDB_Tags.quickClicks( $( this ) );\n\t\t} );\n\n\t\t$( '.button', BDB_Tags.tag ).on( 'click', function() {\n\t\t\tBDB_Tags.flushTags( $( this ).closest( '.bdb-tags-wrap' ) );\n\t\t} );\n\n\t\tBDB_Tags.tag.each( function() {\n\t\t\tlet newTag = $( '.bdb-new-tag', $( this ) );\n\t\t\tlet taxonomy = $( this ).closest( '.bdb-tags-wrap' ).data( 'taxonomy' );\n\t\t\tlet apiURL = bdbVars.api_base + 'book-database/v1/book-term/suggest/?taxonomy=' + taxonomy + '&format=text&_wpnonce=' + bdbVars.api_nonce;\n\n\t\t\tif ( 'author' === taxonomy ) {\n\t\t\t\tapiURL = bdbVars.api_base + 'book-database/v1/author/suggest/?format=text&_wpnonce=' + bdbVars.api_nonce;\n\t\t\t}\n\n\t\t\tnewTag.on( 'keyup', function( e ) {\n\t\t\t\tif ( 13 === e.which ) {\n\t\t\t\t\tBDB_Tags.flushTags( $( this ).closest( '.bdb-tags-wrap' ) );\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} ).on( 'keypress', function( e ) {\n\t\t\t\tif ( 13 === e.which ) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} ).suggest( apiURL );\n\t\t} );\n\n\t\t$( '#bdb-book-series-name' ).suggest( bdbVars.api_base + 'book-database/v1/series/suggest/?format=text&_wpnonce=' + bdbVars.api_nonce );\n\n\t\t// Save tags on save/publish\n\t\t$( '.bdb-admin-page > form' ).on( 'submit', function( e ) {\n\t\t\t$( '.bdb-tags-wrap' ).each( function() {\n\t\t\t\tBDB_Tags.flushTags( this, false, 1 );\n\t\t\t} );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Clean tags\n\t *\n\t * @param tags\n\t */\n\tclean: function ( tags ) {\n\t\treturn tags.replace( /\\s*,\\s*/g, ',' ).replace( /,+/g, ',' ).replace( /[,\\s]+$/, '' ).replace( /^[,\\s]+/, '' );\n\t},\n\n\t/**\n\t * Parse tags\n\t *\n\t * @param el\n\t */\n\tparseTags: function ( el ) {\n\n\t\tlet id = el.id;\n\t\tlet num = id.split( '-check-num-' )[ 1 ];\n\t\tlet tagBox = $( el ).closest( '.bdb-tags-wrap' );\n\t\tlet theTags = tagBox.find( 'textarea' );\n\t\tlet currentTags = theTags.val().split( ',' );\n\t\tlet newTags = [];\n\n\t\tdelete currentTags[ num ];\n\n\t\t$.each( currentTags, function ( key, val ) {\n\t\t\tval = $.trim( val );\n\n\t\t\tif ( val ) {\n\t\t\t\tnewTags.push( val );\n\t\t\t}\n\t\t} );\n\n\t\ttheTags.val( BDB_Tags.clean( newTags.join( ',' ) ) );\n\n\t\tBDB_Tags.quickClicks( tagBox );\n\n\t\treturn false;\n\n\t},\n\n\t/**\n\t * Handles adding tags\n\t *\n\t * @param el\n\t */\n\tquickClicks: function ( el ) {\n\n\t\tlet theTags = $( 'textarea', el );\n\t\tlet tagChecklist = $( '.bdb-tags-checklist', el );\n\t\tlet id = $( el ).attr( 'id' );\n\t\tlet currentTags;\n\t\tlet disabled;\n\n\t\tif ( ! theTags.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdisabled = theTags.prop( 'disabled' );\n\t\tcurrentTags = theTags.val().split( ',' );\n\t\ttagChecklist.empty();\n\n\t\t$.each( currentTags, function( key, val ) {\n\t\t\tlet span, xbutton;\n\n\t\t\tval = $.trim( val );\n\n\t\t\tif ( ! val ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Create a new span and ensure the text is properly escaped.\n\t\t\tspan = $( '' ).text( val );\n\n\t\t\t// If tags editing isn't disabled, create the X button.\n\t\t\tif ( ! disabled ) {\n\t\t\t\txbutton = $( 'X' );\n\t\t\t\txbutton.on( 'click', function( e ) {\n\t\t\t\t\tBDB_Tags.parseTags( this );\n\t\t\t\t} );\n\t\t\t\tspan.prepend( ' ' ).prepend( xbutton );\n\t\t\t}\n\n\t\t\t// Append the span to the tag list.\n\t\t\ttagChecklist.append( span );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Flush tags on add tag and save\n\t *\n\t * @param el\n\t * @param a\n\t * @param f\n\t */\n\tflushTags: function ( el, a, f ) {\n\n\t\ta = a || false;\n\n\t\tlet text;\n\t\tlet tags = $( 'textarea', el );\n\t\tlet newTag = $( '.bdb-new-tag', el );\n\t\tlet tagsVal, newTags;\n\n\t\ttext = a ? ( a ).text() : newTag.val();\n\n\t\ttagsVal = tags.val();\n\t\tnewTags = tagsVal ? tagsVal + ',' + text : text;\n\n\t\tnewTags = BDB_Tags.clean( newTags );\n\t\tnewTags = BDB_Tags.uniqueArray( newTags.split( ',' ) ).join( ',' );\n\n\t\ttags.val( newTags );\n\t\tBDB_Tags.quickClicks( el );\n\n\t\tif ( ! a ) {\n\t\t\tnewTag.val( '' );\n\t\t}\n\n\t\tif ( 'undefined' === typeof( f ) ) {\n\t\t\tnewTag.focus();\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\t/**\n\t * Create a unique array with no empty values\n\t *\n\t * @param {array} array\n\t *\n\t * @returns {array}\n\t */\n\tuniqueArray: function ( array ) {\n\n\t\tlet out = [];\n\n\t\t$.each( array, function( key, val ) {\n\t\t\tval = $.trim( val );\n\n\t\t\tif ( val && -1 === $.inArray( val, out ) ) {\n\t\t\t\tout.push( val );\n\t\t\t}\n\t\t} );\n\n\t\treturn out;\n\n\t}\n\n};\n\nexport { BDB_Tags }","/* global $, bdbVars, wp */\n\nimport { apiRequest, spinButton, unspinButton } from 'utils';\n\n/**\n * Book Taxonomies\n */\nvar BDB_Book_Taxonomies = {\n\n\ttableBody: false,\n\n\trowTemplate: wp.template( 'bdb-taxonomies-table-row' ),\n\n\trowEmptyTemplate: wp.template( 'bdb-taxonomies-table-row-empty' ),\n\n\terrorWrap: '',\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\n\t\tthis.tableBody = $( '#bdb-book-taxonomies tbody' );\n\t\tthis.errorWrap = $( '#bdb-book-taxonomies-errors' );\n\n\t\tif ( ! this.tableBody.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$( '#bdb-new-book-taxonomy-name' ).on( 'keyup', this.generateSlug );\n\t\t$( '#bdb-new-book-taxonomy-fields' ).on( 'keydown', 'input', this.clickOnEnter );\n\t\t$( '#bdb-new-book-taxonomy-fields' ).on( 'click', '.button-primary', this.addTaxonomy );\n\t\t$( document ).on( 'click', '.bdb-update-book-taxonomy', this.updateTaxonomy );\n\t\t$( document ).on( 'click', '.bdb-remove-book-taxonomy', this.deleteTaxonomy );\n\n\t\tthis.getTaxonomies();\n\n\t},\n\n\t/**\n\t * Get the list of taxonomies\n\t */\n\tgetTaxonomies: function() {\n\n\t\tapiRequest( 'v1/taxonomy', { number: 50 }, 'GET' ).then( function( response ) {\n\n\t\t\tBDB_Book_Taxonomies.tableBody.empty();\n\n\t\t\tif ( 0 === response.length || 'undefined' === typeof response.length ) {\n\t\t\t\tBDB_Book_Taxonomies.tableBody.append( BDB_Book_Taxonomies.rowEmptyTemplate );\n\t\t\t} else {\n\t\t\t\t$( '#bdb-book-taxonomies-empty' ).remove();\n\t\t\t\t$.each( response, function( key, taxonomy ) {\n\t\t\t\t\tBDB_Book_Taxonomies.tableBody.append( BDB_Book_Taxonomies.rowTemplate( taxonomy ) );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t} ).catch( function( error ) {\n\t\t\tBDB_Book_Taxonomies.errorWrap.empty().append( error ).show();\n\t\t} );\n\n\t},\n\n\t/**\n\t * Automatically generate a slug from the name\n\t *\n\t * @param e\n\t */\n\tgenerateSlug: function ( e ) {\n\n\t\tlet name = $( '#bdb-new-book-taxonomy-name' ).val();\n\t\tlet slug = name.toLowerCase().replace( /[^a-z0-9_\\-]/g, '' );\n\n\t\t$( '#bdb-new-book-taxonomy-slug' ).val( slug );\n\n\t},\n\n\t/**\n\t * Trigger a button click when pressing `enter` inside an `` field.\n\t *\n\t * @param e\n\t */\n\tclickOnEnter: function ( e ) {\n\n\t\tif ( 13 === e.keyCode ) {\n\t\t\te.preventDefault();\n\n\t\t\t$( '#bdb-new-book-taxonomy-fields' ).find( 'button' ).trigger( 'click' );\n\t\t}\n\n\t},\n\n\t/**\n\t * Add a new taxonomy\n\t *\n\t * @param e\n\t */\n\taddTaxonomy: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Book_Taxonomies.errorWrap.empty().hide();\n\n\t\tlet args = {\n\t\t\tname: $( '#bdb-new-book-taxonomy-name' ).val(),\n\t\t\tslug: $( '#bdb-new-book-taxonomy-slug' ).val(),\n\t\t\tformat: $( '#bdb-new-book-taxonomy-format' ).val()\n\t\t};\n\n\t\tBDB_Book_Taxonomies.checkRequiredFields( args ).then( function( requirementsResponse ) {\n\t\t\treturn apiRequest( 'v1/taxonomy/add', args, 'POST' );\n\t\t} ).then( function( apiResponse ) {\n\t\t\t$( '#bdb-book-taxonomies-empty' ).remove();\n\n\t\t\tBDB_Book_Taxonomies.tableBody.append( BDB_Book_Taxonomies.rowTemplate( apiResponse ) );\n\n\t\t\t// Wipe field values.\n\t\t\t$( '#bdb-new-book-taxonomy-fields' ).find( 'input' ).val( '' );\n\n\t\t\tunspinButton( button );\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Book_Taxonomies.errorWrap.append( errorMessage ).show();\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Update a taxonomy\n\t *\n\t * @param e\n\t */\n\tupdateTaxonomy: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Book_Taxonomies.errorWrap.empty().hide();\n\n\t\tlet wrap = button.closest( 'tr' );\n\n\t\tlet args = {\n\t\t\tname: wrap.find( '.bdb-book-taxonomy-name input' ).val(),\n\t\t\tslug: wrap.find( '.bdb-book-taxonomy-slug input' ).val(),\n\t\t\tformat: wrap.find( '.bdb-book-taxonomy-format select' ).val()\n\t\t};\n\n\t\tBDB_Book_Taxonomies.checkRequiredFields( args ).then( function( requirementsResponse ) {\n\t\t\treturn apiRequest( 'v1/taxonomy/update/' + wrap.data( 'id' ), args, 'POST' )\n\t\t} ).then( function( apiResponse ) {\n\t\t\tunspinButton( button );\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Book_Taxonomies.errorWrap.append( errorMessage ).show();\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Delete a taxonomy\n\t *\n\t * @param e\n\t * @returns {boolean}\n\t */\n\tdeleteTaxonomy: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tif ( ! confirm( bdbVars.confirm_delete_taxonomy ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Book_Taxonomies.errorWrap.empty().hide();\n\n\t\tlet wrap = button.closest( 'tr' );\n\n\t\tapiRequest( 'v1/taxonomy/delete/' + wrap.data( 'id' ), {}, 'DELETE' ).then( function( apiResponse ) {\n\t\t\twrap.remove();\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Book_Taxonomies.errorWrap.append( errorMessage ).show();\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Check required fields are filled out\n\t *\n\t * @param {object} args\n\t * @returns {Promise}\n\t */\n\tcheckRequiredFields: function( args ) {\n\n\t\treturn new Promise( function( resolve, reject ) {\n\n\t\t\tif ( ! args.hasOwnProperty( 'name' ) || '' === args.name ) {\n\t\t\t\treject( bdbVars.error_required_fields );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! args.hasOwnProperty( 'slug' ) || '' === args.slug ) {\n\t\t\t\treject( bdbVars.error_required_fields );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! args.hasOwnProperty( 'format' ) || '' === args.format ) {\n\t\t\t\treject( bdbVars.error_required_fields );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve();\n\n\t\t} );\n\n\t}\n\n};\n\nexport { BDB_Book_Taxonomies };","/**\n * Admin Scripts\n *\n * @package book-database\n * @copyright Copyright (c) 2019, Ashley Gibson\n * @license GPL2+\n */\n\nimport { BDB_Book_Layout } from './modules/book-layout.js';\nimport { BDB_Book_Index_Title } from './modules/book-index-title';\nimport { BDB_Book_Links } from \"./modules/book-links\";\nimport { BDB_Categories } from \"./modules/categories\";\nimport { BDB_Datepicker } from \"./modules/datepicker\";\nimport { BDB_Delete_Objects } from \"./modules/delete-objects\";\nimport { BDB_Editions } from \"./modules/editions\";\nimport { BDB_License } from \"./modules/license\";\nimport { BDB_Media } from \"./modules/media-upload\";\nimport { BDB_Reading_Logs } from \"./modules/reading-logs\";\nimport { BDB_Retailers } from \"./modules/retailers\";\nimport { BDB_Tags } from './modules/tags';\nimport { BDB_Book_Taxonomies } from './modules/taxonomies.js';\n\n( function ( $ ) {\n\n\tBDB_Book_Layout.init();\n\tBDB_Book_Index_Title.init();\n\tBDB_Book_Links.init();\n\tBDB_Categories.init();\n\tBDB_Datepicker.init();\n\tBDB_Delete_Objects.init();\n\tBDB_Editions.init();\n\tBDB_License.init();\n\tBDB_Media.init();\n\tBDB_Reading_Logs.init();\n\tBDB_Retailers.init();\n\tBDB_Tags.init();\n\tBDB_Book_Taxonomies.init();\n\n} )( jQuery );","/* global $, bdbVars */\n\n/**\n * Spin a button\n *\n * - Disables the button\n * - Saves the current button text to `data-text`\n * - Changes the text to either a WP-Admin spinner or \"Please Wait...\"\n *\n * @param button\n */\nexport function spinButton( button ) {\n\n\tlet newText = bdbVars.is_admin ? '' : bdbVars.please_wait;\n\n\tbutton.prop( 'disabled', true ).data( 'text', button.text() ).html( newText );\n\n}\n\n/**\n * Unspin a button\n *\n * - Enables teh button\n * - Sets the text to the `data-text` attribute value\n *\n * @param button\n */\nexport function unspinButton( button ) {\n\tbutton.prop( 'disabled', false ).text( button.data( 'text' ) );\n}","/* global $, bdbVars */\n\n/**\n * Convert a numberical star rating into HTML stars\n *\n * @param rating\n * @returns {string}\n */\nexport function getStars( rating ) {\n\n\tlet html = '';\n\tlet fullStars = Math.floor( rating );\n\tlet halfStars = Math.ceil( rating - fullStars );\n\tlet fullStarString = '★';\n\tlet halfStarString = '½';\n\n\thtml += fullStarString.repeat( fullStars );\n\thtml += halfStarString.repeat( halfStars );\n\n\treturn html;\n\n}","module.exports = jQuery;","/* global $, bdbVars, moment */\n\nconst formatMySQL = 'YYYY-MM-DD HH:mm:ss';\nconst formatDisplay = 'MMMM D, YYYY';\n\n/**\n * Converts a UTC date string to local time in YYYY-mm-dd format.\n *\n * @param {string} utcDate\n * @param {string} format\n * @returns {string}\n */\nexport function dateUTCtoLocal( utcDate, format = 'mysql' ) {\n\n\tif ( '' === utcDate || ! utcDate) {\n\t\treturn '';\n\t}\n\n\tif ( 'display' === format ) {\n\t\tformat = formatDisplay;\n\t} else {\n\t\tformat = formatMySQL;\n\t}\n\n\tutcDate = moment.utc( utcDate );\n\n\t//console.log( 'UTC Date', utcDate );\n\n\tlet localDate = utcDate.local().format( format );\n\n\t//console.log( 'Local Date', localDate );\n\n\treturn localDate;\n\n}\n\n/**\n * Converts a local date string to UTC in YYYY-mm-dd format.\n *\n * @param {string} localDate\n * @returns {string}\n */\nexport function dateLocalToUTC( localDate ) {\n\n\tif ( '' === localDate || ! localDate ) {\n\t\treturn '';\n\t}\n\n\tlocalDate = moment( localDate );\n\n\t//console.log( 'Local Date', localDate );\n\n\tlet utcDate = localDate.utc().format( formatMySQL );\n\n\t//console.log( 'UTC Date', utcDate );\n\n\treturn utcDate;\n\n}","/* global $, bdbVars, ajaxurl */\n\n/**\n * Make a request to the REST API\n *\n * @param {string} endpoint\n * @param {object} data\n * @param {string} method\n * @returns {Promise}\n */\nexport function apiRequest( endpoint, data = {}, method = 'POST' ) {\n\tconst options = {\n\t\tmethod: method,\n\t\turl: bdbVars.api_base + 'book-database/' + endpoint,\n\t\tbeforeSend: function ( xhr ) {\n\t\t\txhr.setRequestHeader( 'X-WP-Nonce', bdbVars.api_nonce );\n\t\t},\n\t\txhrFields: {\n\t\t\twithCredentials: true,\n\t\t},\n\t\tdata: data\n\t};\n\n\t//console.log( 'API endpoint', endpoint );\n\n\treturn new Promise( function ( resolve, reject ) {\n\t\t$.ajax( options ).success( function ( response ) {\n\t\t\t//console.log( 'Success response', response );\n\t\t\tresolve( response );\n\t\t} ).error( function ( qpXHR, textStatus, errorThrown ) {\n\t\t\tlet error = bdbVars.generic_erroc;\n\n\t\t\tif ( 'undefined' !== typeof qpXHR.responseJSON ) {\n\t\t\t\terror = qpXHR.responseJSON;\n\n\t\t\t\tif ( 'undefined' !== typeof error.message ) {\n\t\t\t\t\terror = error.message;\n\t\t\t\t}\n\t\t\t} else if ( 'undefined' !== typeof qpXHR.message ) {\n\t\t\t\terror = qpXHR.message;\n\t\t\t}\n\n\t\t\treject( error );\n\t\t} );\n\t} );\n}\n\n/**\n * Make an ajax request\n *\n * @param {object} args\n * @returns {Promise}\n */\nexport function ajaxRequest( args ) {\n\n\tconst options = {\n\t\tmethod: 'POST',\n\t\tdataType: 'JSON',\n\t\turl: ajaxurl,\n\t\tdata: args\n\t};\n\n\treturn new Promise( function ( resolve, reject ) {\n\t\t$.ajax( options ).success( function ( response ) {\n\t\t\tif ( ! response.success ) {\n\t\t\t\t//console.log( 'Error response', response );\n\t\t\t\treject( response.data );\n\t\t\t} else {\n\t\t\t\t//console.log( 'Success response', response );\n\t\t\t\tresolve( response.data );\n\t\t\t}\n\t\t} ).error( function ( qpXHR, textStatus, errorThrown ) {\n\t\t\tlet error = bdbVars.generic_erroc;\n\n\t\t\tif ( 'undefined' !== typeof qpXHR.responseJSON ) {\n\t\t\t\terror = qpXHR.responseJSON;\n\n\t\t\t\tif ( 'undefined' !== typeof error.message ) {\n\t\t\t\t\terror = error.message;\n\t\t\t\t}\n\t\t\t} else if ( 'undefined' !== typeof qpXHR.message ) {\n\t\t\t\terror = qpXHR.message;\n\t\t\t}\n\n\t\t\treject( error );\n\t\t} );\n\t} );\n\n}","/* global $, bdbVars, wp */\n\nimport { apiRequest, spinButton, unspinButton } from 'utils';\nimport { dateLocalToUTC, dateUTCtoLocal } from \"./dates\";\n\n/**\n * Editions\n */\nvar BDB_Editions = {\n\n\tbookID: 0,\n\n\ttableBody: false,\n\n\trowTemplate: wp.template( 'bdb-editions-table-row' ),\n\n\trowEmptyTemplate: wp.template( 'bdb-editions-table-row-empty' ),\n\n\terrorWrap: '',\n\n\t/**\n\t * Initialize\n\t */\n\tinit: function() {\n\n\t\tthis.bookID = $( '#bdb-book-id' ).val();\n\t\tthis.tableBody = $( '#bdb-book-editions-list .wp-list-table tbody' );\n\t\tthis.errorWrap = $( '#bdb-editions-errors' );\n\n\t\tif ( ! this.tableBody.length || 'undefined' === typeof this.bookID || ! this.bookID ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$( '#bdb-add-edition' ).on( 'click', this.toggleNewEditionFields );\n\t\t$( '#bdb-submit-new-edition' ).on( 'click', this.addEdition );\n\t\t$( document ).on( 'click', '.bdb-edition-toggle-editable', this.toggleEditableFields );\n\t\t$( document ).on( 'click', '.bdb-update-edition', this.updateEdition );\n\t\t$( document ).on( 'click', '.bdb-remove-edition', this.removeEdition );\n\n\t\tthis.getEditions();\n\n\t},\n\n\t/**\n\t * Get the editions\n\t */\n\tgetEditions: function() {\n\n\t\tapiRequest( 'v1/edition', { book_id: BDB_Editions.bookID, number: 50 }, 'GET' ).then( function( response ) {\n\n\t\t\tBDB_Editions.tableBody.empty();\n\n\t\t\tif ( 0 === response.length || 'undefined' === typeof response.length ) {\n\t\t\t\tBDB_Editions.tableBody.append( BDB_Editions.rowEmptyTemplate );\n\t\t\t} else {\n\t\t\t\t$( '#bdb-book-editions-empty' ).remove();\n\t\t\t\t$.each( response, function( key, edition ) {\n\t\t\t\t\tedition.date_acquired_formatted = dateUTCtoLocal( edition.date_acquired, 'display' );\n\t\t\t\t\tedition.date_acquired = dateUTCtoLocal( edition.date_acquired );\n\n\t\t\t\t\tBDB_Editions.tableBody.append( BDB_Editions.rowTemplate( edition ) );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t$( document ).trigger( 'bdb_editions_loaded' );\n\n\t\t} ).catch( function( error ) {\n\t\t\tBDB_Editions.errorWrap.empty().append( error ).show();\n\t\t} );\n\n\t},\n\n\t/**\n\t * Toggle the new edition fields\n\t *\n\t * @param e\n\t */\n\ttoggleNewEditionFields: function ( e ) {\n\n\t\tif ( 'undefined' !== typeof e ) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\t$( '#bdb-new-edition-fields' ).slideToggle();\n\n\t},\n\n\t/**\n\t * Add a new edition\n\t *\n\t * @param e\n\t */\n\taddEdition: function ( e ) {\n\n\t\te.preventDefault();\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Editions.errorWrap.empty().hide();\n\n\t\tlet args = {\n\t\t\tbook_id: BDB_Editions.bookID,\n\t\t\tisbn: $( '#bdb-new-edition-isbn' ).val(),\n\t\t\tformat: $( '#bdb-new-edition-format' ).val(),\n\t\t\tdate_acquired: dateLocalToUTC( $( '#bdb-new-edition-date-acquired' ).val() ),\n\t\t\tsource_id: $( '#bdb-checkboxes-source-edition' ).find( 'input:checked' ).val(),\n\t\t\tsigned: $( '#bdb-new-edition-signed' ).prop( 'checked' ) ? 1 : 0\n\t\t};\n\n\t\tapiRequest( 'v1/edition/add', args, 'POST' ).then( function( apiResponse ) {\n\n\t\t\tapiResponse.date_acquired_formatted = dateUTCtoLocal( apiResponse.date_acquired, 'display' );\n\t\t\tapiResponse.date_acquired = dateUTCtoLocal( apiResponse.date_acquired );\n\n\t\t\t$( '#bdb-book-editions-empty' ).remove();\n\t\t\tBDB_Editions.tableBody.append( BDB_Editions.rowTemplate( apiResponse ) );\n\n\t\t\t// Wipe new field values.\n\t\t\tlet newFieldsWrap = $( '#bdb-new-edition-fields' );\n\t\t\tnewFieldsWrap.find( 'input[type=\"text\"]' ).val( '' );\n\t\t\tnewFieldsWrap.find( 'input[type=\"checkbox\"]' ).prop( 'checked', false );\n\n\t\t\tBDB_Editions.toggleNewEditionFields();\n\n\t\t\t// Add this edition to all dropdowns.\n\t\t\taddEditionToDropdown( apiResponse );\n\n\t\t\t// Trigger event.\n\t\t\t$( document ).trigger( 'bdb_edition_added', apiResponse );\n\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Editions.errorWrap.append( errorMessage ).show();\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Toggle the editable edition fields\n\t *\n\t * @param e\n\t */\n\ttoggleEditableFields: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\t\tlet wrap = button.closest( 'tr' );\n\n\t\twrap.find( '.bdb-table-display-value' ).hide();\n\t\twrap.find( '.bdb-table-edit-value' ).show();\n\n\t\tbutton.removeClass( 'bdb-edition-toggle-editable' ).addClass( 'bdb-update-edition button-primary' ).text( bdbVars.save );\n\n\t},\n\n\t/**\n\t * Update an edition\n\t *\n\t * @param e\n\t */\n\tupdateEdition: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Editions.errorWrap.empty().hide();\n\n\t\tlet wrap = button.closest( 'tr' );\n\n\t\tlet args = {\n\t\t\tisbn: wrap.find( '.bdb-edition-isbn input' ).val(),\n\t\t\tformat: wrap.find( '.bdb-edition-format select' ).val(),\n\t\t\tdate_acquired: dateLocalToUTC( wrap.find( '.bdb-edition-date-acquired input' ).val() ),\n\t\t\tsource_id: wrap.find( '.bdb-edition-source select' ).val(),\n\t\t\tsigned: wrap.find( '.bdb-edition-signed input[type=\"checkbox\"]' ).prop( 'checked' ) ? 1 : 0\n\t\t};\n\n\t\tapiRequest( 'v1/edition/update/' + wrap.data( 'id' ), args, 'POST' ).then( function( apiResponse ) {\n\n\t\t\tapiResponse.date_acquired_formatted = dateUTCtoLocal( apiResponse.date_acquired, 'display' );\n\t\t\tapiResponse.date_acquired = dateUTCtoLocal( apiResponse.date_acquired );\n\n\t\t\twrap.replaceWith( BDB_Editions.rowTemplate( apiResponse ) );\n\n\t\t\t// Update edition in dropdowns.\n\t\t\taddEditionToDropdown( apiResponse );\n\n\t\t\t$( document ).trigger( 'bdb_edition_updated', apiResponse );\n\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Editions.errorWrap.append( errorMessage ).show();\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t},\n\n\t/**\n\t * Delete an edition\n\t *\n\t * @param e\n\t * @returns {boolean}\n\t */\n\tremoveEdition: function ( e ) {\n\n\t\te.preventDefault();\n\n\t\tif ( ! confirm( bdbVars.confirm_delete_edition ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet button = $( this );\n\n\t\tspinButton( button );\n\t\tBDB_Editions.errorWrap.empty().hide();\n\n\t\tconst wrap = button.closest( 'tr' );\n\t\tconst editionID = wrap.data( 'id' );\n\n\t\tapiRequest( 'v1/edition/delete/' + editionID, {}, 'DELETE' ).then( function( apiResponse ) {\n\t\t\twrap.remove();\n\t\t\tremoveEditionFromDropdown( editionID );\n\t\t} ).catch( function( errorMessage ) {\n\t\t\tBDB_Editions.errorWrap.append( errorMessage ).show();\n\t\t} ).finally( function() {\n\t\t\tunspinButton( button );\n\t\t} );\n\n\t}\n\n};\n\nexport { BDB_Editions }\n\n/**\n *\n * Fill a provided