1jQuery(document).ready( function($){ 2 3 // backcompat changes 6.x to 5.x 4 if( $('#recurrence-frequency').length > 0 ){ 5 $('#recurrence-frequency').addClass('em-recurrence-frequency'); 6 $('.event-form-when .interval-desc').each( function(){ 7 this.classList.add(this.id); 8 }); 9 $('.event-form-when .alternate-selector').each( function(){ 10 this.classList.add('em-' + this.id); 11 }); 12 $('#recurrence-interval').addClass('em-recurrence-interval'); 13 } 14 $('#em-wrapper').addClass('em'); 15 16 17 var load_ui_css = false; //load jquery ui css? 18 /* Time Entry */ 19 $('#start-time').each(function(i, el){ 20 $(el).addClass('em-time-input em-time-start').next('#end-time').addClass('em-time-input em-time-end').parent().addClass('em-time-range'); 21 }); 22 if( $(".em-time-input").length > 0 ){ 23 em_setup_timepicker('body'); 24 } 25 26 /* 27 * ADMIN AREA AND PUBLIC FORMS (Still polishing this section up, note that form ids and classes may change accordingly) 28 */ 29 //Events List 30 //Approve/Reject Links 31 $('.events-table').on('click', '.em-event-delete', function(){ 32 if( !confirm("Are you sure you want to delete?") ){ return false; } 33 window.location.href = this.href; 34 }); 35 //Forms 36 $('#event-form #event-image-delete, #location-form #location-image-delete').on('click', function(){ 37 var el = $(this); 38 if( el.is(':checked') ){ 39 el.closest('.event-form-image, .location-form-image').find('#event-image-img, #location-image-img').hide(); 40 }else{ 41 el.closest('.event-form-image, .location-form-image').find('#event-image-img, #location-image-img').show(); 42 } 43 }); 44 //Event Editor 45 //Recurrence Date Patterns 46 $('.event-form-with-recurrence').each( function(){ 47 let recurring_form = $(this); 48 recurring_form.on('change', '.em-recurrence-checkbox', function(){ 49 if( this.checked ){ 50 recurring_form.find('.em-recurring-text').each( function(){ 51 this.style.removeProperty('display'); 52 }); 53 recurring_form.find('.em-event-text').each( function(){ 54 this.style.setProperty('display', 'none', 'important'); 55 }); 56 }else{ 57 recurring_form.find('.em-recurring-text').each( function(){ 58 this.style.setProperty('display', 'none', 'important'); 59 }); 60 recurring_form.find('.em-event-text').each( function(){ 61 this.style.removeProperty('display'); 62 }); 63 } 64 }); 65 }); 66 $('.event-form-with-recurrence .em-recurrence-checkbox').trigger('change'); 67 //Recurrence Warnings 68 $('#event-form.em-event-admin-recurring').on('submit', function(event){ 69 var form = $(this); 70 if( form.find('input[name="event_reschedule"]').first().val() == 1 ){ 71 var warning_text = EM.event_reschedule_warning; 72 }else if( form.find('input[name="event_recreate_tickets"]').first().val() == 1 ){ 73 var warning_text = EM.event_recurrence_bookings; 74 }else{ 75 var warning_text = EM.event_recurrence_overwrite; 76 } 77 confirmation = confirm(warning_text); 78 if( confirmation == false ){ 79 event.preventDefault(); 80 } 81 }); 82 //Buttons for recurrence warnings within event editor forms 83 $('.em-reschedule-trigger').on('click', function(e){ 84 e.preventDefault(); 85 var trigger = $(this); 86 trigger.closest('.em-recurrence-reschedule').find(trigger.data('target')).removeClass('reschedule-hidden'); 87 trigger.siblings('.em-reschedule-value').val(1); 88 trigger.addClass('reschedule-hidden').siblings('a').removeClass('reschedule-hidden'); 89 }); 90 $('.em-reschedule-cancel').on('click', function(e){ 91 e.preventDefault(); 92 var trigger = $(this); 93 trigger.closest('.em-recurrence-reschedule').find(trigger.data('target')).addClass('reschedule-hidden'); 94 trigger.siblings('.em-reschedule-value').val(0); 95 trigger.addClass('reschedule-hidden').siblings('a').removeClass('reschedule-hidden'); 96 }); 97 //Tickets & Bookings 98 if( $("#em-tickets-form").length > 0 ){ 99 //Enable/Disable Bookings 100 $('#event-rsvp').on('click', function(event){ 101 if( !this.checked ){ 102 confirmation = confirm(EM.disable_bookings_warning); 103 if( confirmation == false ){ 104 event.preventDefault(); 105 }else{ 106 $('#event-rsvp-options').hide(); 107 } 108 }else{ 109 $('#event-rsvp-options').fadeIn(); 110 } 111 }); 112 if($('input#event-rsvp').is(":checked")) { 113 $("div#rsvp-data").fadeIn(); 114 } else { 115 $("div#rsvp-data").hide(); 116 } 117 //Ticket(s) UI 118 var reset_ticket_forms = function(){ 119 $('#em-tickets-form table tbody tr.em-tickets-row').show(); 120 $('#em-tickets-form table tbody tr.em-tickets-row-form').hide(); 121 }; 122 //recurrences and cut-off logic for ticket availability 123 if( $('#em-recurrence-checkbox').length > 0 ){ 124 $('#em-recurrence-checkbox').on('change', function(){ 125 if( $('#em-recurrence-checkbox').is(':checked') ){ 126 $('#em-tickets-form .ticket-dates-from-recurring, #em-tickets-form .ticket-dates-to-recurring, #event-rsvp-options .em-booking-date-recurring').show(); 127 $('#em-tickets-form .ticket-dates-from-normal, #em-tickets-form .ticket-dates-to-normal, #event-rsvp-options .em-booking-date-normal, #em-tickets-form .hidden').hide(); 128 }else{ 129 $('#em-tickets-form .ticket-dates-from-normal, #em-tickets-form .ticket-dates-to-normal, #event-rsvp-options .em-booking-date-normal').show(); 130 $('#em-tickets-form .ticket-dates-from-recurring, #em-tickets-form .ticket-dates-to-recurring, #event-rsvp-options .em-booking-date-recurring, #em-tickets-form .hidden').hide(); 131 } 132 }).trigger('change'); 133 }else if( $('#em-form-recurrence').length > 0 ){ 134 $('#em-tickets-form .ticket-dates-from-recurring, #em-tickets-form .ticket-dates-to-recurring, #event-rsvp-options .em-booking-date-recurring').show(); 135 $('#em-tickets-form .ticket-dates-from-normal, #em-tickets-form .ticket-dates-to-normal, #event-rsvp-options .em-booking-date-normal, #em-tickets-form .hidden').hide(); 136 }else{ 137 $('#em-tickets-form .ticket-dates-from-recurring, #em-tickets-form .ticket-dates-to-recurring, #event-rsvp-options .em-booking-date-recurring, #em-tickets-form .hidden').hide(); 138 } 139 //Add a new ticket 140 $("#em-tickets-add").on('click', function(e){
141 e.preventDefault(); 142 reset_ticket_forms(); 143 //create copy of template slot, insert so ready for population 144 var tickets = $('#em-tickets-form table tbody'); 145 tickets.first('.em-ticket-template').find('input.em-date-input.flatpickr-input').each(function(){ 146 if( '_flatpickr' in this ){ 147 this._flatpickr.destroy(); 148 } 149 }); //clear all datepickers, should be done first time only, next times it'd be ignored 150 var rowNo = tickets.length+1; 151 var slot = tickets.first('.em-ticket-template').clone(true).attr('id','em-ticket-'+ rowNo).removeClass('em-ticket-template').addClass('em-ticket').appendTo($('#em-tickets-form table')); 152 //change the index of the form element names 153 slot.find('*[name]').each( function(index,el){ 154 el = $(el); 155 el.attr('name', el.attr('name').replace('em_tickets[0]','em_tickets['+rowNo+']')); 156 }); 157 // sort out until datepicker ids 158 let start_datepicker = slot.find('.ticket-dates-from-normal').first(); 159 if( start_datepicker.attr('data-until-id') ){ 160 let until_id = start_datepicker.attr('data-until-id').replace('-0', '-'+ rowNo); 161 start_datepicker.attr('data-until-id', until_id); 162 slot.find('.ticket-dates-to-normal').attr('id', start_datepicker.attr('data-until-id')); 163 164 } 165 //show ticket and switch to editor 166 slot.show().find('.ticket-actions-edit').trigger('click'); 167 //refresh datepicker and values 168 slot.find('.em-time-input').off().each(function(index, el){ 169 if( typeof this.em_timepickerObj == 'object' ){ 170 this.em_timepicker('remove'); 171 } 172 }); //clear all em_timepickers - consequently, also other click/blur/change events, recreate the further down 173 em_setup_datepicker(slot); 174 em_setup_timepicker(slot); 175 $('html, body').animate({ scrollTop: slot.offset().top - 30 }); //sends user to form 176 check_ticket_sortability(); 177 }); 178 //Edit a Ticket 179 $(document).on('click', '.ticket-actions-edit', function(e){ 180 e.preventDefault(); 181 reset_ticket_forms(); 182 var tbody = $(this).closest('tbody'); 183 tbody.find('tr.em-tickets-row').hide(); 184 tbody.find('tr.em-tickets-row-form').fadeIn(); 185 return false; 186 }); 187 $(document).on('click', '.ticket-actions-edited', function(e){ 188 e.preventDefault(); 189 var tbody = $(this).closest('tbody'); 190 var rowNo = tbody.attr('id').replace('em-ticket-',''); 191 tbody.find('.em-tickets-row').fadeIn(); 192 tbody.find('.em-tickets-row-form').hide(); 193 tbody.find('*[name]').each(function(index,el){ 194 el = $(el); 195 if( el.attr('name') == 'ticket_start_pub'){ 196 tbody.find('span.ticket_start').text(el.val()); 197 }else if( el.attr('name') == 'ticket_end_pub' ){ 198 tbody.find('span.ticket_end').text(el.val()); 199 }else if( el.attr('name') == 'em_tickets['+rowNo+'][ticket_type]' ){ 200 if( el.find(':selected').val() == 'members' ){ 201 tbody.find('span.ticket_name').prepend('* '); 202 } 203 }else if( el.attr('name') == 'em_tickets['+rowNo+'][ticket_start_recurring_days]' ){ 204 var text = tbody.find('select.ticket-dates-from-recurring-when').val() == 'before' ? '-'+el.val():el.val(); 205 if( el.val() != '' ){ 206 tbody.find('span.ticket_start_recurring_days').text(text); 207 tbody.find('span.ticket_start_recurring_days_text, span.ticket_start_time').removeClass('hidden').show(); 208 }else{ 209 tbody.find('span.ticket_start_recurring_days').text(' - '); 210 tbody.find('span.ticket_start_recurring_days_text, span.ticket_start_time').removeClass('hidden').hide(); 211 } 212 }else if( el.attr('name') == 'em_tickets['+rowNo+'][ticket_end_recurring_days]' ){ 213 var text = tbody.find('select.ticket-dates-to-recurring-when').val() == 'before' ? '-'+el.val():el.val(); 214 if( el.val() != '' ){ 215 tbody.find('span.ticket_end_recurring_days').text(text); 216 tbody.find('span.ticket_end_recurring_days_text, span.ticket_end_time').removeClass('hidden').show(); 217 }else{ 218 tbody.find('span.ticket_end_recurring_days').text(' - '); 219 tbody.find('span.ticket_end_recurring_days_text, span.ticket_end_time').removeClass('hidden').hide(); 220 } 221 }else{ 222 var classname = el.attr('name').replace('em_tickets['+rowNo+'][','').replace(']','').replace('[]',''); 223 tbody.find('.em-tickets-row .'+classname).text(el.val()); 224 } 225 }); 226 //allow for others to hook into this 227 $(document).triggerHandler('em_maps_tickets_edit', [tbody, rowNo, true]); 228 $('html, body').animate({ scrollTop: tbody.parent().offset().top - 30 }); //sends user back to top of form 229 return false; 230 }); 231 $(document).on('change', '.em-ticket-form select.ticket_type', function(e){
232 //check if ticket is for all users or members, if members, show roles to limit the ticket to 233 var el = $(this); 234 if( el.find('option:selected').val() == 'members' ){ 235 el.closest('.em-ticket-form').find('.ticket-roles').fadeIn(); 236 }else{ 237 el.closest('.em-ticket-form').find('.ticket-roles').hide(); 238 } 239 }); 240 $(document).on('click', '.em-ticket-form .ticket-options-advanced', function(e){ 241 //show or hide advanced tickets, hidden by default 242 e.preventDefault(); 243 var el = $(this); 244 if( el.hasClass('show') ){ 245 el.closest('.em-ticket-form').find('.em-ticket-form-advanced').fadeIn(); 246 el.find('.show,.show-advanced').hide(); 247 el.find('.hide,.hide-advanced').show(); 248 }else{ 249 el.closest('.em-ticket-form').find('.em-ticket-form-advanced').hide(); 250 el.find('.show,.show-advanced').show(); 251 el.find('.hide,.hide-advanced').hide(); 252 } 253 el.toggleClass('show'); 254 }); 255 $('.em-ticket-form').each( function(){ 256 //check whether to show advanced options or not by default for each ticket 257 var show_advanced = false; 258 var el = $(this); 259 el.find('.em-ticket-form-advanced input[type="text"]').each(function(){ if(this.value != '') show_advanced = true; }); 260 if( el.find('.em-ticket-form-advanced input[type="checkbox"]:checked').length > 0 ){ show_advanced = true; } 261 el.find('.em-ticket-form-advanced option:selected').each(function(){ if(this.value != '') show_advanced = true; }); 262 if( show_advanced ) el.find('.ticket-options-advanced').trigger('click'); 263 }); 264 //Delete a ticket 265 $(document).on('click', '.ticket-actions-delete', function(e){ 266 e.preventDefault(); 267 var el = $(this); 268 var tbody = el.closest('tbody'); 269 if( tbody.find('input.ticket_id').val() > 0 ){ 270 //only will happen if no bookings made 271 el.text('Deleting...'); 272 $.getJSON( $(this).attr('href'), {'em_ajax_action':'delete_ticket', 'id':tbody.find('input.ticket_id').val()}, function(data){ 273 if(data.result){ 274 tbody.remove(); 275 }else{ 276 el.text('Delete'); 277 alert(data.error); 278 } 279 }); 280 }else{ 281 //not saved to db yet, so just remove 282 tbody.remove(); 283 } 284 check_ticket_sortability(); 285 return false; 286 }); 287 //Sort Tickets 288 $('#em-tickets-form.em-tickets-sortable table').sortable({ 289 items: '> tbody', 290 placeholder: "em-ticket-sortable-placeholder", 291 handle:'.ticket-status', 292 helper: function( event, el ){ 293 var helper = $(el).clone().addClass('em-ticket-sortable-helper'); 294 var tds = helper.find('.em-tickets-row td').length; 295 helper.children().remove(); 296 helper.append('<tr class="em-tickets-row"><td colspan="'+tds+'" style="text-align:left; padding-left:15px;"><span class="dashicons dashicons-tickets-alt"></span></td></tr>'); 297 return helper; 298 }, 299 }); 300 var check_ticket_sortability = function(){ 301 var em_tickets = $('#em-tickets-form table tbody.em-ticket'); 302 if( em_tickets.length == 1 ){ 303 em_tickets.find('.ticket-status').addClass('single'); 304 $('#em-tickets-form.em-tickets-sortable table').sortable( "option", "disabled", true ); 305 }else{ 306 em_tickets.find('.ticket-status').removeClass('single'); 307 $('#em-tickets-form.em-tickets-sortable table').sortable( "option", "disabled", false ); 308 } 309 }; 310 check_ticket_sortability(); 311 } 312 //Manageing Bookings 313 let bookings_tables = $('.em-bookings-table'); 314 if( bookings_tables.length > 0 ){ 315 load_ui_css = true; 316 //Pagination link clicks 317 $(document).on('click', '.em-bookings-table .tablenav-pages a', function(){ 318 var el = $(this); 319 var form = el.parents('.em-bookings-table form.bookings-filter'); 320 //get page no from url, change page, submit form 321 var match = el.attr('href').match(/#[0-9]+/); 322 if( match != null && match.length > 0){ 323 var pno = match[0].replace('#',''); 324 form.find('input[name=pno]').val(pno); 325 }else{ 326 form.find('input[name=pno]').val(1); 327 } 328 form.trigger('submit'); 329 return false; 330 }); 331 332 //Settings & Export Modal 333 $(document).on('click', '.em-bookings-table-trigger', function(e){
334 e.preventDefault(); 335 let modal = $(this.getAttribute('rel')); 336 modal.find('input[name=show_tickets]').each(check_tickets_columns_export); 337 openModal( modal ); 338 }); 339 $(document).on('submit', '.em-bookings-table-settings form', function(e){ 340 e.preventDefault(); 341 //we know we'll deal with cols, so wipe hidden value from main 342 let $form = $(this); 343 let modal = $form.closest('.em-modal'); 344 let form = $($form.attr('rel')); 345 let match = form.find("[name=cols]").val(''); 346 let booking_form_cols = $form.find('.em-bookings-cols-selected .item'); 347 $.each( booking_form_cols, function(i,item_match){ 348 //item_match = $(item_match); 349 if( !item_match.classList.contains('hidden') ){ 350 if( match.val() !== ''){ 351 match.val(match.val()+','+item_match.getAttribute('data-value')); 352 }else{ 353 match.val(item_match.getAttribute('data-value')); 354 } 355 } 356 }); 357 //sync row count 358 let limit = $form.find('select[name="limit"]').val(); 359 form.find('[name="limit"]').val(limit); 360 //submit main form 361 modal.trigger('submitted'); //hook into this with bind() 362 form.trigger('submit'); 363 closeModal(modal); 364 }); 365 $(document).on('submit', '.em-bookings-table-export form', function(e){ 366 let $table_form = $(this.getAttribute('rel')); 367 var $form_filters = $(this).find('.em-bookings-table-filters').empty(); 368 let filters = $table_form.find('.em-bookings-table-filter').clone(); 369 filters.appendTo($form_filters); 370 }); 371 let check_tickets_columns_export = function(){ 372 let $this = $(this); 373 let form = $this.closest('form'); 374 let ticket_data = form.find('[data-type="ticket"]'); 375 if( $this.is(':checked') ){ 376 ticket_data.show().find('input').val(1); 377 }else{ 378 ticket_data.hide().find('input').val(0); 379 } 380 } 381 $(document).on('click', '.em-bookings-table-export input[name=show_tickets]', check_tickets_columns_export); 382 383 // Sortables - selectize and sorting 384 $(document).on('em_selectize_loaded', function( e, container ){ 385 container.find('.em-bookings-table-modal .em-bookings-table-cols').each( function(){ 386 let parent = $(this); 387 let sortables = $(this).find('.em-bookings-cols-sortable'); 388 container.find('.em-selectize.always-open').each( function() { 389 //extra behaviour for selectize column picker 390 if ('selectize' in this) { 391 let selectize = this.selectize; 392 // add event listener to fix remove button issues due to above hacks 393 selectize.on('item_add', function (value, item) { 394 let col = item.clone(); 395 let option = selectize.getOption(value); 396 let type = option.attr('data-type'); 397 col.appendTo(sortables); 398 col.attr('data-type', type); 399 $('<input type="hidden" name="cols[' + value + ']" value="1">').appendTo(col); 400 }); 401 selectize.on('item_remove', function (value) { 402 parent.find('.item[data-value="'+ value +'"]').remove(); 403 }); 404 parent.on('click', '.em-bookings-cols-selected .item .remove', function(){ 405 let value = this.parentElement.getAttribute('data-value'); 406 selectize.removeItem(value, true); 407 }); 408 } 409 }); 410 }); 411 }); 412 413 $(document).on('keypress', '.em-bookings-table .tablenav .actions input[type="text"]', function(e){ 414 let keycode = (e.keyCode ? e.keyCode : e.which); 415 if( keycode === 13 ){ 416 $(this).closest('form').submit(); 417 } 418 }); 419 420 $(document).on('click', '.em-bookings-table button.em-bookings-table-bulk-action', function( e ){ 421 e.preventDefault(); 422 let $form = $(this).closest('form'); 423 let action = $form.find('select.bulk-action-selector').val(); 424 EM.bulk_action = true; 425 if( action === 'delete' ){ 426 if( !confirm(EM.booking_delete) ){ return false; } 427 } 428 let rows = $form.find('tbody .check-column input:checked'); 429 // find all checked items and perform action on them. future interations can check if action is available to row. 430 rows.each( function(){ 431 // check if sibling has the relevant action 432 let actions = $(this.parentElement).find('a.em-bookings-'+ action); 433 actions.trigger('click'); 434 }); 435 EM.bulk_action = false; 436 }) 437 438 // Sorting 439 $(document).on('click', '.em-bookings-table th[scope="col"].sortable a, .em-bookings-table th[scope="col"].sorted a', function(e){
440 e.preventDefault(); 441 // add args to form and submit it 442 let params = (new URL(this.href)).searchParams; 443 let $form = $(this).closest('form'); 444 if( params.get('orderby') ){ 445 $form.find('input[name="orderby"]').val( params.get('orderby') ); 446 let order = params.get('order') ? params.get('order') : 'asc'; 447 $form.find('input[name="order"]').val( order ); 448 $form.submit(); 449 } 450 }); 451 452 // anything requiring extra setup 453 let resetup_bookings_table = function( table ){ 454 em_setup_tippy(table); 455 em_setup_selectize(table); 456 } 457 let setup_bookings_table = function( table ) { 458 table.find(".em-bookings-cols-sortable").sortable().disableSelection(); 459 let breakpoints = { 460 'small' : 600, 461 'large' : false, 462 } 463 const bookings_table_ro = EM_ResizeObserver( breakpoints, table.toArray() ); 464 } 465 466 bookings_tables.each( function(){ 467 setup_bookings_table( $(this) ); 468 }); 469 470 //Widgets and filter submissions 471 $(document).on('submit', '.em-bookings-table form.bookings-filter', function(e){ 472 var el = $(this); 473 //append loading spinner 474 let root = el.parents('.em-bookings-table').first(); 475 root.find('.table-wrap').first().append('<div id="em-loading" />'); 476 //ajax call 477 $.post( EM.ajaxurl, el.serializeArray(), function(data){ 478 let $data = $(data); 479 root.find('.em-bookings-table-trigger').each( function(){ 480 let modal = $(this.getAttribute('rel')); 481 modal.remove(); 482 }); 483 root.replaceWith($data); 484 // re-setup bookings table 485 setup_bookings_table($data); 486 resetup_bookings_table($data); 487 // fire hook 488 jQuery(document).triggerHandler('em_bookings_filtered', [$data, root, el]); 489 }); 490 return false; 491 }); 492 // Action links (approve/reject etc.) 493 $(document).on('click', '.em-bookings-approve,.em-bookings-reject,.em-bookings-unapprove,.em-bookings-delete,.em-bookings-ajax-action', function(){ 494 let el = $(this); 495 if( el.hasClass('em-bookings-delete') && (!('bulk_action' in EM) || !EM.bulk_action) ){ 496 if( !confirm(EM.booking_delete) ){ return false; } 497 } 498 let url = em_ajaxify( el.attr('href') ); 499 let td = el.parents('td').first(); 500 if( td.length > 0 && td.hasClass('actions') ){ 501 td.html(EM.txt_loading); 502 td.load( url ); 503 }else{ 504 // set up a custom url action to retrieve a row afterwards 505 let dropdown = el.closest('[data-tippy-root], .em-tooltip-ddm-content'); 506 if( dropdown.length > 0 ) { 507 if( '_tippy' in dropdown[0] ) { 508 dropdown[0]._tippy.hide(); 509 } 510 let tr = el.closest('tr'); 511 let params = (new URL(url)).searchParams; 512 let formData = new FormData(tr.closest('form')[0]); 513 formData.set('action', 'em_bookings_table_row'); 514 formData.set('row_action', params.get('action')); 515 formData.set('booking_id', params.get('booking_id')); 516 let cols = el.closest('form').find('[name="cols"]').val(); 517 tr.addClass('loading'); 518 $.ajax({
519 url: EM.ajaxurl, 520 data: formData, 521 processData: false, 522 contentType: false, 523 type: 'POST', 524 success: function (data) { 525 let $data = $(data); 526 $data.addClass('faded-out'); 527 tr.replaceWith( $data ).delay(200); 528 resetup_bookings_table( $data ); 529 $data.fadeIn(); 530 $data.removeClass('faded-out'); 531 } 532 }); 533 } 534 } 535 return false; 536 }); 537 } 538 //Old Bookings Table - depreciating soon 539 if( $('.em_bookings_events_table').length > 0 ){ 540 //Widgets and filter submissions 541 $(document).on('submit', '.em_bookings_events_table form', function(e){ 542 var el = $(this); 543 var url = em_ajaxify( el.attr('action') ); 544 el.parents('.em_bookings_events_table').find('.table-wrap').first().append('<div id="em-loading" />'); 545 $.get( url, el.serializeArray(), function(data){ 546 el.parents('.em_bookings_events_table').first().replaceWith(data); 547 }); 548 return false; 549 }); 550 //Pagination link clicks 551 $(document).on('click', '.em_bookings_events_table .tablenav-pages a', function(){ 552 var el = $(this); 553 var url = em_ajaxify( el.attr('href') ); 554 el.parents('.em_bookings_events_table').find('.table-wrap').first().append('<div id="em-loading" />'); 555 $.get( url, function(data){ 556 el.parents('.em_bookings_events_table').first().replaceWith(data); 557 }); 558 559 return false; 560 }); 561 } 562 563 //Manual Booking 564 $(document).on('click', 'a.em-booking-button', function(e){ 565 e.preventDefault(); 566 var button = $(this); 567 if( button.text() != EM.bb_booked && $(this).text() != EM.bb_booking){ 568 button.text(EM.bb_booking); 569 var button_data = button.attr('id').split('_'); 570 $.ajax({ 571 url: EM.ajaxurl, 572 dataType: 'jsonp', 573 data: { 574 event_id : button_data[1], 575 _wpnonce : button_data[2], 576 action : 'booking_add_one' 577 }, 578 success : function(response, statusText, xhr, $form) { 579 if(response.result){ 580 button.text(EM.bb_booked); 581 button.addClass('disabled'); 582 }else{ 583 button.text(EM.bb_error); 584 } 585 if(response.message != '') alert(response.message); 586 $(document).triggerHandler('em_booking_button_response', [response, button]); 587 }, 588 error : function(){ button.text(EM.bb_error); } 589 }); 590 } 591 return false; 592 }); 593 $(document).on('click', 'a.em-cancel-button', function(e){ 594 e.preventDefault(); 595 var button = $(this); 596 if( button.text() != EM.bb_cancelled && button.text() != EM.bb_canceling){ 597 button.text(EM.bb_canceling); 598 var button_data = button.attr('id').split('_'); 599 $.ajax({ 600 url: EM.ajaxurl, 601 dataType: 'jsonp', 602 data: { 603 booking_id : button_data[1], 604 _wpnonce : button_data[2], 605 action : 'booking_cancel' 606 }, 607 success : function(response, statusText, xhr, $form) { 608 if(response.result){ 609 button.text(EM.bb_cancelled); 610 button.addClass('disabled'); 611 }else{ 612 button.text(EM.bb_cancel_error); 613 } 614 }, 615 error : function(){ button.text(EM.bb_cancel_error); } 616 }); 617 } 618 return false; 619 }); 620 $(document).on('click', 'a.em-booking-button-action', function(e){ 621 e.preventDefault(); 622 var button = $(this); 623 var button_data = { 624 _wpnonce : button.attr('data-nonce'), 625 action : button.attr('data-action'), 626 } 627 if( button.attr('data-event-id') ) button_data.event_id = button.attr('data-event-id'); 628 if( button.attr('data-booking-id') ) button_data.booking_id = button.attr('data-booking-id'); 629 if( button.text() != EM.bb_booked && $(this).text() != EM.bb_booking){ 630 if( button.attr('data-loading') ){ 631 button.text(button.attr('data-loading')); 632 }else{ 633 button.text(EM.bb_booking); 634 } 635 $.ajax({ 636 url: EM.ajaxurl, 637 dataType: 'jsonp', 638 data: button_data, 639 success : function(response, statusText, xhr, $form) { 640 if(response.result){ 641 if( button.attr('data-success') ){ 642 button.text(button.attr('data-success')); 643 }else{ 644 button.text(EM.bb_booked); 645 } 646 button.addClass('disabled'); 647 }else{ 648 if( button.attr('data-error') ){ 649 button.text(button.attr('data-error')); 650 }else{ 651 button.text(EM.bb_error); 652 } 653 } 654 if(response.message != '') alert(response.message); 655 $(document).triggerHandler('em_booking_button_action_response', [response, button]); 656 }, 657 error : function(){ 658 if( button.attr('data-error') ){ 659 button.text(button.attr('data-error')); 660 }else{ 661 button.text(EM.bb_error); 662 } 663 } 664 }); 665 } 666 return false; 667 }); 668 669 //Datepicker - legacy 670 if( $('.em-date-single, .em-date-range, #em-date-start').length > 0 ){ 671 load_ui_css = true; 672 em_setup_datepicker('body'); 673 } 674 if( load_ui_css ) em_load_jquery_css(); 675 // Datepicker - new 676 if( $('.em-datepicker').length > 0 ){ 677 em_setup_datepicker('body'); 678 } 679 680 //previously in em-admin.php 681 $('#em-wrapper input.select-all').on('change', function(){ 682 if($(this).is(':checked')){ 683 $('input.row-selector').prop('checked', true); 684 $('input.select-all').prop('checked', true); 685 }else{ 686 $('input.row-selector').prop('checked', false); 687 $('input.select-all').prop('checked', false); 688 } 689 }); 690 691 692 // recurrence stuff 693 // recurrency descriptor 694 function updateIntervalDescriptor () { 695 $(".interval-desc").hide(); 696 var number = "-plural"; 697 if ($('input.em-recurrence-interval').val() == 1 || $('input.em-recurrence-interval').val() == "") number = "-singular"; 698 var descriptor = "span.interval-desc.interval-"+$("select.em-recurrence-frequency").val()+number; 699 $(descriptor).show(); 700 } 701 function updateIntervalSelectors () { 702 $('.alternate-selector').hide(); 703 $('.em-'+ $('select.em-recurrence-frequency').val() + "-selector").show(); 704 } 705 // recurrency elements 706 updateIntervalDescriptor(); 707 updateIntervalSelectors(); 708 $('input.em-recurrence-interval').on('keyup', updateIntervalDescriptor); 709 $('select.em-recurrence-frequency').on('change', updateIntervalDescriptor); 710 $('select.em-recurrence-frequency').on('change', updateIntervalSelectors); 711 712 /* Load any maps */ 713 if( $('.em-location-map').length > 0 || $('.em-locations-map').length > 0 || $('#em-map').length > 0 || $('.em-search-geo').length > 0 ){ 714 em_maps_load(); 715 } 716 717 /* Location Type Selection */ 718 $('.em-location-types .em-location-types-select').on('change', function(){ 719 let el = $(this); 720 if( el.val() == 0 ){ 721 $('.em-location-type').hide(); 722 }else{ 723 let location_type = el.find('option:selected').data('display-class'); 724 $('.em-location-type').hide(); 725 $('.em-location-type.'+location_type).show(); 726 if( location_type != 'em-location-type-place' ){ 727 jQuery('#em-location-reset a').trigger('click'); 728 } 729 } 730 if( el.data('active') !== '' && el.val() !== el.data('active') ){ 731 $('.em-location-type-delete-active-alert').hide(); 732 $('.em-location-type-delete-active-alert').show(); 733 }else{ 734 $('.em-location-type-delete-active-alert').hide(); 735 } 736 }).trigger('change'); 737 738 //Finally, add autocomplete here 739 if( jQuery( 'div.em-location-data [name="location_name"]' ).length > 0 ){ 740 $('div.em-location-data [name="location_name"]').selectize({ 741 plugins: ["restore_on_backspace"], 742 valueField: "id", 743 labelField: "label", 744 searchField: "label", 745 create:true, 746 createOnBlur: true, 747 maxItems:1, 748 persist: false, 749 addPrecedence : true, 750 selectOnTab : true, 751 diacritics : true, 752 render: { 753 item: function (item, escape) { 754 return "<div>" + item.label + "</div>"; 755 }, 756 option: function (item, escape) { 757 let meta = ''; 758 if( typeof(item.address) !== 'undefined' ) { 759 if (item.address !== '' && item.town !== '') { 760 meta = escape(item.address) + ', ' + escape(item.town); 761 } else if (item.address !== '') { 762 meta = escape(item.address); 763 } else if (item.town !== '') { 764 meta = escape(item.town); 765 } 766 } 767 return '<div class="em-locations-autocomplete-item">' + 768 '<div class="em-locations-autocomplete-label">' + escape(item.label) + '</div>' + 769 '<div style="font-size:11px; text-decoration:italic;">' + meta + '</div>' + 770 '</div>'; 771 772 }, 773 }, 774 load: function (query, callback) { 775 if (!query.length) return callback(); 776 $.ajax({
777 url: EM.locationajaxurl, 778 data: { 779 q : query, 780 method : 'selectize' 781 }, 782 dataType : 'json', 783 type: "POST", 784 error: function () { 785 callback(); 786 }, 787 success: function ( data ) { 788 callback( data ); 789 }, 790 }); 791 }, 792 onItemAdd : function (value, data) { 793 this.clearCache(); 794 var option = this.options[value]; 795 if( value === option.label ){ 796 jQuery('input#location-address').focus(); 797 return; 798 } 799 jQuery("input#location-name" ).val(option.value); 800 jQuery('input#location-address').val(option.address); 801 jQuery('input#location-town').val(option.town); 802 jQuery('input#location-state').val(option.state); 803 jQuery('input#location-region').val(option.region); 804 jQuery('input#location-postcode').val(option.postcode); 805 jQuery('input#location-latitude').val(option.latitude); 806 jQuery('input#location-longitude').val(option.longitude); 807 if( typeof(option.country) === 'undefined' || option.country === '' ){ 808 jQuery('select#location-country option:selected').removeAttr('selected'); 809 }else{ 810 jQuery('select#location-country option[value="'+option.country+'"]').attr('selected', 'selected'); 811 } 812 jQuery("input#location-id" ).val(option.id).trigger('change'); 813 jQuery('div.em-location-data input, div.em-location-data select').prop('readonly', true).css('opacity', '0.5'); 814 jQuery('#em-location-reset').show(); 815 jQuery('#em-location-search-tip').hide(); 816 // selectize stuff 817 this.disable(); 818 this.$control.blur(); 819 jQuery('div.em-location-data [class^="em-selectize"]').each( function(){ 820 this.selectize.disable(); 821 }) 822 // trigger hook 823 jQuery(document).triggerHandler('em_locations_autocomplete_selected', [event, option]); 824 } 825 }); 826 jQuery('#em-location-reset a').on('click', function(){ 827 jQuery('div.em-location-data input, div.em-location-data select').each( function(){ 828 this.style.removeProperty('opacity') 829 this.readOnly = false; 830 if( this.type == 'text' ) this.value = ''; 831 }); 832 jQuery('div.em-location-data option:selected').removeAttr('selected'); 833 jQuery('input#location-id').val(''); 834 jQuery('#em-location-reset').hide(); 835 jQuery('#em-location-search-tip').show(); 836 jQuery('#em-map').hide(); 837 jQuery('#em-map-404').show(); 838 if(typeof(marker) !== 'undefined'){ 839 marker.setPosition(new google.maps.LatLng(0, 0)); 840 infoWindow.close(); 841 marker.setDraggable(true); 842 } 843 // clear selectize autocompleter values, re-enable any selectize ddms 844 let $selectize = $("div.em-location-data input#location-name")[0].selectize; 845 $selectize.enable(); 846 $selectize.clear(true); 847 $selectize.clearOptions(); 848 jQuery('div.em-location-data select.em-selectize').each( function(){ 849 if( 'selectize' in this ){ 850 this.selectize.enable(); 851 this.selectize.clear(true); 852 } 853 }); 854 // return true 855 return false; 856 }); 857 if( jQuery('input#location-id').val() != '0' && jQuery('input#location-id').val() != '' ){ 858 jQuery('div.em-location-data input, div.em-location-data select').each( function(){ 859 this.style.setProperty('opacity','0.5', 'important') 860 this.readOnly = true; 861 }); 862 jQuery('#em-location-reset').show(); 863 jQuery('#em-location-search-tip').hide(); 864 jQuery('div.em-location-data select.em-selectize, div.em-location-data input.em-selectize-autocomplete').each( function(){ 865 if( 'selectize' in this ) this.selectize.disable(); 866 }); 867 } 868 } 869 870 // trigger selectize loader 871 em_setup_selectize(document); 872 873 /* Local JS Timezone related placeholders */ 874 /* Moment JS Timzeone PH */ 875 if( window.moment ){ 876 var replace_specials = function( day, string ){ 877 // replace things not supported by moment 878 string = string.replace(/##T/g, Intl.DateTimeFormat().resolvedOptions().timeZone); 879 string = string.replace(/#T/g, "GMT"+day.format('Z')); 880 string = string.replace(/###t/g, day.utcOffset()*-60); 881 string = string.replace(/##t/g, day.isDST()); 882 string = string.replace(/#t/g, day.daysInMonth()); 883 return string; 884 }; 885 $('.em-date-momentjs').each( function(){ 886 // Start Date 887 var el = $(this); 888 var day_start = moment.unix(el.data('date-start')); 889 var date_start_string = replace_specials(day_start, day_start.format(el.data('date-format'))); 890 if( el.data('date-start') !== el.data('date-end') ){ 891 // End Date 892 var day_end = moment.unix(el.data('date-end')); 893 var day_end_string = replace_specials(day_start, day_end.format(el.data('date-format'))); 894 // Output 895 var date_string = date_start_string + el.data('date-separator') + day_end_string; 896 }else{ 897 var date_string = date_start_string; 898 } 899 el.text(date_string); 900 }); 901 var get_date_string = function(ts, format){ 902 let date = new Date(ts * 1000); 903 let minutes = date.getMinutes(); 904 if( format == 24 ){ 905 let hours = date.getHours(); 906 hours = hours < 10 ? '0' + hours : hours; 907 minutes = minutes < 10 ? '0' + minutes : minutes; 908 return hours + ':' + minutes; 909 }else{ 910 let hours = date.getHours() % 12; 911 let ampm = hours >= 12 ? 'PM' : 'AM'; 912 if( hours === 0 ) hours = 12; // the hour '0' should be '12'
913 minutes = minutes < 10 ? '0'+minutes : minutes; 914 return hours + ':' + minutes + ' ' + ampm; 915 } 916 } 917 $('.em-time-localjs').each( function(){ 918 var el = $(this); 919 var strTime = get_date_string( el.data('time'), el.data('time-format') ); 920 if( el.data('time-end') ){ 921 var separator = el.data('time-separator') ? el.data('time-separator') : ' - '; 922 strTime = strTime + separator + get_date_string( el.data('time-end'), el.data('time-format') ); 923 } 924 el.text(strTime); 925 }); 926 } 927 // Set up Tippy generic 928 let $document = jQuery(document); 929 em_setup_tippy($document); 930 931 /* Done! */ 932 $document.triggerHandler('em_javascript_loaded'); 933}); 934 935function em_load_jquery_css( wrapper = false ){ 936 if( EM.ui_css && jQuery('link#jquery-ui-em-css').length == 0 ){ 937 var script = document.createElement("link"); 938 script.id = 'jquery-ui-em-css'; 939 script.rel = "stylesheet"; 940 script.href = EM.ui_css; 941 document.body.appendChild(script); 942 if( wrapper ){ 943 em_setup_jquery_ui_wrapper(); 944 } 945 } 946} 947 948function em_setup_tippy( container ){ 949 var tooltip_vars = { 950 theme : 'light-border', 951 appendTo : 'parent', 952 content(reference) { 953 return reference.getAttribute('aria-label'); 954 }, 955 }; 956 jQuery(document).trigger('em-tippy-vars',[tooltip_vars, container]); 957 tippy('.em-tooltip', tooltip_vars); 958 // Set up Tippy DDMs 959 let tippy_ddm_options = { 960 theme : 'light-border', 961 arrow : false, 962 allowHTML : true, 963 interactive : true, 964 trigger : 'manual', 965 placement : 'bottom', 966 zIndex : 1000000, 967 }; 968 jQuery(document).trigger('em-tippy-ddm-vars',[tippy_ddm_options, container]); 969 container.find('.em-tooltip-ddm').each( function(){ 970 let ddm_content, ddm_content_sibling; 971 if( this.getAttribute('data-content') ){ 972 ddm_content = document.getElementById(this.getAttribute('data-content')) 973 ddm_content_sibling = ddm_content.previousElementSibling; 974 }else{ 975 ddm_content = this.nextElementSibling; 976 ddm_content_sibling = ddm_content.previousElementSibling; 977 } 978 let tippy_content = document.createElement('div'); 979 // allow for custom width 980 let button_width = this.getAttribute('data-button-width'); 981 if( button_width ){ 982 if( button_width == 'match' ){ 983 tippy_ddm_options.maxWidth = this.clientWidth; 984 }else{ 985 tippy_ddm_options.maxWidth = this.getAttribute('data-button-width'); 986 } 987 } 988 tippy_ddm_options.content = tippy_content; 989 let tippy_ddm = tippy(this, tippy_ddm_options); 990 tippy_ddm.props.distance = 50; 991 tippy_ddm.setProps({ 992 onShow(instance){ 993 if( instance.reference.getAttribute('data-tooltip-class') ) { 994 instance.popper.classList.add( instance.reference.getAttribute('data-tooltip-class') ); 995 } 996 instance.popper.classList.add( 'em-tooltip-ddm-display' ); 997 tippy_content.append(ddm_content); 998 ddm_content.classList.remove('em-tooltip-ddm-content'); 999 }, 1000 onShown(instance){ // keyboard support 1001 ddm_content.firstElementChild.focus(); 1002 }, 1003 onHidden(instance){ 1004 if( ddm_content.previousElementSibling !== ddm_content_sibling ) { 1005 ddm_content_sibling.after(ddm_content); 1006 ddm_content.classList.add('em-tooltip-ddm-content'); 1007 } 1008 }, 1009 }); 1010 let tippy_listener = function(e){ 1011 if( e.type === 'keydown' && !(e.which === 13 || e.which === 40) ) return false; 1012 e.preventDefault(); 1013 e.stopPropagation(); 1014 this._tippy.show(); 1015 } 1016 this.addEventListener('click', tippy_listener); 1017 this.addEventListener('keydown', tippy_listener); 1018 tippy_content.addEventListener('blur', function(){ 1019 tippy_content.hide(); 1020 }); 1021 tippy_content.addEventListener('mouseover', function(){ 1022 ddm_content.firstElementChild.blur(); 1023 }); 1024 }); 1025} 1026 1027function em_setup_selectize( container ){ 1028 container = jQuery(container); // in case we were given a dom object 1029 // Selectize General 1030 container.find('select:not([multiple]).em-selectize, .em-selectize select:not([multiple])').selectize(); 1031 container.find('select[multiple].em-selectize, .em-selectize select[multiple]').selectize({ 1032 hideSelected : false, 1033 plugins: ["remove_button", 'click2deselect'], 1034 diacritics : true, 1035 render: { 1036 item: function (item, escape) { 1037 return '<div class="item"><span>' + item.text.replace(/^\s+/i, '') + '</span></div>'; 1038 }, 1039 option : function (item, escape) { 1040 let html = '<div class="option"'; 1041 if( 'data' in item ){ 1042 // any key/value object pairs wrapped in a 'data' key within JSON object in the data-data attribute is added automatically as a data-key="value" attribute
1043 Object.entries(item.data).forEach( function( item_data ){ 1044 html += ' data-'+ escape(item_data[0]) + '="'+ escape(item_data[1]) +'"'; 1045 }); 1046 } 1047 html += '>'; 1048 if( this.$input.hasClass('checkboxes') ){ 1049 html += item.text.replace(/^(\s+)?/i, '$1<span></span> '); 1050 }else{ 1051 html += item.text; 1052 } 1053 html += '</div>'; 1054 return html; 1055 }, 1056 optgroup : function (item, escape) { 1057 let html = '<div class="optgroup" data-group="' + escape(item.label) + '"'; 1058 if( 'data' in item ){ 1059 // any key/value object pairs wrapped in a 'data' key within JSON object in the data-data attribute is added automatically as a data-key="value" attribute 1060 Object.entries(item.data).forEach( function( item_data ){ 1061 html += ' data-'+ escape(item_data[0]) + '="'+ escape(item_data[1]) +'"'; 1062 }); 1063 } 1064 html += '>'; 1065 return html + item.html + '</div>'; 1066 } 1067 1068 }, 1069 }); 1070 container.find('.em-selectize.always-open').each( function(){ 1071 //extra behaviour for selectize "always open mode" 1072 if( 'selectize' in this ){ 1073 let s = this.selectize; 1074 s.open(); 1075 s.advanceSelection = function(){}; // remove odd item shuffling 1076 s.setActiveItem = function(){}; // remove odd item shuffling 1077 // add event listener to fix remove button issues due to above hacks 1078 this.selectize.$control.on('click', '.remove', function(e) { 1079 e.preventDefault(); 1080 if (s.isLocked) return; 1081 var $item = jQuery(e.currentTarget).parent(); 1082 s.removeItem($item.attr('data-value')); 1083 s.refreshOptions(); 1084 return false; 1085 }); 1086 1087 } 1088 }); 1089 jQuery(document).triggerHandler('em_selectize_loaded', [container]); 1090} 1091 1092function em_setup_jquery_ui_wrapper(){ 1093 if( jQuery('#em-jquery-ui').length === 0 ){ 1094 jQuery('body').append('<div id="em-jquery-ui" class="em">'); 1095 } 1096} 1097 1098function em_setup_datepicker(wrap){ 1099 wrap = jQuery(wrap); 1100 1101 //apply datepickers - jQuery UI (backcompat) 1102 let dateDivs = wrap.find('.em-date-single, .em-date-range'); 1103 if( dateDivs.length > 0 ){ 1104 //default picker vals 1105 var datepicker_vals = { 1106 dateFormat: "yy-mm-dd", 1107 changeMonth: true, 1108 changeYear: true, 1109 firstDay : EM.firstDay, 1110 yearRange:'c-100:c+15', 1111 beforeShow : function( el, inst ){ 1112 em_setup_jquery_ui_wrapper(); 1113 inst.dpDiv.appendTo('#em-jquery-ui'); 1114 } 1115 }; 1116 if( EM.dateFormat ) datepicker_vals.dateFormat = EM.dateFormat; 1117 if( EM.yearRange ) datepicker_vals.yearRange = EM.yearRange; 1118 jQuery(document).triggerHandler('em_datepicker', datepicker_vals); 1119 //apply datepickers to elements 1120 dateDivs.find('input.em-date-input-loc').each(function(i,dateInput){ 1121 //init the datepicker 1122 var dateInput = jQuery(dateInput); 1123 var dateValue = dateInput.nextAll('input.em-date-input').first(); 1124 var dateValue_value = dateValue.val(); 1125 dateInput.datepicker(datepicker_vals); 1126 dateInput.datepicker('option', 'altField', dateValue); 1127 //now set the value 1128 if( dateValue_value ){ 1129 var this_date_formatted = jQuery.datepicker.formatDate( EM.dateFormat, jQuery.datepicker.parseDate('yy-mm-dd', dateValue_value) ); 1130 dateInput.val(this_date_formatted); 1131 dateValue.val(dateValue_value); 1132 } 1133 //add logic for texts 1134 dateInput.on('change', function(){ 1135 if( jQuery(this).val() == '' ){ 1136 jQuery(this).nextAll('.em-date-input').first().val(''); 1137 } 1138 }); 1139 }); 1140 //deal with date ranges 1141 dateDivs.filter('.em-date-range').find('input.em-date-input-loc[type="text"]').each(function(i,dateInput){ 1142 //finally, apply start/end logic to this field 1143 dateInput = jQuery(dateInput); 1144 if( dateInput.hasClass('em-date-start') ){ 1145 dateInput.datepicker('option','onSelect', function( selectedDate ) { 1146 //get corresponding end date input, we expect ranges to be contained in .em-date-range with a start/end input element 1147 var startDate = jQuery(this); 1148 var endDate = startDate.parents('.em-date-range').find('.em-date-end').first(); 1149 var startValue = startDate.nextAll('input.em-date-input').first().val(); 1150 var endValue = endDate.nextAll('input.em-date-input').first().val(); 1151 startDate.trigger('em_datepicker_change'); 1152 if( startValue > endValue && endValue != '' ){ 1153 endDate.datepicker( "setDate" , selectedDate ); 1154 endDate.trigger('change').trigger('em_datepicker_change'); 1155 } 1156 endDate.datepicker( "option", 'minDate', selectedDate ); 1157 }); 1158 }else if( dateInput.hasClass('em-date-end') ){ 1159 var startInput = dateInput.parents('.em-date-range').find('.em-date-start').first(); 1160 if( startInput.val() != '' ){ 1161 dateInput.datepicker('option', 'minDate', startInput.val()); 1162 } 1163 } 1164 }); 1165 } 1166 1167 // datpicker - new format 1168 let datePickerDivs = wrap.find('.em-datepicker, .em-datepicker-range'); 1169 if( datePickerDivs.length > 0 ){ 1170 // wrappers and locale 1171 let datepicker_wrapper = jQuery('#em-flatpickr'); 1172 if( datepicker_wrapper.length === 0 ){ 1173 datepicker_wrapper = jQuery('<div class="em pixelbones em-flatpickr" id="em-flatpickr"></div>').appendTo('body'); 1174 } 1175 // locale 1176 if( 'locale' in EM.datepicker ){ 1177 flatpickr.localize(flatpickr.l10ns[EM.datepicker.locale]); 1178 flatpickr.l10ns.default.firstDayOfWeek = EM.firstDay; 1179 } 1180 //default picker vals 1181 let datepicker_options = { 1182 appendTo : datepicker_wrapper[0], 1183 dateFormat: "Y-m-d", 1184 disableMoble : "true", 1185 allowInput : true, 1186 onChange : function( selectedDates, dateStr, instance ){ 1187 let wrapper = jQuery(instance.input).closest('.em-datepicker'); 1188 let data_wrapper = wrapper.find('.em-datepicker-data'); 1189 let inputs = data_wrapper.find('input'); 1190 let dateFormat = function(d) { 1191 let month = '' + (d.getMonth() + 1), 1192 day = '' + d.getDate(), 1193 year = d.getFullYear(); 1194 if (month.length < 2) month = '0' + month; 1195 if (day.length < 2) day = '0' + day; 1196 return [year, month, day].join('-'); 1197 } 1198 if( selectedDates.length === 0 ){ 1199 inputs.attr('value', ''); 1200 }else{ 1201 if( instance.config.mode === 'range' && selectedDates[1] !== undefined ) { 1202 // deal with end date 1203 inputs[0].setAttribute('value', dateFormat(selectedDates[0])); 1204 inputs[1].setAttribute('value', dateFormat(selectedDates[1])); 1205 }else if( instance.config.mode === 'single' && wrapper.hasClass('em-datepicker-until') ){ 1206 if( instance.input.classList.contains('em-date-input-start') ){ 1207 inputs[0].setAttribute('value', dateFormat(selectedDates[0])); 1208 // set min-date of other datepicker 1209 let fp; 1210 if( wrapper.attr('data-until-id') ){
1211 let fp_input = jQuery('#' + wrapper.attr('data-until-id') + ' .em-date-input-end'); 1212 fp = fp_input[0]._flatpickr; 1213 }else { 1214 fp = wrapper.find('.em-date-input-end')[0]._flatpickr; 1215 } 1216 if( fp.selectedDates[0] !== undefined && fp.selectedDates[0] < selectedDates[0] ){ 1217 fp.setDate(selectedDates[0], false); 1218 inputs[1].setAttribute('value', dateFormat(fp.selectedDates[0])); 1219 } 1220 fp.set('minDate', selectedDates[0]); 1221 }else{ 1222 inputs[1].setAttribute('value', dateFormat(selectedDates[0])); 1223 } 1224 }else{ 1225 inputs[0].setAttribute('value', dateFormat(selectedDates[0])); 1226 } 1227 } 1228 inputs.trigger('change'); 1229 let current_date = data_wrapper.attr('date-value'); 1230 data_wrapper.attr('data-value', dateStr); 1231 if( current_date === dateStr ) data_wrapper.trigger('change'); 1232 }, 1233 onClose : function( selectedDates, dateStr, instance ){ 1234 // deal with single date choice and clicking out 1235 if( instance.config.mode === 'range' && selectedDates[1] !== undefined ){ 1236 if(selectedDates.length === 1){ 1237 instance.setDate([selectedDates[0],selectedDates[0]], true); // wouldn't have been triggered with a single date selection 1238 } 1239 } 1240 }, 1241 locale : {}, 1242 }; 1243 if( EM.datepicker.format !== datepicker_options.dateFormat ){ 1244 datepicker_options.altFormat = EM.datepicker.format; 1245 datepicker_options.altInput = true; 1246 } 1247 jQuery(document).triggerHandler('em_datepicker_options', datepicker_options); 1248 //apply datepickers to elements 1249 datePickerDivs.each( function(i,datePickerDiv) { 1250 // hide fallback fields, show range or single 1251 datePickerDiv = jQuery(datePickerDiv); 1252 datePickerDiv.find('.em-datepicker-data').addClass('hidden'); 1253 let isRange = datePickerDiv.hasClass('em-datepicker-range'); 1254 let options = Object.assign({}, datepicker_options); // clone, mainly shallow concern for 'mode' 1255 options.mode = isRange ? 'range' : 'single'; 1256 if( isRange && 'onClose' in options ){ 1257 options.onClose = function( selectedDates, dateStr, instance ){ 1258 if(selectedDates.length === 1){ // deal with single date choice and clicking out 1259 instance.setDate([selectedDates[0],selectedDates[0]], true); 1260 } 1261 } 1262 } 1263 if( datePickerDiv.attr('data-separator') ) options.locale.rangeSeparator = datePickerDiv.attr('data-separator'); 1264 if( datePickerDiv.attr('data-format') ) options.altFormat = datePickerDiv.attr('data-format'); 1265 let FPs = datePickerDiv.find('.em-date-input'); 1266 FPs.attr('type', 'text').flatpickr(options); 1267 }); 1268 // add values to elements, done once all datepickers instantiated so we don't get errors with date range els in separate divs 1269 datePickerDivs.each( function(i,datePickerDiv) { 1270 datePickerDiv = jQuery(datePickerDiv); 1271 let FPs = datePickerDiv.find('.em-date-input'); 1272 let inputs = datePickerDiv.find('.em-datepicker-data input'); 1273 inputs.attr('type', 'hidden'); // hide so not tabbable 1274 if( datePickerDiv.hasClass('em-datepicker-until') ){ 1275 let start_fp, end_fp; 1276 if( datePickerDiv.attr('data-until-id') ){ 1277 end_fp = jQuery('#' + datePickerDiv.attr('data-until-id') + ' .em-date-input-end')[0]._flatpickr; 1278 }else{ 1279 end_fp = FPs.filter('.em-date-input-end')[0]._flatpickr; 1280 if( inputs[1] && inputs[1].value ) { 1281 end_fp.setDate(inputs[1].value, false, 'Y-m-d'); 1282 } 1283 } 1284 if( inputs[0] && inputs[0].value ){ 1285 start_fp = FPs.filter('.em-date-input-start')[0]._flatpickr; 1286 start_fp.setDate(inputs[0].value, false, 'Y-m-d'); 1287 end_fp.set('minDate', inputs[0].value); 1288 } 1289 }else{ 1290 let dates = []; 1291 inputs.each( function( i, input ){ 1292 if( input.value ){ 1293 dates.push(input.value); 1294 } 1295 }); 1296 FPs[0]._flatpickr.setDate(dates, false, 'Y-m-d'); 1297 } 1298 }); 1299 // fire trigger 1300 jQuery(document).triggerHandler('em_flatpickr_loaded'); 1301 } 1302} 1303function em_setup_timepicker(wrap){ 1304 wrap = jQuery(wrap); 1305 var timepicker_options = { 1306 step:15 1307 } 1308 timepicker_options.timeFormat = EM.show24hours == 1 ? 'G:i':'g:i A'; 1309 jQuery(document).triggerHandler('em_timepicker_options', timepicker_options); 1310 wrap.find(".em-time-input").em_timepicker(timepicker_options); 1311
1312 // Keep the duration between the two inputs. 1313 wrap.find(".em-time-range input.em-time-start").each( function(i, el){ 1314 var time = jQuery(el); 1315 time.data('oldTime', time.em_timepicker('getSecondsFromMidnight')); 1316 }).on('change', function() { 1317 var start = jQuery(this); 1318 var end = start.nextAll('.em-time-end'); 1319 if (end.val()) { // Only update when second input has a value. 1320 // Calculate duration. 1321 var oldTime = start.data('oldTime'); 1322 var duration = (end.em_timepicker('getSecondsFromMidnight') - oldTime) * 1000; 1323 var time = start.em_timepicker('getSecondsFromMidnight'); 1324 if( end.em_timepicker('getSecondsFromMidnight') >= oldTime ){ 1325 // Calculate and update the time in the second input. 1326 end.em_timepicker('setTime', new Date(start.em_timepicker('getTime').getTime() + duration)); 1327 } 1328 start.data('oldTime', time); 1329 } 1330 }); 1331 // Validate. 1332 wrap.find(".event-form-when .em-time-range input.em-time-end").on('change', function() { 1333 var end = jQuery(this); 1334 var start = end.prevAll('.em-time-start'); 1335 var wrapper = end.closest('.event-form-when'); 1336 var start_date = wrapper.find('.em-date-end').val(); 1337 var end_date = wrapper.find('.em-date-start').val(); 1338 if( start.val() ){ 1339 if( start.em_timepicker('getTime') > end.em_timepicker('getTime') && ( end_date.length == 0 || start_date == end_date ) ) { end.addClass("error"); } 1340 else { end.removeClass("error"); } 1341 } 1342 }); 1343 wrap.find(".event-form-when .em-date-end").on('change', function(){ 1344 jQuery(this).closest('.event-form-when').find('.em-time-end').trigger('change'); 1345 }); 1346 //Sort out all day checkbox 1347 wrap.find('.em-time-range input.em-time-all-day').on('change', function(){ 1348 var allday = jQuery(this); 1349 if( allday.is(':checked') ){ 1350 allday.closest('.em-time-range').find('.em-time-input').each( function(){ 1351 this.style.setProperty('background-color','#ccc', 'important'); 1352 this.readOnly = true; 1353 }); 1354 }else{ 1355 allday.closest('.em-time-range').find('.em-time-input').each( function(){ 1356 this.style.removeProperty('background-color'); 1357 this.readOnly = false; 1358 }); 1359 } 1360 }).trigger('change'); 1361} 1362 1363/* Useful function for adding the em_ajax flag to a url, regardless of querystring format */ 1364var em_ajaxify = function(url){ 1365 if ( url.search('em_ajax=0') != -1){ 1366 url = url.replace('em_ajax=0','em_ajax=1'); 1367 }else if( url.search(/\?/) != -1 ){ 1368 url = url + "&em_ajax=1"; 1369 }else{ 1370 url = url + "?em_ajax=1"; 1371 } 1372 return url; 1373}; 1374 1375/* 1376 * MAP FUNCTIONS 1377 */ 1378var em_maps_loaded = false; 1379var maps = {}; 1380var maps_markers = {}; 1381var infoWindow; 1382//loads maps script if not already loaded and executes EM maps script 1383function em_maps_load(){ 1384 if( !em_maps_loaded ){ 1385 if ( jQuery('script#google-maps').length == 0 && ( typeof google !== 'object' || typeof google.maps !== 'object' ) ){ 1386 var script = document.createElement("script"); 1387 script.type = "text/javascript"; 1388 script.id = "google-maps"; 1389 var proto = (EM.is_ssl) ? 'https:' : 'http:'; 1390 if( typeof EM.google_maps_api !== 'undefined' ){ 1391 script.src = proto + '//maps.google.com/maps/api/js?v=quarterly&libraries=places&callback=em_maps&key='+EM.google_maps_api; 1392 }else{ 1393 script.src = proto + '//maps.google.com/maps/api/js?v=quarterly&libraries=places&callback=em_maps'; 1394 } 1395 document.body.appendChild(script); 1396 }else if( typeof google === 'object' && typeof google.maps === 'object' && !em_maps_loaded ){ 1397 em_maps(); 1398 }else if( jQuery('script#google-maps').length > 0 ){ 1399 jQuery(window).load(function(){ if( !em_maps_loaded ) em_maps(); }); //google isn't loaded so wait for page to load resources 1400 } 1401 } 1402} 1403jQuery(document).on('em_view_loaded_map', function( e, view, form ){ 1404 if( !em_maps_loaded ){ 1405 em_maps_load(); 1406 }else{ 1407 let map = view.find('.em-locations-map'); 1408 em_maps_load_locations( map ); 1409 } 1410}); 1411//re-usable function to load global location maps 1412function em_maps_load_locations(el){ 1413 var el = jQuery(el); 1414 var map_id = el.attr('id').replace('em-locations-map-',''); 1415 var em_data = jQuery.parseJSON( el.nextAll('.em-locations-map-coords').first().text() ); 1416 if( em_data == null ){ 1417 var em_data = jQuery.parseJSON( jQuery('#em-locations-map-coords-'+map_id).text() ); 1418 } 1419 jQuery.getJSON(document.URL, em_data , function(data){ 1420 if(data.length > 0){ 1421 //define default options and allow option for extension via event triggers 1422 var map_options = { mapTypeId: google.maps.MapTypeId.ROADMAP }; 1423 if( typeof EM.google_map_id_styles == 'object' && typeof EM.google_map_id_styles[map_id] !== 'undefined' ){ console.log(EM.google_map_id_styles[map_id]); map_options.styles = EM.google_map_id_styles[map_id]; } 1424 else if( typeof EM.google_maps_styles !== 'undefined' ){ map_options.styles = EM.google_maps_styles; } 1425 jQuery(document).triggerHandler('em_maps_locations_map_options', map_options); 1426 var marker_options = {}; 1427 jQuery(document).triggerHandler('em_maps_location_marker_options', marker_options); 1428 1429 maps[map_id] = new google.maps.Map(el[0], map_options); 1430 maps_markers[map_id] = []; 1431 1432 var bounds = new google.maps.LatLngBounds(); 1433 1434 jQuery.map( data, function( location, i ){ 1435 if( !(location.location_latitude == 0 && location.location_longitude == 0) ){ 1436 var latitude = parseFloat( location.location_latitude ); 1437 var longitude = parseFloat( location.location_longitude ); 1438 var location_position = new google.maps.LatLng( latitude, longitude ); 1439 //extend the default marker options 1440 jQuery.extend(marker_options, { 1441 position: location_position, 1442 map: maps[map_id] 1443 }) 1444 var marker = new google.maps.Marker(marker_options); 1445 maps_markers[map_id].push(marker); 1446 marker.setTitle(location.location_name); 1447 var myContent = '<div class="em-map-balloon"><div id="em-map-balloon-'+map_id+'" class="em-map-balloon-content">'+ location.location_balloon +'</div></div>'; 1448 em_map_infobox(marker, myContent, maps[map_id]); 1449 //extend bounds 1450 bounds.extend(new google.maps.LatLng(latitude,longitude)) 1451 } 1452 }); 1453 // Zoom in to the bounds 1454 maps[map_id].fitBounds(bounds); 1455 1456 //Call a hook if exists 1457 jQuery(document).triggerHandler('em_maps_locations_hook', [maps[map_id], data, map_id, maps_markers[map_id]]); 1458 }else{
1459 el.children().first().html('No locations found'); 1460 jQuery(document).triggerHandler('em_maps_locations_hook_not_found', [el]); 1461 } 1462 }); 1463} 1464function em_maps_load_location(el){ 1465 el = jQuery(el); 1466 var map_id = el.attr('id').replace('em-location-map-',''); 1467 em_LatLng = new google.maps.LatLng( jQuery('#em-location-map-coords-'+map_id+' .lat').text(), jQuery('#em-location-map-coords-'+map_id+' .lng').text()); 1468 //extend map and markers via event triggers 1469 var map_options = { 1470 zoom: 14, 1471 center: em_LatLng, 1472 mapTypeId: google.maps.MapTypeId.ROADMAP, 1473 mapTypeControl: false, 1474 gestureHandling: 'cooperative' 1475 }; 1476 if( typeof EM.google_map_id_styles == 'object' && typeof EM.google_map_id_styles[map_id] !== 'undefined' ){ console.log(EM.google_map_id_styles[map_id]); map_options.styles = EM.google_map_id_styles[map_id]; } 1477 else if( typeof EM.google_maps_styles !== 'undefined' ){ map_options.styles = EM.google_maps_styles; } 1478 jQuery(document).triggerHandler('em_maps_location_map_options', map_options); 1479 maps[map_id] = new google.maps.Map( document.getElementById('em-location-map-'+map_id), map_options); 1480 var marker_options = { 1481 position: em_LatLng, 1482 map: maps[map_id] 1483 }; 1484 jQuery(document).triggerHandler('em_maps_location_marker_options', marker_options); 1485 maps_markers[map_id] = new google.maps.Marker(marker_options); 1486 infoWindow = new google.maps.InfoWindow({ content: jQuery('#em-location-map-info-'+map_id+' .em-map-balloon').get(0) }); 1487 infoWindow.open(maps[map_id],maps_markers[map_id]); 1488 maps[map_id].panBy(40,-70); 1489 1490 //JS Hook for handling map after instantiation 1491 //Example hook, which you can add elsewhere in your theme's JS - jQuery(document).on('em_maps_location_hook', function(){ alert('hi');} ); 1492 jQuery(document).triggerHandler('em_maps_location_hook', [maps[map_id], infoWindow, maps_markers[map_id], map_id]); 1493 //map resize listener 1494 jQuery(window).on('resize', function(e) { 1495 google.maps.event.trigger(maps[map_id], "resize"); 1496 maps[map_id].setCenter(maps_markers[map_id].getPosition()); 1497 maps[map_id].panBy(40,-70); 1498 }); 1499} 1500jQuery(document).on('em_search_ajax', function(e, vars, wrapper){ 1501 if( em_maps_loaded ){ 1502 wrapper.find('.em-location-map').each( function(index, el){ em_maps_load_location(el); } ); 1503 wrapper.find('.em-locations-map').each( function(index, el){ em_maps_load_locations(el); }); 1504 } 1505}); 1506//Load single maps (each map is treated as a seperate map). 1507function em_maps() { 1508 //Find all the maps on this page and load them 1509 jQuery('.em-location-map').each( function(index, el){ em_maps_load_location(el); } ); 1510 jQuery('.em-locations-map').each( function(index, el){ em_maps_load_locations(el); } ); 1511 1512 //Location stuff - only needed if inputs for location exist 1513 if( jQuery('select#location-select-id, input#location-address').length > 0 ){ 1514 var map, marker; 1515 //load map info 1516 var refresh_map_location = function(){ 1517 var location_latitude = jQuery('#location-latitude').val(); 1518 var location_longitude = jQuery('#location-longitude').val(); 1519 if( !(location_latitude == 0 && location_longitude == 0) ){ 1520 var position = new google.maps.LatLng(location_latitude, location_longitude); //the location coords 1521 marker.setPosition(position); 1522 var mapTitle = (jQuery('input#location-name').length > 0) ? jQuery('input#location-name').val():jQuery('input#title').val(); 1523 mapTitle = em_esc_attr(mapTitle); 1524 marker.setTitle( mapTitle ); 1525 jQuery('#em-map').show(); 1526 jQuery('#em-map-404').hide(); 1527 google.maps.event.trigger(map, 'resize'); 1528 map.setCenter(position); 1529 map.panBy(40,-55); 1530 infoWindow.setContent( 1531 '<div id="location-balloon-content"><strong>' + mapTitle + '</strong><br>' + 1532 em_esc_attr(jQuery('#location-address').val()) + 1533 '<br>' + em_esc_attr(jQuery('#location-town').val()) + 1534 '</div>' 1535 ); 1536 infoWindow.open(map, marker); 1537 jQuery(document).triggerHandler('em_maps_location_hook', [map, infoWindow, marker, 0]); 1538 } else { 1539 jQuery('#em-map').hide(); 1540 jQuery('#em-map-404').show(); 1541 } 1542 }; 1543 1544 //Add listeners for changes to address 1545 var get_map_by_id = function(id){ 1546 if(jQuery('#em-map').length > 0){ 1547 jQuery('#em-map-404 .em-loading-maps').show(); 1548 jQuery.getJSON(document.URL,{ em_ajax_action:'get_location', id:id }, function(data){ 1549 if( data.location_latitude!=0 && data.location_longitude!=0 ){ 1550 loc_latlng = new google.maps.LatLng(data.location_latitude, data.location_longitude); 1551 marker.setPosition(loc_latlng); 1552 marker.setTitle( data.location_name ); 1553 marker.setDraggable(false); 1554 jQuery('#em-map').show(); 1555 jQuery('#em-map-404').hide(); 1556 jQuery('#em-map-404 .em-loading-maps').hide(); 1557 map.setCenter(loc_latlng); 1558 map.panBy(40,-55); 1559 infoWindow.setContent( '<div id="location-balloon-content">'+ data.location_balloon +'</div>'); 1560 infoWindow.open(map, marker); 1561 google.maps.event.trigger(map, 'resize'); 1562 jQuery(document).triggerHandler('em_maps_location_hook', [map, infoWindow, marker, 0]); 1563 }else{ 1564 jQuery('#em-map').hide(); 1565 jQuery('#em-map-404').show(); 1566 jQuery('#em-map-404 .em-loading-maps').hide(); 1567 } 1568 }); 1569 } 1570 }; 1571 jQuery('#location-select-id, input#location-id').on('change', function(){get_map_by_id(jQuery(this).val());} ); 1572 jQuery('#location-name, #location-town, #location-address, #location-state, #location-postcode, #location-country').on('change', function(){ 1573 //build address 1574 if( jQuery(this).prop('readonly') === true ) return; 1575 var addresses = [ jQuery('#location-address').val(), jQuery('#location-town').val(), jQuery('#location-state').val(), jQuery('#location-postcode').val() ]; 1576 var address = ''; 1577 jQuery.each( addresses, function(i, val){ 1578 if( val != '' ){ 1579 address = ( address == '' ) ? address+val:address+', '+val; 1580 } 1581 }); 1582 if( address == '' ){ //in case only name is entered, no address 1583 jQuery('#em-map').hide(); 1584 jQuery('#em-map-404').show(); 1585 return false; 1586 } 1587 //do country last, as it's using the text version 1588 if( jQuery('#location-country option:selected').val() != 0 ){ 1589 address = ( address == '' ) ? address+jQuery('#location-country option:selected').text():address+', '+jQuery('#location-country option:selected').text(); 1590 } 1591 //add working indcator whilst we search 1592 jQuery('#em-map-404 .em-loading-maps').show(); 1593 //search! 1594 if( address != '' && jQuery('#em-map').length > 0 ){ 1595 geocoder.geocode( { 'address': address }, function(results, status) { 1596 if (status == google.maps.GeocoderStatus.OK) { 1597 jQuery('#location-latitude').val(results[0].geometry.location.lat()); 1598 jQuery('#location-longitude').val(results[0].geometry.location.lng()); 1599 } 1600 refresh_map_location(); 1601 }); 1602 } 1603 }); 1604 1605 //Load map 1606 if(jQuery('#em-map').length > 0){ 1607 var em_LatLng = new google.maps.LatLng(0, 0); 1608 var map_options = { 1609 zoom: 14, 1610 center: em_LatLng, 1611 mapTypeId: google.maps.MapTypeId.ROADMAP, 1612 mapTypeControl: false, 1613 gestureHandling: 'cooperative' 1614 }; 1615 if( typeof EM.google_maps_styles !== 'undefined' ){ map_options.styles = EM.google_maps_styles; } 1616 map = new google.maps.Map( document.getElementById('em-map'), map_options); 1617 var marker = new google.maps.Marker({ 1618 position: em_LatLng, 1619 map: map, 1620 draggable: true 1621 }); 1622 infoWindow = new google.maps.InfoWindow({ 1623 content: '' 1624 }); 1625 var geocoder = new google.maps.Geocoder(); 1626 google.maps.event.addListener(infoWindow, 'domready', function() { 1627 document.getElementById('location-balloon-content').parentNode.style.overflow=''; 1628 document.getElementById('location-balloon-content').parentNode.parentNode.style.overflow=''; 1629 }); 1630 google.maps.event.addListener(marker, 'dragend', function() { 1631 var position = marker.getPosition(); 1632 jQuery('#location-latitude').val(position.lat()); 1633 jQuery('#location-longitude').val(position.lng()); 1634 map.setCenter(position); 1635 map.panBy(40,-55); 1636 }); 1637 if( jQuery('#location-select-id').length > 0 ){ 1638 jQuery('#location-select-id').trigger('change'); 1639 }else{ 1640 refresh_map_location(); 1641 } 1642 jQuery(document).triggerHandler('em_map_loaded', [map, infoWindow, marker]); 1643 } 1644 //map resize listener 1645 jQuery(window).on('resize', function(e) { 1646 google.maps.event.trigger(map, "resize"); 1647 map.setCenter(marker.getPosition()); 1648 map.panBy(40,-55); 1649 }); 1650 } 1651 em_maps_loaded = true; //maps have been loaded 1652 jQuery(document).triggerHandler('em_maps_loaded'); 1653} 1654 1655function em_map_infobox(marker, message, map) { 1656 var iw = new google.maps.InfoWindow({ content: message });
1657 google.maps.event.addListener(marker, 'click', function() { 1658 if( infoWindow ) infoWindow.close(); 1659 infoWindow = iw; 1660 iw.open(map,marker); 1661 }); 1662} 1663 1664function em_esc_attr( str ){ 1665 if( typeof str !== 'string' ) return ''; 1666 return str.replace(/</gi,'<').replace(/>/gi,'>'); 1667} 1668 1669 1670// Modal Open/Close 1671let openModal = function( modal, onOpen = null ){ 1672 modal = jQuery(modal); 1673 modal.appendTo(document.body); 1674 setTimeout( function(){ 1675 modal.addClass('active').find('.em-modal-popup').addClass('active'); 1676 jQuery(document).triggerHandler('em_modal_open', [modal]); 1677 if( typeof onOpen === 'function' ){ 1678 onOpen(); 1679 } 1680 }, 100); // timeout allows css transition 1681}; 1682let closeModal = function( modal, onClose = null ){ 1683 modal = jQuery(modal); 1684 modal.removeClass('active').find('.em-modal-popup').removeClass('active'); 1685 setTimeout( function(){ 1686 if( modal.attr('data-parent') ){ 1687 let wrapper = jQuery('#' + modal.attr('data-parent') ); 1688 if( wrapper.length ) { 1689 modal.appendTo(wrapper); 1690 } 1691 } 1692 modal.triggerHandler('em_modal_close'); 1693 if( typeof onClose === 'function' ){ 1694 onClose(); 1695 } 1696 }, 500); // timeout allows css transition 1697} 1698jQuery(document).on('click', '.em-modal .em-close-modal', function(e){ 1699 let modal = jQuery(this).closest('.em-modal'); 1700 if( !modal.attr('data-prevent-close') ) { 1701 closeModal(modal); 1702 } 1703}); 1704jQuery(document).on('click', '.em-modal', function(e){ 1705 var target = jQuery(e.target); 1706 if( target.hasClass('em-modal') ) { 1707 let modal = jQuery(this); 1708 if( !modal.attr('data-prevent-close') ){ 1709 closeModal(modal); 1710 } 1711 } 1712}); 1713 1714//Events Search 1715jQuery(document).ready( function($){ 1716 1717 // handle the views tip/ddm 1718 let views_ddm_options = { 1719 theme : 'light-border', 1720 allowHTML : true, 1721 interactive : true, 1722 trigger : 'manual', 1723 placement : 'bottom', 1724 zIndex : 1000000, 1725 }; 1726 $(document).trigger('em-search-views-trigger-vars',[views_ddm_options]); 1727 let tooltip_vars = { theme : 'light-border', appendTo : 'parent', touch : false, }; 1728 $(document).trigger('em-tippy-vars',[tooltip_vars]); 1729 1730 // sync main search texts to advanced search search 1731 let search_forms = $('.em-search'); 1732 search_forms.each( function(){ 1733 /* 1734 * Important references we'll reuse in scope 1735 */ 1736 let search = $(this); 1737 let search_id = search.attr('id').replace('em-search-', ''); 1738 let search_form = search.find('.em-search-form').first(); 1739 let search_advanced = search.find('.em-search-advanced'); // there should only be one anyway 1740 1741 /* 1742 * Counter functions 1743 */ 1744 const update_input_count = function( input, qty = 1 ){ 1745 let el = jQuery(input); 1746 let total = qty > 0 ? qty : null; 1747 el.attr('data-advanced-total-input', total); 1748 update_search_totals(); 1749 }; 1750 1751 const update_search_totals = function( applied = false ){ 1752 // set everything to 0, recount 1753 search.find('span.total-count').remove(); 1754 // find all fields with total attributes and sum them up 1755 let total = 0; 1756 search_advanced.find('[data-advanced-total-input]').each( function(){ 1757 let total_input = this.getAttribute('data-advanced-total-input'); 1758 total += Math.abs( total_input ); 1759 }); 1760 search.attr('data-advanced-total', total); 1761 update_trigger_count( applied ); 1762 // find all sections with totals and display them (added above) 1763 search_advanced.find('.em-search-advanced-section').each( function(){ 1764 let section = $(this); 1765 let section_total = 0; 1766 section.attr('data-advanced-total', 0); 1767 // go through all set qtys and calculate 1768 section.find('[data-advanced-total-input]').each( function(){ 1769 let total_input = this.getAttribute('data-advanced-total-input'); 1770 section_total += Math.abs( total_input ); 1771 }); 1772 section.attr('data-advanced-total', section_total); 1773 update_section_count(section); 1774 }); 1775 // update triggers, search, clear button etc. 1776 if( total > 0 || !search.attr('data-advanced-previous-total') || total != search.attr('data-advanced-previous-total') ){ 1777 update_submit_buttons( true ); 1778 } 1779 update_clear_button_count(); 1780 } 1781 1782 const update_trigger_count = function( applied = false ){ 1783 let triggers = jQuery('.em-search-advanced-trigger[data-search-advanced-id="em-search-advanced-'+ search_id +'"]'); // search like this ato apply to external triggers 1784 triggers.find('span.total-count').remove(); 1785 let total = search.attr('data-advanced-total'); 1786 if( total > 0 ){ 1787 let trigger_count = jQuery('<span class="total-count">'+ total + '</span>').appendTo(triggers); 1788 if( !applied ){ 1789 trigger_count.addClass('tentative'); 1790 } 1791 } 1792 }; 1793 1794 const update_submit_buttons = function( disabled = false ){ 1795 // update the clear link 1796 let submit_button = search_advanced.find('button[type="submit"]'); 1797 let main_submit_button = search.find('.em-search-main-bar button[type="submit"]'); 1798 let submit_buttons = submit_button.add( main_submit_button ); // merge together to apply chanegs 1799 if( disabled ){ 1800 submit_buttons.removeClass('disabled').attr('aria-disabled', 'false'); 1801 }else{ 1802 submit_buttons.addClass('disabled').attr('aria-disabled', 'true'); 1803 } 1804 }; 1805 1806 const update_section_count = function( section ){
1807 let section_total = section.attr('data-advanced-total'); 1808 section.find('header span.total-count').remove(); 1809 if( section_total > 0 ){ 1810 $('<span class="total-count">'+ section_total +'</span>').appendTo( section.find('header') ); 1811 } 1812 }; 1813 1814 const update_clear_button_count = function(){ 1815 // update the clear link 1816 let clear_link = search_advanced.find('button[type="reset"]'); 1817 if( !clear_link.attr('data-placeholder') ){ 1818 clear_link.attr('data-placeholder', clear_link.text()); 1819 } 1820 let total = search.attr('data-advanced-total'); 1821 if( total > 0 ){ 1822 clear_link.text( clear_link.attr('data-placeholder') + ' (' + total + ')' ).prop('disabled', false); 1823 clear_link.removeClass('disabled').attr('aria-disabled', 'false'); 1824 }else{ 1825 clear_link.text( clear_link.attr('data-placeholder') ); 1826 clear_link.addClass('disabled').attr('aria-disabled', 'true'); 1827 } 1828 }; 1829 1830 /* 1831 * Triggers 1832 */ 1833 search.find('.em-search-views-trigger').each( function(){ 1834 tooltip_vars.content = this.parentElement.getAttribute('aria-label'); 1835 let views_tooltip = tippy(this.parentElement, tooltip_vars); 1836 let views_content = this.parentElement.querySelector('.em-search-views-options'); 1837 let views_content_parent = views_content.parentElement; 1838 let views_select = views_content.querySelector('select'); 1839 let tippy_content = document.createElement('div'); 1840 views_ddm_options.content = tippy_content; 1841 let views_ddm = tippy(this, views_ddm_options); 1842 views_ddm.setProps({ 1843 onShow(instance){ 1844 views_tooltip.disable(); 1845 tippy_content.append(views_content); 1846 }, 1847 onShown(instance){ // keyboard support 1848 views_select.focus(); 1849 }, 1850 onHidden(instance){ 1851 views_tooltip.enable(); 1852 if( views_content.parentElement !== views_content_parent ) { 1853 views_content_parent.append(views_content); 1854 } 1855 } 1856 }); 1857 let tippy_listener = function(e){ 1858 if( e.type === 'keydown' && !(e.which === 13 || e.which === 40) ) return false; 1859 e.preventDefault(); 1860 e.stopPropagation(); 1861 this._tippy.show(); 1862 views_tooltip.hide(); 1863 } 1864 this.addEventListener('click', tippy_listener); 1865 this.addEventListener('keydown', tippy_listener); 1866 this.firstElementChild.addEventListener('focus', function(e){ 1867 views_tooltip.show(); 1868 }); 1869 this.firstElementChild.addEventListener('blur', function(){ 1870 views_tooltip.hide(); 1871 }); 1872 views_select.addEventListener('blur', function(){ 1873 views_ddm.hide(); 1874 }); 1875 }); 1876 1877 search.on('keydown click', '.em-search-views select.em-search-views-options-list', function( e ){ 1878 // get relevant vars 1879 if( e.type === 'keydown' && e.which !== 13 ) return true; 1880 let select = $(this); // get the real one, not tippy 1881 // force only one value selection, if they try more, get first one selected in list 1882 if( select.val().length > 1 ){ 1883 // choose previously selected option 1884 select.val([select.val().shift()]); 1885 } 1886 // get other reference elements we need 1887 let option = select.find(':checked').first(); 1888 let views_wrapper = select.closest('.em-search-views'); 1889 let view_type = option.attr('value'); 1890 let trigger = views_wrapper.children('.em-search-views-trigger'); 1891 let trigger_option = trigger.children('.em-search-view-option'); 1892 // change view, if different 1893 if( view_type !== trigger_option.attr('data-view') ){ 1894 trigger_option.attr('data-view', option.attr('value')).text(option.text()); 1895 // remove custom search vals from current view so it's not used into another view 1896 $('#em-view-'+search_id).find('#em-view-custom-data-search-'+search_id).remove(); 1897 // trigger custom event in case form disabled due to no search vals 1898 search_form.trigger('forcesubmit'); 1899 } 1900 trigger[0]._tippy.hide(); 1901 }); 1902 1903 // add trigger logic for advanced popup modal 1904 search.on('click', 'button.em-search-advanced-trigger', function(){ 1905 if( search.hasClass('advanced-mode-inline') ){ 1906 // inline 1907 if( !search_advanced.hasClass('visible') ){ 1908 search_advanced.slideDown().addClass('visible'); 1909 }else{ 1910 search_advanced.slideUp().removeClass('visible'); 1911 } 1912 }else{ 1913 // wrap modal popup element in a form, so taht it's 'accessible' with keyboard 1914 if( !search_advanced.hasClass('active') ) { 1915 let form_wrapper = $('<form action="" method="post" class="em-search-advanced-form" id="em-search-form-advanced-' + search_id + '"></form>'); 1916 form_wrapper.appendTo(search_advanced); 1917 search_advanced.find('.em-modal-popup').appendTo(form_wrapper); 1918 // open modal 1919 this.blur(); 1920 openModal(search_advanced, function () { 1921 search_advanced.find('input.em-search-text').focus(); 1922 });
1923 } 1924 } 1925 }); 1926 search_advanced.on('em_modal_close', function(){ 1927 search_advanced.find('.em-modal-popup').appendTo(search_advanced); 1928 search_advanced.children('form').remove(); 1929 let trigger = search.find('button.em-search-advanced-trigger').focus(); 1930 if( '_tippy' in trigger[0] ){ 1931 trigger[0]._tippy.hide(); 1932 } 1933 }); 1934 1935 // add header toggle logic to expand/collapse sections - add directly to elements since they move around the DOM due to modal 1936 search_advanced.find('.em-search-advanced-section > header').on('click', function(){ 1937 let header = $(this); 1938 let section = header.closest('section'); 1939 let content = header.siblings('.em-search-section-content'); 1940 if( section.hasClass('active') ){ 1941 content.slideUp(); 1942 section.removeClass('active'); 1943 }else{ 1944 content.slideDown(); 1945 section.addClass('active'); 1946 } 1947 }); 1948 1949 /* 1950 * Advanced Search Field Listeners - Main Search Form 1951 */ 1952 1953 let search_form_advanced_calculate_totals_inputs = function( input ){ 1954 // for textboxes we only need to add or remove 1 advanced 1955 let el = $(input); 1956 let qty = el.val() !== '' ? 1:0; 1957 update_input_count( el, qty ); 1958 }; 1959 1960 // These are for the main search bar, syncing information back into the advanced form 1961 search.on('change input', '.em-search-main-bar input.em-search-text', function( e ){ 1962 // sync advanced input field with same text 1963 let advanced_search_input = search_advanced.find('input.em-search-text'); 1964 advanced_search_input.val( this.value ); 1965 // recalculate totals from here 1966 search_form_advanced_calculate_totals_inputs(advanced_search_input[0]); 1967 }); 1968 search.on('change', '.em-search-main-bar input.em-search-geo-coords', function(){ 1969 let el = $(this); 1970 let advanced_geo = search_advanced.find('div.em-search-geo'); 1971 // copy over value and class names 1972 let advanced_geo_coords = advanced_geo.find('input.em-search-geo-coords'); 1973 advanced_geo_coords.val( el.val() ).attr('class', el.attr('class')); 1974 let geo_text = el.siblings('input.em-search-geo').first(); 1975 advanced_geo.find('input.em-search-geo').val(geo_text.val()).attr('class', geo_text.attr('class')); 1976 // calculate totals from here 1977 search_form_advanced_calculate_totals_inputs(advanced_geo_coords); 1978 }); 1979 search.find('.em-search-main-bar .em-datepicker input.em-search-scope.flatpickr-input').each( function(){ 1980 if( !('_flatpickr' in this) ) return; 1981 this._flatpickr.config.onClose.push( function( selectedDates, dateStr, instance ) { 1982 // update advanced search form datepicker values, trigger a close for it to handle the rest 1983 let advanced_datepicker = search_advanced.find('.em-datepicker input.em-search-scope.flatpickr-input'); 1984 advanced_datepicker[0]._flatpickr.setDate( selectedDates, true ); 1985 advanced_datepicker[0]._flatpickr.close(); 1986 }); 1987 }); 1988 1989 /* 1990 * Advanced Search Field Listeners - Advanced Search Form 1991 */ 1992 1993 // regular text advanced or hidden inputs that represent another ui 1994 search_advanced.on('change input', 'input.em-search-text', function( e ){ 1995 if( e.type === 'change' ){ 1996 // copy over place info on change only, not on each keystroke 1997 search.find('.em-search-main input.em-search-text').val( this.value ); 1998 }else{ 1999 search_form_advanced_calculate_totals_inputs(this); 2000 } 2001 }); 2002 search_advanced.on('change', 'input.em-search-geo-coords', function( e ){ 2003 search_form_advanced_calculate_totals_inputs(this); 2004 //update values in main search 2005 let el = $(this); 2006 let main = search.find('.em-search-main div.em-search-geo'); 2007 if( main.length > 0 ){ 2008 // copy over value and class names 2009 main.find('input.em-search-geo-coords').val( el.val() ).attr('class', el.attr('class')); 2010 let geo_text = el.siblings('input.em-search-geo'); 2011 main.find('input.em-search-geo').val(geo_text.val()).attr('class', geo_text.attr('class')); 2012 } 2013 }); 2014 /* Not sure we should be calculating this... since it's always set to something. 2015 search_advanced.on('change', 'select.em-search-geo-unit, select.em-search-geo-distance', function( e ){
2016 // combine both values into parent, if value set then it's a toggle 2017 let el = jQuery(this); 2018 let qty = el.val() ? 1 : null; 2019 el.closest('.em-search-geo-units').attr('data-advanced-total-input', qty); 2020 update_search_totals(); 2021 }); 2022 */ 2023 search_advanced.on('change', 'input.em-search-eventful', function( e ){ 2024 let el = $(this); 2025 let qty = el.prop('checked') ? 1:0; 2026 update_input_count( el, qty ); 2027 }); 2028 search_advanced.on('calculate_totals', function(){ 2029 $(this).find('input.em-search-text, input.em-search-geo-coords').each( function(){ 2030 search_form_advanced_calculate_totals_inputs(this); 2031 }); 2032 $(this).find('input.em-search-eventful').trigger('change'); 2033 }); 2034 search_advanced.on('clear_search', function(){ 2035 $(this).find('input.em-search-geo').removeClass('off').removeClass('on').val(''); 2036 }); 2037 2038 // datepicker advanced logic 2039 search_advanced.find('.em-datepicker input.em-search-scope.flatpickr-input').each( function(){ 2040 if( !('_flatpickr' in this) ) return; 2041 this._flatpickr.config.onClose.push( function( selectedDates, dateStr, instance ) { 2042 // check previous value against current value, no change, no go 2043 let previous_value = instance.input.getAttribute('data-previous-value'); 2044 if( previous_value !== dateStr ){ 2045 // update counter 2046 let qty = dateStr ? 1:0; 2047 update_input_count(instance.input, qty); 2048 // update main search form datepicker values 2049 let main_datepicker = search.find('.em-search-main-bar .em-datepicker input.em-search-scope.flatpickr-input'); 2050 main_datepicker[0]._flatpickr.setDate( selectedDates, true ); 2051 // set for next time 2052 instance.input.setAttribute('data-previous-value', dateStr); 2053 } 2054 }); 2055 }); 2056 search_advanced.on('calculate_totals', function(){ 2057 search_advanced.find('.em-datepicker input.em-search-scope.flatpickr-input').first().each( function(){ 2058 let qty = this._flatpickr.selectedDates.length > 0 ? 1 : 0; 2059 update_input_count(this, qty); 2060 }); 2061 }); 2062 search_advanced.on('clear_search', function(){ 2063 search_advanced.find('.em-datepicker input.em-search-scope.flatpickr-input').each( function() { 2064 this._flatpickr.clear(); 2065 update_input_count(this, 0); 2066 }); 2067 }); 2068 // clear the date total for calendars, before anything is done 2069 let scope_calendar_check = function(){ 2070 search.find('.em-datepicker input.em-search-scope.flatpickr-input').each( function(){ 2071 if( search.attr('data-view') == 'calendar' ){ 2072 this.setAttribute('data-advanced-total-input', 0); 2073 this._flatpickr.input.disabled = true; 2074 }else{ 2075 this._flatpickr.input.disabled = false; 2076 let qty = this._flatpickr.selectedDates.length > 0 ? 1 : 0; 2077 this.setAttribute('data-advanced-total-input', qty); 2078 } 2079 }); 2080 }; 2081 $(document).on('em_search_loaded', scope_calendar_check); 2082 scope_calendar_check(); 2083 2084 2085 // selectize advanced 2086 search_advanced.find('select.em-selectize').each(function () { 2087 this.selectize.on('change', function(){ 2088 search_advanced_selectize_change(this); 2089 }); 2090 }); 2091 search_advanced.on('calculate_totals', function(){ 2092 $(this).find('select.em-selectize').each( function(){ 2093 search_advanced_selectize_change(this.selectize); 2094 }); 2095 }); 2096 search_advanced.on('clear_search', function(){ 2097 search_advanced.find('select.em-selectize').each( function(){ 2098 this.selectize.clear(); 2099 this.selectize.refreshItems(); 2100 this.selectize.refreshOptions(); 2101 if( !this.classList.contains('always-open') ){ 2102 this.selectize.close(); 2103 this.selectize.$dropdown.hide(); 2104 } 2105 }); 2106 }); 2107 2108 let search_advanced_selectize_change = function( selectize ){ 2109 let qty = selectize.items.length; 2110 // handle 'all' default values 2111 if( qty == 1 && !selectize.items[0] ){ 2112 qty = 0; 2113 } 2114 update_input_count( selectize.$input, qty ); 2115 }; 2116 2117 // location-specific stuff for dropdowns (powered by selectize) 2118 let locations_selectize_load_complete = function(){ 2119 if( 'selectize' in this ) { 2120 this.selectize.settings.placeholder = this.selectize.settings.original_placeholder; 2121 this.selectize.updatePlaceholder(); 2122 // get options from select again 2123 let options = []; 2124 this.selectize.$input.find('option').each( function(){ 2125 let value = this.value !== null ? this.value : this.innerHTML; 2126 options.push({ value : value, text: this.innerHTML}); 2127 }); 2128 this.selectize.addOption(options); 2129 this.selectize.refreshOptions(false); 2130 } 2131 }; 2132 let locations_selectize_load_start = function(){ 2133 if( 'selectize' in this ){ 2134 this.selectize.clearOptions(); 2135 if( !('original_placeholder' in this.selectize.settings) ) this.selectize.settings.original_placeholder = this.selectize.settings.placeholder; 2136 this.selectize.settings.placeholder = EM.txt_loading; 2137 this.selectize.updatePlaceholder(); 2138 } 2139 }; 2140 $('.em-search-advanced select[name=country], .em-search select[name=country]').on('change', function(){ 2141 var el = $(this); 2142 let wrapper = el.closest('.em-search-location'); 2143 wrapper.find('select[name=state]').html('<option value="">'+EM.txt_loading+'</option>'); 2144 wrapper.find('select[name=region]').html('<option value="">'+EM.txt_loading+'</option>'); 2145 wrapper.find('select[name=town]').html('<option value="">'+EM.txt_loading+'</option>'); 2146 wrapper.find('select[name=state], select[name=region], select[name=town]').each( locations_selectize_load_start ); 2147 if( el.val() != '' ){ 2148 wrapper.find('.em-search-location-meta').slideDown(); 2149 var data = { 2150 action : 'search_states', 2151 country : el.val(), 2152 return_html : true, 2153 }; 2154 wrapper.find('select[name=state]').load( EM.ajaxurl, data, locations_selectize_load_complete ); 2155 data.action = 'search_regions'; 2156 wrapper.find('select[name=region]').load( EM.ajaxurl, data, locations_selectize_load_complete ); 2157 data.action = 'search_towns'; 2158 wrapper.find('select[name=town]').load( EM.ajaxurl, data, locations_selectize_load_complete ); 2159 }else{
2160 wrapper.find('.em-search-location-meta').slideUp(); 2161 } 2162 }); 2163 $('.em-search-advanced select[name=region], .em-search select[name=region]').on('change', function(){ 2164 var el = $(this); 2165 let wrapper = el.closest('.em-search-location'); 2166 wrapper.find('select[name=state]').html('<option value="">'+EM.txt_loading+'</option>'); 2167 wrapper.find('select[name=town]').html('<option value="">'+EM.txt_loading+'</option>'); 2168 wrapper.find('select[name=state], select[name=town]').each( locations_selectize_load_start ); 2169 var data = { 2170 action : 'search_states', 2171 region : el.val(), 2172 country : wrapper.find('select[name=country]').val(), 2173 return_html : true 2174 }; 2175 wrapper.find('select[name=state]').load( EM.ajaxurl, data, locations_selectize_load_complete ); 2176 data.action = 'search_towns'; 2177 wrapper.find('select[name=town]').load( EM.ajaxurl, data, locations_selectize_load_complete ); 2178 }); 2179 $('.em-search-advanced select[name=state], .em-search select[name=state]').on('change', function(){ 2180 var el = $(this); 2181 let wrapper = el.closest('.em-search-location'); 2182 wrapper.find('select[name=town]').html('<option value="">'+EM.txt_loading+'</option>').each( locations_selectize_load_start ); 2183 var data = { 2184 action : 'search_towns', 2185 state : el.val(), 2186 region : wrapper.find('select[name=region]').val(), 2187 country : wrapper.find('select[name=country]').val(), 2188 return_html : true 2189 }; 2190 wrapper.find('select[name=town]').load( EM.ajaxurl, data, locations_selectize_load_complete ); 2191 }); 2192 2193 /* 2194 * Clear & Search Actions 2195 */ 2196 // handle clear link for advanced 2197 search_advanced.on( 'click', 'button[type="reset"]', function(){ 2198 // clear text search advanced, run clear hook for other parts to hook into 2199 if( search.attr('data-advanced-total') == 0 ) return; 2200 // search text and geo search 2201 search_advanced.find('input.em-search-text, input.em-search-geo').val('').attr('data-advanced-total-input', null).trigger('change'); 2202 // other implementations hook here and do what you need 2203 search.trigger('clear_search'); 2204 search_advanced.trigger('clear_search'); 2205 // remove counters, set data counters to 0, hide section and submit form without search settings 2206 update_search_totals(true); // in theory, this is 0 and removes everything 2207 search_advanced.find('.em-search-advanced-section').removeClass('active').children('.em-search-section-content').slideUp(); 2208 search_advanced.find('button[type="submit"]').trigger('forceclick'); 2209 update_clear_button_count(); 2210 }).each( function(){ 2211 search_advanced.trigger('calculate_totals'); 2212 update_search_totals(true); 2213 }); 2214 const on_update_trigger_count = function(e, applied = true){ 2215 update_trigger_count( applied ); 2216 }; 2217 search.on('update_trigger_count', on_update_trigger_count); 2218 search_advanced.on('update_trigger_count', on_update_trigger_count); 2219 2220 // handle submission for advanced 2221 search_advanced.on( 'click forceclick', 'button[type="submit"]', function(e){ 2222 e.preventDefault(); 2223 if( this.classList.contains('disabled') && e.type !== 'forceclick' ) return false; 2224 // close attach back to search form 2225 closeModal(search_advanced, function(){ 2226 // submit for search 2227 search_form.submit(); 2228 }); 2229 return false; // we handled it 2230 }); 2231 2232 search.on('submit forcesubmit', '.em-search-form', function(e){ 2233 e.preventDefault(); 2234 let form = $(this); 2235 let submit_buttons = form.find('button[type="submit"]'); 2236 if( e.type !== 'forcesubmit' && submit_buttons.hasClass('disabled') ) return false; 2237 let wrapper = form.closest('.em-search'); 2238 if( wrapper.hasClass('em-search-legacy') ){ 2239 em_submit_legacy_search_form(form); 2240 }else{ 2241 let view = $('#em-view-'+search_id); 2242 let view_type = form.find('[name="view"]').val(); 2243 if( Array.isArray(view_type) ) view_type = view_type.shift(); 2244 // copy over custom view information, remove it further down 2245 let custom_view_data = view.find('#em-view-custom-data-search-'+search_id).clone();
2246 let custom_view_data_container = $('<div class="em-view-custom-data"></div>'); 2247 custom_view_data.children().appendTo(custom_view_data_container); 2248 custom_view_data.remove(); 2249 custom_view_data_container.appendTo(form); 2250 // add loading stuff 2251 view.append('<div class="em-loading"></div>'); 2252 submit_buttons.each( function(){ 2253 this.setAttribute('data-button-text', this.innerHTML); 2254 this.innerHTML = EM.txt_searching; 2255 }); 2256 var vars = form.serialize(); 2257 $.ajax( EM.ajaxurl, { 2258 type : 'POST', 2259 dataType : 'html', 2260 data : vars, 2261 success : function(responseText){ 2262 submit_buttons.each( function(){ 2263 this.innerHTML = this.getAttribute('data-button-text'); 2264 }); 2265 view = EM_View_Updater( view, responseText ); 2266 // update view definitions 2267 view.attr('data-view', view_type); 2268 search.attr('data-view', view_type); 2269 search_advanced.attr('data-view', view_type); 2270 jQuery(document).triggerHandler('em_view_loaded_'+view_type, [view, form, e]); 2271 jQuery(document).triggerHandler('em_search_loaded', [view, form, e]); // ajax has loaded new results 2272 jQuery(document).triggerHandler('em_search_result', [vars, view, e]); // legacy for backcompat, use the above 2273 wrapper.find('.count.tentative').removeClass('tentative'); 2274 // deactivate submit button until changes are made again 2275 submit_buttons.addClass('disabled').attr('aria-disabled', 'true'); 2276 // update search totals 2277 update_search_totals(true); 2278 search.attr('data-advanced-previous-total', search.attr('data-advanced-total')); // so we know if filters were used in previous search 2279 update_submit_buttons(false); 2280 custom_view_data_container.remove(); // remove data so it's reloaded again later 2281 } 2282 }); 2283 } 2284 return false; 2285 }); 2286 2287 // observe resizing 2288 EM_ResizeObserver( EM.search.breakpoints, [search[0]]); 2289 }); 2290 2291 // handle external triggers, e.g. a calendar shortcut for a hidden search form 2292 $(document).on('click', '.em-search-advanced-trigger[data-search-advanced-id]', function(){ 2293 if( this.getAttribute('data-parent-trigger') ) { 2294 document.getElementById(this.getAttribute('data-parent-trigger')).click(); 2295 } 2296 }); 2297 2298 $(document).on('click', '.em-view-container .em-ajax.em-pagination a.page-numbers', function(e){ 2299 var a = $(this); 2300 var data = a.closest('.em-pagination').attr('data-em-ajax'); 2301 var view = a.closest('.em-view-container'); 2302 var qvars = a.attr('href').split('?'); 2303 var vars = qvars[1]; 2304 //add data-em-ajax att if it exists 2305 if( data != '' ){ 2306 vars = vars != '' ? vars+'&'+data : data; 2307 } 2308 view.append('<div class="loading" id="em-loading"></div>'); 2309 $.ajax( EM.ajaxurl, { 2310 type : 'POST', 2311 dataType : 'html', 2312 data : vars, 2313 success : function(responseText) { 2314 view = EM_View_Updater( view, responseText ); 2315 view.find('.em-pagination').each( function(){ 2316 paginationObserver.observe(this); 2317 }); 2318 jQuery(document).triggerHandler('em_page_loaded', [view]); 2319 } 2320 }); 2321 e.preventDefault(); 2322 return false; 2323 }); 2324 2325 const paginationObserver = new ResizeObserver( function( entries ){ 2326 for (let entry of entries) { 2327 let el = entry.target; 2328 if( !el.classList.contains('observing') ) { 2329 el.classList.add('observing'); // prevent endless loop on resizing within this check 2330 // check if any pagination parts are overflowing 2331 let overflowing = false; 2332 el.classList.remove('overflowing'); 2333 for ( const item of el.querySelectorAll('.not-current')) { 2334 if( item.scrollHeight > item.clientHeight || item.scrollWidth > item.clientWidth ){ 2335 overflowing = true; 2336 break; // break if one has overflown 2337 } 2338 }; 2339 // add or remove overflow classes 2340 if( overflowing ){ 2341 el.classList.add('overflowing') 2342 } 2343 el.classList.remove('observing'); 2344 } 2345 } 2346 });
2347 $('.em-pagination').each( function(){ 2348 paginationObserver.observe(this); 2349 }); 2350 2351 /* START Legacy */ 2352 // deprecated - hide/show the advanced search advanced link - relevant for old template overrides 2353 $(document).on('click change', '.em-search-legacy .em-toggle', function(e){ 2354 e.preventDefault(); 2355 //show or hide advanced search, hidden by default 2356 var el = $(this); 2357 var rel = el.attr('rel').split(':'); 2358 if( el.hasClass('show-search') ){ 2359 if( rel.length > 1 ){ el.closest(rel[1]).find(rel[0]).slideUp(); } 2360 else{ $(rel[0]).slideUp(); } 2361 el.find('.show, .show-advanced').show(); 2362 el.find('.hide, .hide-advanced').hide(); 2363 el.removeClass('show-search'); 2364 }else{ 2365 if( rel.length > 1 ){ el.closest(rel[1]).find(rel[0]).slideDown(); } 2366 else{ $(rel[0]).slideDown(); } 2367 el.find('.show, .show-advanced').hide(); 2368 el.find('.hide, .hide-advanced').show(); 2369 el.addClass('show-search'); 2370 } 2371 }); 2372 // handle search form submission 2373 let em_submit_legacy_search_form = function( form ){ 2374 if( this.em_search && this.em_search.value == EM.txt_search){ this.em_search.value = ''; } 2375 var results_wrapper = form.closest('.em-search-wrapper').find('.em-search-ajax'); 2376 if( results_wrapper.length == 0 ) results_wrapper = $('.em-search-ajax'); 2377 if( results_wrapper.length > 0 ){ 2378 results_wrapper.append('<div class="loading" id="em-loading"></div>'); 2379 var submitButton = form.find('.em-search-submit button'); 2380 submitButton.attr('data-button-text', submitButton.val()).val(EM.txt_searching); 2381 var img = submitButton.children('img'); 2382 if( img.length > 0 ) img.attr('src', img.attr('src').replace('search-mag.png', 'search-loading.gif')); 2383 var vars = form.serialize(); 2384 $.ajax( EM.ajaxurl, { 2385 type : 'POST', 2386 dataType : 'html', 2387 data : vars, 2388 success : function(responseText){ 2389 submitButton.val(submitButton.attr('data-button-text')); 2390 if( img.length > 0 ) img.attr('src', img.attr('src').replace('search-loading.gif', 'search-mag.png'));
2391 results_wrapper.replaceWith(responseText); 2392 if( form.find('input[name=em_search]').val() == '' ){ form.find('input[name=em_search]').val(EM.txt_search); } 2393 //reload results_wrapper 2394 results_wrapper = form.closest('.em-search-wrapper').find('.em-search-ajax'); 2395 if( results_wrapper.length == 0 ) results_wrapper = $('.em-search-ajax'); 2396 jQuery(document).triggerHandler('em_search_ajax', [vars, results_wrapper, e]); //ajax has loaded new results 2397 } 2398 }); 2399 e.preventDefault(); 2400 return false; 2401 } 2402 }; 2403 if( $('.em-search-ajax').length > 0 ){ 2404 $(document).on('click', '.em-search-ajax a.page-numbers', function(e){ 2405 var a = $(this); 2406 var data = a.closest('.em-pagination').attr('data-em-ajax'); 2407 var wrapper = a.closest('.em-search-ajax'); 2408 var wrapper_parent = wrapper.parent(); 2409 var qvars = a.attr('href').split('?'); 2410 var vars = qvars[1]; 2411 //add data-em-ajax att if it exists 2412 if( data != '' ){ 2413 vars = vars != '' ? vars+'&'+data : data; 2414 } 2415 vars += '&legacy=1'; 2416 wrapper.append('<div class="loading" id="em-loading"></div>'); 2417 $.ajax( EM.ajaxurl, { 2418 type : 'POST', 2419 dataType : 'html', 2420 data : vars, 2421 success : function(responseText) { 2422 wrapper.replaceWith(responseText); 2423 wrapper = wrapper_parent.find('.em-search-ajax'); 2424 jQuery(document).triggerHandler('em_search_ajax', [vars, wrapper, e]); //ajax has loaded new results 2425 } 2426 }); 2427 e.preventDefault(); 2428 return false; 2429 }); 2430 } 2431 /* END Legacy */ 2432}); 2433 2434/* 2435* CALENDAR 2436*/ 2437jQuery(document).ready( function($){ 2438 2439 const em_calendar_init = function( calendar ){ 2440 calendar = $(calendar); 2441 if( !calendar.attr('id') || !calendar.attr('id').match(/^em-calendar-[0-9+]$/) ){ 2442 calendar.attr('id', 'em-calendar-' + Math.floor(Math.random() * 10000)); // retroactively add id to old templates 2443 }
2444 calendar.find('a').off("click"); 2445 calendar.on('click', 'a.em-calnav, a.em-calnav-today', function(e){ 2446 e.preventDefault(); 2447 const el = $(this); 2448 if( el.data('disabled') == 1 || el.attr('href') === '') return; // do nothing if disabled or no link provided 2449 el.closest('.em-calendar').prepend('<div class="loading" id="em-loading"></div>'); 2450 let url = em_ajaxify(el.attr('href')); 2451 const calendar_id = calendar.attr('id').replace('em-calendar-', ''); 2452 const custom_data = $('form#em-view-custom-data-calendar-'+ calendar_id); 2453 let form_data = new FormData(); 2454 if( custom_data.length > 0 ){ 2455 form_data = new FormData(custom_data[0]); 2456 let url_params = new URL(url, window.location.origin).searchParams; 2457 for (const [key, value] of url_params.entries()) { 2458 form_data.set(key, value); 2459 } 2460 } 2461 // check advanced trigger 2462 if( calendar.hasClass('with-advanced') ){ 2463 form_data.set('has_advanced_trigger', 1); 2464 } 2465 $.ajax({ 2466 url: url, 2467 data: form_data, 2468 processData: false, 2469 contentType: false, 2470 method: 'POST', 2471 success: function( data ){ 2472 let view = EM_View_Updater( calendar, data ); 2473 if( view.hasClass('em-view-container') ){ 2474 calendar = view.find('.em-calendar'); 2475 }else{ 2476 calendar = view; 2477 } 2478 calendar.trigger('em_calendar_load'); 2479 }, 2480 dataType: 'html' 2481 }); 2482 } ); 2483 let calendar_trigger_ajax = function( calendar, year, month ){ 2484 let link = calendar.find('.em-calnav-next'); 2485 let url = new URL(link.attr('href'), window.location.origin); 2486 url.searchParams.set('mo', month); 2487 url.searchParams.set('yr', year); 2488 link.attr('href', url.toString()).trigger('click'); 2489 }; 2490 let calendar_resize_monthpicker = function( instance, text ){ 2491 let span = $('<span class="marker">'+ text +'</span>'); 2492 span.insertAfter(instance); 2493 let width = span.width() + 40; 2494 span.remove(); 2495 instance.style.setProperty('width', width+'px', 'important'); 2496 } 2497 let calendar_month_init = function(){ 2498 let month_form = calendar.find('.month form'); 2499 calendar.find('.event-style-pill .em-cal-event').on('click', function( e ){ 2500 e.preventDefault(); 2501 if( !(calendar.hasClass('preview-tooltips') && calendar.data('preview-tooltips-trigger')) && !(calendar.hasClass('preview-modal')) ) { 2502 let link = this.getAttribute('data-event-url'); 2503 if (link !== null) { 2504 //window.location.href = link; 2505 } 2506 } 2507 }); 2508 if( month_form.length > 0 ){ 2509 month_form.find('input[type="submit"]').hide(); 2510 let select = $('<select style="display:none;visibility:hidden;"></select>').appendTo(month_form); 2511 let option = $('<option></option>').appendTo(select); 2512 let current_datetime = calendar.find('select[name="month"]').val() + calendar.find('select[name="year"]').val(); 2513 let month = calendar.find('select[name="month"]'); 2514 let year = calendar.find('select[name="year"]'); 2515 let monthpicker = calendar.find('.em-month-picker'); 2516 let month_value = monthpicker.data('month-value'); 2517 monthpicker.prop('type', 'text').prop('value', month_value); 2518 calendar_resize_monthpicker( monthpicker[0], month_value ); 2519 let monthpicker_wrapper = $('#em-flatpickr'); 2520 if( monthpicker_wrapper.length === 0 ) { 2521 monthpicker_wrapper = $('<div class="em pixelbones" id="em-flatpickr"></div>').appendTo('body'); 2522 } 2523 let minDate = null; 2524 if( calendar.data('scope') === 'future' ){ 2525 minDate = new Date(); 2526 minDate.setMonth(minDate.getMonth()-1); 2527 } 2528 // locale 2529 if( 'locale' in EM.datepicker ){ 2530 flatpickr.localize(flatpickr.l10ns[EM.datepicker.locale]); 2531 flatpickr.l10ns.default.firstDayOfWeek = EM.firstDay; 2532 } 2533 monthpicker.flatpickr({ 2534 appendTo : monthpicker_wrapper[0], 2535 dateFormat : 'F Y', 2536 minDate : minDate, 2537 disableMobile: "true", 2538 plugins: [ 2539 new monthSelectPlugin({ 2540 shorthand: true, //defaults to false 2541 dateFormat: "F Y", //defaults to "F Y" 2542 altFormat: "F Y", //defaults to "F Y" 2543 }) 2544 ], 2545 onChange: function(selectedDates, dateStr, instance) { 2546 calendar_resize_monthpicker( instance.input, dateStr ); 2547 calendar_trigger_ajax( calendar, selectedDates[0].getFullYear(), selectedDates[0].getMonth()+1); 2548 }, 2549 }); 2550 monthpicker.addClass('select-toggle') 2551 /* Disabling native picker at the moment, too quriky cross-browser 2552 } 2553 */ 2554 } 2555 if( calendar.hasClass('preview-tooltips') ){ 2556 var tooltip_vars = { 2557 theme : 'light-border', 2558 allowHTML : true, 2559 interactive : true, 2560 trigger : 'mouseenter focus click', 2561 content(reference) { 2562 return document.createElement('div'); 2563 }, 2564 onShow( instance ){ 2565 const id = instance.reference.getAttribute('data-event-id'); 2566 const template = calendar.find('section.em-cal-events-content .em-cal-event-content[data-event-id="'+id+'"]'); 2567 instance.props.content.append(template.first().clone()[0]); 2568 }, 2569 onHide( instance ){ 2570 instance.props.content.innerHTML = ''; 2571 } 2572 }; 2573 if( calendar.data('preview-tooltips-trigger') ) { 2574 tooltip_vars.trigger = calendar.data('preview-tooltips-trigger'); 2575 } 2576 $(document).trigger('em-tippy-cal-event-vars',[tooltip_vars]); 2577 tippy(calendar.find('.em-cal-event').toArray(), tooltip_vars); 2578 }else if( calendar.hasClass('preview-modal') ){ 2579 // Modal 2580 calendar.find('.em-cal-event').on('click', function(){ 2581 const id = this.getAttribute('data-event-id'); 2582 const modal = calendar.find('section.em-cal-events-content .em-cal-event-content[data-event-id="'+id+'"]'); 2583 modal.attr('data-calendar-id', calendar.attr('id')); 2584 openModal(modal); 2585 }); 2586 } 2587 // responsive mobile view for date clicks 2588 if( calendar.hasClass('responsive-dateclick-modal') ){ 2589 calendar.find('.eventful .em-cal-day-date, .eventful-post .em-cal-day-date, .eventful-pre .em-cal-day-date').on('click', function( e ){ 2590 //if( calendar.hasClass('size-small') || calendar.hasClass('size-medium') ){ 2591 e.preventDefault(); 2592 const id = this.getAttribute('data-calendar-date'); 2593 const modal = calendar.find('.em-cal-date-content[data-calendar-date="'+id+'"]'); 2594 modal.attr('data-calendar-id', calendar.attr('id')); 2595 openModal(modal); 2596 //} 2597 }); 2598 } 2599 // observe resizing if not fixed 2600 if( !calendar.hasClass('size-fixed') ){ 2601 EM_ResizeObserver( EM.calendar.breakpoints, [calendar[0], calendar[0]]); 2602 } 2603 // even aspect, because aspect ratio can screw up widths vs row template heights 2604 let calendar_body = calendar.find('.em-cal-body'); 2605 if( calendar_body.hasClass('even-aspect') ) { 2606 let ro_function = function (el) { 2607 let width = el.firstElementChild.getBoundingClientRect().width; 2608 if (width > 0) { 2609 el.style.setProperty('--grid-auto-rows', 'minmax(' + width + 'px, auto)'); 2610 } 2611 } 2612 let ro = new ResizeObserver(function (entries) {
2613 for (let entry of entries) { 2614 ro_function(entry.target); 2615 } 2616 }); 2617 ro.observe(calendar_body[0]); 2618 ro_function(calendar_body[0]); 2619 } 2620 2621 // figure out colors 2622 calendar.find('.date-day-colors').each( function(){ 2623 let colors = JSON.parse(this.getAttribute('data-colors')); 2624 let day = $(this).siblings('.em-cal-day-date.colored'); 2625 let sides = { 2626 1 : { 1 : '--date-border-color', 'class' : 'one' }, 2627 2 : { 1 : '--date-border-color-top', 2 : '--date-border-color-bottom', 'class' : 'two' }, 2628 3 : { 1 : '--date-border-color-top', 2 : '--date-border-color-right', 3 : '--date-border-color-bottom', 'class' : 'three' }, 2629 4 : { 1 : '--date-border-color-top', 2 : '--date-border-color-right', 3 : '--date-border-color-bottom', 4 : '--date-border-color-left', 'class' : 'four' }, 2630 }; 2631 for (let i = 0; i < colors.length; i += 4) { 2632 const ring_colors = colors.slice(i, i + 4); 2633 // add a ring 2634 let outer_ring = day.children().first(); 2635 let new_ring = $('<div class="ring"></div>').prependTo(day); 2636 outer_ring.appendTo(new_ring); 2637 new_ring.addClass( sides[ring_colors.length].class ); 2638 for ( let it = 0; it < ring_colors.length; it++ ){ 2639 new_ring.css(sides[ring_colors.length][it+1], ring_colors[it]); 2640 } 2641 } 2642 }); 2643 2644 if( calendar.hasClass('with-advanced') ){ 2645 const trigger = calendar.find('.em-search-advanced-trigger'); 2646 const search_advanced = $('#'+trigger.attr('data-search-advanced-id')); 2647 search_advanced.triggerHandler('update_trigger_count'); 2648 } 2649 } 2650 calendar_month_init(); 2651 $(document).triggerHandler('em_calendar_loaded', [calendar]); 2652 }; 2653 $('.em-calendar').each( function(){ 2654 let calendar = $(this); 2655 em_calendar_init( calendar ); 2656 }); 2657 $(document).on('em_calendar_load', '.em-calendar', function(){ 2658 em_calendar_init( this ); 2659 }); 2660 $(document).on('em_view_loaded_calendar', function( e, view, form ){ 2661 let calendar; 2662 if( view.hasClass('em-calendar') ){ 2663 calendar = view; 2664 }else { 2665 calendar = view.find('.em-calendar').first(); 2666 } 2667 em_calendar_init( calendar ); 2668 }); 2669}); 2670 2671let EM_View_Updater = function( element, html ){ 2672 let content = jQuery(html); 2673 let view = element.hasClass('em-view-container') ? element : element.parent('.em-view-container'); 2674 if( view.length > 0 ){ 2675 if( content.hasClass('em-view-container') ){ 2676 view.replaceWith(content); 2677 view = content; 2678 }else{ 2679 view.empty().append(content); 2680 } 2681 }else{ 2682 // create a view if possible 2683 if( content.hasClass('em-view-container') ){ 2684 element.replaceWith(content); 2685 view = content; 2686 }else if( content.attr('data-view-id') ){ 2687 let view = jQuery('<div class="em em-view-container"></div>'); 2688 let view_id = content.attr('data-view-id'); 2689 view.attr('data-view-id', view_id); 2690 view.attr('id', 'em-view-'+ view_id); 2691 view.attr('data-view-type', content.attr('data-view-type')); 2692 view.append(content); 2693 element.replaceWith(view); 2694 } 2695 } 2696 return view; 2697} 2698 2699/** 2700 * Resize watcher for EM elements. Supply an object (localized array) of name > breakpoint, in order of least to largest and it'll add size-{name} class name according to the breakpoint. 2701 * An object item with value false will represent any screensize, i.e. it should be the last value when all breakpoints aren't met. 2702 * @param breakpoints 2703 * @param elements 2704 * @constructor 2705 */ 2706let EM_ResizeObserver = function( breakpoints, elements ){ 2707 const ro = new ResizeObserver( function( entries ){ 2708 for (let entry of entries) { 2709 let el = entry.target; 2710 for (const [name, breakpoint] of Object.entries(breakpoints)) { 2711 if ( el.offsetWidth <= breakpoint || breakpoint === false ){ 2712 for( let breakpoint_name of Object.keys(breakpoints) ){ 2713 if( breakpoint_name !== name ) el.classList.remove('size-'+ breakpoint_name); 2714 } 2715 el.classList.add('size-'+ name); 2716 break; 2717 } 2718 }; 2719 } 2720 });
2721 elements.forEach( function( el ){ 2722 if( typeof el !== 'undefined' ){ 2723 ro.observe(el); 2724 } 2725 }); 2726 return ro; 2727}; 2728 2729// event list and event page (inc. some extra booking form logic) - todo/cleanup 2730jQuery(document).ready( function($){ 2731 // Events List 2732 let breakpoints = { 2733 'small' : 600, 2734 'large' : false, 2735 } 2736 const events_ro = EM_ResizeObserver( breakpoints, $('.em-list').toArray() ); 2737 $(document).on('em_page_loaded em_view_loaded_list em_view_loaded_list-grouped', function( e, view ){ 2738 let new_elements = view.find('.em-list').each( function(){ 2739 events_ro.observe( this ); 2740 }); 2741 }); 2742 2743 // Single event area 2744 breakpoints = { 2745 'small' : 600, 2746 'medium' : 900, 2747 'large' : false, 2748 } 2749 const event_ro = EM_ResizeObserver( breakpoints, $('.em-item-single').toArray() ); 2750 $(document).on('em_view_loaded', function( e, view ){ 2751 let new_elements = view.find('.em-event-single').each( function(){ 2752 event_ro.observe( this ); 2753 }); 2754 }); 2755 // booking form area (WIP) 2756 $(document).on("click", ".em-event-booking-form .em-login-trigger a", function( e ){ 2757 e.preventDefault(); 2758 var parent = $(this).closest('.em-event-booking-form'); 2759 parent.find('.em-login-trigger').hide(); 2760 parent.find('.em-login-content').fadeIn(); 2761 let login_form = parent.find('.em-login'); 2762 login_form[0].scrollIntoView({ 2763 behavior: 'smooth' 2764 }); 2765 login_form.first().find('input[name="log"]').focus(); 2766 2767 }); 2768 $(document).on("click", ".em-event-booking-form .em-login-cancel", function( e ){ 2769 e.preventDefault(); 2770 let parent = $(this).closest('.em-event-booking-form'); 2771 parent.find('.em-login-content').hide(); 2772 parent.find('.em-login-trigger').show(); 2773 }); 2774 EM_ResizeObserver( {'small': 500, 'large' : false}, $('.em-login').toArray()); 2775 2776}); 2777 2778// handle generic ajax submission forms vanilla style 2779document.addEventListener('DOMContentLoaded', function () { 2780 document.querySelectorAll('form.em-ajax-form').forEach( function(el){ 2781 el.addEventListener('submit', function(e){ 2782 e.preventDefault(); 2783 let form = e.currentTarget; 2784 let formData = new FormData(form); 2785 let button = form.querySelector('button[type="submit"]'); 2786 let loader; 2787 2788 if( form.classList.contains('no-overlay-spinner') ){ 2789 form.classList.add('loading'); 2790 }else{ 2791 let loader = document.createElement('div'); 2792 loader.id = 'em-loading'; 2793 form.append(loader); 2794 } 2795 2796 var request = new XMLHttpRequest(); 2797 if( form.getAttribute('data-api-url') ){ 2798 request.open('POST', form.getAttribute('data-api-url'), true); 2799 request.setRequestHeader('X-WP-Nonce', EM.api_nonce); 2800 }else{ 2801 request.open('POST', EM.ajaxurl, true); 2802 } 2803 2804 request.onload = function() { 2805 if( loader ) loader.remove(); 2806 if (this.status >= 200 && this.status < 400) { 2807 // Success! 2808 try { 2809 let data = JSON.parse(this.response); 2810 let notice; 2811 if( !form.classList.contains('no-inline-notice') ){ 2812 notice = form.querySelector('.em-notice'); 2813 if( !notice ){ 2814 notice = document.createElement('li'); 2815 form.prepend(notice); 2816 if( formData.get('action') ){ 2817 form.dispatchEvent( new CustomEvent( 'em_ajax_form_success_' + formData.get('action'), { 2818 detail : { 2819 form : form, 2820 notice : notice, 2821 response : data, 2822 } 2823 }) ); 2824 } 2825 } 2826 notice.innerHTML = ''; 2827 notice.setAttribute('class', 'em-notice'); 2828 } 2829 if( data.result ){ 2830 if( !form.classList.contains('no-inline-notice') ){ 2831 notice.classList.add('em-notice-success'); 2832 notice.innerHTML = data.message; 2833 form.replaceWith(notice); 2834 }else{ 2835 form.classList.add('load-successful'); 2836 form.classList.remove('loading'); 2837 if( data.message ){ 2838 EM_Alert(data.message); 2839 } 2840 } 2841 }else{ 2842 if( !form.classList.contains('no-inline-notice') ){ 2843 notice.classList.add('em-notice-error'); 2844 notice.innerHTML = data.errors; 2845 }else{ 2846 EM_Alert(data.errors); 2847 } 2848 } 2849 } catch(e) { 2850 alert( 'Error Encountered : ' + e); 2851 } 2852 } else { 2853 alert('Error encountered... please see debug logs or contact support.'); 2854 } 2855 form.classList.remove('loading'); 2856 }; 2857 2858 request.onerror = function() {
2859 alert('Connection error encountered... please see debug logs or contact support.'); 2860 }; 2861 2862 request.send( formData ); 2863 return false; 2864 }); 2865 }); 2866}); 2867 2868function EM_Alert( content ){ 2869 // find the alert modal, create if not 2870 let modal = document.getElementById('em-alert-modal'); 2871 if( modal === null ){ 2872 modal = document.createElement('div'); 2873 modal.setAttribute('class', "em pixelbones em-modal"); 2874 modal.id = 'em-alert-modal'; 2875 modal.innerHTML = '<div class="em-modal-popup"><header><a class="em-close-modal"></a><div class="em-modal-title"> </div></header><div class="em-modal-content" id="em-alert-modal-content"></div></div>'; 2876 document.body.append(modal); 2877 } 2878 document.getElementById('em-alert-modal-content').innerHTML = content; 2879 openModal(modal); 2880}; 2881 2882/*! 2883 * jquery-timepicker v1.13.16 - Copyright (c) 2020 Jon Thornton - https://www.jonthornton.com/jquery-timepicker/ 2884 * Did a search/replace of timepicker to em_timepicker to prevent conflicts. 2885 */ 2886(function(){"use strict";function _typeof(obj){"@babel/helpers - typeof";if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function(obj){return typeof obj}}else{_typeof=function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj}}return _typeof(obj)}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly)symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable});keys.push.apply(keys,symbols)}return keys}function _objectSpread2(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};if(i%2){ownKeys(Object(source),true).forEach(function(key){_defineProperty(target,key,source[key])})}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}}return target}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _createForOfIteratorHelper(o){if(typeof Symbol==="undefined"||o[Symbol.iterator]==null){if(Array.isArray(o)||(o=_unsupportedIterableToArray(o))){var i=0;var F=function(){};return{s:F,n:function(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]}},e:function(e){throw e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var it,normalCompletion=true,didErr=false,err;return{s:function(){it=o[Symbol.iterator]()},n:function(){var step=it.next();normalCompletion=step.done;return step},e:function(e){didErr=true;err=e},f:function(){try{if(!normalCompletion&&it.return!=null)it.return()}finally{if(didErr)throw err}}}}var ONE_DAY=86400;var roundingFunction=function roundingFunction(seconds,settings){if(seconds===null){return null}else if(typeof settings.step!=="number"){return seconds}else{var offset=seconds%(settings.step*60);
2886var start=settings.minTime||0;offset-=start%(settings.step*60);if(offset>=settings.step*30){seconds+=settings.step*60-offset}else{seconds-=offset}return _moduloSeconds(seconds,settings)}};function _moduloSeconds(seconds,settings){if(seconds==ONE_DAY&&settings.show2400){return seconds}return seconds%ONE_DAY}var DEFAULT_SETTINGS={appendTo:"body",className:null,closeOnWindowScroll:false,disableTextInput:false,disableTimeRanges:[],disableTouchKeyboard:false,durationTime:null,forceRoundTime:false,lang:{},listWidth:null,maxTime:null,minTime:null,noneOption:false,orientation:"l",roundingFunction:roundingFunction,scrollDefault:null,selectOnBlur:false,show2400:false,showDuration:false,showOn:["click","focus"],showOnFocus:true,step:30,stopScrollPropagation:false,timeFormat:"g:ia",typeaheadHighlight:true,useSelect:false,wrapHours:true};var DEFAULT_LANG={am:"am",pm:"pm",AM:"AM",PM:"PM",decimal:".",mins:"mins",hr:"hr",hrs:"hrs"};var Timepicker=function(){function Timepicker(targetEl){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,Timepicker);this._handleFormatValue=this._handleFormatValue.bind(this);this._handleKeyUp=this._handleKeyUp.bind(this);this.targetEl=targetEl;var attrOptions=Timepicker.extractAttrOptions(targetEl,Object.keys(DEFAULT_SETTINGS));this.settings=this.parseSettings(_objectSpread2(_objectSpread2(_objectSpread2({},DEFAULT_SETTINGS),options),attrOptions))}_createClass(Timepicker,[{key:"hideMe",value:function hideMe(){if(this.settings.useSelect){this.targetEl.blur();return}if(!this.list||!Timepicker.isVisible(this.list)){return}if(this.settings.selectOnBlur){this._selectValue()}this.list.hide();var hideTimepickerEvent=new CustomEvent("hideTimepicker");this.targetEl.dispatchEvent(hideTimepickerEvent)}},{key:"_findRow",value:function _findRow(value){if(!value&&value!==0){return false}var out=false;var value=this.settings.roundingFunction(value,this.settings);if(!this.list){return false}this.list.find("li").each(function(i,obj){var parsed=Number.parseInt(obj.dataset.time);if(Number.isNaN(parsed)){return}if(parsed==value){out=obj;return false}});return out}},{key:"_hideKeyboard",value:function _hideKeyboard(){return(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.settings.disableTouchKeyboard}},{key:"_setTimeValue",value:function _setTimeValue(value,source){if(this.targetEl.nodeName==="INPUT"){if(value!==null||this.targetEl.value!=""){this.targetEl.value=value}var tp=this;var settings=tp.settings;if(settings.useSelect&&source!="select"&&tp.list){tp.list.val(tp._roundAndFormatTime(tp.time2int(value)))}}var selectTimeEvent=new Event("selectTime");if(this.selectedValue!=value){this.selectedValue=value;var changeTimeEvent=new Event("changeTime");
2886var changeEvent=new CustomEvent("change",{detail:"em_timepicker"});if(source=="select"){this.targetEl.dispatchEvent(selectTimeEvent);this.targetEl.dispatchEvent(changeTimeEvent);this.targetEl.dispatchEvent(changeEvent)}else if(["error","initial"].indexOf(source)==-1){this.targetEl.dispatchEvent(changeTimeEvent)}return true}else{if(["error","initial"].indexOf(source)==-1){this.targetEl.dispatchEvent(selectTimeEvent)}return false}}},{key:"_getTimeValue",value:function _getTimeValue(){if(this.targetEl.nodeName==="INPUT"){return this.targetEl.value}else{return this.selectedValue}}},{key:"_selectValue",value:function _selectValue(){var tp=this;var settings=tp.settings;var list=tp.list;var cursor=list.find(".ui-em_timepicker-selected");if(cursor.hasClass("ui-em_timepicker-disabled")){return false}if(!cursor.length){return true}var timeValue=cursor.get(0).dataset.time;if(timeValue){var parsedTimeValue=Number.parseInt(timeValue);if(!Number.isNaN(parsedTimeValue)){timeValue=parsedTimeValue}}if(timeValue!==null){if(typeof timeValue!="string"){timeValue=tp._int2time(timeValue)}tp._setTimeValue(timeValue,"select")}return true}},{key:"time2int",value:function time2int(timeString){if(timeString===""||timeString===null||timeString===undefined)return null;if(timeString instanceof Date){return timeString.getHours()*3600+timeString.getMinutes()*60+timeString.getSeconds()}if(typeof timeString!="string"){return timeString}timeString=timeString.toLowerCase().replace(/[\s\.]/g,"");if(timeString.slice(-1)=="a"||timeString.slice(-1)=="p"){timeString+="m"}var pattern=/^(([^0-9]*))?([0-9]?[0-9])(([0-5][0-9]))?(([0-5][0-9]))?(([^0-9]*))$/;var hasDelimetersMatch=timeString.match(/\W/);if(hasDelimetersMatch){pattern=/^(([^0-9]*))?([0-9]?[0-9])(\W+([0-5][0-9]?))?(\W+([0-5][0-9]))?(([^0-9]*))$/}var time=timeString.match(pattern);if(!time){return null}var hour=parseInt(time[3]*1,10);var ampm=time[2]||time[9];var hours=hour;var minutes=time[5]*1||0;var seconds=time[7]*1||0;if(!ampm&&time[3].length==2&&time[3][0]=="0"){ampm="am"}if(hour<=12&&m){ampm=ampm.trim();var isPm=ampm==this.settings.lang.pm||ampm==this.settings.lang.PM;if(hour==12){hours=isPm?12:0}else{hours=hour+(isPm?12:0)}}else{var t=hour*3600+minutes*60+seconds;if(t>=ONE_DAY+(this.settings.show2400?1:0)){if(this.settings.wrapHours===false){return null}hours=hour%24}}var timeInt=hours*3600+minutes*60+seconds;if(hour<12&&!ampm&&this.settings._twelveHourTime&&this.settings.scrollDefault){var delta=timeInt-this.settings.scrollDefault();if(delta<0&&delta>=ONE_DAY/-2){timeInt=(timeInt+ONE_DAY/2)%ONE_DAY}}return timeInt}},{key:"parseSettings",value:function parseSettings(settings){var _this=this;settings.lang=_objectSpread2(_objectSpread2({},DEFAULT_LANG),settings.lang);this.settings=settings;if(settings.minTime){settings.minTime=this.time2int(settings.minTime)}if(settings.maxTime){settings.maxTime=this.time2int(settings.maxTime)}if(settings.listWidth){settings.listWidth=this.time2int(settings.listWidth)}if(settings.durationTime&&typeof settings.durationTime!=="function"){settings.durationTime=this.time2int(settings.durationTime)}if(settings.scrollDefault=="now"){settings.scrollDefault=function(){return settings.roundingFunction(_this.time2int(new Date),settings)}}else if(settings.scrollDefault&&typeof settings.scrollDefault!="function"){var val=settings.scrollDefault;settings.scrollDefault=function(){return settings.roundingFunction(_this.time2int(val),settings)}}else if(settings.minTime){settings.scrollDefault=function(){return settings.roundingFunction(settings.minTime,settings)}}if(typeof settings.timeFormat==="string"&&settings.timeFormat.match(/[gh]/)){settings._twelveHourTime=true}if(settings.showOnFocus===false&&settings.showOn.indexOf("focus")!=-1){settings.showOn.splice(settings.showOn.indexOf("focus"),1)}if(!settings.disableTimeRanges){settings.disableTimeRanges=[]}if(settings.disableTimeRanges.length>0){for(var i in settings.disableTimeRanges){settings.disableTimeRanges[i]=[this.time2int(settings.disableTimeRanges[i][0]),this.time2int(settings.disableTimeRanges[i][1])]}settings.disableTimeRanges=settings.disableTimeRanges.sort(function(a,b){return a[0]-b[0]});for(var i=settings.disableTimeRanges.length-1;i>0;i--){if(settings.disableTimeRanges[i][0]<=settings.disableTimeRanges[i-1][1]){settings.disableTimeRanges[i-1]=[Math.min(settings.disableTimeRanges[i][0],settings.disableTimeRanges[i-1][0]),Math.max(settings.disableTimeRanges[i][1],settings.disableTimeRanges[i-1][1])];settings.disableTimeRanges.splice(i,1)}}}return settings}},{key:"_disableTextInputHandler",value:function _disableTextInputHandler(e){switch(e.keyCode){case 13:case 9:return;default:e.preventDefault()}}},{key:"_int2duration",value:function _int2duration(seconds,step){seconds=Math.abs(seconds);var minutes=Math.round(seconds/60),duration=[],hours,mins;
2886if(minutes<60){duration=[minutes,this.settings.lang.mins]}else{hours=Math.floor(minutes/60);mins=minutes%60;if(step==30&&mins==30){hours+=this.settings.lang.decimal+5}duration.push(hours);duration.push(hours==1?this.settings.lang.hr:this.settings.lang.hrs);if(step!=30&&mins){duration.push(mins);duration.push(this.settings.lang.mins)}}return duration.join(" ")}},{key:"_roundAndFormatTime",value:function _roundAndFormatTime(seconds){seconds=this.settings.roundingFunction(seconds,this.settings);if(seconds!==null){return this._int2time(seconds)}}},{key:"_int2time",value:function _int2time(timeInt){if(typeof timeInt!="number"){return null}var seconds=parseInt(timeInt%60),minutes=parseInt(timeInt/60%60),hours=parseInt(timeInt/(60*60)%24);var time=new Date(1970,0,2,hours,minutes,seconds,0);if(isNaN(time.getTime())){return null}if(typeof this.settings.timeFormat==="function"){return this.settings.timeFormat(time)}var output="";var hour,code;for(var i=0;i<this.settings.timeFormat.length;i++){code=this.settings.timeFormat.charAt(i);switch(code){case"a":output+=time.getHours()>11?this.settings.lang.pm:this.settings.lang.am;break;case"A":output+=time.getHours()>11?this.settings.lang.PM:this.settings.lang.AM;break;case"g":hour=time.getHours()%12;output+=hour===0?"12":hour;break;case"G":hour=time.getHours();if(timeInt===ONE_DAY)hour=this.settings.show2400?24:0;output+=hour;break;case"h":hour=time.getHours()%12;if(hour!==0&&hour<10){hour="0"+hour}output+=hour===0?"12":hour;break;case"H":hour=time.getHours();if(timeInt===ONE_DAY)hour=this.settings.show2400?24:0;output+=hour>9?hour:"0"+hour;break;case"i":var minutes=time.getMinutes();output+=minutes>9?minutes:"0"+minutes;break;case"s":seconds=time.getSeconds();output+=seconds>9?seconds:"0"+seconds;break;case"\\":i++;output+=this.settings.timeFormat.charAt(i);break;default:output+=code}}return output}},{key:"_setSelected",value:function _setSelected(){var list=this.list;list.find("li").removeClass("ui-em_timepicker-selected");var timeValue=this.time2int(this._getTimeValue());if(timeValue===null){return}var selected=this._findRow(timeValue);if(selected){var selectedRect=selected.getBoundingClientRect();var listRect=list.get(0).getBoundingClientRect();var topDelta=selectedRect.top-listRect.top;if(topDelta+selectedRect.height>listRect.height||topDelta<0){var newScroll=list.scrollTop()+(selectedRect.top-listRect.top)-selectedRect.height;list.scrollTop(newScroll)}var parsed=Number.parseInt(selected.dataset.time);if(this.settings.forceRoundTime||parsed===timeValue){selected.classList.add("ui-em_timepicker-selected")}}}},{key:"_isFocused",value:function _isFocused(el){return el===document.activeElement}},{key:"_handleFormatValue",value:function _handleFormatValue(e){if(e&&e.detail=="em_timepicker"){return}this._formatValue(e)}},{key:"_formatValue",value:function _formatValue(e,origin){if(this.targetEl.value===""){this._setTimeValue(null,origin);return}if(this._isFocused(this.targetEl)&&(!e||e.type!="change")){return}var settings=this.settings;var seconds=this.time2int(this.targetEl.value);if(seconds===null){var timeFormatErrorEvent=new CustomEvent("timeFormatError");this.targetEl.dispatchEvent(timeFormatErrorEvent);return}var rangeError=false;if(settings.minTime!==null&&settings.maxTime!==null&&(seconds<settings.minTime||seconds>settings.maxTime)){rangeError=true}var _iterator=_createForOfIteratorHelper(settings.disableTimeRanges),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var range=_step.value;if(seconds>=range[0]&&seconds<range[1]){rangeError=true;break}}}catch(err){_iterator.e(err)}finally{_iterator.f()}if(settings.forceRoundTime){var roundSeconds=settings.roundingFunction(seconds,settings);if(roundSeconds!=seconds){seconds=roundSeconds;origin=null}}var prettyTime=this._int2time(seconds);if(rangeError){this._setTimeValue(prettyTime);var timeRangeErrorEvent=new CustomEvent("timeRangeError");this.targetEl.dispatchEvent(timeRangeErrorEvent)}else{this._setTimeValue(prettyTime,origin)}}},{key:"_generateNoneElement",value:function _generateNoneElement(optionValue,useSelect){var label,className,value;if(_typeof(optionValue)=="object"){label=optionValue.label;className=optionValue.className;value=optionValue.value}else if(typeof optionValue=="string"){label=optionValue;value=""}else{$.error("Invalid noneOption value")}var el;
2886if(useSelect){el=document.createElement("option");el.value=value}else{el=document.createElement("li");el.dataset.time=String(value)}el.innerText=label;el.classList.add(className);return el}},{key:"_handleKeyUp",value:function _handleKeyUp(e){if(!this.list||!Timepicker.isVisible(this.list)||this.settings.disableTextInput){return true}if(e.type==="paste"||e.type==="cut"){setTimeout(function(){if(this.settings.typeaheadHighlight){this._setSelected()}else{this.list.hide()}},0);return}switch(e.keyCode){case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 65:case 77:case 80:case 186:case 8:case 46:if(this.settings.typeaheadHighlight){this._setSelected()}else{this.list.hide()}break}}}],[{key:"extractAttrOptions",value:function extractAttrOptions(element,keys){var output={};var _iterator2=_createForOfIteratorHelper(keys),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var key=_step2.value;if(key in element.dataset){output[key]=element.dataset[key]}}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}return output}},{key:"isVisible",value:function isVisible(elem){var el=elem[0];return el.offsetWidth>0&&el.offsetHeight>0}},{key:"hideAll",value:function hideAll(){var _iterator3=_createForOfIteratorHelper(document.getElementsByClassName("ui-em_timepicker-input")),_step3;try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var el=_step3.value;var tp=el.em_timepickerObj;if(tp){tp.hideMe()}}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}}}]);return Timepicker}();(function(factory){if((typeof exports==="undefined"?"undefined":_typeof(exports))==="object"&&exports&&(typeof module==="undefined"?"undefined":_typeof(module))==="object"&&module&&module.exports===exports){factory(require("jquery"))}else if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else{factory(jQuery)}})(function($){var _lang={};var methods={init:function init(options){return this.each(function(){var self=$(this);var tp=new Timepicker(this,options);var settings=tp.settings;_lang=settings.lang;this.em_timepickerObj=tp;self.addClass("ui-em_timepicker-input");if(settings.useSelect){_render(self)}else{self.prop("autocomplete","off");if(settings.showOn){for(var i in settings.showOn){self.on(settings.showOn[i]+".em_timepicker",methods.show)}}self.on("change.em_timepicker",tp._handleFormatValue);self.on("keydown.em_timepicker",_keydownhandler);self.on("keyup.em_timepicker",tp._handleKeyUp);if(settings.disableTextInput){self.on("keydown.em_timepicker",tp._disableTextInputHandler)}self.on("cut.em_timepicker",tp._handleKeyUp);self.on("paste.em_timepicker",tp._handleKeyUp);tp._formatValue(null,"initial")}})},show:function show(e){var self=$(this);var tp=self[0].em_timepickerObj;var settings=tp.settings;if(e){e.preventDefault()}if(settings.useSelect){tp.list.trigger("focus");return}if(tp._hideKeyboard()){self.trigger("blur")}var list=tp.list;if(self.prop("readonly")){return}if(!list||list.length===0||typeof settings.durationTime==="function"){_render(self);list=tp.list}if(Timepicker.isVisible(list)){return}if(self.is("input")){tp.selectedValue=self.val()}tp._setSelected();Timepicker.hideAll();if(typeof settings.listWidth=="number"){list.width(self.outerWidth()*settings.listWidth)}list.show();var listOffset={};if(settings.orientation.match(/r/)){listOffset.left=self.offset().left+self.outerWidth()-list.outerWidth()+parseInt(list.css("marginLeft").replace("px",""),10)}else if(settings.orientation.match(/l/)){listOffset.left=self.offset().left+parseInt(list.css("marginLeft").replace("px",""),10)}else if(settings.orientation.match(/c/)){listOffset.left=self.offset().left+(self.outerWidth()-list.outerWidth())/2+parseInt(list.css("marginLeft").replace("px",""),10)}var verticalOrientation;if(settings.orientation.match(/t/)){verticalOrientation="t"}else if(settings.orientation.match(/b/)){verticalOrientation="b"}else if(self.offset().top+self.outerHeight(true)+list.outerHeight()>$(window).height()+$(window).scrollTop()){verticalOrientation="t"}else{verticalOrientation="b"}if(verticalOrientation=="t"){list.addClass("ui-em_timepicker-positioned-top");listOffset.top=self.offset().top-list.outerHeight()+parseInt(list.css("marginTop").replace("px",""),10)}else{list.removeClass("ui-em_timepicker-positioned-top");listOffset.top=self.offset().top+self.outerHeight()+parseInt(list.css("marginTop").replace("px",""),10)}list.offset(listOffset);var selected=list.find(".ui-em_timepicker-selected");if(!selected.length){var timeInt=tp.time2int(tp._getTimeValue());if(timeInt!==null){selected=$(tp._findRow(timeInt))}else if(settings.scrollDefault){selected=$(tp._findRow(settings.scrollDefault()))}}if(!selected.length||selected.hasClass("ui-em_timepicker-disabled")){selected=list.find("li:not(.ui-em_timepicker-disabled):first")}if(selected&&selected.length){var topOffset=list.scrollTop()+selected.position().top-selected.outerHeight();list.scrollTop(topOffset)}else{list.scrollTop(0)}if(settings.stopScrollPropagation){$(document).on("wheel.ui-em_timepicker",".ui-em_timepicker-wrapper",function(e){e.preventDefault();var currentScroll=$(this).scrollTop();$(this).scrollTop(currentScroll+e.originalEvent.deltaY)})}$(document).on("mousedown.ui-em_timepicker",_closeHandler);$(window).on("resize.ui-em_timepicker",_closeHandler);if(settings.closeOnWindowScroll){$(document).on("scroll.ui-em_timepicker",_closeHandler)}self.trigger("showTimepicker");return this},hide:function hide(e){var tp=this[0].em_timepickerObj;if(tp){tp.hideMe()}Timepicker.hideAll();return this},option:function option(key,value){if(typeof key=="string"&&typeof value=="undefined"){var tp=this[0].em_timepickerObj;return tp.settings[key]}return this.each(function(){var self=$(this);var tp=self[0].em_timepickerObj;var settings=tp.settings;var list=tp.list;
2886if(_typeof(key)=="object"){settings=$.extend(settings,key)}else if(typeof key=="string"){settings[key]=value}settings=tp.parseSettings(settings);tp.settings=settings;tp._formatValue({type:"change"},"initial");if(list){list.remove();tp.list=null}if(settings.useSelect){_render(self)}})},getSecondsFromMidnight:function getSecondsFromMidnight(){var tp=this[0].em_timepickerObj;return tp.time2int(tp._getTimeValue())},getTime:function getTime(relative_date){var tp=this[0].em_timepickerObj;var time_string=tp._getTimeValue();if(!time_string){return null}var offset=tp.time2int(time_string);if(offset===null){return null}if(!relative_date){relative_date=new Date}var time=new Date(relative_date);time.setHours(offset/3600);time.setMinutes(offset%3600/60);time.setSeconds(offset%60);time.setMilliseconds(0);return time},isVisible:function isVisible(){var tp=this[0].em_timepickerObj;return!!(tp&&tp.list&&Timepicker.isVisible(tp.list))},setTime:function setTime(value){var tp=this[0].em_timepickerObj;var settings=tp.settings;if(settings.forceRoundTime){var prettyTime=tp._roundAndFormatTime(tp.time2int(value))}else{var prettyTime=tp._int2time(tp.time2int(value))}if(value&&prettyTime===null&&settings.noneOption){prettyTime=value}tp._setTimeValue(prettyTime,"initial");tp._formatValue({type:"change"},"initial");if(tp&&tp.list){tp._setSelected()}return this},remove:function remove(){var self=this;if(!self.hasClass("ui-em_timepicker-input")){return}var tp=self[0].em_timepickerObj;var settings=tp.settings;self.removeAttr("autocomplete","off");self.removeClass("ui-em_timepicker-input");self.removeData("em_timepicker-obj");self.off(".em_timepicker");if(tp.list){tp.list.remove()}if(settings.useSelect){self.show()}tp.list=null;return this}};function _render(self){var tp=self[0].em_timepickerObj;var list=tp.list;var settings=tp.settings;if(list&&list.length){list.remove();tp.list=null}if(settings.useSelect){list=$("<select></select>",{class:"ui-em_timepicker-select"});if(self.attr("name")){list.attr("name","ui-em_timepicker-"+self.attr("name"))}var wrapped_list=list}else{list=$("<ul></ul>",{class:"ui-em_timepicker-list"});var wrapped_list=$("<div></div>",{class:"ui-em_timepicker-wrapper",tabindex:-1});wrapped_list.css({display:"none",position:"absolute"}).append(list)}if(settings.noneOption){if(settings.noneOption===true){settings.noneOption=settings.useSelect?"Time...":"None"}if($.isArray(settings.noneOption)){for(var i in settings.noneOption){if(parseInt(i,10)==i){var noneElement=tp._generateNoneElement(settings.noneOption[i],settings.useSelect);list.append(noneElement)}}}else{var noneElement=tp._generateNoneElement(settings.noneOption,settings.useSelect);list.append(noneElement)}}if(settings.className){wrapped_list.addClass(settings.className)}if((settings.minTime!==null||settings.durationTime!==null)&&settings.showDuration){var stepval=typeof settings.step=="function"?"function":settings.step;wrapped_list.addClass("ui-em_timepicker-with-duration");wrapped_list.addClass("ui-em_timepicker-step-"+settings.step)}var durStart=settings.minTime;if(typeof settings.durationTime==="function"){durStart=tp.time2int(settings.durationTime())}else if(settings.durationTime!==null){durStart=settings.durationTime}var start=settings.minTime!==null?settings.minTime:0;var end=settings.maxTime!==null?settings.maxTime:start+ONE_DAY-1;if(end<start){end+=ONE_DAY}if(end===ONE_DAY-1&&$.type(settings.timeFormat)==="string"&&settings.show2400){end=ONE_DAY}var dr=settings.disableTimeRanges;var drCur=0;var drLen=dr.length;var stepFunc=settings.step;if(typeof stepFunc!="function"){stepFunc=function stepFunc(){return settings.step}}for(var i=start,j=0;i<=end;j++,i+=stepFunc(j)*60){var timeInt=i;var timeString=tp._int2time(timeInt);if(settings.useSelect){var row=$("<option></option>",{value:timeString});row.text(timeString)}else{var row=$("<li></li>");row.addClass(timeInt%ONE_DAY<ONE_DAY/2?"ui-em_timepicker-am":"ui-em_timepicker-pm");row.attr("data-time",roundingFunction(timeInt,settings));row.text(timeString)}if((settings.minTime!==null||settings.durationTime!==null)&&settings.showDuration){var durationString=tp._int2duration(i-durStart,settings.step);if(settings.useSelect){row.text(row.text()+" ("+durationString+")")}else{var duration=$("<span></span>",{class:"ui-em_timepicker-duration"});duration.text(" ("+durationString+")");row.append(duration)}}if(drCur<drLen){if(timeInt>=dr[drCur][1]){drCur+=1}if(dr[drCur]&&timeInt>=dr[drCur][0]&&timeInt<dr[drCur][1]){if(settings.useSelect){row.prop("disabled",true)}else{row.addClass("ui-em_timepicker-disabled")}}}list.append(row)}wrapped_list.data("em_timepicker-input",self);tp.list=wrapped_list;if(settings.useSelect){if(self.val()){list.val(tp._roundAndFormatTime(tp.time2int(self.val())))}list.on("focus",function(){$(this).data("em_timepicker-input").trigger("showTimepicker")});list.on("blur",function(){$(this).data("em_timepicker-input").trigger("hideTimepicker")});list.on("change",function(){tp._setTimeValue($(this).val(),"select")});tp._setTimeValue(list.val(),"initial");self.hide().after(list)}else{var appendTo=settings.appendTo;if(typeof appendTo==="string"){appendTo=$(appendTo)}else if(typeof appendTo==="function"){appendTo=appendTo(self)}appendTo.append(wrapped_list);tp._setSelected();list.on("mousedown click","li",function(e){self.off("focus.em_timepicker");self.on("focus.em_timepicker-ie-hack",function(){self.off("focus.em_timepicker-ie-hack");self.on("focus.em_timepicker",methods.show)});if(!tp._hideKeyboard()){self[0].focus()}list.find("li").removeClass("ui-em_timepicker-selected");$(this).addClass("ui-em_timepicker-selected");if(tp._selectValue()){self.trigger("hideTimepicker");list.on("mouseup.em_timepicker click.em_timepicker","li",function(e){list.off("mouseup.em_timepicker click.em_timepicker");wrapped_list.hide()})}})}}function _closeHandler(e){if(e.target==window){return}var target=$(e.target);if(target.closest(".ui-em_timepicker-input").length||target.closest(".ui-em_timepicker-wrapper").length){return}Timepicker.hideAll();$(document).off(".ui-em_timepicker");$(window).off(".ui-em_timepicker")}function _keydownhandler(e){var self=$(this);var tp=self[0].em_timepickerObj;var list=tp.list;if(!list||!Timepicker.isVisible(list)){if(e.keyCode==40){methods.show.call(self.get(0));list=tp.list;if(!tp._hideKeyboard()){self.trigger("focus")}}else{return true}}switch(e.keyCode){case 13:if(tp._selectValue()){tp._formatValue({type:"change"});tp.hideMe()}e.preventDefault();return false;case 38:var selected=list.find(".ui-em_timepicker-selected");if(!selected.length){list.find("li").each(function(i,obj){if($(obj).position().top>0){selected=$(obj);return false}});selected.addClass("ui-em_timepicker-selected")}else if(!selected.is(":first-child")){selected.removeClass("ui-em_timepicker-selected");selected.prev().addClass("ui-em_timepicker-selected");if(selected.prev().position().top<selected.outerHeight()){list.scrollTop(list.scrollTop()-selected.outerHeight())}}return false;case 40:selected=list.find(".ui-em_timepicker-selected");if(selected.length===0){list.find("li").each(function(i,obj){if($(obj).position().top>0){selected=$(obj);return false}});selected.addClass("ui-em_timepicker-selected")}else if(!selected.is(":last-child")){selected.removeClass("ui-em_timepicker-selected");selected.next().addClass("ui-em_timepicker-selected");if(selected.next().position().top+2*selected.outerHeight()>list.outerHeight()){list.scrollTop(list.scrollTop()+selected.outerHeight())}}return false;case 27:list.find("li").removeClass("ui-em_timepicker-selected");tp.hideMe();break;case 9:tp.hideMe();break;default:return true}}$.fn.em_timepicker=function(method){if(!this.length)return this;if(methods[method]){if(!this.hasClass("ui-em_timepicker-input")){return this}return methods[method].apply(this,Array.prototype.slice.call(arguments,1
2886))}else if(_typeof(method)==="object"||!method){return methods.init.apply(this,arguments)}else{$.error("Method "+method+" does not exist on jQuery.em_timepicker")}};$.fn.em_timepicker.defaults=DEFAULT_SETTINGS})})(); 2887 2888/* flatpickr v4.6.13,, @license MIT */�
vendor: 50,641 bytes, lines 2888-2889
2888 2889!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).flatpickr=n()}(this,(function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var n,t=1,a=arguments.length;t<a;t++)for(var i in n=arguments[t])Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i]);return e}).apply(this,arguments)};function n(){for(var e=0,n=0,t=arguments.length;n<t;n++)e+=arguments[n].length;var a=Array(e),i=0;for(n=0;n<t;n++)for(var o=arguments[n],r=0,l=o.length;r<l;r++,i++)a[i]=o[r];return a}var t=["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:function(e){return"undefined"!=typeof console&&console.warn(e)},getWeek:function(e){var n=new Date(e.getTime());n.setHours(0,0,0,0),n.setDate(n.getDate()+3-(n.getDay()+6)%7);var t=new Date(n.getFullYear(),0,4);return 1+Math.round(((n.getTime()-t.getTime())/864e5-3+(t.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},i={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:function(e){var n=e%100;if(n>3&&n<21)return"th";switch(n%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},o=function(e,n){return void 0===n&&(n=2),("000"+e).slice(-1*n)},r=function(e){return!0===e?1:0};function l(e,n){var t;return function(){var a=this,i=arguments;clearTimeout(t),t=setTimeout((function(){return e.apply(a,i)}),n)}}var c=function(e){return e instanceof Array?e:[e]};function s(e,n,t){if(!0===t)return e.classList.add(n);e.classList.remove(n)}function d(e,n,t){var a=window.document.createElement(e);return n=n||"",t=t||"",a.className=n,void 0!==t&&(a.textContent=t),a}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function f(e,n){return n(e)?e:e.parentNode?f(e.parentNode,n):void 0}function m(e,n){var t=d("div","numInputWrapper"),a=d("input","numInput "+e),i=d("span","arrowUp"),o=d("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?a.type="number":(a.type="text",a.pattern="\\d*"),void 0!==n)for(var r in n)a.setAttribute(r,n[r]);return t.appendChild(a),t.appendChild(i),t.appendChild(o),t}function g(e){try{return"function"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(n){return e.target}}var p=function(){},h=function(e,n,t){return t.months[n?"shorthand":"longhand"][e]},v={D:p,F:function(e,n,t){e.setMonth(t.months.longhand.indexOf(n))},G:function(e,n){e.setHours((e.getHours()>=12?12:0)+parseFloat(n))},H:function(e,n){e.setHours(parseFloat(n))},J:function(e,n){e.setDate(parseFloat(n))},K:function(e,n,t){e.setHours(e.getHours()%12+12*r(new RegExp(t.amPM[1],"i").test(n)))},M:function(e,n,t){e.setMonth(t.months.shorthand.indexOf(n))},S:function(e,n){e.setSeconds(parseFloat(n))},U:function(e,n){return new Date(1e3*parseFloat(n))},W:function(e,n,t){var a=parseInt(n),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+t.firstDayOfWeek),i},Y:function(e,n){e.setFullYear(parseFloat(n))},Z:function(e,n){return new Date(n)},d:function(e,n){e.setDate(parseFloat(n))},h:function(e,n){e.setHours((e.getHours()>=12?12:0)+parseFloat(n))},i:function(e,n){e.setMinutes(parseFloat(n))},j:function(e,n){e.setDate(parseFloat(n))},l:p,m:function(e,n){e.setMonth(parseFloat(n)-1)},n:function(e,n){e.setMonth(parseFloat(n)-1)},s:function(e,n){e.setSeconds(parseFloat(n))},u:function(e,n){return new Date(parseFloat(n))},w:p,y:function(e,n){e.setFullYear(2e3+parseFloat(n))}},D={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",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:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},w={Z:function(e){return e.toISOString()},D:function(e,n,t){return n.weekdays.shorthand[w.w(e,n,t)]},F:function(e,n,t){return h(w.n(e,n,t)-1,!1,n)},G:function(e,n,t){return o(w.h(e,n,t))},H:function(e){return o(e.getHours())},J:function(e,n){return void 0!==n.ordinal?e.getDate()+n.ordinal(e.getDate()):e.getDate()},K:function(e,n){return n.amPM[r(e.getHours()>11)]},M:function(e,n){return h(e.getMonth(),!0,n)},S:function(e){return o(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,n,t){return t.getWeek(e)},Y:function(e){return o(e.getFullYear(),4)},d:function(e){return o(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return o(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,n){return n.weekdays.longhand[e.getDay()]},m:function(e){return o(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o,l=e.isMobile,c=void 0!==l&&l;return function(e,n,a){var i=a||r;return void 0===t.formatDate||c?n.split("").map((function(n,a,o){return w[n]&&"\\"!==o[a-1]?w[n](e,i,t):"\\"!==n?n:""})).join(""):t.formatDate(e,n,i)}},C=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o;return function(e,n,i,o){if(0===e||e){var l,c=o||r,s=e;if(e instanceof Date)l=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if("string"==typeof e){var d=n||(t||a).dateFormat,u=String(e).trim();if("today"===u)l=new Date,i=!0;else if(t&&t.parseDate)l=t.parseDate(e,d);else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else{for(var f=void 0,m=[],g=0,p=0,h="";g<d.length;g++){var w=d[g],b="\\"===w,C="\\"===d[g-1]||b;if(D[w]&&!C){h+=D[w];var M=new RegExp(h).exec(e);M&&(f=!0)&&m["Y"!==w?"push":"unshift"]({fn:v[w],val:M[++p]})}else b||(h+=".")}l=t&&t.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0),m.forEach((function(e){var n=e.fn,t=e.val;return l=n(l,t,c)||l})),l=f?l:void 0}}if(l instanceof Date&&!isNaN(l.getTime()))return!0===i&&l.setHours(0,0,0,0),l;t.errorHandler(new Error("Invalid date provided: "+s))}}};function M(e,n,t){return void 0===t&&(t=!0),!1!==t?new Date(e.getTime()).setHours(0,0,0,0)-new Date(n.getTime()).setHours(0,0,0,0):e.getTime()-n.getTime()}var y=function(e,n,t){return 3600*e+60*n+t},x=864e5;function E(e){var n=e.defaultHour,t=e.defaultMinute,a=e.defaultSeconds;if(void 0!==e.minDate){var i=e.minDate.getHours(),o=e.minDate.getMinutes(),r=e.minDate.getSeconds();n<i&&(n=i),n===i&&t<o&&(t=o),n===i&&t===o&&a<r&&(a=e.minDate.getSeconds())}if(void 0!==e.maxDate){var l=e.maxDate.getHours(),c=e.maxDate.getMinutes();(n=Math.min(n,l))===l&&(t=Math.min(c,t)),n===l&&t===c&&(a=e.maxDate.getSeconds())}return{hours:n,minutes:t,seconds:a}}"function"!=typeof Object.assign&&(Object.assign=function(e){for(var n=[],t=1;t<arguments.length;t++)n[t-1]=arguments[t];if(!e)throw TypeError("Cannot convert undefined or null to object");for(var a=function(n){n&&Object.keys(n).forEach((function(t){return e[t]=n[t]}))},i=0,o=n;i<o.length;i++){var r=o[i];a(r)}return e});function k(p,v){var w={config:e(e({},a),I.defaultConfig),l10n:i};function k(){var e;return(null===(e=w.calendarContainer)||void 0===e?void 0:e.getRootNode()).activeElement||document.activeElement}function T(e){return e.bind(w)}function S(){var e=w.config;!1===e.weekNumbers&&1===e.showMonths||!0!==e.noCalendar&&window.requestAnimationFrame((function(){if(void 0!==w.calendarContainer&&(w.calendarContainer.style.visibility="hidden",w.calendarContainer.style.display="block"),void 0!==w.daysContainer){var n=(w.days.offsetWidth+1)*e.showMonths;w.daysContainer.style.width=n+"px",w.calendarContainer.style.width=n+(void 0!==w.weekWrapper?w.weekWrapper.offsetWidth:0)+"px",w.calendarContainer.style.removeProperty("visibility"),w.calendarContainer.style.removeProperty("display")}}))}function _(e){if(0===w.selectedDates.length){var n=void 0===w.config.minDate||M(new Date,w.config.minDate)>=0?new Date:new Date(w.config.minDate.getTime()),t=E(w.config);n.setHours(t.hours,t.minutes,t.seconds,n.getMilliseconds()),w.selectedDates=[n],w.latestSelectedDateObj=n}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var n="keydown"===e.type,t=g(e),a=t;void 0!==w.amPM&&t===w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]);var i=parseFloat(a.getAttribute("min")),l=parseFloat(a.getAttribute("max")),c=parseFloat(a.getAttribute("step")),s=parseInt(a.value,10),d=e.delta||(n?38===e.which?1:-1:0),u=s+c*d;if(void 0!==a.value&&2===a.value.length){var f=a===w.hourElement,m=a===w.minuteElement;u<i?(u=l+u+r(!f)+(r(f)&&r(!w.amPM)),m&&L(void 0,-1,w.hourElement)):u>l&&(u=a===w.hourElement?u-l-r(!w.amPM):i,m&&L(void 0,1,w.hourElement)),w.amPM&&f&&(1===c?u+s===23:Math.abs(u-s)>c)&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]),a.value=o(u)}}(e);var a=w._input.value;O(),ye(),w._input.value!==a&&w._debouncedChange()}function O(){if(void 0!==w.hourElement&&void 0!==w.minuteElement){var e,n,t=(parseInt(w.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(w.minuteElement.value,10)||0)%60,i=void 0!==w.secondElement?(parseInt(w.secondElement.value,10)||0)%60:0;void 0!==w.amPM&&(e=t,n=w.amPM.textContent,t=e%12+12*r(n===w.l10n.amPM[1]));var o=void 0!==w.config.minTime||w.config.minDate&&w.minDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.minDate,!0),l=void 0!==w.config.maxTime||w.config.maxDate&&w.maxDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.maxDate,!0);if(void 0!==w.config.maxTime&&void 0!==w.config.minTime&&w.config.minTime>w.config.maxTime){var c=y(w.config.minTime.getHours(),w.config.minTime.getMinutes(),w.config.minTime.getSeconds()),s=y(w.config.maxTime.getHours(),w.config.maxTime.getMinutes(),w.config.maxTime.getSeconds()),d=y(t,a,i);if(d>s&&d<c){var u=function(e){var n=Math.floor(e/3600),t=(e-3600*n)/60;return[n,t,e-3600*n-60*t]}(c);t=u[0],a=u[1],i=u[2]}}else{if(l){var f=void 0!==w.config.maxTime?w.config.maxTime:w.config.maxDate;(t=Math.min(t,f.getHours()))===f.getHours()&&(a=Math.min(a,f.getMinutes())),a===f.getMinutes()&&(i=Math.min(i,f.getSeconds()))}if(o){var m=void 0!==w.config.minTime?w.config.minTime:w.config.minDate;(t=Math.max(t,m.getHours()))===m.getHours()&&a<m.getMinutes()&&(a=m.getMinutes()),a===m.getMinutes()&&(i=Math.max(i,m.getSeconds()))}}A(t,a,i)}}function F(e){var n=e||w.latestSelectedDateObj;n&&n instanceof Date&&A(n.getHours(),n.getMinutes(),n.getSeconds())}function A(e,n,t){void 0!==w.latestSelectedDateObj&&w.latestSelectedDateObj.setHours(e%24,n,t||0,0),w.hourElement&&w.minuteElement&&!w.isMobile&&(w.hourElement.value=o(w.config.time_24hr?e:(12+e)%12+12*r(e%12==0)),w.minuteElement.value=o(n),void 0!==w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(e>=12)]),void 0!==w.secondElement&&(w.secondElement.value=o(t)))}function N(e){var n=g(e),t=parseInt(n.value)+(e.delta||0);(t/1e3>1||"Enter"===e.key&&!/[^\d]/.test(t.toString()))&&ee(t)}function P(e,n,t,a){return n instanceof Array?n.forEach((function(n){return P(e,n,t,a)})):e instanceof Array?e.forEach((function(e){return P(e,n,t,a)})):(e.addEventListener(n,t,a),void w._handlers.push({remove:function(){return e.removeEventListener(n,t,a)}}))}function Y(){De("onChange")}function j(e,n){var t=void 0!==e?w.parseDate(e):w.latestSelectedDateObj||(w.config.minDate&&w.config.minDate>w.now?w.config.minDate:w.config.maxDate&&w.config.maxDate<w.now?w.config.maxDate:w.now),a=w.currentYear,i=w.currentMonth;try{void 0!==t&&(w.currentYear=t.getFullYear(),w.currentMonth=t.getMonth())}catch(e){e.message="Invalid date supplied: "+t,w.config.errorHandler(e)}n&&w.currentYear!==a&&(De("onYearChange"),q()),!n||w.currentYear===a&&w.currentMonth===i||De("onMonthChange"),w.redraw()}function H(e){var n=g(e);~n.className.indexOf("arrow")&&L(e,n.classList.contains("arrowUp")?1:-1)}function L(e,n,t){var a=e&&g(e),i=t||a&&a.parentNode&&a.parentNode.firstChild,o=we("increment");o.delta=n,i&&i.dispatchEvent(o)}function R(e,n,t,a){var i=ne(n,!0),o=d("span",e,n.getDate().toString());return o.dateObj=n,o.$i=a,o.setAttribute("aria-label",w.formatDate(n,w.config.ariaDateFormat)),-1===e.indexOf("hidden")&&0===M(n,w.now)&&(w.todayDateElem=o,o.classList.add("today"),o.setAttribute("aria-current","date")),i?(o.tabIndex=-1,be(n)&&(o.classList.add("selected"),w.selectedDateElem=o,"range"===w.config.mode&&(s(o,"startRange",w.selectedDates[0]&&0===M(n,w.selectedDates[0],!0)),s(o,"endRange",w.selectedDates[1]&&0===M(n,w.selectedDates[1],!0)),"nextMonthDay"===e&&o.classList.add("inRange")))):o.classList.add("flatpickr-disabled"),"range"===w.config.mode&&function(e){return!("range"!==w.config.mode||w.selectedDates.length<2)&&(M(e,w.selectedDates[0])>=0&&M(e,w.selectedDates[1])<=0)}(n)&&!be(n)&&o.classList.add("inRange"),w.weekNumbers&&1===w.config.showMonths&&"prevMonthDay"!==e&&a%7==6&&w.weekNumbers.insertAdjacentHTML("beforeend","<span class='flatpickr-day'>"+w.config.getWeek(n)+"</span>"),De("onDayCreate",o),o}function W(e){e.focus(),"range"===w.config.mode&&oe(e)}function B(e){for(var n=e>0?0:w.config.showMonths-1,t=e>0?w.config.showMonths:-1,a=n;a!=t;a+=e)for(var i=w.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf("hidden")&&ne(c.dateObj))return c}}function J(e,n){var t=k(),a=te(t||document.body),i=void 0!==e?e:a?t:void 0!==w.selectedDateElem&&te(w.selectedDateElem)?w.selectedDateElem:void 0!==w.todayDateElem&&te(w.todayDateElem)?w.todayDateElem:B(n>0?1:-1);void 0===i?w._input.focus():a?function(e,n){for(var t=-1===e.className.indexOf("Month")?e.dateObj.getMonth():w.currentMonth,a=n>0?w.config.showMonths:-1,i=n>0?1:-1,o=t-w.currentMonth;o!=a;o+=i)for(var r=w.daysContainer.children[o],l=t-w.currentMonth===o?e.$i+n:n<0?r.children.length-1:0,c=r.children.length,s=l;s>=0&&s<c&&s!=(n>0?c:-1);s+=i){var d=r.children[s];if(-1===d.className.indexOf("hidden")&&ne(d.dateObj)&&Math.abs(e.$i-s)>=Math.abs(n))return W(d)}w.changeMonth(i),J(B(i),0)}(i,n):W(i)}function K(e,n){for(var t=(new Date(e,n,1).getDay()-w.l10n.firstDayOfWeek+7)%7,a=w.utils.getDaysInMonth((n-1+12)%12,e),i=w.utils.getDaysInMonth(n,e),o=window.document.createDocumentFragment(),r=w.config.showMonths>1,l=r?"prevMonthDay hidden":"prevMonthDay",c=r?"nextMonthDay hidden":"nextMonthDay",s=a+1-t,u=0;s<=a;s++,u++)o.appendChild(R("flatpickr-day "+l,new Date(e,n-1,s),0,u));for(s=1;s<=i;s++,u++)o.appendChild(R("flatpickr-day",new Date(e,n,s),0,u));for(var f=i+1;f<=42-t&&(1===w.config.showMonths||u%7!=0);f++,u++)o.appendChild(R("flatpickr-day "+c,new Date(e,n+1,f%i),0,u));var m=d("div","dayContainer");return m.appendChild(o),m}function U(){if(void 0!==w.daysContainer){u(w.daysContainer),w.weekNumbers&&u(w.weekNumbers);for(var e=document.createDocumentFragment(),n=0;n<w.config.showMonths;n++){var t=new Date(w.currentYear,w.currentMonth,1);t.setMonth(w.currentMonth+n),e.appendChild(K(t.getFullYear(),t.getMonth()))}w.daysContainer.appendChild(e),w.days=w.daysContainer.firstChild,"range"===w.config.mode&&1===w.selectedDates.length&&oe()}}function q(){if(!(w.config.showMonths>1||"dropdown"!==w.config.monthSelectorType)){var e=function(e){return!(void 0!==w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&e<w.config.minDate.getMonth())&&!(void 0!==w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()&&e>w.config.maxDate.getMonth())};w.monthsDropdownContainer.tabIndex=-1,w.monthsDropdownContainer.innerHTML="";for(var n=0;n<12;n++)if(e(n)){var t=d("option","flatpickr-monthDropdown-month");t.value=new Date(w.currentYear,n).getMonth().toString(),t.textContent=h(n,w.config.shorthandCurrentMonth,w.l10n),t.tabIndex=-1,w.currentMonth===n&&(t.selected=!0),w.monthsDropdownContainer.appendChild(t)}}}function $(){var e,n=d("div","flatpickr-month"),t=window.document.createDocumentFragment();w.config.showMonths>1||"static"===w.config.monthSelectorType?e=d("span","cur-month"):(w.monthsDropdownContainer=d("select","flatpickr-monthDropdown-months"),w.monthsDropdownContainer.setAttribute("aria-label",w.l10n.monthAriaLabel),P(w.monthsDropdownContainer,"change",(function(e){var n=g(e),t=parseInt(n.value,10);w.changeMonth(t-w.currentMonth),De("onMonthChange")})),q(),e=w.monthsDropdownContainer);var a=m("cur-year",{tabindex:"-1"}),i=a.getElementsByTagName("input")[0];i.setAttribute("aria-label",w.l10n.yearAriaLabel),w.config.minDate&&i.setAttribute("min",w.config.minDate.getFullYear().toString()),w.config.maxDate&&(i.setAttribute("max",w.config.maxDate.getFullYear().toString()),i.disabled=!!w.config.minDate&&w.config.minDate.getFullYear()===w.config.maxDate.getFullYear());var o=d("div","flatpickr-current-month");return o.appendChild(e),o.appendChild(a),t.appendChild(o),n.appendChild(t),{container:n,yearElement:i,monthElement:e}}function V(){u(w.monthNav),w.monthNav.appendChild(w.prevMonthNav),w.config.showMonths&&(w.yearElements=[],w.monthElements=[]);for(var e=w.config.showMonths;e--;){var n=$();w.yearElements.push(n.yearElement),w.monthElements.push(n.monthElement),w.monthNav.appendChild(n.container)}w.monthNav.appendChild(w.nextMonthNav)}function z(){w.weekdayContainer?u(w.weekdayContainer):w.weekdayContainer=d("div","flatpickr-weekdays");for(var e=w.config.showMonths;e--;){var n=d("div","flatpickr-weekdaycontainer");w.weekdayContainer.appendChild(n)}return G(),w.weekdayContainer}function G(){if(w.weekdayContainer){var e=w.l10n.firstDayOfWeek,t=n(w.l10n.weekdays.shorthand);e>0&&e<t.length&&(t=n(t.splice(e,t.length),t.splice(0,e)));for(var a=w.config.showMonths;a--;)w.weekdayContainer.children[a].innerHTML="\n <span class='flatpickr-weekday'>\n "+t.join("</span><span class='flatpickr-weekday'>")+"\n </span>\n "}}function Z(e,n){void 0===n&&(n=!0);var t=n?e:e-w.currentMonth;t<0&&!0===w._hidePrevMonthArrow||t>0&&!0===w._hideNextMonthArrow||(w.currentMonth+=t,(w.currentMonth<0||w.currentMonth>11)&&(w.currentYear+=w.currentMonth>11?1:-1,w.currentMonth=(w.currentMonth+12)%12,De("onYearChange"),q()),U(),De("onMonthChange"),Ce())}function Q(e){return w.calendarContainer.contains(e)}function X(e){if(w.isOpen&&!w.config.inline){var n=g(e),t=Q(n),a=!(n===w.input||n===w.altInput||w.element.contains(n)||e.path&&e.path.indexOf&&(~e.path.indexOf(w.input)||~e.path.indexOf(w.altInput)))&&!t&&!Q(e.relatedTarget),i=!w.config.ignoredFocusElements.some((function(e){return e.contains(n)}));a&&i&&(w.config.allowInput&&w.setDate(w._input.value,!1,w.config.altInput?w.config.altFormat:w.config.dateFormat),void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement&&""!==w.input.value&&void 0!==w.input.value&&_(),w.close(),w.config&&"range"===w.config.mode&&1===w.selectedDates.length&&w.clear(!1))}}function ee(e){if(!(!e||w.config.minDate&&e<w.config.minDate.getFullYear()||w.config.maxDate&&e>w.config.maxDate.getFullYear())){var n=e,t=w.currentYear!==n;w.currentYear=n||w.currentYear,w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth=Math.min(w.config.maxDate.getMonth(),w.currentMonth):w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&(w.currentMonth=Math.max(w.config.minDate.getMonth(),w.currentMonth)),t&&(w.redraw(),De("onYearChange"),q())}}function ne(e,n){var t;void 0===n&&(n=!0);var a=w.parseDate(e,void 0,n);if(w.config.minDate&&a&&M(a,w.config.minDate,void 0!==n?n:!w.minDateHasTime)<0||w.config.maxDate&&a&&M(a,w.config.maxDate,void 0!==n?n:!w.maxDateHasTime)>0)return!1;if(!w.config.enable&&0===w.config.disable.length)return!0;if(void 0===a)return!1;for(var i=!!w.config.enable,o=null!==(t=w.config.enable)&&void 0!==t?t:w.config.disable,r=0,l=void 0;r<o.length;r++){if("function"==typeof(l=o[r])&&l(a))return i;if(l instanceof Date&&void 0!==a&&l.getTime()===a.getTime())return i;if("string"==typeof l){var c=w.parseDate(l,void 0,!0);return c&&c.getTime()===a.getTime()?i:!i}if("object"==typeof l&&void 0!==a&&l.from&&l.to&&a.getTime()>=l.from.getTime()&&a.getTime()<=l.to.getTime())return i}return!i}function te(e){return void 0!==w.daysContainer&&(-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&w.daysContainer.contains(e))}function ae(e){var n=e.target===w._input,t=w._input.value.trimEnd()!==Me();!n||!t||e.relatedTarget&&Q(e.relatedTarget)||w.setDate(w._input.value,!0,e.target===w.altInput?w.config.altFormat:w.config.dateFormat)}function ie(e){var n=g(e),t=w.config.wrap?p.contains(n):n===w._input,a=w.config.allowInput,i=w.isOpen&&(!a||!t),o=w.config.inline&&t&&!a;if(13===e.keyCode&&t){if(a)return w.setDate(w._input.value,!0,n===w.altInput?w.config.altFormat:w.config.dateFormat),w.close(),n.blur();w.open()}else if(Q(n)||i||o){var r=!!w.timeContainer&&w.timeContainer.contains(n);switch(e.keyCode){case 13:r?(e.preventDefault(),_(),fe()):me(e);break;case 27:e.preventDefault(),fe();break;case 8:case 46:t&&!w.config.allowInput&&(e.preventDefault(),w.clear());break;case 37:case 39:if(r||t)w.hourElement&&w.hourElement.focus();else{e.preventDefault();var l=k();if(void 0!==w.daysContainer&&(!1===a||l&&te(l))){var c=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),Z(c),J(B(1),0)):J(void 0,c)}}break;case 38:case 40:e.preventDefault();var s=40===e.keyCode?1:-1;w.daysContainer&&void 0!==n.$i||n===w.input||n===w.altInput?e.ctrlKey?(e.stopPropagation(),ee(w.currentYear-s),J(B(1),0)):r||J(void 0,7*s):n===w.currentYearElement?ee(w.currentYear-s):w.config.enableTime&&(!r&&w.hourElement&&w.hourElement.focus(),_(e),w._debouncedChange());break;case 9:if(r){var d=[w.hourElement,w.minuteElement,w.secondElement,w.amPM].concat(w.pluginElements).filter((function(e){return e})),u=d.indexOf(n);if(-1!==u){var f=d[u+(e.shiftKey?-1:1)];e.preventDefault(),(f||w._input).focus()}}else!w.config.noCalendar&&w.daysContainer&&w.daysContainer.contains(n)&&e.shiftKey&&(e.preventDefault(),w._input.focus())}}if(void 0!==w.amPM&&n===w.amPM)switch(e.key){case w.l10n.amPM[0].charAt(0):case w.l10n.amPM[0].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[0],O(),ye();break;case w.l10n.amPM[1].charAt(0):case w.l10n.amPM[1].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[1],O(),ye()}(t||Q(n))&&De("onKeyDown",e)}function oe(e,n){if(void 0===n&&(n="flatpickr-day"),1===w.selectedDates.length&&(!e||e.classList.contains(n)&&!e.classList.contains("flatpickr-disabled"))){for(var t=e?e.dateObj.getTime():w.days.firstElementChild.dateObj.getTime(),a=w.parseDate(w.selectedDates[0],void 0,!0).getTime(),i=Math.min(t,w.selectedDates[0].getTime()),o=Math.max(t,w.selectedDates[0].getTime()),r=!1,l=0,c=0,s=i;s<o;s+=x)ne(new Date(s),!0)||(r=r||s>i&&s<o,s<a&&(!l||s>l)?l=s:s>a&&(!c||s<c)&&(c=s));Array.from(w.rContainer.querySelectorAll("*:nth-child(-n+"+w.config.showMonths+") > ."+n)).forEach((function(n){var i,o,s,d=n.dateObj.getTime(),u=l>0&&d<l||c>0&&d>c;if(u)return n.classList.add("notAllowed"),void["inRange","startRange","endRange"].forEach((function(e){n.classList.remove(e)}));r&&!u||(["startRange","inRange","endRange","notAllowed"].forEach((function(e){n.classList.remove(e)})),void 0!==e&&(e.classList.add(t<=w.selectedDates[0].getTime()?"startRange":"endRange"),a<t&&d===a?n.classList.add("startRange"):a>t&&d===a&&n.classList.add("endRange"),d>=l&&(0===c||d<=c)&&(o=a,s=t,(i=d)>Math.min(o,s)&&i<Math.max(o,s))&&n.classList.add("inRange")))}))}}function re(){!w.isOpen||w.config.static||w.config.inline||de()}function le(e){return function(n){var t=w.config["_"+e+"Date"]=w.parseDate(n,w.config.dateFormat),a=w.config["_"+("min"===e?"max":"min")+"Date"];void 0!==t&&(w["min"===e?"minDateHasTime":"maxDateHasTime"]=t.getHours()>0||t.getMinutes()>0||t.getSeconds()>0),w.selectedDates&&(w.selectedDates=w.selectedDates.filter((function(e){return ne(e)})),w.selectedDates.length||"min"!==e||F(t),ye()),w.daysContainer&&(ue(),void 0!==t?w.currentYearElement[e]=t.getFullYear().toString():w.currentYearElement.removeAttribute(e),w.currentYearElement.disabled=!!a&&void 0!==t&&a.getFullYear()===t.getFullYear())}}function ce(){return w.config.wrap?p.querySelector("[data-input]"):p}function se(){"object"!=typeof w.config.locale&&void 0===I.l10ns[w.config.locale]&&w.config.errorHandler(new Error("flatpickr: invalid locale "+w.config.locale)),w.l10n=e(e({},I.l10ns.default),"object"==typeof w.config.locale?w.config.locale:"default"!==w.config.locale?I.l10ns[w.config.locale]:void 0),D.D="("+w.l10n.weekdays.shorthand.join("|")+")",D.l="("+w.l10n.weekdays.longhand.join("|")+")",D.M="("+w.l10n.months.shorthand.join("|")+")",D.F="("+w.l10n.months.longhand.join("|")+")",D.K="("+w.l10n.amPM[0]+"|"+w.l10n.amPM[1]+"|"+w.l10n.amPM[0].toLowerCase()+"|"+w.l10n.amPM[1].toLowerCase()+")",void 0===e(e({},v),JSON.parse(JSON.stringify(p.dataset||{}))).time_24hr&&void 0===I.defaultConfig.time_24hr&&(w.config.time_24hr=w.l10n.time_24hr),w.formatDate=b(w),w.parseDate=C({config:w.config,l10n:w.l10n})}function de(e){if("function"!=typeof w.config.position){if(void 0!==w.calendarContainer){De("onPreCalendarPosition");var n=e||w._positionElement,t=Array.prototype.reduce.call(w.calendarContainer.children,(function(e,n){return e+n.offsetHeight}),0),a=w.calendarContainer.offsetWidth,i=w.config.position.split(" "),o=i[0],r=i.length>1?i[1]:null,l=n.getBoundingClientRect(),c=window.innerHeight-l.bottom,d="above"===o||"below"!==o&&c<t&&l.top>t,u=window.pageYOffset+l.top+(d?-t-2:n.offsetHeight+2);if(s(w.calendarContainer,"arrowTop",!d),s(w.calendarContainer,"arrowBottom",d),!w.config.inline){var f=window.pageXOffset+l.left,m=!1,g=!1;"center"===r?(f-=(a-l.width)/2,m=!0):"right"===r&&(f-=a-l.width,g=!0),s(w.calendarContainer,"arrowLeft",!m&&!g),s(w.calendarContainer,"arrowCenter",m),s(w.calendarContainer,"arrowRight",g);var p=window.document.body.offsetWidth-(window.pageXOffset+l.right),h=f+a>window.document.body.offsetWidth,v=p+a>window.document.body.offsetWidth;if(s(w.calendarContainer,"rightMost",h),!w.config.static)if(w.calendarContainer.style.top=u+"px",h)if(v){var D=function(){for(var e=null,n=0;n<document.styleSheets.length;n++){var t=document.styleSheets[n];if(t.cssRules){try{t.cssRules}catch(e){continue}e=t;break}}return null!=e?e:(a=document.createElement("style"),document.head.appendChild(a),a.sheet);var a}();if(void 0===D)return;var b=window.document.body.offsetWidth,C=Math.max(0,b/2-a/2),M=D.cssRules.length,y="{left:"+l.left+"px;right:auto;}";s(w.calendarContainer,"rightMost",!1),s(w.calendarContainer,"centerMost",!0),D.insertRule(".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after"+y,M),w.calendarContainer.style.left=C+"px",w.calendarContainer.style.right="auto"}else w.calendarContainer.style.left="auto",w.calendarContainer.style.right=p+"px";else w.calendarContainer.style.left=f+"px",w.calendarContainer.style.right="auto"}}}else w.config.position(w,e)}function ue(){w.config.noCalendar||w.isMobile||(q(),Ce(),U())}function fe(){w._input.focus(),-1!==window.navigator.userAgent.indexOf("MSIE")||void 0!==navigator.msMaxTouchPoints?setTimeout(w.close,0):w.close()}function me(e){e.preventDefault(),e.stopPropagation();var n=f(g(e),(function(e){return e.classList&&e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled")&&!e.classList.contains("notAllowed")}));if(void 0!==n){var t=n,a=w.latestSelectedDateObj=new Date(t.dateObj.getTime()),i=(a.getMonth()<w.currentMonth||a.getMonth()>w.currentMonth+w.config.showMonths-1)&&"range"!==w.config.mode;if(w.selectedDateElem=t,"single"===w.config.mode)w.selectedDates=[a];else if("multiple"===w.config.mode){var o=be(a);o?w.selectedDates.splice(parseInt(o),1):w.selectedDates.push(a)}else"range"===w.config.mode&&(2===w.selectedDates.length&&w.clear(!1,!1),w.latestSelectedDateObj=a,w.selectedDates.push(a),0!==M(a,w.selectedDates[0],!0)&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()})));if(O(),i){var r=w.currentYear!==a.getFullYear();w.currentYear=a.getFullYear(),w.currentMonth=a.getMonth(),r&&(De("onYearChange"),q()),De("onMonthChange")}if(Ce(),U(),ye(),i||"range"===w.config.mode||1!==w.config.showMonths?void 0!==w.selectedDateElem&&void 0===w.hourElement&&w.selectedDateElem&&w.selectedDateElem.focus():W(t),void 0!==w.hourElement&&void 0!==w.hourElement&&w.hourElement.focus(),w.config.closeOnSelect){var l="single"===w.config.mode&&!w.config.enableTime,c="range"===w.config.mode&&2===w.selectedDates.length&&!w.config.enableTime;(l||c)&&fe()}Y()}}w.parseDate=C({config:w.config,l10n:w.l10n}),w._handlers=[],w.pluginElements=[],w.loadedPlugins=[],w._bind=P,w._setHoursFromDate=F,w._positionCalendar=de,w.changeMonth=Z,w.changeYear=ee,w.clear=function(e,n){void 0===e&&(e=!0);void 0===n&&(n=!0);w.input.value="",void 0!==w.altInput&&(w.altInput.value="");void 0!==w.mobileInput&&(w.mobileInput.value="");w.selectedDates=[],w.latestSelectedDateObj=void 0,!0===n&&(w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth());if(!0===w.config.enableTime){var t=E(w.config),a=t.hours,i=t.minutes,o=t.seconds;A(a,i,o)}w.redraw(),e&&De("onChange")},w.close=function(){w.isOpen=!1,w.isMobile||(void 0!==w.calendarContainer&&w.calendarContainer.classList.remove("open"),void 0!==w._input&&w._input.classList.remove("active"));De("onClose")},w.onMouseOver=oe,w._createElement=d,w.createDay=R,w.destroy=function(){void 0!==w.config&&De("onDestroy");for(var e=w._handlers.length;e--;)w._handlers[e].remove();if(w._handlers=[],w.mobileInput)w.mobileInput.parentNode&&w.mobileInput.parentNode.removeChild(w.mobileInput),w.mobileInput=void 0;else if(w.calendarContainer&&w.calendarContainer.parentNode)if(w.config.static&&w.calendarContainer.parentNode){var n=w.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else w.calendarContainer.parentNode.removeChild(w.calendarContainer);w.altInput&&(w.input.type="text",w.altInput.parentNode&&w.altInput.parentNode.removeChild(w.altInput),delete w.altInput);w.input&&(w.input.type=w.input._type,w.input.classList.remove("flatpickr-input"),w.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((function(e){try{delete w[e]}catch(e){}}))},w.isEnabled=ne,w.jumpToDate=j,w.updateValue=ye,w.open=function(e,n){void 0===n&&(n=w._positionElement);if(!0===w.isMobile){if(e){e.preventDefault();var t=g(e);t&&t.blur()}return void 0!==w.mobileInput&&(w.mobileInput.focus(),w.mobileInput.click()),void De("onOpen")}if(w._input.disabled||w.config.inline)return;var a=w.isOpen;w.isOpen=!0,a||(w.calendarContainer.classList.add("open"),w._input.classList.add("active"),De("onOpen"),de(n));!0===w.config.enableTime&&!0===w.config.noCalendar&&(!1!==w.config.allowInput||void 0!==e&&w.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return w.hourElement.select()}),50))},w.redraw=ue,w.set=function(e,n){if(null!==e&&"object"==typeof e)for(var a in Object.assign(w.config,e),e)void 0!==ge[a]&&ge[a].forEach((function(e){return e()}));else w.config[e]=n,void 0!==ge[e]?ge[e].forEach((function(e){return e()})):t.indexOf(e)>-1&&(w.config[e]=c(n));w.redraw(),ye(!0)},w.setDate=function(e,n,t){void 0===n&&(n=!1);void 0===t&&(t=w.config.dateFormat);if(0!==e&&!e||e instanceof Array&&0===e.length)return w.clear(n);pe(e,t),w.latestSelectedDateObj=w.selectedDates[w.selectedDates.length-1],w.redraw(),j(void 0,n),F(),0===w.selectedDates.length&&w.clear(!1);ye(n),n&&De("onChange")},w.toggle=function(e){if(!0===w.isOpen)return w.close();w.open(e)};var ge={locale:[se,G],showMonths:[V,S,z],minDate:[j],maxDate:[j],positionElement:[ve],clickOpens:[function(){!0===w.config.clickOpens?(P(w._input,"focus",w.open),P(w._input,"click",w.open)):(w._input.removeEventListener("focus",w.open),w._input.removeEventListener("click",w.open))}]};function pe(e,n){var t=[];if(e instanceof Array)t=e.map((function(e){return w.parseDate(e,n)}));else if(e instanceof Date||"number"==typeof e)t=[w.parseDate(e,n)];else if("string"==typeof e)switch(w.config.mode){case"single":case"time":t=[w.parseDate(e,n)];break;case"multiple":t=e.split(w.config.conjunction).map((function(e){return w.parseDate(e,n)}));break;case"range":t=e.split(w.l10n.rangeSeparator).map((function(e){return w.parseDate(e,n)}))}else w.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));w.selectedDates=w.config.allowInvalidPreload?t:t.filter((function(e){return e instanceof Date&&ne(e,!1)})),"range"===w.config.mode&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()}))}function he(e){return e.slice().map((function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?w.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:w.parseDate(e.from,void 0),to:w.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function ve(){w._positionElement=w.config.positionElement||w._input}function De(e,n){if(void 0!==w.config){var t=w.config[e];if(void 0!==t&&t.length>0)for(var a=0;t[a]&&a<t.length;a++)t[a](w.selectedDates,w.input.value,w,n);"onChange"===e&&(w.input.dispatchEvent(we("change")),w.input.dispatchEvent(we("input")))}}function we(e){var n=document.createEvent("Event");return n.initEvent(e,!0,!0),n}function be(e){for(var n=0;n<w.selectedDates.length;n++){var t=w.selectedDates[n];if(t instanceof Date&&0===M(t,e))return""+n}return!1}function Ce(){w.config.noCalendar||w.isMobile||!w.monthNav||(w.yearElements.forEach((function(e,n){var t=new Date(w.currentYear,w.currentMonth,1);t.setMonth(w.currentMonth+n),w.config.showMonths>1||"static"===w.config.monthSelectorType?w.monthElements[n].textContent=h(t.getMonth(),w.config.shorthandCurrentMonth,w.l10n)+" ":w.monthsDropdownContainer.value=t.getMonth().toString(),e.value=t.getFullYear().toString()})),w._hidePrevMonthArrow=void 0!==w.config.minDate&&(w.currentYear===w.config.minDate.getFullYear()?w.currentMonth<=w.config.minDate.getMonth():w.currentYear<w.config.minDate.getFullYear()),w._hideNextMonthArrow=void 0!==w.config.maxDate&&(w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth+1>w.config.maxDate.getMonth():w.currentYear>w.config.maxDate.getFullYear()))}function Me(e){var n=e||(w.config.altInput?w.config.altFormat:w.config.dateFormat);return w.selectedDates.map((function(e){return w.formatDate(e,n)})).filter((function(e,n,t){return"range"!==w.config.mode||w.config.enableTime||t.indexOf(e)===n})).join("range"!==w.config.mode?w.config.conjunction:w.l10n.rangeSeparator)}function ye(e){void 0===e&&(e=!0),void 0!==w.mobileInput&&w.mobileFormatStr&&(w.mobileInput.value=void 0!==w.latestSelectedDateObj?w.formatDate(w.latestSelectedDateObj,w.mobileFormatStr):""),w.input.value=Me(w.config.dateFormat),void 0!==w.altInput&&(w.altInput.value=Me(w.config.altFormat)),!1!==e&&De("onValueUpdate")}function xe(e){var n=g(e),t=w.prevMonthNav.contains(n),a=w.nextMonthNav.contains(n);t||a?Z(t?-1:1):w.yearElements.indexOf(n)>=0?n.select():n.classList.contains("arrowUp")?w.changeYear(w.currentYear+1):n.classList.contains("arrowDown")&&w.changeYear(w.currentYear-1)}return function(){w.element=w.input=p,w.isOpen=!1,function(){var n=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],i=e(e({},JSON.parse(JSON.stringify(p.dataset||{}))),v),o={};w.config.parseDate=i.parseDate,w.config.formatDate=i.formatDate,Object.defineProperty(w.config,"enable",{get:function(){return w.config._enable},set:function(e){w.config._enable=he(e)}}),Object.defineProperty(w.config,"disable",{get:function(){return w.config._disable},set:function(e){w.config._disable=he(e)}});var r="time"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var l=I.defaultConfig.dateFormat||a.dateFormat;o.dateFormat=i.noCalendar||r?"H:i"+(i.enableSeconds?":S":""):l+" H:i"+(i.enableSeconds?":S":"")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var s=I.defaultConfig.altFormat||a.altFormat;o.altFormat=i.noCalendar||r?"h:i"+(i.enableSeconds?":S K":" K"):s+" h:i"+(i.enableSeconds?":S":"")+" K"}Object.defineProperty(w.config,"minDate",{get:function(){return w.config._minDate},set:le("min")}),Object.defineProperty(w.config,"maxDate",{get:function(){return w.config._maxDate},set:le("max")});var d=function(e){return function(n){w.config["min"===e?"_minTime":"_maxTime"]=w.parseDate(n,"H:i:S")}};Object.defineProperty(w.config,"minTime",{get:function(){return w.config._minTime},set:d("min")}),Object.defineProperty(w.config,"maxTime",{get:function(){return w.config._maxTime},set:d("max")}),"time"===i.mode&&(w.config.noCalendar=!0,w.config.enableTime=!0);Object.assign(w.config,o,i);for(var u=0;u<n.length;u++)w.config[n[u]]=!0===w.config[n[u]]||"true"===w.config[n[u]];t.filter((function(e){return void 0!==w.config[e]})).forEach((function(e){w.config[e]=c(w.config[e]||[]).map(T)})),w.isMobile=!w.config.disableMobile&&!w.config.inline&&"single"===w.config.mode&&!w.config.disable.length&&!w.config.enable&&!w.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(u=0;u<w.config.plugins.length;u++){var f=w.config.plugins[u](w)||{};for(var m in f)t.indexOf(m)>-1?w.config[m]=c(f[m]).map(T).concat(w.config[m]):void 0===i[m]&&(w.config[m]=f[m])}i.altInputClass||(w.config.altInputClass=ce().className+" "+w.config.altInputClass);De("onParseConfig")}(),se(),function(){if(w.input=ce(),!w.input)return void w.config.errorHandler(new Error("Invalid input element specified"));w.input._type=w.input.type,w.input.type="text",w.input.classList.add("flatpickr-input"),w._input=w.input,w.config.altInput&&(w.altInput=d(w.input.nodeName,w.config.altInputClass),w._input=w.altInput,w.altInput.placeholder=w.input.placeholder,w.altInput.disabled=w.input.disabled,w.altInput.required=w.input.required,w.altInput.tabIndex=w.input.tabIndex,w.altInput.type="text",w.input.setAttribute("type","hidden"),!w.config.static&&w.input.parentNode&&w.input.parentNode.insertBefore(w.altInput,w.input.nextSibling));w.config.allowInput||w._input.setAttribute("readonly","readonly");ve()}(),function(){w.selectedDates=[],w.now=w.parseDate(w.config.now)||new Date;var e=w.config.defaultDate||("INPUT"!==w.input.nodeName&&"TEXTAREA"!==w.input.nodeName||!w.input.placeholder||w.input.value!==w.input.placeholder?w.input.value:null);e&&pe(e,w.config.dateFormat);w._initialDate=w.selectedDates.length>0?w.selectedDates[0]:w.config.minDate&&w.config.minDate.getTime()>w.now.getTime()?w.config.minDate:w.config.maxDate&&w.config.maxDate.getTime()<w.now.getTime()?w.config.maxDate:w.now,w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth(),w.selectedDates.length>0&&(w.latestSelectedDateObj=w.selectedDates[0]);void 0!==w.config.minTime&&(w.config.minTime=w.parseDate(w.config.minTime,"H:i"));void 0!==w.config.maxTime&&(w.config.maxTime=w.parseDate(w.config.maxTime,"H:i"));w.minDateHasTime=!!w.config.minDate&&(w.config.minDate.getHours()>0||w.config.minDate.getMinutes()>0||w.config.minDate.getSeconds()>0),w.maxDateHasTime=!!w.config.maxDate&&(w.config.maxDate.getHours()>0||w.config.maxDate.getMinutes()>0||w.config.maxDate.getSeconds()>0)}(),w.utils={getDaysInMonth:function(e,n){return void 0===e&&(e=w.currentMonth),void 0===n&&(n=w.currentYear),1===e&&(n%4==0&&n%100!=0||n%400==0)?29:w.l10n.daysInMonth[e]}},w.isMobile||function(){var e=window.document.createDocumentFragment();if(w.calendarContainer=d("div","flatpickr-calendar"),w.calendarContainer.tabIndex=-1,!w.config.noCalendar){if(e.appendChild((w.monthNav=d("div","flatpickr-months"),w.yearElements=[],w.monthElements=[],w.prevMonthNav=d("span","flatpickr-prev-month"),w.prevMonthNav.innerHTML=w.config.prevArrow,w.nextMonthNav=d("span","flatpickr-next-month"),w.nextMonthNav.innerHTML=w.config.nextArrow,V(),Object.defineProperty(w,"_hidePrevMonthArrow",{get:function(){return w.__hidePrevMonthArrow},set:function(e){w.__hidePrevMonthArrow!==e&&(s(w.prevMonthNav,"flatpickr-disabled",e),w.__hidePrevMonthArrow=e)}}),Object.defineProperty(w,"_hideNextMonthArrow",{get:function(){return w.__hideNextMonthArrow},set:function(e){w.__hideNextMonthArrow!==e&&(s(w.nextMonthNav,"flatpickr-disabled",e),w.__hideNextMonthArrow=e)}}),w.currentYearElement=w.yearElements[0],Ce(),w.monthNav)),w.innerContainer=d("div","flatpickr-innerContainer"),w.config.weekNumbers){var n=function(){w.calendarContainer.classList.add("hasWeeks");var e=d("div","flatpickr-weekwrapper");e.appendChild(d("span","flatpickr-weekday",w.l10n.weekAbbreviation));var n=d("div","flatpickr-weeks");return e.appendChild(n),{weekWrapper:e,weekNumbers:n}}(),t=n.weekWrapper,a=n.weekNumbers;w.innerContainer.appendChild(t),w.weekNumbers=a,w.weekWrapper=t}w.rContainer=d("div","flatpickr-rContainer"),w.rContainer.appendChild(z()),w.daysContainer||(w.daysContainer=d("div","flatpickr-days"),w.daysContainer.tabIndex=-1),U(),w.rContainer.appendChild(w.daysContainer),w.innerContainer.appendChild(w.rContainer),e.appendChild(w.innerContainer)}w.config.enableTime&&e.appendChild(function(){w.calendarContainer.classList.add("hasTime"),w.config.noCalendar&&w.calendarContainer.classList.add("noCalendar");var e=E(w.config);w.timeContainer=d("div","flatpickr-time"),w.timeContainer.tabIndex=-1;var n=d("span","flatpickr-time-separator",":"),t=m("flatpickr-hour",{"aria-label":w.l10n.hourAriaLabel});w.hourElement=t.getElementsByTagName("input")[0];var a=m("flatpickr-minute",{"aria-label":w.l10n.minuteAriaLabel});w.minuteElement=a.getElementsByTagName("input")[0],w.hourElement.tabIndex=w.minuteElement.tabIndex=-1,w.hourElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getHours():w.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),w.minuteElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getMinutes():e.minutes),w.hourElement.setAttribute("step",w.config.hourIncrement.toString()),w.minuteElement.setAttribute("step",w.config.minuteIncrement.toString()),w.hourElement.setAttribute("min",w.config.time_24hr?"0":"1"),w.hourElement.setAttribute("max",w.config.time_24hr?"23":"12"),w.hourElement.setAttribute("maxlength","2"),w.minuteElement.setAttribute("min","0"),w.minuteElement.setAttribute("max","59"),w.minuteElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(t),w.timeContainer.appendChild(n),w.timeContainer.appendChild(a),w.config.time_24hr&&w.timeContainer.classList.add("time24hr");if(w.config.enableSeconds){w.timeContainer.classList.add("hasSeconds");var i=m("flatpickr-second");w.secondElement=i.getElementsByTagName("input")[0],w.secondElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getSeconds():e.seconds),w.secondElement.setAttribute("step",w.minuteElement.getAttribute("step")),w.secondElement.setAttribute("min","0"),w.secondElement.setAttribute("max","59"),w.secondElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(d("span","flatpickr-time-separator",":")),w.timeContainer.appendChild(i)}w.config.time_24hr||(w.amPM=d("span","flatpickr-am-pm",w.l10n.amPM[r((w.latestSelectedDateObj?w.hourElement.value:w.config.defaultHour)>11)]),w.amPM.title=w.l10n.toggleTitle,w.amPM.tabIndex=-1,w.timeContainer.appendChild(w.amPM));return w.timeContainer}());s(w.calendarContainer,"rangeMode","range"===w.config.mode),s(w.calendarContainer,"animate",!0===w.config.animate),s(w.calendarContainer,"multiMonth",w.config.showMonths>1),w.calendarContainer.appendChild(e);var i=void 0!==w.config.appendTo&&void 0!==w.config.appendTo.nodeType;if((w.config.inline||w.config.static)&&(w.calendarContainer.classList.add(w.config.inline?"inline":"static"),w.config.inline&&(!i&&w.element.parentNode?w.element.parentNode.insertBefore(w.calendarContainer,w._input.nextSibling):void 0!==w.config.appendTo&&w.config.appendTo.appendChild(w.calendarContainer)),w.config.static)){var l=d("div","flatpickr-wrapper");w.element.parentNode&&w.element.parentNode.insertBefore(l,w.element),l.appendChild(w.element),w.altInput&&l.appendChild(w.altInput),l.appendChild(w.calendarContainer)}w.config.static||w.config.inline||(void 0!==w.config.appendTo?w.config.appendTo:window.document.body).appendChild(w.calendarContainer)}(),function(){w.config.wrap&&["open","close","toggle","clear"].forEach((function(e){Array.prototype.forEach.call(w.element.querySelectorAll("[data-"+e+"]"),(function(n){return P(n,"click",w[e])}))}));if(w.isMobile)return void function(){var e=w.config.enableTime?w.config.noCalendar?"time":"datetime-local":"date";w.mobileInput=d("input",w.input.className+" flatpickr-mobile"),w.mobileInput.tabIndex=1,w.mobileInput.type=e,w.mobileInput.disabled=w.input.disabled,w.mobileInput.required=w.input.required,w.mobileInput.placeholder=w.input.placeholder,w.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",w.selectedDates.length>0&&(w.mobileInput.defaultValue=w.mobileInput.value=w.formatDate(w.selectedDates[0],w.mobileFormatStr));w.config.minDate&&(w.mobileInput.min=w.formatDate(w.config.minDate,"Y-m-d"));w.config.maxDate&&(w.mobileInput.max=w.formatDate(w.config.maxDate,"Y-m-d"));w.input.getAttribute("step")&&(w.mobileInput.step=String(w.input.getAttribute("step")));w.input.type="hidden",void 0!==w.altInput&&(w.altInput.type="hidden");try{w.input.parentNode&&w.input.parentNode.insertBefore(w.mobileInput,w.input.nextSibling)}catch(e){}P(w.mobileInput,"change",(function(e){w.setDate(g(e).value,!1,w.mobileFormatStr),De("onChange"),De("onClose")}))}();var e=l(re,50);w._debouncedChange=l(Y,300),w.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&P(w.daysContainer,"mouseover",(function(e){"range"===w.config.mode&&oe(g(e))}));P(w._input,"keydown",ie),void 0!==w.calendarContainer&&P(w.calendarContainer,"keydown",ie);w.config.inline||w.config.static||P(window,"resize",e);void 0!==window.ontouchstart?P(window.document,"touchstart",X):P(window.document,"mousedown",X);P(window.document,"focus",X,{capture:!0}),!0===w.config.clickOpens&&(P(w._input,"focus",w.open),P(w._input,"click",w.open));void 0!==w.daysContainer&&(P(w.monthNav,"click",xe),P(w.monthNav,["keyup","increment"],N),P(w.daysContainer,"click",me));if(void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement){var n=function(e){return g(e).select()};P(w.timeContainer,["increment"],_),P(w.timeContainer,"blur",_,{capture:!0}),P(w.timeContainer,"click",H),P([w.hourElement,w.minuteElement],["focus","click"],n),void 0!==w.secondElement&&P(w.secondElement,"focus",(function(){return w.secondElement&&w.secondElement.select()})),void 0!==w.amPM&&P(w.amPM,"click",(function(e){_(e)}))}w.config.allowInput&&P(w._input,"blur",ae)}(),(w.selectedDates.length||w.config.noCalendar)&&(w.config.enableTime&&F(w.config.noCalendar?w.latestSelectedDateObj:void 0),ye(!1)),S();var n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!w.isMobile&&n&&de(),De("onReady")}(),w}function T(e,n){for(var t=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;i<t.length;i++){var o=t[i];try{if(null!==o.getAttribute("data-fp-omit"))continue;void 0!==o._flatpickr&&(o._flatpickr.destroy(),o._flatpickr=void 0),o._flatpickr=k(o,n||{}),a.push(o._flatpickr)}catch(e){console.error(e)}}return 1===a.length?a[0]:a}"undefined"!=typeof HTMLElement&&"undefined"!=typeof HTMLCollection&&"undefined"!=typeof NodeList&&(HTMLCollection.prototype.flatpickr=NodeList.prototype.flatpickr=function(e){return T(this,e)},HTMLElement.prototype.flatpickr=function(e){return T([this],e)});var I=function(e,n){return"string"==typeof e?T(window.document.querySelectorAll(e),n):e instanceof Node?T([e],n):T(e,n)};return I.defaultConfig={},I.l10ns={en:e({},i),default:e({},i)},I.localize=function(n){I.l10ns.default=e(e({},I.l10ns.default),n)},I.setDefaults=function(n){I.defaultConfig=e(e({},I.defaultConfig),n)},I.parseDate=C({}),I.formatDate=b({}),I.compareDates=M,"undefined"!=typeof jQuery&&void 0!==jQuery.fn&&(jQuery.fn.flatpickr=function(e){return T(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=I),I}));
vendor: 3,346 bytes, lines 2889-2890
2889 2890(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,global.monthSelectPlugin=factory())})(this,function(){"use strict";var __assign=function(){__assign=Object.assign||function __assign(t){for(var s,i=1,n=arguments.length;i<n;i++){s=arguments[i];for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))t[p]=s[p]}return t};return __assign.apply(this,arguments)};var monthToStr=function(monthNumber,shorthand,locale){return locale.months[shorthand?"shorthand":"longhand"][monthNumber]};function clearNode(node){while(node.firstChild)node.removeChild(node.firstChild)}function getEventTarget(event){try{if(typeof event.composedPath==="function"){var path=event.composedPath();return path[0]}return event.target}catch(error){return event.target}}var defaultConfig={shorthand:false,dateFormat:"F Y",altFormat:"F Y",theme:"light"};function monthSelectPlugin(pluginConfig){var config=__assign(__assign({},defaultConfig),pluginConfig);return function(fp){fp.config.dateFormat=config.dateFormat;fp.config.altFormat=config.altFormat;var self={monthsContainer:null};function clearUnnecessaryDOMElements(){if(!fp.rContainer)return;clearNode(fp.rContainer);for(var index=0;index<fp.monthElements.length;index++){var element=fp.monthElements[index];if(!element.parentNode)continue;element.parentNode.removeChild(element)}}function build(){if(!fp.rContainer)return;self.monthsContainer=fp._createElement("div","flatpickr-monthSelect-months");self.monthsContainer.tabIndex=-1;buildMonths();fp.rContainer.appendChild(self.monthsContainer);fp.calendarContainer.classList.add("flatpickr-monthSelect-theme-"+config.theme)}function buildMonths(){if(!self.monthsContainer)return;clearNode(self.monthsContainer);var frag=document.createDocumentFragment();for(var i=0;i<12;i++){var month=fp.createDay("flatpickr-monthSelect-month",new Date(fp.currentYear,i),0,i);if(month.dateObj.getMonth()===(new Date).getMonth()&&month.dateObj.getFullYear()===(new Date).getFullYear())month.classList.add("today");month.textContent=monthToStr(i,config.shorthand,fp.l10n);month.addEventListener("click",selectMonth);frag.appendChild(month)}self.monthsContainer.appendChild(frag);if(fp.config.minDate&&fp.currentYear===fp.config.minDate.getFullYear())fp.prevMonthNav.classList.add("flatpickr-disabled");else fp.prevMonthNav.classList.remove("flatpickr-disabled");if(fp.config.maxDate&&fp.currentYear===fp.config.maxDate.getFullYear())fp.nextMonthNav.classList.add("flatpickr-disabled");else fp.nextMonthNav.classList.remove("flatpickr-disabled")}function bindEvents(){fp._bind(fp.prevMonthNav,"click",function(e){e.preventDefault();e.stopPropagation();fp.changeYear(fp.currentYear-1);selectYear();buildMonths()});fp._bind(fp.nextMonthNav,"click",function(e){e.preventDefault();e.stopPropagation();fp.changeYear(fp.currentYear+1);selectYear();buildMonths()});fp._bind(self.monthsContainer,"mouseover",function(e){if(fp.config.mode==="range")fp.onMouseOver(getEventTarget(e),"flatpickr-monthSelect-month")})}function setCurrentlySelected(){if(!fp.rContainer)return;if(!fp.selectedDates.length)return;var currentlySelected=fp.rContainer.querySelectorAll(".flatpickr-monthSelect-month.selected");for(var index=0;
2890index<currentlySelected.length;index++){currentlySelected[index].classList.remove("selected")}var targetMonth=fp.selectedDates[0].getMonth();var month=fp.rContainer.querySelector(".flatpickr-monthSelect-month:nth-child("+(targetMonth+1)+")");if(month){month.classList.add("selected")}}function selectYear(){var selectedDate=fp.selectedDates[0];if(selectedDate){selectedDate=new Date(selectedDate);selectedDate.setFullYear(fp.currentYear);if(fp.config.minDate&&selectedDate<fp.config.minDate){selectedDate=fp.config.minDate}if(fp.config.maxDate&&selectedDate>fp.config.maxDate){selectedDate=fp.config.maxDate}fp.currentYear=selectedDate.getFullYear()}fp.currentYearElement.value=String(fp.currentYear);if(fp.rContainer){var months=fp.rContainer.querySelectorAll(".flatpickr-monthSelect-month");months.forEach(function(month){month.dateObj.setFullYear(fp.currentYear);if(fp.config.minDate&&month.dateObj<fp.config.minDate||fp.config.maxDate&&month.dateObj>fp.config.maxDate){month.classList.add("flatpickr-disabled")}else{month.classList.remove("flatpickr-disabled")}})}setCurrentlySelected()}function selectMonth(e){e.preventDefault();e.stopPropagation();var eventTarget=getEventTarget(e);if(!(eventTarget instanceof Element))return;if(eventTarget.classList.contains("flatpickr-disabled"))return;if(eventTarget.classList.contains("notAllowed"))return;setMonth(eventTarget.dateObj);if(fp.config.closeOnSelect){var single=fp.config.mode==="single";var range=fp.config.mode==="range"&&fp.selectedDates.length===2;if(single||range)fp.close()}}function setMonth(date){var selectedDate=new Date(fp.currentYear,date.getMonth(),date.getDate());var selectedDates=[];switch(fp.config.mode){case"single":selectedDates=[selectedDate];break;case"multiple":selectedDates.push(selectedDate);break;case"range":if(fp.selectedDates.length===2){selectedDates=[selectedDate]}else{selectedDates=fp.selectedDates.concat([selectedDate]);selectedDates.sort(function(a,b){return a.getTime()-b.getTime()})}break}fp.setDate(selectedDates,true);setCurrentlySelected()}var shifts={37:-1,39:1,40:3,38:-3};function onKeyDown(_,__,___,e){var shouldMove=shifts[e.keyCode]!==undefined;if(!shouldMove&&e.keyCode!==13){return}if(!fp.rContainer||!self.monthsContainer)return;var currentlySelected=fp.rContainer.querySelector(".flatpickr-monthSelect-month.selected");var index=Array.prototype.indexOf.call(self.monthsContainer.children,document.activeElement);if(index===-1){var target=currentlySelected||self.monthsContainer.firstElementChild;target.focus();index=target.$i}if(shouldMove){self.monthsContainer.children[(12+index+shifts[e.keyCode])%12].focus()}else if(e.keyCode===13&&self.monthsContainer.contains(document.activeElement)){setMonth(document.activeElement.dateObj)}}function closeHook(){var _a;if(((_a=fp.config)===null||_a===void 0?void 0:_a.mode)==="range"&&fp.selectedDates.length===1)fp.clear(false);if(!fp.selectedDates.length)buildMonths()}function stubCurrentMonth(){config._stubbedCurrentMonth=fp._initialDate.getMonth();fp._initialDate.setMonth(config._stubbedCurrentMonth);fp.currentMonth=config._stubbedCurrentMonth}function unstubCurrentMonth(){if(!config._stubbedCurrentMonth)return;fp._initialDate.setMonth(config._stubbedCurrentMonth);fp.currentMonth=config._stubbedCurrentMonth;delete config._stubbedCurrentMonth}function destroyPluginInstance(){if(self.monthsContainer!==null){var months=self.monthsContainer.querySelectorAll(".flatpickr-monthSelect-month");for(var index=0;index<months.length;index++){months[index].removeEventListener("click",selectMonth)}}}return{onParseConfig:function(){fp.config.enableTime=false},onValueUpdate:setCurrentlySelected,onKeyDown:onKeyDown,onReady:[stubCurrentMonth,clearUnnecessaryDOMElements,build,bindEvents,setCurrentlySelected,function(){fp.config.onClose.push(closeHook);fp.loadedPlugins.push("monthSelect")}],onDestroy:[unstubCurrentMonth,destroyPluginInstance,function(){fp.config.onClose=fp.config.onClose.filter(function(hook){return hook!==closeHook})}]}}}return monthSelectPlugin}); 2891 2892// tippy.js 2893// popperjs v2.11.5 - MIT License - https://github.com/popperjs/popper-core 2894!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),o=1,i=1;if(r(e)&&t){var a=e.offsetHeight,f=e.offsetWidth;f>0&&(o=s(n.width)/f||1),a>0&&(i=s(n.height)/a||1)}return{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function c(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function p(e){return e?(e.nodeName||"").toLowerCase():null}function u(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function l(e){return f(u(e)).left+c(e).scrollLeft}function d(e){return t(e).getComputedStyle(e)}function h(e){var t=d(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function m(e,n,o){void 0===o&&(o=!1);var i,a,d=r(n),m=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),v=u(n),g=f(e,m),y={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(d||!d&&!o)&&(("body"!==p(n)||h(v))&&(y=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:c(i)),r(n)?((b=f(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):v&&(b.x=l(v))),{x:g.left+y.scrollLeft-b.x,y:g.top+y.scrollTop-b.y,width:g.width,height:g.height}}function v(e){var t=f(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function g(e){return"html"===p(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||u(e)}function y(e){return["html","body","#document"].indexOf(p(e))>=0?e.ownerDocument.body:r(e)&&h(e)?e:y(g(e))}function b(e,n){var r;void 0===n&&(n=[]);var o=y(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualVie
vendor: 4,539 bytes, line 2894
2894wport||[],h(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(b(g(s)))}function x(e){return["table","td","th"].indexOf(p(e))>=0}function w(e){return r(e)&&"fixed"!==d(e).position?e.offsetParent:null}function O(e){for(var n=t(e),i=w(e);i&&x(i)&&"static"===d(i).position;)i=w(i);return i&&("html"===p(i)||"body"===p(i)&&"static"===d(i).position)?n:i||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&r(e)&&"fixed"===d(e).position)return null;var n=g(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(p(n))<0;){var i=d(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var j="top",E="bottom",D="right",A="left",L="auto",P=[j,E,D,A],M="start",k="end",W="viewport",B="popper",H=P.reduce((function(e,t){return e.concat([t+"-"+M,t+"-"+k])}),[]),T=[].concat(P,[L]).reduce((function(e,t){return e.concat([t,t+"-"+M,t+"-"+k])}),[]),R=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function S(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function q(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function V(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function N(e,r){return r===W?V(function(e){var n=t(e),r=u(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,s=0,f=0;return o&&(i=o.width,a=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=o.offsetLeft,f=o.offsetTop)),{width:i,height:a,x:s+l(e),y:f}}(e)):n(r)?function(e){var t=f(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(r):V(function(e){var t,n=u(e),r=c(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+l(e),p=-r.scrollTop;return"rtl"===d(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:p}}(u(e)))}function I(e,t,o){var s="clippingParents"===t?function(e){var t=b(g(e)),o=["absolute","fixed"].indexOf(d(e).position)>=0&&r(e)?O(e):e;return n(o)?t.filter((function(e){return n(e)&&q(e,o)&&"body"!==p(e)})):[]}(e):[].concat(t),f=[].concat(s,[o]),c=f[0],u=f.reduce((function(t,n){var r=N(e,n);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),N(e,c));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function _(e){return e.split("-")[1]}function F(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function U(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?_(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case j:t={x:s,y:n.y-r.height};break;case E:t={x:s,y:n.y+n.height};break;case D:t={x:n.x+n.width,y:f};break;case A:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?F(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case M:t[c]=t[c]-(n[p]/2-r[p]/2);break;case k:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function z(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function X(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Y(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.boundary,s=void 0===a?"clippingParents":a,c=r.rootBoundary,p=void 0===c?W:c,l=r.elementContext,d=void 0===l?B:l,h=r.altBoundary,m=void 0!==h&&h,v=r.padding,g=void 0===v?0:v,y=z("number"!=typeof g?g:X(g,P)),b=d===B?"reference":B,x=e.rects.popper,w=e.elements[m?b:d],O=I(n(w)?w:w.contextElement||u(e.elements.popper),s,p),A=f(e.elements.reference),L=U({reference:A,element:x,strategy:"absolute",placement:i}),M=V(Object.assign({},x,L)),k=d===B?M:A,H={top:O.top-k.top+y.top,bottom:k.bottom-O.bottom+y.bottom,left:O.left-k.left+y.left,right:k.right-O.right+y.right},T=e.modifiersData.offset;if(d===B&&T){var R=T[i];
vendor: 12,767 bytes, lines 2894-2895
2894Object.keys(H).forEach((function(e){var t=[D,E].indexOf(e)>=0?1:-1,n=[j,E].indexOf(e)>=0?"y":"x";H[e]+=R[n]*t}))}return H}var G={placement:"bottom",modifiers:[],strategy:"absolute"};function J(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function K(e){void 0===e&&(e={});var t=e,r=t.defaultModifiers,o=void 0===r?[]:r,i=t.defaultOptions,a=void 0===i?G:i;return function(e,t,r){void 0===r&&(r=a);var i,s,f={placement:"bottom",orderedModifiers:[],options:Object.assign({},G,a),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},c=[],p=!1,u={state:f,setOptions:function(r){var i="function"==typeof r?r(f.options):r;l(),f.options=Object.assign({},a,f.options,i),f.scrollParents={reference:n(e)?b(e):e.contextElement?b(e.contextElement):[],popper:b(t)};var s,p,d=function(e){var t=S(e);return R.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}((s=[].concat(o,f.options.modifiers),p=s.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{}),Object.keys(p).map((function(e){return p[e]}))));return f.orderedModifiers=d.filter((function(e){return e.enabled})),f.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,o=e.effect;if("function"==typeof o){var i=o({state:f,name:t,instance:u,options:r}),a=function(){};c.push(i||a)}})),u.update()},forceUpdate:function(){if(!p){var e=f.elements,t=e.reference,n=e.popper;if(J(t,n)){f.rects={reference:m(t,O(n),"fixed"===f.options.strategy),popper:v(n)},f.reset=!1,f.placement=f.options.placement,f.orderedModifiers.forEach((function(e){return f.modifiersData[e.name]=Object.assign({},e.data)}));for(var r=0;r<f.orderedModifiers.length;r++)if(!0!==f.reset){var o=f.orderedModifiers[r],i=o.fn,a=o.options,s=void 0===a?{}:a,c=o.name;"function"==typeof i&&(f=i({state:f,options:s,name:c,instance:u})||f)}else f.reset=!1,r=-1}}},update:(i=function(){return new Promise((function(e){u.forceUpdate(),e(f)}))},function(){return s||(s=new Promise((function(e){Promise.resolve().then((function(){s=void 0,e(i())}))}))),s}),destroy:function(){l(),p=!0}};if(!J(e,t))return u;function l(){c.forEach((function(e){return e()})),c=[]}return u.setOptions(r).then((function(e){!p&&r.onFirstUpdate&&r.onFirstUpdate(e)})),u}}var Q={passive:!0};var Z={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var n=e.state,r=e.instance,o=e.options,i=o.scroll,a=void 0===i||i,s=o.resize,f=void 0===s||s,c=t(n.elements.popper),p=[].concat(n.scrollParents.reference,n.scrollParents.popper);return a&&p.forEach((function(e){e.addEventListener("scroll",r.update,Q)})),f&&c.addEventListener("resize",r.update,Q),function(){a&&p.forEach((function(e){e.removeEventListener("scroll",r.update,Q)})),f&&c.removeEventListener("resize",r.update,Q)}},data:{}};var $={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=U({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},ee={top:"auto",right:"auto",bottom:"auto",left:"auto"};function te(e){var n,r=e.popper,o=e.popperRect,i=e.placement,a=e.variation,f=e.offsets,c=e.position,p=e.gpuAcceleration,l=e.adaptive,h=e.roundOffsets,m=e.isFixed,v=f.x,g=void 0===v?0:v,y=f.y,b=void 0===y?0:y,x="function"==typeof h?h({x:g,y:b}):{x:g,y:b};g=x.x,b=x.y;var w=f.hasOwnProperty("x"),L=f.hasOwnProperty("y"),P=A,M=j,W=window;if(l){var B=O(r),H="clientHeight",T="clientWidth";if(B===t(r)&&"static"!==d(B=u(r)).position&&"absolute"===c&&(H="scrollHeight",T="scrollWidth"),B=B,i===j||(i===A||i===D)&&a===k)M=E,b-=(m&&B===W&&W.visualViewport?W.visualViewport.height:B[H])-o.height,b*=p?1:-1;if(i===A||(i===j||i===E)&&a===k)P=D,g-=(m&&B===W&&W.visualViewport?W.visualViewport.width:B[T])-o.width,g*=p?1:-1}var R,S=Object.assign({position:c},l&&ee),C=!0===h?function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:s(t*r)/r||0,y:s(n*r)/r||0}}({x:g,y:b}):{x:g,y:b};return g=C.x,b=C.y,p?Object.assign({},S,((R={})[M]=L?"0":"",R[P]=w?"0":"",R.transform=(W.devicePixelRatio||1)<=1?"translate("+g+"px, "+b+"px)":"translate3d("+g+"px, "+b+"px, 0)",R)):Object.assign({},S,((n={})[M]=L?b+"px":"",n[P]=w?g+"px":"",n.transform="",n))}var ne={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,s=n.roundOffsets,f=void 0===s||s,c={placement:C(t.placement),variation:_(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,te(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:f})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,te(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:f})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};var re={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},i=t.elements[e];r(i)&&p(i)&&(Object.assign(i.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],i=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});r(o)&&p(o)&&(Object.assign(o.style,a),Object.keys(i).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]};var oe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=void 0===o?[0,0]:o,a=T.reduce((function(e,n){return e[n]=function(e,t,n){var r=C(e),o=[A,j].indexOf(r)>=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[A,D].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},ie={left:"right",right:"left",bottom:"top",top:"bottom"};function ae(e){return e.replace(/left|right|bottom|top/g,(function(e){return ie[e]}))}var se={start:"end",end:"start"};function fe(e){return e.replace(/start|end/g,(function(e){return se[e]}))}function ce(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?T:f,p=_(r),u=p?s?H:H.filter((function(e){return _(e)===p})):P,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=Y(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var pe={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,g=C(v),y=f||(g===v||!h?[ae(v)]:function(e){if(C(e)===L)return[];var t=ae(e);return[fe(e),t,fe(t)]}(v)),b=[v].concat(y).reduce((function(e,n){return e.concat(C(n)===L?ce(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,P=!0,k=b[0],W=0;W<b.length;W++){var B=b[W],H=C(B),T=_(B)===M,R=[j,E].indexOf(H)>=0,S=R?"width":"height",q=Y(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),V=R?T?D:A:T?E:j;x[S]>w[S]&&(V=ae(V));var N=ae(V),I=[];if(i&&I.push(q[H]<=0),s&&I.push(q[V]<=0,q[N]<=0),I.every((function(e){return e}))){k=B,P=!1;break}O.set(B,I)}if(P)for(var F=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return k=t,"break"},U=h?3:1;U>0;U--){if("break"===F(U))break}t.placement!==k&&(t.modifiersData[r]._skip=!0,t.placement=k,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ue(e,t,n){return i(e,a(t,n))}var le={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,g=n.tetherOffset,y=void 0===g?0:g,b=Y(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=_(t.placement),L=!w,P=F(x),k="x"===P?"y":"x",W=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,q={x:0,y:0};if(W){if(s){var V,N="y"===P?j:A,I="y"===P?E:D,U="y"===P?"height":"width",z=W[P],X=z+b[N],G=z-b[I],J=m?-H[U]/2:0,K=w===M?B[U]:H[U],Q=w===M?-H[U]:-B[U],Z=t.elements.arrow,$=m&&Z?v(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=ue(0,B[U],$[U]),oe=L?B[U]/2-J-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=L?-B[U]/2+J+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&O(t.elements.arrow),se=ae?"y"===P?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(V=null==S?void 0:S[P])?V:0,ce=z+ie-fe,pe=ue(m?a(X,z+oe-fe-se):X,z,m?i(G,ce):G);W[P]=pe,q[P]=pe-z}if(c){var le,de="x"===P?j:A,he="x"===P?E:D,me=W[k],ve="y"===k?"height":"width",ge=me+b[de],ye=me-b[he],be=-1!==[j,A].indexOf(x),xe=null!=(le=null==S?void 0:S[k])?le:0,we=be?ge:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ye,je=m&&be?function(e,t,n){var r=ue(e,t,n);return r>n?n:r}(we,me,Oe):ue(m?we:ge,me,m?Oe:ye);W[k]=je,q[k]=je-me}t.modifiersData[r]=q}},requiresIfExists:["offset"]};var de={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=F(s),c=[A,D].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return z("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:X(e,P))}(o.padding,n),u=v(i),l="y"===f?j:A,d="y"===f?E:D,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],g=O(i),y=g?"y"===f?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],L=y/2-u[c]/2+b,M=ue(x,L,w),k=f;n.modifiersData[r]=((t={})[k]=M,t.centerOffset=M-L,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&q(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function he(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function me(e){return[j,D,E,A].some((function(t){return e[t]>=0}))}var ve={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=Y(t,{elementContext:"reference"}),s=Y(t,{altBoundary:!0}),f=he(a,r),c=he(s,o,i),p=me(f),u=me(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},ge=K({defaultModifiers:[Z,$,ne,re]}),ye=[Z,$,ne,re,oe,pe,le,de,ve],be=K({defaultModifiers:ye});e.applyStyles=re,e.arrow=de,e.computeStyles=ne,e.createPopper=be,e.createPopperLite=ge,e.defaultModifiers=ye,e.detectOverflow=Y,e.eventListeners=Z,e.flip=pe,e.hide=ve,e.offset=oe,e.popperGenerator=K,e.popperOffsets=$,e.preventOverflow=le,Object.defineProperty(e,"__esModule",{value:!0})})); 2895// tippy.js v6.3.7 - MIT License - https://github.com/atomiks/tippyjs
vendor: 25,667 bytes, line 2896
2896!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t=t||self).tippy=e(t.Popper)}(this,(function(t){"use strict";var e="undefined"!=typeof window&&"undefined"!=typeof document,n=!!e&&!!window.msCrypto,r={passive:!0,capture:!0},o=function(){return document.body};function i(t,e,n){if(Array.isArray(t)){var r=t[e];return null==r?Array.isArray(n)?n[e]:n:r}return t}function a(t,e){var n={}.toString.call(t);return 0===n.indexOf("[object")&&n.indexOf(e+"]")>-1}function s(t,e){return"function"==typeof t?t.apply(void 0,e):t}function u(t,e){return 0===e?t:function(r){clearTimeout(n),n=setTimeout((function(){t(r)}),e)};var n}function p(t,e){var n=Object.assign({},t);return e.forEach((function(t){delete n[t]})),n}function c(t){return[].concat(t)}function f(t,e){-1===t.indexOf(e)&&t.push(e)}function l(t){return t.split("-")[0]}function d(t){return[].slice.call(t)}function v(t){return Object.keys(t).reduce((function(e,n){return void 0!==t[n]&&(e[n]=t[n]),e}),{})}function m(){return document.createElement("div")}function g(t){return["Element","Fragment"].some((function(e){return a(t,e)}))}function h(t){return a(t,"MouseEvent")}function b(t){return!(!t||!t._tippy||t._tippy.reference!==t)}function y(t){return g(t)?[t]:function(t){return a(t,"NodeList")}(t)?d(t):Array.isArray(t)?t:d(document.querySelectorAll(t))}function w(t,e){t.forEach((function(t){t&&(t.style.transitionDuration=e+"ms")}))}function x(t,e){t.forEach((function(t){t&&t.setAttribute("data-state",e)}))}function E(t){var e,n=c(t)[0];return null!=n&&null!=(e=n.ownerDocument)&&e.body?n.ownerDocument:document}function O(t,e,n){var r=e+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(e){t[r](e,n)}))}function C(t,e){for(var n=e;n;){var r;if(t.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var T={isTouch:!1},A=0;function L(){T.isTouch||(T.isTouch=!0,window.performance&&document.addEventListener("mousemove",D))}function D(){var t=performance.now();t-A<20&&(T.isTouch=!1,document.removeEventListener("mousemove",D)),A=t}function k(){var t=document.activeElement;if(b(t)){var e=t._tippy;t.blur&&!e.state.isVisible&&t.blur()}}var R=Object.assign({appendTo:o,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),P=Object.keys(R);function j(t){var e=(t.plugins||[]).reduce((function(e,n){var r,o=n.name,i=n.defaultValue;o&&(e[o]=void 0!==t[o]?t[o]:null!=(r=R[o])?r:i);return e}),{});return Object.assign({},t,e)}function M(t,e){var n=Object.assign({},e,{content:s(e.content,[t])},e.ignoreAttributes?{}:function(t,e){return(e?Object.keys(j(Object.assign({},R,{plugins:e}))):P).reduce((function(e,n){var r=(t.getAttribute("data-tippy-"+n)||"").trim();if(!r)return e;if("content"===n)e[n]=r;else try{e[n]=JSON.parse(r)}catch(t){e[n]=r}return e}),{})}(t,e.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?e.interactive:n.aria.expanded,content:"auto"===n.aria.content?e.interactive?null:"describedby":n.aria.content},n}function V(t,e){t.innerHTML=e}function I(t){var e=m();return!0===t?e.className="tippy-arrow":(e.className="tippy-svg-arrow",g(t)?e.appendChild(t):V(e,t)),e}function S(t,e){g(e.content)?(V(t,""),t.appendChild(e.content)):"function"!=typeof e.content&&(e.allowHTML?V(t,e.content):t.textContent=e.content)}function B(t){var e=t.firstElementChild,n=d(e.children);return{box:e,content:n.find((function(t){return t.classList.contains("tippy-content")})),arrow:n.find((function(t){return t.classList.contains("tippy-arrow")||t.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(t){return t.classList.contains("tippy-backdrop")}))}}function N(t){var e=m(),n=m();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=m();function o(n,r){var o=B(e),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||S(a,t.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(I(r.arrow))):i.appendChild(I(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),S(r,t.props),e.appendChild(n),n.appendChild(r),o(t.props,t.props),{popper:e,onUpdate:o}}N.$$tippy=!0;var H=1,U=[],_=[];function z(e,a){var p,g,b,y,A,L,D,k,P=M(e,Object.assign({},R,j(v(a)))),V=!1,I=!1,S=!1,N=!1,z=[],F=u(wt,P.interactiveDebounce),W=H++,X=(k=P.plugins).filter((function(t,e){return k.indexOf(t)===e})),Y={id:W,reference:e,popper:m(),popperInstance:null,props:P,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:X,clearDelayTimeouts:function(){clearTimeout(p),clearTimeout(g),cancelAnimationFrame(b)},setProps:function(t){if(Y.state.isDestroyed)return;at("onBeforeUpdate",[Y,t]),bt();var n=Y.props,r=M(e,Object.assign({},n,v(t),{ignoreAttributes:!0}));Y.props=r,ht(),n.interactiveDebounce!==r.interactiveDebounce&&(pt(),F=u(wt,r.interactiveDebounce));n.triggerTarget&&!r.triggerTarget?c(n.triggerTarget).forEach((function(t){t.removeAttribute("aria-expanded")})):r.triggerTarget&&e.removeAttribute("aria-expanded");ut(),it(),J&&J(n,r);Y.popperInstance&&(Ct(),At().forEach((function(t){requestAnimationFrame(t._tippy.popperInstance.forceUpdate)})));at("onAfterUpdate",[Y,t])},setContent:function(t){Y.setProps({content:t})},show:function(){var t=Y.state.isVisible,e=Y.state.isDestroyed,n=!Y.state.isEnabled,r=T.isTouch&&!Y.props.touch,a=i(Y.props.duration,0,R.duration);if(t||e||n||r)return;if(et().hasAttribute("disabled"))return;if(at("onShow",[Y],!1),!1===Y.props.onShow(Y))return;Y.state.isVisible=!0,tt()&&($.style.visibility="visible");it(),dt(),Y.state.isMounted||($.style.transition="none");if(tt()){var u=rt(),p=u.box,c=u.content;w([p,c],0)}L=function(){var t;if(Y.state.isVisible&&!N){if(N=!0,$.offsetHeight,$.style.transition=Y.props.moveTransition,tt()&&Y.props.animation){var e=rt(),n=e.box,r=e.content;w([n,r],a),x([n,r],"visible")}st(),ut(),f(_,Y),null==(t=Y.popperInstance)||t.forceUpdate(),at("onMount",[Y]),Y.props.animation&&tt()&&function(t,e){mt(t,e)}(a,(function(){Y.state.isShown=!0,at("onShown",[Y])}))}},function(){var t,e=Y.props.appendTo,n=et();t=Y.props.interactive&&e===o||"parent"===e?n.parentNode:s(e,[n]);t.contains($)||t.appendChild($);Y.state.isMounted=!0,Ct()}()},hide:function(){var t=!Y.state.isVisible,e=Y.state.isDestroyed,n=!Y.state.isEnabled,r=i(Y.props.duration,1,R.duration);if(t||e||n)return;if(at("onHide",[Y],!1),!1===Y.props.onHide(Y))return;Y.state.isVisible=!1,Y.state.isShown=!1,N=!1,V=!1,tt()&&($.style.visibility="hidden");if(pt(),vt(),it(!0),tt()){var o=rt(),a=o.box,s=o.content;Y.props.animation&&(w([a,s],r),x([a,s],"hidden"))}st(),ut(),Y.props.animation?tt()&&function(t,e){mt(t,(function(){!Y.state.isVisible&&$.parentNode&&$.parentNode.contains($)&&e()}))}(r,Y.unmount):Y.unmount()},hideWithInteractivity:function(t){nt().addEventListener("mousemove",F),f(U,F),F(t)},enable:function(){Y.state.isEnabled=!0},disable:function(){Y.hide(),Y.state.isEnabled=!1},unmount:function(){Y.state.isVisible&&Y.hide();if(!Y.state.isMounted)return;Tt(),At().forEach((function(t){t._tippy.unmount()})),$.parentNode&&$.parentNode.removeChild($);_=_.filter((function(t){return t!==Y})),Y.state.isMounted=!1,at("onHidden",[Y])},destroy:function(){if(Y.state.isDestroyed)return;Y.clearDelayTimeouts(),Y.unmount(),bt(),delete e._tippy,Y.state.isDestroyed=!0,at("onDestroy",[Y])}};if(!P.render)return Y;var q=P.render(Y),$=q.popper,J=q.onUpdate;$.setAttribute("data-tippy-root",""),$.id="tippy-"+Y.id,Y.popper=$,e._tippy=Y,$._tippy=Y;var G=X.map((function(t){return t.fn(Y)})),K=e.hasAttribute("aria-expanded");return ht(),ut(),it(),at("onCreate",[Y]),P.showOnCreate&&Lt(),$.addEventListener("mouseenter",(function(){Y.props.interactive&&Y.state.isVisible&&Y.clearDelayTimeouts()})),$.addEventListener("mouseleave",(function(){Y.props.interactive&&Y.props.trigger.indexOf("mouseenter")>=0&&nt().addEventListener("mousemove",F)})),Y;function Q(){var t=Y.props.touch;return Array.isArray(t)?t:[t,0]}function Z(){return"hold"===Q()[0]}function tt(){var t;return!(null==(t=Y.props.render)||!t.$$tippy)}function et(){return D||e}function nt(){var t=et().parentNode;return t?E(t):document}function rt(){return B($)}function ot(t){return Y.state.isMounted&&!Y.state.isVisible||T.isTouch||y&&"focus"===y.type?0:i(Y.props.delay,t?0:1,R.delay)}function it(t){void 0===t&&(t=!1),$.style.pointerEvents=Y.props.interactive&&!t?"":"none",$.style.zIndex=""+Y.props.zIndex}function at(t,e,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[t]&&n[t].apply(n,e)})),n)&&(r=Y.props)[t].apply(r,e)}function st(){var t=Y.props.aria;if(t.content){var n="aria-"+t.content,r=$.id;c(Y.props.triggerTarget||e).forEach((function(t){var e=t.getAttribute(n);if(Y.state.isVisible)t.setAttribute(n,e?e+" "+r:r);else{var o=e&&e.replace(r,"").trim();o?t.setAttribute(n,o):t.removeAttribute(n)}}))}}function ut(){!K&&Y.props.aria.expanded&&c(Y.props.triggerTarget||e).forEach((function(t){Y.props.interactive?t.setAttribute("aria-expanded",Y.state.isVisible&&t===et()?"true":"false"):t.removeAttribute("aria-expanded")}))}function pt(){nt().removeEventListener("mousemove",F),U=U.filter((function(t){return t!==F}))}function ct(t){if(!T.isTouch||!S&&"mousedown"!==t.type){var n=t.composedPath&&t.composedPath()[0]||t.target;if(!Y.props.interactive||!C($,n)){if(c(Y.props.triggerTarget||e).some((function(t){return C(t,n)}))){if(T.isTouch)return;if(Y.state.isVisible&&Y.props.trigger.indexOf("click")>=0)return}else at("onClickOutside",[Y,t]);!0===Y.props.hideOnClick&&(Y.clearDelayTimeouts(),Y.hide(),I=!0,setTimeout((function(){I=!1})),Y.state.isMounted||vt())}}}function ft(){S=!0}function lt(){S=!1}function dt(){var t=nt();t.addEventListener("mousedown",ct,!0),t.addEventListener("touchend",ct,r),t.addEventListener("touchstart",lt,r),t.addEventListener("touchmove",ft,r)}function vt(){var t=nt();t.removeEventListener("mousedown",ct,!0),t.removeEventListener("touchend",ct,r),t.removeEventListener("touchstart",lt,r),t.removeEventListener("touchmove",ft,r)}function mt(t,e){var n=rt().box;function r(t){t.target===n&&(O(n,"remove",r),e())}if(0===t)return e();O(n,"remove",A),O(n,"add",r),A=r}function gt(t,n,r){void 0===r&&(r=!1),c(Y.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,r),z.push({node:e,eventType:t,handler:n,options:r})}))}function ht(){var t;Z()&&(gt("touchstart",yt,{passive:!0}),gt("touchend",xt,{passive:!0})),(t=Y.props.trigger,t.split(/\s+/).filter(Boolean)).forEach((function(t){if("manual"!==t)switch(gt(t,yt),t){case"mouseenter":gt("mouseleave",xt);break;case"focus":gt(n?"focusout":"blur",Et);break;case"focusin":gt("focusout",Et)}}))}function bt(){z.forEach((function(t){var e=t.node,n=t.eventType,r=t.handler,o=t.options;e.removeEventListener(n,r,o)})),z=[]}function yt(t){var e,n=!1;if(Y.state.isEnabled&&!Ot(t)&&!I){var r="focus"===(null==(e=y)?void 0:e.type);y=t,D=t.currentTarget,ut(),!Y.state.isVisible&&h(t)&&U.forEach((function(e){return e(t)})),"click"===t.type&&(Y.props.trigger.indexOf("mouseenter")<0||V)&&!1!==Y.props.hideOnClick&&Y.state.isVisible?n=!0:Lt(t),"click"===t.type&&(V=!n),n&&!r&&Dt(t)}}function wt(t){var e=t.target,n=et().contains(e)||$.contains(e);"mousemove"===t.type&&n||function(t,e){var n=e.clientX,r=e.clientY;return t.every((function(t){var e=t.popperRect,o=t.popperState,i=t.props.interactiveBorder,a=l(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,p="top"===a?s.bottom.y:0,c="right"===a?s.left.x:0,f="left"===a?s.right.x:0,d=e.top-r+u>i,v=r-e.bottom-p>i,m=e.left-n+c>i,g=n-e.right-f>i;return d||v||m||g}))}(At().concat($).map((function(t){var e,n=null==(e=t._tippy.popperInstance)?void 0:e.state;return n?{popperRect:t.getBoundingClientRect(),popperState:n,props:P}:null})).filter(Boolean),t)&&(pt(),Dt(t))}function xt(t){Ot(t)||Y.props.trigger.indexOf("click")>=0&&V||(Y.props.interactive?Y.hideWithInteractivity(t):Dt(t))}function Et(t){Y.props.trigger.indexOf("focusin")<0&&t.target!==et()||Y.props.interactive&&t.relatedTarget&&$.contains(t.relatedTarget)||Dt(t)}function Ot(t){return!!T.isTouch&&Z()!==t.type.indexOf("touch")>=0}function Ct(){Tt();var n=Y.props,r=n.popperOptions,o=n.placement,i=n.offset,a=n.getReferenceClientRect,s=n.moveTransition,u=tt()?B($).arrow:null,p=a?{getBoundingClientRect:a,contextElement:a.contextElement||et()}:e,c=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(t){var e=t.state;if(tt()){var n=rt().box;["placement","reference-hidden","escaped"].forEach((function(t){"placement"===t?n.setAttribute("data-placement",e.placement):e.attributes.popper["data-popper-"+t]?n.setAttribute("data-"+t,""):n.removeAttribute("data-"+t)})),e.attributes.popper={}}}}];tt()&&u&&c.push({name:"arrow",options:{element:u,padding:3}}),c.push.apply(c,(null==r?void 0:r.modifiers)||[]),Y.popperInstance=t.createPopper(p,$,Object.assign({},r,{placement:o,onFirstUpdate:L,modifiers:c}))}function Tt(){Y.popperInstance&&(Y.popperInstance.destroy(),Y.popperInstance=null)}function At(){return d($.querySelectorAll("[data-tippy-root]"))}function Lt(t){Y.clearDelayTimeouts(),t&&at("onTrigger",[Y,t]),dt();var e=ot(!0),n=Q(),r=n[0],o=n[1];T.isTouch&&"hold"===r&&o&&(e=o),e?p=setTimeout((function(){Y.show()}),e):Y.show()}function Dt(t){if(Y.clearDelayTimeouts(),at("onUntrigger",[Y,t]),Y.state.isVisible){if(!(Y.props.trigger.indexOf("mouseenter")>=0&&Y.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(t.type)>=0&&V)){var e=ot(!1);e?g=setTimeout((function(){Y.state.isVisible&&Y.hide()}),e):b=requestAnimationFrame((function(){Y.hide()}))}}else vt()}}function F(t,e){void 0===e&&(e={});var n=R.plugins.concat(e.plugins||[]);document.addEventListener("touchstart",L,r),window.addEventListener("blur",k);var o=Object.assign({},e,{plugins:n}),i=y(t).reduce((function(t,e){var n=e&&z(e,o);return n&&t.push(n),t}),[]);return g(t)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(t){Object.keys(t).forEach((function(e){R[e]=t[e]}))},F.currentInput=T;var W=Object.assign({},t.applyStyles,{effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(t){var e;if(null==(e=t.props.render)||!e.$$tippy)return{};var n=B(t.popper),r=n.box,o=n.content,i=t.props.animateFill?function(){var t=m();return t.className="tippy-backdrop",x([t],"hidden"),t}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",t.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var t=r.style.transitionDuration,e=Number(t.replace("ms",""));o.style.transitionDelay=Math.round(e/10)+"ms",i.style.transitionDuration=t,x([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&x([i],"hidden")}}}};var q={clientX:0,clientY:0},$=[];function J(t){var e=t.clientX,n=t.clientY;q={clientX:e,clientY:n}}var G={name:"followCursor",defaultValue:!1,fn:function(t){var e=t.reference,n=E(t.props.triggerTarget||e),r=!1,o=!1,i=!0,a=t.props;function s(){return"initial"===t.props.followCursor&&t.state.isVisible}function u(){n.addEventListener("mousemove",f)}function p(){n.removeEventListener("mousemove",f)}function c(){r=!0,t.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||e.contains(n.target),o=t.props.followCursor,i=n.clientX,a=n.clientY,s=e.getBoundingClientRect(),u=i-s.left,p=a-s.top;!r&&t.props.interactive||t.setProps({getReferenceClientRect:function(){var t=e.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=t.left+u,r=t.top+p);var s="horizontal"===o?t.top:r,c="vertical"===o?t.right:n,f="horizontal"===o?t.bottom:r,l="vertical"===o?t.left:n;return{width:c-l,height:f-s,top:s,right:c,bottom:f,left:l}}})}function l(){t.props.followCursor&&($.push({instance:t,doc:n}),function(t){t.addEventListener("mousemove",J)}(n))}function d(){0===($=$.filter((function(e){return e.instance!==t}))).filter((function(t){return t.doc===n})).length&&function(t){t.removeEventListener("mousemove",J)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=t.props},onAfterUpdate:function(e,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!t.state.isMounted||o||s()||u()):(p(),c()))},onMount:function(){t.props.followCursor&&!o&&(i&&(f(q),i=!1),s()||u())},onTrigger:function(t,e){h(e)&&(q={clientX:e.clientX,clientY:e.clientY}),o="focus"===e.type},onHidden:function(){t.props.followCursor&&(c(),p(),i=!0)}}}};var K={name:"inlinePositioning",defaultValue:!1,fn:function(t){var e,n=t.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;t.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),e!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),t.setProps({getReferenceClientRect:function(){return function(t){return function(t,e,n,r){if(n.length<2||null===t)return e;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||e;switch(t){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===t,s=o.top,u=i.bottom,p=a?o.left:i.left,c=a?o.right:i.right;return{top:s,bottom:u,left:p,right:c,width:c-p,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(t){return t.left}))),l=Math.max.apply(Math,n.map((function(t){return t.right}))),d=n.filter((function(e){return"left"===t?e.left===f:e.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return e}}(l(t),n.getBoundingClientRect(),d(n.getClientRects()),r)}(a.placement)}})),e=a.placement)}};function s(){var e;o||(e=function(t,e){var n;return{popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat(((null==(n=t.popperOptions)?void 0:n.modifiers)||[]).filter((function(t){return t.name!==e.name})),[e])})}}(t.props,a),o=!0,t.setProps(e),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(e,n){if(h(n)){var o=d(t.reference.getClientRects()),i=o.find((function(t){return t.left-2<=n.clientX&&t.right+2>=n.clientX&&t.top-2<=n.clientY&&t.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var Q={name:"sticky",defaultValue:!1,fn:function(t){var e=t.reference,n=t.popper;function r(e){return!0===t.props.sticky||t.props.sticky===e}var o=null,i=null;function a(){var s=r("reference")?(t.popperInstance?t.popperInstance.state.elements.reference:e).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Z(o,s)||u&&Z(i,u))&&t.popperInstance&&t.popperInstance.update(),o=s,i=u,t.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){t.props.sticky&&a()}}}};function Z(t,e){return!t||!e||(t.top!==e.top||t.right!==e.right||t.bottom!==e.bottom||t.left!==e.left)}return e&&function(t){var e=document.createElement("style");e.textContent=t,e.setAttribute("data-tippy-stylesheet","");var n=document.head,r=document.querySelector("head>style,head>link");r?n.insertBefore(e,r):n.appendChild(e)}('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'),F.setDefaultProps({plugins:[Y,G,K,Q],render:N}),F.createSingleton=function(t,e){var n;void 0===e&&(e={});var r,o=t,i=[],a=[],s=e.overrides,u=[],f=!1;function l(){a=o.map((function(t){return c(t.props.triggerTarget||t.reference)})).reduce((function(t,e){return t.concat(e)}),[])}function d(){i=o.map((function(t){return t.reference}))}function v(t){o.forEach((function(e){t?e.enable():e.disable()}))}function g(t){return o.map((function(e){var n=e.setProps;return e.setProps=function(o){n(o),e.reference===r&&t.setProps(o)},function(){e.setProps=n}}))}function h(t,e){var n=a.indexOf(e);if(e!==r){r=e;var u=(s||[]).concat("content").reduce((function(t,e){return t[e]=o[n].props[e],t}),{});t.setProps(Object.assign({},u,{getReferenceClientRect:"function"==typeof u.getReferenceClientRect?u.getReferenceClientRect:function(){var t;return null==(t=i[n])?void 0:t.getBoundingClientRect()}}))}}v(!1),d(),l();var b={fn:function(){return{onDestroy:function(){v(!0)},onHidden:function(){r=null},onClickOutside:function(t){t.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(t){t.props.showOnCreate&&!f&&(f=!0,h(t,i[0]))},onTrigger:function(t,e){h(t,e.currentTarget)}}}},y=F(m(),Object.assign({},p(e,["overrides"]),{plugins:[b].concat(e.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat((null==(n=e.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(t){if(w(),!r&&null==t)return h(y,i[0]);if(!r||null!=t){if("number"==typeof t)return i[t]&&h(y,i[t]);if(o.indexOf(t)>=0){var e=t.reference;return h(y,e)}return i.indexOf(t)>=0?h(y,t):void 0}},y.showNext=function(){var t=i[0];if(!r)return y.show(0);var e=i.indexOf(r);y.show(i[e+1]||t)},y.showPrevious=function(){var t=i[i.length-1];if(!r)return y.show(t);var e=i.indexOf(r),n=i[e-1]||t;y.show(n)};var x=y.setProps;return y.setProps=function(t){s=t.overrides||s,x(t)},y.setInstances=function(t){v(!0),u.forEach((function(t){return t()})),o=t,v(!1),d(),l(),u=g(y),y.setProps({triggerTarget:a})},u=g(y),y},F.delegate=function(t,e){var n=[],o=[],i=!1,a=e.target,s=p(e,["target"]),u=Object.assign({},s,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},s,{showOnCreate:!0}),l=F(t,u);function d(t){if(t.target&&!i){var n=t.target.closest(a);if(n){var r=n.getAttribute("data-tippy-trigger")||e.trigger||R.trigger;if(!n._tippy&&!("touchstart"===t.type&&"boolean"==typeof f.touch||"touchstart"!==t.type&&r.indexOf(X[t.type])<0)){var s=F(n,f);s&&(o=o.concat(s))}}}}function v(t,e,r,o){void 0===o&&(o=!1),t.addEventListener(e,r,o),n.push({node:t,eventType:e,handler:r,options:o})}return c(l).forEach((function(t){var e=t.destroy,a=t.enable,s=t.disable;t.destroy=function(t){void 0===t&&(t=!0),t&&o.forEach((function(t){t.destroy()})),o=[],n.forEach((function(t){var e=t.node,n=t.eventType,r=t.handler,o=t.options;e.removeEventListener(n,r,o)})),n=[],e()},t.enable=function(){a(),o.forEach((function(t){return t.enable()})),i=!1},t.disable=function(){s(),o.forEach((function(t){return t.disable()})),i=!0},function(t){var e=t.reference;v(e,"touchstart",d,r),v(e,"mouseover",d),v(e,"focusin",d),v(e,"click",d)}(t)})),l},F.hideAll=function(t){var e=void 0===t?{}:t,n=e.exclude,r=e.duration;_.forEach((function(t){var e=!1;if(n&&(e=b(n)?t.reference===n:t.popper===n.popper),!e){var o=t.props.duration;t.setProps({duration:r}),t.hide(),t.state.isDestroyed||t.setProps({duration:o})}}))},F.roundArrow='<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>',F}));
vendor: 6,389 bytes, lines 2896-2899
2896 2897 2898/*! selectize.js - v0.13.5 | https://github.com/selectize/selectize.js | Apache License (v2) */ 2899!function(root,factory){"function"==typeof define&&define.amd?define("sifter",factory):"object"==typeof exports?module.exports=factory():root.Sifter=factory()}(this,function(){function Sifter(items,settings){this.items=items,this.settings=settings||{diacritics:!0}}Sifter.prototype.tokenize=function(query,respect_word_boundaries){if(!(query=trim(String(query||"").toLowerCase()))||!query.length)return[];for(var regex,letter,tokens=[],words=query.split(/ +/),i=0,n=words.length;i<n;i++){if(regex=escape_regex(words[i]),this.settings.diacritics)for(letter in DIACRITICS)DIACRITICS.hasOwnProperty(letter)&&(regex=regex.replace(new RegExp(letter,"g"),DIACRITICS[letter]));respect_word_boundaries&&(regex="\\b"+regex),tokens.push({string:words[i],regex:new RegExp(regex,"i")})}return tokens},Sifter.prototype.iterator=function(object,callback){var iterator=is_array(object)?Array.prototype.forEach||function(callback){for(var i=0,n=this.length;i<n;i++)callback(this[i],i,this)}:function(callback){for(var key in this)this.hasOwnProperty(key)&&callback(this[key],key,this)};iterator.apply(object,[callback])},Sifter.prototype.getScoreFunction=function(search,options){function scoreValue(value,token){var pos;return!value||-1===(pos=(value=String(value||"")).search(token.regex))?0:(token=token.string.length/value.length,0===pos&&(token+=.5),token)}var field_count,tokens=(search=this.prepareSearch(search,options)).tokens,fields=search.options.fields,token_count=tokens.length,nesting=search.options.nesting,scoreObject=(field_count=fields.length)?1===field_count?function(token,data){return scoreValue(getattr(data,fields[0],nesting),token)}:function(token,data){for(var i=0,sum=0;i<field_count;i++)sum+=scoreValue(getattr(data,fields[i],nesting),token);return sum/field_count}:function(){return 0};return token_count?1===token_count?function(data){return scoreObject(tokens[0],data)}:"and"===search.options.conjunction?function(data){for(var score,i=0,sum=0;i<token_count;i++){if((score=scoreObject(tokens[i],data))<=0)return 0;sum+=score}return sum/token_count}:function(data){for(var i=0,sum=0;i<token_count;i++)sum+=scoreObject(tokens[i],data);return sum/token_count}:function(){return 0}},Sifter.prototype.getSortFunction=function(search,options){var i,n,field,fields_count,multiplier,multipliers,implicit_score,self=this,sort=!(search=self.prepareSearch(search,options)).query&&options.sort_empty||options.sort,get_field=function(name,result){return"$score"===name?result.score:getattr(self.items[result.id],name,options.nesting)},fields=[];if(sort)for(i=0,n=sort.length;i<n;i++)!search.query&&"$score"===sort[i].field||fields.push(sort[i]);if(search.query){for(implicit_score=!0,i=0,n=fields.length;i<n;i++)if("$score"===fields[i].field){implicit_score=!1;break}implicit_score&&fields.unshift({field:"$score",direction:"desc"})}else for(i=0,n=fields.length;i<n;i++)if("$score"===fields[i].field){fields.splice(i,1);break}for(multipliers=[],i=0,n=fields.length;i<n;i++)multipliers.push("desc"===fields[i].direction?-1:1);return(fields_count=fields.length)?1===fields_count?(field=fields[0].field,multiplier=multipliers[0],function(a,b){return multiplier*cmp(get_field(field,a),get_field(field,b))}):function(a,b){for(var field,i=0;i<fields_count;i++)if(field=fields[i].field,field=multipliers[i]*cmp(get_field(field,a),get_field(field,b)))return field;return 0}:null},Sifter.prototype.prepareSearch=function(query,options){if("object"==typeof query)return query;var option_fields=(options=extend({},options)).fields,option_sort=options.sort,option_sort_empty=options.sort_empty;return option_fields&&!is_array(option_fields)&&(options.fields=[option_fields]),option_sort&&!is_array(option_sort)&&(options.sort=[option_sort]),option_sort_empty&&!is_array(option_sort_empty)&&(options.sort_empty=[option_sort_empty]),{options:options,query:String(query||"").toLowerCase(),tokens:this.tokenize(query,options.respect_word_boundaries),total:0,items:[]}},Sifter.prototype.search=function(query,options){var score,fn_score,search=this.prepareSearch(query,options);return options=search.options,query=search.query,fn_score=options.score||this.getScoreFunction(search),query.length?this.iterator(this.items,function(item,id){score=fn_score(item),(!1===options.filter||0<score)&&search.items.push({score:score,id:id})}):this.iterator(this.items,function(item,id){search.items.push({score:1,id:id})}),(query=this.getSortFunction(search,options))&&search.items.sort(query),search.total=search.items.length,"number"==typeof options.limit&&(search.items=search.items.slice(0,options.limit)),search};var cmp=function(a,b){return"number"==typeof a&&"number"==typeof b?b<a?1:a<b?-1:0:(a=asciifold(String(a||"")),(b=asciifold(String(b||"")))<a?1:a<b?-1:0)},extend=function(a,b){for(var k,object,i=1,n=arguments.length;i<n;i++)if(object=arguments[i])for(k in object)object.hasOwnProperty(k)&&(a[k]=object[k]);return a},getattr=function(obj,name,nesting){if(obj&&name){if(!nesting)return obj[name];for(var names=name.split(".");names.length&&(obj=obj[names.shift()]););return obj}},trim=function(str){return(str+"").replace(/^\s+|\s+$|/g,"")},escape_regex=function(str){return(str+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")},is_array=Array.isArray||"undefined"!=typeof $&&$.isArray||function(object){return"[object Array]"===Object.prototype.toString.call(object)},DIACRITICS={a:"[aá¸á¸ÄÄÃâÇÇȺⱥȦȧẠạÃäÃà ÃáÄÄÃÃ£Ã Ã¥Ä ÄÃÄ Ä]",b:"[bâ¢Î²ÎB฿ðá]",c:"[cÄÄÄÄÄÄÄÄCÌcÌÃçá¸á¸È»È¼ÆÆÉá´ï¼£ï½]",d:"[dÄÄá¸á¸á¸á¸á¸á¸á¸á¸á¸á¸ÄÄD̦d̦ÆÉÆÉÆÆáµá¶á¶È¡á´ Dï½Ã°]",e:"[eÃéÃèÃêá¸á¸ÄÄÄÄẼẽá¸á¸áººáº»ÄÄÃëÄÄȨȩÄÄá¶ÉÉÈÈ áº¾áº¿á»á»á»á» á»á»á¸á¸á¸á¸á¸á¸ÈÈẸẹá»á»â±¸á´ï¼¥ï½ ÉÇÆÆÎµ]",f:"[fÆÆá¸á¸]",g:"[gÉ¢â²Ç¤Ç¥ÄÄÄÄĢģÆÉ Ä Ä¡]",h:"[hĤĥĦħḨḩáºáºá¸¤á¸¥á¸¢á¸£É¦Ê°Ç¶Æ]",i:"[iÃÃÃìĬÄÃîÇÇÃïḮḯĨĩĮįĪīá»á»ÈÈÈÈá»á»á¸¬á¸ÆÉ¨É¨Ìáµ»á¶Ä°iIıɪIï½]",j:"[jȷĴĵÉÉÊÉʲ]",k:"[kÆÆêêḰḱǨǩḲḳḴḵκϰâ]",l:"[lÅÅĽľĻļĹĺḶḷḸḹḼḽḺḻĿÅȽÆâ± ⱡⱢɫɬᶠÉÈ´ÊLï½]",n:"[nÅÅǸǹÅÅÃñá¹á¹ Å Åá¹á¹á¹á¹á¹á¹NÌnÌÆÉ²È Æáµ°á¶É³ÈµÉ´ï¼®ï½ÅÅ]",o:"[oÃøÃöÃóÃòÃôÇÇÅÅÅÅȮȯá»á»ÆÉµÆ Æ¡á»á»ÅÅ
2899ÃõǪǫÈÈÕÖ
]",p:"[pá¹á¹á¹á¹â±£áµ½Æ¤Æ¥áµ±]",q:"[qêêÊ ÉÉêêqÌ]",r:"[rÅÅÉÉÅÅÅÅá¹á¹ÈÈÈÈá¹á¹â±¤É½]",s:"[sÅÅṠṡṢṣê¨ê©ÅÅÅ Å¡ÅÅÈÈSÌsÌ]",t:"[tÅ¤Å¥á¹ªá¹«Å¢Å£á¹¬á¹Æ®ÊÈÈṰṱṮṯƬÆ]",u:"[uŬÅÉÊỤụÃüÃúÃùÃûÇÇŰűŬů¯Æ°á»¦á»§ÅªÅ«Å¨Å©Å²Å³ÈÈâª]",v:"[vṼṽṾṿƲÊêêâ±±Ê]",w:"[wáºáºáºáºÅ´Åµáºáº
áºáºáºáº]",x:"[xáºáºáºáºÏ]",y:"[yÃýỲỳŶŷŸÿỸỹáºáºá»´á»µÉÉÆ³Æ´]",z:"[zŹźáºáºÅ½Å¾Å»Å¼áºáºáºáºÆµÆ¶]"},asciifold=function(){var i,n,k,chunk,foreignletters="",lookup={};for(k in DIACRITICS)if(DIACRITICS.hasOwnProperty(k))for(foreignletters+=chunk=DIACRITICS[k].substring(2,DIACRITICS[k].length-1),i=0,n=chunk.length;i<n;i++)lookup[chunk.charAt(i)]=k;var regexp=new RegExp("["+foreignletters+"]","g");return function(str){return str.replace(regexp,function(foreignletter){return lookup[foreignletter]}).toLowerCase()}}();return Sifter}),function(root,factory){"function"==typeof define&&define.amd?define("microplugin",factory):"object"==typeof exports?module.exports=factory():root.MicroPlugin=factory()}(this,function(){var MicroPlugin={mixin:function(Interface){Interface.plugins={},Interface.prototype.initializePlugins=function(plugins){var i,n,key,queue=[];if(this.plugins={names:[],settings:{},requested:{},loaded:{}},utils.isArray(plugins))for(i=0,n=plugins.length;i<n;i++)"string"==typeof plugins[i]?queue.push(plugins[i]):(this.plugins.settings[plugins[i].name]=plugins[i].options,queue.push(plugins[i].name));else if(plugins)for(key in plugins)plugins.hasOwnProperty(key)&&(this.plugins.settings[key]=plugins[key],queue.push(key));for(;queue.length;)this.require(queue.shift())},Interface.prototype.loadPlugin=function(name){var plugins=this.plugins,plugin=Interface.plugins[name];if(!Interface.plugins.hasOwnProperty(name))throw new Error('Unable to find "'+name+'" plugin');plugins.requested[name]=!0,plugins.loaded[name]=plugin.fn.apply(this,[this.plugins.settings[name]||{}]),plugins.names.push(name)},Interface.prototype.require=function(name){var plugins=this.plugins;if(!this.plugins.loaded.hasOwnProperty(name)){if(plugins.requested[name])throw new Error('Plugin has circular dependency ("'+name+'")');this.loadPlugin(name)}return plugins.loaded[name]},Interface.define=function(name,fn){Interface.plugins[name]={name:name,fn:fn}}}},utils={isArray:Array.isArray||function(vArg){return"[object Array]"===Object.prototype.toString.call(vArg)}};return MicroPlugin}),function(root,factory){"function"==typeof define&&define.amd?define("selectize",["jquery","sifter","microplugin"],factory):"object"==typeof module&&"object"==typeof module.exports?module.exports=factory(require("jquery"),require("sifter"),require("microplugin")):root.Selectize=factory(root.jQuery,root.Sifter,root.MicroPlugin)}(this,function($,Sifter,MicroPlugin){"use strict";function MicroEvent(){}$.fn.removeHighlight=function(){return this.find("span.highlight").each(function(){this.parentNode.firstChild.nodeName;var parent=this.parentNode;parent.replaceChild(this.firstChild,this),parent.normalize()}).end()};function isset(object){return void 0!==object}function hash_key(value){return null==value?null:"boolean"==typeof value?value?"1":"0":value+""}function escape_html(str){return(str+"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function debounce_events(self,types,fn){var type,trigger=self.trigger,event_args={};for(type in self.trigger=function(){var type=arguments[0];if(-1===types.indexOf(type))return trigger.apply(self,arguments);event_args[type]=arguments},fn.apply(self,[]),self.trigger=trigger,event_args)event_args.hasOwnProperty(type)&&trigger.apply(self,event_args[type])}function getSelection(input){var sel,selLen,result={};return void 0===input?console.warn("WARN getSelection cannot locate input control"):"selectionStart"in input?(result.start=input.selectionStart,result.length=input.selectionEnd-result.start):document.selection&&(input.focus(),sel=document.selection.createRange(),selLen=document.selection.createRange().text.length,sel.moveStart("character",-input.value.length),result.start=sel.text.length-selLen,result.length=selLen),result}function measureString(str,$parent){return str?(Selectize.$testInput||(Selectize.$testInput=$("<span />").css({position:"absolute",width:"auto",padding:0,whiteSpace:"pre"}),$("<div />").css({position:"absolute",width:0,height:0,overflow:"hidden"}).append(Selectize.$testInput).appendTo("body")),Selectize.$testInput.text(str),transferStyles($parent,Selectize.$testInput,["letterSpacing","fontSize","fontFamily","fontWeight","textTransform"]),Selectize.$testInput.width()):0}function autoGrow($input){function update(e,options){var printable,keyCode,selection;options=options||{},(e=e||window.event||{}).metaKey||e.altKey||!options.force&&!1===$input.data("grow")||(options=$input.val(),e.type&&"keydown"===e.type.toLowerCase()&&(printable=48<=(keyCode=e.keyCode)&&keyCode<=57||65<=keyCode&&keyCode<=90||96<=keyCode&&keyCode<=111||186<=keyCode&&keyCode<=222||32===keyCode,46===keyCode||8===keyCode?(selection=getSelection($input[0])).length?options=options.substring(0,selection.start)+options.substring(selection.start+selection.length):8===keyCode&&selection.start?options=options.substring(0,selection.start-1)+options.substring(selection.start+1):46===keyCode&&void 0!==selection.start&&(options=options.substring(0,selection.start)+options.substring(selection.start+1)):printable&&(keyCode=e.shiftKey,selection=String.fromCharCode(e.keyCode),options+=selection=keyCode?selection.toUpperCase():selection.toLowerCase())),e=(printable=$input.attr("placeholder"))?measureString(printable,$input)+4:0,(keyCode=Math.max(measureString(options,$input),e)+4)!==currentWidth&&(currentWidth=keyCode,$input.width(keyCode),$input.triggerHandler("resize")))}var currentWidth=null;
2899$input.on("keydown keyup update blur",update),update()}MicroEvent.prototype={on:function(event,fct){this._events=this._events||{},this._events[event]=this._events[event]||[],this._events[event].push(fct)},off:function(event,fct){var n=arguments.length;return 0===n?delete this._events:1===n?delete this._events[event]:(this._events=this._events||{},void(event in this._events!=!1&&this._events[event].splice(this._events[event].indexOf(fct),1)))},trigger:function(event){if(this._events=this._events||{},event in this._events!=!1)for(var i=0;i<this._events[event].length;i++)this._events[event][i].apply(this,Array.prototype.slice.call(arguments,1))}},MicroEvent.mixin=function(destObject){for(var props=["on","off","trigger"],i=0;i<props.length;i++)destObject.prototype[props[i]]=MicroEvent.prototype[props[i]]};var options,IS_MAC=/Mac/.test(navigator.userAgent),KEY_CMD=IS_MAC?91:17,KEY_CTRL=IS_MAC?18:17,SUPPORTS_VALIDITY_API=!/android/i.test(window.navigator.userAgent)&&!!document.createElement("input").validity,hook={before:function(self,method,fn){var original=self[method];self[method]=function(){return fn.apply(self,arguments),original.apply(self,arguments)}},after:function(self,method,fn){var original=self[method];self[method]=function(){var result=original.apply(self,arguments);return fn.apply(self,arguments),result}}},transferStyles=function($from,$to,properties){var i,n,styles={};if(properties)for(i=0,n=properties.length;i<n;i++)styles[properties[i]]=$from.css(properties[i]);else styles=$from.css();$to.css(styles)},Selectize=function($input,settings){var i,n,fn,delay,timeout,input=$input[0],computedStyle=(input.selectize=this,window.getComputedStyle&&window.getComputedStyle(input,null));if(computedStyle=(computedStyle?computedStyle.getPropertyValue("direction"):input.currentStyle&&input.currentStyle.direction)||$input.parents("[dir]:first").attr("dir")||"",$.extend(this,{order:0,settings:settings,$input:$input,tabIndex:$input.attr("tabindex")||"",tagType:"select"===input.tagName.toLowerCase()?1:2,rtl:/rtl/i.test(computedStyle),eventNS:".selectize"+ ++Selectize.count,highlightedValue:null,isBlurring:!1,isOpen:!1,isDisabled:!1,isRequired:$input.is("[required]"),isInvalid:!1,isLocked:!1,isFocused:!1,isInputHidden:!1,isSetup:!1,isShiftDown:!1,isCmdDown:!1,isCtrlDown:!1,ignoreFocus:!1,ignoreBlur:!1,ignoreHover:!1,hasOptions:!1,currentResults:null,lastValue:"",lastValidValue:"",caretPos:0,loading:0,loadedSearches:{},$activeOption:null,$activeItems:[],optgroups:{},options:{},userOptions:{},items:[],renderCache:{},onSearchChange:null===settings.loadThrottle?this.onSearchChange:(fn=this.onSearchChange,delay=settings.loadThrottle,function(){var self=this,args=arguments;window.clearTimeout(timeout),timeout=window.setTimeout(function(){fn.apply(self,args)},delay)})}),this.sifter=new Sifter(this.options,{diacritics:settings.diacritics}),this.settings.options){for(i=0,n=this.settings.options.length;i<n;i++)this.registerOption(this.settings.options[i]);delete this.settings.options}if(this.settings.optgroups){for(i=0,n=this.settings.optgroups.length;i<n;i++)this.registerOptionGroup(this.settings.optgroups[i]);delete this.settings.optgroups}this.settings.mode=this.settings.mode||(1===this.settings.maxItems?"single":"multi"),"boolean"!=typeof this.settings.hideSelected&&(this.settings.hideSelected="multi"===this.settings.mode),this.initializePlugins(this.settings.plugins),this.setupCallbacks(),this.setupTemplates(),this.setup()};return MicroEvent.mixin(Selectize),void 0!==MicroPlugin?MicroPlugin.mixin(Selectize):(MicroPlugin="Dependency MicroPlugin is missing",options=(options={explanation:'Make sure you either: (1) are using the "standalone" version of Selectize, or (2) require MicroPlugin before you load Selectize.'})||{},console.error("Selectize: "+MicroPlugin),options.explanation&&(console.group&&console.group(),console.error(options.explanation),console.group&&console.groupEnd())),$.extend(Selectize.prototype,{setup:function(){var $parent,inputId,fn,self=this,settings=self.settings,eventNS=self.eventNS,$window=$(window),$document=$(document),$input
2899=self.$input,inputMode=self.settings.mode,classes=$input.attr("class")||"",$wrapper=$("<div>").addClass(settings.wrapperClass).addClass(classes).addClass(inputMode),$control=$("<div>").addClass(settings.inputClass).addClass("items").appendTo($wrapper),$control_input=$('<input type="text" autocomplete="new-password" autofill="no" />').appendTo($control).attr("tabindex",$input.is(":disabled")?"-1":self.tabIndex),$dropdown_parent=$(settings.dropdownParent||$wrapper),inputMode=$("<div>").addClass(settings.dropdownClass).addClass(inputMode).hide().appendTo($dropdown_parent),$dropdown_parent=$("<div>").addClass(settings.dropdownContentClass).attr("tabindex","-1").appendTo(inputMode);(inputId=$input.attr("id"))&&($control_input.attr("id",inputId+"-selectized"),$("label[for='"+inputId+"']").attr("for",inputId+"-selectized")),self.settings.copyClassesToDropdown&&inputMode.addClass(classes),$wrapper.css({width:$input[0].style.width}),self.plugins.names.length&&(inputId="plugin-"+self.plugins.names.join(" plugin-"),$wrapper.addClass(inputId),inputMode.addClass(inputId)),(null===settings.maxItems||1<settings.maxItems)&&1===self.tagType&&$input.attr("multiple","multiple"),self.settings.placeholder&&$control_input.attr("placeholder",settings.placeholder),!self.settings.splitOn&&self.settings.delimiter&&(classes=self.settings.delimiter.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),self.settings.splitOn=new RegExp("\\s*"+classes+"+\\s*")),$input.attr("autocorrect")&&$control_input.attr("autocorrect",$input.attr("autocorrect")),$input.attr("autocapitalize")&&$control_input.attr("autocapitalize",$input.attr("autocapitalize")),$input.is("input")&&($control_input[0].type=$input[0].type),self.$wrapper=$wrapper,self.$control=$control,self.$control_input=$control_input,self.$dropdown=inputMode,self.$dropdown_content=$dropdown_parent,inputMode.on("mouseenter mousedown click","[data-disabled]>[data-selectable]",function(e){e.stopImmediatePropagation()}),inputMode.on("mouseenter","[data-selectable]",function(){return self.onOptionHover.apply(self,arguments)}),inputMode.on("mousedown click","[data-selectable]",function(){return self.onOptionSelect.apply(self,arguments)}),inputId="mousedown",classes="*:not(input)",fn=function(){return self.onItemSelect.apply(self,arguments)},($parent=$control).on(inputId,classes,function(e){for(var child=e.target;child&&child.parentNode!==$parent[0];)child=child.parentNode;return e.currentTarget=child,fn.apply(this,[e])}),autoGrow($control_input),$control.on({mousedown:function(){return self.onMouseDown.apply(self,arguments)},click:function(){return self.onClick.apply(self,arguments)}}),$control_input.on({mousedown:function(e){e.stopPropagation()},keydown:function(){return self.onKeyDown.apply(self,arguments)},keypress:function(){return self.onKeyPress.apply(self,arguments)},input:function(){return self.onInput.apply(self,arguments)},resize:function(){self.positionDropdown.apply(self,[])},blur:function(){return self.onBlur.apply(self,arguments)},focus:function(){return self.ignoreBlur=!1,self.onFocus.apply(self,arguments)},paste:function(){return self.onPaste.apply(self,arguments)}}),$document.on("keydown"+eventNS,function(e){self.isCmdDown=e[IS_MAC?"metaKey":"ctrlKey"],self.isCtrlDown=e[IS_MAC?"altKey":"ctrlKey"],self.isShiftDown=e.shiftKey}),$document.on("keyup"+eventNS,function(e){e.keyCode===KEY_CTRL&&(self.isCtrlDown=!1),16===e.keyCode&&(self.isShiftDown=!1),e.keyCode===KEY_CMD&&(self.isCmdDown=!1)}),$document.on("mousedown"+eventNS,function(e){if(self.isFocused){if(e.target===self.$dropdown[0]||e.target.parentNode===self.$dropdown[0])return!1;self.$control.has(e.target).length||e.target===self.$control[0]||self.blur(e.target)}}),$window.on(["scroll"+eventNS,"resize"+eventNS].join(" "),function(){self.isOpen&&self.positionDropdown.apply(self,arguments)}),$window.on("mousemove"+eventNS,function(){self.ignoreHover=!1}),this.revertSettings={$children:$input.children().detach(),tabindex:$input.attr("tabindex")},$input.attr("tabindex",-1).hide().after(self.$wrapper),Array.isArray(settings.items)&&(self.lastValidValue=settings.items,self.setValue(settings.items),delete settings.items),SUPPORTS_VALIDITY_API&&$input.on("invalid"+eventNS,function(e){e.preventDefault(),self.isInvalid=!0,self.refreshState()}),self.updateOriginalInput(),self.refreshItems(),self.refreshState(),self.updatePlaceholder(),self.isSetup=!0,$input.is(":disabled")&&self.disable(),self.on("change",this.onChange),$input.data("selectize",self),$input.addClass("selectized"),self.trigger("initialize"),!0===settings.preload&&self.onSearchChange("")},setupTemplates:function(){var field_label=this.settings.labelField,field_value=this.settings.valueField,field_optgroup=this.settings.optgroupLabelField;this.settings.render=$.extend({},{optgroup:function(data){return'<div class="optgroup">'+data.html+"</div>"},optgroup_header:function(data,escape){return'<div class="optgroup-header">'+escape(data[field_optgroup])+"</div>"},option:function(data,escape){return'<div class="option '+(""===data[field_value]?"selectize-dropdown-emptyoptionlabel":"")+'">'+escape(data[field_label])+"</div>"},item:function(data,escape){return'<div class="item">'+escape(data[field_label])+"</div>"},option_create:function(data,escape){return'<div class="create">Add <strong>'+escape(data.input)+"</strong>…</div>"}},this.settings.render)},setupCallbacks:function(){var key,fn,callbacks={initialize:"onInitialize",change:"onChange",item_add:"onItemAdd",item_remove:"onItemRemove",clear:"onClear",option_add:"onOptionAdd",option_remove:"onOptionRemove",option_clear:"onOptionClear",optgroup_add:"onOptionGroupAdd",optgroup_remove:"onOptionGroupRemove",optgroup_clear:"onOptionGroupClear",dropdown_open:"onDropdownOpen",dropdown_close:"onDropdownClose",type:"onType",load:"onLoad",focus:"onFocus",blur:"onBlur",dropdown_item_activate:"onDropdownItemActivate",dropdown_item_deactivate:"onDropdownItemDeactivate"};for(key in callbacks)callbacks.hasOwnProperty(key)&&(fn=this.settings[callbacks[key]])&&this.on(key,fn)},onClick:function(e){this.isFocused&&this.isOpen||(this.focus(),e.preventDefault())},onMouseDown:function(e){var self=this,defaultPrevented=e.isDefaultPrevented();$(e.target);if(self.isFocused){if(e.target!==self.$control_input[0])return"single"===self.settings.mode?self.isOpen?self.close():self.open():defaultPrevented||self.setActiveItem(null),!1}else defaultPrevented||window.setTimeout(function(){self.focus()},0)},onChange:function(){""!==this.getValue()&&(this.lastValidValue=this.getValue()),this.$input.trigger("input"),this.$input.trigger("change")},onPaste:function(e){var self=this;self.isFull()||self.isInputHidden||self.isLocked?e.preventDefault():self.settings.splitOn&&setTimeout(function(){var pastedText=self.$control_input.val();if(pastedText.match(self.settings.splitOn))for(var splitInput=pastedText.trim().split(self.settings.splitOn),i=0,n=splitInput.length;i<n;i++)self.createItem(splitInput[i])},0)},onKeyPress:function(e){if(this.isLocked)return e&&e.preventDefault();var character=String.fromCharCode(e.keyCode||e.which);return this.settings.create&&"multi"===this.settings.mode&&character===this.settings.delimiter?(this.createItem(),e.preventDefault(),!1):void 0},onKeyDown:function(e){var $next;e.target,this.$control_input[0];if(this.isLocked)9!==e.keyCode&&e.preventDefault();else{switch(e.keyCode){case 65:if(this.isCmdDown)return void this.selectAll();break;case 27:return void(this.isOpen&&(e.preventDefault(),e.stopPropagation(),this.close()));case 78:if(!e.ctrlKey||e.altKey)break;case 40:return!this.isOpen&&this.hasOptions?this.open():this.$activeOption&&(this.ignoreHover=!0,($next=this.getAdjacentOption(this.$activeOption,1)).length&&this.setActiveOption($next,!0,!0)),void e.preventDefault();case 80:if(!e.ctrlKey||e.altKey)break;case 38:return this.$activeOption&&(this.ignoreHover=!0,($next=this.getAdjacentOption(this.$activeOption,-1)).length&&this.setActiveOption($next,!0,!0)),void e.preventDefault();case 13:return void(this.isOpen&&this.$activeOption&&(this.onOptionSelect({currentTarget:this.$activeOption}),e.preventDefault()));case 37:return void this.advanceSelection(-1,e);case 39:return void this.advanceSelection(1,e);case 9:return this.settings.selectOnTab&&this.isOpen&&this.$activeOption&&(this.onOptionSelect({currentTarget:this.$activeOption}),this.isFull()||e.preventDefault()),void(this.settings.create&&this.createItem()&&this.settings.showAddOptionOnCreate&&e.preventDefault());case 8:case 46:return void this.deleteSelection(e)}!this.isFull()&&!this.isInputHidden||(IS_MAC?e.metaKey:e.ctrlKey)||e.preventDefault()}},onInput:function(e){var value=this.$control_input.val()||"";this.lastValue!==value&&(this.lastValue=value,this.onSearchChange(value),this.refreshOptions(),this.trigger("type",value))},onSearchChange:function(value){var self=this,fn=self.settings.load;fn&&!self.loadedSearches.hasOwnProperty(value)&&(self.loadedSearches[value]=!0,self.load(function(callback){fn.apply(self,[value,callback])}))},onFocus:function(e){var wasFocused=this.isFocused;if(this.isDisabled)return this.blur(),e&&e.preventDefault(),!1;
2899this.ignoreFocus||(this.isFocused=!0,"focus"===this.settings.preload&&this.onSearchChange(""),wasFocused||this.trigger("focus"),this.$activeItems.length||(this.showInput(),this.setActiveItem(null),this.refreshOptions(!!this.settings.openOnFocus)),this.refreshState())},onBlur:function(e,dest){var self=this;if(self.isFocused&&(self.isFocused=!1,!self.ignoreFocus)){if(!self.ignoreBlur&&document.activeElement===self.$dropdown_content[0])return self.ignoreBlur=!0,void self.onFocus(e);e=function(){self.close(),self.setTextboxValue(""),self.setActiveItem(null),self.setActiveOption(null),self.setCaret(self.items.length),self.refreshState(),dest&&dest.focus&&dest.focus(),self.isBlurring=!1,self.ignoreFocus=!1,self.trigger("blur")};self.isBlurring=!0,self.ignoreFocus=!0,self.settings.create&&self.settings.createOnBlur?self.createItem(null,!1,e):e()}},onOptionHover:function(e){this.ignoreHover||this.setActiveOption(e.currentTarget,!1)},onOptionSelect:function(e){var $target,self=this;e.preventDefault&&(e.preventDefault(),e.stopPropagation()),($target=$(e.currentTarget)).hasClass("create")?self.createItem(null,function(){self.settings.closeAfterSelect&&self.close()}):void 0!==($target=$target.attr("data-value"))&&(self.lastQuery=null,self.setTextboxValue(""),self.addItem($target),self.settings.closeAfterSelect?self.close():!self.settings.hideSelected&&e.type&&/mouse/.test(e.type)&&self.setActiveOption(self.getOption($target)))},onItemSelect:function(e){this.isLocked||"multi"===this.settings.mode&&(e.preventDefault(),this.setActiveItem(e.currentTarget,e))},load:function(fn){var self=this,$wrapper=self.$wrapper.addClass(self.settings.loadingClass);self.loading++,fn.apply(self,[function(results){self.loading=Math.max(self.loading-1,0),results&&results.length&&(self.addOption(results),self.refreshOptions(self.isFocused&&!self.isInputHidden)),self.loading||$wrapper.removeClass(self.settings.loadingClass),self.trigger("load",results)}])},getTextboxValue:function(){return this.$control_input.val()},setTextboxValue:function(value){var $input=this.$control_input;$input.val()!==value&&($input.val(value).triggerHandler("update"),this.lastValue=value)},getValue:function(){return 1===this.tagType&&this.$input.attr("multiple")?this.items:this.items.join(this.settings.delimiter)},setValue:function(value,silent){debounce_events(this,silent?[]:["change"],function(){this.clear(silent),this.addItems(value,silent)})},setMaxItems:function(value){this.settings.maxItems=value=0===value?null:value,this.settings.mode=this.settings.mode||(1===this.settings.maxItems?"single":"multi"),this.refreshState()},setActiveItem:function($item,e){var eventName,i,end,item,swap,$last;if("single"!==this.settings.mode){if(!($item=$($item)).length)return $(this.$activeItems).removeClass("active"),this.$activeItems=[],void(this.isFocused&&this.showInput());if("mousedown"===(eventName=e&&e.type.toLowerCase())&&this.isShiftDown&&this.$activeItems.length){for($last=this.$control.children(".active:last"),$last=Array.prototype.indexOf.apply(this.$control[0].childNodes,[$last[0]]),(end=Array.prototype.indexOf.apply(this.$control[0].childNodes,[$item[0]]))<$last&&(swap=$last,$last=end,end=swap),i=$last;i<=end;i++)item=this.$control[0].childNodes[i],-1===this.$activeItems.indexOf(item)&&($(item).addClass("active"),this.$activeItems.push(item));e.preventDefault()}else"mousedown"===eventName&&this.isCtrlDown||"keydown"===eventName&&this.isShiftDown?$item.hasClass("active")?(swap=this.$activeItems.indexOf($item[0]),this.$activeItems.splice(swap,1),$item.removeClass("active")):this.$activeItems.push($item.addClass("active")[0]):($(this.$activeItems).removeClass("active"),this.$activeItems=[$item.addClass("active")[0]]);this.hideInput(),this.isFocused||this.focus()}},setActiveOption:function($option,scroll,animate){var height_item,y,scroll_top,scroll_bottom;this.$activeOption&&(this.$activeOption.removeClass("active"),this.trigger("dropdown_item_deactivate",this.$activeOption.attr("data-value"))),this.$activeOption=null,($option=$($option)).length&&(this.$activeOption=$option.addClass("active"),this.isOpen&&this.trigger("dropdown_item_activate",this.$activeOption.attr("data-value")),!scroll&&isset(scroll)||($option=this.$dropdown_content.height(),height_item=this.$activeOption.outerHeight(!0),scroll=this.$dropdown_content.scrollTop()||0,scroll_bottom=(scroll_top=y=this.$activeOption.offset().top-this.$dropdown_content.offset().top+scroll)-$option+height_item,$option+scroll<y+height_item?this.$dropdown_content.stop().animate({scrollTop:scroll_bottom},animate?this.settings.scrollDuration:0):y<scroll&&this.$dropdown_content.stop().animate({scrollTop:scroll_top},animate?this.settings.scrollDuration:0)))},selectAll:function(){"single"!==this.settings.mode&&(this.$activeItems=Array.prototype.slice.apply(this.$control.children(":not(input)").addClass("active")),this.$activeItems.length&&(this.hideInput(),this.close()),this.focus())},hideInput:function(){this.setTextboxValue(""),this.$control_input.css({opacity:0,position:"absolute",left:this.rtl?1e4:-1e4}),this.isInputHidden=!0},showInput:function(){this.$control_input.css({opacity:1,position:"relative",left:0}),this.isInputHidden=!1},focus:function(){var self=this;return self.isDisabled||(self.ignoreFocus=!0,self.$control_input[0].focus(),window.setTimeout(function(){self.ignoreFocus=!1,self.onFocus()},0)),self},blur:function(dest){return this.$control_input[0].blur(),this.onBlur(null,dest),this},getScoreFunction:function(query){return this.sifter.getScoreFunction(query,this.get
2899SearchOptions())},getSearchOptions:function(){var settings=this.settings,sort=settings.sortField;return{fields:settings.searchField,conjunction:settings.searchConjunction,sort:sort="string"==typeof sort?[{field:sort}]:sort,nesting:settings.nesting}},search:function(query){var i,result,calculateScore,settings=this.settings,options=this.getSearchOptions();if(settings.score&&"function"!=typeof(calculateScore=this.settings.score.apply(this,[query])))throw new Error('Selectize "score" setting must be a function that returns a function');if(query!==this.lastQuery?(this.lastQuery=query,result=this.sifter.search(query,$.extend(options,{score:calculateScore})),this.currentResults=result):result=$.extend(!0,{},this.currentResults),settings.hideSelected)for(i=result.items.length-1;0<=i;i--)-1!==this.items.indexOf(hash_key(result.items[i].id))&&result.items.splice(i,1);return result},refreshOptions:function(triggerDropdown){void 0===triggerDropdown&&(triggerDropdown=!0);var i,j,k,groups,groups_order,option,option_html,optgroup,optgroups,html,html_children,has_create_option,$active,$create,d,tmp,self=this,query=self.$control_input.val().trim(),results=self.search(query),$dropdown_content=self.$dropdown_content,active_before=self.$activeOption&&hash_key(self.$activeOption.attr("data-value")),n=results.items.length;for("number"==typeof self.settings.maxOptions&&(n=Math.min(n,self.settings.maxOptions)),groups={},groups_order=[],i=0;i<n;i++)for(option=self.options[results.items[i].id],option_html=self.render("option",option),optgroup=option[self.settings.optgroupField]||"",j=0,k=(optgroups=Array.isArray(optgroup)?optgroup:[optgroup])&&optgroups.length;j<k;j++)optgroup=optgroups[j],self.optgroups.hasOwnProperty(optgroup)||(optgroup=""),groups.hasOwnProperty(optgroup)||(groups[optgroup]=document.createDocumentFragment(),groups_order.push(optgroup)),groups[optgroup].appendChild(option_html);for(this.settings.lockOptgroupOrder&&groups_order.sort(function(a,b){return(self.optgroups[a]&&self.optgroups[a].$order||0)-(self.optgroups[b]&&self.optgroups[b].$order||0)}),html=document.createDocumentFragment(),i=0,n=groups_order.length;i<n;i++)optgroup=groups_order[i],self.optgroups.hasOwnProperty(optgroup)&&groups[optgroup].childNodes.length?((html_children=document.createDocumentFragment()).appendChild(self.render("optgroup_header",self.optgroups[optgroup])),html_children.appendChild(groups[optgroup]),html.appendChild(self.render("optgroup",$.extend({},self.optgroups[optgroup],{html:(d=html_children,tmp=void 0,(tmp=document.createElement("div")).appendChild(d.cloneNode(!0)),tmp.innerHTML),dom:html_children})))):html.appendChild(groups[optgroup]);if($dropdown_content.html(html),self.settings.highlight&&($dropdown_content.removeHighlight(),results.query.length&&results.tokens.length))for(i=0,n=results.tokens.length;i<n;i++)!function($element,pattern){var regex,highlight;if("string"!=typeof pattern||pattern.length)regex="string"==typeof pattern?new RegExp(pattern,"i"):pattern,highlight=function(node){var skip=0;if(3===node.nodeType){var spannode,match,pos=node.data.search(regex);0<=pos&&0<node.data.length&&(match=node.data.match(regex),(spannode=document.createElement("span")).className="highlight",(pos=node.splitText(pos)).splitText(match[0].length),match=pos.cloneNode(!0),spannode.appendChild(match),pos.parentNode.replaceChild(spannode,pos),skip=1)}else if(1===node.nodeType&&node.childNodes&&!/(script|style)/i.test(node.tagName)&&("highlight"!==node.className||"SPAN"!==node.tagName))for(var i=0;i<node.childNodes.length;++i)i+=highlight(node.childNodes[i]);return skip},$element.each(function(){highlight(this)})}($dropdown_content,results.tokens[i].regex);if(!self.settings.hideSelected)for(self.$dropdown.find(".selected").removeClass("selected"),i=0,n=self.items.length;i<n;i++)self.getOption(self.items[i]).addClass("selected");(has_create_option=self.canCreate(query))&&self.settings.showAddOptionOnCreate&&($dropdown_content.prepend(self.render("option_create",{input:query})),$create=$($dropdown_content[0].childNodes[0])),self.hasOptions=0<results.items.length||has_create_option&&self.settings.showAddOptionOnCreate,self.hasOptions?(0<results.items.length?(query=active_before&&self.getOption(active_before),""!==results.query&&query&&query.length?$active=query:"single"===self.settings.mode&&self.items.length&&($active=self.getOption(self.items[0])),$active&&$active.length||($active=$create&&!self.settings.addPrecedence?self.getAdjacentOption($create,1):$dropdown_content.find("[data-selectable]:first"))):$active=$create,self.setActiveOption($active),triggerDropdown&&!self.isOpen&&self.open()):(self.setActiveOption(null),triggerDropdown&&self.isOpen&&self.close())},addOption:function(data){var i,n,value;if(Array.isArray(data))for(i=0,n=data.length;i<n;i++)this.addOption(data[i]);else(value=this.registerOption(data))&&(this.userOptions[value]=!0,this.lastQuery=null,this.trigger("option_add",value,data))},registerOption:function(data){var key=hash_key(data[this.settings.valueField]);return null!=key&&!this.options.hasOwnProperty(key)&&(data.$order=data.$order||++this.order,this.options[key]=data,key)},registerOptionGroup:function(data){var key=hash_key(data[this.settings.optgroupValueField]);return!!key&&(data.$order=data.$order||++this.order,this.optgroups[key]=data,key)},addOptionGroup:function(id,data){data[this.settings.optgroupValueField]=id,(id=this.registerOptionGroup(data))&&this.trigger("optgroup_add",id,data)},removeOptionGroup:function(id){this.optgroups.hasOwnProperty(id)&&(delete this.optgroups[id],this.renderCache={},this.trigger("optgroup_remove",id))},clearOptionGroups:function(){this.optgroups={},this.renderCache={},this.trigger("optgroup_clear")},updateOption:function(value,data){var value_new,index_item,order_old;if(value=hash_key(value),value_new=hash_key(data[this.settings.valueField]),null!==value&&this.options.hasOwnProperty(value)){if("string"!=typeof value_new)throw new Error("Value must be set in option data");order_old=this.options[value].$order,value_new!==value&&(delete this.options[value],-1!==(index_item=this.items.indexOf(value))&&this.items.splice(index_item,1,value_new)),data.$order=data.$order||order_old,this.options[value_new]=data,index_item=this.renderCache.item,order_old=this.renderCache.option,index_item&&(delete index_item[value],delete index_item[value_new]),order_old&&(delete order_old[value],delete order_old[value_new]),-1!==this.items.indexOf(value_new)&&(index_item=this.getItem(value),order_old=$(this.render("item",data)),index_item.hasClass("active")&&order_old.addClass("active"),index_item.replaceWith(order_old)),this.lastQuery=null,this.isOpen&&this.refreshOptions(!1)}},removeOption:function(value,silent){value=hash_key(value);var cache_items=this.renderCache.item,cache_options=this.renderCache.option;cache_items&&delete cache_items[value],cache_options&&delete cache_options[value],delete this.userOptions[value],delete this.options[value],this.lastQuery=null,this.trigger("option_remove",value),this.removeItem(value,silent)},clearOptions:function(silent){var self=this,options=(self.loadedSearches={},self.userOptions={},self.renderCache={},self.options);$.each(self.options,function(key,value){-1==self.items.indexOf(key)&&delete options[key]}
2899),self.options=self.sifter.items=options,self.lastQuery=null,self.trigger("option_clear"),self.clear(silent)},getOption:function(value){return this.getElementWithValue(value,this.$dropdown_content.find("[data-selectable]"))},getFirstOption:function(){var $options=this.$dropdown.find("[data-selectable]");return 0<$options.length?$options.eq(0):$()},getAdjacentOption:function($option,direction){var $options=this.$dropdown.find("[data-selectable]"),$option=$options.index($option)+direction;return 0<=$option&&$option<$options.length?$options.eq($option):$()},getElementWithValue:function(value,$els){if(null!=(value=hash_key(value)))for(var i=0,n=$els.length;i<n;i++)if($els[i].getAttribute("data-value")===value)return $($els[i]);return $()},getElementWithTextContent:function(textContent,ignoreCase,$els){if(null!=(textContent=hash_key(textContent)))for(var i=0,n=$els.length;i<n;i++){var eleTextContent=$els[i].textContent;if(1==ignoreCase&&(eleTextContent=null!==eleTextContent?eleTextContent.toLowerCase():null,textContent=textContent.toLowerCase()),eleTextContent===textContent)return $($els[i])}return $()},getItem:function(value){return this.getElementWithValue(value,this.$control.children())},getFirstItemMatchedByTextContent:function(textContent,ignoreCase){return this.getElementWithTextContent(textContent,ignoreCase=null!==ignoreCase&&!0===ignoreCase,this.$dropdown_content.find("[data-selectable]"))},addItems:function(values,silent){this.buffer=document.createDocumentFragment();for(var childNodes=this.$control[0].childNodes,i=0;i<childNodes.length;i++)this.buffer.appendChild(childNodes[i]);for(var items=Array.isArray(values)?values:[values],i=0,n=items.length;i<n;i++)this.isPending=i<n-1,this.addItem(items[i],silent);values=this.$control[0];values.insertBefore(this.buffer,values.firstChild),this.buffer=null},addItem:function(value,silent){debounce_events(this,silent?[]:["change"],function(){var $item,$option,wasFull,inputMode=this.settings.mode;value=hash_key(value),-1!==this.items.indexOf(value)?"single"===inputMode&&this.close():this.options.hasOwnProperty(value)&&("single"===inputMode&&this.clear(silent),"multi"===inputMode&&this.isFull()||($item=$(this.render("item",this.options[value])),wasFull=this.isFull(),this.items.splice(this.caretPos,0,value),this.insertAtCaret($item),this.isPending&&(wasFull||!this.isFull())||this.refreshState(),this.isSetup&&(wasFull=this.$dropdown_content.find("[data-selectable]"),this.isPending||($option=this.getOption(value),$option=this.getAdjacentOption($option,1).attr("data-value"),this.refreshOptions(this.isFocused&&"single"!==inputMode),$option&&this.setActiveOption(this.getOption($option))),!wasFull.length||this.isFull()?this.close():this.isPending||this.positionDropdown(),this.updatePlaceholder(),this.trigger("item_add",value,$item),this.isPending||this.updateOriginalInput({silent:silent}))))})},removeItem:function(value,silent){var i,idx,$item=value instanceof $?value:this.getItem(value);value=hash_key($item.attr("data-value")),-1!==(i=this.items.indexOf(value))&&(this.trigger("item_before_remove",value,$item),$item.remove(),$item.hasClass("active")&&(idx=this.$activeItems.indexOf($item[0]),this.$activeItems.splice(idx,1)),this.items.splice(i,1),this.lastQuery=null,!this.settings.persist&&this.userOptions.hasOwnProperty(value)&&this.removeOption(value,silent),i<this.caretPos&&this.setCaret(this.caretPos-1),this.refreshState(),this.updatePlaceholder(),this.updateOriginalInput({silent:silent}),this.positionDropdown(),this.trigger("item_remove",value,$item))},createItem:function(input,triggerDropdown){var self=this,caret=self.caretPos,callback=(input=input||(self.$control_input.val()||"").trim(),arguments[arguments.length-1]);if("function"!=typeof callback&&(callback=function(){}),"boolean"!=typeof triggerDropdown&&(triggerDropdown=!0),!self.canCreate(input))return callback(),!1;self.lock();var fn,called,setup="function"==typeof self.settings.create?this.settings.create:function(input){var data={},input=data[self.settings.labelField]=input;if(!self.settings.formatValueToKey||"function"!=typeof self.settings.formatValueToKey||null!=(input=self.settings.formatValueToKey.apply(this,[input]))&&"object"!=typeof input&&"function"!=typeof input)return data[self.settings.valueField]=input,data;throw new Error('Selectize "formatValueToKey" setting must be a function that returns a value other than object or function.')},create=(called=!(fn=function(data){return self.unlock(),!data||"object"!=typeof data||"string"!=typeof(value=hash_key(data[self.settings.valueField]))?callback():(self.setTextboxValue(""),self.addOption(data),self.setCaret(caret),self.addItem(value),self.refreshOptions(triggerDropdown&&"single"!==self.settings.mode),void callback(data));var value}),function(){called||(called=!0,fn.apply(this,arguments))}),setup=setup.apply(this,[input,create]);return void 0!==setup&&create(setup),!0},refreshItems:function(){this.lastQuery=null,this.isSetup&&this.addItem(this.items),this.refreshState(),this.updateOriginalInput()},refreshState:function(){this.refreshValidityState(),this.refreshClasses()},refreshValidityState:function(){if(!this.isRequired)return!1;var invalid=!this.items.length;this.isInvalid=invalid,this.$control_input.prop("required",invali
2899d),this.$input.prop("required",!invalid)},refreshClasses:function(){var isFull=this.isFull(),isLocked=this.isLocked;this.$wrapper.toggleClass("rtl",this.rtl),this.$control.toggleClass("focus",this.isFocused).toggleClass("disabled",this.isDisabled).toggleClass("required",this.isRequired).toggleClass("invalid",this.isInvalid).toggleClass("locked",isLocked).toggleClass("full",isFull).toggleClass("not-full",!isFull).toggleClass("input-active",this.isFocused&&!this.isInputHidden).toggleClass("dropdown-active",this.isOpen).toggleClass("has-options",!$.isEmptyObject(this.options)).toggleClass("has-items",0<this.items.length),this.$control_input.data("grow",!isFull&&!isLocked)},isFull:function(){return null!==this.settings.maxItems&&this.items.length>=this.settings.maxItems},updateOriginalInput:function(opts){var i,n,options,label;if(opts=opts||{},1===this.tagType){for(options=[],i=0,n=this.items.length;i<n;i++)label=this.options[this.items[i]][this.settings.labelField]||"",options.push('<option value="'+escape_html(this.items[i])+'" selected="selected">'+escape_html(label)+"</option>");options.length||this.$input.attr("multiple")||options.push('<option value="" selected="selected"></option>'),this.$input.html(options.join(""))}else this.$input.val(this.getValue()),this.$input.attr("value",this.$input.val());this.isSetup&&!opts.silent&&this.trigger("change",this.$input.val())},updatePlaceholder:function(){var $input;this.settings.placeholder&&($input=this.$control_input,this.items.length?$input.removeAttr("placeholder"):$input.attr("placeholder",this.settings.placeholder),$input.triggerHandler("update",{force:!0}))},open:function(){this.isLocked||this.isOpen||"multi"===this.settings.mode&&this.isFull()||(this.focus(),this.isOpen=!0,this.refreshState(),this.$dropdown.css({visibility:"hidden",display:"block"}),this.positionDropdown(),this.$dropdown.css({visibility:"visible"}),this.trigger("dropdown_open",this.$dropdown))},close:function(){var trigger=this.isOpen;"single"===this.settings.mode&&this.items.length&&(this.hideInput(),this.isBlurring&&this.$control_input.blur()),this.isOpen=!1,this.$dropdown.hide(),this.setActiveOption(null),this.refreshState(),trigger&&this.trigger("dropdown_close",this.$dropdown)},positionDropdown:function(){var $control=this.$control,offset="body"===this.settings.dropdownParent?$control.offset():$control.position();offset.top+=$control.outerHeight(!0),this.$dropdown.css({width:$control[0].getBoundingClientRect().width,top:offset.top,left:offset.left})},clear:function(silent){this.items.length&&(this.$control.children(":not(input)").remove(),this.items=[],this.lastQuery=null,this.setCaret(0),this.setActiveItem(null),this.updatePlaceholder(),this.updateOriginalInput({silent:silent}),this.refreshState(),this.showInput(),this.trigger("clear"))},insertAtCaret:function($el){var caret=Math.min(this.caretPos,this.items.length),$el=$el[0],target=this.buffer||this.$control[0];0===caret?target.insertBefore($el,target.firstChild):target.insertBefore($el,target.childNodes[caret]),this.setCaret(caret+1)},deleteSelection:function(e){var i,n,values,option_select,$tail,direction=e&&8===e.keyCode?-1:1,selection=getSelection(this.$control_input[0]);if(this.$activeOption&&!this.settings.hideSelected&&(option_select=("string"==typeof this.settings.deselectBehavior&&"top"===this.settings.deselectBehavior?this.getFirstOption():this.getAdjacentOption(this.$activeOption,-1)).attr("data-value")),values=[],this.$activeItems.length){for($tail=this.$control.children(".active:"+(0<direction?"last":"first")),$tail=this.$control.children(":not(input)").index($tail),0<direction&&$tail++,i=0,n=this.$activeItems.length;i<n;i++)values.push($(this.$activeItems[i]).attr("data-value"));e&&(e.preventDefault(),e.stopPropagation())}else(this.isFocused||"single"===this.settings.mode)&&this.items.length&&(direction<0&&0===selection.start&&0===selection.length?values.push(this.items[this.caretPos-1]):0<direction&&selection.start===this.$control_input.val().length&&values.push(this.items[this.caretPos]));if(!values.length||"function"==typeof this.settings.onDelete&&!1===this.settings.onDelete.apply(this,[values]))return!1;for(void 0!==$tail&&this.setCaret($tail);values.length;)this.removeItem(values.pop());return this.showInput(),this.positionDropdown(),this.refreshOptions(!0),option_select&&(e=this.getOption(option_select)).length&&this.setActiveOption(e),!0},advanceSelection:function(direction,e){var tail,valueLength,selection;0!==direction&&(this.rtl&&(direction*=-1),tail=0<direction?"last":"first",selection=getSelection(this.$control_input[0]),this.isFocused&&!this.isInputHidden?(valueLength=this.$control_input.val().length,(direction<0?0!==selection.start||0!==selection.length:selection.start!==valueLength)||valueLength||this.advanceCaret(direction,e)):(selection=this.$control.children(".active:"+tail)).length&&(valueLength=this.$control.children(":not(input)").index(selection),this.setActiveItem(null),this.setCaret(0<direction?valueLength+1:valueLength)))},advanceCaret:function(direction,e){var $adj;0!==direction&&(this.isShiftDown?($adj=this.$control_input[0<direction?"next":"prev"]()).length&&(this.hideInput(),this.setActiveItem($adj),e&&e.preventDefault()):this.setCaret(this.caretPos+direction))},setCaret:function(i){if(i="single"===this.settings.mode?this.items.length:Math.max(0,Math.min(this.items.length,i)),!this.isPending)for(var $child,$children=this.$control.children(":not(input)"),j=0,n=$children.length;j<n;
2899j++)$child=$($children[j]).detach(),j<i?this.$control_input.before($child):this.$control.append($child);this.caretPos=i},lock:function(){this.close(),this.isLocked=!0,this.refreshState()},unlock:function(){this.isLocked=!1,this.refreshState()},disable:function(){this.$input.prop("disabled",!0),this.$control_input.prop("disabled",!0).prop("tabindex",-1),this.isDisabled=!0,this.lock()},enable:function(){this.$input.prop("disabled",!1),this.$control_input.prop("disabled",!1).prop("tabindex",this.tabIndex),this.isDisabled=!1,this.unlock()},destroy:function(){var eventNS=this.eventNS,revertSettings=this.revertSettings;this.trigger("destroy"),this.off(),this.$wrapper.remove(),this.$dropdown.remove(),this.$input.html("").append(revertSettings.$children).removeAttr("tabindex").removeClass("selectized").attr({tabindex:revertSettings.tabindex}).show(),this.$control_input.removeData("grow"),this.$input.removeData("selectize"),0==--Selectize.count&&Selectize.$testInput&&(Selectize.$testInput.remove(),Selectize.$testInput=void 0),$(window).off(eventNS),$(document).off(eventNS),$(document.body).off(eventNS),delete this.$input[0].selectize},render:function(templateName,data){var value,id,html="",cache=!1;return(cache="option"!==templateName&&"item"!==templateName?cache:!!(value=hash_key(data[this.settings.valueField])))&&(isset(this.renderCache[templateName])||(this.renderCache[templateName]={}),this.renderCache[templateName].hasOwnProperty(value))?this.renderCache[templateName][value]:(html=$(this.settings.render[templateName].apply(this,[data,escape_html])),"option"===templateName||"option_create"===templateName?data[this.settings.disabledField]||html.attr("data-selectable",""):"optgroup"===templateName&&(id=data[this.settings.optgroupValueField]||"",html.attr("data-group",id),data[this.settings.disabledField]&&html.attr("data-disabled","")),"option"!==templateName&&"item"!==templateName||html.attr("data-value",value||""),cache&&(this.renderCache[templateName][value]=html[0]),html[0])},clearCache:function(templateName){void 0===templateName?this.renderCache={}:delete this.renderCache[templateName]},canCreate:function(input){if(!this.settings.create)return!1;var filter=this.settings.createFilter;return input.length&&("function"!=typeof filter||filter.apply(this,[input]))&&("string"!=typeof filter||new RegExp(filter).test(input))&&(!(filter instanceof RegExp)||filter.test(input))}}),Selectize.count=0,Selectize.defaults={options:[],optgroups:[],plugins:[],delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:!1,showAddOptionOnCreate:!0,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,maxOptions:1e3,maxItems:null,hideSelected:null,addPrecedence:!1,selectOnTab:!0,preload:!1,allowEmptyOption:!1,showEmptyOptionInDropdown:!1,emptyOptionLabel:"--",closeAfterSelect:!1,scrollDuration:60,deselectBehavior:"previous",loadThrottle:300,loadingClass:"loading",dataAttr:"data-data",optgroupField:"optgroup",valueField:"value",labelField:"text",disabledField:"disabled",optgroupLabelField:"label",optgroupValueField:"value",lockOptgroupOrder:!1,sortField:"$order",searchField:["text"],searchConjunction:"and",mode:null,wrapperClass:"selectize-control",inputClass:"selectize-input",dropdownClass:"selectize-dropdown",dropdownContentClass:"selectize-dropdown-content",dropdownParent:null,copyClassesToDropdown:!0,render:{}},$.fn.selectize=function(settings_user){function init_select($input,settings_element){function addOption($option,group){$option=$($option);var arr,value=hash_key($option.val());(value||settings.allowEmptyOption)&&(optionsMap.hasOwnProperty(value)?group&&((arr=optionsMap[value][field_optgroup])?$.isArray(arr)?arr.push(group):optionsMap[value][field_optgroup]=[arr,group]:optionsMap[value][field_optgroup]=group):((arr=readData($option)||{})[field_label]=arr[field_label]||$option.text(),arr[field_value]=arr[field_value]||value,arr[field_disabled]=arr[field_disabled]||$option.prop("disabled"),arr[field_optgroup]=arr[field_optgroup]||group,optionsMap[value]=arr,options.push(arr),$option.is(":selected")&&settings_element.items.push(value)))}var i,n,tagName,$children,options=settings_element.options,optionsMap={},readData=function($el){$el=attr_data&&$el.attr(attr_data);return"string"==typeof $el&&$el.length?JSON.parse($el):null};for(settings_element.maxItems=$input.attr("multiple")?null:1,i=0,n=($children=$input.children()).length;i<n;i++)"optgroup"===(tagName=$children[i].tagName.toLowerCase())?function($optgroup){var i,n,id,optgroup,$options;for((id=($optgroup=$($optgroup)).attr("label"))&&((optgroup=read
2899Data($optgroup)||{})[field_optgroup_label]=id,optgroup[field_optgroup_value]=id,optgroup[field_disabled]=$optgroup.prop("disabled"),settings_element.optgroups.push(optgroup)),i=0,n=($options=$("option",$optgroup)).length;i<n;i++)addOption($options[i],id)}($children[i]):"option"===tagName&&addOption($children[i])}var defaults=$.fn.selectize.defaults,settings=$.extend({},defaults,settings_user),attr_data=settings.dataAttr,field_label=settings.labelField,field_value=settings.valueField,field_disabled=settings.disabledField,field_optgroup=settings.optgroupField,field_optgroup_label=settings.optgroupLabelField,field_optgroup_value=settings.optgroupValueField;return this.each(function(){var $input,tag_name,placeholder,input_html;this.selectize||($input=$(this),tag_name=this.tagName.toLowerCase(),(placeholder=$input.attr("placeholder")||$input.attr("data-placeholder"))||settings.allowEmptyOption||(placeholder=$input.children('option[value=""]').text()),settings.allowEmptyOption&&settings.showEmptyOptionInDropdown&&!$input.children('option[value=""]').length&&(input_html=$input.html(),$input.html('<option value="">'+settings.emptyOptionLabel+"</option>"+input_html)),("select"===tag_name?init_select:function($input,settings_element){var i,n,values,option,data_raw=$input.attr(attr_data);if(data_raw)for(settings_element.options=JSON.parse(data_raw),i=0,n=settings_element.options.length;i<n;i++)settings_element.items.push(settings_element.options[i][field_value]);else{data_raw=$.trim($input.val()||"");if(settings.allowEmptyOption||data_raw.length){for(i=0,n=(values=data_raw.split(settings.delimiter)).length;i<n;i++)(option={})[field_label]=values[i],option[field_value]=values[i],settings_element.options.push(option);settings_element.items=values}}})($input,input_html={placeholder:placeholder,options:[],optgroups:[],items:[]}),new Selectize($input,$.extend(!0,{},defaults,input_html,settings_user)))})},$.fn.selectize.defaults=Selectize.defaults,$.fn.selectize.support={validity:SUPPORTS_VALIDITY_API},Selectize.define("auto_position",function(){const POSITION={top:"top",bottom:"bottom"};this.positionDropdown=function(){const $control=this.$control,offset="body"===this.settings.dropdownParent?$control.offset():$control.position();offset.top+=$control.outerHeight(!0);var dropdownHeight=this.$dropdown.prop("scrollHeight")+5,dropdownHeight=this.$control.get(0).getBoundingClientRect().top+dropdownHeight+this.$wrapper.height()>window.innerHeight?POSITION.top:POSITION.bottom,styles={width:$control.outerWidth(),left:offset.left};dropdownHeight===POSITION.top?(Object.assign(styles,{bottom:offset.top,top:"unset",margin:"0 0 5px 0"}),this.$dropdown.addClass("selectize-position-top")):(Object.assign(styles,{top:offset.top,bottom:"unset",margin:"5px 0 0 0"}),this.$dropdown.removeClass("selectize-position-top")),this.$dropdown.css(styles)}}),Selectize.define("auto_select_on_type",function(options){var originalBlur,self=this;self.onBlur=(originalBlur=self.onBlur,function(e){var $matchedItem=self.getFirstItemMatchedByTextContent(self.lastValue,!0);return void 0!==$matchedItem.attr("data-value")&&self.getValue()!==$matchedItem.attr("data-value")&&self.setValue($matchedItem.attr("data-value")),originalBlur.apply(this,arguments)})}),Selectize.define("autofill_disable",function(options){var original,self=this;self.setup=(original=self.setup,function(){original.apply(self,arguments),self.$control_input.attr({autocomplete:"new-password",autofill:"no"})})}),Selectize.define("drag_drop",function(options){if(!$.fn.sortable)throw new Error('The "drag_drop" plugin requires jQuery UI "sortable".');var self,original;"multi"===this.settings.mode&&((self=this).lock=(original=self.lock,function(){var sortable=self.$control.data("sortable");return sortable&&sortable.disable(),original.apply(self,arguments)}),self.unlock=function(){var original=self.unlock;return function(){var sortable=self.$control.data("sortable");return sortable&&sortable.enable(),original.apply(self,arguments)}}(),self.setup=function(){var original=self.setup;return function(){original.apply(this,arguments);
2899var $control=self.$control.sortable({items:"[data-value]",forcePlaceholderSize:!0,disabled:self.isLocked,start:function(e,ui){ui.placeholder.css("width",ui.helper.css("width")),$control.addClass("dragging")},stop:function(){$control.removeClass("dragging");var active=self.$activeItems?self.$activeItems.slice():null,values=[];$control.children("[data-value]").each(function(){values.push($(this).attr("data-value"))}),self.isFocused=!1,self.setValue(values),self.isFocused=!0,self.setActiveItem(active),self.positionDropdown()}})}}())}),Selectize.define("dropdown_header",function(options){var original,self=this;options=$.extend({title:"Untitled",headerClass:"selectize-dropdown-header",titleRowClass:"selectize-dropdown-header-title",labelClass:"selectize-dropdown-header-label",closeClass:"selectize-dropdown-header-close",html:function(data){return'<div class="'+data.headerClass+'"><div class="'+data.titleRowClass+'"><span class="'+data.labelClass+'">'+data.title+'</span><a href="javascript:void(0)" class="'+data.closeClass+'">×</a></div></div>'}},options),self.setup=(original=self.setup,function(){original.apply(self,arguments),self.$dropdown_header=$(options.html(options)),self.$dropdown.prepend(self.$dropdown_header)})}),Selectize.define("optgroup_columns",function(options){function equalizeSizes(){var i,height_max,width,width_parent,$optgroups=$("[data-group]",self.$dropdown_content),n=$optgroups.length;if(n&&self.$dropdown_content.width()){if(options.equalizeHeight){for(i=height_max=0;i<n;i++)height_max=Math.max(height_max,$optgroups.eq(i).height());$optgroups.css({height:height_max})}options.equalizeWidth&&(width_parent=self.$dropdown_content.innerWidth()-getScrollbarWidth(),width=Math.round(width_parent/n),$optgroups.css({width:width}),1<n&&(width_parent=width_parent-width*(n-1),$optgroups.eq(n-1).css({width:width_parent})))}}var original,self=this,getScrollbarWidth=(options=$.extend({equalizeWidth:!0,equalizeHeight:!0},options),this.getAdjacentOption=function($option,direction){var $options=$option.closest("[data-group]").find("[data-selectable]"),$option=$options.index($option)+direction;return 0<=$option&&$option<$options.length?$options.eq($option):$()},this.onKeyDown=(original=self.onKeyDown,function(e){var index,$optgroup;if(!this.isOpen||37!==e.keyCode&&39!==e.keyCode)return original.apply(this,arguments);self.ignoreHover=!0,index=($optgroup=this.$activeOption.closest("[data-group]")).find("[data-selectable]").index(this.$activeOption),($optgroup=(e=($optgroup=37===e.keyCode?$optgroup.prev("[data-group]"):$optgroup.next("[data-group]")).find("[data-selectable]")).eq(Math.min(e.length-1,index))).length&&this.setActiveOption($optgroup)}),function(){var div,width=getScrollbarWidth.width,doc=document;return void 0===width&&((div=doc.createElement("div")).innerHTML='<div style="width:50px;height:50px;position:absolute;left:-50px;top:-50px;overflow:auto;"><div style="width:1px;height:100px;"></div></div>',div=div.firstChild,doc.body.appendChild(div),width=getScrollbarWidth.width=div.offsetWidth-div.clientWidth,doc.body.removeChild(div)),width});(options.equalizeHeight||options.equalizeWidth)&&(hook.after(this,"positionDropdown",equalizeSizes),hook.after(this,"refreshOptions",equalizeSizes))}),Selectize.define("remove_button",function(options){options=$.extend({label:"×",title:"Remove",className:"remove",append:!0},options),("single"===this.settings.mode?function(thisRef,options){options.className="remove-single";var original,self=thisRef,html='<a href="javascript:void(0)" class="'+options.className+'" tabindex="-1" title="'+escape_html(options.title)+'">'+options.label+"</a>";thisRef.setup=(original=self.setup,function(){var id,render_item;options.append&&(id=$(self.$input.context).attr("id"),$("#"+id),render_item=self.settings.render.item,self.settings.render.item=function(data){return html_container=render_item.apply(thisRef,arguments),html_element=html,$("<span>").append(html_container).append(html_element);var html_container,html_element}),original.apply(thisRef,arguments),thisRef.$control.on("click","."+options.className,function(e){e.preventDefault(),self.isLocked||self.clear()})})}:function(thisRef,options){var original,self=thisRef,html='<a href="javascript:void(0)" class="'+options.className+'" tabindex="-1" title="'+escape_html(options.title)+'">'+options.label+"</a>";thisRef.setup=(original=self.setup,function(){var render_item;options.append&&(render_item=self.settings.render.item,self.settings.render.item=function(data){return html_container=render_item.apply(thisRef,arguments),html_element=html,pos=html_container.search(/(<\/[^>]+>\s*)$/),html_container.substring(0,pos)+html_element+html_container.substring(pos);var html_container,html_element,pos}),original.apply(thisRef,arguments),thisRef.$control.on("click","."+options.className,function(e){if(e.preventDefault(),!self.isLocked)return e=$(e.currentTarget).parent(),self.setActiveItem(e),self.deleteSelection()&&self.setCaret(self.items.length),!1})})})(this,options)}),Selectize.define("restore_on_backspace",function(options){var original,self=this;options.text=options.text||function(option){return option[this.settings.labelField]},this.onKeyDown=(original=self.onKeyDown,function(e){var index;return 8===e.keyCode&&""===this.$control_input.val()&&!this.$activeItems.length&&0<=(index=this.caretPos-1)&&index<this.items.length?(index=this.options[this.items[index]],this.deleteSelection(e)&&(this.setTextboxValue(options.text.apply(this,[index])),this.refreshOptions(!0)),void e.preventDefault()):original.apply(this,arguments)})}),Selectize.define("select_on_focus",function(options){var originalFocus,originalBlur,self=this;self.on("focus",(originalFocus=self.onFocus,function(e){var value=self.getItem(self.getValue()).text();return self.clear(),self.setTextboxValue(value),self.$control_input.select(),setTimeout(function(){self.settings.selectOnTab&&self.setActiveOption(self.getFirstItemMatchedByTextContent(value)),self.settings.score=null},0),originalFocus.apply(this,arguments)})),self.onBlur=(originalBlur=self.onBlur,function(e){return""===self.getValue()&&self.lastValidValue!==self.getValue()&&self.setValue(self.lastValidValue),setTimeout(function(){self.settings.score=function(){return function(){return 1}}},0),originalBlur.apply(this,arguments)}),self.settings.score=function(){return function(){return 1}}}),Selectize.define("tag_limit",function(options){const self=this;options.tagLimit=options.tagLimit,this.onBlur=function(){const original=self.onBlur;return function(e){if(original.apply(this,e),e){const $control=this.$control,$items=$control.find(".
2899item"),limit=options.tagLimit;void 0===limit||$items.length<=limit||($items.toArray().forEach(function(item,index){index<limit||$(item).hide()}),$control.append("<span><b>"+($items.length-limit)+"</b></span>"))}}}(),this.onFocus=function(){const original=self.onFocus;return function(e){if(original.apply(this,e),e){const $control=this.$control,$items=$control.find(".item");$items.show(),$control.find("span").remove()}}}()}),Selectize}); 2900/* selectize click2deselect (custom) */ 2901Selectize.define("click2deselect",function(options){var self=this;var setup=self.setup;this.setup=function(){setup.apply(self,arguments);self.$dropdown.on("click","[data-selectable]",function(e){let value=this.getAttribute("data-value");if(this.classList.contains("selected")){self.removeItem(value);self.refreshItems();self.refreshOptions()}return false});self.on("item_remove",function(value){self.getOption(value).removeClass("selected")})}});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.