{"version":3,"sources":["llms-metaboxes.js"],"names":["$","fn","llmsCollapsible","this","on","$parent","closest","$siblings","siblings","toggleClass","trigger","find","slideToggle","each","removeClass","slideUp","window","llms","metaboxes","repeaters","$repeaters","init","self","length","LLMS","wait_for","tinyMCE","load","bind","attr","handle_submit","$repeater","$rows","add_row","sortable","handle","items","start","event","ui","addClass","stop","item","ed_id","EditorManager","execCommand","save","e","stopPropagation","$row","confirm","l10n","translate","remove","setTimeout","data","expand","$model","clone_row","new_index","editor","reindex","key","val","$field","hasClass","i","append","title","bind_row","bind_row_header","llmsSelect2","width","llmsStudentsSelect2","bind_datepickers","bind_controllers","$title","text","$ed","clone","wait","$btn","$spinner","parent","is","removeAttr","preventDefault","setInterval","clearInterval","off","store","obj","index","old_index","replace_attr","$el","str","replace","serialize","rows","name","editors","getContent","push","action","cb","store_action","Ajax","call","beforeSend","Spinner","success","r","bindings","post_select","bind_tabs","bind_mce_fixes","selector","func","$selector","reduced","filter","post","post_type","bind_cb_controllers","$controllers","$cb","$controlled","slideDown","possible","vals","indexOf","split","bind_datepicker","format","maxDate","minDate","datepicker","dateFormat","$datepickers","bind_editables","$fields","make_editable","min_date","max_date","$label","type","required","options","JSON","parse","$input","$picker","date","hour","minute","empty","bind_llms_engagement","engagement_type","$select","cpt","bind_llms_membership","$table","toggle_header_row","first","show","hide","get_course_ids","courses","$container","course_id","fadeOut","prepend","message","replaceWith","id","alert","%s","$tr","admin_url","error","jqxhr","code","error_msg","complete","bind_llms_order","txn_id","refundable_amount","gateway_supports","gateway_title","$new_row","$gateway_btn","after","next","one","field","gateway","gateway_data","$wrap","enabled","undefined","wp","select","getMetaBoxesPerLocation","shouldRun","toFix","get","settings","bind_merge_code_buttons","$wrappers","target","tinymce","insertContent","$metabox","tab_id","multi","noViewBtn","llmsPostsSelect2","msg","bind_tables","jQuery"],"mappings":"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","file":"../../js/llms-metaboxes.min.js","sourcesContent":["/**\n * LifterLMS Admin Panel Metabox Functions\n *\n * @since 3.0.0\n * @version 6.0.0\n */\n( function( $ ) {\n\n\t/**\n\t * jQuery plugin to allow \"collapsible\" sections\n\t *\n\t * @return jQuery object\n\t * @since 3.0.0\n\t * @version 3.29.0\n\t */\n\t$.fn.llmsCollapsible = function() {\n\n\t\tvar $group = this;\n\n\t\tthis.on( 'click', '.llms-collapsible-header', function() {\n\n\t\t\tvar $parent = $( this ).closest( '.llms-collapsible' ),\n\t\t\t\t$siblings = $parent.siblings( '.llms-collapsible' );\n\n\t\t\t$parent.toggleClass( 'opened' ).trigger( 'llms-collapsible-toggled' );\n\n\t\t\t$parent.find( '.llms-collapsible-body' ).slideToggle( 400 );\n\n\t\t\t$siblings.each( function() {\n\t\t\t\t$( this ).removeClass( 'opened' );\n\t\t\t\t$( this ).find( '.llms-collapsible-body' ).slideUp( 400 );\n\t\t\t} );\n\n\t\t} );\n\n\t\treturn this;\n\n\t};\n\n\twindow.llms = window.llms || {};\n\n\tvar Metaboxes = function() {\n\n\t\t/**\n\t\t * load all partials\n\t\t */\n\t\t/**\n\t\t * LifterLMS Admin Metabox Repeater Field\n\t\t *\n\t\t * @package LifterLMS/Scripts/Partials\n\t\t *\n\t\t * @since 3.11.0\n\t\t * @version 5.3.2\n\t\t */\n\t\t\n\t\tthis.repeaters = {\n\t\t\n\t\t\t/**\n\t\t\t * Reference to the parent metabox class\n\t\t\t *\n\t\t\t * @type {Object}\n\t\t\t */\n\t\t\tmetaboxes: this,\n\t\t\n\t\t\t/**\n\t\t\t * A jQuery selector for all repeater elements on the current screen\n\t\t\t *\n\t\t\t * @type {Object}\n\t\t\t */\n\t\t\t$repeaters: null,\n\t\t\n\t\t\t/**\n\t\t\t * Init\n\t\t\t *\n\t\t\t * @since 3.11.0\n\t\t\t * @since 3.23.0 Unknown.\n\t\t\t *\n\t\t\t * @return {void}\n\t\t\t */\n\t\t\tinit: function() {\n\t\t\n\t\t\t\tvar self = this;\n\t\t\n\t\t\t\tself.$repeaters = $( '.llms-mb-list.repeater' );\n\t\t\n\t\t\t\tif ( self.$repeaters.length ) {\n\t\t\n\t\t\t\t\t// Wait for tinyMCE just in case their editors in the repeaters.\n\t\t\t\t\tLLMS.wait_for(\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\treturn ( 'undefined' !== typeof tinyMCE );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tself.load();\n\t\t\t\t\t\t\tself.bind();\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\n\t\t\t\t\t/**\n\t\t\t\t\t * On click of any post submit buttons add some data to the submit button\n\t\t\t\t\t * so we can see which button to trigger after repeaters are finished.\n\t\t\t\t\t */\n\t\t\t\t\t$( '#post input[type=\"submit\"], #post-preview' ).on( 'click', function() {\n\t\t\t\t\t\t$( this ).attr( 'data-llms-clicked', 'yes' );\n\t\t\t\t\t} );\n\t\t\n\t\t\t\t\t// Handle post submission.\n\t\t\t\t\t$( '#post' ).on( 'submit', self.handle_submit );\n\t\t\n\t\t\t\t}\n\t\t\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * Bind DOM Events\n\t\t\t *\n\t\t\t * @since 3.11.0\n\t\t\t * @since 3.13.0 Unknown.\n\t\t\t * @since 5.3.2 Don't remove the model's mceEditor instance (it's removed before cloning a row now).\n\t\t\t *\n\t\t\t * @return {void}\n\t\t\t */\n\t\t\tbind: function() {\n\t\t\n\t\t\t\tvar self = this;\n\t\t\n\t\t\t\tself.$repeaters.each( function() {\n\t\t\n\t\t\t\t\tvar $repeater = $( this ),\n\t\t\t\t\t\t$rows = $repeater.find( '.llms-repeater-rows' );\n\t\t\n\t\t\t\t\t// For the repeater + button.\n\t\t\t\t\t$repeater.find( '.llms-repeater-new-btn' ).on( 'click', function() {\n\t\t\t\t\t\tself.add_row( $repeater, null, true );\n\t\t\t\t\t} );\n\t\t\n\t\t\t\t\t// Make repeater rows sortable.\n\t\t\t\t\t$rows.sortable( {\n\t\t\t\t\t\thandle: '.llms-drag-handle',\n\t\t\t\t\t\titems: '.llms-repeater-row',\n\t\t\t\t\t\tstart: function( event, ui ) {\n\t\t\t\t\t\t\t$rows.addClass( 'dragging' );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstop: function( event, ui ) {\n\t\t\t\t\t\t\t$rows.removeClass( 'dragging' );\n\t\t\n\t\t\t\t\t\t\tvar $eds = ui.item.find( 'textarea.wp-editor-area' );\n\t\t\t\t\t\t\t$eds.each( function() {\n\t\t\t\t\t\t\t\tvar ed_id = $( this ).attr( 'id' );\n\t\t\t\t\t\t\t\ttinyMCE.EditorManager.execCommand( 'mceRemoveEditor', true, ed_id );\n\t\t\t\t\t\t\t\ttinyMCE.EditorManager.execCommand( 'mceAddEditor', true, ed_id );\n\t\t\t\t\t\t\t} );\n\t\t\n\t\t\t\t\t\t\tself.save( $repeater );\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\n\t\t\t\t\t$repeater.on( 'click', '.llms-repeater-remove', function( e ) {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tvar $row = $( this ).closest( '.llms-repeater-row' );\n\t\t\t\t\t\tif ( window.confirm( LLMS.l10n.translate( 'Are you sure you want to delete this row? This cannot be undone.' ) ) ) {\n\t\t\t\t\t\t\t$row.remove();\n\t\t\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\t\t\tself.save( $repeater );\n\t\t\t\t\t\t\t}, 1 );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\n\t\t\t\t} );\n\t\t\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * Add a new row to a repeater rows group\n\t\t\t *\n\t\t\t * @since 3.11.0\n\t\t\t * @since 5.3.2 Use `self.clone_row()` to retrieve the model's base HTML for the row to be added.\n\t\t\t *\n\t\t\t * @param {Object} $repeater A jQuery selector for the repeater to add a row to.\n\t\t\t * @param {Object} data Optional object of data to fill fields in the row with.\n\t\t\t * @param {Boolean} expand If true, will automatically open the row after adding it to the dom.\n\t\t\t * @return {void}\n\t\t\t */\n\t\t\tadd_row: function( $repeater, data, expand ) {\n\t\t\n\t\t\t\tvar self = this,\n\t\t\t\t\t$rows = $repeater.find( '.llms-repeater-rows' ),\n\t\t\t\t\t$model = $repeater.find( '.llms-repeater-model' ),\n\t\t\t\t\t$row = self.clone_row( $model.find( '.llms-repeater-row' ) ),\n\t\t\t\t\tnew_index = $repeater.find( '.llms-repeater-row' ).length,\n\t\t\t\t\teditor = self.reindex( $row, new_index );\n\t\t\n\t\t\t\tif ( data ) {\n\t\t\t\t\t$.each( data, function( key, val ) {\n\t\t\n\t\t\t\t\t\tvar $field = $row.find( '[name^=\"' + key + '\"]' );\n\t\t\n\t\t\t\t\t\tif ( $field.hasClass( 'llms-select2-student' ) ) {\n\t\t\t\t\t\t\t$.each( val, function( i, data ) {\n\t\t\t\t\t\t\t\t$field.append( '<option value=\"' + data.key + '\" selected=\"selected\">' + data.title + '</option>' )\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t$field.trigger( 'change' );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$field.val( val );\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\n\t\t\t\tsetTimeout( function() {\n\t\t\t\t\tself.bind_row( $row );\n\t\t\t\t}, 1 );\n\t\t\n\t\t\t\t$rows.append( $row );\n\t\t\t\tif ( expand ) {\n\t\t\t\t\t$row.find( '.llms-collapsible-header' ).trigger( 'click' );\n\t\t\t\t}\n\t\t\t\ttinyMCE.EditorManager.execCommand( 'mceAddEditor', true, editor );\n\t\t\n\t\t\t\t$repeater.trigger( 'llms-new-repeater-row', {\n\t\t\t\t\t$row: $row,\n\t\t\t\t\tdata: data,\n\t\t\t\t} );\n\t\t\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * Bind DOM events for a single repeater row\n\t\t\t *\n\t\t\t * @since 3.11.0\n\t\t\t * @since 3.13.0 Unknown.\n\t\t\t *\n\t\t\t * @param {Object} $row A jQuery selector for the row.\n\t\t\t * @return {void}\n\t\t\t */\n\t\t\tbind_row: function( $row ) {\n\t\t\n\t\t\t\tthis.bind_row_header( $row );\n\t\t\n\t\t\t\t$row.find( '.llms-select2' ).llmsSelect2( {\n\t\t\t\t\twidth: '100%',\n\t\t\t\t} );\n\t\t\n\t\t\t\t$row.find( '.llms-select2-student' ).llmsStudentsSelect2();\n\t\t\n\t\t\t\tthis.metaboxes.bind_datepickers( $row.find( '.llms-datepicker' ) );\n\t\t\t\tthis.metaboxes.bind_controllers( $row.find( '[data-is-controller]' ) );\n\t\t\t\t// This.metaboxes.bind_merge_code_buttons( $row.find( '.llms-merge-code-wrapper' ) );.\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * Bind row header events\n\t\t\t *\n\t\t\t * @since 3.11.0\n\t\t\t *\n\t\t\t * @param {Object} $row jQuery selector for the row.\n\t\t\t * @return {void}\n\t\t\t */\n\t\t\tbind_row_header: function( $row ) {\n\t\t\n\t\t\t\t// Handle the title field binding.\n\t\t\t\tvar $title = $row.find( '.llms-repeater-title' ),\n\t\t\t\t\t$field = $row.find( '.llms-collapsible-header-title-field' );\n\t\t\n\t\t\t\t$title.attr( 'data-default', $title.text() );\n\t\t\n\t\t\t\t$field.on( 'keyup focusout blur', function() {\n\t\t\t\t\tvar val = $( this ).val();\n\t\t\t\t\tif ( ! val ) {\n\t\t\t\t\t\tval = $title.attr( 'data-default' );\n\t\t\t\t\t}\n\t\t\t\t\t$title.text( val );\n\t\t\t\t} ).trigger( 'keyup' );\n\t\t\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * Create a copy of the model's row after removing any tinyMCE editor instances present in the model.\n\t\t\t *\n\t\t\t * @since 5.3.2\n\t\t\t *\n\t\t\t * @param {Object} $row A jQuery object of the row to be cloned.\n\t\t\t * @return {Object} A clone of the jQuery object.\n\t\t\t */\n\t\t\tclone_row: function( $row ) {\n\t\t\n\t\t\t\t$ed = $row.find( '.editor textarea' );\n\t\t\t\tif ( $ed.length ) {\n\t\t\t\t\ttinyMCE.EditorManager.execCommand( 'mceRemoveEditor', true, $ed.attr( 'id' ) );\n\t\t\t\t}\n\t\t\n\t\t\t\treturn $row.clone()\n\t\t\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * Handle WP Post form submission to ensure repeaters are saved before submitting the form to save/publish the post\n\t\t\t *\n\t\t\t * @since 3.11.0\n\t\t\t * @since 3.23.0 Unknown.\n\t\t\t *\n\t\t\t * @param {Object} e An event object.\n\t\t\t * @return {void}\n\t\t\t */\n\t\t\thandle_submit: function( e ) {\n\t\t\n\t\t\t\t// Get the button used to submit the form.\n\t\t\t\tvar $btn = $( '#post [data-llms-clicked=\"yes\"]' ),\n\t\t\t\t\t$spinner = $btn.parent().find( '.spinner' );\n\t\t\n\t\t\t\tif ( $btn.is( '#post-preview' ) ) {\n\t\t\t\t\t$btn.removeAttr( 'data-llms-clicked' );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\n\t\t\t\te.preventDefault();\n\t\t\n\t\t\t\t// Core UX to prevent multi-click/or the appearance of a delay.\n\t\t\t\t$( '#post input[type=\"submit\"]' ).addClass( 'disabled' ).attr( 'disabled', 'disabled' );\n\t\t\t\t$spinner.addClass( 'is-active' );\n\t\t\n\t\t\t\tvar self = window.llms.metaboxes.repeaters,\n\t\t\t\t\ti = 0,\n\t\t\t\t\twait;\n\t\t\n\t\t\t\tself.$repeaters.each( function() {\n\t\t\t\t\tself.save( $( this ) );\n\t\t\t\t} );\n\t\t\n\t\t\t\twait = setInterval( function() {\n\t\t\n\t\t\t\t\tif ( i >= 59 || ! $( '.llms-mb-list.repeater.processing' ).length ) {\n\t\t\n\t\t\t\t\t\tclearInterval( wait );\n\t\t\t\t\t\t$( '#post' ).off( 'submit', this.handle_submit );\n\t\t\t\t\t\t$spinner.removeClass( 'is-active' );\n\t\t\t\t\t\t$btn.removeClass( 'disabled' ).removeAttr( 'disabled' ).trigger( 'click' );\n\t\t\n\t\t\t\t\t} else {\n\t\t\n\t\t\t\t\t\ti++;\n\t\t\n\t\t\t\t\t}\n\t\t\n\t\t\t\t}, 1000 );\n\t\t\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * Load repeater data from the server and create rows in the DOM\n\t\t\t *\n\t\t\t * @since 3.11.0\n\t\t\t * @since 3.12.1 Unknown.\n\t\t\t *\n\t\t\t * @return {void}\n\t\t\t */\n\t\t\tload: function() {\n\t\t\n\t\t\t\tvar self = this;\n\t\t\n\t\t\t\tself.$repeaters.each( function() {\n\t\t\n\t\t\t\t\tvar $repeater = $( this );\n\t\t\n\t\t\t\t\t// Ensure the repeater is only loaded once to prevent duplicates resulting from duplicating binding.\n\t\t\t\t\t// On certain sites which I cannot quite explain...\n\t\t\t\t\tif ( $repeater.hasClass( 'is-loaded' ) || $repeater.hasClass( 'processing' ) ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tself.store( $repeater, 'load', function( data ) {\n\t\t\n\t\t\t\t\t\t$repeater.addClass( 'is-loaded' );\n\t\t\n\t\t\t\t\t\t$.each( data.data, function( i, obj ) {\n\t\t\t\t\t\t\tself.add_row( $repeater, obj, false );\n\t\t\t\t\t\t} );\n\t\t\n\t\t\t\t\t\t// For each row within the repeater.\n\t\t\t\t\t\t$repeater.find( '.llms-repeater-rows .llms-repeater-row' ).each( function() {\n\t\t\t\t\t\t\tself.bind_row( $( this ) );\n\t\t\t\t\t\t} );\n\t\t\n\t\t\t\t\t} );\n\t\t\n\t\t\t\t} );\n\t\t\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * Reindex a row\n\t\t\t *\n\t\t\t * Renames ids, attrs, and etc...\n\t\t\t *\n\t\t\t * Used when cloning the model for new rows.\n\t\t\t *\n\t\t\t * @since 3.11.0\n\t\t\t *\n\t\t\t * @param {Object} $row jQuery selector for the row.\n\t\t\t * @param {string} index The index (or id) to use when renaming.\n\t\t\t * @return {string}\n\t\t\t */\n\t\t\treindex: function( $row, index ) {\n\t\t\n\t\t\t\tvar old_index = $row.attr( 'data-row-order' ),\n\t\t\t\t\t$ed = $row.find( '.llms-mb-list.editor textarea' );\n\t\t\n\t\t\t\ttinyMCE.EditorManager.execCommand( 'mceRemoveEditor', true, $ed.attr( 'id' ) );\n\t\t\n\t\t\t\tfunction replace_attr( $el, attr ) {\n\t\t\t\t\t$el.each( function() {\n\t\t\t\t\t\tvar str = $( this ).attr( attr );\n\t\t\t\t\t\t$( this ).attr( attr, str.replace( old_index, index ) );\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\n\t\t\t\t$row.attr( 'data-row-order', index );\n\t\t\n\t\t\t\treplace_attr( $row, 'data-row-order' );\n\t\t\n\t\t\t\treplace_attr( $row.find( 'button.insert-media' ), 'data-editor' );\n\t\t\n\t\t\t\treplace_attr( $row.find( 'input[name^=\"_llms\"], textarea[name^=\"_llms\"], select[name^=\"_llms\"]' ), 'id' );\n\t\t\t\treplace_attr( $row.find( 'input[name^=\"_llms\"], textarea[name^=\"_llms\"], select[name^=\"_llms\"]' ), 'name' );\n\t\t\t\treplace_attr( $row.find( '[data-controller]' ), 'data-controller' );\n\t\t\t\treplace_attr( $row.find( '[data-controller]' ), 'data-controller' );\n\t\t\t\treplace_attr( $row.find( 'button.wp-switch-editor' ), 'data-wp-editor-id' );\n\t\t\t\treplace_attr( $row.find( 'button.wp-switch-editor' ), 'id' );\n\t\t\t\treplace_attr( $row.find( '.wp-editor-tools' ), 'id' );\n\t\t\t\treplace_attr( $row.find( '.wp-editor-container' ), 'id' );\n\t\t\n\t\t\t\treturn $ed.attr( 'id' );\n\t\t\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * Save a single repeaters data to the server\n\t\t\t *\n\t\t\t * @since 3.11.0\n\t\t\t * @since 3.13.0 Unknown.\n\t\t\t *\n\t\t\t * @param {Object} $repeater jQuery selector for a repeater element.\n\t\t\t * @return {void}\n\t\t\t */\n\t\t\tsave: function( $repeater ) {\n\t\t\t\t$repeater.trigger( 'llms-repeater-before-save', { $el: $repeater } );\n\t\t\t\tthis.store( $repeater, 'save' );\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * Convert a repeater element into an array of objects that can be saved to the database\n\t\t\t *\n\t\t\t * @since 3.11.0\n\t\t\t *\n\t\t\t * @param {Object} $repeater A jQuery selector for a repeater element.\n\t\t\t * @return {void}\n\t\t\t */\n\t\t\tserialize: function( $repeater ) {\n\t\t\n\t\t\t\tvar rows = [];\n\t\t\n\t\t\t\t$repeater.find( '.llms-repeater-rows .llms-repeater-row' ).each( function() {\n\t\t\n\t\t\t\t\tvar obj = {};\n\t\t\n\t\t\t\t\t// Easy...\n\t\t\t\t\t$( this ).find( 'input[name^=\"_llms\"], select[name^=\"_llms\"]' ).each( function() {\n\t\t\t\t\t\tobj[ $( this ).attr( 'name' ) ] = $( this ).val();\n\t\t\t\t\t} );\n\t\t\n\t\t\t\t\t// Check if the textarea is a tinyMCE instance.\n\t\t\t\t\t$( this ).find( 'textarea[name^=\"_llms\"]' ).each( function() {\n\t\t\n\t\t\t\t\t\tvar name = $( this ).attr( 'name' );\n\t\t\n\t\t\t\t\t\t// If it is an editor.\n\t\t\t\t\t\tif ( tinyMCE.editors[ name ] ) {\n\t\t\t\t\t\t\tobj[ name ] = tinyMCE.editors[ name ].getContent();\n\t\t\t\t\t\t\t// Grab the val of the textarea.\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tobj[ name ] = $( this ).val();\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t} );\n\t\t\n\t\t\t\t\trows.push( obj );\n\t\t\n\t\t\t\t} );\n\t\t\n\t\t\t\treturn rows;\n\t\t\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * AJAX method for interacting with the repeater's handler on the server\n\t\t\t *\n\t\t\t * @since 3.11.0\n\t\t\t *\n\t\t\t * @param {Object} $repeater jQuery selector for the repeater element.\n\t\t\t * @param {string} action Action to call [save|load].\n\t\t\t * @param {Function} cb Callback function.\n\t\t\t * @return {void}\n\t\t\t */\n\t\t\tstore: function( $repeater, action, cb ) {\n\t\t\n\t\t\t\tcb = cb || function(){};\n\t\t\t\tvar self = this,\n\t\t\t\t\tdata = {\n\t\t\t\t\t\taction: $repeater.find( '.llms-repeater-field-handler' ).val(),\n\t\t\t\t\t\tstore_action: action,\n\t\t\t\t};\n\t\t\n\t\t\t\tif ( 'save' === action ) {\n\t\t\t\t\tdata.rows = self.serialize( $repeater );\n\t\t\t\t}\n\t\t\n\t\t\t\tLLMS.Ajax.call( {\n\t\t\t\t\tdata: data,\n\t\t\t\t\tbeforeSend: function() {\n\t\t\n\t\t\t\t\t\t$repeater.addClass( 'processing' );\n\t\t\t\t\t\tLLMS.Spinner.start( $repeater );\n\t\t\n\t\t\t\t\t},\n\t\t\t\t\tsuccess: function( r ) {\n\t\t\n\t\t\t\t\t\tcb( r );\n\t\t\t\t\t\tLLMS.Spinner.stop( $repeater );\n\t\t\t\t\t\t$repeater.removeClass( 'processing' );\n\t\t\n\t\t\t\t\t}\n\t\t\n\t\t\t\t} );\n\t\t\n\t\t\t}\n\t\t\n\t\t};\n\t\tthis.repeaters.init();\n\t\t\n\n\t\t/**\n\t\t * Initialize\n\t\t *\n\t\t * @since 3.0.0\n\t\t * @since 3.13.0 Unknown.\n\t\t * @since 4.19.0 Add `this.bind_mce_fixes()`.\n\t\t * @since 5.3.0 Bind editables when editable buttons are present in addition to anchors.\n\t\t *\n\t\t * @return void\n\t\t */\n\t\tthis.init = function() {\n\n\t\t\tvar self = this;\n\n\t\t\t$( '.llms-select2-post' ).each( function() {\n\t\t\t\tself.post_select( $( this ) );\n\t\t\t} );\n\n\t\t\t$( '.llms-collapsible-group' ).llmsCollapsible();\n\n\t\t\tthis.bind_tabs();\n\n\t\t\tthis.bind_mce_fixes();\n\n\t\t\t// bind everything better and less repetitively...\n\t\t\tvar bindings = [\n\t\t\t\t{\n\t\t\t\t\tselector: $( '.llms-datepicker' ),\n\t\t\t\t\tfunc: 'bind_datepickers',\n\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tselector: $( '.llms-select2' ),\n\t\t\t\t\tfunc: function( $selector ) {\n\t\t\t\t\t\t$selector.llmsSelect2( {\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t} );\n\t\t\t\t\t},\n\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tselector: $( '.llms-select2-student' ),\n\t\t\t\t\tfunc: function( $selector ) {\n\t\t\t\t\t\t$selector.llmsStudentsSelect2();\n\t\t\t\t\t}\n\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tselector: $( 'input[type=\"checkbox\"][data-controls]' ),\n\t\t\t\t\tfunc: 'bind_cb_controllers',\n\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tselector: $( '[data-is-controller]' ),\n\t\t\t\t\tfunc: 'bind_controllers',\n\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tselector: $( '.llms-table' ),\n\t\t\t\t\tfunc: 'bind_tables',\n\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tselector: $( '.llms-merge-code-wrapper' ),\n\t\t\t\t\tfunc: 'bind_merge_code_buttons',\n\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tselector: $( 'a.llms-editable, button.llms-editable' ),\n\t\t\t\t\tfunc: 'bind_editables',\n\t\t\t},\n\t\t\t];\n\n\t\t\t// bind all the bindables but don't bind things in repeaters\n\t\t\t$.each( bindings, function( index, obj ) {\n\n\t\t\t\tif ( obj.selector.length ) {\n\n\t\t\t\t\t// reduce the selector to exclude items in a repeater\n\t\t\t\t\tvar reduced = obj.selector.filter( function() {\n\t\t\t\t\t\treturn ( 0 === $( this ).closest( '.llms-repeater-model' ).length );\n\t\t\t\t\t} );\n\n\t\t\t\t\t// bind by string\n\t\t\t\t\tif ( 'string' === typeof obj.func ) {\n\t\t\t\t\t\tself[ obj.func ]( reduced );\n\t\t\t\t\t}\n\t\t\t\t\t// bind by an anonymous function\n\t\t\t\t\telse if ( 'function' === typeof obj.func ) {\n\t\t\t\t\t\tobj.func( reduced );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\t// if a post type is set & a bind exists for it, bind it\n\t\t\tif ( window.llms.post.post_type ) {\n\n\t\t\t\tvar func = 'bind_' + window.llms.post.post_type;\n\n\t\t\t\tif ( 'function' === typeof this[func] ) {\n\n\t\t\t\t\tthis[func]();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * Bind checkboxes that control the display of other elements\n\t\t *\n\t\t * @param obj $controllers jQuery selector for checkboxes to be bound as checkbox controllers\n\t\t * @return void\n\t\t * @since 3.0.0\n\t\t * @version 3.11.0\n\t\t */\n\t\tthis.bind_cb_controllers = function( $controllers ) {\n\n\t\t\t$controllers = $controllers || $( 'input[type=\"checkbox\"][data-controls]' );\n\n\t\t\t$controllers.each( function() {\n\n\t\t\t\tvar $cb = $( this ),\n\t\t\t\t\t$controlled = $( $cb.attr( 'data-controls' ) ).closest( '.llms-mb-list' );\n\n\t\t\t\t$cb.on( 'change', function() {\n\n\t\t\t\t\tif ( $( this ).is( ':checked' ) ) {\n\n\t\t\t\t\t\t$controlled.slideDown( 200 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t$controlled.slideUp( 200 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\t$cb.trigger( 'change' );\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Bind elements that control the display of other elements\n\t\t *\n\t\t * @param obj $controllers jQuery selector for elements to be bound as checkbox controllers\n\t\t * @return void\n\t\t * @since 3.0.0\n\t\t * @version 3.11.0\n\t\t */\n\t\tthis.bind_controllers = function( $controllers ) {\n\n\t\t\t$controllers = $controllers || $( '[data-is-controller]' );\n\n\t\t\t$controllers.each( function() {\n\n\t\t\t\tvar $el = $( this ),\n\t\t\t\t\t$controlled = $( '[data-controller=\"#' + $el.attr( 'id' ) + '\"]' ),\n\t\t\t\t\tval;\n\n\t\t\t\t$el.on( 'change', function() {\n\n\t\t\t\t\tif ( 'checkbox' === $el.attr( 'type' ) ) {\n\n\t\t\t\t\t\tval = $el.is( ':checked' ) ? $el.val() : 'false';\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tval = $el.val();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t$controlled.each( function() {\n\n\t\t\t\t\t\tvar possible = $( this ).attr( 'data-controller-value' ),\n\t\t\t\t\t\t\tvals = [];\n\n\t\t\t\t\t\tif ( -1 !== possible.indexOf( ',' ) ) {\n\n\t\t\t\t\t\t\tvals = possible.split( ',' );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvals.push( possible );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( -1 !== vals.indexOf( val ) ) {\n\n\t\t\t\t\t\t\t$( this ).slideDown( 200 );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t$( this ).slideUp( 200 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t} );\n\n\t\t\t\t$el.trigger( 'change' );\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Bind a single datepicker element\n\t\t *\n\t\t * @param obj $el jQuery selector for the input to bind the datepicker to\n\t\t * @return void\n\t\t * @since 3.0.0\n\t\t * @version 3.10.0\n\t\t */\n\t\tthis.bind_datepicker = function( $el ) {\n\t\t\tvar format = $el.attr( 'data-format' ) || 'mm/dd/yy',\n\t\t\t\tmaxDate = $el.attr( 'data-max-date' ) || null,\n\t\t\t\tminDate = $el.attr( 'data-min-date' ) || null;\n\t\t\t$el.datepicker( {\n\t\t\t\tdateFormat: format,\n\t\t\t\tmaxDate: maxDate,\n\t\t\t\tminDate: minDate,\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Bind all LifterLMS datepickers\n\t\t *\n\t\t * @param obj $datepickers jQuery selector for the elements to bind\n\t\t * @return void\n\t\t * @since 3.0.0\n\t\t * @version 3.11.0\n\t\t */\n\t\tthis.bind_datepickers = function( $datepickers ) {\n\n\t\t\tvar self = this;\n\n\t\t\t$datepickers = $datepickers || $( '.llms-datepicker' );\n\n\t\t\t$datepickers.each( function() {\n\t\t\t\tself.bind_datepicker( $( this ) );\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Bind llms-editable metabox fields and related dom interactions\n\t\t *\n\t\t * @since 3.10.0\n\t\t * @since 3.28.0 Unknown.\n\t\t * @since 5.3.0 Bind editables when editable buttons are present in addition to anchors.\n\t\t *\n\t\t * @return void\n\t\t */\n\t\tthis.bind_editables = function() {\n\n\t\t\tvar self = this;\n\n\t\t\tfunction make_editable( $field ) {\n\n\t\t\t\tvar $label = $field.find( 'label' ).clone(),\n\t\t\t\t\tname = $field.attr( 'data-llms-editable' ),\n\t\t\t\t\ttype = $field.attr( 'data-llms-editable-type' ),\n\t\t\t\t\trequired = $field.attr( 'data-llms-editable-required' ) || 'no',\n\t\t\t\t\tval = $field.attr( 'data-llms-editable-value' ),\n\t\t\t\t\t$input;\n\n\t\t\t\trequired = ( 'yes' === required ) ? ' required=\"required\"' : '';\n\n\t\t\t\tif ( 'select' === type ) {\n\n\t\t\t\t\tvar options = JSON.parse( $field.attr( 'data-llms-editable-options' ) ),\n\t\t\t\t\t\tselected;\n\n\t\t\t\t\t$input = $( '<select name=\"' + name + '\"' + required + ' />' );\n\t\t\t\t\tfor ( var key in options ) {\n\t\t\t\t\t\tselected = val === key ? ' selected=\"selected\"' : '';\n\t\t\t\t\t\t$input.append( '<option value=\"' + key + '\"' + selected + '>' + options[ key ] + '</option>' );\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( 'datetime' === type ) {\n\n\t\t\t\t\t$input = $( '<div class=\"llms-datetime-field\" />' );\n\n\t\t\t\t\tval = JSON.parse( val );\n\t\t\t\t\tvar format = $field.attr( 'data-llms-editable-date-format' ) || '',\n\t\t\t\t\t\tmin_date = $field.attr( 'data-llms-editable-date-min' ) || '',\n\t\t\t\t\t\tmax_date = $field.attr( 'data-llms-editable-date-max' ) || '';\n\n\t\t\t\t\t$picker = $( '<input class=\"llms-date-input llms-datepicker\" data-format=\"' + format + '\" data-max-date=\"' + max_date + '\" data-min-date=\"' + min_date + '\" name=\"' + name + '[date]\" type=\"text\" value=\"' + val.date + '\">' );\n\t\t\t\t\tself.bind_datepicker( $picker );\n\t\t\t\t\t$input.append( $picker );\n\t\t\t\t\t$input.append( '<em>@</em>' );\n\n\t\t\t\t\t$input.append( '<input class=\"llms-time-input\" max=\"23\" min=\"0\" name=\"' + name + '[hour]\" type=\"number\" value=\"' + val.hour + '\">' );\n\t\t\t\t\t$input.append( '<em>:</em>' );\n\t\t\t\t\t$input.append( '<input class=\"llms-time-input\" max=\"59\" min=\"0\" name=\"' + name + '[minute]\" type=\"number\" value=\"' + val.minute + '\">' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t$input = $( '<input name=\"' + name + '\" type=\"' + type + '\" value=\"' + val + '\"' + required + '>' );\n\t\t\t\t}\n\n\t\t\t\t$field.empty().append( $label ).append( $input );\n\t\t\t\tif ( 'select' === type ) {\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\t$input.trigger( 'change' );\n\t\t\t\t\t}, 100 );\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t\t$( 'a.llms-editable, button.llms-editable' ).on( 'click', function( e ) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\tvar $btn = $( this ),\n\t\t\t\t\t$fields;\n\n\t\t\t\tif ( $btn.attr( 'data-fields' ) ) {\n\t\t\t\t\t$fields = $( $btn.attr( 'data-fields' ) );\n\t\t\t\t} else {\n\t\t\t\t\t$fields = $btn.closest( '.llms-metabox-section' ).find( '[data-llms-editable]' );\n\t\t\t\t}\n\n\t\t\t\t$btn.remove();\n\n\t\t\t\t$fields.each( function() {\n\t\t\t\t\tmake_editable( $( this ) );\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Bind Engagement post type JS\n\t\t *\n\t\t * @return void\n\t\t * @since 3.1.0\n\t\t * @version 3.1.0\n\t\t */\n\t\tthis.bind_llms_engagement = function() {\n\n\t\t\tvar self = this;\n\n\t\t\t// when the engagement type changes we need to do some things to the UI\n\t\t\t$( '#_llms_engagement_type' ).on( 'change', function() {\n\n\t\t\t\t$( '#_llms_engagement' ).trigger( 'llms-engagement-type-change', $( this ).val() );\n\n\t\t\t} );\n\n\t\t\t// custom trigger when called when the engagement type changes\n\t\t\t$( '#_llms_engagement' ).on( 'llms-engagement-type-change', function( e, engagement_type ) {\n\n\t\t\t\tvar $select = $( this );\n\n\t\t\t\tswitch ( engagement_type ) {\n\n\t\t\t\t\t/**\n\t\t\t\t\t * core engagements related to a CPT\n\t\t\t\t\t */\n\t\t\t\t\tcase 'achievement':\n\t\t\t\t\tcase 'certificate':\n\t\t\t\t\tcase 'email':\n\n\t\t\t\t\t\tvar cpt = 'llms_' + engagement_type;\n\n\t\t\t\t\t\t$select.val( null ).attr( 'data-post-type', cpt ).trigger( 'change' );\n\t\t\t\t\t\tself.post_select( $select );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Allow other plugins and developers to hook into the engagement type change action\n\t\t\t\t\t */\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t$select.trigger( 'llms-engagement-type-change-external', engagement_type );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Actions for memberships\n\t\t *\n\t\t * @since 3.0.0\n\t\t * @since 3.30.0 Made autoenroll table sortable, added AJAX save for adding new courses.\n\t\t * @version 3.30.0\n\t\t *\n\t\t * @return void\n\t\t */\n\t\tthis.bind_llms_membership = function() {\n\n\t\t\tvar $table = $( '.llms-mb-list._llms_content_table' );\n\n\t\t\t/**\n\t\t\t * Hide/Show empty message header row depending on the number of rows in the tbody\n\t\t\t *\n\t\t\t * @since 3.30.0\n\t\t\t * @version 3.30.0\n\t\t\t *\n\t\t\t * @return void\n\t\t\t */\n\t\t\tfunction toggle_header_row() {\n\n\t\t\t\tvar $rows = $table.find( 'tbody tr' );\n\t\t\t\tif ( 1 === $rows.length ) {\n\t\t\t\t\t$rows.first().show();\n\t\t\t\t} else {\n\t\t\t\t\t$rows.first().hide();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Retrieve an array of course IDs in the table.\n\t\t\t *\n\t\t\t * @since 3.30.0\n\t\t\t * @version 3.30.0\n\t\t\t *\n\t\t\t * @return array\n\t\t\t */\n\t\t\tfunction get_course_ids() {\n\n\t\t\t\tvar courses = [];\n\t\t\t\t$table.find( 'tbody tr a[href=\"#llms-course-remove\"]' ).each( function() {\n\t\t\t\t\tcourses.push( $( this ).attr( 'data-id' ) );\n\t\t\t\t} );\n\t\t\t\treturn courses;\n\n\t\t\t}\n\n\t\t\t// On init, toggle the header row visibility.\n\t\t\ttoggle_header_row();\n\n\t\t\t// remove auto-enroll course\n\t\t\t$table.on( 'click', 'a[href=\"#llms-course-remove\"]', function( e ) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\tvar $el = $( this ),\n\t\t\t\t\t$row = $el.closest( 'tr' ),\n\t\t\t\t\t$container = $el.closest( '.llms-mb-list' );\n\n\t\t\t\tLLMS.Spinner.start( $container );\n\n\t\t\t\twindow.LLMS.Ajax.call( {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\taction: 'membership_remove_auto_enroll_course',\n\t\t\t\t\t\tcourse_id: $el.attr( 'data-id' ),\n\t\t\t\t\t},\n\t\t\t\t\tbeforeSend: function() {\n\n\t\t\t\t\t\t$container.find( 'p.error' ).remove();\n\n\t\t\t\t\t},\n\t\t\t\t\tsuccess: function( r ) {\n\n\t\t\t\t\t\tif ( r.success ) {\n\n\t\t\t\t\t\t\t$row.fadeOut( 200 );\n\t\t\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\t\t\t$row.remove();\n\t\t\t\t\t\t\t\ttoggle_header_row();\n\t\t\t\t\t\t\t}, 400 );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t$container.prepend( '<p class=\"error\">' + r.message + '</p>' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tLLMS.Spinner.stop( $container );\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t\t// bulk enroll all members into a course\n\t\t\t$table.on( 'click', 'a[href=\"#llms-course-bulk-enroll\"]', function( e ) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\tvar $el = $( this ),\n\t\t\t\t\t$row = $el.closest( 'tr' ),\n\t\t\t\t\t$container = $el.closest( '.llms-mb-list' );\n\n\t\t\t\tif ( ! window.confirm( LLMS.l10n.translate( 'Click okay to enroll all active members into the selected course. Enrollment will take place in the background and you may leave your site after confirmation. This action cannot be undone!' ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tLLMS.Spinner.start( $container );\n\n\t\t\t\twindow.LLMS.Ajax.call( {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\taction: 'bulk_enroll_membership_into_course',\n\t\t\t\t\t\tcourse_id: $el.attr( 'data-id' ),\n\t\t\t\t\t},\n\t\t\t\t\tbeforeSend: function() {\n\t\t\t\t\t\t$container.find( 'p.error' ).remove();\n\t\t\t\t\t},\n\t\t\t\t\tsuccess: function( r ) {\n\n\t\t\t\t\t\tif ( r.success ) {\n\n\t\t\t\t\t\t\t$el.replaceWith( '<strong style=\"float:right;\">' + r.data.message + ' </strong>' );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t$container.prepend( '<p class=\"error\">' + r.message + '</p>' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tLLMS.Spinner.stop( $container );\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t\t// Add an item to the autoenroll table on select.\n\t\t\t$( '#_llms_auto_enroll' ).on( 'change', function() {\n\n\t\t\t\tvar id = $( this ).val(),\n\t\t\t\t\ttitle = $( this ).find( 'option[value=\"' + $( this ).val() + '\"]' ).text();\n\n\t\t\t\t// If there's no ID\n\t\t\t\tif ( ! id ) {\n\t\t\t\t\treturn;\n\t\t\t\t\t// Prevent Dupes.\n\t\t\t\t} else if ( -1 !== get_course_ids().indexOf( id ) ) {\n\n\t\t\t\t\talert( LLMS.l10n.replace( '\"%s\" is already in the course list.', { '%s': title } ) )\n\n\t\t\t\t\t// reset the select field.\n\t\t\t\t\t$( this ).val( '' ).trigger( 'change' );\n\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tvar $table = $( '.llms-mb-list._llms_content_table' );\n\t\t\t\t\t$tr = $( '<tr />' );\n\n\t\t\t\t$tr.append( '<td><span class=\"llms-drag-handle\" style=\"color:#999;\"><i class=\"fa fa-ellipsis-v\" aria-hidden=\"true\" style=\"margin-right:2px;\"></i><i class=\"fa fa-ellipsis-v\" aria-hidden=\"true\"></i></span></td>' );\n\t\t\t\t$tr.append( '<td><a href=\"' + window.llms.admin_url + 'post.php?action=edit&post=' + id + '\">' + title + '</a></td>' );\n\t\t\t\t$tr.append( '<td><a class=\"llms-button-danger small\" data-id=\"' + id + '\" href=\"#llms-course-remove\" style=\"float:right;\">' + LLMS.l10n.translate( 'Remove course' ) + '</a><a class=\"llms-button-secondary small\" data-id=\"' + id + '\" href=\"#llms-course-bulk-enroll\" style=\"float:right;\">' + LLMS.l10n.translate( 'Enroll All Members' ) + '</a></td>' );\n\n\t\t\t\t// append the element to the table.\n\t\t\t\t$table.find( 'table tbody' ).append( $tr );\n\n\t\t\t\t// reset the select field.\n\t\t\t\t$( this ).val( '' ).trigger( 'change' );\n\n\t\t\t\t// Show the header row.\n\t\t\t\ttoggle_header_row();\n\n\t\t\t\t// trigger a save event.\n\t\t\t\t$table.trigger( 'llms-save-autoenroll-courses' );\n\n\t\t\t} );\n\n\t\t\t// Make autoenrollment table sortable.\n\t\t\t$table.find( 'table tbody' ).sortable( {\n\t\t\t\thandle: '.llms-drag-handle',\n\t\t\t\t// Save order on stop.\n\t\t\t\tstop: function( event, ui ) {\n\t\t\t\t\tui.item.closest( '.llms-mb-list' ).trigger( 'llms-save-autoenroll-courses' );\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\t// Save courses & course order.\n\t\t\t$table.on( 'llms-save-autoenroll-courses', function() {\n\n\t\t\t\tvar $container = $( this );\n\n\t\t\t\tLLMS.Spinner.start( $container );\n\n\t\t\t\twindow.LLMS.Ajax.call( {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\taction: 'llms_save_membership_autoenroll_courses',\n\t\t\t\t\t\tcourses: get_course_ids(),\n\t\t\t\t\t},\n\t\t\t\t\terror: function( jqxhr, code, error_msg ) {\n\t\t\t\t\t\talert( error_msg );\n\t\t\t\t\t},\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tLLMS.Spinner.stop( $container );\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Actions for ORDERS\n\t\t *\n\t\t * @return void\n\t\t * @since 3.0.0\n\t\t * @version 3.28.0\n\t\t */\n\t\tthis.bind_llms_order = function() {\n\n\t\t\t$( 'button[name=\"llms-refund-toggle\"]' ).on( 'click', function() {\n\n\t\t\t\tvar $btn = $( this ),\n\t\t\t\t\t$row = $btn.closest( 'tr' ),\n\t\t\t\t\ttxn_id = $row.attr( 'data-transaction-id' ),\n\t\t\t\t\trefundable_amount = $btn.attr( 'data-refundable' ),\n\t\t\t\t\tgateway_supports = ( '1' === $btn.attr( 'data-gateway-supports' ) ) ? true : false,\n\t\t\t\t\tgateway_title = $btn.attr( 'data-gateway' ),\n\t\t\t\t\t$new_row = $( '#llms-txn-refund-model .llms-txn-refund-form' ).clone(),\n\t\t\t\t\t$gateway_btn = $new_row.find( '.gateway-btn' );\n\n\t\t\t\t// configure and add the form\n\t\t\t\tif ( 'remove' !== $btn.attr( 'data-action' ) ) {\n\n\t\t\t\t\t$btn.text( LLMS.l10n.translate( 'Cancel' ) );\n\t\t\t\t\t$btn.attr( 'data-action', 'remove' );\n\t\t\t\t\t$new_row.find( 'input' ).removeAttr( 'disabled' );\n\t\t\t\t\t$new_row.find( 'input[name=\"llms_refund_amount\"]' ).attr( 'max', refundable_amount );\n\t\t\t\t\t$new_row.find( 'input[name=\"llms_refund_txn_id\"]' ).val( txn_id );\n\n\t\t\t\t\tif ( gateway_supports ) {\n\t\t\t\t\t\t$gateway_btn.find( '.llms-gateway-title' ).text( gateway_title );\n\t\t\t\t\t\t$gateway_btn.show();\n\t\t\t\t\t}\n\n\t\t\t\t\t$row.after( $new_row );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t$btn.text( LLMS.l10n.translate( 'Refund' ) );\n\t\t\t\t\t$btn.attr( 'data-action', '' );\n\t\t\t\t\t$row.next( 'tr' ).remove();\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\t$( 'button[name=\"llms-manual-txn-toggle\"]' ).on( 'click', function() {\n\n\t\t\t\tvar $btn = $( this ),\n\t\t\t\t\t$row = $btn.closest( 'tr' ),\n\t\t\t\t\t$new_row = $( '#llms-manual-txn-model .llms-manual-txn-form' ).clone();\n\n\t\t\t\t// configure and add the form\n\t\t\t\tif ( 'remove' !== $btn.attr( 'data-action' ) ) {\n\n\t\t\t\t\t$btn.text( LLMS.l10n.translate( 'Cancel' ) );\n\t\t\t\t\t$btn.attr( 'data-action', 'remove' );\n\t\t\t\t\t$new_row.find( 'input' ).removeAttr( 'disabled' );\n\n\t\t\t\t\t$row.after( $new_row );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t$btn.text( LLMS.l10n.translate( 'Record a Manual Payment' ) );\n\t\t\t\t\t$btn.attr( 'data-action', '' );\n\t\t\t\t\t$row.next( 'tr' ).remove();\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\t// cache the original value when focusing on a payment gateway select\n\t\t\t// used below so the original field related data can be restored when switching back to the originally selected gateway\n\t\t\t$( '.llms-metabox' ).one( 'focus', '.llms-metabox-field[data-llms-editable=\"payment_gateway\"] select', function() {\n\n\t\t\t\tif ( ! $( this ).attr( 'data-original-value' ) ) {\n\t\t\t\t\t$( this ).attr( 'data-original-value', $( this ).val() );\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\t// when selecting a new payment gateway get field data and update the dom to only display the fields\n\t\t\t// supported/needed by the newly selected gateway\n\t\t\t$( '.llms-metabox' ).on( 'change', '.llms-metabox-field[data-llms-editable=\"payment_gateway\"] select', function() {\n\n\t\t\t\tvar $select = $( this ),\n\t\t\t\t\tgateway = $select.val(),\n\t\t\t\t\tdata = JSON.parse( $select.closest( '.llms-metabox-field' ).attr( 'data-gateway-fields' ) ),\n\t\t\t\t\tgateway_data = data[ gateway ];\n\n\t\t\t\tfor ( var field in gateway_data ) {\n\n\t\t\t\t\tvar $field = $( 'input[name=\"' + gateway_data[ field ].name + '\"]' ),\n\t\t\t\t\t\t$wrap = $field.closest( '.llms-metabox-field' );\n\n\t\t\t\t\t// if the field is enabled show it the field and, if we're switching back to the originally selected\n\t\t\t\t\t// gateway, reload the value from the dom\n\t\t\t\t\tif ( gateway_data[ field ].enabled ) {\n\n\t\t\t\t\t\t$wrap.show();\n\t\t\t\t\t\t$field.attr( 'required', 'required' );\n\t\t\t\t\t\t$field.removeAttr( 'disabled' );\n\n\t\t\t\t\t\tif ( gateway === $select.attr( 'data-original-value' ) ) {\n\t\t\t\t\t\t\t$field.val( $wrap.attr( 'data-llms-editable-value' ) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// otherwise hide the field\n\t\t\t\t\t\t// this will ensure it gets updated in the database\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// always clear the value when switching\n\t\t\t\t\t\t// ensures that outdated data is removed from the DB\n\t\t\t\t\t\t$field.attr( 'value', '' );\n\n\t\t\t\t\t\t$field.removeAttr( 'required' );\n\t\t\t\t\t\t// $field.attr( 'disabled', 'disabled' );\n\t\t\t\t\t\t$wrap.hide();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Re-initializes TinyMCE Editors found within metaboxes\n\t\t *\n\t\t * @since 4.19.0\n\t\t * @since 4.21.2 Improve early return dependency check.\n\t\t *\n\t\t * @link https://github.com/gocodebox/lifterlms/issues/1553\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tthis.bind_mce_fixes = function() {\n\n\t\t\t// We need `wp.data` to proceed.\n\t\t\tif ( undefined === wp.data || null === wp.data.select( 'core/edit-post' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tLLMS.wait_for(\n\t\t\t\tfunction() {\n\t\t\t\t\treturn undefined !== wp.data.select( 'core/edit-post' ).getMetaBoxesPerLocation( 'normal' );\n\t\t\t\t},\n\t\t\t\tfunction() {\n\n\t\t\t\t\tvar shouldRun = false;\n\t\t\t\t\t\tfind = [ 'lifterlms-product', 'lifterlms-membership', 'lifterlms-course-options' ];\n\t\t\t\t\t\tmetaboxes = wp.data.select( 'core/edit-post' ).getMetaBoxesPerLocation( 'normal' );\n\n\t\t\t\t\t// Determine if we should run the fixer.\n\t\t\t\t\tfor ( var key in metaboxes ) {\n\t\t\t\t\t\tif ( -1 !== find.indexOf( metaboxes[ key ].id ) ) {\n\t\t\t\t\t\t\tshouldRun = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! shouldRun ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fix them.\n\t\t\t\t\tvar toFix = {};\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Determines if the TinyMCE instance should be fixed.\n\t\t\t\t\t *\n\t\t\t\t\t * @since 4.19.0\n\t\t\t\t\t *\n\t\t\t\t\t * @param {string} key Editor Key. This is the HTML id attribute of the textarea powering the editor instance.\n\t\t\t\t\t * @return {Boolean} Returns `true` if the editor should be fixed.\n\t\t\t\t\t */\n\t\t\t\t\tfunction llmsShouldFixTinyMCEEditor( key ) {\n\t\t\t\t\t\treturn ( 'excerpt' === key || -1 !== key.indexOf( 'llms' ) || -1 !== key.indexOf( 'lifterlms' ) )\n\t\t\t\t\t};\n\n\t\t\t\t\t// Loop through all the loaded editors.\n\t\t\t\t\tfor ( var key in tinyMCE.EditorManager.editors ) {\n\n\t\t\t\t\t\t// Mark LifterLMS editors to be fixed & de-init the editor.\n\t\t\t\t\t\tif ( llmsShouldFixTinyMCEEditor( key ) ) {\n\n\t\t\t\t\t\t\ttoFix[ key ] = tinyMCE.EditorManager.get( key );\n\t\t\t\t\t\t\ttinyMCE.EditorManager.execCommand( 'mceRemoveEditor', true, key );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// If we remove and re-init immediately it doesn't work, so we'll wait a bit and then re-init them all.\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tfor ( var key in toFix ) {\n\t\t\t\t\t\t\ttinyMCE.EditorManager.init( toFix[ key ].settings || tinyMCE.EditorManager.settings );\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 500 );\n\n\t\t\t\t}\n\t\t\t);\n\n\t\t};\n\n\t\t/**\n\t\t * Binds custom llms merge code buttons\n\t\t *\n\t\t * @return void\n\t\t * @since 3.1.0\n\t\t * @version 3.9.2\n\t\t */\n\t\tthis.bind_merge_code_buttons = function( $wrappers ) {\n\n\t\t\t$wrappers = $wrappers || $( '.llms-merge-code-wrapper' );\n\n\t\t\t$wrappers.find( '.llms-merge-code-button' ).on( 'click', function() {\n\n\t\t\t\t$( this ).next( '.llms-merge-codes' ).toggleClass( 'active' );\n\n\t\t\t} );\n\n\t\t\t$wrappers.find( '.llms-merge-codes li' ).on( 'click', function() {\n\n\t\t\t\tvar $el = $( this ),\n\t\t\t\t\t$parent = $el.closest( '.llms-merge-codes' ),\n\t\t\t\t\ttarget = $parent.attr( 'data-target' ),\n\t\t\t\t\tcode = $el.attr( 'data-code' );\n\n\t\t\t\t// dealing with a tinymce instance\n\t\t\t\tif ( -1 === target.indexOf( '#' ) ) {\n\n\t\t\t\t\tvar editor = window.tinymce.editors[ target ];\n\t\t\t\t\tif ( editor ) {\n\t\t\t\t\t\teditor.insertContent( code );\n\t\t\t\t\t} // fallback in case we can't access the editor directly\n\t\t\t\t\telse {\n\t\t\t\t\t\talert( LLMS.l10n.translate( 'Copy this code and paste it into the desired area' ) + ': ' + code );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\t// dealing with a DOM id\n\t\t\t\telse {\n\n\t\t\t\t\t$( target ).val( $( target ).val() + code );\n\n\t\t\t\t}\n\n\t\t\t\t$parent.removeClass( 'active' );\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Bind metabox tabs\n\t\t *\n\t\t * @return void\n\t\t * @since 3.0.0\n\t\t * @version 3.0.0\n\t\t */\n\t\tthis.bind_tabs = function() {\n\t\t\t$( '.llms-nav-tab-wrapper .tabs li' ).on( 'click', function() {\n\n\t\t\t\tvar $btn = $( this ),\n\t\t\t\t\t$metabox = $btn.closest( '.llms-mb-container' ),\n\t\t\t\t\ttab_id = $btn.attr( 'data-tab' );\n\n\t\t\t\t$btn.siblings().removeClass( 'llms-active' );\n\n\t\t\t\t$metabox.find( '.tab-content' ).removeClass( 'llms-active' );\n\n\t\t\t\t$btn.addClass( 'llms-active' );\n\t\t\t\t$( '#' + tab_id ).addClass( 'llms-active' );\n\n\t\t\t} );\n\t\t};\n\n\t\t/**\n\t\t * Enable WP Post Table searches for applicable select2 boxes\n\t\t *\n\t\t * @since 3.0.0\n\t\t * @since 3.21.0 Unknown.\n\t\t * @since 6.0.0 Show element at 100% width if not displaying a view button.\n\t\t *\n\t\t * @return void\n\t\t */\n\t\tthis.post_select = function( $el ) {\n\n\t\t\tvar multi = 'multiple' === $el.attr( 'multiple' ),\n\t\t\t\tnoViewBtn = $el.attr( 'data-no-view-button' );\n\n\t\t\t$el.llmsPostsSelect2( {\n\t\t\t\twidth: multi || noViewBtn ? '100%' : '65%',\n\t\t\t} );\n\n\t\t\tif ( multi || noViewBtn ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// add a \"View\" button to see what the selected page looks like\n\t\t\tvar msg = LLMS.l10n.translate( 'View' ),\n\t\t\t\t$btn = $( '<a class=\"llms-button-secondary small\" style=\"margin-left:5px;\" target=\"_blank\" href=\"#\">' + msg + ' <i class=\"fa fa-external-link\" aria-hidden=\"true\"></i></a>' );\n\t\t\t$el.next( '.select2' ).after( $btn );\n\n\t\t\t$el.on( 'change', function() {\n\t\t\t\tvar id = $( this ).val();\n\t\t\t\tif ( id ) {\n\t\t\t\t\t$btn.attr( 'href', '/?p=' + id ).show();\n\t\t\t\t} else {\n\t\t\t\t\t$btn.hide();\n\t\t\t\t}\n\t\t\t} ).trigger( 'change' );\n\n\t\t};\n\n\t\t/**\n\t\t * Bind dom events for .llms-tables\n\t\t *\n\t\t * @return void\n\t\t * @since 3.0.0\n\t\t * @version 3.0.0\n\t\t */\n\t\tthis.bind_tables = function() {\n\n\t\t\t$( '.llms-table button[name=\"llms-expand-table\"]' ).on( 'click', function() {\n\n\t\t\t\tvar $btn = $( this ),\n\t\t\t\t\t$table = $btn.closest( '.llms-table' )\n\n\t\t\t\t// switch the text on the button if alt text is found\n\t\t\t\tif ( $btn.attr( 'data-text' ) ) {\n\t\t\t\t\tvar text = $btn.text();\n\t\t\t\t\t$btn.text( $btn.attr( 'data-text' ) );\n\t\t\t\t\t$btn.attr( 'data-text', text );\n\t\t\t\t}\n\n\t\t\t\t// switch classes on all expandable elements\n\t\t\t\t$table.find( '.expandable' ).each( function() {\n\n\t\t\t\t\tif ( $( this ).hasClass( 'closed' ) ) {\n\t\t\t\t\t\t$( this ).addClass( 'opened' ).removeClass( 'closed' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$( this ).addClass( 'closed' ).removeClass( 'opened' );\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t};\n\n\t\t// go\n\t\tthis.init();\n\n\t};\n\n\t// initialize the object\n\twindow.llms.metaboxes = new Metaboxes();\n\n} )( jQuery );\n"],"sourceRoot":"../../js"}