Changeset 2953538
- Timestamp:
- 08/15/2023 01:02:36 AM (3 years ago)
- Location:
- tip-jar-wp/trunk
- Files:
-
- 13 edited
-
assets/libraries/mpwpadmin/js/build/mpwpadmin.js.map (modified) (1 diff)
-
includes/admin/js/build/classic-editor/tip-form-classic-editor.js.map (modified) (1 diff)
-
includes/admin/js/build/gutenberg/blocks/tip-form.js.map (modified) (1 diff)
-
includes/admin/js/build/mpwpadmin-validation-functions.js.map (modified) (1 diff)
-
includes/admin/js/build/tip-jar-wp-admin.js.map (modified) (1 diff)
-
includes/admin/js/build/tip-jar-wp-mpwpadmin-custom-scripts.js.map (modified) (1 diff)
-
includes/frontend/css/build/tip-jar-wp.css (modified) (1 diff)
-
includes/frontend/css/src/tip-jar-wp.css (modified) (2 diffs)
-
includes/frontend/php/frontend-queries.php (modified) (2 diffs)
-
includes/misc-functions/misc-functions.php (modified) (1 diff)
-
languages/tip-jar-wp.pot (modified) (2 diffs)
-
readme.txt (modified) (3 diffs)
-
tip-jar-wp.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tip-jar-wp/trunk/assets/libraries/mpwpadmin/js/build/mpwpadmin.js.map
r2449460 r2953538 1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:/// /Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/assets/libraries/mpwpadmin/js/src/index.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/assets/libraries/mpwpadmin/js/src/welcome-view.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/assets/libraries/mpwpadmin/js/src/health-check-view.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/assets/libraries/mpwpadmin/js/src/checkbox-field.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/assets/libraries/mpwpadmin/js/src/file-upload-field.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/assets/libraries/mpwpadmin/js/src/input-field.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/assets/libraries/mpwpadmin/js/src/list-view.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/assets/libraries/mpwpadmin/js/src/select-field.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/assets/libraries/mpwpadmin/js/src/settings-view.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/assets/libraries/mpwpadmin/js/src/textarea-field.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/assets/libraries/mpwpadmin/js/src/main.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","window","MP_WP_Admin_Welcome_View","_React$Component","props","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","_inherits","_createClass","render_sections","sections","mapper","section_key","DynamicReactComponent","eval","push","React","createElement","className","main_component","section_info","map","view","index","breadcrumbs","the_breadcrumbs","view_slug","breadcrumb","current_view_class","render_breadcrumbs","view_info","Component","MP_WP_Admin_Instruction","_React$Component2","instruction","MP_WP_Admin_Health_Check_View","_this","state","lightbox_open","title","body","_this2","setState","total_unhealthy_checks","health_check_key","event","_this3","Promise","resolve","reject","set_all_current_visual_states","_defineProperty","then","suffix","_this4","set_lightbox_for_health_check","render_lightbox","health_checks","wizard_steps","wizard_step_vars","next_wizard_step","get_next_wizard_step_key","dynamic_react_component","data","slug_suffix","this_lightbox_slug","next_lightbox_slug","fixing_it_again","MP_WP_Admin_Lightbox","slug","custom_react_component","current_wizard_step_key","current_key_match_found","wizard_step_key","unhealthy_icon","_this5","onClick","reset_lightbox_for_health_check","render_unhealthy_icon","render_health_checks","health_check_vars","render_wizard_steps","MP_WP_Admin_Checkbox_Field","props_loaded","input_value","saved_status","in_initial_state","validated","client_validation_callback_function","default_value","error_code","input_delay","get_input_field_class","_assertThisInitialized","get_input_instruction_class","get_input_instruction_message","set_state","saved_value","state_key","state_value","postData","FormData","append","relation_id","id","server_validation_callback_function","nonce","this_component","fetch","server_api_endpoint_url","method","credentials","headers","response","status","json","success","update_context","result","console","log","catch","err","current_instruction","get_current_instruction_key","instruction_codes","instruction_type","instruction_message","target","checked","is_validated","old_input_value","new_input_value","clearTimeout","setTimeout","save_value_to_server","replace_input_field_with","inputProps","class_name","handle_input_change","placeholder","step","min","max","disabled","selected_text","unselected_text","render_help_button","help_text","Fragment","toggle_help_lightbox","render","react_component","component_data","help_lightbox_output","render_field","MP_WP_Admin_File_Upload_Field","file_preview","use_wp_media_dialog","fileInput","createRef","unique_instruction_message","details","file_to_upload","current","files","URL","createObjectURL","wp_media_dialog_class","style","backgroundImage","mp_core_file_frame","wp","media","button","text","multiple","on","attachment","toJSON","url","split","pop","open","wp_open_media_dialog","upload_file_text","remove_file","remove_file_text","render_file_upload_control_buttons","MP_WP_Admin_Input_Field","type","MP_WP_Admin_List_View","current_view","map_of_visual_states","rows","columns","current_page","total_items","items_per_page","search_term","current_single_item","fetching_single_item","get_single_item_from_server","variable","get_rows_from_server","mpwpadmin_set_visual_state_of_component","component","default_visual_states","parent_in_view","parent_not_in_view","name_of_visual_state_variable","keys","all_current_visual_states","second_slug","third_slug","item_to_fetch","server_api_endpoint_url_single_item","single_item","single_data_view","list_view","Math","ceil","scope","render_rows","td_mapper","first","row","handle_single_row_click","strings","uppercase_search","onChange","handle_search_change","uppercase_items","lowercase_per","lowercase_page","handle_items_per_page_change","uppercase_page","get_total_pages","handle_page_number_change","lowercase_of","render_columns","MP_WP_Admin_Spinner","render_single_data_view","react_component_single_item_view","hidden","handle_list_view_button_click","back_to_list_view","_this6","render_search","render_pagination","render_list_table","render_list_view","MP_WP_Admin_Select_Field","matching_values","initially_available_values","options_hidden","find_matching_available_values","available_values","fetching_status","JSON","stringify","action","fetch_options_endpoint","mpwpadmin_search_term","mpwpadmin_fetch_options_nonce","Content-Type","arguments","length","undefined","option_key","options","toggle_options","render_each_option","no_matching_values_text","handle_option_click","option","handle_keypress","_extends","render_options","MP_WP_Admin_Settings_View","render_settings","settings","doing_sub_setting","context_id","refresh_sections","MP_WP_Admin_TextArea_Field","mpwpadmin_visual_state_should_become","visual_state_should_become","default_visual_state","level","_typeof","mpwpadmin_get_default_map_of_visual_states","new_map_of_visual_states","previous_level","temp","mp_wp_admin_admin_lightbox_vars","description","MP_WP_Admin","all_initial_visual_states","general_config","lightbox_initial_visual_state","lightbox_visual_state","single_page_app_base_url","base_url","dom_node","get_current_view_class","addEventListener","e","on_web_history_change","maybe_refresh_parent_dom_node","mpwpadmin_refresh_nonce","server_endpoint_url_refresh_mpwpadmin","ReactDOM","findDOMNode","parentNode","obj","new_url_path","depth","component_visual_state","build_new_url_path","new_state","new_lightbox_state","_history$pushState","screen","width","scrollIntoView","behavior","new_url","history","pushState","app_slug","history_state","initial_lightbox_visual_state","view_in_question","views","MP_WP_Admin_View_Button","is_top_level","render_actual_views","doing_sub_tabs","current_visual_state","sub_tabs","render_left_side_navigation_buttons","sub_menus","get_current_button_class","handle_button_click","visual_name","render_submenu","_React$Component3","has_mounted","handle_key_press","toggle_lightbox","handle_open_status_based_on_url","document","removeEventListener","keyCode","aria-label","handle_close_button_click","default_icon","src","render_icon","render_title","render_component","render_body","get_lightbox_visible_class","render_close_button","render_based_on_mode","_React$Component4","apply","Error","parent_component_is_in_view"],"mappings":"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","file":"./assets/libraries/mpwpadmin/js/build/mpwpadmin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import './welcome-view.js';\nimport './health-check-view.js';\nimport './checkbox-field.js';\nimport './file-upload-field.js';\nimport './input-field.js';\nimport './list-view.js';\nimport './select-field.js';\nimport './settings-view.js';\nimport './textarea-field.js';\nimport './main.js';\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\n// This component outputs the settings view and its contents\nwindow.MP_WP_Admin_Welcome_View = class MP_WP_Admin_Welcome_View extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\t}\n\n\trender_sections( sections ) {\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var section_key in sections) {\n\n\t\t\tif ( sections[section_key] ) {\n\t\t\t\tvar DynamicReactComponent = eval( sections[section_key]['react_component'] );\n\n\t\t\t\tmapper.push(\n\t\t\t\t\t<div key={ section_key } className={ 'mpwpadmin-welcome-section-container ' + 'mpwpadmin-welcome-section-' + section_key + '-container' }>\n\t\t\t\t\t\t<h4>{ sections[section_key]['visual_name'] }</h4>\n\t\t\t\t\t\t<p>{ sections[section_key]['description'] }</p>\n\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\tsection_info={ sections[section_key] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\n\t\t}\n\n\t\t// This lets us output the health checks one by one\n\t\treturn mapper.map((view, index) => {\n\t\t\treturn view;\n\t\t})\n\n\t}\n\n\trender_breadcrumbs() {\n\n\t\tvar breadcrumbs = this.props.the_breadcrumbs;\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in breadcrumbs) {\n\n\t\t\tif ( key == this.props.view_slug ) {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] }</span> )\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] } > </span> )\n\t\t\t}\n\n\t\t}\n\n\t\t// This lets us output the breadcrumbs one by one\n\t\treturn mapper.map((breadcrumb, index) => {\n\t\t\treturn breadcrumb;\n\t\t})\n\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-settings-view' + this.props.current_view_class }>\n\t\t\t\t<div className=\"mpwpadmin-breadcrumb\">\n\t\t\t\t\t<h2>{ this.render_breadcrumbs() }</h2>\n\t\t\t\t</div>\n\t\t\t\t{ this.render_sections( this.props.view_info.sections ) }\n\t\t\t</div>\n\t\t)\n\t}\n\n}\n\n\n// This component outputs the settings view and its contents\nwindow.MP_WP_Admin_Instruction = class MP_WP_Admin_Instruction extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-instruction' }>\n\t\t\t\t{ this.props.section_info.instruction }\n\t\t\t</div>\n\t\t)\n\t}\n\n}\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\n// This component outputs the settings view and its contents\nwindow.MP_WP_Admin_Health_Check_View = class MP_WP_Admin_Health_Check_View extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tlightbox_open: false,\n\t\t\ttitle: null,\n\t\t\tbody: null\n\t\t};\n\n\t}\n\n\tcomponentDidMount() {\n\n\t\tthis.setState( {\n\t\t\ttotal_unhealthy_checks: this.props.section_info.total_unhealthy_checks\n\t\t}, () => {\n\n\t\t\tif ( this.state.total_unhealthy_checks !== this.props.main_component.state.total_unhealthy_checks ) {\n\t\t\t\t// Set the number of unhealthy checks\n\t\t\t\tthis.props.main_component.setState( {\n\t\t\t\t\ttotal_unhealthy_checks: this.state.total_unhealthy_checks\n\t\t\t\t} );\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\tif ( this.state.total_unhealthy_checks !== this.props.main_component.state.total_unhealthy_checks ) {\n\t\t\t// Set the number of unhealthy checks\n\t\t\tthis.props.main_component.setState( {\n\t\t\t\ttotal_unhealthy_checks: this.state.total_unhealthy_checks\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tset_lightbox_for_health_check( health_check_key, event ) {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t\t[health_check_key]: {}\n\t\t\t} ).then( () => {\n\t\t\t\tresolve();\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\treset_lightbox_for_health_check( health_check_key, suffix, event ) {\n\n\t\t// Force the \"is_healthy\" paramater to be false before we load the lightbox for this health check\n\t\tthis.setState({\n\t\t\t[health_check_key + '_fixing_it_again']: true\n\t\t}, () => {\n\n\t\t\tthis.setState({\n\t\t\t\t[health_check_key + '_fixing_it_again']: false\n\t\t\t}, () => {\n\t\t\t\tthis.set_lightbox_for_health_check( health_check_key + suffix, event );\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\trender_lightbox( health_checks, health_check_key, suffix ) {\n\n\t\tvar wizard_steps = this.props.section_info.wizard_step_vars;\n\n\t\tvar next_wizard_step = this.get_next_wizard_step_key( wizard_steps, health_check_key );\n\n\t\tif ( health_checks[health_check_key]['react_component'] ) {\n\t\t\tvar DynamicReactComponent = eval( health_checks[health_check_key]['react_component'] );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ health_checks }\n\t\t\t\thealth_check_key={ health_check_key }\n\t\t\t\tslug_suffix={ suffix }\n\t\t\t\tthis_lightbox_slug={ health_check_key + suffix }\n\t\t\t\tnext_lightbox_slug={ next_wizard_step ? next_wizard_step + '_wizard_step' : null }\n\t\t\t\tfixing_it_again={ this.state[health_check_key + '_fixing_it_again'] }\n\t\t\t/>\n\t\t} else {\n\t\t\tvar dynamic_react_component = null;\n\t\t}\n\n\t\treturn (\n\t\t\t<MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ health_check_key + suffix }\n\t\t\t\tmode={ 'custom_react_component' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\t\t);\n\n\t}\n\n\tget_next_wizard_step_key( wizard_steps, current_wizard_step_key ) {\n\t\tvar current_key_match_found = false;\n\n\t\tfor (var wizard_step_key in wizard_steps) {\n\n\t\t\tif ( current_key_match_found ) {\n\t\t\t\treturn wizard_step_key;\n\t\t\t}\n\n\t\t\tif ( current_wizard_step_key == wizard_step_key ) {\n\t\t\t\tcurrent_key_match_found = true;\n\t\t\t}\n\t\t}\n\t}\n\n\t// The Wizard steps are not shown on the health check page, but we need to render their lightboxes out\n\trender_wizard_steps( wizard_steps ) {\n\n\t\tvar mapper = [];\n\n\t\tvar total_unhealthy_checks = 0;\n\n\t\t// This lets us loop through the object\n\t\tfor (var wizard_step_key in wizard_steps) {\n\n\t\t\t// If this check is a wizard step\n\t\t\tif ( wizard_steps[wizard_step_key]['is_wizard_step'] ) {\n\t\t\t\tmapper.push(\n\t\t\t\t\t<div key={ wizard_step_key } className={ 'mpwpadmin-wizard-step-container ' + 'mpwpadmin-wizard-step-' + wizard_step_key + '-container' }>\n\t\t\t\t\t\t{ this.render_lightbox( wizard_steps, wizard_step_key, '_wizard_step' ) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\t// This lets us output the health checks one by one\n\t\treturn mapper.map((view, index) => {\n\t\t\treturn view;\n\t\t})\n\n\t}\n\n\trender_unhealthy_icon( health_checks, health_check_key ) {\n\n\t\tvar unhealthy_icon = 'dashicons-no-alt';\n\n\t\tif ( health_checks[health_check_key]['unhealthy']['health_check_icon'] ) {\n\t\t\tunhealthy_icon = health_checks[health_check_key]['unhealthy']['health_check_icon'];\n\t\t}\n\n\t\treturn( <span className={ 'dashicons ' + unhealthy_icon }></span> );\n\t}\n\n\trender_health_checks( health_checks ) {\n\n\t\tvar mapper = [];\n\n\t\tvar total_unhealthy_checks = 0;\n\n\t\t// This lets us loop through the object\n\t\tfor (var health_check_key in health_checks) {\n\n\t\t\t// If this check is healthy\n\t\t\tif ( health_checks[health_check_key]['is_healthy'] && health_checks[health_check_key]['is_health_check'] ) {\n\n\t\t\t\tmapper.push(\n\t\t\t\t\t<div key={ health_check_key } className={ 'mpwpadmin-health-check-container ' + 'mpwpadmin-health-check-' + health_check_key + '-container' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-icon-container' }>\n\t\t\t\t\t\t\t<span className={ 'dashicons dashicons-yes' }></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-description-container' }>\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-description-text-container' }>\n\t\t\t\t\t\t\t\t{ health_checks[health_check_key]['healthy']['instruction'] }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\t\t\tif ( health_checks[health_check_key]['healthy']['fix_it_again_button_text'] ) {\n\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-description-action-container' }>\n\t\t\t\t\t\t\t\t\t\t\t<button onClick={ this.reset_lightbox_for_health_check.bind( this, health_check_key, '_health_check' ) } className=\"button\">{ health_checks[health_check_key]['healthy']['fix_it_again_button_text'] }</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} )() }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{ this.render_lightbox( health_checks, health_check_key, '_health_check' ) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\n\t\t\t}\n\t\t\t// If this check is unhealthy\n\t\t\telse {\n\n\t\t\t\tif ( health_checks[health_check_key]['is_health_check'] ) {\n\t\t\t\t\tmapper.push(\n\t\t\t\t\t\t<div key={ health_check_key } className={ 'mpwpadmin-health-check-container ' + 'mpwpadmin-health-check-' + health_check_key + '-container' }>\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-icon-container' }>\n\t\t\t\t\t\t\t\t{ this.render_unhealthy_icon( health_checks, health_check_key ) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-description-container' }>\n\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-description-text-container' }>\n\t\t\t\t\t\t\t\t\t{ health_checks[health_check_key]['unhealthy']['instruction'] }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-description-action-container' }>\n\t\t\t\t\t\t\t\t\t<button onClick={ this.set_lightbox_for_health_check.bind( this, health_check_key + '_health_check' ) } className=\"button\">{ health_checks[health_check_key]['unhealthy']['fix_it_button_text'] }</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ this.render_lightbox( health_checks, health_check_key, '_health_check' ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\t// This lets us output the health checks one by one\n\t\treturn mapper.map((view, index) => {\n\t\t\treturn view;\n\t\t})\n\n\t}\n\n\trender_breadcrumbs() {\n\n\t\tvar breadcrumbs = this.props.the_breadcrumbs;\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in breadcrumbs) {\n\n\t\t\tif ( key == this.props.view_slug ) {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] }</span> )\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] } > </span> )\n\t\t\t}\n\n\t\t}\n\n\t\t// This lets us output the breadcrumbs one by one\n\t\treturn mapper.map((breadcrumb, index) => {\n\t\t\treturn breadcrumb;\n\t\t})\n\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-settings-view' }>\n\t\t\t\t<div className=\"mpwpadmin-breadcrumb\">\n\t\t\t\t\t<h2>{ this.render_breadcrumbs() }</h2>\n\t\t\t\t</div>\n\t\t\t\t{ this.render_health_checks( this.props.section_info.health_check_vars ) }\n\t\t\t\t{ this.render_wizard_steps( this.props.section_info.wizard_step_vars ) }\n\t\t\t</div>\n\t\t)\n\t}\n\n}\n","window.MP_WP_Admin_Checkbox_Field = class MP_WP_Admin_Checkbox_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tinput_value: '',\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tvalidated: window[this.props.props.client_validation_callback_function]( this.props.props.default_value ),\n\t\t\tlightbox_open: false,\n\t\t\terror_code: null\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\t};\n\n\tcomponentDidMount() {\n\n\t\t//Server side checkboxes = strings. Client side checkboxes = boolean. This allows for a checked initial state.\n\t\tif ( 'true' == this.props.props.saved_value || 'false' == this.props.props.saved_value ) {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: 'true' == this.props.props.saved_value ? true : false\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: 'true' == this.props.props.default_value ? true : false\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tsave_value_to_server( value ) {\n\n\t\tthis.setState( {\n\t\t\tsaved_status: 'saving',\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_setting_id', this.props.id);\n\t\tpostData.append('mpwpadmin_setting_value', value);\n\t\tpostData.append('mpwpadmin_validation_callback', this.props.props.server_validation_callback_function);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The value was successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'saved',\n\t\t\t\t\t\t\t\tvalidated: true,\n\t\t\t\t\t\t\t\terror_code: null,\n\t\t\t\t\t\t\t} );\n\n\n\t\t\t\t\t\t\t// Pass the response up the chain to the parent component, where it will handle the data as it needs it.\n\t\t\t\t\t\t\tif ( this_component.props.update_context ) {\n\t\t\t\t\t\t\t\tthis_component.props.update_context( data ).then( function( result ) {\n\t\t\t\t\t\t\t\t\tconsole.log( result );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\t// The value was note successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\t\t\tvalidated: false,\n\t\t\t\t\t\t\t\terror_code: data.error_code,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tget_current_instruction_key() {\n\n\t\t// If the field is empty and we are in an untouched, initial state\n\t\tif ( ! this.state.input_value && this.state.in_initial_state ) {\n\t\t\treturn 'empty_initial';\n\t\t}\n\n\t\tif ( ! this.state.input_value && ! this.state.in_initial_state ) {\n\t\t\treturn 'empty_not_initial';\n\t\t}\n\n\t\t// If the field is not empty, and its been validated\n\t\tif ( this.state.input_value && this.state.validated ) {\n\t\t\treturn 'success';\n\t\t}\n\n\t\t// If the field is not empty, but it isn't valid\n\t\tif ( this.state.input_value && ! this.state.validated && this.state.error_code ) {\n\t\t\treturn this.state.error_code;\n\t\t}\n\n\t\treturn 'success';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\thandle_input_change( event ) {\n\n\t\t// Set the validation of this field\n\t\tif ( ! window[this.props.props.client_validation_callback_function]( event.target.checked ) ) {\n\t\t\tvar is_validated = false;\n\t\t} else {\n\t\t\tvar is_validated = true;\n\t\t}\n\n\t\tvar old_input_value = this.state.input_value;\n\t\tvar new_input_value = event.target.checked;\n\n\t\tthis.setState( {\n\t\t\tin_initial_state: false,\n\t\t\tinput_value: event.target.checked,\n\t\t\tsaved_status: 'typing',\n\t\t\tvalidated: is_validated\n\t\t} );\n\n\t\t// If nothing has changed since the state was last set\n\t\tif ( old_input_value == new_input_value ) {\n\n\t\t\t// Do nothing\n\t\t\treturn false;\n\n\t\t} else {\n\n\t\t\t// Set up a delay which waits to save the tip until .5 seconds after they stop typing.\n\t\t\tif( this.input_delay ) {\n\t\t\t\t// Clear the keypress delay if the user just typed\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis.input_delay = null;\n\t\t\t}\n\n\t\t\tvar this_component = this;\n\n\t\t\t// (Re)-Set up the save to fire in 500ms\n\t\t\tthis.input_delay = setTimeout( function() {\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis_component.save_value_to_server( new_input_value );\n\t\t\t}, 500);\n\n\t\t}\n\n\t};\n\n\trender_field() {\n\n\t\tif ( ! this.state.props_loaded ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\treturn this.props.props.replace_input_field_with;\n\t\t} else {\n\n\t\t\tvar inputProps = {};\n\n\t\t\tinputProps['type'] = 'checkbox';\n\n\t\t\tif ( this.props.class_name ) {\n\t\t\t\tinputProps['className'] = this.props.class_name + this.get_input_field_class();\n\t\t\t} else {\n\t\t\t\tinputProps['className'] = this.get_input_field_class();\n\t\t\t}\n\n\t\t\tif ( this.props.props.name ) {\n\t\t\t\tinputProps['name'] = this.props.props.name;\n\t\t\t}\n\n\t\t\tinputProps['onChange'] = this.handle_input_change.bind( this );\n\n\t\t\tinputProps['checked'] = this.state.input_value;\n\n\t\t\tif ( this.props.props.placeholder ) {\n\t\t\t\tinputProps['placeholder'] = this.props.props.placeholder;\n\t\t\t}\n\n\t\t\tif ( this.props.props.step ) {\n\t\t\t\tinputProps['step'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.min ) {\n\t\t\t\tinputProps['min'] = this.props.props.min;\n\t\t\t}\n\n\t\t\tif ( this.props.props.max ) {\n\t\t\t\tinputProps['max'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.disabled ) {\n\t\t\t\tinputProps['disabled'] = this.props.props.disabled;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<div className=\"mpwpwadmin-checkbox-container\">\n\t\t\t\t<label>\n\t\t\t\t\t<input { ...inputProps } /><span>{ (() => {\n\t\t\t\t\t\t\tif ( this.props.props.selected_text && this.props.props.unselected_text ) {\n\t\t\t\t\t\t\t\tif ( this.state.input_value ) {\n\t\t\t\t\t\t\t\t\treturn this.props.props.selected_text;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn this.props.props.unselected_text;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})()\n\t\t\t\t\t}</span>\n\t\t\t\t</label>\n\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t{ this.render_help_button() }\n\t\t\t\t<span className={ 'mpwpadmin-input-saved-status ' + this.state.saved_status }>{ this.state.saved_status }</span>\n\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_help_button() {\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t<span className={ 'mpwpadmin-input-separator' }> | </span>\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n\ttoggle_help_lightbox() {\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t[this.props.slug]: {}\n\t\t} );\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\tvar help_lightbox_output = null;\n\t\t} else if ( this.props.props.help_text.react_component ) {\n\n\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t/>\n\n\t\t\tvar help_lightbox_output = <MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ this.props.slug }\n\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\n\t\t} else {\n\t\t\tvar help_lightbox_output = \t<MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ this.props.slug }\n\t\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\t/>;\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-input-component-container' }>\n\t\t\t{ this.render_field() }\n\n\t\t\t{ help_lightbox_output }\n\n\t\t\t</div>\n\t\t)\n\t}\n\n};\n","window.MP_WP_Admin_File_Upload_Field = class MP_WP_Admin_File_Upload_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tinput_value: '',\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tvalidated: window[this.props.props.client_validation_callback_function]( this.props.props.default_value ),\n\t\t\tlightbox_open: false,\n\t\t\terror_code: null,\n\t\t\tfile_preview: false,\n\t\t\tuse_wp_media_dialog: true\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\n\t\tthis.fileInput = React.createRef();\n\t};\n\n\tcomponentDidMount() {\n\n\t\tif ( this.props.props.saved_value ) {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tfile_preview: this.props.props.saved_value,\n\t\t\t\tinput_value: this.props.props.saved_value,\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tsave_value_to_server( value ) {\n\n\t\tthis.setState( {\n\t\t\tsaved_status: 'saving',\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_setting_id', this.props.id);\n\t\tpostData.append('mpwpadmin_setting_value', value);\n\t\tpostData.append('mpwpadmin_validation_callback', this.props.props.server_validation_callback_function);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The value was successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'saved',\n\t\t\t\t\t\t\t\tvalidated: true,\n\t\t\t\t\t\t\t\terror_code: null,\n\t\t\t\t\t\t\t\tunique_instruction_message: null\n\t\t\t\t\t\t\t} );\n\n\n\t\t\t\t\t\t\t// Pass the response up the chain to the parent component, where it will handle the data as it needs it.\n\t\t\t\t\t\t\tif ( this_component.props.update_context ) {\n\t\t\t\t\t\t\t\tthis_component.props.update_context( data ).then( function( result ) {\n\t\t\t\t\t\t\t\t\t//console.log( result );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tif ( data.unique_instruction_message ) {\n\t\t\t\t\t\t\t\t// The value was not successfully saved.\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\t\t\t\tvalidated: false,\n\t\t\t\t\t\t\t\t\terror_code: data.error_code,\n\t\t\t\t\t\t\t\t\tunique_instruction_message: data.details\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// The value was not successfully saved.\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\t\t\t\tvalidated: data.error_code,\n\t\t\t\t\t\t\t\t\terror_code: 'error',\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tget_current_instruction_key() {\n\n\t\t// If the field is empty and we are in an untouched, initial state\n\t\tif ( ! this.state.input_value && this.state.in_initial_state ) {\n\t\t\treturn 'empty_initial';\n\t\t}\n\n\t\tif ( ! this.state.input_value && ! this.state.in_initial_state ) {\n\t\t\treturn 'empty_not_initial';\n\t\t}\n\n\t\t// If the field is not empty, and its been validated\n\t\tif ( this.state.input_value && this.state.validated ) {\n\t\t\treturn 'success';\n\t\t}\n\n\t\t// If the field is not empty, but it isn't valid\n\t\tif ( this.state.input_value && ! this.state.validated ) {\n\t\t\treturn this.state.error_code;\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.state.unique_instruction_message ) {\n\t\t\treturn this.state.unique_instruction_message;\n\t\t}\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\tremove_file( event ) {\n\t\tthis.setState( {\n\t\t\tvalidated: true,\n\t\t\tinput_value: '',\n\t\t\terror_code: null,\n\t\t\tfile_preview: false\n\t\t} );\n\n\t\tthis.save_value_to_server( '' );\n\t}\n\n\thandle_input_change( event ) {\n\n\t\tconst file_to_upload = this.fileInput.current.files[0];\n\n\t\t// If they hit \"cancel\" in the file upload dialog\n\t\tif ( ! file_to_upload ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Set the validation of this field\n\t\tif ( ! window[this.props.props.client_validation_callback_function]( file_to_upload ) ) {\n\t\t\tthis.setState( {\n\t\t\t\tvalidated: false,\n\t\t\t\tinput_value: file_to_upload,\n\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\terror_code: 'not_an_image',\n\t\t\t\tfile_preview: false\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t} else {\n\t\t\tvar is_validated = true;\n\t\t}\n\n\t\t// If a file has been selected, try to create a preview of it\n\t\tif ( file_to_upload ) {\n\t\t\tvar file_preview = URL.createObjectURL( file_to_upload );\n\t\t} else {\n\t\t\tvar file_preview = '';\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tin_initial_state: false,\n\t\t\tinput_value: file_to_upload,\n\t\t\tsaved_status: 'typing',\n\t\t\tvalidated: is_validated,\n\t\t\tfile_preview: file_preview\n\t\t} );\n\n\t\t// Set up a delay which waits to save the file until the user is done typing (if they happen to be typing)\n\t\tif( this.input_delay ) {\n\t\t\t// Clear the keypress delay if the user just typed\n\t\t\tclearTimeout( this.input_delay );\n\t\t\tthis.input_delay = null;\n\t\t}\n\n\t\t// (Re)-Set up the save to fire in 500ms\n\t\tthis.input_delay = setTimeout( () => {\n\n\t\t\tclearTimeout( this.input_delay );\n\n\t\t\tthis.save_value_to_server( file_to_upload );\n\n\t\t}, 500);\n\n\t};\n\n\trender_field() {\n\n\t\tif ( ! this.state.props_loaded ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\treturn this.props.props.replace_input_field_with;\n\t\t} else {\n\n\t\t\tvar inputProps = {};\n\n\t\t\tif ( this.state.use_wp_media_dialog ) {\n\t\t\t\tvar wp_media_dialog_class = 'mpwpadmin-wp-media-dialog-input';\n\t\t\t} else {\n\t\t\t\tvar wp_media_dialog_class = '';\n\t\t\t}\n\n\t\t\tif ( this.props.class_name ) {\n\t\t\t\tinputProps['className'] = this.props.class_name + this.get_input_field_class() + ' ' + wp_media_dialog_class;\n\t\t\t} else {\n\t\t\t\tinputProps['className'] = this.get_input_field_class();\n\t\t\t}\n\n\t\t\tif ( this.props.props.name ) {\n\t\t\t\tinputProps['name'] = this.props.props.name;\n\t\t\t}\n\n\t\t\tinputProps['onChange'] = this.handle_input_change.bind( this );\n\n\t\t\tif ( this.state.use_wp_media_dialog ) {\n\t\t\t\tinputProps['type'] = 'text';\n\t\t\t\tinputProps['value'] = this.state.input_value;\n\t\t\t} else {\n\t\t\t\tinputProps['type'] = 'file';\n\t\t\t}\n\n\t\t\tinputProps['ref'] = this.fileInput;\n\n\t\t\tinputProps['title'] = \" \";\n\n\t\t\tif ( this.props.props.placeholder ) {\n\t\t\t\tinputProps['placeholder'] = this.props.props.placeholder;\n\t\t\t}\n\n\t\t\tif ( this.props.props.step ) {\n\t\t\t\tinputProps['step'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.min ) {\n\t\t\t\tinputProps['min'] = this.props.props.min;\n\t\t\t}\n\n\t\t\tif ( this.props.props.max ) {\n\t\t\t\tinputProps['max'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.disabled ) {\n\t\t\t\tinputProps['disabled'] = this.props.props.disabled;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<React.Fragment>\n\t\t\t\t\t{ (() => {\n\t\t\t\t\t\tif ( this.state.file_preview ) {\n\t\t\t\t\t\t\treturn ( <div className=\"mpwpadmin-file-preview-container\" style={ {\n\t\t\t\t\t\t\t\tbackgroundImage: 'url(' + this.state.file_preview + ')',\n\t\t\t\t\t\t\t} } ></div> );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t})()\n\t\t\t\t\t}\n\t\t\t\t\t<input { ...inputProps } />\n\t\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t\t\t{ this.render_help_button() }\n\t\t\t\t\t\t<span className={ 'mpwpadmin-input-saved-status ' + this.state.saved_status }>{ this.state.saved_status }</span>\n\t\t\t\t\t</span>\n\t\t\t\t</React.Fragment>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_help_button() {\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t<span className={ 'mpwpadmin-input-separator' }> | </span>\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n\twp_open_media_dialog() {\n\n\t\t// create and open new file frame\n\t\tvar mp_core_file_frame = wp.media({\n\t\t\t//Title of media manager frame\n\t\t\ttitle: 'Select an item',\n\t\t\tbutton: {\n\t\t\t\t//Button text\n\t\t\t\ttext: 'Use Item'\n\t\t\t},\n\t\t\t//Do not allow multiple files, if you want multiple, set true\n\t\t\tmultiple: false,\n\t\t});\n\n\t\tvar this_component = this;\n\n\t\t//callback for selected image\n\t\tmp_core_file_frame.on('select', function() {\n\n\t\t\tvar selection = mp_core_file_frame.state().get('selection');\n\n\t\t\tselection.map(function(attachment) {\n\n\t\t\t\tattachment = attachment.toJSON();\n\n\t\t\t\t//if this is an image, display the thumbnail above the upload button\n\t\t\t\tvar ext = attachment.url.split('.').pop();\n\n\t\t\t\t// Set the validation of this field\n\t\t\t\tif ( ! window[this_component.props.props.client_validation_callback_function]( attachment.url ) ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\tvalidated: false,\n\t\t\t\t\t\tinput_value: attachment.url,\n\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\terror_code: 'invalid_image',\n\t\t\t\t\t\tfile_preview: false\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\tvalidated: true,\n\t\t\t\t\t\tinput_value: attachment.url,\n\t\t\t\t\t\terror_code: null,\n\t\t\t\t\t\tfile_preview: attachment.url\n\t\t\t\t\t}, () => {\n\n\n\t\t\t\t\t\tthis_component.save_value_to_server( attachment.url );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t});\n\n\t\t// open file frame\n\t\tmp_core_file_frame.open();\n\t}\n\n\ttoggle_help_lightbox() {\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t[this.props.slug]: {}\n\t\t} );\n\n\t}\n\n\trender_file_upload_control_buttons() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpadmin-file-upload-control-button-container\">\n\t\t\t\t{ (() => {\n\t\t\t\t\tif ( this.state.use_wp_media_dialog ) {\n\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t<button className=\"mpwpadmin-file-upload-upload-button button\" onClick={ this.wp_open_media_dialog.bind( this ) } >{ this.props.props.upload_file_text }</button>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t})() }\n\n\t\t\t\t{ (() => {\n\t\t\t\t\tif ( this.state.file_preview ) {\n\t\t\t\t\t\treturn ( <button className=\"mpwpadmin-file-upload-remove-button button\" onClick={ this.remove_file.bind( this ) }>{ this.props.props.remove_file_text }</button> );\n\t\t\t\t\t}\n\t\t\t\t})() }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\tvar help_lightbox_output = null;\n\t\t} else if ( this.props.props.help_text.react_component ) {\n\n\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t/>\n\n\t\t\tvar help_lightbox_output = <MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ this.props.slug }\n\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\n\t\t} else {\n\t\t\tvar help_lightbox_output = \t<MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ this.props.slug }\n\t\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\t/>;\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-input-component-container mpwpadmin-file-upload-component-container' + (() => {\n\t\t\t\t\tif ( this.state.file_preview ) {\n\t\t\t\t\t\treturn ( ' mpwpadmin-has-file-preview' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t})()\n\t\t\t}>\n\n\t\t\t<div className={ 'mpwpadmin-input-label-container'}>\n\t\t\t<label>\n\t\t\t{ this.render_field() }\n\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t{ this.render_file_upload_control_buttons() }\n\n\t\t\t{ help_lightbox_output }\n\n\t</div>\n\t)\n\t}\n\n};\n","window.MP_WP_Admin_Input_Field = class MP_WP_Admin_Input_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tinput_value: '',\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tvalidated: window[this.props.props.client_validation_callback_function]( this.props.props.default_value ),\n\t\t\tlightbox_open: false,\n\t\t\terror_code: null\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\t};\n\n\tcomponentDidMount() {\n\n\t\tif ( this.props.props.saved_value ) {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: this.props.props.saved_value\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: this.props.props.default_value\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tsave_value_to_server( value ) {\n\n\t\tthis.setState( {\n\t\t\tsaved_status: 'saving',\n\t\t} );\n\n\t\t// We'll auto save the entered tip note into the database's transaction field via ajax every time the person stops typing for 1 second.\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_setting_id', this.props.id);\n\t\tpostData.append('mpwpadmin_setting_value', value);\n\t\tpostData.append('mpwpadmin_validation_callback', this.props.props.server_validation_callback_function);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The value was successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'saved',\n\t\t\t\t\t\t\t\tvalidated: true,\n\t\t\t\t\t\t\t\terror_code: null,\n\t\t\t\t\t\t\t} );\n\n\n\t\t\t\t\t\t\t// Pass the response up the chain to the parent component, where it will handle the data as it needs it.\n\t\t\t\t\t\t\tif ( this_component.props.update_context ) {\n\t\t\t\t\t\t\t\tthis_component.props.update_context( data );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\t// The value was note successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\t\t\tvalidated: false,\n\t\t\t\t\t\t\t\terror_code: data.error_code,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tget_current_instruction_key() {\n\n\t\t// If the field is empty and we are in an untouched, initial state\n\t\tif ( ! this.state.input_value && this.state.in_initial_state ) {\n\t\t\treturn 'empty_initial';\n\t\t}\n\n\t\tif ( ! this.state.input_value && ! this.state.in_initial_state ) {\n\t\t\treturn 'empty_not_initial';\n\t\t}\n\n\t\t// If the field is not empty, and its been validated\n\t\tif ( this.state.input_value && this.state.validated ) {\n\t\t\treturn 'success';\n\t\t}\n\n\t\t// If the field is not empty, but it isn't valid\n\t\tif ( this.state.input_value && ! this.state.validated ) {\n\t\t\treturn this.state.error_code;\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\thandle_input_change( event ) {\n\n\t\t// Set the validation of this field\n\t\tif ( ! window[this.props.props.client_validation_callback_function]( event.target.value ) ) {\n\t\t\tvar is_validated = false;\n\t\t} else {\n\t\t\tvar is_validated = true;\n\t\t}\n\n\t\tvar old_input_value = this.state.input_value;\n\t\tvar new_input_value = event.target.value;\n\n\t\tif ( new_input_value ) {\n\t\t\tnew_input_value = new_input_value;\n\t\t} else {\n\t\t\tnew_input_value = this.props.props.default_value;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tin_initial_state: false,\n\t\t\tinput_value: event.target.value,\n\t\t\tsaved_status: 'typing',\n\t\t\tvalidated: is_validated\n\t\t} );\n\n\t\t// If nothing has changed since the state was last set\n\t\tif ( old_input_value == new_input_value ) {\n\n\t\t\t// Do nothing\n\t\t\treturn false;\n\n\t\t} else {\n\n\t\t\t// Set up a delay which waits to save the tip until .5 seconds after they stop typing.\n\t\t\tif( this.input_delay ) {\n\t\t\t\t// Clear the keypress delay if the user just typed\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis.input_delay = null;\n\t\t\t}\n\n\t\t\tvar this_component = this;\n\n\t\t\t// (Re)-Set up the save to fire in 500ms\n\t\t\tthis.input_delay = setTimeout( function() {\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis_component.save_value_to_server( new_input_value );\n\t\t\t}, 500);\n\n\t\t}\n\n\t};\n\n\trender_field() {\n\n\t\tif ( ! this.state.props_loaded ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\treturn this.props.props.replace_input_field_with;\n\t\t} else {\n\n\t\t\tvar inputProps = {};\n\n\t\t\tif ( this.props.props.type ) {\n\t\t\t\tinputProps['type'] = this.props.props.type;\n\t\t\t}\n\n\t\t\tif ( this.props.class_name ) {\n\t\t\t\tinputProps['className'] = this.props.class_name + this.get_input_field_class();\n\t\t\t} else {\n\t\t\t\tinputProps['className'] = this.get_input_field_class();\n\t\t\t}\n\n\t\t\tif ( this.props.props.name ) {\n\t\t\t\tinputProps['name'] = this.props.props.name;\n\t\t\t}\n\n\t\t\tinputProps['onChange'] = this.handle_input_change.bind( this );\n\n\t\t\tinputProps['value'] = this.state.input_value;\n\n\t\t\tif ( this.props.props.placeholder ) {\n\t\t\t\tinputProps['placeholder'] = this.props.props.placeholder;\n\t\t\t}\n\n\t\t\tif ( this.props.props.step ) {\n\t\t\t\tinputProps['step'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.min ) {\n\t\t\t\tinputProps['min'] = this.props.props.min;\n\t\t\t}\n\n\t\t\tif ( this.props.props.max ) {\n\t\t\t\tinputProps['max'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.disabled ) {\n\t\t\t\tinputProps['disabled'] = this.props.props.disabled;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<React.Fragment>\n\t\t\t\t\t<input { ...inputProps } />\n\t\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t\t\t{ this.render_help_button() }\n\t\t\t\t\t\t<span className={ 'mpwpadmin-input-saved-status ' + this.state.saved_status }>{ this.state.saved_status }</span>\n\t\t\t\t\t</span>\n\t\t\t\t</React.Fragment>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_help_button() {\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t<span className={ 'mpwpadmin-input-separator' }> | </span>\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n\ttoggle_help_lightbox() {\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t[this.props.slug]: {}\n\t\t} );\n\n\t}\n\n\trender(){\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\tvar help_lightbox_output = null;\n\t\t} else if ( this.props.props.help_text.react_component ) {\n\n\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t/>\n\n\t\t\tvar help_lightbox_output = <MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ this.props.slug }\n\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\n\t\t} else {\n\t\t\tvar help_lightbox_output = \t<MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ this.props.slug }\n\t\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\t/>;\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-input-component-container' }>\n\t\t\t<label>\n\t\t\t{ this.render_field() }\n\t\t\t</label>\n\n\t\t\t{ help_lightbox_output }\n\n\t\t\t</div>\n\t\t)\n\t}\n\n};\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\nwindow.MP_WP_Admin_List_View = class MP_WP_Admin_List_View extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tcurrent_view: 'list_view',\n\t\t\tmap_of_visual_states: null,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t\tcurrent_page: 1,\n\t\t\ttotal_items: 1,\n\t\t\titems_per_page: 1,\n\t\t\tsearch_term: '',\n\t\t\tcurrent_single_item: null,\n\t\t\tfetching_single_item: false,\n\t\t}\n\n\t\tthis.get_single_item_from_server = this.get_single_item_from_server.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\n\t\tthis.setState( {\n\t\t\tmap_of_visual_states: {\n\t\t\t\t[this.props.view_slug]: {\n\t\t\t\t\tvariable: {}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttotal_items: this.props.view_info.total_items,\n\t\t\titems_per_page: this.props.view_info.items_per_page,\n\t\t\trows: this.props.view_info.rows,\n\t\t\tcolumns: this.props.view_info.columns\n\t\t}, () => {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\tmpwpadmin_set_visual_state_of_component( {\n\t\t\tcomponent: this,\n\t\t\tdefault_visual_states: {\n\t\t\t\tparent_in_view: 'list_view',\n\t\t\t\tparent_not_in_view: 'none'\n\t\t\t},\n\t\t\tname_of_visual_state_variable: 'current_view'\n\t\t} );\n\n\t\t// If the 3rd level in the URL exists, (this could likely be more robust) set the current item to that\n\t\tif (\n\t\t\tObject.keys(this.props.main_component.state.all_current_visual_states)[0] &&\n\t\t\tthis.props.main_component.state.all_current_visual_states[this.props.view_slug] &&\n\t\t\tObject.keys(this.props.main_component.state.all_current_visual_states[this.props.view_slug])[0]\n\t\t) {\n\t\t\tvar second_slug = Object.keys(this.props.main_component.state.all_current_visual_states[this.props.view_slug])[0];\n\t\t\tif( Object.keys(this.props.main_component.state.all_current_visual_states[this.props.view_slug][second_slug])[0] ) {\n\t\t\t\tvar third_slug = Object.keys(this.props.main_component.state.all_current_visual_states[this.props.view_slug][second_slug])[0];\n\n\t\t\t\t// If the current single item ID does not match the item ID in the URL\n\t\t\t\tif ( ! this.state.current_single_item || ( this.state.current_single_item && this.state.current_single_item.id && third_slug !== this.state.current_single_item.id.value ) ) {\n\t\t\t\t\tthis.get_single_item_from_server( third_slug );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tget_rows_from_server() {\n\n\t\tif ( ! this.state.items_per_page ) {\n\t\t\tvar items_per_page = 20;\n\t\t} else {\n\t\t\tvar items_per_page = this.state.items_per_page;\n\t\t}\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_list_view_id', this.props.view_slug);\n\t\tpostData.append('mpwpadmin_list_view_search_term', this.state.search_term);\n\t\tpostData.append('mpwpadmin_list_view_page_id', this.state.current_page);\n\t\tpostData.append('mpwpadmin_items_per_page', items_per_page);\n\t\tpostData.append('mpwpadmin_list_view_items_per_page', this.state.items_per_page);\n\t\tpostData.append('mpwpadmin_nonce', this.props.view_info.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcolumns: data.columns,\n\t\t\t\t\t\t\t\trows: data.rows,\n\t\t\t\t\t\t\t\ttotal_items: data.total_items\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\trows: 'Unable to fetch rows...'\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_page_number_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tcurrent_page: event.target.value,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\tget_single_item_from_server( item_to_fetch ) {\n\n\t\tif ( this.state.fetching_single_item ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tfetching_single_item: true,\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_list_view_id', this.props.view_slug);\n\t\tpostData.append('mpwpadmin_list_view_item_id', item_to_fetch);\n\t\tpostData.append('mpwpadmin_nonce', this.props.view_info.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_single_item, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success && data.current_single_item ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcurrent_single_item: data.current_single_item,\n\t\t\t\t\t\t\t\tfetching_single_item: false,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcurrent_single_item: 'none_found',\n\t\t\t\t\t\t\t\tfetching_single_item: false,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_items_per_page_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tcurrent_page: 1,\n\t\t\titems_per_page: event.target.value,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\thandle_search_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tsearch_term: event.target.value,\n\t\t\tcurrent_page: 1,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\thandle_single_row_click( single_item, event ) {\n\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {\n\t\t\t\tsingle_data_view: {\n\t\t\t\t\t[single_item['id']['value']]: {} // Use the value in the first column as the URL slug\n\t\t\t\t}\n\t\t\t}\n\t\t} ).then( () => {\n\t\t\tthis.setState( {\n\t\t\t\tcurrent_single_item: single_item\n\t\t\t} );\n\t\t} );\n\n\t}\n\n\thandle_list_view_button_click(){\n\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {\n\t\t\t\tlist_view: {}\n\t\t\t}\n\t\t} );\n\n\t}\n\n\tget_total_pages() {\n\t\treturn Math.ceil( this.state.total_items / this.state.items_per_page );\n\t}\n\n\trender_breadcrumbs() {\n\n\t\tvar breadcrumbs = this.props.the_breadcrumbs;\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in breadcrumbs) {\n\n\t\t\tif ( key == this.props.view_slug ) {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] }</span> )\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] } > </span> )\n\t\t\t}\n\n\t\t}\n\n\t\t// This lets us output the breadcrumbs one by one\n\t\treturn mapper.map((breadcrumb, index) => {\n\t\t\treturn breadcrumb;\n\t\t})\n\n\t}\n\n\trender_columns( columns ) {\n\n\t\tif ( ! columns ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar mapper = [];\n\n\t\t// Loop through each column\n\t\tfor (var key in columns) {\n\t\t\tmapper.push(\n\t\t\t\t<div key={ key } scope=\"col\" className=\"mpwpadmin-list-view-column\">\n\t\t\t\t\t<span>{ columns[key] }</span>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn mapper;\n\t}\n\n\trender_rows( rows, columns ) {\n\n\t\tvar mapper = [];\n\t\tvar td_mapper = [];\n\n\t\tif ( ! rows || 0 == this.state.total_items ) {\n\n\t\t\tvar first = true;\n\n\t\t\tfor (var key in columns) {\n\t\t\t\ttd_mapper.push(\n\n\t\t\t\t\t// Render the contents of this table cell\n\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\tif ( first ) {\n\n\t\t\t\t\t\t\tfirst = false;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t{ 'None Found' }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfirst = false;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t{ '' }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})()\n\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add all of that combined data to the main mapper array\n\t\t\tmapper.push(\n\t\t\t\t<div key={ 'none_found' } className=\"mpwpadmin-list-view-row\">\n\t\t\t\t{ td_mapper }\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\treturn mapper;\n\t\t}\n\n\t\t// Loop through each row\n\t\tfor (var row in rows) {\n\n\t\t\t// Combine all of the table data (cells in this row)\n\t\t\tfor (var key in columns) {\n\t\t\t\ttd_mapper.push(\n\n\t\t\t\t\t// Render the contents of this table cell\n\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\tif ( rows[row][key]['show_in_list_view'] ) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t<button onClick={ this.handle_single_row_click.bind( this, rows[row] ) }>\n\t\t\t\t\t\t\t\t\t{(() => {\n\t\t\t\t\t\t\t\t\t\tif ( rows[row][key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\treturn eval( rows[row][key]['value_format_function'] )( rows[row][key] )\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn rows[row][key]['value']\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})()}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})()\n\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add all of that combined data to the main mapper array\n\t\t\tmapper.push(\n\t\t\t\t<div key={ row } className=\"mpwpadmin-list-view-table-row\">\n\t\t\t\t\t{ td_mapper }\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\t// Get the row data array ready for a new row\n\t\t\ttd_mapper = [];\n\t\t}\n\n\t\treturn mapper;\n\n\t}\n\n\trender_search() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpwadmin-list-view-search\">\n\t\t\t<span>{ this.props.view_info.strings.uppercase_search }</span>\n\t\t\t<input type=\"text\" value={ this.state.search_term } onChange={ this.handle_search_change.bind( this ) } />\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_pagination() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpwadmin-list-view-pagination-controls\">\n\t\t\t\t<div className=\"mpwpwadmin-list-view-items-per-page\">\n\t\t\t\t\t<span>{ this.props.view_info.strings.uppercase_items + ' ' + this.props.view_info.strings.lowercase_per + ' ' + this.props.view_info.strings.lowercase_page }</span>\n\t\t\t\t\t<input type=\"number\" min={ 1 } onChange={ this.handle_items_per_page_change.bind( this ) } value={ this.state.items_per_page } />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mpwpwadmin-list-view-pagination\">\n\t\t\t\t\t<span>{ this.props.view_info.strings.uppercase_page }</span>\n\t\t\t\t\t<input type=\"number\" min={ 1 } max={ this.get_total_pages() } onChange={ this.handle_page_number_change.bind( this ) } value={ this.state.current_page } />\n\t\t\t\t\t<span>{ ' ' + this.props.view_info.strings.lowercase_of + ' ' + this.get_total_pages() }</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_list_table() {\n\n\t\tif ( this.state.columns && this.state.rows ) {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-list-view-table' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-header' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-row' }>\n\t\t\t\t\t\t\t{ this.render_columns( this.state.columns ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-body' }>\n\t\t\t\t\t\t{ this.render_rows( this.state.rows, this.state.columns ) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t} else {\n\t\t\treturn <MP_WP_Admin_Spinner />\n\t\t}\n\n\t}\n\n\trender_single_data_view() {\n\n\t\tif ( 'single_data_view' !== this.state.current_view ) {\n\t\t\treturn ( '' );\n\t\t}\n\n\t\tvar single_item = this.state.current_single_item;\n\n\t\tif ( 'none_found' === single_item || false === single_item ) {\n\t\t\treturn 'No item found';\n\t\t}\n\n\t\tif ( null === single_item || this.state.fetching_single_item ) {\n\t\t\treturn <MP_WP_Admin_Spinner />;\n\t\t}\n\n\t\t// If we've defined a custom React Component to use for the single view, use it.\n\t\tif ( this.props.view_info.react_component_single_item_view ) {\n\n\t\t\tvar DynamicReactComponent = eval( this.props.view_info.react_component_single_item_view );\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\thidden = { (() => { return ( 'single_data_view' != this.state.current_view ? true : false ); })() }\n\t\t\t\t\tclassName=\"mpwpadmin-single-data-view\"\n\t\t\t\t>\n\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\tcurrent_single_item={ this.state.current_single_item }\n\t\t\t\t\t\tview_info={ this.props.view_info }\n\t\t\t\t\t\tget_single_item_from_server= { this.get_single_item_from_server }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\t// Otherwise, fall-back to a default single view\n\t\treturn (\n\t\t\t<div\n\t\t\t\thidden = { (() => { return ( 'single_data_view' != this.state.current_view ? true : false ); })() }\n\t\t\t\tclassName=\"mpwpadmin-single-data-view\"\n\t\t\t>\n\t\t\t\t<div className={ 'mpwpwadmin-list-view-single-data-item-controls' }>\n\t\t\t\t\t<button onClick={ this.handle_list_view_button_click.bind( this ) }>{ this.props.view_info.strings.back_to_list_view }</button>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mpwpadmin-single-data\">\n\t\t\t\t\t{ (() => {\n\n\t\t\t\t\t\tvar mapper = [];\n\t\t\t\t\t\tvar single_item = this.state.current_single_item;\n\n\t\t\t\t\t\t// Loop through all of the items to show about this item\n\t\t\t\t\t\tfor (var key in single_item) {\n\t\t\t\t\t\t\tmapper.push( <div className={ 'mpwpadmin-list-view-single-data-item' } key={ key }>{\n\n\t\t\t\t\t\t\t\t// Render the output for this data value about the current single item (which was selected from the list)\n\t\t\t\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\t\t\t\tif ( single_item[key]['show_in_single_data_view'] ) {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-title' }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ single_item[key]['title'] }\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-value' }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ single_item[key]['value'] }\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn ( '' );\n\n\t\t\t\t\t\t\t\t})()\n\n\t\t\t\t\t\t\t}</div> );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn mapper;\n\t\t\t\t\t})()\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t)\n\n\t}\n\n\trender_list_view() {\n\n\t\treturn(\n\t\t\t<div\n\t\t\thidden = { (() => { return ( 'list_view' != this.state.current_view ? true : false ); })() }\n\t\t\tclassName=\"mpwpadmin-list-view\"\n\t\t\t>\n\t\t\t\t<div className=\"mpwpadmin-list-view-controls\">\n\n\t\t\t\t\t{ this.render_search() }\n\n\t\t\t\t\t{ this.render_pagination() }\n\n\t\t\t\t</div>\n\n\t\t\t\t{ this.render_list_table() }\n\n\t\t\t\t<div className=\"mpwpadmin-list-view-controls\">\n\n\t\t\t\t\t{ this.render_search() }\n\n\t\t\t\t\t{ this.render_pagination() }\n\n\t\t\t\t</div>\n\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-list-view' + this.props.current_view_class }>\n\n\t\t\t<div className=\"mpwpadmin-breadcrumb\">\n\t\t\t<h2>{ this.render_breadcrumbs() }</h2>\n\t\t\t</div>\n\n\t\t\t<div className=\"mpwpadmin-list-view-content-area\">\n\n\t\t\t{ this.render_single_data_view() }\n\n\t\t\t{ this.render_list_view() }\n\n\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n}\n","window.MP_WP_Admin_Select_Field = class MP_WP_Admin_Select_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tinput_value: '',\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tvalidated: window[this.props.props.client_validation_callback_function]( this.props.props.default_value ),\n\t\t\tlightbox_open: false,\n\t\t\tmatching_values: this.props.props.initially_available_values,\n\t\t\terror_code: null,\n\t\t\toptions_hidden: true,\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\t\tthis.find_matching_available_values = this.find_matching_available_values.bind( this );\n\t};\n\n\tcomponentDidMount() {\n\n\t\tif ( this.props.props.saved_value ) {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: this.props.props.saved_value,\n\t\t\t\tavailable_values: this.props.props.initially_available_values\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: this.props.props.default_value,\n\t\t\t\tavailable_values: this.props.props.initially_available_values\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tsave_value_to_server( value ) {\n\n\t\tthis.setState( {\n\t\t\tsaved_status: 'saving',\n\t\t} );\n\n\t\t// We'll auto save the entered tip note into the database's transaction field via ajax every time the person stops typing for 1 second.\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_setting_id', this.props.id);\n\t\tpostData.append('mpwpadmin_setting_value', value);\n\t\tpostData.append('mpwpadmin_validation_callback', this.props.props.server_validation_callback_function);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The value was successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'saved',\n\t\t\t\t\t\t\t\toptions_hidden: true,\n\t\t\t\t\t\t\t\tvalidated: true,\n\t\t\t\t\t\t\t\terror_code: null\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// The value was note successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\t\t\tvalidated: false,\n\t\t\t\t\t\t\t\terror_code: data.error_code\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tfind_matching_available_values( search_term ) {\n\n\t\tthis.setState( {\n\t\t\tfetching_status: 'fetching',\n\t\t} );\n\n\t\t// We'll auto save the entered tip note into the database's transaction field via ajax every time the person stops typing for 1 second.\n\t\tvar postData = JSON.stringify({\n\t\t\taction: this.props.props.fetch_options_endpoint,\n\t\t\tmpwpadmin_search_term: search_term,\n\t\t\tmpwpadmin_fetch_options_nonce: this.props.props.nonce\n\t\t});\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.fetch_options_endpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\"\n\t\t\t},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The value was successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tmatching_values: data.matching_values,\n\t\t\t\t\t\t\t\tfetching_status: 'success',\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// The value was note successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tmatching_values: null,\n\t\t\t\t\t\t\t\tfetching_status: 'unfetched',\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\tget_current_instruction_key() {\n\n\t\t// If the field is empty and we are in an untouched, initial state\n\t\tif ( ! this.state.input_value && this.state.in_initial_state ) {\n\t\t\treturn 'empty_initial';\n\t\t}\n\n\t\tif ( ! this.state.input_value && ! this.state.in_initial_state ) {\n\t\t\treturn 'empty_not_initial';\n\t\t}\n\n\t\t// If the field is not empty, and its been validated\n\t\tif ( this.state.input_value && this.state.validated ) {\n\t\t\treturn 'success';\n\t\t}\n\n\t\t// If the field is not empty, but it isn't valid\n\t\tif ( this.state.input_value && ! this.state.validated ) {\n\t\t\treturn this.state.error_code;\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\ttoggle_options( event ) {\n\n\t\tif ( this.state.options_hidden ) {\n\n\t\t\tthis.setState( {\n\t\t\t\toptions_hidden: false\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\tthis.setState( {\n\t\t\t\toptions_hidden: true\n\t\t\t} );\n\n\t\t}\n\t}\n\n\thandle_input_change( value = null, event = null ) {\n\n\t\tvar old_input_value = this.state.input_value;\n\n\t\tif ( value ) {\n\t\t\tvar new_input_value = value;\n\t\t} else {\n\t\t\tvar new_input_value = event.target.value;\n\t\t}\n\n\t\t// Set the validation of this field\n\t\tif ( ! window[this.props.props.client_validation_callback_function]( new_input_value ) ) {\n\t\t\tvar is_validated = false;\n\t\t} else {\n\t\t\tvar is_validated = true;\n\t\t}\n\n\t\t// If the customer is typing, as opposed to clicking on a value\n\t\tif ( ! value ) {\n\t\t\tthis.find_matching_available_values( new_input_value );\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tin_initial_state: false,\n\t\t\tinput_value: new_input_value,\n\t\t\tsaved_status: 'typing',\n\t\t\tvalidated: is_validated\n\t\t} );\n\n\t\t// If nothing has changed since the state was last set\n\t\tif ( old_input_value == new_input_value ) {\n\n\t\t\t// Do nothing\n\t\t\treturn false;\n\n\t\t} else {\n\n\t\t\t// Set up a delay which waits to save the value until .5 seconds after they stop typing.\n\t\t\tif( this.input_delay ) {\n\t\t\t\t// Clear the keypress delay if the user just typed\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis.input_delay = null;\n\t\t\t}\n\n\t\t\tvar this_component = this;\n\n\t\t\t// (Re)-Set up the save to fire in 500ms\n\t\t\tthis.input_delay = setTimeout( function() {\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis_component.save_value_to_server( new_input_value );\n\t\t\t}, 500);\n\n\t\t}\n\n\t};\n\n\thandle_keypress( event ) {\n\n\t\tthis.setState( {\n\t\t\toptions_hidden: false\n\t\t} );\n\n\t}\n\n\thandle_option_click( option_key, event ) {\n\n\t\tthis.setState( {\n\t\t\toptions_hidden: true\n\t\t}, function() {\n\t\t\tthis.handle_input_change( option_key );\n\t\t} );\n\t}\n\n\trender_options() {\n\n\t\tvar options = this.state.matching_values;\n\n\t\tif ( ! options ) {\n\t\t\treturn (\n\t\t\t\t<p>{ this.props.props.no_matching_values_text }</p>\n\t\t\t)\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-select-field-options'}>\n\t\t\t<button className=\"button\" onClick={ this.toggle_options.bind( this ) }>Show options</button>\n\t\t\t<ul hidden={ this.state.options_hidden }>\n\t\t\t{ this.render_each_option( options ) }\n\t\t\t</ul>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_each_option( options ) {\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in options ) {\n\t\t\tmapper.push( <li key={ key } value={ key }>\n\t\t\t\t<button onClick={ this.handle_option_click.bind( this, key ) }>\n\t\t\t\t{ key }\n\t\t\t\t</button>\n\t\t\t\t</li> )\n\t\t\t}\n\n\t\t\t// This lets us output the options one by one\n\t\t\treturn mapper.map(( option, index) => {\n\t\t\t\treturn option;\n\t\t\t})\n\t\t}\n\n\t\trender_field() {\n\n\t\t\tif ( ! this.state.props_loaded ) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\t\treturn this.props.props.replace_input_field_with;\n\t\t\t} else {\n\n\t\t\t\tvar inputProps = {};\n\n\t\t\t\tif ( this.props.props.type ) {\n\t\t\t\t\tinputProps['type'] = this.props.props.type;\n\t\t\t\t}\n\n\t\t\t\tif ( this.props.class_name ) {\n\t\t\t\t\tinputProps['className'] = this.props.class_name + this.get_input_field_class();\n\t\t\t\t} else {\n\t\t\t\t\tinputProps['className'] = this.get_input_field_class();\n\t\t\t\t}\n\n\t\t\t\tif ( this.props.props.name ) {\n\t\t\t\t\tinputProps['name'] = this.props.props.name;\n\t\t\t\t}\n\n\t\t\t\tif ( this.props.props.placeholder ) {\n\t\t\t\t\tinputProps['placeholder'] = this.props.props.placeholder;\n\t\t\t\t}\n\n\t\t\t\tinputProps['onChange'] = this.handle_input_change.bind( this, null );\n\n\t\t\t\tinputProps['onKeyPress'] = this.handle_keypress.bind( this );\n\n\t\t\t\tinputProps['value'] = this.state.input_value;\n\n\t\t\t\tif ( this.props.props.step ) {\n\t\t\t\t\tinputProps['step'] = this.props.props.step;\n\t\t\t\t}\n\n\t\t\t\tif ( this.props.props.min ) {\n\t\t\t\t\tinputProps['min'] = this.props.props.min;\n\t\t\t\t}\n\n\t\t\t\tif ( this.props.props.max ) {\n\t\t\t\t\tinputProps['max'] = this.props.props.step;\n\t\t\t\t}\n\n\t\t\t\tif ( this.props.props.disabled ) {\n\t\t\t\t\tinputProps['disabled'] = this.props.props.disabled;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t<input type=\"text\" { ...inputProps } />\n\t\t\t\t\t{ this.render_options() }\n\t\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t\t\t{ this.render_help_button() }\n\t\t\t\t\t\t<span className={ 'mpwpadmin-input-saved-status ' + this.state.saved_status }>{ this.state.saved_status }</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\trender_help_button() {\n\n\t\t\tif ( ! this.props.props.help_text ) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn(\n\t\t\t\t<React.Fragment>\n\t\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t\t<span className={ 'mpwpadmin-input-separator' }> | </span>\n\t\t\t\t</React.Fragment>\n\t\t\t);\n\n\t\t}\n\n\t\ttoggle_help_lightbox() {\n\n\t\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t\t[this.props.slug]: {}\n\t\t\t} );\n\n\t\t}\n\n\t\trender(){\n\n\t\t\tif ( ! this.props.props.help_text ) {\n\t\t\t\tvar help_lightbox_output = null;\n\t\t\t} else if ( this.props.props.help_text.react_component ) {\n\n\t\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t\t/>\n\n\t\t\t\tvar help_lightbox_output = <MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ this.props.slug }\n\t\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t\t/>\n\n\t\t\t} else {\n\t\t\t\tvar help_lightbox_output = \t<MP_WP_Admin_Lightbox\n\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\tslug={ this.props.slug }\n\t\t\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\t\t/>;\n\t\t\t}\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-input-component-container mpwpadmin-select-container' }>\n\n\t\t\t\t<label>\n\t\t\t\t{ this.render_field() }\n\t\t\t\t</label>\n\n\t\t\t\t{ help_lightbox_output }\n\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\n\t};\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\n// This component outputs the settings view and its contents\nwindow.MP_WP_Admin_Settings_View = class MP_WP_Admin_Settings_View extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\t}\n\n\trender_settings( settings, doing_sub_setting = false ) {\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in settings) {\n\n\t\t\t// If this area has its own sub settings\n\t\t\tif ( settings[key]['settings'] ) {\n\n\t\t\t\t// Call this function again to output all sub settings, inception style\n\t\t\t\tmapper.push(\n\t\t\t\t\t<div key={ key } className={ 'mpwpadmin-setting-container ' + 'mpwpadmin-setting-' + key + '-container' }>\n\t\t\t\t\t\t<h2>{ settings[key]['visual_name'] }</h2>\n\t\t\t\t\t\t{ this.render_settings( settings[key]['settings'], true ) }\n\t\t\t\t\t</div>\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tvar DynamicReactComponent = eval( settings[key]['react_component'] );\n\n\t\t\t\tmapper.push(\n\t\t\t\t\t<div key={ key } className={ 'mpwpadmin-setting-container ' + 'mpwpadmin-setting-' + key + '-container' }>\n\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\tid={ key }\n\t\t\t\t\t\t\tslug={ key }\n\t\t\t\t\t\t\tprops={ settings[key] }\n\t\t\t\t\t\t\tclass_name={ 'mpwpadmin-setting mpwpadmin-setting-' + key }\n\t\t\t\t\t\t\tcontext_id={ null }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\n\t\t}\n\n\t\t// If we are doing a sub-setting, return the mapper here so it gets rejoined with the parent mapper. We're doing some method inception here.\n\t\tif ( doing_sub_setting ) {\n\n\t\t\treturn mapper;\n\n\t\t} else {\n\n\t\t\t// This lets us output the settings one by one\n\t\t\treturn mapper.map((view, index) => {\n\t\t\t\treturn view;\n\t\t\t})\n\t\t}\n\n\t}\n\n\trender_breadcrumbs() {\n\n\t\tvar breadcrumbs = this.props.the_breadcrumbs;\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in breadcrumbs) {\n\n\t\t\tif ( key == this.props.view_slug ) {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] }</span> )\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] } > </span> )\n\t\t\t}\n\n\t\t}\n\n\t\t// This lets us output the breadcrumbs one by one\n\t\treturn mapper.map((breadcrumb, index) => {\n\t\t\treturn breadcrumb;\n\t\t})\n\n\t}\n\n\trender() {\n\n\t\t// If we should be refreshing the sections, unmount and remount everything.\n\t\tif ( this.props.main_component.state.refresh_sections ) {\n\t\t\treturn ( '' );\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-settings-view' + this.props.current_view_class }>\n\t\t\t\t\t<div className=\"mpwpadmin-breadcrumb\">\n\t\t\t\t\t\t<h2>{ this.render_breadcrumbs() }</h2>\n\t\t\t\t\t</div>\n\t\t\t\t\t{ this.render_settings( this.props.view_info.settings ) }\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n}\n","window.MP_WP_Admin_TextArea_Field = class MP_WP_Admin_TextArea_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tinput_value: '',\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tvalidated: window[this.props.props.client_validation_callback_function]( this.props.props.default_value ),\n\t\t\tlightbox_open: false,\n\t\t\terror_code: null\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\t};\n\n\tcomponentDidMount() {\n\n\t\tif ( this.props.props.saved_value ) {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: this.props.props.saved_value\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: this.props.props.default_value\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tsave_value_to_server( value ) {\n\n\t\tthis.setState( {\n\t\t\tsaved_status: 'saving',\n\t\t} );\n\n\t\t// We'll auto save the entered tip note into the database's transaction field via ajax every time the person stops typing for 1 second.\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_setting_id', this.props.id);\n\t\tpostData.append('mpwpadmin_setting_value', value);\n\t\tpostData.append('mpwpadmin_validation_callback', this.props.props.server_validation_callback_function);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The value was successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'saved',\n\t\t\t\t\t\t\t\tvalidated: true,\n\t\t\t\t\t\t\t\terror_code: null,\n\t\t\t\t\t\t\t} );\n\n\n\t\t\t\t\t\t\t// Pass the response up the chain to the parent component, where it will handle the data as it needs it.\n\t\t\t\t\t\t\tif ( this_component.props.update_context ) {\n\t\t\t\t\t\t\t\tthis_component.props.update_context( data ).then( function( result ) {\n\t\t\t\t\t\t\t\t\tconsole.log( result );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\t// The value was note successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\t\t\tvalidated: false,\n\t\t\t\t\t\t\t\terror_code: data.error_code,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tget_current_instruction_key() {\n\n\t\t// If the field is empty and we are in an untouched, initial state\n\t\tif ( ! this.state.input_value && this.state.in_initial_state ) {\n\t\t\treturn 'empty_initial';\n\t\t}\n\n\t\tif ( ! this.state.input_value && ! this.state.in_initial_state ) {\n\t\t\treturn 'empty_not_initial';\n\t\t}\n\n\t\t// If the field is not empty, and its been validated\n\t\tif ( this.state.input_value && this.state.validated ) {\n\t\t\treturn 'success';\n\t\t}\n\n\t\t// If the field is not empty, but it isn't valid\n\t\tif ( this.state.input_value && ! this.state.validated ) {\n\t\t\treturn this.state.error_code;\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\thandle_input_change( event ) {\n\n\t\t// Set the validation of this field\n\t\tif ( ! window[this.props.props.client_validation_callback_function]( event.target.value ) ) {\n\t\t\tvar is_validated = false;\n\t\t} else {\n\t\t\tvar is_validated = true;\n\t\t}\n\n\t\tvar old_input_value = this.state.input_value;\n\t\tvar new_input_value = event.target.value;\n\n\t\tif ( new_input_value ) {\n\t\t\tnew_input_value = new_input_value;\n\t\t} else {\n\t\t\tnew_input_value = this.props.props.default_value;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tin_initial_state: false,\n\t\t\tinput_value: event.target.value,\n\t\t\tsaved_status: 'typing',\n\t\t\tvalidated: is_validated\n\t\t} );\n\n\t\t// If nothing has changed since the state was last set\n\t\tif ( old_input_value == new_input_value ) {\n\n\t\t\t// Do nothing\n\t\t\treturn false;\n\n\t\t} else {\n\n\t\t\t// Set up a delay which waits to save the tip until .5 seconds after they stop typing.\n\t\t\tif( this.input_delay ) {\n\t\t\t\t// Clear the keypress delay if the user just typed\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis.input_delay = null;\n\t\t\t}\n\n\t\t\tvar this_component = this;\n\n\t\t\t// (Re)-Set up the save to fire in 500ms\n\t\t\tthis.input_delay = setTimeout( function() {\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis_component.save_value_to_server( new_input_value );\n\t\t\t}, 500);\n\n\t\t}\n\n\t};\n\n\trender_field() {\n\n\t\tif ( ! this.state.props_loaded ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\treturn this.props.props.replace_input_field_with;\n\t\t} else {\n\n\t\t\tvar inputProps = {};\n\n\t\t\tif ( this.props.props.type ) {\n\t\t\t\tinputProps['type'] = this.props.props.type;\n\t\t\t}\n\n\t\t\tif ( this.props.class_name ) {\n\t\t\t\tinputProps['className'] = this.props.class_name + this.get_input_field_class();\n\t\t\t} else {\n\t\t\t\tinputProps['className'] = this.get_input_field_class();\n\t\t\t}\n\n\t\t\tif ( this.props.props.name ) {\n\t\t\t\tinputProps['name'] = this.props.props.name;\n\t\t\t}\n\n\t\t\tinputProps['onChange'] = this.handle_input_change.bind( this );\n\n\t\t\tinputProps['value'] = this.state.input_value;\n\n\t\t\tif ( this.props.props.placeholder ) {\n\t\t\t\tinputProps['placeholder'] = this.props.props.placeholder;\n\t\t\t}\n\n\t\t\tif ( this.props.props.step ) {\n\t\t\t\tinputProps['step'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.min ) {\n\t\t\t\tinputProps['min'] = this.props.props.min;\n\t\t\t}\n\n\t\t\tif ( this.props.props.max ) {\n\t\t\t\tinputProps['max'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.disabled ) {\n\t\t\t\tinputProps['disabled'] = this.props.props.disabled;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<React.Fragment>\n\t\t\t\t<textarea { ...inputProps }></textarea>\n\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t\t{ this.render_help_button() }\n\t\t\t\t\t<span className={ 'mpwpadmin-input-saved-status ' + this.state.saved_status }>{ this.state.saved_status }</span>\n\t\t\t\t</span>\n\t\t\t\t</React.Fragment>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_help_button() {\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t<span className={ 'mpwpadmin-input-separator' }> | </span>\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n\ttoggle_help_lightbox() {\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t[this.props.slug]: {}\n\t\t} );\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\tvar help_lightbox_output = null;\n\t\t} else if ( this.props.props.help_text.react_component ) {\n\n\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t/>\n\n\t\t\tvar help_lightbox_output = <MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ this.props.slug }\n\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\n\t\t} else {\n\t\t\tvar help_lightbox_output = \t<MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ this.props.slug }\n\t\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\t/>;\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-input-component-container' }>\n\t\t\t<label>\n\t\t\t{ this.render_field() }\n\t\t\t</label>\n\n\t\t\t{ help_lightbox_output }\n\n\t\t\t</div>\n\t\t)\n\t}\n\n};\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\nwindow.mp_wp_admin_admin_lightbox_vars = {\n\ttitle: null,\n\tdescription: null,\n};\n\nwindow.MP_WP_Admin = class MP_WP_Admin extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tall_initial_visual_states: this.props.data.general_config.all_current_visual_states,\n\t\t\tall_current_visual_states: this.props.data.general_config.all_current_visual_states, // This is an object containing the entire visual state for the Single Page App\n\t\t\tlightbox_initial_visual_state: this.props.data.general_config.lightbox_visual_state,\n\t\t\tlightbox_visual_state: this.props.data.general_config.lightbox_visual_state,\n\t\t\tsingle_page_app_base_url: this.props.data.general_config.base_url,\n\t\t\tdom_node: null,\n\t\t\trefresh_sections: false\n\t\t};\n\n\t\tthis.get_current_view_class = this.get_current_view_class.bind( this );\n\t\tthis.set_all_current_visual_states = this.set_all_current_visual_states.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\n\t\t// Grab the props passed in and pass them to the state\n\t\tthis.setState( {\n\t\t\tdata: this.props.data\n\t\t}, () => {\n\n\t\t\t// Set the initial view state based on the initialization props\n\t\t\tthis.setState( {\n\t\t\t\tall_initial_visual_states: this.state.data.general_config.all_current_visual_states,\n\t\t\t\tall_current_visual_states: this.state.data.general_config.all_current_visual_states, // This is an object containing the entire visual state for the Single Page App\n\t\t\t\tlightbox_initial_visual_state: this.state.data.general_config.lightbox_visual_state,\n\t\t\t\tlightbox_visual_state: this.state.data.general_config.lightbox_visual_state\n\t\t\t}, () => {\n\t\t\t\tthis.set_all_current_visual_states( this.state.all_initial_visual_states, this.state.lightbox_visual_state );\n\t\t\t} );\n\n\t\t} );\n\n\t\t// Create an event listener to respond to back button clicks\n\t\twindow.addEventListener('popstate', (e) => {\n\t\t\tthis.on_web_history_change( e, this );\n\t\t});\n\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.maybe_refresh_parent_dom_node();\n\t}\n\n\trefresh_mpwpadmin() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\tvar this_component = this;\n\n\t\t\t// Format the data that we'll send to the server\n\t\t\tvar postData = new FormData();\n\t\t\tpostData.append('mpwpadmin_refresh_nonce', this.state.data.general_config.mpwpadmin_refresh_nonce);\n\n\t\t\tfetch( this.state.data.general_config.server_endpoint_url_refresh_mpwpadmin, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tmode: \"same-origin\",\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t\theaders: {},\n\t\t\t\tbody: postData\n\t\t\t} ).then(\n\t\t\t\tfunction( response ) {\n\t\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\t\tresponse.status);\n\t\t\t\t\t\treject();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Examine the text in the response\n\t\t\t\t\tresponse.json().then(\n\t\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\t\t// If we fetched brand new mpwpadmin data, refresh it\n\t\t\t\t\t\t\tif ( data.success ) {\n\t\t\t\t\t\t\t\t// If the data is exact the same, do nothing\n\t\t\t\t\t\t\t\tif ( JSON.stringify( data.data ) == JSON.stringify( this_component.state.data ) ) {\n\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Save the refreshed data to the state of the main component\n\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\tdata: data.data\n\t\t\t\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\t\t\t\t// Once saved, tell the section components they can/should refresh. Whether/How they do is handled by the components themselves.\n\t\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\t\trefresh_sections: true\n\t\t\t\t\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\t\t\t\t\t// Now that the \"refresh\" trigger has been applied with refreshed data, set the refresh back to false for the sections so they don't loop infiniitely.\n\t\t\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\t\t\trefresh_sections: false\n\t\t\t\t\t\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\t\t\t\t\t\t// Now that everything we want to do here is done, resolve the promise.\n\t\t\t\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treject();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t).catch(\n\t\t\t\tfunction( err ) {\n\t\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\t\treject();\n\t\t\t\t}\n\t\t\t);\n\n\t\t} );\n\n\t}\n\n\tmaybe_refresh_parent_dom_node() {\n\n\t\tif ( this.state.dom_node !== ReactDOM.findDOMNode(this).parentNode ) {\n\t\t\tthis.setState( {\n\t\t\t\tdom_node: ReactDOM.findDOMNode(this).parentNode\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tbuild_new_url_path( obj, new_url_path, depth ) {\n\t\tdepth = depth + 1;\n\t\tfor (var component_visual_state in obj) {\n\t\t\t\tnew_url_path = this.build_new_url_path(obj[component_visual_state], new_url_path + '&mpwpadmin' + depth + '=' + component_visual_state, depth );\n\t\t}\n\t\treturn new_url_path;\n\t}\n\n\tset_all_current_visual_states( new_state = false, new_lightbox_state = false ) {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// If no new state was passed, we're probably just updating the lightbox state.\n\t\t\tif ( ! new_state ) {\n\t\t\t\tnew_state = this.state.all_current_visual_states;\n\t\t\t}\n\t\t\tif ( ! new_lightbox_state ) {\n\t\t\t\tnew_lightbox_state = this.state.lightbox_visual_state\n\t\t\t}\n\n\t\t\t// Start refreshing the state of the entire mpwpadmin single page app. This happens in the background, almost like magic.\n\n\t\t\tthis.setState( {\n\t\t\t\tall_current_visual_states: new_state,\n\t\t\t\tlightbox_visual_state: new_lightbox_state\n\t\t\t}, () => {\n\n\t\t\t\t// If we are on mobile, make sure this app is in view as it's easy to get out of view on small screens when the height changes\n\t\t\t\tif ( 700 > screen.width ) {\n\t\t\t\t\tthis.state.dom_node.scrollIntoView( true, {\n\t\t\t\t\t\tbehavior: 'smooth'\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// New URL\n\t\t\t\tvar new_url = this.state.data.general_config.base_url + this.build_new_url_path( this.state.all_current_visual_states, '', 0 );\n\n\t\t\t\t// If there is a lightbox open, add it to the end of the URL\n\t\t\t\tif ( Object.keys(this.state.lightbox_visual_state)[0] ) {\n\t\t\t\t\tnew_url = new_url + '&mpwpadmin_lightbox=' + Object.keys(this.state.lightbox_visual_state)[0];\n\t\t\t\t}\n\n\t\t\t\t// Take a snapshot of the current visual state and add it to the web history\n\t\t\t\thistory.pushState({\n\t\t\t\t\t[this.state.data.general_config.app_slug + '_visual_state']: this.state.all_current_visual_states,\n\t\t\t\t\t[this.state.data.general_config.app_slug + '_lightbox_visual_state']: this.state.lightbox_visual_state\n\t\t\t\t}, new_state, new_url);\n\n\t\t\t\t/*\n\t\t\t\tthis.refresh_mpwpadmin().then( () => {\n\t\t\t\t\tresolve( new_state );\n\t\t\t\t} );\n\t\t\t\t*/\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\ton_web_history_change( e, this_component ) {\n\n\t\tvar history_state = e.state;\n\n\t\t// If there's no state in the back button, we're in the initial state.\n\t\tif (history_state == null) {\n\t\t\tthis_component.setState( {\n\t\t\t\t'all_current_visual_states': this_component.state.all_initial_visual_states,\n\t\t\t\t'lightbox_visual_state': this_component.state.initial_lightbox_visual_state\n\t\t\t} );\n\t\t}\n\t\t// If there is a state in the history, set the current state to that\n\t\telse {\n\t\t\tthis_component.setState( {\n\t\t\t\t'all_current_visual_states': history_state[this.state.data.general_config.app_slug + '_visual_state'],\n\t\t\t\t'lightbox_visual_state': history_state[this.state.data.general_config.app_slug + '_lightbox_visual_state']\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tget_current_view_class( view_in_question ) {\n\n\t\tvar currently_in_view_class_name = 'mpwpadmin-current-view';\n\t\tvar hidden_class_name = 'mpwpadmin-hidden-view';\n\t\tvar current_visual_state = Object.keys(this.state.all_current_visual_states)[0]; // This grabs the name of the the first key, which is the visual state of this component\n\n\t\t// If the current visual state matches the view we are getting the class for\n\t\tif( current_visual_state == view_in_question ) {\n\n\t\t\treturn ' ' + currently_in_view_class_name;\n\n\t\t} else {\n\n\t\t\treturn ' ' + hidden_class_name;\n\n\t\t}\n\n\t}\n\n\tget_current_button_class( view_in_question ) {\n\n\t\tvar current_button_class_name = 'mpwpadmin-current-tab';\n\t\tvar current_visual_state = Object.keys(this.state.all_current_visual_states)[0]; // This grabs the name of the the first key, which is the visual state of this component\n\n\t\t// If the current visual state matches the view we are getting the class for\n\t\tif( current_visual_state == view_in_question ) {\n\n\t\t\treturn ' ' + current_button_class_name;\n\n\t\t} else {\n\n\t\t\treturn '';\n\n\t\t}\n\n\t}\n\n\trender_left_side_navigation_buttons() {\n\n\t\tvar current_visual_state = Object.keys(this.state.all_current_visual_states)[0]; // This grabs the name of the the first key, which is the visual state of this component\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in this.state.data.views) {\n\n\t\t\tmapper.push( <MP_WP_Admin_View_Button\n\t\t\t\tkey={key}\n\t\t\t\tmain_component={ this }\n\t\t\t\tview_slug={key}\n\t\t\t\tview_info={ this.state.data.views[key] }\n\t\t\t\tis_top_level={ true } />\n\t\t\t)\n\n\t\t}\n\n\t\t// This lets us output the buttons one by one\n\t\treturn mapper.map((view, index) => {\n\t\t\treturn view;\n\t\t})\n\t}\n\n\trender_actual_views( views, doing_sub_tabs = false, breadcrumbs = [] ) {\n\n\t\tvar current_visual_state = Object.keys(this.state.all_current_visual_states)[0]; // This grabs the name of the the first key, which is the visual state of this component\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in views ) {\n\n\t\t\tvar DynamicReactComponent = eval( views[key]['react_component'] );\n\n\t\t\t// Append this section's title to the breadcrumbs\n\t\t\tbreadcrumbs[key] = views[key]['visual_name'];\n\n\t\t\tmapper.push( <DynamicReactComponent\n\t\t\t\tkey={ key }\n\t\t\t\tmain_component={ this }\n\t\t\t\tview_slug={ key }\n\t\t\t\tview_info={ views[key] }\n\t\t\t\tcurrent_view_class={ this.get_current_view_class( key ) }\n\t\t\t\tthe_breadcrumbs={ breadcrumbs }\n\t\t\t/> )\n\n\t\t\tvar sub_tabs = views[key]['sub_tabs'];\n\n\t\t\t// If this section (even if this is a subsection) has subsections within/below it\n\t\t\tif ( sub_tabs ) {\n\n\t\t\t\tmapper.push( this.render_actual_views( sub_tabs, true, breadcrumbs ) );\n\n\t\t\t\t// We're done with all the subsections in this section\n\t\t\t\tbreadcrumbs = [];\n\t\t\t} else {\n\t\t\t\tbreadcrumbs = [];\n\t\t\t}\n\t\t}\n\n\t\t// If we are doing a sub-section, return the mapper here so it gets rejoined with the parent mapper. We're doing some method inception here.\n\t\tif ( doing_sub_tabs ) {\n\n\t\t\treturn mapper;\n\n\t\t} else {\n\n\t\t\t// This lets us output the buttons one by one\n\t\t\treturn mapper.map((view, index) => {\n\t\t\t\treturn view;\n\t\t\t})\n\t\t}\n\t}\n\n\trender() {\n\n\t\tif ( ! this.state.data || ! this.state.all_current_visual_states ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\tvar current_visual_state = Object.keys(this.state.all_current_visual_states)[0]; // This grabs the name of the the first key, which is the visual state of this component\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-container mpwpadmin-current-view-is-' + current_visual_state }>\n\t\t\t\t<div className=\"mpwpadmin-left-side-navigation\">\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t{ this.render_left_side_navigation_buttons() }\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\t\t\t\t<div className='mpwpadmin-current-view-container'>\n\t\t\t\t\t{ this.render_actual_views( this.state.data.views ) }\n\t\t\t\t</div>\n\n\t\t\t\t<MP_WP_Admin_Lightbox />\n\n\t\t\t</div>\n\t\t);\n\t}\n}\n\n// This component outputs all of the left-size navigation\nwindow.MP_WP_Admin_View_Button = class MP_WP_Admin_View_Button extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\t}\n\n\trender_submenu() {\n\n\t\tvar sub_menus = this.props.view_info.sub_tabs;\n\n\t\tif ( ! sub_menus ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in sub_menus) {\n\n\t\t\tvar view_info = sub_menus[key] ? sub_menus[key] : false;\n\n\t\t\tmapper.push(\n\t\t\t\t<MP_WP_Admin_View_Button\n\t\t\t\t\tkey={ key }\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tview_slug={ key }\n\t\t\t\t\tview_info={ view_info }\n\t\t\t\t\tis_top_level={ false }\n\t\t\t\t/>\n\t\t\t)\n\n\t\t}\n\n\t\t// This lets us output the buttons one by one\n\t\treturn mapper.map((view, index) => {\n\t\t\treturn view;\n\t\t})\n\n\t}\n\n\thandle_button_click( new_state, event ) {\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {}\n\t\t} );\n\t}\n\n\trender() {\n\n\t\tif ( this.props.is_top_level ) {\n\t\t\treturn (\n\t\t\t\t<li className={ \"mpwpadmin-left-tab-button\" + this.props.main_component.get_current_button_class( this.props.view_slug ) }>\n\t\t\t\t\t<button onClick={ this.handle_button_click.bind( this, {\n\t\t\t\t\t\t[this.props.view_slug]: {}\n\t\t\t\t\t} ) }>\n\t\t\t\t\t\t<span className=\"mpwpadmin-left-tab-text\">{ this.props.view_info.visual_name }</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t{ this.render_submenu() }\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<li className={ \"mpwpadmin-left-tab-button-subtab\" + this.props.main_component.get_current_button_class( this.props.view_slug ) }>\n\t\t\t\t\t<button onClick={ this.handle_button_click.bind( this, {\n\t\t\t\t\t\t[this.props.view_slug]: {}\n\t\t\t\t\t} ) }>\n\t\t\t\t\t\t<i className=\"mpwpadmin-left-tab-arrow\"></i>\n\t\t\t\t\t\t<span className=\"mpwpadmin-left-tab-text\">{ this.props.view_info.visual_name }</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t{ this.render_submenu() }\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t);\n\t\t}\n\t}\n}\n\nwindow.MP_WP_Admin_Lightbox = class MP_WP_Admin_Lightbox extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\thas_mounted: false,\n\t\t\tlightbox_open: false\n\t\t}\n\n\t\tthis.handle_key_press = this.handle_key_press.bind( this );\n\t\tthis.toggle_lightbox = this.toggle_lightbox.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.handle_open_status_based_on_url();\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\tif ( ! this.state.lightbox_open ) {\n\t\t\t// Remove a listener for the ESC key when the lightbox is closed\n\t\t\tdocument.removeEventListener(\"keydown\", this.handle_key_press, false);\n\t\t} else {\n\n\t\t\tif ( ! this.state.has_mounted ) {\n\t\t\t\tthis.setState( {\n\t\t\t\t\thas_mounted: true\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Add a listener for the ESC key when the lightbox is open\n\t\t\tdocument.addEventListener(\"keydown\", this.handle_key_press, false);\n\t\t}\n\n\t\tthis.handle_open_status_based_on_url();\n\t}\n\n\thandle_open_status_based_on_url() {\n\n\t\t// If a lightbox is open based on the setting in the main component\n\t\tif ( this.props.main_component && this.props.main_component.state.lightbox_visual_state ) {\n\t\t\t// Check if that lightbox is us!\n\t\t\tif ( this.props.slug == Object.keys(this.props.main_component.state.lightbox_visual_state)[0] ) {\n\t\t\t\t// Open this lightbox if it isn't already open\n\t\t\t\tif ( ! this.state.lightbox_open ) {\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\tlightbox_open: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the current lightbox in the URL is not us, close this one.\n\t\t\telse {\n\t\t\t\tif ( this.state.lightbox_open ) {\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\tlightbox_open: false\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tget_lightbox_visible_class() {\n\t\tif ( this.state.lightbox_open ) {\n\t\t\treturn ' mpwpadmin-lightbox-open';\n\t\t} else {\n\t\t\treturn ' mpwpadmin-lightbox-closed';\n\t\t}\n\t}\n\n\ttoggle_lightbox( state ) {\n\n\t\t// If the lightbox is open, close it\n\t\tif ( state.lightbox_open ) {\n\t\t\tthis.props.main_component.set_all_current_visual_states( false, {} );\n\t\t} else {\n\t\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t\t[this.props.slug]: {}\n\t\t\t} );\n\t\t}\n\n\t}\n\n\thandle_key_press( event ) {\n\n\t\tif( event.keyCode === 27 ) {\n\t\t\tthis.toggle_lightbox( this.state );\n\t\t}\n\n\t}\n\n\thandle_close_button_click() {\n\t\tthis.props.main_component.set_all_current_visual_states( false, {} );\n\t}\n\n\trender_close_button() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpadmin-close-btn\" aria-label=\"Close\" onClick={ this.handle_close_button_click.bind( this ) }><span className=\"dashicons dashicons-no\"></span></div>\n\t\t);\n\t}\n\n\trender_icon() {\n\n\t\tif ( this.props.main_component && this.props.main_component.state.data.general_config.default_icon ) {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.main_component.state.data.general_config.default_icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_title() {\n\n\t\tif ( this.props.title ) {\n\t\t\treturn this.props.title;\n\t\t} else {\n\t\t\treturn '';\n\t\t}\n\t};\n\n\trender_body() {\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_icon() }\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.render_title() }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.body }\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t);\n\n\t};\n\n\trender_component() {\n\t\treturn ( this.props.custom_react_component );\n\t};\n\n\trender_based_on_mode() {\n\n\t\tif ( 'custom_react_component' == this.props.mode ) {\n\t\t\treturn this.render_component();\n\t\t}\n\n\t\treturn this.render_body();\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-lightbox-background mpwpadmin-lightbox' + this.get_lightbox_visible_class() }>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-outside-click-to-close' } onClick={ this.toggle_lightbox.bind( null, this.state ) } />\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-relative' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-absolute' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-inner' }>\n\t\t\t\t\t\t\t{ this.render_close_button() }\n\t\t\t\t\t\t\t{ this.render_based_on_mode() }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nwindow.MP_WP_Admin_Spinner = class MP_WP_Admin_Spinner extends React.Component{\n\trender(){\n\t\treturn(\n\t\t\t<div className=\"mpwpadmin-spinner\">\n\t\t\t\t<div className=\"mpwpadmin-double-bounce1\"></div>\n\t\t\t\t<div className=\"mpwpadmin-double-bounce2\"></div>\n\t\t\t</div>\n\t\t)\n\t}\n}\n\n// Accepts an all visual states object, a visual tree object acting as a map for the location of the component in question, and a boolean\n// It then recursively goes throguh the component tree object, checking if\nfunction mpwpadmin_visual_state_should_become( all_current_visual_states, map_of_visual_states, visual_state_should_become, default_visual_state ) {\n\n\t// The component tree is a \"map\" that tells use where this component lives within the parent\n\tfor ( var level in map_of_visual_states ) {\n\t\t// If the current component's top-level parent is set in the current visual states object, great! Keep going.\n\t\tif ( all_current_visual_states[level] ) {\n\n\t\t\t// If there are other components ahead of this component in the tree\n\t\t\tif ( typeof map_of_visual_states[level] !== 'undefined' && typeof map_of_visual_states[level] === 'object' && Object.keys(map_of_visual_states[level]).length !== 0){\n\t\t\t\t// Recursively nest down into the next parent component to see if it is set in the current visual states object.\n\t\t\t\tvisual_state_should_become = mpwpadmin_visual_state_should_become( all_current_visual_states[level], map_of_visual_states[level], visual_state_should_become, default_visual_state );\n\t\t\t} else {\n\n\t\t\t\t// If we are at the end of the component tree, and the component level is in the current visual states object, it's in view!\n\t\t\t\tvisual_state_should_become = level;\n\n\t\t\t}\n\t\t} else if ( 'variable' === level ) {\n\n\t\t\t// If we are at the end of the component tree, and the component level is variable, grab the value from the master view object at this level\n\t\t\tif ( Object.keys(all_current_visual_states)[0] ) {\n\t\t\t\tvisual_state_should_become = Object.keys(all_current_visual_states)[0];\n\t\t\t} else {\n\t\t\t\tvisual_state_should_become = default_visual_state;\n\t\t\t}\n\n\t\t} else {\n\t\t\tvisual_state_should_become = default_visual_state;\n\t\t}\n\n\t}\n\n\treturn visual_state_should_become;\n}\n\nwindow.mpwpadmin_set_visual_state_of_component = function mpwpadmin_set_visual_state_of_component( settings ) {\n\n\treturn new Promise( (resolve, reject) => {\n\n\t\t// If we don't have the variables we require, fail.\n\t\tif ( ! settings.component ) {\n\t\t\tthrow new Error( 'The function \"mpwpadmin_set_visual_state_of_component\" is missing required variables' );\n\t\t}\n\n\t\tif ( ! settings.component.props.main_component.state.all_current_visual_states ) {\n\t\t\tthrow new Error( 'A visual states object is required.' );\n\t\t}\n\n\t\tif ( ! settings.component.state.map_of_visual_states ) {\n\t\t\tthrow new Error( 'The component must have a map of the view states stored in the state with the key \"map_of_visual_states\"' );\n\t\t}\n\n\t\tvar new_map_of_visual_states = mpwpadmin_get_default_map_of_visual_states( settings.component.state.map_of_visual_states, settings.default_visual_state );\n\n\t\t// Figure out if the parent component is in view\n\t\tfor ( var level in settings.component.props.main_component.state.all_current_visual_states ) {\n\t\t\tif ( ! new_map_of_visual_states[level] ) {\n\t\t\t\tparent_component_is_in_view = false;\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tparent_component_is_in_view = true;\n\t\t\t}\n\t\t}\n\n\t\t// If the parent component is in view, just set it to a default and do nothing else\n\t\tif ( ! parent_component_is_in_view ) {\n\t\t\tvar visual_state_should_become = settings.default_visual_states.parent_not_in_view;\n\t\t} else {\n\t\t\tvar visual_state_should_become = mpwpadmin_visual_state_should_become( settings.component.props.main_component.state.all_current_visual_states, settings.component.state.map_of_visual_states, false, settings.default_visual_states.parent_in_view );\n\t\t}\n\n\t\t// If the state of the component is already the current state in the master visual states object, do nothing.\n\t\tif ( settings.component.state[settings.name_of_visual_state_variable] == visual_state_should_become ) {\n\n\t\t\tresolve( visual_state_should_become );\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\tif ( ! visual_state_should_become ) {\n\n\t\t\t\tsettings.component.setState( {\n\t\t\t\t\t[settings.name_of_visual_state_variable]: settings.default_visual_states.parent_not_in_view\n\t\t\t\t}, function() {\n\t\t\t\t\t//console.log( 'setting default state to: ' + settings.default_visual_states.parent_not_in_view + ' where default was ' + settings.default_visual_states.parent_in_view );\n\t\t\t\t\tresolve( settings.default_visual_states.parent_not_in_view );\n\t\t\t\t} );\n\n\t\t\t} else {\n\n\t\t\t\tsettings.component.setState( {\n\t\t\t\t\t[settings.name_of_visual_state_variable]: visual_state_should_become\n\t\t\t\t}, function() {\n\t\t\t\t\t//console.log( 'setting visual state to: ' + visual_state_should_become + ' where default was ' + settings.default_visual_states.parent_in_view );\n\t\t\t\t\tresolve( visual_state_should_become );\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t});\n\n}\n\nfunction mpwpadmin_get_default_map_of_visual_states( map_of_visual_states, default_visual_state, new_map_of_visual_states = {}, previous_level = false ) {\n\n\tfor ( var level in map_of_visual_states ) {\n\n\t\t// If there's another level, keep going\n\t\tif ( typeof map_of_visual_states[level] !== 'undefined' && typeof map_of_visual_states[level] === 'object' && Object.keys(map_of_visual_states[level]).length !== 0) {\n\n\t\t\t// If we at a level great than 1\n\t\t\tif ( previous_level ) {\n\t\t\t\tvar temp = {};\n\t\t\t\ttemp[level] = {};\n\t\t\t\tnew_map_of_visual_states[previous_level] = mpwpadmin_get_default_map_of_visual_states( map_of_visual_states[level], default_visual_state, temp, level );\n\t\t\t}\n\t\t\t// If we are at the top level\n\t\t\telse {\n\t\t\t\tnew_map_of_visual_states[level] = {};\n\t\t\t\tnew_map_of_visual_states = mpwpadmin_get_default_map_of_visual_states( map_of_visual_states[level], default_visual_state, new_map_of_visual_states, level );\n\t\t\t}\n\n\t\t\treturn new_map_of_visual_states;\n\t\t}\n\t\t// If the last level is reached and it's variable, or empty, set it to the default state and be done. No more nesting and looping.\n\t\telse if ( 'variable' === level || 0 === Object.keys(map_of_visual_states[level]).length) {\n\t\t\tnew_map_of_visual_states[previous_level][default_visual_state] = {};\n\t\t\treturn new_map_of_visual_states;\n\t\t}\n\t\t// If there's no more levels, and the last level isn't \"variable\", set it to the current level and be done. No more nesting and looping.\n\t\telse {\n\t\t\tnew_map_of_visual_states[previous_level][level] = {};\n\t\t\treturn new_map_of_visual_states;\n\t\t}\n\t}\n\n}\n"],"sourceRoot":""}1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/libraries/mpwpadmin/js/src/index.js","webpack:///./assets/libraries/mpwpadmin/js/src/welcome-view.js","webpack:///./assets/libraries/mpwpadmin/js/src/health-check-view.js","webpack:///./assets/libraries/mpwpadmin/js/src/checkbox-field.js","webpack:///./assets/libraries/mpwpadmin/js/src/file-upload-field.js","webpack:///./assets/libraries/mpwpadmin/js/src/input-field.js","webpack:///./assets/libraries/mpwpadmin/js/src/list-view.js","webpack:///./assets/libraries/mpwpadmin/js/src/select-field.js","webpack:///./assets/libraries/mpwpadmin/js/src/settings-view.js","webpack:///./assets/libraries/mpwpadmin/js/src/textarea-field.js","webpack:///./assets/libraries/mpwpadmin/js/src/main.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","window","MP_WP_Admin_Welcome_View","_React$Component","props","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","_inherits","_createClass","render_sections","sections","mapper","section_key","DynamicReactComponent","eval","push","React","createElement","className","main_component","section_info","map","view","index","breadcrumbs","the_breadcrumbs","view_slug","breadcrumb","current_view_class","render_breadcrumbs","view_info","Component","MP_WP_Admin_Instruction","_React$Component2","instruction","MP_WP_Admin_Health_Check_View","_this","state","lightbox_open","title","body","_this2","setState","total_unhealthy_checks","health_check_key","event","_this3","Promise","resolve","reject","set_all_current_visual_states","_defineProperty","then","suffix","_this4","set_lightbox_for_health_check","render_lightbox","health_checks","wizard_steps","wizard_step_vars","next_wizard_step","get_next_wizard_step_key","dynamic_react_component","data","slug_suffix","this_lightbox_slug","next_lightbox_slug","fixing_it_again","MP_WP_Admin_Lightbox","slug","custom_react_component","current_wizard_step_key","current_key_match_found","wizard_step_key","unhealthy_icon","_this5","onClick","reset_lightbox_for_health_check","render_unhealthy_icon","render_health_checks","health_check_vars","render_wizard_steps","MP_WP_Admin_Checkbox_Field","props_loaded","input_value","saved_status","in_initial_state","validated","client_validation_callback_function","default_value","error_code","input_delay","get_input_field_class","_assertThisInitialized","get_input_instruction_class","get_input_instruction_message","set_state","saved_value","state_key","state_value","postData","FormData","append","relation_id","id","server_validation_callback_function","nonce","this_component","fetch","server_api_endpoint_url","method","credentials","headers","response","status","json","success","update_context","result","console","log","catch","err","current_instruction","get_current_instruction_key","instruction_codes","instruction_type","instruction_message","target","checked","is_validated","old_input_value","new_input_value","clearTimeout","setTimeout","save_value_to_server","replace_input_field_with","inputProps","class_name","handle_input_change","placeholder","step","min","max","disabled","selected_text","unselected_text","render_help_button","help_text","Fragment","toggle_help_lightbox","render","react_component","component_data","help_lightbox_output","render_field","MP_WP_Admin_File_Upload_Field","file_preview","use_wp_media_dialog","fileInput","createRef","unique_instruction_message","details","file_to_upload","current","files","URL","createObjectURL","wp_media_dialog_class","style","backgroundImage","mp_core_file_frame","wp","media","button","text","multiple","on","attachment","toJSON","url","split","pop","open","wp_open_media_dialog","upload_file_text","remove_file","remove_file_text","render_file_upload_control_buttons","MP_WP_Admin_Input_Field","type","MP_WP_Admin_List_View","current_view","map_of_visual_states","rows","columns","current_page","total_items","items_per_page","search_term","current_single_item","fetching_single_item","get_single_item_from_server","variable","get_rows_from_server","mpwpadmin_set_visual_state_of_component","component","default_visual_states","parent_in_view","parent_not_in_view","name_of_visual_state_variable","keys","all_current_visual_states","second_slug","third_slug","item_to_fetch","server_api_endpoint_url_single_item","single_item","single_data_view","list_view","Math","ceil","scope","render_rows","td_mapper","first","row","handle_single_row_click","strings","uppercase_search","onChange","handle_search_change","uppercase_items","lowercase_per","lowercase_page","handle_items_per_page_change","uppercase_page","get_total_pages","handle_page_number_change","lowercase_of","render_columns","MP_WP_Admin_Spinner","render_single_data_view","react_component_single_item_view","hidden","handle_list_view_button_click","back_to_list_view","_this6","render_search","render_pagination","render_list_table","render_list_view","MP_WP_Admin_Select_Field","matching_values","initially_available_values","options_hidden","find_matching_available_values","available_values","fetching_status","JSON","stringify","action","fetch_options_endpoint","mpwpadmin_search_term","mpwpadmin_fetch_options_nonce","Content-Type","arguments","length","undefined","option_key","options","toggle_options","render_each_option","no_matching_values_text","handle_option_click","option","handle_keypress","_extends","render_options","MP_WP_Admin_Settings_View","render_settings","settings","doing_sub_setting","context_id","refresh_sections","MP_WP_Admin_TextArea_Field","mpwpadmin_visual_state_should_become","visual_state_should_become","default_visual_state","level","_typeof","mpwpadmin_get_default_map_of_visual_states","new_map_of_visual_states","previous_level","temp","mp_wp_admin_admin_lightbox_vars","description","MP_WP_Admin","all_initial_visual_states","general_config","lightbox_initial_visual_state","lightbox_visual_state","single_page_app_base_url","base_url","dom_node","get_current_view_class","addEventListener","e","on_web_history_change","maybe_refresh_parent_dom_node","mpwpadmin_refresh_nonce","server_endpoint_url_refresh_mpwpadmin","ReactDOM","findDOMNode","parentNode","obj","new_url_path","depth","component_visual_state","build_new_url_path","new_state","new_lightbox_state","_history$pushState","screen","width","scrollIntoView","behavior","new_url","history","pushState","app_slug","history_state","initial_lightbox_visual_state","view_in_question","views","MP_WP_Admin_View_Button","is_top_level","render_actual_views","doing_sub_tabs","current_visual_state","sub_tabs","render_left_side_navigation_buttons","sub_menus","get_current_button_class","handle_button_click","visual_name","render_submenu","_React$Component3","has_mounted","handle_key_press","toggle_lightbox","handle_open_status_based_on_url","document","removeEventListener","keyCode","aria-label","handle_close_button_click","default_icon","src","render_icon","render_title","render_component","render_body","get_lightbox_visible_class","render_close_button","render_based_on_mode","_React$Component4","apply","Error","parent_component_is_in_view"],"mappings":"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","file":"./assets/libraries/mpwpadmin/js/build/mpwpadmin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import './welcome-view.js';\nimport './health-check-view.js';\nimport './checkbox-field.js';\nimport './file-upload-field.js';\nimport './input-field.js';\nimport './list-view.js';\nimport './select-field.js';\nimport './settings-view.js';\nimport './textarea-field.js';\nimport './main.js';\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\n// This component outputs the settings view and its contents\nwindow.MP_WP_Admin_Welcome_View = class MP_WP_Admin_Welcome_View extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\t}\n\n\trender_sections( sections ) {\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var section_key in sections) {\n\n\t\t\tif ( sections[section_key] ) {\n\t\t\t\tvar DynamicReactComponent = eval( sections[section_key]['react_component'] );\n\n\t\t\t\tmapper.push(\n\t\t\t\t\t<div key={ section_key } className={ 'mpwpadmin-welcome-section-container ' + 'mpwpadmin-welcome-section-' + section_key + '-container' }>\n\t\t\t\t\t\t<h4>{ sections[section_key]['visual_name'] }</h4>\n\t\t\t\t\t\t<p>{ sections[section_key]['description'] }</p>\n\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\tsection_info={ sections[section_key] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\n\t\t}\n\n\t\t// This lets us output the health checks one by one\n\t\treturn mapper.map((view, index) => {\n\t\t\treturn view;\n\t\t})\n\n\t}\n\n\trender_breadcrumbs() {\n\n\t\tvar breadcrumbs = this.props.the_breadcrumbs;\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in breadcrumbs) {\n\n\t\t\tif ( key == this.props.view_slug ) {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] }</span> )\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] } > </span> )\n\t\t\t}\n\n\t\t}\n\n\t\t// This lets us output the breadcrumbs one by one\n\t\treturn mapper.map((breadcrumb, index) => {\n\t\t\treturn breadcrumb;\n\t\t})\n\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-settings-view' + this.props.current_view_class }>\n\t\t\t\t<div className=\"mpwpadmin-breadcrumb\">\n\t\t\t\t\t<h2>{ this.render_breadcrumbs() }</h2>\n\t\t\t\t</div>\n\t\t\t\t{ this.render_sections( this.props.view_info.sections ) }\n\t\t\t</div>\n\t\t)\n\t}\n\n}\n\n\n// This component outputs the settings view and its contents\nwindow.MP_WP_Admin_Instruction = class MP_WP_Admin_Instruction extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-instruction' }>\n\t\t\t\t{ this.props.section_info.instruction }\n\t\t\t</div>\n\t\t)\n\t}\n\n}\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\n// This component outputs the settings view and its contents\nwindow.MP_WP_Admin_Health_Check_View = class MP_WP_Admin_Health_Check_View extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tlightbox_open: false,\n\t\t\ttitle: null,\n\t\t\tbody: null\n\t\t};\n\n\t}\n\n\tcomponentDidMount() {\n\n\t\tthis.setState( {\n\t\t\ttotal_unhealthy_checks: this.props.section_info.total_unhealthy_checks\n\t\t}, () => {\n\n\t\t\tif ( this.state.total_unhealthy_checks !== this.props.main_component.state.total_unhealthy_checks ) {\n\t\t\t\t// Set the number of unhealthy checks\n\t\t\t\tthis.props.main_component.setState( {\n\t\t\t\t\ttotal_unhealthy_checks: this.state.total_unhealthy_checks\n\t\t\t\t} );\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\tif ( this.state.total_unhealthy_checks !== this.props.main_component.state.total_unhealthy_checks ) {\n\t\t\t// Set the number of unhealthy checks\n\t\t\tthis.props.main_component.setState( {\n\t\t\t\ttotal_unhealthy_checks: this.state.total_unhealthy_checks\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tset_lightbox_for_health_check( health_check_key, event ) {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t\t[health_check_key]: {}\n\t\t\t} ).then( () => {\n\t\t\t\tresolve();\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\treset_lightbox_for_health_check( health_check_key, suffix, event ) {\n\n\t\t// Force the \"is_healthy\" paramater to be false before we load the lightbox for this health check\n\t\tthis.setState({\n\t\t\t[health_check_key + '_fixing_it_again']: true\n\t\t}, () => {\n\n\t\t\tthis.setState({\n\t\t\t\t[health_check_key + '_fixing_it_again']: false\n\t\t\t}, () => {\n\t\t\t\tthis.set_lightbox_for_health_check( health_check_key + suffix, event );\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\trender_lightbox( health_checks, health_check_key, suffix ) {\n\n\t\tvar wizard_steps = this.props.section_info.wizard_step_vars;\n\n\t\tvar next_wizard_step = this.get_next_wizard_step_key( wizard_steps, health_check_key );\n\n\t\tif ( health_checks[health_check_key]['react_component'] ) {\n\t\t\tvar DynamicReactComponent = eval( health_checks[health_check_key]['react_component'] );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ health_checks }\n\t\t\t\thealth_check_key={ health_check_key }\n\t\t\t\tslug_suffix={ suffix }\n\t\t\t\tthis_lightbox_slug={ health_check_key + suffix }\n\t\t\t\tnext_lightbox_slug={ next_wizard_step ? next_wizard_step + '_wizard_step' : null }\n\t\t\t\tfixing_it_again={ this.state[health_check_key + '_fixing_it_again'] }\n\t\t\t/>\n\t\t} else {\n\t\t\tvar dynamic_react_component = null;\n\t\t}\n\n\t\treturn (\n\t\t\t<MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ health_check_key + suffix }\n\t\t\t\tmode={ 'custom_react_component' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\t\t);\n\n\t}\n\n\tget_next_wizard_step_key( wizard_steps, current_wizard_step_key ) {\n\t\tvar current_key_match_found = false;\n\n\t\tfor (var wizard_step_key in wizard_steps) {\n\n\t\t\tif ( current_key_match_found ) {\n\t\t\t\treturn wizard_step_key;\n\t\t\t}\n\n\t\t\tif ( current_wizard_step_key == wizard_step_key ) {\n\t\t\t\tcurrent_key_match_found = true;\n\t\t\t}\n\t\t}\n\t}\n\n\t// The Wizard steps are not shown on the health check page, but we need to render their lightboxes out\n\trender_wizard_steps( wizard_steps ) {\n\n\t\tvar mapper = [];\n\n\t\tvar total_unhealthy_checks = 0;\n\n\t\t// This lets us loop through the object\n\t\tfor (var wizard_step_key in wizard_steps) {\n\n\t\t\t// If this check is a wizard step\n\t\t\tif ( wizard_steps[wizard_step_key]['is_wizard_step'] ) {\n\t\t\t\tmapper.push(\n\t\t\t\t\t<div key={ wizard_step_key } className={ 'mpwpadmin-wizard-step-container ' + 'mpwpadmin-wizard-step-' + wizard_step_key + '-container' }>\n\t\t\t\t\t\t{ this.render_lightbox( wizard_steps, wizard_step_key, '_wizard_step' ) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\t// This lets us output the health checks one by one\n\t\treturn mapper.map((view, index) => {\n\t\t\treturn view;\n\t\t})\n\n\t}\n\n\trender_unhealthy_icon( health_checks, health_check_key ) {\n\n\t\tvar unhealthy_icon = 'dashicons-no-alt';\n\n\t\tif ( health_checks[health_check_key]['unhealthy']['health_check_icon'] ) {\n\t\t\tunhealthy_icon = health_checks[health_check_key]['unhealthy']['health_check_icon'];\n\t\t}\n\n\t\treturn( <span className={ 'dashicons ' + unhealthy_icon }></span> );\n\t}\n\n\trender_health_checks( health_checks ) {\n\n\t\tvar mapper = [];\n\n\t\tvar total_unhealthy_checks = 0;\n\n\t\t// This lets us loop through the object\n\t\tfor (var health_check_key in health_checks) {\n\n\t\t\t// If this check is healthy\n\t\t\tif ( health_checks[health_check_key]['is_healthy'] && health_checks[health_check_key]['is_health_check'] ) {\n\n\t\t\t\tmapper.push(\n\t\t\t\t\t<div key={ health_check_key } className={ 'mpwpadmin-health-check-container ' + 'mpwpadmin-health-check-' + health_check_key + '-container' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-icon-container' }>\n\t\t\t\t\t\t\t<span className={ 'dashicons dashicons-yes' }></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-description-container' }>\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-description-text-container' }>\n\t\t\t\t\t\t\t\t{ health_checks[health_check_key]['healthy']['instruction'] }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\t\t\tif ( health_checks[health_check_key]['healthy']['fix_it_again_button_text'] ) {\n\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-description-action-container' }>\n\t\t\t\t\t\t\t\t\t\t\t<button onClick={ this.reset_lightbox_for_health_check.bind( this, health_check_key, '_health_check' ) } className=\"button\">{ health_checks[health_check_key]['healthy']['fix_it_again_button_text'] }</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} )() }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{ this.render_lightbox( health_checks, health_check_key, '_health_check' ) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\n\t\t\t}\n\t\t\t// If this check is unhealthy\n\t\t\telse {\n\n\t\t\t\tif ( health_checks[health_check_key]['is_health_check'] ) {\n\t\t\t\t\tmapper.push(\n\t\t\t\t\t\t<div key={ health_check_key } className={ 'mpwpadmin-health-check-container ' + 'mpwpadmin-health-check-' + health_check_key + '-container' }>\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-icon-container' }>\n\t\t\t\t\t\t\t\t{ this.render_unhealthy_icon( health_checks, health_check_key ) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-description-container' }>\n\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-description-text-container' }>\n\t\t\t\t\t\t\t\t\t{ health_checks[health_check_key]['unhealthy']['instruction'] }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-health-check-description-action-container' }>\n\t\t\t\t\t\t\t\t\t<button onClick={ this.set_lightbox_for_health_check.bind( this, health_check_key + '_health_check' ) } className=\"button\">{ health_checks[health_check_key]['unhealthy']['fix_it_button_text'] }</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ this.render_lightbox( health_checks, health_check_key, '_health_check' ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\t// This lets us output the health checks one by one\n\t\treturn mapper.map((view, index) => {\n\t\t\treturn view;\n\t\t})\n\n\t}\n\n\trender_breadcrumbs() {\n\n\t\tvar breadcrumbs = this.props.the_breadcrumbs;\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in breadcrumbs) {\n\n\t\t\tif ( key == this.props.view_slug ) {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] }</span> )\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] } > </span> )\n\t\t\t}\n\n\t\t}\n\n\t\t// This lets us output the breadcrumbs one by one\n\t\treturn mapper.map((breadcrumb, index) => {\n\t\t\treturn breadcrumb;\n\t\t})\n\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-settings-view' }>\n\t\t\t\t<div className=\"mpwpadmin-breadcrumb\">\n\t\t\t\t\t<h2>{ this.render_breadcrumbs() }</h2>\n\t\t\t\t</div>\n\t\t\t\t{ this.render_health_checks( this.props.section_info.health_check_vars ) }\n\t\t\t\t{ this.render_wizard_steps( this.props.section_info.wizard_step_vars ) }\n\t\t\t</div>\n\t\t)\n\t}\n\n}\n","window.MP_WP_Admin_Checkbox_Field = class MP_WP_Admin_Checkbox_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tinput_value: '',\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tvalidated: window[this.props.props.client_validation_callback_function]( this.props.props.default_value ),\n\t\t\tlightbox_open: false,\n\t\t\terror_code: null\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\t};\n\n\tcomponentDidMount() {\n\n\t\t//Server side checkboxes = strings. Client side checkboxes = boolean. This allows for a checked initial state.\n\t\tif ( 'true' == this.props.props.saved_value || 'false' == this.props.props.saved_value ) {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: 'true' == this.props.props.saved_value ? true : false\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: 'true' == this.props.props.default_value ? true : false\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tsave_value_to_server( value ) {\n\n\t\tthis.setState( {\n\t\t\tsaved_status: 'saving',\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_setting_id', this.props.id);\n\t\tpostData.append('mpwpadmin_setting_value', value);\n\t\tpostData.append('mpwpadmin_validation_callback', this.props.props.server_validation_callback_function);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The value was successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'saved',\n\t\t\t\t\t\t\t\tvalidated: true,\n\t\t\t\t\t\t\t\terror_code: null,\n\t\t\t\t\t\t\t} );\n\n\n\t\t\t\t\t\t\t// Pass the response up the chain to the parent component, where it will handle the data as it needs it.\n\t\t\t\t\t\t\tif ( this_component.props.update_context ) {\n\t\t\t\t\t\t\t\tthis_component.props.update_context( data ).then( function( result ) {\n\t\t\t\t\t\t\t\t\tconsole.log( result );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\t// The value was note successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\t\t\tvalidated: false,\n\t\t\t\t\t\t\t\terror_code: data.error_code,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tget_current_instruction_key() {\n\n\t\t// If the field is empty and we are in an untouched, initial state\n\t\tif ( ! this.state.input_value && this.state.in_initial_state ) {\n\t\t\treturn 'empty_initial';\n\t\t}\n\n\t\tif ( ! this.state.input_value && ! this.state.in_initial_state ) {\n\t\t\treturn 'empty_not_initial';\n\t\t}\n\n\t\t// If the field is not empty, and its been validated\n\t\tif ( this.state.input_value && this.state.validated ) {\n\t\t\treturn 'success';\n\t\t}\n\n\t\t// If the field is not empty, but it isn't valid\n\t\tif ( this.state.input_value && ! this.state.validated && this.state.error_code ) {\n\t\t\treturn this.state.error_code;\n\t\t}\n\n\t\treturn 'success';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\thandle_input_change( event ) {\n\n\t\t// Set the validation of this field\n\t\tif ( ! window[this.props.props.client_validation_callback_function]( event.target.checked ) ) {\n\t\t\tvar is_validated = false;\n\t\t} else {\n\t\t\tvar is_validated = true;\n\t\t}\n\n\t\tvar old_input_value = this.state.input_value;\n\t\tvar new_input_value = event.target.checked;\n\n\t\tthis.setState( {\n\t\t\tin_initial_state: false,\n\t\t\tinput_value: event.target.checked,\n\t\t\tsaved_status: 'typing',\n\t\t\tvalidated: is_validated\n\t\t} );\n\n\t\t// If nothing has changed since the state was last set\n\t\tif ( old_input_value == new_input_value ) {\n\n\t\t\t// Do nothing\n\t\t\treturn false;\n\n\t\t} else {\n\n\t\t\t// Set up a delay which waits to save the tip until .5 seconds after they stop typing.\n\t\t\tif( this.input_delay ) {\n\t\t\t\t// Clear the keypress delay if the user just typed\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis.input_delay = null;\n\t\t\t}\n\n\t\t\tvar this_component = this;\n\n\t\t\t// (Re)-Set up the save to fire in 500ms\n\t\t\tthis.input_delay = setTimeout( function() {\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis_component.save_value_to_server( new_input_value );\n\t\t\t}, 500);\n\n\t\t}\n\n\t};\n\n\trender_field() {\n\n\t\tif ( ! this.state.props_loaded ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\treturn this.props.props.replace_input_field_with;\n\t\t} else {\n\n\t\t\tvar inputProps = {};\n\n\t\t\tinputProps['type'] = 'checkbox';\n\n\t\t\tif ( this.props.class_name ) {\n\t\t\t\tinputProps['className'] = this.props.class_name + this.get_input_field_class();\n\t\t\t} else {\n\t\t\t\tinputProps['className'] = this.get_input_field_class();\n\t\t\t}\n\n\t\t\tif ( this.props.props.name ) {\n\t\t\t\tinputProps['name'] = this.props.props.name;\n\t\t\t}\n\n\t\t\tinputProps['onChange'] = this.handle_input_change.bind( this );\n\n\t\t\tinputProps['checked'] = this.state.input_value;\n\n\t\t\tif ( this.props.props.placeholder ) {\n\t\t\t\tinputProps['placeholder'] = this.props.props.placeholder;\n\t\t\t}\n\n\t\t\tif ( this.props.props.step ) {\n\t\t\t\tinputProps['step'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.min ) {\n\t\t\t\tinputProps['min'] = this.props.props.min;\n\t\t\t}\n\n\t\t\tif ( this.props.props.max ) {\n\t\t\t\tinputProps['max'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.disabled ) {\n\t\t\t\tinputProps['disabled'] = this.props.props.disabled;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<div className=\"mpwpwadmin-checkbox-container\">\n\t\t\t\t<label>\n\t\t\t\t\t<input { ...inputProps } /><span>{ (() => {\n\t\t\t\t\t\t\tif ( this.props.props.selected_text && this.props.props.unselected_text ) {\n\t\t\t\t\t\t\t\tif ( this.state.input_value ) {\n\t\t\t\t\t\t\t\t\treturn this.props.props.selected_text;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn this.props.props.unselected_text;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})()\n\t\t\t\t\t}</span>\n\t\t\t\t</label>\n\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t{ this.render_help_button() }\n\t\t\t\t<span className={ 'mpwpadmin-input-saved-status ' + this.state.saved_status }>{ this.state.saved_status }</span>\n\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_help_button() {\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t<span className={ 'mpwpadmin-input-separator' }> | </span>\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n\ttoggle_help_lightbox() {\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t[this.props.slug]: {}\n\t\t} );\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\tvar help_lightbox_output = null;\n\t\t} else if ( this.props.props.help_text.react_component ) {\n\n\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t/>\n\n\t\t\tvar help_lightbox_output = <MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ this.props.slug }\n\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\n\t\t} else {\n\t\t\tvar help_lightbox_output = \t<MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ this.props.slug }\n\t\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\t/>;\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-input-component-container' }>\n\t\t\t{ this.render_field() }\n\n\t\t\t{ help_lightbox_output }\n\n\t\t\t</div>\n\t\t)\n\t}\n\n};\n","window.MP_WP_Admin_File_Upload_Field = class MP_WP_Admin_File_Upload_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tinput_value: '',\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tvalidated: window[this.props.props.client_validation_callback_function]( this.props.props.default_value ),\n\t\t\tlightbox_open: false,\n\t\t\terror_code: null,\n\t\t\tfile_preview: false,\n\t\t\tuse_wp_media_dialog: true\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\n\t\tthis.fileInput = React.createRef();\n\t};\n\n\tcomponentDidMount() {\n\n\t\tif ( this.props.props.saved_value ) {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tfile_preview: this.props.props.saved_value,\n\t\t\t\tinput_value: this.props.props.saved_value,\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tsave_value_to_server( value ) {\n\n\t\tthis.setState( {\n\t\t\tsaved_status: 'saving',\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_setting_id', this.props.id);\n\t\tpostData.append('mpwpadmin_setting_value', value);\n\t\tpostData.append('mpwpadmin_validation_callback', this.props.props.server_validation_callback_function);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The value was successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'saved',\n\t\t\t\t\t\t\t\tvalidated: true,\n\t\t\t\t\t\t\t\terror_code: null,\n\t\t\t\t\t\t\t\tunique_instruction_message: null\n\t\t\t\t\t\t\t} );\n\n\n\t\t\t\t\t\t\t// Pass the response up the chain to the parent component, where it will handle the data as it needs it.\n\t\t\t\t\t\t\tif ( this_component.props.update_context ) {\n\t\t\t\t\t\t\t\tthis_component.props.update_context( data ).then( function( result ) {\n\t\t\t\t\t\t\t\t\t//console.log( result );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tif ( data.unique_instruction_message ) {\n\t\t\t\t\t\t\t\t// The value was not successfully saved.\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\t\t\t\tvalidated: false,\n\t\t\t\t\t\t\t\t\terror_code: data.error_code,\n\t\t\t\t\t\t\t\t\tunique_instruction_message: data.details\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// The value was not successfully saved.\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\t\t\t\tvalidated: data.error_code,\n\t\t\t\t\t\t\t\t\terror_code: 'error',\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tget_current_instruction_key() {\n\n\t\t// If the field is empty and we are in an untouched, initial state\n\t\tif ( ! this.state.input_value && this.state.in_initial_state ) {\n\t\t\treturn 'empty_initial';\n\t\t}\n\n\t\tif ( ! this.state.input_value && ! this.state.in_initial_state ) {\n\t\t\treturn 'empty_not_initial';\n\t\t}\n\n\t\t// If the field is not empty, and its been validated\n\t\tif ( this.state.input_value && this.state.validated ) {\n\t\t\treturn 'success';\n\t\t}\n\n\t\t// If the field is not empty, but it isn't valid\n\t\tif ( this.state.input_value && ! this.state.validated ) {\n\t\t\treturn this.state.error_code;\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.state.unique_instruction_message ) {\n\t\t\treturn this.state.unique_instruction_message;\n\t\t}\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\tremove_file( event ) {\n\t\tthis.setState( {\n\t\t\tvalidated: true,\n\t\t\tinput_value: '',\n\t\t\terror_code: null,\n\t\t\tfile_preview: false\n\t\t} );\n\n\t\tthis.save_value_to_server( '' );\n\t}\n\n\thandle_input_change( event ) {\n\n\t\tconst file_to_upload = this.fileInput.current.files[0];\n\n\t\t// If they hit \"cancel\" in the file upload dialog\n\t\tif ( ! file_to_upload ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Set the validation of this field\n\t\tif ( ! window[this.props.props.client_validation_callback_function]( file_to_upload ) ) {\n\t\t\tthis.setState( {\n\t\t\t\tvalidated: false,\n\t\t\t\tinput_value: file_to_upload,\n\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\terror_code: 'not_an_image',\n\t\t\t\tfile_preview: false\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t} else {\n\t\t\tvar is_validated = true;\n\t\t}\n\n\t\t// If a file has been selected, try to create a preview of it\n\t\tif ( file_to_upload ) {\n\t\t\tvar file_preview = URL.createObjectURL( file_to_upload );\n\t\t} else {\n\t\t\tvar file_preview = '';\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tin_initial_state: false,\n\t\t\tinput_value: file_to_upload,\n\t\t\tsaved_status: 'typing',\n\t\t\tvalidated: is_validated,\n\t\t\tfile_preview: file_preview\n\t\t} );\n\n\t\t// Set up a delay which waits to save the file until the user is done typing (if they happen to be typing)\n\t\tif( this.input_delay ) {\n\t\t\t// Clear the keypress delay if the user just typed\n\t\t\tclearTimeout( this.input_delay );\n\t\t\tthis.input_delay = null;\n\t\t}\n\n\t\t// (Re)-Set up the save to fire in 500ms\n\t\tthis.input_delay = setTimeout( () => {\n\n\t\t\tclearTimeout( this.input_delay );\n\n\t\t\tthis.save_value_to_server( file_to_upload );\n\n\t\t}, 500);\n\n\t};\n\n\trender_field() {\n\n\t\tif ( ! this.state.props_loaded ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\treturn this.props.props.replace_input_field_with;\n\t\t} else {\n\n\t\t\tvar inputProps = {};\n\n\t\t\tif ( this.state.use_wp_media_dialog ) {\n\t\t\t\tvar wp_media_dialog_class = 'mpwpadmin-wp-media-dialog-input';\n\t\t\t} else {\n\t\t\t\tvar wp_media_dialog_class = '';\n\t\t\t}\n\n\t\t\tif ( this.props.class_name ) {\n\t\t\t\tinputProps['className'] = this.props.class_name + this.get_input_field_class() + ' ' + wp_media_dialog_class;\n\t\t\t} else {\n\t\t\t\tinputProps['className'] = this.get_input_field_class();\n\t\t\t}\n\n\t\t\tif ( this.props.props.name ) {\n\t\t\t\tinputProps['name'] = this.props.props.name;\n\t\t\t}\n\n\t\t\tinputProps['onChange'] = this.handle_input_change.bind( this );\n\n\t\t\tif ( this.state.use_wp_media_dialog ) {\n\t\t\t\tinputProps['type'] = 'text';\n\t\t\t\tinputProps['value'] = this.state.input_value;\n\t\t\t} else {\n\t\t\t\tinputProps['type'] = 'file';\n\t\t\t}\n\n\t\t\tinputProps['ref'] = this.fileInput;\n\n\t\t\tinputProps['title'] = \" \";\n\n\t\t\tif ( this.props.props.placeholder ) {\n\t\t\t\tinputProps['placeholder'] = this.props.props.placeholder;\n\t\t\t}\n\n\t\t\tif ( this.props.props.step ) {\n\t\t\t\tinputProps['step'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.min ) {\n\t\t\t\tinputProps['min'] = this.props.props.min;\n\t\t\t}\n\n\t\t\tif ( this.props.props.max ) {\n\t\t\t\tinputProps['max'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.disabled ) {\n\t\t\t\tinputProps['disabled'] = this.props.props.disabled;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<React.Fragment>\n\t\t\t\t\t{ (() => {\n\t\t\t\t\t\tif ( this.state.file_preview ) {\n\t\t\t\t\t\t\treturn ( <div className=\"mpwpadmin-file-preview-container\" style={ {\n\t\t\t\t\t\t\t\tbackgroundImage: 'url(' + this.state.file_preview + ')',\n\t\t\t\t\t\t\t} } ></div> );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t})()\n\t\t\t\t\t}\n\t\t\t\t\t<input { ...inputProps } />\n\t\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t\t\t{ this.render_help_button() }\n\t\t\t\t\t\t<span className={ 'mpwpadmin-input-saved-status ' + this.state.saved_status }>{ this.state.saved_status }</span>\n\t\t\t\t\t</span>\n\t\t\t\t</React.Fragment>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_help_button() {\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t<span className={ 'mpwpadmin-input-separator' }> | </span>\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n\twp_open_media_dialog() {\n\n\t\t// create and open new file frame\n\t\tvar mp_core_file_frame = wp.media({\n\t\t\t//Title of media manager frame\n\t\t\ttitle: 'Select an item',\n\t\t\tbutton: {\n\t\t\t\t//Button text\n\t\t\t\ttext: 'Use Item'\n\t\t\t},\n\t\t\t//Do not allow multiple files, if you want multiple, set true\n\t\t\tmultiple: false,\n\t\t});\n\n\t\tvar this_component = this;\n\n\t\t//callback for selected image\n\t\tmp_core_file_frame.on('select', function() {\n\n\t\t\tvar selection = mp_core_file_frame.state().get('selection');\n\n\t\t\tselection.map(function(attachment) {\n\n\t\t\t\tattachment = attachment.toJSON();\n\n\t\t\t\t//if this is an image, display the thumbnail above the upload button\n\t\t\t\tvar ext = attachment.url.split('.').pop();\n\n\t\t\t\t// Set the validation of this field\n\t\t\t\tif ( ! window[this_component.props.props.client_validation_callback_function]( attachment.url ) ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\tvalidated: false,\n\t\t\t\t\t\tinput_value: attachment.url,\n\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\terror_code: 'invalid_image',\n\t\t\t\t\t\tfile_preview: false\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\tvalidated: true,\n\t\t\t\t\t\tinput_value: attachment.url,\n\t\t\t\t\t\terror_code: null,\n\t\t\t\t\t\tfile_preview: attachment.url\n\t\t\t\t\t}, () => {\n\n\n\t\t\t\t\t\tthis_component.save_value_to_server( attachment.url );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t});\n\n\t\t// open file frame\n\t\tmp_core_file_frame.open();\n\t}\n\n\ttoggle_help_lightbox() {\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t[this.props.slug]: {}\n\t\t} );\n\n\t}\n\n\trender_file_upload_control_buttons() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpadmin-file-upload-control-button-container\">\n\t\t\t\t{ (() => {\n\t\t\t\t\tif ( this.state.use_wp_media_dialog ) {\n\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t<button className=\"mpwpadmin-file-upload-upload-button button\" onClick={ this.wp_open_media_dialog.bind( this ) } >{ this.props.props.upload_file_text }</button>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t})() }\n\n\t\t\t\t{ (() => {\n\t\t\t\t\tif ( this.state.file_preview ) {\n\t\t\t\t\t\treturn ( <button className=\"mpwpadmin-file-upload-remove-button button\" onClick={ this.remove_file.bind( this ) }>{ this.props.props.remove_file_text }</button> );\n\t\t\t\t\t}\n\t\t\t\t})() }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\tvar help_lightbox_output = null;\n\t\t} else if ( this.props.props.help_text.react_component ) {\n\n\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t/>\n\n\t\t\tvar help_lightbox_output = <MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ this.props.slug }\n\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\n\t\t} else {\n\t\t\tvar help_lightbox_output = \t<MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ this.props.slug }\n\t\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\t/>;\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-input-component-container mpwpadmin-file-upload-component-container' + (() => {\n\t\t\t\t\tif ( this.state.file_preview ) {\n\t\t\t\t\t\treturn ( ' mpwpadmin-has-file-preview' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t})()\n\t\t\t}>\n\n\t\t\t<div className={ 'mpwpadmin-input-label-container'}>\n\t\t\t<label>\n\t\t\t{ this.render_field() }\n\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t{ this.render_file_upload_control_buttons() }\n\n\t\t\t{ help_lightbox_output }\n\n\t</div>\n\t)\n\t}\n\n};\n","window.MP_WP_Admin_Input_Field = class MP_WP_Admin_Input_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tinput_value: '',\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tvalidated: window[this.props.props.client_validation_callback_function]( this.props.props.default_value ),\n\t\t\tlightbox_open: false,\n\t\t\terror_code: null\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\t};\n\n\tcomponentDidMount() {\n\n\t\tif ( this.props.props.saved_value ) {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: this.props.props.saved_value\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: this.props.props.default_value\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tsave_value_to_server( value ) {\n\n\t\tthis.setState( {\n\t\t\tsaved_status: 'saving',\n\t\t} );\n\n\t\t// We'll auto save the entered tip note into the database's transaction field via ajax every time the person stops typing for 1 second.\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_setting_id', this.props.id);\n\t\tpostData.append('mpwpadmin_setting_value', value);\n\t\tpostData.append('mpwpadmin_validation_callback', this.props.props.server_validation_callback_function);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The value was successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'saved',\n\t\t\t\t\t\t\t\tvalidated: true,\n\t\t\t\t\t\t\t\terror_code: null,\n\t\t\t\t\t\t\t} );\n\n\n\t\t\t\t\t\t\t// Pass the response up the chain to the parent component, where it will handle the data as it needs it.\n\t\t\t\t\t\t\tif ( this_component.props.update_context ) {\n\t\t\t\t\t\t\t\tthis_component.props.update_context( data );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\t// The value was note successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\t\t\tvalidated: false,\n\t\t\t\t\t\t\t\terror_code: data.error_code,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tget_current_instruction_key() {\n\n\t\t// If the field is empty and we are in an untouched, initial state\n\t\tif ( ! this.state.input_value && this.state.in_initial_state ) {\n\t\t\treturn 'empty_initial';\n\t\t}\n\n\t\tif ( ! this.state.input_value && ! this.state.in_initial_state ) {\n\t\t\treturn 'empty_not_initial';\n\t\t}\n\n\t\t// If the field is not empty, and its been validated\n\t\tif ( this.state.input_value && this.state.validated ) {\n\t\t\treturn 'success';\n\t\t}\n\n\t\t// If the field is not empty, but it isn't valid\n\t\tif ( this.state.input_value && ! this.state.validated ) {\n\t\t\treturn this.state.error_code;\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\thandle_input_change( event ) {\n\n\t\t// Set the validation of this field\n\t\tif ( ! window[this.props.props.client_validation_callback_function]( event.target.value ) ) {\n\t\t\tvar is_validated = false;\n\t\t} else {\n\t\t\tvar is_validated = true;\n\t\t}\n\n\t\tvar old_input_value = this.state.input_value;\n\t\tvar new_input_value = event.target.value;\n\n\t\tif ( new_input_value ) {\n\t\t\tnew_input_value = new_input_value;\n\t\t} else {\n\t\t\tnew_input_value = this.props.props.default_value;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tin_initial_state: false,\n\t\t\tinput_value: event.target.value,\n\t\t\tsaved_status: 'typing',\n\t\t\tvalidated: is_validated\n\t\t} );\n\n\t\t// If nothing has changed since the state was last set\n\t\tif ( old_input_value == new_input_value ) {\n\n\t\t\t// Do nothing\n\t\t\treturn false;\n\n\t\t} else {\n\n\t\t\t// Set up a delay which waits to save the tip until .5 seconds after they stop typing.\n\t\t\tif( this.input_delay ) {\n\t\t\t\t// Clear the keypress delay if the user just typed\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis.input_delay = null;\n\t\t\t}\n\n\t\t\tvar this_component = this;\n\n\t\t\t// (Re)-Set up the save to fire in 500ms\n\t\t\tthis.input_delay = setTimeout( function() {\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis_component.save_value_to_server( new_input_value );\n\t\t\t}, 500);\n\n\t\t}\n\n\t};\n\n\trender_field() {\n\n\t\tif ( ! this.state.props_loaded ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\treturn this.props.props.replace_input_field_with;\n\t\t} else {\n\n\t\t\tvar inputProps = {};\n\n\t\t\tif ( this.props.props.type ) {\n\t\t\t\tinputProps['type'] = this.props.props.type;\n\t\t\t}\n\n\t\t\tif ( this.props.class_name ) {\n\t\t\t\tinputProps['className'] = this.props.class_name + this.get_input_field_class();\n\t\t\t} else {\n\t\t\t\tinputProps['className'] = this.get_input_field_class();\n\t\t\t}\n\n\t\t\tif ( this.props.props.name ) {\n\t\t\t\tinputProps['name'] = this.props.props.name;\n\t\t\t}\n\n\t\t\tinputProps['onChange'] = this.handle_input_change.bind( this );\n\n\t\t\tinputProps['value'] = this.state.input_value;\n\n\t\t\tif ( this.props.props.placeholder ) {\n\t\t\t\tinputProps['placeholder'] = this.props.props.placeholder;\n\t\t\t}\n\n\t\t\tif ( this.props.props.step ) {\n\t\t\t\tinputProps['step'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.min ) {\n\t\t\t\tinputProps['min'] = this.props.props.min;\n\t\t\t}\n\n\t\t\tif ( this.props.props.max ) {\n\t\t\t\tinputProps['max'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.disabled ) {\n\t\t\t\tinputProps['disabled'] = this.props.props.disabled;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<React.Fragment>\n\t\t\t\t\t<input { ...inputProps } />\n\t\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t\t\t{ this.render_help_button() }\n\t\t\t\t\t\t<span className={ 'mpwpadmin-input-saved-status ' + this.state.saved_status }>{ this.state.saved_status }</span>\n\t\t\t\t\t</span>\n\t\t\t\t</React.Fragment>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_help_button() {\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t<span className={ 'mpwpadmin-input-separator' }> | </span>\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n\ttoggle_help_lightbox() {\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t[this.props.slug]: {}\n\t\t} );\n\n\t}\n\n\trender(){\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\tvar help_lightbox_output = null;\n\t\t} else if ( this.props.props.help_text.react_component ) {\n\n\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t/>\n\n\t\t\tvar help_lightbox_output = <MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ this.props.slug }\n\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\n\t\t} else {\n\t\t\tvar help_lightbox_output = \t<MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ this.props.slug }\n\t\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\t/>;\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-input-component-container' }>\n\t\t\t<label>\n\t\t\t{ this.render_field() }\n\t\t\t</label>\n\n\t\t\t{ help_lightbox_output }\n\n\t\t\t</div>\n\t\t)\n\t}\n\n};\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\nwindow.MP_WP_Admin_List_View = class MP_WP_Admin_List_View extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tcurrent_view: 'list_view',\n\t\t\tmap_of_visual_states: null,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t\tcurrent_page: 1,\n\t\t\ttotal_items: 1,\n\t\t\titems_per_page: 1,\n\t\t\tsearch_term: '',\n\t\t\tcurrent_single_item: null,\n\t\t\tfetching_single_item: false,\n\t\t}\n\n\t\tthis.get_single_item_from_server = this.get_single_item_from_server.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\n\t\tthis.setState( {\n\t\t\tmap_of_visual_states: {\n\t\t\t\t[this.props.view_slug]: {\n\t\t\t\t\tvariable: {}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttotal_items: this.props.view_info.total_items,\n\t\t\titems_per_page: this.props.view_info.items_per_page,\n\t\t\trows: this.props.view_info.rows,\n\t\t\tcolumns: this.props.view_info.columns\n\t\t}, () => {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\tmpwpadmin_set_visual_state_of_component( {\n\t\t\tcomponent: this,\n\t\t\tdefault_visual_states: {\n\t\t\t\tparent_in_view: 'list_view',\n\t\t\t\tparent_not_in_view: 'none'\n\t\t\t},\n\t\t\tname_of_visual_state_variable: 'current_view'\n\t\t} );\n\n\t\t// If the 3rd level in the URL exists, (this could likely be more robust) set the current item to that\n\t\tif (\n\t\t\tObject.keys(this.props.main_component.state.all_current_visual_states)[0] &&\n\t\t\tthis.props.main_component.state.all_current_visual_states[this.props.view_slug] &&\n\t\t\tObject.keys(this.props.main_component.state.all_current_visual_states[this.props.view_slug])[0]\n\t\t) {\n\t\t\tvar second_slug = Object.keys(this.props.main_component.state.all_current_visual_states[this.props.view_slug])[0];\n\t\t\tif( Object.keys(this.props.main_component.state.all_current_visual_states[this.props.view_slug][second_slug])[0] ) {\n\t\t\t\tvar third_slug = Object.keys(this.props.main_component.state.all_current_visual_states[this.props.view_slug][second_slug])[0];\n\n\t\t\t\t// If the current single item ID does not match the item ID in the URL\n\t\t\t\tif ( ! this.state.current_single_item || ( this.state.current_single_item && this.state.current_single_item.id && third_slug !== this.state.current_single_item.id.value ) ) {\n\t\t\t\t\tthis.get_single_item_from_server( third_slug );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tget_rows_from_server() {\n\n\t\tif ( ! this.state.items_per_page ) {\n\t\t\tvar items_per_page = 20;\n\t\t} else {\n\t\t\tvar items_per_page = this.state.items_per_page;\n\t\t}\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_list_view_id', this.props.view_slug);\n\t\tpostData.append('mpwpadmin_list_view_search_term', this.state.search_term);\n\t\tpostData.append('mpwpadmin_list_view_page_id', this.state.current_page);\n\t\tpostData.append('mpwpadmin_items_per_page', items_per_page);\n\t\tpostData.append('mpwpadmin_list_view_items_per_page', this.state.items_per_page);\n\t\tpostData.append('mpwpadmin_nonce', this.props.view_info.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcolumns: data.columns,\n\t\t\t\t\t\t\t\trows: data.rows,\n\t\t\t\t\t\t\t\ttotal_items: data.total_items\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\trows: 'Unable to fetch rows...'\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_page_number_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tcurrent_page: event.target.value,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\tget_single_item_from_server( item_to_fetch ) {\n\n\t\tif ( this.state.fetching_single_item ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tfetching_single_item: true,\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_list_view_id', this.props.view_slug);\n\t\tpostData.append('mpwpadmin_list_view_item_id', item_to_fetch);\n\t\tpostData.append('mpwpadmin_nonce', this.props.view_info.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_single_item, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success && data.current_single_item ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcurrent_single_item: data.current_single_item,\n\t\t\t\t\t\t\t\tfetching_single_item: false,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcurrent_single_item: 'none_found',\n\t\t\t\t\t\t\t\tfetching_single_item: false,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_items_per_page_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tcurrent_page: 1,\n\t\t\titems_per_page: event.target.value,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\thandle_search_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tsearch_term: event.target.value,\n\t\t\tcurrent_page: 1,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\thandle_single_row_click( single_item, event ) {\n\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {\n\t\t\t\tsingle_data_view: {\n\t\t\t\t\t[single_item['id']['value']]: {} // Use the value in the first column as the URL slug\n\t\t\t\t}\n\t\t\t}\n\t\t} ).then( () => {\n\t\t\tthis.setState( {\n\t\t\t\tcurrent_single_item: single_item\n\t\t\t} );\n\t\t} );\n\n\t}\n\n\thandle_list_view_button_click(){\n\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {\n\t\t\t\tlist_view: {}\n\t\t\t}\n\t\t} );\n\n\t}\n\n\tget_total_pages() {\n\t\treturn Math.ceil( this.state.total_items / this.state.items_per_page );\n\t}\n\n\trender_breadcrumbs() {\n\n\t\tvar breadcrumbs = this.props.the_breadcrumbs;\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in breadcrumbs) {\n\n\t\t\tif ( key == this.props.view_slug ) {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] }</span> )\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] } > </span> )\n\t\t\t}\n\n\t\t}\n\n\t\t// This lets us output the breadcrumbs one by one\n\t\treturn mapper.map((breadcrumb, index) => {\n\t\t\treturn breadcrumb;\n\t\t})\n\n\t}\n\n\trender_columns( columns ) {\n\n\t\tif ( ! columns ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar mapper = [];\n\n\t\t// Loop through each column\n\t\tfor (var key in columns) {\n\t\t\tmapper.push(\n\t\t\t\t<div key={ key } scope=\"col\" className=\"mpwpadmin-list-view-column\">\n\t\t\t\t\t<span>{ columns[key] }</span>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn mapper;\n\t}\n\n\trender_rows( rows, columns ) {\n\n\t\tvar mapper = [];\n\t\tvar td_mapper = [];\n\n\t\tif ( ! rows || 0 == this.state.total_items ) {\n\n\t\t\tvar first = true;\n\n\t\t\tfor (var key in columns) {\n\t\t\t\ttd_mapper.push(\n\n\t\t\t\t\t// Render the contents of this table cell\n\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\tif ( first ) {\n\n\t\t\t\t\t\t\tfirst = false;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t{ 'None Found' }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfirst = false;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t{ '' }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})()\n\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add all of that combined data to the main mapper array\n\t\t\tmapper.push(\n\t\t\t\t<div key={ 'none_found' } className=\"mpwpadmin-list-view-row\">\n\t\t\t\t{ td_mapper }\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\treturn mapper;\n\t\t}\n\n\t\t// Loop through each row\n\t\tfor (var row in rows) {\n\n\t\t\t// Combine all of the table data (cells in this row)\n\t\t\tfor (var key in columns) {\n\t\t\t\ttd_mapper.push(\n\n\t\t\t\t\t// Render the contents of this table cell\n\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\tif ( rows[row][key]['show_in_list_view'] ) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t<button onClick={ this.handle_single_row_click.bind( this, rows[row] ) }>\n\t\t\t\t\t\t\t\t\t{(() => {\n\t\t\t\t\t\t\t\t\t\tif ( rows[row][key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\treturn eval( rows[row][key]['value_format_function'] )( rows[row][key] )\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn rows[row][key]['value']\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})()}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})()\n\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add all of that combined data to the main mapper array\n\t\t\tmapper.push(\n\t\t\t\t<div key={ row } className=\"mpwpadmin-list-view-table-row\">\n\t\t\t\t\t{ td_mapper }\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\t// Get the row data array ready for a new row\n\t\t\ttd_mapper = [];\n\t\t}\n\n\t\treturn mapper;\n\n\t}\n\n\trender_search() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpwadmin-list-view-search\">\n\t\t\t<span>{ this.props.view_info.strings.uppercase_search }</span>\n\t\t\t<input type=\"text\" value={ this.state.search_term } onChange={ this.handle_search_change.bind( this ) } />\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_pagination() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpwadmin-list-view-pagination-controls\">\n\t\t\t\t<div className=\"mpwpwadmin-list-view-items-per-page\">\n\t\t\t\t\t<span>{ this.props.view_info.strings.uppercase_items + ' ' + this.props.view_info.strings.lowercase_per + ' ' + this.props.view_info.strings.lowercase_page }</span>\n\t\t\t\t\t<input type=\"number\" min={ 1 } onChange={ this.handle_items_per_page_change.bind( this ) } value={ this.state.items_per_page } />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mpwpwadmin-list-view-pagination\">\n\t\t\t\t\t<span>{ this.props.view_info.strings.uppercase_page }</span>\n\t\t\t\t\t<input type=\"number\" min={ 1 } max={ this.get_total_pages() } onChange={ this.handle_page_number_change.bind( this ) } value={ this.state.current_page } />\n\t\t\t\t\t<span>{ ' ' + this.props.view_info.strings.lowercase_of + ' ' + this.get_total_pages() }</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_list_table() {\n\n\t\tif ( this.state.columns && this.state.rows ) {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-list-view-table' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-header' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-row' }>\n\t\t\t\t\t\t\t{ this.render_columns( this.state.columns ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-body' }>\n\t\t\t\t\t\t{ this.render_rows( this.state.rows, this.state.columns ) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t} else {\n\t\t\treturn <MP_WP_Admin_Spinner />\n\t\t}\n\n\t}\n\n\trender_single_data_view() {\n\n\t\tif ( 'single_data_view' !== this.state.current_view ) {\n\t\t\treturn ( '' );\n\t\t}\n\n\t\tvar single_item = this.state.current_single_item;\n\n\t\tif ( 'none_found' === single_item || false === single_item ) {\n\t\t\treturn 'No item found';\n\t\t}\n\n\t\tif ( null === single_item || this.state.fetching_single_item ) {\n\t\t\treturn <MP_WP_Admin_Spinner />;\n\t\t}\n\n\t\t// If we've defined a custom React Component to use for the single view, use it.\n\t\tif ( this.props.view_info.react_component_single_item_view ) {\n\n\t\t\tvar DynamicReactComponent = eval( this.props.view_info.react_component_single_item_view );\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\thidden = { (() => { return ( 'single_data_view' != this.state.current_view ? true : false ); })() }\n\t\t\t\t\tclassName=\"mpwpadmin-single-data-view\"\n\t\t\t\t>\n\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\tcurrent_single_item={ this.state.current_single_item }\n\t\t\t\t\t\tview_info={ this.props.view_info }\n\t\t\t\t\t\tget_single_item_from_server= { this.get_single_item_from_server }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\t// Otherwise, fall-back to a default single view\n\t\treturn (\n\t\t\t<div\n\t\t\t\thidden = { (() => { return ( 'single_data_view' != this.state.current_view ? true : false ); })() }\n\t\t\t\tclassName=\"mpwpadmin-single-data-view\"\n\t\t\t>\n\t\t\t\t<div className={ 'mpwpwadmin-list-view-single-data-item-controls' }>\n\t\t\t\t\t<button onClick={ this.handle_list_view_button_click.bind( this ) }>{ this.props.view_info.strings.back_to_list_view }</button>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mpwpadmin-single-data\">\n\t\t\t\t\t{ (() => {\n\n\t\t\t\t\t\tvar mapper = [];\n\t\t\t\t\t\tvar single_item = this.state.current_single_item;\n\n\t\t\t\t\t\t// Loop through all of the items to show about this item\n\t\t\t\t\t\tfor (var key in single_item) {\n\t\t\t\t\t\t\tmapper.push( <div className={ 'mpwpadmin-list-view-single-data-item' } key={ key }>{\n\n\t\t\t\t\t\t\t\t// Render the output for this data value about the current single item (which was selected from the list)\n\t\t\t\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\t\t\t\tif ( single_item[key]['show_in_single_data_view'] ) {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-title' }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ single_item[key]['title'] }\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-value' }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ single_item[key]['value'] }\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn ( '' );\n\n\t\t\t\t\t\t\t\t})()\n\n\t\t\t\t\t\t\t}</div> );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn mapper;\n\t\t\t\t\t})()\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t)\n\n\t}\n\n\trender_list_view() {\n\n\t\treturn(\n\t\t\t<div\n\t\t\thidden = { (() => { return ( 'list_view' != this.state.current_view ? true : false ); })() }\n\t\t\tclassName=\"mpwpadmin-list-view\"\n\t\t\t>\n\t\t\t\t<div className=\"mpwpadmin-list-view-controls\">\n\n\t\t\t\t\t{ this.render_search() }\n\n\t\t\t\t\t{ this.render_pagination() }\n\n\t\t\t\t</div>\n\n\t\t\t\t{ this.render_list_table() }\n\n\t\t\t\t<div className=\"mpwpadmin-list-view-controls\">\n\n\t\t\t\t\t{ this.render_search() }\n\n\t\t\t\t\t{ this.render_pagination() }\n\n\t\t\t\t</div>\n\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-list-view' + this.props.current_view_class }>\n\n\t\t\t<div className=\"mpwpadmin-breadcrumb\">\n\t\t\t<h2>{ this.render_breadcrumbs() }</h2>\n\t\t\t</div>\n\n\t\t\t<div className=\"mpwpadmin-list-view-content-area\">\n\n\t\t\t{ this.render_single_data_view() }\n\n\t\t\t{ this.render_list_view() }\n\n\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n}\n","window.MP_WP_Admin_Select_Field = class MP_WP_Admin_Select_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tinput_value: '',\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tvalidated: window[this.props.props.client_validation_callback_function]( this.props.props.default_value ),\n\t\t\tlightbox_open: false,\n\t\t\tmatching_values: this.props.props.initially_available_values,\n\t\t\terror_code: null,\n\t\t\toptions_hidden: true,\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\t\tthis.find_matching_available_values = this.find_matching_available_values.bind( this );\n\t};\n\n\tcomponentDidMount() {\n\n\t\tif ( this.props.props.saved_value ) {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: this.props.props.saved_value,\n\t\t\t\tavailable_values: this.props.props.initially_available_values\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: this.props.props.default_value,\n\t\t\t\tavailable_values: this.props.props.initially_available_values\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tsave_value_to_server( value ) {\n\n\t\tthis.setState( {\n\t\t\tsaved_status: 'saving',\n\t\t} );\n\n\t\t// We'll auto save the entered tip note into the database's transaction field via ajax every time the person stops typing for 1 second.\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_setting_id', this.props.id);\n\t\tpostData.append('mpwpadmin_setting_value', value);\n\t\tpostData.append('mpwpadmin_validation_callback', this.props.props.server_validation_callback_function);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The value was successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'saved',\n\t\t\t\t\t\t\t\toptions_hidden: true,\n\t\t\t\t\t\t\t\tvalidated: true,\n\t\t\t\t\t\t\t\terror_code: null\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// The value was note successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\t\t\tvalidated: false,\n\t\t\t\t\t\t\t\terror_code: data.error_code\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tfind_matching_available_values( search_term ) {\n\n\t\tthis.setState( {\n\t\t\tfetching_status: 'fetching',\n\t\t} );\n\n\t\t// We'll auto save the entered tip note into the database's transaction field via ajax every time the person stops typing for 1 second.\n\t\tvar postData = JSON.stringify({\n\t\t\taction: this.props.props.fetch_options_endpoint,\n\t\t\tmpwpadmin_search_term: search_term,\n\t\t\tmpwpadmin_fetch_options_nonce: this.props.props.nonce\n\t\t});\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.fetch_options_endpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\"\n\t\t\t},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The value was successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tmatching_values: data.matching_values,\n\t\t\t\t\t\t\t\tfetching_status: 'success',\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// The value was note successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tmatching_values: null,\n\t\t\t\t\t\t\t\tfetching_status: 'unfetched',\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\tget_current_instruction_key() {\n\n\t\t// If the field is empty and we are in an untouched, initial state\n\t\tif ( ! this.state.input_value && this.state.in_initial_state ) {\n\t\t\treturn 'empty_initial';\n\t\t}\n\n\t\tif ( ! this.state.input_value && ! this.state.in_initial_state ) {\n\t\t\treturn 'empty_not_initial';\n\t\t}\n\n\t\t// If the field is not empty, and its been validated\n\t\tif ( this.state.input_value && this.state.validated ) {\n\t\t\treturn 'success';\n\t\t}\n\n\t\t// If the field is not empty, but it isn't valid\n\t\tif ( this.state.input_value && ! this.state.validated ) {\n\t\t\treturn this.state.error_code;\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\ttoggle_options( event ) {\n\n\t\tif ( this.state.options_hidden ) {\n\n\t\t\tthis.setState( {\n\t\t\t\toptions_hidden: false\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\tthis.setState( {\n\t\t\t\toptions_hidden: true\n\t\t\t} );\n\n\t\t}\n\t}\n\n\thandle_input_change( value = null, event = null ) {\n\n\t\tvar old_input_value = this.state.input_value;\n\n\t\tif ( value ) {\n\t\t\tvar new_input_value = value;\n\t\t} else {\n\t\t\tvar new_input_value = event.target.value;\n\t\t}\n\n\t\t// Set the validation of this field\n\t\tif ( ! window[this.props.props.client_validation_callback_function]( new_input_value ) ) {\n\t\t\tvar is_validated = false;\n\t\t} else {\n\t\t\tvar is_validated = true;\n\t\t}\n\n\t\t// If the customer is typing, as opposed to clicking on a value\n\t\tif ( ! value ) {\n\t\t\tthis.find_matching_available_values( new_input_value );\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tin_initial_state: false,\n\t\t\tinput_value: new_input_value,\n\t\t\tsaved_status: 'typing',\n\t\t\tvalidated: is_validated\n\t\t} );\n\n\t\t// If nothing has changed since the state was last set\n\t\tif ( old_input_value == new_input_value ) {\n\n\t\t\t// Do nothing\n\t\t\treturn false;\n\n\t\t} else {\n\n\t\t\t// Set up a delay which waits to save the value until .5 seconds after they stop typing.\n\t\t\tif( this.input_delay ) {\n\t\t\t\t// Clear the keypress delay if the user just typed\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis.input_delay = null;\n\t\t\t}\n\n\t\t\tvar this_component = this;\n\n\t\t\t// (Re)-Set up the save to fire in 500ms\n\t\t\tthis.input_delay = setTimeout( function() {\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis_component.save_value_to_server( new_input_value );\n\t\t\t}, 500);\n\n\t\t}\n\n\t};\n\n\thandle_keypress( event ) {\n\n\t\tthis.setState( {\n\t\t\toptions_hidden: false\n\t\t} );\n\n\t}\n\n\thandle_option_click( option_key, event ) {\n\n\t\tthis.setState( {\n\t\t\toptions_hidden: true\n\t\t}, function() {\n\t\t\tthis.handle_input_change( option_key );\n\t\t} );\n\t}\n\n\trender_options() {\n\n\t\tvar options = this.state.matching_values;\n\n\t\tif ( ! options ) {\n\t\t\treturn (\n\t\t\t\t<p>{ this.props.props.no_matching_values_text }</p>\n\t\t\t)\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-select-field-options'}>\n\t\t\t<button className=\"button\" onClick={ this.toggle_options.bind( this ) }>Show options</button>\n\t\t\t<ul hidden={ this.state.options_hidden }>\n\t\t\t{ this.render_each_option( options ) }\n\t\t\t</ul>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_each_option( options ) {\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in options ) {\n\t\t\tmapper.push( <li key={ key } value={ key }>\n\t\t\t\t<button onClick={ this.handle_option_click.bind( this, key ) }>\n\t\t\t\t{ key }\n\t\t\t\t</button>\n\t\t\t\t</li> )\n\t\t\t}\n\n\t\t\t// This lets us output the options one by one\n\t\t\treturn mapper.map(( option, index) => {\n\t\t\t\treturn option;\n\t\t\t})\n\t\t}\n\n\t\trender_field() {\n\n\t\t\tif ( ! this.state.props_loaded ) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\t\treturn this.props.props.replace_input_field_with;\n\t\t\t} else {\n\n\t\t\t\tvar inputProps = {};\n\n\t\t\t\tif ( this.props.props.type ) {\n\t\t\t\t\tinputProps['type'] = this.props.props.type;\n\t\t\t\t}\n\n\t\t\t\tif ( this.props.class_name ) {\n\t\t\t\t\tinputProps['className'] = this.props.class_name + this.get_input_field_class();\n\t\t\t\t} else {\n\t\t\t\t\tinputProps['className'] = this.get_input_field_class();\n\t\t\t\t}\n\n\t\t\t\tif ( this.props.props.name ) {\n\t\t\t\t\tinputProps['name'] = this.props.props.name;\n\t\t\t\t}\n\n\t\t\t\tif ( this.props.props.placeholder ) {\n\t\t\t\t\tinputProps['placeholder'] = this.props.props.placeholder;\n\t\t\t\t}\n\n\t\t\t\tinputProps['onChange'] = this.handle_input_change.bind( this, null );\n\n\t\t\t\tinputProps['onKeyPress'] = this.handle_keypress.bind( this );\n\n\t\t\t\tinputProps['value'] = this.state.input_value;\n\n\t\t\t\tif ( this.props.props.step ) {\n\t\t\t\t\tinputProps['step'] = this.props.props.step;\n\t\t\t\t}\n\n\t\t\t\tif ( this.props.props.min ) {\n\t\t\t\t\tinputProps['min'] = this.props.props.min;\n\t\t\t\t}\n\n\t\t\t\tif ( this.props.props.max ) {\n\t\t\t\t\tinputProps['max'] = this.props.props.step;\n\t\t\t\t}\n\n\t\t\t\tif ( this.props.props.disabled ) {\n\t\t\t\t\tinputProps['disabled'] = this.props.props.disabled;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t<input type=\"text\" { ...inputProps } />\n\t\t\t\t\t{ this.render_options() }\n\t\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t\t\t{ this.render_help_button() }\n\t\t\t\t\t\t<span className={ 'mpwpadmin-input-saved-status ' + this.state.saved_status }>{ this.state.saved_status }</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\trender_help_button() {\n\n\t\t\tif ( ! this.props.props.help_text ) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn(\n\t\t\t\t<React.Fragment>\n\t\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t\t<span className={ 'mpwpadmin-input-separator' }> | </span>\n\t\t\t\t</React.Fragment>\n\t\t\t);\n\n\t\t}\n\n\t\ttoggle_help_lightbox() {\n\n\t\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t\t[this.props.slug]: {}\n\t\t\t} );\n\n\t\t}\n\n\t\trender(){\n\n\t\t\tif ( ! this.props.props.help_text ) {\n\t\t\t\tvar help_lightbox_output = null;\n\t\t\t} else if ( this.props.props.help_text.react_component ) {\n\n\t\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t\t/>\n\n\t\t\t\tvar help_lightbox_output = <MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ this.props.slug }\n\t\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t\t/>\n\n\t\t\t} else {\n\t\t\t\tvar help_lightbox_output = \t<MP_WP_Admin_Lightbox\n\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\tslug={ this.props.slug }\n\t\t\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\t\t/>;\n\t\t\t}\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-input-component-container mpwpadmin-select-container' }>\n\n\t\t\t\t<label>\n\t\t\t\t{ this.render_field() }\n\t\t\t\t</label>\n\n\t\t\t\t{ help_lightbox_output }\n\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\n\t};\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\n// This component outputs the settings view and its contents\nwindow.MP_WP_Admin_Settings_View = class MP_WP_Admin_Settings_View extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\t}\n\n\trender_settings( settings, doing_sub_setting = false ) {\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in settings) {\n\n\t\t\t// If this area has its own sub settings\n\t\t\tif ( settings[key]['settings'] ) {\n\n\t\t\t\t// Call this function again to output all sub settings, inception style\n\t\t\t\tmapper.push(\n\t\t\t\t\t<div key={ key } className={ 'mpwpadmin-setting-container ' + 'mpwpadmin-setting-' + key + '-container' }>\n\t\t\t\t\t\t<h2>{ settings[key]['visual_name'] }</h2>\n\t\t\t\t\t\t{ this.render_settings( settings[key]['settings'], true ) }\n\t\t\t\t\t</div>\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tvar DynamicReactComponent = eval( settings[key]['react_component'] );\n\n\t\t\t\tmapper.push(\n\t\t\t\t\t<div key={ key } className={ 'mpwpadmin-setting-container ' + 'mpwpadmin-setting-' + key + '-container' }>\n\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\tid={ key }\n\t\t\t\t\t\t\tslug={ key }\n\t\t\t\t\t\t\tprops={ settings[key] }\n\t\t\t\t\t\t\tclass_name={ 'mpwpadmin-setting mpwpadmin-setting-' + key }\n\t\t\t\t\t\t\tcontext_id={ null }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\n\t\t}\n\n\t\t// If we are doing a sub-setting, return the mapper here so it gets rejoined with the parent mapper. We're doing some method inception here.\n\t\tif ( doing_sub_setting ) {\n\n\t\t\treturn mapper;\n\n\t\t} else {\n\n\t\t\t// This lets us output the settings one by one\n\t\t\treturn mapper.map((view, index) => {\n\t\t\t\treturn view;\n\t\t\t})\n\t\t}\n\n\t}\n\n\trender_breadcrumbs() {\n\n\t\tvar breadcrumbs = this.props.the_breadcrumbs;\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in breadcrumbs) {\n\n\t\t\tif ( key == this.props.view_slug ) {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] }</span> )\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tmapper.push( <span key={ key }>{ breadcrumbs[key] } > </span> )\n\t\t\t}\n\n\t\t}\n\n\t\t// This lets us output the breadcrumbs one by one\n\t\treturn mapper.map((breadcrumb, index) => {\n\t\t\treturn breadcrumb;\n\t\t})\n\n\t}\n\n\trender() {\n\n\t\t// If we should be refreshing the sections, unmount and remount everything.\n\t\tif ( this.props.main_component.state.refresh_sections ) {\n\t\t\treturn ( '' );\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-settings-view' + this.props.current_view_class }>\n\t\t\t\t\t<div className=\"mpwpadmin-breadcrumb\">\n\t\t\t\t\t\t<h2>{ this.render_breadcrumbs() }</h2>\n\t\t\t\t\t</div>\n\t\t\t\t\t{ this.render_settings( this.props.view_info.settings ) }\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n}\n","window.MP_WP_Admin_TextArea_Field = class MP_WP_Admin_TextArea_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tinput_value: '',\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tvalidated: window[this.props.props.client_validation_callback_function]( this.props.props.default_value ),\n\t\t\tlightbox_open: false,\n\t\t\terror_code: null\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\t};\n\n\tcomponentDidMount() {\n\n\t\tif ( this.props.props.saved_value ) {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: this.props.props.saved_value\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.setState( {\n\t\t\t\tprops_loaded: true,\n\t\t\t\tinput_value: this.props.props.default_value\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tsave_value_to_server( value ) {\n\n\t\tthis.setState( {\n\t\t\tsaved_status: 'saving',\n\t\t} );\n\n\t\t// We'll auto save the entered tip note into the database's transaction field via ajax every time the person stops typing for 1 second.\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_setting_id', this.props.id);\n\t\tpostData.append('mpwpadmin_setting_value', value);\n\t\tpostData.append('mpwpadmin_validation_callback', this.props.props.server_validation_callback_function);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The value was successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'saved',\n\t\t\t\t\t\t\t\tvalidated: true,\n\t\t\t\t\t\t\t\terror_code: null,\n\t\t\t\t\t\t\t} );\n\n\n\t\t\t\t\t\t\t// Pass the response up the chain to the parent component, where it will handle the data as it needs it.\n\t\t\t\t\t\t\tif ( this_component.props.update_context ) {\n\t\t\t\t\t\t\t\tthis_component.props.update_context( data ).then( function( result ) {\n\t\t\t\t\t\t\t\t\tconsole.log( result );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\t// The value was note successfully saved.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsaved_status: 'unsaved',\n\t\t\t\t\t\t\t\tvalidated: false,\n\t\t\t\t\t\t\t\terror_code: data.error_code,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tget_current_instruction_key() {\n\n\t\t// If the field is empty and we are in an untouched, initial state\n\t\tif ( ! this.state.input_value && this.state.in_initial_state ) {\n\t\t\treturn 'empty_initial';\n\t\t}\n\n\t\tif ( ! this.state.input_value && ! this.state.in_initial_state ) {\n\t\t\treturn 'empty_not_initial';\n\t\t}\n\n\t\t// If the field is not empty, and its been validated\n\t\tif ( this.state.input_value && this.state.validated ) {\n\t\t\treturn 'success';\n\t\t}\n\n\t\t// If the field is not empty, but it isn't valid\n\t\tif ( this.state.input_value && ! this.state.validated ) {\n\t\t\treturn this.state.error_code;\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\thandle_input_change( event ) {\n\n\t\t// Set the validation of this field\n\t\tif ( ! window[this.props.props.client_validation_callback_function]( event.target.value ) ) {\n\t\t\tvar is_validated = false;\n\t\t} else {\n\t\t\tvar is_validated = true;\n\t\t}\n\n\t\tvar old_input_value = this.state.input_value;\n\t\tvar new_input_value = event.target.value;\n\n\t\tif ( new_input_value ) {\n\t\t\tnew_input_value = new_input_value;\n\t\t} else {\n\t\t\tnew_input_value = this.props.props.default_value;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tin_initial_state: false,\n\t\t\tinput_value: event.target.value,\n\t\t\tsaved_status: 'typing',\n\t\t\tvalidated: is_validated\n\t\t} );\n\n\t\t// If nothing has changed since the state was last set\n\t\tif ( old_input_value == new_input_value ) {\n\n\t\t\t// Do nothing\n\t\t\treturn false;\n\n\t\t} else {\n\n\t\t\t// Set up a delay which waits to save the tip until .5 seconds after they stop typing.\n\t\t\tif( this.input_delay ) {\n\t\t\t\t// Clear the keypress delay if the user just typed\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis.input_delay = null;\n\t\t\t}\n\n\t\t\tvar this_component = this;\n\n\t\t\t// (Re)-Set up the save to fire in 500ms\n\t\t\tthis.input_delay = setTimeout( function() {\n\t\t\t\tclearTimeout( this.input_delay );\n\t\t\t\tthis_component.save_value_to_server( new_input_value );\n\t\t\t}, 500);\n\n\t\t}\n\n\t};\n\n\trender_field() {\n\n\t\tif ( ! this.state.props_loaded ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\treturn this.props.props.replace_input_field_with;\n\t\t} else {\n\n\t\t\tvar inputProps = {};\n\n\t\t\tif ( this.props.props.type ) {\n\t\t\t\tinputProps['type'] = this.props.props.type;\n\t\t\t}\n\n\t\t\tif ( this.props.class_name ) {\n\t\t\t\tinputProps['className'] = this.props.class_name + this.get_input_field_class();\n\t\t\t} else {\n\t\t\t\tinputProps['className'] = this.get_input_field_class();\n\t\t\t}\n\n\t\t\tif ( this.props.props.name ) {\n\t\t\t\tinputProps['name'] = this.props.props.name;\n\t\t\t}\n\n\t\t\tinputProps['onChange'] = this.handle_input_change.bind( this );\n\n\t\t\tinputProps['value'] = this.state.input_value;\n\n\t\t\tif ( this.props.props.placeholder ) {\n\t\t\t\tinputProps['placeholder'] = this.props.props.placeholder;\n\t\t\t}\n\n\t\t\tif ( this.props.props.step ) {\n\t\t\t\tinputProps['step'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.min ) {\n\t\t\t\tinputProps['min'] = this.props.props.min;\n\t\t\t}\n\n\t\t\tif ( this.props.props.max ) {\n\t\t\t\tinputProps['max'] = this.props.props.step;\n\t\t\t}\n\n\t\t\tif ( this.props.props.disabled ) {\n\t\t\t\tinputProps['disabled'] = this.props.props.disabled;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<React.Fragment>\n\t\t\t\t<textarea { ...inputProps }></textarea>\n\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t\t{ this.render_help_button() }\n\t\t\t\t\t<span className={ 'mpwpadmin-input-saved-status ' + this.state.saved_status }>{ this.state.saved_status }</span>\n\t\t\t\t</span>\n\t\t\t\t</React.Fragment>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_help_button() {\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t<span className={ 'mpwpadmin-input-separator' }> | </span>\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n\ttoggle_help_lightbox() {\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t[this.props.slug]: {}\n\t\t} );\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.props.help_text ) {\n\t\t\tvar help_lightbox_output = null;\n\t\t} else if ( this.props.props.help_text.react_component ) {\n\n\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t/>\n\n\t\t\tvar help_lightbox_output = <MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ this.props.slug }\n\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\n\t\t} else {\n\t\t\tvar help_lightbox_output = \t<MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ this.props.slug }\n\t\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\t/>;\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-input-component-container' }>\n\t\t\t<label>\n\t\t\t{ this.render_field() }\n\t\t\t</label>\n\n\t\t\t{ help_lightbox_output }\n\n\t\t\t</div>\n\t\t)\n\t}\n\n};\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\nwindow.mp_wp_admin_admin_lightbox_vars = {\n\ttitle: null,\n\tdescription: null,\n};\n\nwindow.MP_WP_Admin = class MP_WP_Admin extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tall_initial_visual_states: this.props.data.general_config.all_current_visual_states,\n\t\t\tall_current_visual_states: this.props.data.general_config.all_current_visual_states, // This is an object containing the entire visual state for the Single Page App\n\t\t\tlightbox_initial_visual_state: this.props.data.general_config.lightbox_visual_state,\n\t\t\tlightbox_visual_state: this.props.data.general_config.lightbox_visual_state,\n\t\t\tsingle_page_app_base_url: this.props.data.general_config.base_url,\n\t\t\tdom_node: null,\n\t\t\trefresh_sections: false\n\t\t};\n\n\t\tthis.get_current_view_class = this.get_current_view_class.bind( this );\n\t\tthis.set_all_current_visual_states = this.set_all_current_visual_states.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\n\t\t// Grab the props passed in and pass them to the state\n\t\tthis.setState( {\n\t\t\tdata: this.props.data\n\t\t}, () => {\n\n\t\t\t// Set the initial view state based on the initialization props\n\t\t\tthis.setState( {\n\t\t\t\tall_initial_visual_states: this.state.data.general_config.all_current_visual_states,\n\t\t\t\tall_current_visual_states: this.state.data.general_config.all_current_visual_states, // This is an object containing the entire visual state for the Single Page App\n\t\t\t\tlightbox_initial_visual_state: this.state.data.general_config.lightbox_visual_state,\n\t\t\t\tlightbox_visual_state: this.state.data.general_config.lightbox_visual_state\n\t\t\t}, () => {\n\t\t\t\tthis.set_all_current_visual_states( this.state.all_initial_visual_states, this.state.lightbox_visual_state );\n\t\t\t} );\n\n\t\t} );\n\n\t\t// Create an event listener to respond to back button clicks\n\t\twindow.addEventListener('popstate', (e) => {\n\t\t\tthis.on_web_history_change( e, this );\n\t\t});\n\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.maybe_refresh_parent_dom_node();\n\t}\n\n\trefresh_mpwpadmin() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\tvar this_component = this;\n\n\t\t\t// Format the data that we'll send to the server\n\t\t\tvar postData = new FormData();\n\t\t\tpostData.append('mpwpadmin_refresh_nonce', this.state.data.general_config.mpwpadmin_refresh_nonce);\n\n\t\t\tfetch( this.state.data.general_config.server_endpoint_url_refresh_mpwpadmin, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tmode: \"same-origin\",\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t\theaders: {},\n\t\t\t\tbody: postData\n\t\t\t} ).then(\n\t\t\t\tfunction( response ) {\n\t\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\t\tresponse.status);\n\t\t\t\t\t\treject();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Examine the text in the response\n\t\t\t\t\tresponse.json().then(\n\t\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\t\t// If we fetched brand new mpwpadmin data, refresh it\n\t\t\t\t\t\t\tif ( data.success ) {\n\t\t\t\t\t\t\t\t// If the data is exact the same, do nothing\n\t\t\t\t\t\t\t\tif ( JSON.stringify( data.data ) == JSON.stringify( this_component.state.data ) ) {\n\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Save the refreshed data to the state of the main component\n\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\tdata: data.data\n\t\t\t\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\t\t\t\t// Once saved, tell the section components they can/should refresh. Whether/How they do is handled by the components themselves.\n\t\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\t\trefresh_sections: true\n\t\t\t\t\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\t\t\t\t\t// Now that the \"refresh\" trigger has been applied with refreshed data, set the refresh back to false for the sections so they don't loop infiniitely.\n\t\t\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\t\t\trefresh_sections: false\n\t\t\t\t\t\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\t\t\t\t\t\t// Now that everything we want to do here is done, resolve the promise.\n\t\t\t\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treject();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t).catch(\n\t\t\t\tfunction( err ) {\n\t\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\t\treject();\n\t\t\t\t}\n\t\t\t);\n\n\t\t} );\n\n\t}\n\n\tmaybe_refresh_parent_dom_node() {\n\n\t\tif ( this.state.dom_node !== ReactDOM.findDOMNode(this).parentNode ) {\n\t\t\tthis.setState( {\n\t\t\t\tdom_node: ReactDOM.findDOMNode(this).parentNode\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tbuild_new_url_path( obj, new_url_path, depth ) {\n\t\tdepth = depth + 1;\n\t\tfor (var component_visual_state in obj) {\n\t\t\t\tnew_url_path = this.build_new_url_path(obj[component_visual_state], new_url_path + '&mpwpadmin' + depth + '=' + component_visual_state, depth );\n\t\t}\n\t\treturn new_url_path;\n\t}\n\n\tset_all_current_visual_states( new_state = false, new_lightbox_state = false ) {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// If no new state was passed, we're probably just updating the lightbox state.\n\t\t\tif ( ! new_state ) {\n\t\t\t\tnew_state = this.state.all_current_visual_states;\n\t\t\t}\n\t\t\tif ( ! new_lightbox_state ) {\n\t\t\t\tnew_lightbox_state = this.state.lightbox_visual_state\n\t\t\t}\n\n\t\t\t// Start refreshing the state of the entire mpwpadmin single page app. This happens in the background, almost like magic.\n\n\t\t\tthis.setState( {\n\t\t\t\tall_current_visual_states: new_state,\n\t\t\t\tlightbox_visual_state: new_lightbox_state\n\t\t\t}, () => {\n\n\t\t\t\t// If we are on mobile, make sure this app is in view as it's easy to get out of view on small screens when the height changes\n\t\t\t\tif ( 700 > screen.width ) {\n\t\t\t\t\tthis.state.dom_node.scrollIntoView( true, {\n\t\t\t\t\t\tbehavior: 'smooth'\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// New URL\n\t\t\t\tvar new_url = this.state.data.general_config.base_url + this.build_new_url_path( this.state.all_current_visual_states, '', 0 );\n\n\t\t\t\t// If there is a lightbox open, add it to the end of the URL\n\t\t\t\tif ( Object.keys(this.state.lightbox_visual_state)[0] ) {\n\t\t\t\t\tnew_url = new_url + '&mpwpadmin_lightbox=' + Object.keys(this.state.lightbox_visual_state)[0];\n\t\t\t\t}\n\n\t\t\t\t// Take a snapshot of the current visual state and add it to the web history\n\t\t\t\thistory.pushState({\n\t\t\t\t\t[this.state.data.general_config.app_slug + '_visual_state']: this.state.all_current_visual_states,\n\t\t\t\t\t[this.state.data.general_config.app_slug + '_lightbox_visual_state']: this.state.lightbox_visual_state\n\t\t\t\t}, new_state, new_url);\n\n\t\t\t\t/*\n\t\t\t\tthis.refresh_mpwpadmin().then( () => {\n\t\t\t\t\tresolve( new_state );\n\t\t\t\t} );\n\t\t\t\t*/\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\ton_web_history_change( e, this_component ) {\n\n\t\tvar history_state = e.state;\n\n\t\t// If there's no state in the back button, we're in the initial state.\n\t\tif (history_state == null) {\n\t\t\tthis_component.setState( {\n\t\t\t\t'all_current_visual_states': this_component.state.all_initial_visual_states,\n\t\t\t\t'lightbox_visual_state': this_component.state.initial_lightbox_visual_state\n\t\t\t} );\n\t\t}\n\t\t// If there is a state in the history, set the current state to that\n\t\telse {\n\t\t\tthis_component.setState( {\n\t\t\t\t'all_current_visual_states': history_state[this.state.data.general_config.app_slug + '_visual_state'],\n\t\t\t\t'lightbox_visual_state': history_state[this.state.data.general_config.app_slug + '_lightbox_visual_state']\n\t\t\t} );\n\t\t}\n\n\t}\n\n\tget_current_view_class( view_in_question ) {\n\n\t\tvar currently_in_view_class_name = 'mpwpadmin-current-view';\n\t\tvar hidden_class_name = 'mpwpadmin-hidden-view';\n\t\tvar current_visual_state = Object.keys(this.state.all_current_visual_states)[0]; // This grabs the name of the the first key, which is the visual state of this component\n\n\t\t// If the current visual state matches the view we are getting the class for\n\t\tif( current_visual_state == view_in_question ) {\n\n\t\t\treturn ' ' + currently_in_view_class_name;\n\n\t\t} else {\n\n\t\t\treturn ' ' + hidden_class_name;\n\n\t\t}\n\n\t}\n\n\tget_current_button_class( view_in_question ) {\n\n\t\tvar current_button_class_name = 'mpwpadmin-current-tab';\n\t\tvar current_visual_state = Object.keys(this.state.all_current_visual_states)[0]; // This grabs the name of the the first key, which is the visual state of this component\n\n\t\t// If the current visual state matches the view we are getting the class for\n\t\tif( current_visual_state == view_in_question ) {\n\n\t\t\treturn ' ' + current_button_class_name;\n\n\t\t} else {\n\n\t\t\treturn '';\n\n\t\t}\n\n\t}\n\n\trender_left_side_navigation_buttons() {\n\n\t\tvar current_visual_state = Object.keys(this.state.all_current_visual_states)[0]; // This grabs the name of the the first key, which is the visual state of this component\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in this.state.data.views) {\n\n\t\t\tmapper.push( <MP_WP_Admin_View_Button\n\t\t\t\tkey={key}\n\t\t\t\tmain_component={ this }\n\t\t\t\tview_slug={key}\n\t\t\t\tview_info={ this.state.data.views[key] }\n\t\t\t\tis_top_level={ true } />\n\t\t\t)\n\n\t\t}\n\n\t\t// This lets us output the buttons one by one\n\t\treturn mapper.map((view, index) => {\n\t\t\treturn view;\n\t\t})\n\t}\n\n\trender_actual_views( views, doing_sub_tabs = false, breadcrumbs = [] ) {\n\n\t\tvar current_visual_state = Object.keys(this.state.all_current_visual_states)[0]; // This grabs the name of the the first key, which is the visual state of this component\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in views ) {\n\n\t\t\tvar DynamicReactComponent = eval( views[key]['react_component'] );\n\n\t\t\t// Append this section's title to the breadcrumbs\n\t\t\tbreadcrumbs[key] = views[key]['visual_name'];\n\n\t\t\tmapper.push( <DynamicReactComponent\n\t\t\t\tkey={ key }\n\t\t\t\tmain_component={ this }\n\t\t\t\tview_slug={ key }\n\t\t\t\tview_info={ views[key] }\n\t\t\t\tcurrent_view_class={ this.get_current_view_class( key ) }\n\t\t\t\tthe_breadcrumbs={ breadcrumbs }\n\t\t\t/> )\n\n\t\t\tvar sub_tabs = views[key]['sub_tabs'];\n\n\t\t\t// If this section (even if this is a subsection) has subsections within/below it\n\t\t\tif ( sub_tabs ) {\n\n\t\t\t\tmapper.push( this.render_actual_views( sub_tabs, true, breadcrumbs ) );\n\n\t\t\t\t// We're done with all the subsections in this section\n\t\t\t\tbreadcrumbs = [];\n\t\t\t} else {\n\t\t\t\tbreadcrumbs = [];\n\t\t\t}\n\t\t}\n\n\t\t// If we are doing a sub-section, return the mapper here so it gets rejoined with the parent mapper. We're doing some method inception here.\n\t\tif ( doing_sub_tabs ) {\n\n\t\t\treturn mapper;\n\n\t\t} else {\n\n\t\t\t// This lets us output the buttons one by one\n\t\t\treturn mapper.map((view, index) => {\n\t\t\t\treturn view;\n\t\t\t})\n\t\t}\n\t}\n\n\trender() {\n\n\t\tif ( ! this.state.data || ! this.state.all_current_visual_states ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\tvar current_visual_state = Object.keys(this.state.all_current_visual_states)[0]; // This grabs the name of the the first key, which is the visual state of this component\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-container mpwpadmin-current-view-is-' + current_visual_state }>\n\t\t\t\t<div className=\"mpwpadmin-left-side-navigation\">\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t{ this.render_left_side_navigation_buttons() }\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\t\t\t\t<div className='mpwpadmin-current-view-container'>\n\t\t\t\t\t{ this.render_actual_views( this.state.data.views ) }\n\t\t\t\t</div>\n\n\t\t\t\t<MP_WP_Admin_Lightbox />\n\n\t\t\t</div>\n\t\t);\n\t}\n}\n\n// This component outputs all of the left-size navigation\nwindow.MP_WP_Admin_View_Button = class MP_WP_Admin_View_Button extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\t}\n\n\trender_submenu() {\n\n\t\tvar sub_menus = this.props.view_info.sub_tabs;\n\n\t\tif ( ! sub_menus ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in sub_menus) {\n\n\t\t\tvar view_info = sub_menus[key] ? sub_menus[key] : false;\n\n\t\t\tmapper.push(\n\t\t\t\t<MP_WP_Admin_View_Button\n\t\t\t\t\tkey={ key }\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tview_slug={ key }\n\t\t\t\t\tview_info={ view_info }\n\t\t\t\t\tis_top_level={ false }\n\t\t\t\t/>\n\t\t\t)\n\n\t\t}\n\n\t\t// This lets us output the buttons one by one\n\t\treturn mapper.map((view, index) => {\n\t\t\treturn view;\n\t\t})\n\n\t}\n\n\thandle_button_click( new_state, event ) {\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {}\n\t\t} );\n\t}\n\n\trender() {\n\n\t\tif ( this.props.is_top_level ) {\n\t\t\treturn (\n\t\t\t\t<li className={ \"mpwpadmin-left-tab-button\" + this.props.main_component.get_current_button_class( this.props.view_slug ) }>\n\t\t\t\t\t<button onClick={ this.handle_button_click.bind( this, {\n\t\t\t\t\t\t[this.props.view_slug]: {}\n\t\t\t\t\t} ) }>\n\t\t\t\t\t\t<span className=\"mpwpadmin-left-tab-text\">{ this.props.view_info.visual_name }</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t{ this.render_submenu() }\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<li className={ \"mpwpadmin-left-tab-button-subtab\" + this.props.main_component.get_current_button_class( this.props.view_slug ) }>\n\t\t\t\t\t<button onClick={ this.handle_button_click.bind( this, {\n\t\t\t\t\t\t[this.props.view_slug]: {}\n\t\t\t\t\t} ) }>\n\t\t\t\t\t\t<i className=\"mpwpadmin-left-tab-arrow\"></i>\n\t\t\t\t\t\t<span className=\"mpwpadmin-left-tab-text\">{ this.props.view_info.visual_name }</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t{ this.render_submenu() }\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t);\n\t\t}\n\t}\n}\n\nwindow.MP_WP_Admin_Lightbox = class MP_WP_Admin_Lightbox extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\thas_mounted: false,\n\t\t\tlightbox_open: false\n\t\t}\n\n\t\tthis.handle_key_press = this.handle_key_press.bind( this );\n\t\tthis.toggle_lightbox = this.toggle_lightbox.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.handle_open_status_based_on_url();\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\tif ( ! this.state.lightbox_open ) {\n\t\t\t// Remove a listener for the ESC key when the lightbox is closed\n\t\t\tdocument.removeEventListener(\"keydown\", this.handle_key_press, false);\n\t\t} else {\n\n\t\t\tif ( ! this.state.has_mounted ) {\n\t\t\t\tthis.setState( {\n\t\t\t\t\thas_mounted: true\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Add a listener for the ESC key when the lightbox is open\n\t\t\tdocument.addEventListener(\"keydown\", this.handle_key_press, false);\n\t\t}\n\n\t\tthis.handle_open_status_based_on_url();\n\t}\n\n\thandle_open_status_based_on_url() {\n\n\t\t// If a lightbox is open based on the setting in the main component\n\t\tif ( this.props.main_component && this.props.main_component.state.lightbox_visual_state ) {\n\t\t\t// Check if that lightbox is us!\n\t\t\tif ( this.props.slug == Object.keys(this.props.main_component.state.lightbox_visual_state)[0] ) {\n\t\t\t\t// Open this lightbox if it isn't already open\n\t\t\t\tif ( ! this.state.lightbox_open ) {\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\tlightbox_open: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the current lightbox in the URL is not us, close this one.\n\t\t\telse {\n\t\t\t\tif ( this.state.lightbox_open ) {\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\tlightbox_open: false\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tget_lightbox_visible_class() {\n\t\tif ( this.state.lightbox_open ) {\n\t\t\treturn ' mpwpadmin-lightbox-open';\n\t\t} else {\n\t\t\treturn ' mpwpadmin-lightbox-closed';\n\t\t}\n\t}\n\n\ttoggle_lightbox( state ) {\n\n\t\t// If the lightbox is open, close it\n\t\tif ( state.lightbox_open ) {\n\t\t\tthis.props.main_component.set_all_current_visual_states( false, {} );\n\t\t} else {\n\t\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t\t[this.props.slug]: {}\n\t\t\t} );\n\t\t}\n\n\t}\n\n\thandle_key_press( event ) {\n\n\t\tif( event.keyCode === 27 ) {\n\t\t\tthis.toggle_lightbox( this.state );\n\t\t}\n\n\t}\n\n\thandle_close_button_click() {\n\t\tthis.props.main_component.set_all_current_visual_states( false, {} );\n\t}\n\n\trender_close_button() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpadmin-close-btn\" aria-label=\"Close\" onClick={ this.handle_close_button_click.bind( this ) }><span className=\"dashicons dashicons-no\"></span></div>\n\t\t);\n\t}\n\n\trender_icon() {\n\n\t\tif ( this.props.main_component && this.props.main_component.state.data.general_config.default_icon ) {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.main_component.state.data.general_config.default_icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_title() {\n\n\t\tif ( this.props.title ) {\n\t\t\treturn this.props.title;\n\t\t} else {\n\t\t\treturn '';\n\t\t}\n\t};\n\n\trender_body() {\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_icon() }\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.render_title() }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.body }\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t);\n\n\t};\n\n\trender_component() {\n\t\treturn ( this.props.custom_react_component );\n\t};\n\n\trender_based_on_mode() {\n\n\t\tif ( 'custom_react_component' == this.props.mode ) {\n\t\t\treturn this.render_component();\n\t\t}\n\n\t\treturn this.render_body();\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-lightbox-background mpwpadmin-lightbox' + this.get_lightbox_visible_class() }>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-outside-click-to-close' } onClick={ this.toggle_lightbox.bind( null, this.state ) } />\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-relative' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-absolute' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-inner' }>\n\t\t\t\t\t\t\t{ this.render_close_button() }\n\t\t\t\t\t\t\t{ this.render_based_on_mode() }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nwindow.MP_WP_Admin_Spinner = class MP_WP_Admin_Spinner extends React.Component{\n\trender(){\n\t\treturn(\n\t\t\t<div className=\"mpwpadmin-spinner\">\n\t\t\t\t<div className=\"mpwpadmin-double-bounce1\"></div>\n\t\t\t\t<div className=\"mpwpadmin-double-bounce2\"></div>\n\t\t\t</div>\n\t\t)\n\t}\n}\n\n// Accepts an all visual states object, a visual tree object acting as a map for the location of the component in question, and a boolean\n// It then recursively goes throguh the component tree object, checking if\nfunction mpwpadmin_visual_state_should_become( all_current_visual_states, map_of_visual_states, visual_state_should_become, default_visual_state ) {\n\n\t// The component tree is a \"map\" that tells use where this component lives within the parent\n\tfor ( var level in map_of_visual_states ) {\n\t\t// If the current component's top-level parent is set in the current visual states object, great! Keep going.\n\t\tif ( all_current_visual_states[level] ) {\n\n\t\t\t// If there are other components ahead of this component in the tree\n\t\t\tif ( typeof map_of_visual_states[level] !== 'undefined' && typeof map_of_visual_states[level] === 'object' && Object.keys(map_of_visual_states[level]).length !== 0){\n\t\t\t\t// Recursively nest down into the next parent component to see if it is set in the current visual states object.\n\t\t\t\tvisual_state_should_become = mpwpadmin_visual_state_should_become( all_current_visual_states[level], map_of_visual_states[level], visual_state_should_become, default_visual_state );\n\t\t\t} else {\n\n\t\t\t\t// If we are at the end of the component tree, and the component level is in the current visual states object, it's in view!\n\t\t\t\tvisual_state_should_become = level;\n\n\t\t\t}\n\t\t} else if ( 'variable' === level ) {\n\n\t\t\t// If we are at the end of the component tree, and the component level is variable, grab the value from the master view object at this level\n\t\t\tif ( Object.keys(all_current_visual_states)[0] ) {\n\t\t\t\tvisual_state_should_become = Object.keys(all_current_visual_states)[0];\n\t\t\t} else {\n\t\t\t\tvisual_state_should_become = default_visual_state;\n\t\t\t}\n\n\t\t} else {\n\t\t\tvisual_state_should_become = default_visual_state;\n\t\t}\n\n\t}\n\n\treturn visual_state_should_become;\n}\n\nwindow.mpwpadmin_set_visual_state_of_component = function mpwpadmin_set_visual_state_of_component( settings ) {\n\n\treturn new Promise( (resolve, reject) => {\n\n\t\t// If we don't have the variables we require, fail.\n\t\tif ( ! settings.component ) {\n\t\t\tthrow new Error( 'The function \"mpwpadmin_set_visual_state_of_component\" is missing required variables' );\n\t\t}\n\n\t\tif ( ! settings.component.props.main_component.state.all_current_visual_states ) {\n\t\t\tthrow new Error( 'A visual states object is required.' );\n\t\t}\n\n\t\tif ( ! settings.component.state.map_of_visual_states ) {\n\t\t\tthrow new Error( 'The component must have a map of the view states stored in the state with the key \"map_of_visual_states\"' );\n\t\t}\n\n\t\tvar new_map_of_visual_states = mpwpadmin_get_default_map_of_visual_states( settings.component.state.map_of_visual_states, settings.default_visual_state );\n\n\t\t// Figure out if the parent component is in view\n\t\tfor ( var level in settings.component.props.main_component.state.all_current_visual_states ) {\n\t\t\tif ( ! new_map_of_visual_states[level] ) {\n\t\t\t\tparent_component_is_in_view = false;\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tparent_component_is_in_view = true;\n\t\t\t}\n\t\t}\n\n\t\t// If the parent component is in view, just set it to a default and do nothing else\n\t\tif ( ! parent_component_is_in_view ) {\n\t\t\tvar visual_state_should_become = settings.default_visual_states.parent_not_in_view;\n\t\t} else {\n\t\t\tvar visual_state_should_become = mpwpadmin_visual_state_should_become( settings.component.props.main_component.state.all_current_visual_states, settings.component.state.map_of_visual_states, false, settings.default_visual_states.parent_in_view );\n\t\t}\n\n\t\t// If the state of the component is already the current state in the master visual states object, do nothing.\n\t\tif ( settings.component.state[settings.name_of_visual_state_variable] == visual_state_should_become ) {\n\n\t\t\tresolve( visual_state_should_become );\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\tif ( ! visual_state_should_become ) {\n\n\t\t\t\tsettings.component.setState( {\n\t\t\t\t\t[settings.name_of_visual_state_variable]: settings.default_visual_states.parent_not_in_view\n\t\t\t\t}, function() {\n\t\t\t\t\t//console.log( 'setting default state to: ' + settings.default_visual_states.parent_not_in_view + ' where default was ' + settings.default_visual_states.parent_in_view );\n\t\t\t\t\tresolve( settings.default_visual_states.parent_not_in_view );\n\t\t\t\t} );\n\n\t\t\t} else {\n\n\t\t\t\tsettings.component.setState( {\n\t\t\t\t\t[settings.name_of_visual_state_variable]: visual_state_should_become\n\t\t\t\t}, function() {\n\t\t\t\t\t//console.log( 'setting visual state to: ' + visual_state_should_become + ' where default was ' + settings.default_visual_states.parent_in_view );\n\t\t\t\t\tresolve( visual_state_should_become );\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t});\n\n}\n\nfunction mpwpadmin_get_default_map_of_visual_states( map_of_visual_states, default_visual_state, new_map_of_visual_states = {}, previous_level = false ) {\n\n\tfor ( var level in map_of_visual_states ) {\n\n\t\t// If there's another level, keep going\n\t\tif ( typeof map_of_visual_states[level] !== 'undefined' && typeof map_of_visual_states[level] === 'object' && Object.keys(map_of_visual_states[level]).length !== 0) {\n\n\t\t\t// If we at a level great than 1\n\t\t\tif ( previous_level ) {\n\t\t\t\tvar temp = {};\n\t\t\t\ttemp[level] = {};\n\t\t\t\tnew_map_of_visual_states[previous_level] = mpwpadmin_get_default_map_of_visual_states( map_of_visual_states[level], default_visual_state, temp, level );\n\t\t\t}\n\t\t\t// If we are at the top level\n\t\t\telse {\n\t\t\t\tnew_map_of_visual_states[level] = {};\n\t\t\t\tnew_map_of_visual_states = mpwpadmin_get_default_map_of_visual_states( map_of_visual_states[level], default_visual_state, new_map_of_visual_states, level );\n\t\t\t}\n\n\t\t\treturn new_map_of_visual_states;\n\t\t}\n\t\t// If the last level is reached and it's variable, or empty, set it to the default state and be done. No more nesting and looping.\n\t\telse if ( 'variable' === level || 0 === Object.keys(map_of_visual_states[level]).length) {\n\t\t\tnew_map_of_visual_states[previous_level][default_visual_state] = {};\n\t\t\treturn new_map_of_visual_states;\n\t\t}\n\t\t// If there's no more levels, and the last level isn't \"variable\", set it to the current level and be done. No more nesting and looping.\n\t\telse {\n\t\t\tnew_map_of_visual_states[previous_level][level] = {};\n\t\t\treturn new_map_of_visual_states;\n\t\t}\n\t}\n\n}\n"],"sourceRoot":""} -
tip-jar-wp/trunk/includes/admin/js/build/classic-editor/tip-form-classic-editor.js.map
r2449460 r2953538 1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:/// /Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/classic-editor/shortcode-insert.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","Tip_Jar_WP_Classic_Editor_Shortcode_Inserter","_React$Component","props","_this","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","state","default_form_id","form_id","form_json","form_dynamic_settings","tip_jar_wp_classic_editor_vars","tip_jar_wp_dynamic_settings","default_modal_visual_state","tjwp_classic_editor","insert_to_tinymce","remount","_inherits","React","Component","_this2","setState","tip_jar_wp_block_default_json","_this3","get_form_json_from_server","set_all_current_visual_states","new_state","arguments","length","undefined","new_modal_state","all_current_visual_states","modal_visual_state","_this4","Promise","resolve","reject","postData","FormData","append","get_form_nonce","fetch","get_form_endpoint","method","credentials","body","then","response","status","console","log","json","data","success","JSON","parse","catch","err","_this5","stringify","create_or_update_form_nonce","create_or_update_form_endpoint","new_form_json","_this6","use_typing_delay","keypress_delay","clearTimeout","setTimeout","create_or_update_form","_this7","send_to_editor","close_lightbox","_this8","createElement","Tip_Jar_WP_Modal","main_component","slug","modal_contents","className","tip_jar_wp_editing_strings","insert_shortcode_area_title","onClick","sendShortcodeToEditor","insert_shortcode","update_shortcode","cancel_shortcode","Tip_Jar_WP_Form","id","form_number","editing_mode","show_edit_display_mode","editing_parent_component","payment","frontend_nonces","tip_jar_wp_js_vars","unique_settings","dynamic_settings","tip_jar_wp_refresh_classic_editor_shortcode_inserter","lightbox_container","document","getElementById","ReactDOM","render","tip_jar_wp_set_shortcode_insert_modal_to_open","tip_jar_wp_move_shortcode_edit_media_buttons","querySelector","querySelectorAll","forEach","tip_jar_wp_media_buttons_container","previousElementSibling","innerHTML","remove"],"mappings":"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","file":"includes/admin/js/build/classic-editor/tip-form-classic-editor.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/*\n * Tip Jar WP\n * https://www.tipjarwp.com\n *\n * Licensed under the GPL license.\n *\n * Author: Tip Jar WP\n * Version: 1.0\n * Date: April 18, 2018\n */\n\nwindow.Tip_Jar_WP_Classic_Editor_Shortcode_Inserter = class Tip_Jar_WP_Classic_Editor_Shortcode_Inserter extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tdefault_form_id: null,\n\t\t\tform_id: null,\n\t\t\tform_json: null,\n\t\t\tform_dynamic_settings: tip_jar_wp_classic_editor_vars.tip_jar_wp_dynamic_settings,\n\t\t\tdefault_modal_visual_state: {\n\t\t\t\t'tjwp_classic_editor': {}\n\t\t\t},\n\t\t\tinsert_to_tinymce: true,\n\t\t\tremount: false,\n\t\t};\n\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.setState( {\n\t\t\tdefault_form_id: this.props.default_form_id,\n\t\t\tform_id: this.props.default_form_id,\n\t\t\tinsert_to_tinymce: this.props.insert_to_tinymce,\n\t\t}, () => {\n\t\t\t// If there's no form ID upon mount, this is a new Tip Jar. Set the json to be the default values.\n\t\t\tif ( ! this.state.form_id ) {\n\t\t\t\tthis.setState( {\n\t\t\t\t\tform_json: tip_jar_wp_classic_editor_vars.tip_jar_wp_block_default_json\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\t// If the default form id in the props is different than the default form id in the state, fetch that new form ID from the server.\n\t\tif ( this.state.default_form_id !== this.props.default_form_id ) {\n\n\t\t\tthis.setState( {\n\t\t\t\tremount: true,\n\t\t\t\tdefault_form_id: this.props.default_form_id,\n\t\t\t\tform_id: this.props.default_form_id,\n\t\t\t\tinsert_to_tinymce: this.props.insert_to_tinymce,\n\t\t\t}, () => {\n\n\t\t\t\tif ( this.state.form_id ) {\n\t\t\t\t\tthis.get_form_json_from_server();\n\t\t\t\t} else {\n\n\t\t\t\t\t// If there's no form ID, this is a new form creation.\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\tform_json: tip_jar_wp_classic_editor_vars.tip_jar_wp_block_default_json\n\t\t\t\t\t}, () => {\n\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\tremount: false\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t\t// If the default modal setting for this changed, it needs to be reset and updated.\n\t\tif ( this.props.default_modal_visual_state !== this.state.default_modal_visual_state ) {\n\t\t\tthis.setState( {\n\t\t\t\tdefault_modal_visual_state: this.props.default_modal_visual_state\n\t\t\t}, () => {\n\t\t\t\tthis.set_all_current_visual_states( false, this.state.default_modal_visual_state );\n\t\t\t} );\n\t\t}\n\n\t}\n\n\t// This is a simplified version of the set_all_current_visual_states method from the main Tip Form component. This just doesn't do URL updating.\n\tset_all_current_visual_states( new_state = false, new_modal_state = false ) {\n\n\t\tvar in_initial_state = false;\n\n\t\t// If no new state was passed, we're probably just updating the modal state.\n\t\tif ( ! new_state ) {\n\t\t\tnew_state = this.state.all_current_visual_states;\n\t\t}\n\n\t\t// If no modal state was passed, we probably are just updating the main state.\n\t\tif ( ! new_modal_state ) {\n\t\t\tnew_modal_state = this.state.modal_visual_state;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tall_current_visual_states: new_state,\n\t\t\tmodal_visual_state: new_modal_state\n\t\t} );\n\t}\n\n\t// This will send a fetch call to the server to get the json for a form from the forms table.\n\tget_form_json_from_server() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\tvar postData = new FormData();\n\t\t\tpostData.append('action', 'tip_jar_wp_get_form' );\n\t\t\tpostData.append('form_id', this.state.form_id );\n\t\t\tpostData.append('tip_jar_wp_get_form_nonce', tip_jar_wp_classic_editor_vars.get_form_nonce);\n\n\t\t\tfetch( tip_jar_wp_classic_editor_vars.get_form_endpoint, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tmode: \"same-origin\",\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t\tbody: postData\n\t\t\t} ).then(\n\t\t\t\t( response ) => {\n\t\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' + response.status);\n\t\t\t\t\t\treject('unable_to_get_form_data');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Examine the text in the response\n\t\t\t\t\tresponse.json().then(\n\t\t\t\t\t\t( data ) => {\n\t\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\t\t\tform_json: JSON.parse( data.json ),\n\t\t\t\t\t\t\t\t\tremount: true\n\t\t\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\t\t\t\tremount: false\n\t\t\t\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\t\t\t\tresolve( data.form_id );\n\t\t\t\t\t\t\t\t\t\treturn data.form_id;\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.log('Looks like there was a problem: ' + data);\n\t\t\t\t\t\t\t\treject('unable_to_get_form_data');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t).catch(\n\t\t\t\t\t\t( err ) => {\n\t\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\t\treject('unable_to_get_form_data');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t).catch(\n\t\t\t\t( err ) => {\n\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\treject('unable_to_get_form_data');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t);\n\n\t\t} );\n\n\t}\n\n\t// This will send a fetch call to the server to generate or update a row in the forms table.\n\tcreate_or_update_form() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\tvar postData = new FormData();\n\t\t\tpostData.append('action', 'tip_jar_wp_create_or_update_form' );\n\t\t\tpostData.append('form_id', this.state.form_id );\n\t\t\tpostData.append('state', JSON.stringify( this.state.form_json ) );\n\t\t\tpostData.append('tip_jar_wp_create_or_update_form_nonce', tip_jar_wp_classic_editor_vars.create_or_update_form_nonce);\n\n\t\t\tfetch( tip_jar_wp_classic_editor_vars.create_or_update_form_endpoint, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tmode: \"same-origin\",\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t\tbody: postData\n\t\t\t} ).then(\n\t\t\t\t( response ) => {\n\t\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' + response.status);\n\t\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Examine the text in the response\n\t\t\t\t\tresponse.json().then(\n\t\t\t\t\t\t( data ) => {\n\t\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\t\t\tform_id: data.form_id\n\t\t\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\t\t\tresolve( data.form_id );\n\t\t\t\t\t\t\t\t\treturn data.form_id;\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.log('Looks like there was a problem: ' + data);\n\t\t\t\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t).catch(\n\t\t\t\t\t\t( err ) => {\n\t\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t).catch(\n\t\t\t\t( err ) => {\n\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t);\n\n\t\t} );\n\n\t}\n\n\tonChangeHandler( new_form_json, use_typing_delay = false ) {\n\n\t\treturn new Promise( (resolve, reject) => {\n\t\t\t// Temporarily store the value in the state of this component while we wait for the typing to stop.\n\t\t\tthis.setState( {\n\t\t\t\tform_json: new_form_json\n\t\t\t}, () => {\n\n\t\t\t\tif ( use_typing_delay ) {\n\t\t\t\t\t// Set up a delay which waits to save the tip until .5 seconds after they stop typing.\n\t\t\t\t\tif( this.keypress_delay ) {\n\t\t\t\t\t\t// Clear the keypress delay if the user just typed\n\t\t\t\t\t\tclearTimeout( this.keypress_delay );\n\t\t\t\t\t\tthis.keypress_delay = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// (Re)-Set up the save_note_with_tip to fire in 500ms\n\t\t\t\t\tthis.keypress_delay = setTimeout( () => {\n\t\t\t\t\t\tclearTimeout( this.keypress_delay );\n\n\t\t\t\t\t\t// Update the form data in the tip_jar_wp_forms custom table.\n\t\t\t\t\t\tthis.create_or_update_form().then( () => {\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t}, 1000);\n\t\t\t\t} else {\n\t\t\t\t\t// Update the form data in the tip_jar_wp_forms custom table.\n\t\t\t\t\tthis.create_or_update_form().then( () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t});\n\t\t});\n\t};\n\n\tsendShortcodeToEditor() {\n\n\t\tthis.create_or_update_form().then( () => {\n\n\t\t\t// If we are only editing a shortcode, don't insert another shortcode into TinyMce.\n\t\t\tif ( ! this.state.insert_to_tinymce ) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\twindow.send_to_editor( '[tipjarwp id=\"' + this.state.form_id + '\"]' );\n\t\t\t}\n\n\t\t} );\n\n\t\t// Close the lightbox.\n\t\tthis.close_lightbox();\n\n\t}\n\n\tclose_lightbox() {\n\t\t// Close the lightbox.\n\t\tthis.set_all_current_visual_states( {}, {} );\n\t}\n\n\trender() {\n\n\t\tif ( this.state.remount || ! this.state.form_dynamic_settings || ! this.state.form_json ) {\n\t\t\treturn '';\n\t\t} else {\n\t\t\tvar form_number = 1;\n\t\t\treturn (\n\t\t\t\t<Tip_Jar_WP_Modal\n\t\t\t\t\tmain_component={ this }\n\t\t\t\t\tslug={ 'tjwp_classic_editor' }\n\t\t\t\t\tmodal_contents={\n\t\t\t\t\t\t<div className=\"tip-jar-wp-classic-editor-shortcode-container\">\n\t\t\t\t\t\t\t<div className=\"tip-jar-wp-shortcode-insert-area\">\n\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-edit-container-admin-only\">\n\t\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-edit-container-admin-only-header\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"tip-jar-wp-edit-container-admin-only-title\">{ tip_jar_wp_editing_strings.insert_shortcode_area_title }</span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-edit-container-admin-only-body\">\n\t\t\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.sendShortcodeToEditor.bind( this ) }>{\n\t\t\t\t\t\t\t\t\t\t\t(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif ( this.state.insert_to_tinymce ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn ( tip_jar_wp_editing_strings.insert_shortcode );\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn ( tip_jar_wp_editing_strings.update_shortcode );\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t})()}</button>\n\t\t\t\t\t\t\t\t\t\t<button className=\"button tip-jar-wp-cancel-shortcode\" onClick={ this.close_lightbox.bind( this ) }>{ tip_jar_wp_editing_strings.cancel_shortcode }</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span className=\"tip-jar-wp-element\">\n\t\t\t\t\t\t\t\t<Tip_Jar_WP_Form\n\t\t\t\t\t\t\t\t\tkey={ 'tip_jar_wp_button_element_' + form_number }\n\t\t\t\t\t\t\t\t\tid={ 'tip_jar_wp_button_element_' + form_number }\n\t\t\t\t\t\t\t\t\tform_number={ form_number }\n\t\t\t\t\t\t\t\t\tediting_mode={ true }\n\t\t\t\t\t\t\t\t\tshow_edit_display_mode={ true }\n\t\t\t\t\t\t\t\t\tediting_parent_component={ this }\n\t\t\t\t\t\t\t\t\tall_current_visual_states={\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tpayment: {}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tfrontend_nonces={ tip_jar_wp_js_vars.frontend_nonces }\n\t\t\t\t\t\t\t\t\tunique_settings={ this.state.form_json }\n\t\t\t\t\t\t\t\t\tdynamic_settings={ this.state.form_dynamic_settings }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)\n\t\t}\n\t}\n}\n\nwindow.tip_jar_wp_refresh_classic_editor_shortcode_inserter = function tip_jar_wp_refresh_classic_editor_shortcode_inserter( form_id, default_modal_visual_state = {}, insert_to_tinymce = true ) {\n\tvar lightbox_container = document.getElementById( 'tip_jar_wp_classic_editor_lightbox' );\n\n\tReactDOM.render( <Tip_Jar_WP_Classic_Editor_Shortcode_Inserter\n\t\tdefault_form_id={ form_id }\n\t\tdefault_modal_visual_state={ default_modal_visual_state }\n\t\tinsert_to_tinymce={ insert_to_tinymce }\n\t/>, lightbox_container );\n\n\treturn false;\n\n}\ntip_jar_wp_refresh_classic_editor_shortcode_inserter();\n\n\nwindow.tip_jar_wp_set_shortcode_insert_modal_to_open = function tip_jar_wp_set_shortcode_insert_modal_to_open( form_number = null, insert_to_tinymce = true ) {\n\n\t//Open the Shortcode inserter lightbox\n\ttip_jar_wp_refresh_classic_editor_shortcode_inserter(\n\t\tform_number,\n\t\t{\n\t\t'tjwp_classic_editor': {}\n\t\t},\n\t\tinsert_to_tinymce\n\t);\n}\n\n// Move the media buttons into the right position.\n// We have to do this with javascript because the WordPress media_buttons hook is unable to scan the content of the wp_editor it is for.\n// This allows us to scan the contents for the tipjarwp shortcode, and output edit buttons dynamically, if the shortcode actually exists.\nwindow.tip_jar_wp_move_shortcode_edit_media_buttons = function tip_jar_wp_move_shortcode_edit_media_buttons() {\n\n\tvar tip_jar_wp_media_buttons_exist = document.querySelector( '.tip-jar-wp-media-buttons' );\n\n\t// Set all tip jar forms on the page to have their modals closed, then we'll open this one.\n\tif ( tip_jar_wp_media_buttons_exist ) {\n\n\t\tvar tip_jar_wp_media_buttons_containers = document.querySelectorAll( '.tip-jar-wp-media-buttons' );\n\n\t\t// Loop through each Tip Jar WP Shortcode Media Buttons Container...\n\t\ttip_jar_wp_media_buttons_containers.forEach(function( tip_jar_wp_media_buttons_container ) {\n\n\t\t\t// Grab the contents of this container, and move them to the previous sibling's\n\t\t\ttip_jar_wp_media_buttons_container.previousElementSibling.innerHTML = tip_jar_wp_media_buttons_container.previousElementSibling.innerHTML + tip_jar_wp_media_buttons_container.innerHTML;\n\n\t\t\t// Remove the originals, which were in the wrong spot.\n\t\t\ttip_jar_wp_media_buttons_container.remove();\n\t\t} );\n\n\t}\n}\n//tip_jar_wp_move_shortcode_edit_media_buttons();\n"],"sourceRoot":""}1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./includes/admin/js/src/classic-editor/shortcode-insert.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","Tip_Jar_WP_Classic_Editor_Shortcode_Inserter","_React$Component","props","_this","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","state","default_form_id","form_id","form_json","form_dynamic_settings","tip_jar_wp_classic_editor_vars","tip_jar_wp_dynamic_settings","default_modal_visual_state","tjwp_classic_editor","insert_to_tinymce","remount","_inherits","React","Component","_this2","setState","tip_jar_wp_block_default_json","_this3","get_form_json_from_server","set_all_current_visual_states","new_state","arguments","length","undefined","new_modal_state","all_current_visual_states","modal_visual_state","_this4","Promise","resolve","reject","postData","FormData","append","get_form_nonce","fetch","get_form_endpoint","method","credentials","body","then","response","status","console","log","json","data","success","JSON","parse","catch","err","_this5","stringify","create_or_update_form_nonce","create_or_update_form_endpoint","new_form_json","_this6","use_typing_delay","keypress_delay","clearTimeout","setTimeout","create_or_update_form","_this7","send_to_editor","close_lightbox","_this8","createElement","Tip_Jar_WP_Modal","main_component","slug","modal_contents","className","tip_jar_wp_editing_strings","insert_shortcode_area_title","onClick","sendShortcodeToEditor","insert_shortcode","update_shortcode","cancel_shortcode","Tip_Jar_WP_Form","id","form_number","editing_mode","show_edit_display_mode","editing_parent_component","payment","frontend_nonces","tip_jar_wp_js_vars","unique_settings","dynamic_settings","tip_jar_wp_refresh_classic_editor_shortcode_inserter","lightbox_container","document","getElementById","ReactDOM","render","tip_jar_wp_set_shortcode_insert_modal_to_open","tip_jar_wp_move_shortcode_edit_media_buttons","querySelector","querySelectorAll","forEach","tip_jar_wp_media_buttons_container","previousElementSibling","innerHTML","remove"],"mappings":"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","file":"includes/admin/js/build/classic-editor/tip-form-classic-editor.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/*\n * Tip Jar WP\n * https://www.tipjarwp.com\n *\n * Licensed under the GPL license.\n *\n * Author: Tip Jar WP\n * Version: 1.0\n * Date: April 18, 2018\n */\n\nwindow.Tip_Jar_WP_Classic_Editor_Shortcode_Inserter = class Tip_Jar_WP_Classic_Editor_Shortcode_Inserter extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tdefault_form_id: null,\n\t\t\tform_id: null,\n\t\t\tform_json: null,\n\t\t\tform_dynamic_settings: tip_jar_wp_classic_editor_vars.tip_jar_wp_dynamic_settings,\n\t\t\tdefault_modal_visual_state: {\n\t\t\t\t'tjwp_classic_editor': {}\n\t\t\t},\n\t\t\tinsert_to_tinymce: true,\n\t\t\tremount: false,\n\t\t};\n\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.setState( {\n\t\t\tdefault_form_id: this.props.default_form_id,\n\t\t\tform_id: this.props.default_form_id,\n\t\t\tinsert_to_tinymce: this.props.insert_to_tinymce,\n\t\t}, () => {\n\t\t\t// If there's no form ID upon mount, this is a new Tip Jar. Set the json to be the default values.\n\t\t\tif ( ! this.state.form_id ) {\n\t\t\t\tthis.setState( {\n\t\t\t\t\tform_json: tip_jar_wp_classic_editor_vars.tip_jar_wp_block_default_json\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\t// If the default form id in the props is different than the default form id in the state, fetch that new form ID from the server.\n\t\tif ( this.state.default_form_id !== this.props.default_form_id ) {\n\n\t\t\tthis.setState( {\n\t\t\t\tremount: true,\n\t\t\t\tdefault_form_id: this.props.default_form_id,\n\t\t\t\tform_id: this.props.default_form_id,\n\t\t\t\tinsert_to_tinymce: this.props.insert_to_tinymce,\n\t\t\t}, () => {\n\n\t\t\t\tif ( this.state.form_id ) {\n\t\t\t\t\tthis.get_form_json_from_server();\n\t\t\t\t} else {\n\n\t\t\t\t\t// If there's no form ID, this is a new form creation.\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\tform_json: tip_jar_wp_classic_editor_vars.tip_jar_wp_block_default_json\n\t\t\t\t\t}, () => {\n\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\tremount: false\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t\t// If the default modal setting for this changed, it needs to be reset and updated.\n\t\tif ( this.props.default_modal_visual_state !== this.state.default_modal_visual_state ) {\n\t\t\tthis.setState( {\n\t\t\t\tdefault_modal_visual_state: this.props.default_modal_visual_state\n\t\t\t}, () => {\n\t\t\t\tthis.set_all_current_visual_states( false, this.state.default_modal_visual_state );\n\t\t\t} );\n\t\t}\n\n\t}\n\n\t// This is a simplified version of the set_all_current_visual_states method from the main Tip Form component. This just doesn't do URL updating.\n\tset_all_current_visual_states( new_state = false, new_modal_state = false ) {\n\n\t\tvar in_initial_state = false;\n\n\t\t// If no new state was passed, we're probably just updating the modal state.\n\t\tif ( ! new_state ) {\n\t\t\tnew_state = this.state.all_current_visual_states;\n\t\t}\n\n\t\t// If no modal state was passed, we probably are just updating the main state.\n\t\tif ( ! new_modal_state ) {\n\t\t\tnew_modal_state = this.state.modal_visual_state;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tall_current_visual_states: new_state,\n\t\t\tmodal_visual_state: new_modal_state\n\t\t} );\n\t}\n\n\t// This will send a fetch call to the server to get the json for a form from the forms table.\n\tget_form_json_from_server() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\tvar postData = new FormData();\n\t\t\tpostData.append('action', 'tip_jar_wp_get_form' );\n\t\t\tpostData.append('form_id', this.state.form_id );\n\t\t\tpostData.append('tip_jar_wp_get_form_nonce', tip_jar_wp_classic_editor_vars.get_form_nonce);\n\n\t\t\tfetch( tip_jar_wp_classic_editor_vars.get_form_endpoint, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tmode: \"same-origin\",\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t\tbody: postData\n\t\t\t} ).then(\n\t\t\t\t( response ) => {\n\t\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' + response.status);\n\t\t\t\t\t\treject('unable_to_get_form_data');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Examine the text in the response\n\t\t\t\t\tresponse.json().then(\n\t\t\t\t\t\t( data ) => {\n\t\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\t\t\tform_json: JSON.parse( data.json ),\n\t\t\t\t\t\t\t\t\tremount: true\n\t\t\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\t\t\t\tremount: false\n\t\t\t\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\t\t\t\tresolve( data.form_id );\n\t\t\t\t\t\t\t\t\t\treturn data.form_id;\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.log('Looks like there was a problem: ' + data);\n\t\t\t\t\t\t\t\treject('unable_to_get_form_data');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t).catch(\n\t\t\t\t\t\t( err ) => {\n\t\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\t\treject('unable_to_get_form_data');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t).catch(\n\t\t\t\t( err ) => {\n\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\treject('unable_to_get_form_data');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t);\n\n\t\t} );\n\n\t}\n\n\t// This will send a fetch call to the server to generate or update a row in the forms table.\n\tcreate_or_update_form() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\tvar postData = new FormData();\n\t\t\tpostData.append('action', 'tip_jar_wp_create_or_update_form' );\n\t\t\tpostData.append('form_id', this.state.form_id );\n\t\t\tpostData.append('state', JSON.stringify( this.state.form_json ) );\n\t\t\tpostData.append('tip_jar_wp_create_or_update_form_nonce', tip_jar_wp_classic_editor_vars.create_or_update_form_nonce);\n\n\t\t\tfetch( tip_jar_wp_classic_editor_vars.create_or_update_form_endpoint, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tmode: \"same-origin\",\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t\tbody: postData\n\t\t\t} ).then(\n\t\t\t\t( response ) => {\n\t\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' + response.status);\n\t\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Examine the text in the response\n\t\t\t\t\tresponse.json().then(\n\t\t\t\t\t\t( data ) => {\n\t\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\t\t\tform_id: data.form_id\n\t\t\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\t\t\tresolve( data.form_id );\n\t\t\t\t\t\t\t\t\treturn data.form_id;\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.log('Looks like there was a problem: ' + data);\n\t\t\t\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t).catch(\n\t\t\t\t\t\t( err ) => {\n\t\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t).catch(\n\t\t\t\t( err ) => {\n\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t);\n\n\t\t} );\n\n\t}\n\n\tonChangeHandler( new_form_json, use_typing_delay = false ) {\n\n\t\treturn new Promise( (resolve, reject) => {\n\t\t\t// Temporarily store the value in the state of this component while we wait for the typing to stop.\n\t\t\tthis.setState( {\n\t\t\t\tform_json: new_form_json\n\t\t\t}, () => {\n\n\t\t\t\tif ( use_typing_delay ) {\n\t\t\t\t\t// Set up a delay which waits to save the tip until .5 seconds after they stop typing.\n\t\t\t\t\tif( this.keypress_delay ) {\n\t\t\t\t\t\t// Clear the keypress delay if the user just typed\n\t\t\t\t\t\tclearTimeout( this.keypress_delay );\n\t\t\t\t\t\tthis.keypress_delay = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// (Re)-Set up the save_note_with_tip to fire in 500ms\n\t\t\t\t\tthis.keypress_delay = setTimeout( () => {\n\t\t\t\t\t\tclearTimeout( this.keypress_delay );\n\n\t\t\t\t\t\t// Update the form data in the tip_jar_wp_forms custom table.\n\t\t\t\t\t\tthis.create_or_update_form().then( () => {\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t}, 1000);\n\t\t\t\t} else {\n\t\t\t\t\t// Update the form data in the tip_jar_wp_forms custom table.\n\t\t\t\t\tthis.create_or_update_form().then( () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t});\n\t\t});\n\t};\n\n\tsendShortcodeToEditor() {\n\n\t\tthis.create_or_update_form().then( () => {\n\n\t\t\t// If we are only editing a shortcode, don't insert another shortcode into TinyMce.\n\t\t\tif ( ! this.state.insert_to_tinymce ) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\twindow.send_to_editor( '[tipjarwp id=\"' + this.state.form_id + '\"]' );\n\t\t\t}\n\n\t\t} );\n\n\t\t// Close the lightbox.\n\t\tthis.close_lightbox();\n\n\t}\n\n\tclose_lightbox() {\n\t\t// Close the lightbox.\n\t\tthis.set_all_current_visual_states( {}, {} );\n\t}\n\n\trender() {\n\n\t\tif ( this.state.remount || ! this.state.form_dynamic_settings || ! this.state.form_json ) {\n\t\t\treturn '';\n\t\t} else {\n\t\t\tvar form_number = 1;\n\t\t\treturn (\n\t\t\t\t<Tip_Jar_WP_Modal\n\t\t\t\t\tmain_component={ this }\n\t\t\t\t\tslug={ 'tjwp_classic_editor' }\n\t\t\t\t\tmodal_contents={\n\t\t\t\t\t\t<div className=\"tip-jar-wp-classic-editor-shortcode-container\">\n\t\t\t\t\t\t\t<div className=\"tip-jar-wp-shortcode-insert-area\">\n\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-edit-container-admin-only\">\n\t\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-edit-container-admin-only-header\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"tip-jar-wp-edit-container-admin-only-title\">{ tip_jar_wp_editing_strings.insert_shortcode_area_title }</span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-edit-container-admin-only-body\">\n\t\t\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.sendShortcodeToEditor.bind( this ) }>{\n\t\t\t\t\t\t\t\t\t\t\t(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif ( this.state.insert_to_tinymce ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn ( tip_jar_wp_editing_strings.insert_shortcode );\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn ( tip_jar_wp_editing_strings.update_shortcode );\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t})()}</button>\n\t\t\t\t\t\t\t\t\t\t<button className=\"button tip-jar-wp-cancel-shortcode\" onClick={ this.close_lightbox.bind( this ) }>{ tip_jar_wp_editing_strings.cancel_shortcode }</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span className=\"tip-jar-wp-element\">\n\t\t\t\t\t\t\t\t<Tip_Jar_WP_Form\n\t\t\t\t\t\t\t\t\tkey={ 'tip_jar_wp_button_element_' + form_number }\n\t\t\t\t\t\t\t\t\tid={ 'tip_jar_wp_button_element_' + form_number }\n\t\t\t\t\t\t\t\t\tform_number={ form_number }\n\t\t\t\t\t\t\t\t\tediting_mode={ true }\n\t\t\t\t\t\t\t\t\tshow_edit_display_mode={ true }\n\t\t\t\t\t\t\t\t\tediting_parent_component={ this }\n\t\t\t\t\t\t\t\t\tall_current_visual_states={\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tpayment: {}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tfrontend_nonces={ tip_jar_wp_js_vars.frontend_nonces }\n\t\t\t\t\t\t\t\t\tunique_settings={ this.state.form_json }\n\t\t\t\t\t\t\t\t\tdynamic_settings={ this.state.form_dynamic_settings }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)\n\t\t}\n\t}\n}\n\nwindow.tip_jar_wp_refresh_classic_editor_shortcode_inserter = function tip_jar_wp_refresh_classic_editor_shortcode_inserter( form_id, default_modal_visual_state = {}, insert_to_tinymce = true ) {\n\tvar lightbox_container = document.getElementById( 'tip_jar_wp_classic_editor_lightbox' );\n\n\tReactDOM.render( <Tip_Jar_WP_Classic_Editor_Shortcode_Inserter\n\t\tdefault_form_id={ form_id }\n\t\tdefault_modal_visual_state={ default_modal_visual_state }\n\t\tinsert_to_tinymce={ insert_to_tinymce }\n\t/>, lightbox_container );\n\n\treturn false;\n\n}\ntip_jar_wp_refresh_classic_editor_shortcode_inserter();\n\n\nwindow.tip_jar_wp_set_shortcode_insert_modal_to_open = function tip_jar_wp_set_shortcode_insert_modal_to_open( form_number = null, insert_to_tinymce = true ) {\n\n\t//Open the Shortcode inserter lightbox\n\ttip_jar_wp_refresh_classic_editor_shortcode_inserter(\n\t\tform_number,\n\t\t{\n\t\t'tjwp_classic_editor': {}\n\t\t},\n\t\tinsert_to_tinymce\n\t);\n}\n\n// Move the media buttons into the right position.\n// We have to do this with javascript because the WordPress media_buttons hook is unable to scan the content of the wp_editor it is for.\n// This allows us to scan the contents for the tipjarwp shortcode, and output edit buttons dynamically, if the shortcode actually exists.\nwindow.tip_jar_wp_move_shortcode_edit_media_buttons = function tip_jar_wp_move_shortcode_edit_media_buttons() {\n\n\tvar tip_jar_wp_media_buttons_exist = document.querySelector( '.tip-jar-wp-media-buttons' );\n\n\t// Set all tip jar forms on the page to have their modals closed, then we'll open this one.\n\tif ( tip_jar_wp_media_buttons_exist ) {\n\n\t\tvar tip_jar_wp_media_buttons_containers = document.querySelectorAll( '.tip-jar-wp-media-buttons' );\n\n\t\t// Loop through each Tip Jar WP Shortcode Media Buttons Container...\n\t\ttip_jar_wp_media_buttons_containers.forEach(function( tip_jar_wp_media_buttons_container ) {\n\n\t\t\t// Grab the contents of this container, and move them to the previous sibling's\n\t\t\ttip_jar_wp_media_buttons_container.previousElementSibling.innerHTML = tip_jar_wp_media_buttons_container.previousElementSibling.innerHTML + tip_jar_wp_media_buttons_container.innerHTML;\n\n\t\t\t// Remove the originals, which were in the wrong spot.\n\t\t\ttip_jar_wp_media_buttons_container.remove();\n\t\t} );\n\n\t}\n}\n//tip_jar_wp_move_shortcode_edit_media_buttons();\n"],"sourceRoot":""} -
tip-jar-wp/trunk/includes/admin/js/build/gutenberg/blocks/tip-form.js.map
r2449460 r2953538 1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:/// /Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/gutenberg/blocks/tip-form/tip-form.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/gutenberg/blocks/tip-form/boilerplate.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","AttributeReciever","props","_this","_classCallCheck","this","_getPrototypeOf","keypress_delay","onChangeHandler","_assertThisInitialized","React","Component","new_state","_this2","use_typing_delay","arguments","length","undefined","Promise","resolve","reject","setState","clearTimeout","setTimeout","changeAttributes","then","createElement","className","Tip_Jar_WP_Form","id","form_number","editing_mode","show_edit_display_mode","editing_parent_component","all_current_visual_states","payment","frontend_nonces","tip_jar_wp_js_vars","unique_settings","attributes","dynamic_settings","tip_jar_wp_gutenberg_vars","tip_jar_wp_dynamic_settings","__","wp","i18n","registerBlockType","blocks","Icon","editor","RichText","_React$createElement","_defineProperty","version","xmlns","title","icon","category","tip_jar_wp_block_default_json","edit","temp_json","JSON","parse","json","postData","FormData","append","create_form_nonce","fetch","create_form_endpoint","method","credentials","body","response","status","console","log","data","success","form_id","catch","err","tip_form_id","setAttributes","stringify","block_attributes","default_attributes","default","string","input_field_instruction","tip_form","subscribe","this_block","select","getBlock","clientId","save"],"mappings":"aACA,IAAAA,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,gxBCQeC,cA1Ed,SAAAA,EAAaC,GAAO,IAAAC,MAAA,mGAAAC,CAAAC,KAAAJ,KACnBI,MAAAF,MAAAG,EAAAL,GAAA7B,KAAAiC,KAAMH,mDAEDK,eAAiB,KACtBJ,EAAKK,gBAAkBL,EAAKK,gBAAgBf,KAArBgB,IAAAN,KAJJA,wPAFWO,MAAMC,yDASpBC,GAAsC,IAAAC,EAAAR,KAA3BS,EAA2BC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAEtD,OAAO,IAAIG,QAAS,SAACC,EAASC,GAG7BP,EAAKQ,SAAUT,EAAW,WAEpBE,GAEAD,EAAKN,iBAERe,aAAcT,EAAKN,gBACnBM,EAAKN,eAAiB,MAIvBM,EAAKN,eAAiBgB,WAAY,WACjCD,aAAcT,EAAKN,gBAGnBM,EAAKX,MAAMsB,iBAAkBZ,GAAYa,KAAM,WAC9CN,OAIC,MAGHN,EAAKX,MAAMsB,iBAAkBZ,GAAYa,KAAM,WAC9CN,2CAcJ,OACCT,MAAAgB,cAAA,QAAMC,UAAU,sBACfjB,MAAAgB,cAACE,gBAAD,CACCpC,IAAM,8BACNqC,GAAK,8BACLC,YAPe,EAQfC,cAAe,EACfC,wBAAyB,EACzBC,yBAA2B5B,KAC3B6B,0BACC,CACCC,QAAS,IAGXC,gBAAkBC,mBAAmBD,gBACrCE,gBAAkBjC,KAAKH,MAAMqC,WAC7BC,iBAAmBC,0BAA0BC,u+BCvE1CC,EAAOC,GAAGC,KAAVF,GACAG,EAAsBF,GAAGG,OAAzBD,kBAIFE,GAHWJ,GAAGK,OAAOC,uaAGRxC,MAAMC,kDAEf,IAAAwC,EACR,OACCzC,MAAAgB,cAAA,OAAA0B,EAAAD,EAAA,CAAKE,QAAQ,MAAMxB,GAAG,UAAUyB,MAAM,8BAAtC,QAAyE,gCAAzEF,EAAAD,EAAA,IAA0G,OAA1GC,EAAAD,EAAA,IAAkH,OAAlHC,EAAAD,EAAA,UAAgI,iBAAhIC,EAAAD,EAAA,mBAAiK,qBAAjKC,EAAAD,EAAA,OAA0L,WAA1LA,GACAzC,MAAAgB,cAAA,QAAMnD,EAAE,24CAaRmC,MAAAgB,cAAA,QAAMnD,EAAE,0+DAuBXuE,EAAmB,oBAAqB,CACvCS,MAAOZ,EAAI,6BACXa,KAAM9C,MAAAgB,cAACsB,EAAD,MACNS,SAAU,SAGVlB,WAAYE,0BAA0BiB,8BAItCC,KAVuC,SAUjCzD,GAKL,IAAI0D,EAAYC,KAAKC,MAAO5D,EAAMqC,WAAWwB,MACtCH,EAAU/B,IAyEX,IAAIX,QAAS,SAACC,EAASC,GAE7B,IAAI4C,EAAW,IAAIC,SACnBD,EAASE,OAAO,SAAU,oCAC1BF,EAASE,OAAO,WAAW,GAC3BF,EAASE,OAAO,SAAS,GACzBF,EAASE,OAAO,yCAA0CzB,0BAA0B0B,mBAEpFC,MAAO3B,0BAA0B4B,qBAAsB,CACtDC,OAAQ,OACRlF,KAAM,cACNmF,YAAa,cACbC,KAAMR,IACHvC,KACH,SAAUgD,GACT,GAAyB,MAApBA,EAASC,OAGb,OAFAC,QAAQC,IAAI,gDAAkDH,EAASC,aACvEtD,EAAO,yBAKRqD,EAASV,OAAOtC,KACf,SAAUoD,GACT,OAAKA,EAAKC,SACT3D,EAAS0D,EAAKE,SACPF,EAAKE,UAEZJ,QAAQC,IAAI,mCAAqCC,QACjDzD,EAAO,4BAIR4D,MACD,SAAUC,GACTN,QAAQC,IAAI,gBAAiBK,GAC7B7D,EAAO,6BAKT4D,MACD,SAAUC,GACTN,QAAQC,IAAI,gBAAiBK,GAC7B7D,EAAO,6BAnH4BK,KAAM,SAAEyD,GAE3CtB,EAAU/B,GAAKqD,EAEfhF,EAAMiF,cAAe,CACpBpB,KAAMF,KAAKuB,UAAWxB,OAKzB,IA6BIyB,EAAqBxB,KAAKC,MAAO5D,EAAMqC,WAAWwB,MAClDuB,EAAqBzB,KAAKC,MAAOrB,0BAA0BiB,8BAA8BK,KAAKwB,SAElG,IAAK,IAAIC,KAAUF,EAAkB,QAC7BD,EAAgB,QAAYG,KAClCH,EAAgB,QAAYG,GAAUF,EAAkB,QAAYE,IAItE,IAAK,IAAIC,KAA2BH,EAAkB,QAAlB,yBAC5BD,EAAgB,QAAhB,yBAAwDI,KAC9DJ,EAAgB,QAAhB,yBAAwDI,GAA2BH,EAAkB,QAAlB,yBAA0DG,IAI/I,OACE/E,MAAAgB,cAACgE,EAAD,CACCnD,WAAa8C,EACb7D,iBA/CsB,SAACe,GAEzB,OAAO,IAAIrB,QAAS,SAACC,EAASC,GAG7BlB,EAAMiF,cAAe,CACpBpB,KAAMF,KAAKuB,UAAW7C,KAIvBK,GAAGiC,KAAKc,UAAW,WAGlB,IAAMC,EAAahD,GAAGiC,KAAKgB,OAAQ,qBAAsBC,SAAU5F,EAAM6F,UAEpEH,GAAcA,EAAWrD,WAG7BpB,EAASyE,EAAWrD,YAEpBnB,YAgCL4E,KAhFuC,SAgFjC9F,GACL,OAAO","file":"includes/admin/js/build/gutenberg/blocks/tip-form.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/*\n* Tip Jar WP\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: January 11, 2018\n*/\n\n// This component acts as an in-between, from our actual custom react component(s), to Gutenberg blocks.\n// It recieves a JS object, which it passes to the block's attributes.\n// From there, the attributes are saved to the block.\nclass AttributeReciever extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.keypress_delay = null;\n\t\tthis.onChangeHandler = this.onChangeHandler.bind( this );\n\t}\n\n\tonChangeHandler( new_state, use_typing_delay = false ) {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Temporarily store the value in the state of this component while we wait for the typing to stop.\n\t\t\tthis.setState( new_state, () => {\n\n\t\t\t\tif ( use_typing_delay ) {\n\t\t\t\t\t// Set up a delay which waits to save the tip until .5 seconds after they stop typing.\n\t\t\t\t\tif( this.keypress_delay ) {\n\t\t\t\t\t\t// Clear the keypress delay if the user just typed\n\t\t\t\t\t\tclearTimeout( this.keypress_delay );\n\t\t\t\t\t\tthis.keypress_delay = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// (Re)-Set up the save_note_with_tip to fire in 500ms\n\t\t\t\t\tthis.keypress_delay = setTimeout( () => {\n\t\t\t\t\t\tclearTimeout( this.keypress_delay );\n\n\t\t\t\t\t\t// Update the attributes of the the Gutenberg Block.\n\t\t\t\t\t\tthis.props.changeAttributes( new_state ).then( () => {\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}, 1000);\n\t\t\t\t} else {\n\t\t\t\t\t// Update the attributes of the the Gutenberg Block.\n\t\t\t\t\tthis.props.changeAttributes( new_state ).then( () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t});\n\t\t});\n\n\t};\n\n\trender() {\n\n\t\tvar form_number = 1;\n\n\t\treturn (\n\t\t\t<span className=\"tip-jar-wp-element\">\n\t\t\t\t<Tip_Jar_WP_Form\n\t\t\t\t\tkey={ 'tip_jar_wp_button_element_' + form_number }\n\t\t\t\t\tid={ 'tip_jar_wp_button_element_' + form_number }\n\t\t\t\t\tform_number={ form_number }\n\t\t\t\t\tediting_mode={ true }\n\t\t\t\t\tshow_edit_display_mode={ true }\n\t\t\t\t\tediting_parent_component={ this }\n\t\t\t\t\tall_current_visual_states={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpayment: {}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfrontend_nonces={ tip_jar_wp_js_vars.frontend_nonces }\n\t\t\t\t\tunique_settings={ this.props.attributes }\n\t\t\t\t\tdynamic_settings={ tip_jar_wp_gutenberg_vars.tip_jar_wp_dynamic_settings }\n\t\t\t\t/>\n\t\t\t</span>\n\t\t);\n\n\t};\n}\n\nexport default AttributeReciever;\n","/*\n* Tip Jar WP\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: January 11, 2018\n*/\n\nconst { __ } = wp.i18n;\nconst { registerBlockType } = wp.blocks;\nconst RichText = wp.editor.RichText;\nimport AttributeReciever from './tip-form.js'\n\nclass Icon extends React.Component {\n\n\trender() {\n\t\treturn (\n\t\t\t<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 1000 1000\" enableBackground=\"new 0 0 1000 1000\" fill=\"#f9b429\">\n\t\t\t<path d=\"M797.669,371.752l-19.702-55.833c-1.521-4.297-2.181-8.854-1.938-13.406l0.018-0.334l-0.125-44.222h12.02\n\t\t\tc6.924,0,12.537-5.613,12.537-12.537c0-6.924-5.613-12.538-12.537-12.538h-12.09l-0.086-30.089h12.176\n\t\t\tc6.924,0,12.537-5.613,12.537-12.537s-5.613-12.537-12.537-12.537h-12.245l-0.099-34.784c-0.064-14.734-12.012-26.653-26.746-26.681\n\t\t\tH251.158c-14.733,0.03-26.68,11.948-26.746,26.681l-0.099,34.784h-12.253c-6.924,0-12.538,5.613-12.538,12.537\n\t\t\ts5.613,12.537,12.538,12.537l0,0h12.174l-0.085,30.089h-12.089c-6.924,0-12.538,5.613-12.538,12.538\n\t\t\tc0,6.924,5.613,12.537,12.538,12.537l0,0h12.019l-0.124,44.222l0.017,0.334c0.242,4.553-0.417,9.11-1.939,13.408l-19.702,55.832\n\t\t\tc-23.033,65.168-34.787,133.787-34.756,202.907v171.176c0.085,76.13,61.78,137.825,137.91,137.91h389.031\n\t\t\tc76.13-0.085,137.824-61.78,137.91-137.91V574.659C832.456,505.539,820.702,436.921,797.669,371.752z M249.478,143.005\n\t\t\tc0.007-0.92,0.751-1.665,1.672-1.671h497.692c0.921,0.006,1.666,0.751,1.672,1.671l0.099,34.714H249.379L249.478,143.005z\n\t\t\tM249.311,202.793h501.38l0.085,30.089H249.224L249.311,202.793z M807.351,745.842c-0.069,62.288-50.547,112.766-112.835,112.835\n\t\t\tH305.485c-62.289-0.069-112.766-50.547-112.836-112.835V574.666c-0.029-66.277,11.241-132.073,33.326-194.562l19.702-55.823\n\t\t\tc2.577-7.275,3.716-14.982,3.355-22.693l0.122-43.629h501.692l0.124,43.629c-0.362,7.71,0.776,15.417,3.354,22.693l19.702,55.823\n\t\t\tc22.084,62.489,33.354,128.285,33.325,194.562V745.842z\"/>\n\t\t\t<path d=\"M500,390.853L500,390.853c-79.742-0.001-144.387,64.643-144.388,144.384c0,0.002,0,0.003,0,0.004l0,0\n\t\t\tc0,79.742,64.643,144.387,144.384,144.388c0.002,0,0.003,0,0.004,0l0,0c79.743,0.001,144.388-64.642,144.388-144.385\n\t\t\tc0-0.001,0-0.002,0-0.003l0,0c0.001-79.742-64.642-144.387-144.385-144.388C500.003,390.853,500.001,390.853,500,390.853z\n\t\t\tM518.89,618.042c-5.441,2.061-6.411,4.122-6.37,7.663c0.018,0.275,0.042,0.555,0.071,0.835c0.081,0.744,0.146,1.737,0.168,2.811\n\t\t\tc0.261,4.611-0.229,7.92-1.462,9.724c-3.593,5.267-7.729,6.466-10.568,6.547h-0.194c-4.691,0-10.85-4.636-12.088-9.148\n\t\t\tc-0.59-2.147-1.07-4.024-1.493-5.684c-2.565-10.029-2.718-10.622-13.707-16.676l-0.265-0.167\n\t\t\tc-12.098-8.125-19.371-19.925-21.617-35.071c-0.185-1.218-0.291-2.446-0.319-3.678c-0.722-11.382,6.261-14.181,10.497-14.84\n\t\t\tc11.959-1.823,13.875,9.811,14.516,13.642c2.46,14.76,12.35,22.93,26.451,21.912c12.242-1.132,21.583-11.443,21.501-23.738\n\t\t\tc-0.408-12.92-9.737-21.837-24.349-23.149c-23.975-2.152-41.046-15.179-46.838-35.737c-1.253-4.433-1.898-9.015-1.921-13.622\n\t\t\tc-0.771-20.113,11.306-38.5,30.071-45.782c5.39-2.111,6.353-4.199,6.302-7.784c-0.019-0.276-0.042-0.561-0.071-0.852\n\t\t\tc-0.079-0.76-0.129-1.672-0.154-2.595c-0.08-1.409-0.09-3.297-0.025-4.603c-0.064-3.077,0.818-6.101,2.531-8.659\n\t\t\tc2.297-3.51,7.476-4.513,9.891-4.539c2.807,0.095,5.439,1.381,7.24,3.535c2.578,2.721,4.103,6.271,4.302,10.014\n\t\t\tc0.057,0.507,0.062,1.02,0.017,1.528c-0.092,0.983-0.126,1.972-0.104,2.96c0.426,6.077,3.644,9.545,12.74,13.573\n\t\t\tc13.743,6.083,22.35,18.723,24.894,36.57c0.183,1.247,0.286,2.503,0.312,3.763c0.747,11.339-6.256,14.119-10.496,14.753\n\t\t\tc-11.822,1.759-13.894-9.863-14.568-13.685c-2.435-13.759-10.514-21.541-22.748-21.909c-13.453-0.431-24.263,9.07-25.195,22.046\n\t\t\tc-0.05,0.71-0.055,1.408-0.047,2.104c0.689,11.812,9.842,21.383,21.611,22.601c1.422,0.183,2.854,0.309,4.286,0.438\n\t\t\tc2.701,0.19,5.39,0.541,8.051,1.048c21.062,4.197,36.924,21.644,39.101,43.01c0.134,1.348,0.208,2.725,0.228,4.21\n\t\t\tC550.058,591.817,537.914,610.583,518.89,618.042L518.89,618.042z\"/>\n\t\t\t</svg>\n\t\t);\n\t}\n}\n\nregisterBlockType( 'tipjarwp/tip-form', {\n\ttitle: __( 'Tip Jar WP - Payment Form' ),\n\ticon: <Icon />,\n\tcategory: 'common',\n\n\t// Note that these values are only used when the block is first added. Otherwise, these are ignored and the block pulls from the post_content.\n\tattributes: tip_jar_wp_gutenberg_vars.tip_jar_wp_block_default_json,\n\n\t// This function is passed into the context, which makes it available in all child components.\n\t// This allows any child component to update the \"state\", aka \"attributes\" in Gutenberg. Attributes are saved....where?\n\tedit( props ) {\n\n\t\t// We will store the unique attibutes for this block in a custom table.\n\t\t// So right now, we will simply create a row in the custom table for this block's attributes, and populate it with the attributes when the block is viewed.\n\t\t// That takes place in the server side render function (tip_jar_wp_tip_form_block_server_side_render)\n\t\tvar temp_json = JSON.parse( props.attributes.json );\n\t\tif ( ! temp_json.id ) {\n\n\t\t\ttip_jar_wp_create_and_get_form_id().then( ( tip_form_id ) => {\n\n\t\t\t\ttemp_json.id = tip_form_id;\n\n\t\t\t\tprops.setAttributes( {\n\t\t\t\t\tjson: JSON.stringify( temp_json ),\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\n\t\tconst changeAttributes = (attributes) => {\n\n\t\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t\t// Update the attributes, then resolve the promise\n\t\t\t\tprops.setAttributes( {\n\t\t\t\t\tjson: JSON.stringify( attributes ),\n\t\t\t\t} );\n\n\t\t\t\t// Listen for changes to this block\n\t\t\t\twp.data.subscribe( () => {\n\n\t\t\t\t\t// Get the updated state of this block\n\t\t\t\t\tconst this_block = wp.data.select( 'core/block-editor' ).getBlock( props.clientId );\n\n\t\t\t\t\tif ( this_block && this_block.attributes ) {\n\t\t\t\t\t\t// console.log( 'saving props...' );\n\t\t\t\t\t\t// console.log( JSON.parse( this_block.attributes.json ) );\n\t\t\t\t\t\tresolve( this_block.attributes );\n\t\t\t\t\t} else {\n\t\t\t\t\t\treject();\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t});\n\t\t}\n\n\t\t// Make sure value in the attributes exists in the JSON. This covers situations where new variables might have been added after this block was saved to the post_content.\n\t\tvar block_attributes = JSON.parse( props.attributes.json );\n\t\tvar default_attributes = JSON.parse( tip_jar_wp_gutenberg_vars.tip_jar_wp_block_default_json.json.default );\n\n\t\tfor (var string in default_attributes['strings']) {\n\t\t\tif ( ! block_attributes['strings'][string] ) {\n\t\t\t\tblock_attributes['strings'][string] = default_attributes['strings'][string];\n\t\t\t}\n\t\t}\n\n\t\tfor (var input_field_instruction in default_attributes['strings']['input_field_instructions']) {\n\t\t\tif ( ! block_attributes['strings']['input_field_instructions'][input_field_instruction] ) {\n\t\t\t\tblock_attributes['strings']['input_field_instructions'][input_field_instruction] = default_attributes['strings']['input_field_instructions'][input_field_instruction];\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t\t<AttributeReciever\n\t\t\t\t\tattributes={ block_attributes }\n\t\t\t\t\tchangeAttributes={ changeAttributes }\n\t\t\t\t/>\n\t\t);\n\t},\n\n\tsave( props ) {\n\t\treturn null;\n\t}\n\n} );\n\n// This will send a fetch call to the server to generate a row in the forms table.\nfunction tip_jar_wp_create_and_get_form_id() {\n\n\treturn new Promise( (resolve, reject) => {\n\n\t\tvar postData = new FormData();\n\t\tpostData.append('action', 'tip_jar_wp_create_or_update_form' );\n\t\tpostData.append('form_id', false ); // This is false so that it generates a new form.\n\t\tpostData.append('state', false );\n\t\tpostData.append('tip_jar_wp_create_or_update_form_nonce', tip_jar_wp_gutenberg_vars.create_form_nonce);\n\n\t\tfetch( tip_jar_wp_gutenberg_vars.create_form_endpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' + response.status);\n\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\t\t\t\t\t\t\tresolve( data.form_id );\n\t\t\t\t\t\t\treturn data.form_id;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log('Looks like there was a problem: ' + data);\n\t\t\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\treject('unable_to_create_form');\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t} );\n\n}\n"],"sourceRoot":""}1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./includes/admin/js/src/gutenberg/blocks/tip-form/tip-form.js","webpack:///./includes/admin/js/src/gutenberg/blocks/tip-form/boilerplate.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","AttributeReciever","props","_this","_classCallCheck","this","_getPrototypeOf","keypress_delay","onChangeHandler","_assertThisInitialized","React","Component","new_state","_this2","use_typing_delay","arguments","length","undefined","Promise","resolve","reject","setState","clearTimeout","setTimeout","changeAttributes","then","createElement","className","Tip_Jar_WP_Form","id","form_number","editing_mode","show_edit_display_mode","editing_parent_component","all_current_visual_states","payment","frontend_nonces","tip_jar_wp_js_vars","unique_settings","attributes","dynamic_settings","tip_jar_wp_gutenberg_vars","tip_jar_wp_dynamic_settings","__","wp","i18n","registerBlockType","blocks","Icon","editor","RichText","_React$createElement","_defineProperty","version","xmlns","title","icon","category","tip_jar_wp_block_default_json","edit","temp_json","JSON","parse","json","postData","FormData","append","create_form_nonce","fetch","create_form_endpoint","method","credentials","body","response","status","console","log","data","success","form_id","catch","err","tip_form_id","setAttributes","stringify","block_attributes","default_attributes","default","string","input_field_instruction","tip_form","subscribe","this_block","select","getBlock","clientId","save"],"mappings":"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","file":"includes/admin/js/build/gutenberg/blocks/tip-form.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/*\n* Tip Jar WP\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: January 11, 2018\n*/\n\n// This component acts as an in-between, from our actual custom react component(s), to Gutenberg blocks.\n// It recieves a JS object, which it passes to the block's attributes.\n// From there, the attributes are saved to the block.\nclass AttributeReciever extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.keypress_delay = null;\n\t\tthis.onChangeHandler = this.onChangeHandler.bind( this );\n\t}\n\n\tonChangeHandler( new_state, use_typing_delay = false ) {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Temporarily store the value in the state of this component while we wait for the typing to stop.\n\t\t\tthis.setState( new_state, () => {\n\n\t\t\t\tif ( use_typing_delay ) {\n\t\t\t\t\t// Set up a delay which waits to save the tip until .5 seconds after they stop typing.\n\t\t\t\t\tif( this.keypress_delay ) {\n\t\t\t\t\t\t// Clear the keypress delay if the user just typed\n\t\t\t\t\t\tclearTimeout( this.keypress_delay );\n\t\t\t\t\t\tthis.keypress_delay = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// (Re)-Set up the save_note_with_tip to fire in 500ms\n\t\t\t\t\tthis.keypress_delay = setTimeout( () => {\n\t\t\t\t\t\tclearTimeout( this.keypress_delay );\n\n\t\t\t\t\t\t// Update the attributes of the the Gutenberg Block.\n\t\t\t\t\t\tthis.props.changeAttributes( new_state ).then( () => {\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}, 1000);\n\t\t\t\t} else {\n\t\t\t\t\t// Update the attributes of the the Gutenberg Block.\n\t\t\t\t\tthis.props.changeAttributes( new_state ).then( () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t});\n\t\t});\n\n\t};\n\n\trender() {\n\n\t\tvar form_number = 1;\n\n\t\treturn (\n\t\t\t<span className=\"tip-jar-wp-element\">\n\t\t\t\t<Tip_Jar_WP_Form\n\t\t\t\t\tkey={ 'tip_jar_wp_button_element_' + form_number }\n\t\t\t\t\tid={ 'tip_jar_wp_button_element_' + form_number }\n\t\t\t\t\tform_number={ form_number }\n\t\t\t\t\tediting_mode={ true }\n\t\t\t\t\tshow_edit_display_mode={ true }\n\t\t\t\t\tediting_parent_component={ this }\n\t\t\t\t\tall_current_visual_states={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpayment: {}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfrontend_nonces={ tip_jar_wp_js_vars.frontend_nonces }\n\t\t\t\t\tunique_settings={ this.props.attributes }\n\t\t\t\t\tdynamic_settings={ tip_jar_wp_gutenberg_vars.tip_jar_wp_dynamic_settings }\n\t\t\t\t/>\n\t\t\t</span>\n\t\t);\n\n\t};\n}\n\nexport default AttributeReciever;\n","/*\n* Tip Jar WP\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: January 11, 2018\n*/\n\nconst { __ } = wp.i18n;\nconst { registerBlockType } = wp.blocks;\nconst RichText = wp.editor.RichText;\nimport AttributeReciever from './tip-form.js'\n\nclass Icon extends React.Component {\n\n\trender() {\n\t\treturn (\n\t\t\t<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 1000 1000\" enableBackground=\"new 0 0 1000 1000\" fill=\"#f9b429\">\n\t\t\t<path d=\"M797.669,371.752l-19.702-55.833c-1.521-4.297-2.181-8.854-1.938-13.406l0.018-0.334l-0.125-44.222h12.02\n\t\t\tc6.924,0,12.537-5.613,12.537-12.537c0-6.924-5.613-12.538-12.537-12.538h-12.09l-0.086-30.089h12.176\n\t\t\tc6.924,0,12.537-5.613,12.537-12.537s-5.613-12.537-12.537-12.537h-12.245l-0.099-34.784c-0.064-14.734-12.012-26.653-26.746-26.681\n\t\t\tH251.158c-14.733,0.03-26.68,11.948-26.746,26.681l-0.099,34.784h-12.253c-6.924,0-12.538,5.613-12.538,12.537\n\t\t\ts5.613,12.537,12.538,12.537l0,0h12.174l-0.085,30.089h-12.089c-6.924,0-12.538,5.613-12.538,12.538\n\t\t\tc0,6.924,5.613,12.537,12.538,12.537l0,0h12.019l-0.124,44.222l0.017,0.334c0.242,4.553-0.417,9.11-1.939,13.408l-19.702,55.832\n\t\t\tc-23.033,65.168-34.787,133.787-34.756,202.907v171.176c0.085,76.13,61.78,137.825,137.91,137.91h389.031\n\t\t\tc76.13-0.085,137.824-61.78,137.91-137.91V574.659C832.456,505.539,820.702,436.921,797.669,371.752z M249.478,143.005\n\t\t\tc0.007-0.92,0.751-1.665,1.672-1.671h497.692c0.921,0.006,1.666,0.751,1.672,1.671l0.099,34.714H249.379L249.478,143.005z\n\t\t\tM249.311,202.793h501.38l0.085,30.089H249.224L249.311,202.793z M807.351,745.842c-0.069,62.288-50.547,112.766-112.835,112.835\n\t\t\tH305.485c-62.289-0.069-112.766-50.547-112.836-112.835V574.666c-0.029-66.277,11.241-132.073,33.326-194.562l19.702-55.823\n\t\t\tc2.577-7.275,3.716-14.982,3.355-22.693l0.122-43.629h501.692l0.124,43.629c-0.362,7.71,0.776,15.417,3.354,22.693l19.702,55.823\n\t\t\tc22.084,62.489,33.354,128.285,33.325,194.562V745.842z\"/>\n\t\t\t<path d=\"M500,390.853L500,390.853c-79.742-0.001-144.387,64.643-144.388,144.384c0,0.002,0,0.003,0,0.004l0,0\n\t\t\tc0,79.742,64.643,144.387,144.384,144.388c0.002,0,0.003,0,0.004,0l0,0c79.743,0.001,144.388-64.642,144.388-144.385\n\t\t\tc0-0.001,0-0.002,0-0.003l0,0c0.001-79.742-64.642-144.387-144.385-144.388C500.003,390.853,500.001,390.853,500,390.853z\n\t\t\tM518.89,618.042c-5.441,2.061-6.411,4.122-6.37,7.663c0.018,0.275,0.042,0.555,0.071,0.835c0.081,0.744,0.146,1.737,0.168,2.811\n\t\t\tc0.261,4.611-0.229,7.92-1.462,9.724c-3.593,5.267-7.729,6.466-10.568,6.547h-0.194c-4.691,0-10.85-4.636-12.088-9.148\n\t\t\tc-0.59-2.147-1.07-4.024-1.493-5.684c-2.565-10.029-2.718-10.622-13.707-16.676l-0.265-0.167\n\t\t\tc-12.098-8.125-19.371-19.925-21.617-35.071c-0.185-1.218-0.291-2.446-0.319-3.678c-0.722-11.382,6.261-14.181,10.497-14.84\n\t\t\tc11.959-1.823,13.875,9.811,14.516,13.642c2.46,14.76,12.35,22.93,26.451,21.912c12.242-1.132,21.583-11.443,21.501-23.738\n\t\t\tc-0.408-12.92-9.737-21.837-24.349-23.149c-23.975-2.152-41.046-15.179-46.838-35.737c-1.253-4.433-1.898-9.015-1.921-13.622\n\t\t\tc-0.771-20.113,11.306-38.5,30.071-45.782c5.39-2.111,6.353-4.199,6.302-7.784c-0.019-0.276-0.042-0.561-0.071-0.852\n\t\t\tc-0.079-0.76-0.129-1.672-0.154-2.595c-0.08-1.409-0.09-3.297-0.025-4.603c-0.064-3.077,0.818-6.101,2.531-8.659\n\t\t\tc2.297-3.51,7.476-4.513,9.891-4.539c2.807,0.095,5.439,1.381,7.24,3.535c2.578,2.721,4.103,6.271,4.302,10.014\n\t\t\tc0.057,0.507,0.062,1.02,0.017,1.528c-0.092,0.983-0.126,1.972-0.104,2.96c0.426,6.077,3.644,9.545,12.74,13.573\n\t\t\tc13.743,6.083,22.35,18.723,24.894,36.57c0.183,1.247,0.286,2.503,0.312,3.763c0.747,11.339-6.256,14.119-10.496,14.753\n\t\t\tc-11.822,1.759-13.894-9.863-14.568-13.685c-2.435-13.759-10.514-21.541-22.748-21.909c-13.453-0.431-24.263,9.07-25.195,22.046\n\t\t\tc-0.05,0.71-0.055,1.408-0.047,2.104c0.689,11.812,9.842,21.383,21.611,22.601c1.422,0.183,2.854,0.309,4.286,0.438\n\t\t\tc2.701,0.19,5.39,0.541,8.051,1.048c21.062,4.197,36.924,21.644,39.101,43.01c0.134,1.348,0.208,2.725,0.228,4.21\n\t\t\tC550.058,591.817,537.914,610.583,518.89,618.042L518.89,618.042z\"/>\n\t\t\t</svg>\n\t\t);\n\t}\n}\n\nregisterBlockType( 'tipjarwp/tip-form', {\n\ttitle: __( 'Tip Jar WP - Payment Form' ),\n\ticon: <Icon />,\n\tcategory: 'common',\n\n\t// Note that these values are only used when the block is first added. Otherwise, these are ignored and the block pulls from the post_content.\n\tattributes: tip_jar_wp_gutenberg_vars.tip_jar_wp_block_default_json,\n\n\t// This function is passed into the context, which makes it available in all child components.\n\t// This allows any child component to update the \"state\", aka \"attributes\" in Gutenberg. Attributes are saved....where?\n\tedit( props ) {\n\n\t\t// We will store the unique attibutes for this block in a custom table.\n\t\t// So right now, we will simply create a row in the custom table for this block's attributes, and populate it with the attributes when the block is viewed.\n\t\t// That takes place in the server side render function (tip_jar_wp_tip_form_block_server_side_render)\n\t\tvar temp_json = JSON.parse( props.attributes.json );\n\t\tif ( ! temp_json.id ) {\n\n\t\t\ttip_jar_wp_create_and_get_form_id().then( ( tip_form_id ) => {\n\n\t\t\t\ttemp_json.id = tip_form_id;\n\n\t\t\t\tprops.setAttributes( {\n\t\t\t\t\tjson: JSON.stringify( temp_json ),\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\n\t\tconst changeAttributes = (attributes) => {\n\n\t\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t\t// Update the attributes, then resolve the promise\n\t\t\t\tprops.setAttributes( {\n\t\t\t\t\tjson: JSON.stringify( attributes ),\n\t\t\t\t} );\n\n\t\t\t\t// Listen for changes to this block\n\t\t\t\twp.data.subscribe( () => {\n\n\t\t\t\t\t// Get the updated state of this block\n\t\t\t\t\tconst this_block = wp.data.select( 'core/block-editor' ).getBlock( props.clientId );\n\n\t\t\t\t\tif ( this_block && this_block.attributes ) {\n\t\t\t\t\t\t// console.log( 'saving props...' );\n\t\t\t\t\t\t// console.log( JSON.parse( this_block.attributes.json ) );\n\t\t\t\t\t\tresolve( this_block.attributes );\n\t\t\t\t\t} else {\n\t\t\t\t\t\treject();\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t});\n\t\t}\n\n\t\t// Make sure value in the attributes exists in the JSON. This covers situations where new variables might have been added after this block was saved to the post_content.\n\t\tvar block_attributes = JSON.parse( props.attributes.json );\n\t\tvar default_attributes = JSON.parse( tip_jar_wp_gutenberg_vars.tip_jar_wp_block_default_json.json.default );\n\n\t\tfor (var string in default_attributes['strings']) {\n\t\t\tif ( ! block_attributes['strings'][string] ) {\n\t\t\t\tblock_attributes['strings'][string] = default_attributes['strings'][string];\n\t\t\t}\n\t\t}\n\n\t\tfor (var input_field_instruction in default_attributes['strings']['input_field_instructions']) {\n\t\t\tif ( ! block_attributes['strings']['input_field_instructions'][input_field_instruction] ) {\n\t\t\t\tblock_attributes['strings']['input_field_instructions'][input_field_instruction] = default_attributes['strings']['input_field_instructions'][input_field_instruction];\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t\t<AttributeReciever\n\t\t\t\t\tattributes={ block_attributes }\n\t\t\t\t\tchangeAttributes={ changeAttributes }\n\t\t\t\t/>\n\t\t);\n\t},\n\n\tsave( props ) {\n\t\treturn null;\n\t}\n\n} );\n\n// This will send a fetch call to the server to generate a row in the forms table.\nfunction tip_jar_wp_create_and_get_form_id() {\n\n\treturn new Promise( (resolve, reject) => {\n\n\t\tvar postData = new FormData();\n\t\tpostData.append('action', 'tip_jar_wp_create_or_update_form' );\n\t\tpostData.append('form_id', false ); // This is false so that it generates a new form.\n\t\tpostData.append('state', false );\n\t\tpostData.append('tip_jar_wp_create_or_update_form_nonce', tip_jar_wp_gutenberg_vars.create_form_nonce);\n\n\t\tfetch( tip_jar_wp_gutenberg_vars.create_form_endpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' + response.status);\n\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\t\t\t\t\t\t\tresolve( data.form_id );\n\t\t\t\t\t\t\treturn data.form_id;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log('Looks like there was a problem: ' + data);\n\t\t\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treject('unable_to_create_form');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\treject('unable_to_create_form');\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t} );\n\n}\n"],"sourceRoot":""} -
tip-jar-wp/trunk/includes/admin/js/build/mpwpadmin-validation-functions.js.map
r2449460 r2953538 1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:/// /Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/mpwpadmin-validation-functions.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","tip_jar_wp_validate_simple_input","value_to_validate","tip_jar_wp_validate_image_upload","type"],"mappings":"aACA,IAAAA,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,mBC3EAC,OAAOC,iCAAmC,SAA2CC,GAEjF,OAAOA,IAK0B,iBAAtBA,GACsB,iBAAtBA,IAefF,OAAOG,iCAAmC,SAA2CD,GAEjF,OAAOA,IAMH,cAAgBA,EAAkBE,MAClC,aAAeF,EAAkBE","file":"includes/admin/js/build/mpwpadmin-validation-functions.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/**\n * Validate that the value is a simple input\n *\n * @since 1.0.0\n * @param str value_to_validate\n * @return bool\n */\nwindow.tip_jar_wp_validate_simple_input = function tip_jar_wp_validate_simple_input( value_to_validate ) {\n\n if ( ! value_to_validate ) {\n return true;\n }\n\n if (\n typeof value_to_validate === 'string' ||\n typeof value_to_validate === 'number'\n ) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Validate that the value is an image file\n *\n * @since 1.0.0\n * @param str value_to_validate\n * @return bool\n */\nwindow.tip_jar_wp_validate_image_upload = function tip_jar_wp_validate_image_upload( value_to_validate ) {\n\n if ( ! value_to_validate ) {\n return true;\n }\n\n // Validate the type of file\n if (\n 'image/jpeg' == value_to_validate.type ||\n 'image/png' == value_to_validate.type\n ) {\n return true;\n }\n\n return false;\n}\n"],"sourceRoot":""}1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./includes/admin/js/src/mpwpadmin-validation-functions.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","tip_jar_wp_validate_simple_input","value_to_validate","tip_jar_wp_validate_image_upload","type"],"mappings":"aACA,IAAAA,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,mBC3EAC,OAAOC,iCAAmC,SAA2CC,GAEjF,OAAOA,IAK0B,iBAAtBA,GACsB,iBAAtBA,IAefF,OAAOG,iCAAmC,SAA2CD,GAEjF,OAAOA,IAMH,cAAgBA,EAAkBE,MAClC,aAAeF,EAAkBE","file":"includes/admin/js/build/mpwpadmin-validation-functions.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/**\n * Validate that the value is a simple input\n *\n * @since 1.0.0\n * @param str value_to_validate\n * @return bool\n */\nwindow.tip_jar_wp_validate_simple_input = function tip_jar_wp_validate_simple_input( value_to_validate ) {\n\n if ( ! value_to_validate ) {\n return true;\n }\n\n if (\n typeof value_to_validate === 'string' ||\n typeof value_to_validate === 'number'\n ) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Validate that the value is an image file\n *\n * @since 1.0.0\n * @param str value_to_validate\n * @return bool\n */\nwindow.tip_jar_wp_validate_image_upload = function tip_jar_wp_validate_image_upload( value_to_validate ) {\n\n if ( ! value_to_validate ) {\n return true;\n }\n\n // Validate the type of file\n if (\n 'image/jpeg' == value_to_validate.type ||\n 'image/png' == value_to_validate.type\n ) {\n return true;\n }\n\n return false;\n}\n"],"sourceRoot":""} -
tip-jar-wp/trunk/includes/admin/js/build/tip-jar-wp-admin.js.map
r2449460 r2953538 1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:/// /Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/index.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/misc-functions.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/stripe-connect-field.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/transaction.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/arrangement.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/transactions-in-arrangement.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/shortcode-how-to.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-as-help-lightbox.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/ssl.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/stripe-connect.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/stripe-webhook.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/wp-mail.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/simple-text.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/setting.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/do-wizard.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/complete-wizard.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","window","tip_jar_wp_format_date","date_string","date","Date","replace","toLocaleDateString","tip_jar_wp_format_time","toLocaleTimeString","navigator","language","timeZoneName","split","tip_jar_wp_format_date_and_time","toLocaleString","tip_jar_wp_list_view_format_date","data","tip_jar_wp_list_view_format_date_and_time","tip_jar_wp_format_money","cents","currency","is_zero_decimal_currency","string_after","formatted_amount","Number","Intl","NumberFormat","style","format","tip_jar_wp_list_view_format_money","Tip_Jar_WP_Stripe_Connect_Field","_React$Component","props","_this","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","state","props_loaded","saved_status","in_initial_state","lightbox_open","error_code","stripe_is_connected","pending","input_delay","get_input_field_class","_assertThisInitialized","get_input_instruction_class","get_input_instruction_message","set_state","_inherits","_createClass","setState","state_key","state_value","_defineProperty","current_instruction","get_current_instruction_key","instruction_codes","instruction_type","instruction_message","button_strings","connected_text","connect_text","postData","FormData","append","relation_id","id","stripe_disconnect_nonce_id","stripe_disconnect_nonce","this_component","fetch","stripe_disconnect_url","method","credentials","headers","body","then","response","status","json","success","update_context","result","console","log","catch","err","_this2","replace_input_field_with","React","createElement","Fragment","className","href","stripe_connect_url","get_connect_button_text","onClick","disconnect_stripe","disconnect_text","MP_WP_Admin_Spinner","stripe_account_name","stripe_account_label","toggle_help_lightbox","main_component","set_all_current_visual_states","slug","render","help_text","react_component","DynamicReactComponent","eval","dynamic_react_component","component_data","render_field","MP_WP_Admin_Lightbox","title","custom_react_component","Component","Tip_Jar_WP_Admin_Single_Transaction","refunding_status","current_single_item","view_info","nonce_refund_transaction","server_api_endpoint_url_refund_transaction","setTimeout","get_single_item_from_server","raw_value","toLowerCase","type","webhook_notice","refund_string","strings","refund_transaction","refund_transaction_are_you_sure","refund_transaction_refunding","refund_transaction_pending","refund_transaction_failed","refund_transaction_succeeded","new_state","lightbox_state","event","single_item","render_refund_button","mapper","push","visual_state","handle_mpwpadmin_button_click","target","Tip_Jar_WP_Admin_Single_Arrangement","cancellation_status","nonce_cancel_arrangement","server_api_endpoint_url_cancel_arrangement","button_string","cancel_arrangement","cancel_arrangement_are_you_sure","cancel_arrangement_cancelling","cancel_arrangement_pending","cancel_arrangement_failed","cancel_arrangement_succeeded","render_cancel_button","TipJarWPTransactionsInArrangement","view_slug","transactions_in_arrangement","arrangement_id","rows","columns","current_page","total_items","items_per_page","search_term","get_rows_from_server","_this3","nonce","server_api_endpoint_url","item_to_fetch","server_api_endpoint_url_single_item","_this4","single_data_view","list_view","Math","ceil","scope","render_rows","_this5","td_mapper","first","row","handle_single_row_click","uppercase_search","onChange","handle_search_change","uppercase_items","lowercase_per","lowercase_page","min","handle_items_per_page_change","uppercase_page","max","get_total_pages","handle_page_number_change","lowercase_of","render_columns","render_search","render_pagination","render_list_table","render_list_view","Tip_Jar_Shortcode_How_To","form_mode","section_info","default","open_style","link_text","copy_text_field","createRef","ref_to_copy","select","document","execCommand","text_field_data","ref_to_use","copy_text","readOnly","ref","input","get_shortcode_text","button_text","handle_form_mode_change","handle_open_style_change","shortcode_text","default_shortcode_text","radio_buttons","current_value","checked","handle_radio_change","after_output","map","index","render_radio_buttons","radio_options","handle_link_text_change","src","icon","description","render_mode_field","render_open_style_field","render_link_text_setting","render_copy_text_element","copy_shortcode","tip_jar_wp_shortcode_how_to","render_lighbox_content","Tip_Jar_WP_Health_Check_As_Help_Lightbox","is_healthy","unhealthy","health_check_key","slug_suffix","this_lightbox_slug","Tip_Jar_WP_SSL_Health_Check","url_update_status","tip_jar_wp_update_wordpress_url_nonce","server_api_endpoint_update_wordpress_url","location","https_url","required_action_title","required_action_description","update_wordpress_url_to_https","update_failed_title","update_failed_description","render_unhealthy_action","healthy","general_config","doing_wizard","next_lightbox_slug","next_wizard_step_button_text","render_healthy_output","render_unhealthy_output","render_based_on_health","Tip_Jar_WP_Stripe_Connect_Health_Check","handle_open_status_based_on_url","set_stripe_success_redirect_on_server","refresh_mpwpadmin","Promise","resolve","reject","lightbox_visual_state","keys","redirect_to_this_lightbox","tjwp_scsr_mode","tip_jar_wp_set_tjwp_scsr_nonce","server_api_endpoint_set_stripe_connect_success_url","stripe_connect_button_text","_this6","Tip_Jar_WP_Stripe_Webhook_Health_Check","webhook_copied","set_input_field_as_ref","element","render_unhealthy_actions","steps","step1","url_to_copy","click_to_copy_button","step2","line_1","line_2","line_3","line_4","step3","input_field","handle_server_response","Tip_Jar_WP_WP_Mail_Health_Check","email_value","email_send_status","sendgrid_install_status","email_field","fixing_it_again","handle_fixing_it_again","force_to_step","email_address_to_send","refreshing_server","setInterval","clearInterval","email_address","send_test_email_nonce","server_api_endpoint_sent_test_email","wait_for_email_confirmation","attempted_and_failed","install_sendgrid_nonce","server_api_endpoint_install_sendgrid","reset_wp_mail_flag_on_server","test_email_successfuly_sent","reset_wp_mail_health_check_nonce","loading","server_api_endpoint_reset_wp_mail_health_check","send_test_email","unable_to_attempt_email","attempted_but_server_response_incorrect","email_sent","send_email","restart_title","custom_email_plugin_title","handle_email_change","click_to_send_button","install_sendgrid_plugin","install_sendgrid_text","handle_use_my_own_email_plugin","use_my_own","render_enter_sendgrid_api_key","_this7","sendgrid_install_failed","create_sendgrid_account","sendgrid_url","register_with_sendgrid_button_text","already_have_sendgrid_account","grab_api_key_url","grab_your_api_key_button_text","enter_sendgrid_api_key","handle_server_response_from_sendgrid_api_save","handle_did_not_get_email","did_not_get_email_button_text","render_modal_header","render_spinner","render_step_1","render_test_email_successfuly_sent","render_attempted_and_failed","_this8","Tip_Jar_WP_Simple_Text_Health_Check","Tip_Jar_WP_Setting_Wizard","class_name","context_id","Tip_Jar_WP_Do_Wizard_Health_Check","start_wizard","start_wizard_nonce","server_api_endpoint_tip_jar_wp_start_wizard","wizard_later_nonce","server_api_endpoint_tip_jar_wp_wizard_later","set_wizard_to_later","handle_later_click","do_later_button_text","handle_do_wizard_click","Tip_Jar_WP_Complete_Wizard","complete_wizard_nonce","server_api_endpoint_complete_wizard","complete_wizard","complete_wizard_button_text"],"mappings":"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","file":"includes/admin/js/build/tip-jar-wp-admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import \"./misc-functions.js\";\nimport \"./stripe-connect-field.js\";\nimport \"./transaction.js\";\nimport \"./arrangement.js\";\nimport \"./transactions-in-arrangement.js\";\nimport \"./shortcode-how-to.js\";\nimport \"./health-check-as-help-lightbox.js\";\nimport \"./health-check-components/ssl.js\";\nimport \"./health-check-components/stripe-connect.js\";\nimport \"./health-check-components/stripe-webhook.js\";\nimport \"./health-check-components/wp-mail.js\";\nimport \"./health-check-components/simple-text.js\";\nimport \"./health-check-components/setting.js\";\nimport \"./health-check-components/do-wizard.js\";\nimport \"./health-check-components/complete-wizard.js\";\n","/**\n * Format a unix timestamp (UTC) into a date (Jan 1, 1970) in the user's local timezone and locale.\n *\n * @since 1.0.0\n * @param string date_string\n * @return string\n */\nwindow.tip_jar_wp_format_date = function tip_jar_wp_format_date( date_string ) {\n\tvar date = new Date( date_string.replace(/\\s/, 'T') + 'Z' );\n\n\tif ( 'Invalid Date' == date ) {\n\t\treturn date_string;\n\t}\n\n\treturn date.toLocaleDateString();\n}\n\n/**\n * Format a unix timestamp (UTC) into a time (00:00:00) in the user's local timezone and locale.\n *\n * @since 1.0.0\n * @param string date_string\n * @return string\n */\nwindow.tip_jar_wp_format_time = function tip_jar_wp_format_time( date_string ) {\n\tvar date = new Date( date_string.replace(/\\s/, 'T') + 'Z' );\n\n\tif ( 'Invalid Date' == date ) {\n\t\treturn date_string;\n\t}\n\n\treturn date.toLocaleTimeString() + + ' (' + date.toLocaleTimeString( navigator.language,{timeZoneName:'short'}).split(' ')[2] + ')';\n}\n\n/**\n * Format a unix timestamp (UTC) into a date and time (Jan 1, 1970, 00:00:00) in the user's local timezone and locale.\n *\n * @since 1.0.0\n * @param string date_string\n * @return string\n */\nwindow.tip_jar_wp_format_date_and_time = function tip_jar_wp_format_date_and_time( date_string ) {\n\tvar date = new Date( date_string.replace(/\\s/, 'T') + 'Z' );\n\n\tif ( 'Invalid Date' == date ) {\n\t\treturn date_string;\n\t}\n\n\treturn date.toLocaleString() + ' (' + date.toLocaleTimeString( navigator.language,{timeZoneName:'short'}).split(' ')[2] + ')';\n}\n\n/**\n * Takes a date value array from a Tip Jar WP list view component, passes it to tip_jar_wp_format_date, and returns it.\n *\n * @since 1.0.0\n * @param array data\n * @return string\n */\nwindow.tip_jar_wp_list_view_format_date = function tip_jar_wp_list_view_format_date( data ) {\n\treturn tip_jar_wp_format_date( data['value'] );\n}\n\n/**\n * Takes a date value array from a Tip Jar WP list view component, passes it to tip_jar_wp_format_date, and returns it.\n *\n * @since 1.0.0\n * @param array data\n * @return string\n */\nwindow.tip_jar_wp_list_view_format_date_and_time = function tip_jar_wp_list_view_format_date( data ) {\n\treturn tip_jar_wp_format_date_and_time( data['value'] );\n}\n\n/**\n * Format a money amount properly for the user's locale.\n *\n * @since 1.0.0\n * @param int cents\n * @param string currency\n * @param bool is_zero_decimal_currency\n * @param string string_after\n * @return string\n */\nwindow.tip_jar_wp_format_money = function tip_jar_wp_format_money( cents, currency, is_zero_decimal_currency, string_after ) {\n\n\t\tif ( ! currency ) {\n\t\t\tcurrency = 'USD';\n\t\t}\n\n\t\t// If this is a zero-decimal currency\n\t\tif ( is_zero_decimal_currency ) {\n\t\t\tvar formatted_amount = Number( cents );\n\t\t}\n\t\t// If this is not a zero decimal currency\n\t\telse {\n\t\t\tvar formatted_amount = Number( cents ) / 100;\n\t\t}\n\n\t\t// Format the currency based on the user's locale. This allows commas to be used as the decimal seperator, which is technically a translation.\n\t\tformatted_amount = new Intl.NumberFormat(navigator.language, { style: 'currency', currency: currency }).format(formatted_amount);\n\n\t\treturn formatted_amount + string_after;\n}\n\n/**\n * Takes a value array from mpwpadmin's list view component, passes it to tip_jar_wp_format_visual_amount, and returns it.\n *\n * @since 1.0.0\n * @param array data\n * @return string\n */\nwindow.tip_jar_wp_list_view_format_money = function tip_jar_wp_list_view_format_money( data ) {\n\treturn tip_jar_wp_format_money( data['cents'], data['currency'], data['is_zero_decimal_currency'], data['string_after'] );\n}\n","window.Tip_Jar_WP_Stripe_Connect_Field = class Tip_Jar_WP_Stripe_Connect_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tlightbox_open: false,\n\t\t\terror_code: null,\n\t\t\tstripe_is_connected: null,\n\t\t\tpending: false\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\t};\n\n\tcomponentDidMount() {\n\n\t\tthis.setState( {\n\t\t\tprops_loaded: true,\n\t\t\tstripe_is_connected: this.props.props.stripe_is_connected,\n\t\t} );\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tget_current_instruction_key() {\n\n\t\tif ( this.state.stripe_is_connected ) {\n\t\t\treturn 'stripe_connected';\n\t\t}\n\n\t\tif ( ! this.state.stripe_is_connected ) {\n\t\t\treturn 'connect_stripe';\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\tget_connect_button_text() {\n\n\t\tif ( this.state.stripe_is_connected ) {\n\t\t\treturn this.props.props.button_strings.connected_text;\n\t\t}\n\t\tif ( ! this.state.stripe_is_connected ) {\n\t\t\treturn this.props.props.button_strings.connect_text;\n\t\t}\n\n\t}\n\n\tdisconnect_stripe() {\n\n\t\tthis.setState( {\n\t\t\tpending: true,\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_stripe_disconnect', this.props.id);\n\t\tpostData.append('mpwpadmin_stripe_disconnect_mode', this.props.props.mode);\n\t\tpostData.append('mpwpadmin_nonce_id', this.props.props.stripe_disconnect_nonce_id);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.stripe_disconnect_nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.stripe_disconnect_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The user was successfully disconnected from Stripe connect\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tstripe_is_connected: false,\n\t\t\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\t\t} );\n\n\n\t\t\t\t\t\t\t// Pass the response up the chain to the parent component, where it will handle the data as it needs it.\n\t\t\t\t\t\t\tif ( this_component.props.update_context ) {\n\t\t\t\t\t\t\t\tthis_component.props.update_context( data ).then( function( result ) {\n\t\t\t\t\t\t\t\t\tconsole.log( result );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// The user was not successfully disconnected from Stripe connect, but most likely they accidentally disconnected twice somehow. For now we'll assume the disconnection was successful anyway.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tstripe_is_connected: false,\n\t\t\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\trender_field() {\n\n\t\tif ( ! this.state.props_loaded ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\treturn this.props.props.replace_input_field_with;\n\t\t} else {\n\n\t\t\treturn (\n\t\t\t\t<React.Fragment>\n\n\t\t\t\t<div className={ 'mpwpwpadmin-link-container' }>\n\n\t\t\t\t{ (() => {\n\n\t\t\t\t\tif ( ! this.state.pending ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a className='tipjarwp-stripe-connect' href={ this.props.props.stripe_connect_url }>\n\t\t\t\t\t\t\t<span>{ this.get_connect_button_text() }</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t})() }\n\n\t\t\t\t{ (() => {\n\n\t\t\t\t\tif ( this.state.stripe_is_connected && ! this.state.pending ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<button className='tipjarwp-stripe-connect' onClick={ this.disconnect_stripe.bind( this ) }>\n\t\t\t\t\t\t\t<span>{ this.props.props.button_strings.disconnect_text }</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t})() }\n\n\t\t\t\t{ (() => {\n\n\t\t\t\t\tif ( this.state.pending ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MP_WP_Admin_Spinner />\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t})() }\n\n\t\t\t\t{(() => {\n\t\t\t\t\tif ( this.state.stripe_is_connected && ! this.state.pending && this.props.props.stripe_account_name ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-stripe-account-name-container\">\n\t\t\t\t\t\t\t\t\t<span className=\"tip-jar-wp-stripe-account-label\">{ this.props.props.stripe_account_label }</span>\n\t\t\t\t\t\t\t\t\t<span> </span>\n\t\t\t\t\t\t\t\t\t<span className=\"tip-jar-wp-stripe-account-name\">{ this.props.props.stripe_account_name }</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t})()}\n\n\t\t\t\t</div>\n\n\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t</span>\n\t\t\t\t</React.Fragment>\n\t\t\t)\n\t\t}\n\t}\n\n\ttoggle_help_lightbox() {\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t[this.props.slug]: {}\n\t\t} );\n\n\t}\n\n\trender(){\n\n\t\tif ( this.props.props.help_text.react_component ) {\n\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t/>\n\t\t} else {\n\t\t\tvar dynamic_react_component = null;\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-input-component-container' }>\n\t\t\t{ this.render_field() }\n\n\t\t\t<MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ this.props.slug }\n\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\n\t\t\t</div>\n\t\t)\n\t}\n\n};\n","window.Tip_Jar_WP_Admin_Single_Transaction = class Tip_Jar_WP_Admin_Single_Transaction extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\trefunding_status: 'initial',\n\t\t};\n\n\t};\n\n\trefund_transaction() {\n\n\t\t// Do the double check for \"are you sure you want to refund\"\n\t\tif ( 'initial' == this.state.refunding_status ) {\n\n\t\t\tthis.setState( {\n\t\t\t\trefunding_status: 'are_you_sure'\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\trefunding_status: 'refunding'\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_transaction_being_refunded', this.props.current_single_item.id.value);\n\t\tpostData.append('tip_jar_wp_nonce_refund_transaction', this.props.view_info.nonce_refund_transaction);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_refund_transaction, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\trefunding_status: 'failed'\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tif ( data.pending ) {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\trefunding_status: 'pending'\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\trefunding_status: 'refunded_succeeded'\n\t\t\t\t\t\t\t\t}, () => {\n\n\t\t\t\t\t\t\t\t\t// Wait for 1 second while the \"succeess is shown\"\n\t\t\t\t\t\t\t\t\tsetTimeout( () => {\n\n\t\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\t\trefunding_status: 'refunded'\n\t\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\t\t// Get the updated transaction now that it's been refunded (depending on whether Stripe's webhook has arrived yet)\n\t\t\t\t\t\t\t\t\t\tthis_component.props.get_single_item_from_server( this_component.props.current_single_item.id.value );\n\t\t\t\t\t\t\t\t\t}, 1000 );\n\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\trefunding_status: 'failed'\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\trefunding_status: 'failed'\n\t\t\t\t} );\n\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_refund_button() {\n\n\t\t// If this transaction was already refunded, or is a refund transaction itself, don't show a refund button\n\t\tif (\n\t\t\t'refunded' === this.props.current_single_item.status.raw_value.toLowerCase() ||\n\t\t\t'refund' === this.props.current_single_item.type.value.toLowerCase() ||\n\t\t\t// If the webhook failed, we can't refund it anyway, because Stripe never told us the charge ID.\n\t\t\tthis.props.current_single_item.webhook_notice\n\t\t) {\n\t\t\treturn ( '' );\n\t\t}\n\n\t\tvar refund_string = this.props.view_info.strings.refund_transaction;\n\t\tvar on_click = this.refund_transaction.bind( this );\n\n\t\tif ( 'are_you_sure' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_are_you_sure;\n\t\t}\n\n\t\tif ( 'refunding' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_refunding;\n\t\t\ton_click = null;\n\t\t}\n\n\t\tif ( 'pending' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_pending;\n\t\t}\n\n\t\tif ( 'failed' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_failed;\n\t\t}\n\n\t\tif ( 'refunded_succeeded' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_succeeded;\n\t\t\ton_click = null;\n\t\t}\n\n\t\treturn( <button className=\"button\" onClick={ this.refund_transaction.bind( this ) }>{ refund_string }</button> );\n\n\t}\n\n\thandle_mpwpadmin_button_click( new_state, lightbox_state, event ) {\n\t\tthis.props.main_component.set_all_current_visual_states( new_state, lightbox_state );\n\t}\n\n\trender(){\n\n\t\tvar single_item = this.props.current_single_item;\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t<div className={ 'mpwpwadmin-list-view-single-data-item-controls' }>\n\t\t\t{ this.render_refund_button() }\n\t\t\t</div>\n\t\t\t<div className=\"mpwpadmin-single-data\">\n\t\t\t{ (() => {\n\n\t\t\t\tvar mapper = [];\n\t\t\t\tvar value;\n\n\t\t\t\t// Loop through all of the items to show about this item\n\t\t\t\tfor (var key in single_item) {\n\t\t\t\t\tmapper.push( <div className={ 'mpwpadmin-list-view-single-data-item' } key={ key }>{\n\n\t\t\t\t\t\t// Render the output for this data value about the current single item (which was selected from the list)\n\t\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\t\tif ( single_item[key]['show_in_single_data_view'] ) {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-title' }>\n\t\t\t\t\t\t\t\t\t{ single_item[key]['title'] }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-value' }>\n\t\t\t\t\t\t\t\t\t{ ( () => {\n\n\t\t\t\t\t\t\t\t\t\t// Set the visual value\n\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\tvalue = eval( single_item[key]['value_format_function'] )( single_item[key] )\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tvalue = single_item[key]['value']\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// If an mpwpadmin state should be fired when the is clicked\n\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['mpwpadmin_visual_state_onclick'] || single_item[key]['mpwpadmin_lightbox_state_onclick'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar visual_state = single_item[key]['mpwpadmin_visual_state_onclick'] ? single_item[key]['mpwpadmin_visual_state_onclick'] : false;\n\t\t\t\t\t\t\t\t\t\t\tvar lightbox_state = single_item[key]['mpwpadmin_lightbox_state_onclick'] ? single_item[key]['mpwpadmin_lightbox_state_onclick'] : false;\n\n\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<a onClick={ this.handle_mpwpadmin_button_click.bind( this, visual_state, lightbox_state ) }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// If a link should be directed to upon click on this item\n\t\t\t\t\t\t\t\t\t\telse if ( single_item[key]['link_url'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar target = single_item[key]['link_target'] ? single_item[key]['link_url'] : null;\n\n\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<a target={ target } href={ single_item[key]['link_url'] }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t})() }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ( '' );\n\n\t\t\t\t\t\t})()\n\n\t\t\t\t\t}</div> );\n\t\t\t\t}\n\n\t\t\t\treturn mapper;\n\t\t\t})() }\n\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n};\n","window.Tip_Jar_WP_Admin_Single_Arrangement = class Tip_Jar_WP_Admin_Single_Arrangement extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tcancellation_status: 'initial',\n\t\t};\n\n\t};\n\n\tcancel_arrangement() {\n\n\t\t// Do the double check for \"are you sure you want to refund\"\n\t\tif ( 'initial' == this.state.cancellation_status ) {\n\n\t\t\tthis.setState( {\n\t\t\t\tcancellation_status: 'are_you_sure'\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tcancellation_status: 'cancelling'\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_arrangement_being_cancelled', this.props.current_single_item.id.value);\n\t\tpostData.append('tip_jar_wp_nonce_cancel_arrangement', this.props.view_info.nonce_cancel_arrangement);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_cancel_arrangement, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\tcancellation_status: 'failed'\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tif ( data.pending ) {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\tcancellation_status: 'pending'\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\tcancellation_status: 'cancellation_succeeded'\n\t\t\t\t\t\t\t\t}, () => {\n\n\t\t\t\t\t\t\t\t\t// Wait for 1 second while the \"succeess is shown\"\n\t\t\t\t\t\t\t\t\tsetTimeout( () => {\n\n\t\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\t\tcancellation_status: 'cancelled'\n\t\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\t\t// Get the updated arrangement now that it's been cancelled (depending on whether Stripe's webhook has arrived yet)\n\t\t\t\t\t\t\t\t\t\tthis_component.props.get_single_item_from_server( this_component.props.current_single_item.id.value );\n\t\t\t\t\t\t\t\t\t}, 1000 );\n\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcancellation_status: 'failed'\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\tcancellation_status: 'failed'\n\t\t\t\t} );\n\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_cancel_button() {\n\n\t\t// If this arrangement was already cancelled, don't show a refund button\n\t\tif (\n\t\t\t'cancelled' === this.state.cancellation_status ||\n\t\t\t'cancelled' === this.props.current_single_item.status.value.toLowerCase() ||\n\t\t\t// If the webhook failed, we can't cancel it anyway, because Stripe never told us the sub ID.\n\t\t\tthis.props.current_single_item.webhook_notice\n\t\t) {\n\t\t\treturn ( '' );\n\t\t}\n\n\t\tvar button_string = this.props.view_info.strings.cancel_arrangement;\n\t\tvar on_click = this.cancel_arrangement.bind( this );\n\n\t\tif ( 'are_you_sure' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_are_you_sure;\n\t\t}\n\n\t\tif ( 'cancelling' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_cancelling;\n\t\t\ton_click = null;\n\t\t}\n\n\t\tif ( 'pending' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_pending;\n\t\t}\n\n\t\tif ( 'failed' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_failed;\n\t\t}\n\n\t\tif ( 'cancellation_succeeded' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_succeeded;\n\t\t\ton_click = null;\n\t\t}\n\n\t\treturn( <button className=\"button\" onClick={ this.cancel_arrangement.bind( this ) }>{ button_string }</button> );\n\n\t}\n\n\thandle_mpwpadmin_button_click( new_state, lightbox_state, event ) {\n\t\tthis.props.main_component.set_all_current_visual_states( new_state, lightbox_state );\n\t}\n\n\trender(){\n\n\t\tvar single_item = this.props.current_single_item;\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpwadmin-list-view-single-data-item-controls' }>\n\t\t\t\t\t{ this.render_cancel_button() }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mpwpadmin-single-data\">\n\t\t\t\t\t{ (() => {\n\n\t\t\t\t\t\tvar mapper = [];\n\n\t\t\t\t\t\t// Loop through all of the items to show about this item\n\t\t\t\t\t\tfor (var key in single_item) {\n\t\t\t\t\t\t\tmapper.push( <React.Fragment key={ key }>{\n\n\t\t\t\t\t\t\t\t// Render the output for this data value about the current single item (which was selected from the list)\n\t\t\t\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\t\t\t\tif ( single_item[key]['show_in_single_data_view'] ) {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item' }>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-title' }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ single_item[key]['title'] }\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-value' }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ ( () => {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Set the visual value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue = eval( single_item[key]['value_format_function'] )( single_item[key] )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue = single_item[key]['value']\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If an mpwpadmin state should be fired when the is clicked\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['mpwpadmin_visual_state_onclick'] || single_item[key]['mpwpadmin_lightbox_state_onclick'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar visual_state = single_item[key]['mpwpadmin_visual_state_onclick'] ? single_item[key]['mpwpadmin_visual_state_onclick'] : false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar lightbox_state = single_item[key]['mpwpadmin_lightbox_state_onclick'] ? single_item[key]['mpwpadmin_lightbox_state_onclick'] : false;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a onClick={ this.handle_mpwpadmin_button_click.bind( this, visual_state, lightbox_state ) }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If a link should be directed to upon click on this item\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telse if ( single_item[key]['link_url'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar target = single_item[key]['link_target'] ? single_item[key]['link_url'] : null;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a target={ target } href={ single_item[key]['link_url'] }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t})() }\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn ( '' );\n\n\t\t\t\t\t\t\t\t})()\n\n\t\t\t\t\t\t\t}</React.Fragment> );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn mapper;\n\t\t\t\t\t})() }\n\t\t\t\t</div>\n\t\t\t\t<TipJarWPTransactionsInArrangement\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tview_slug={ 'transactions' }\n\t\t\t\t\tview_info={ this.props.view_info.transactions_in_arrangement }\n\t\t\t\t\tarrangement_id={ this.props.current_single_item.id.value }\n\t\t\t\t/>\n\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n};\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\nwindow.TipJarWPTransactionsInArrangement = class TipJarWPTransactionsInArrangement extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t\tcurrent_page: 1,\n\t\t\ttotal_items: 1,\n\t\t\titems_per_page: 1,\n\t\t\tsearch_term: '',\n\t\t\tcurrent_single_item: null,\n\t\t\tarrangement_id: null\n\t\t}\n\n\t\tthis.get_single_item_from_server = this.get_single_item_from_server.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\n\t\tthis.setState( {\n\t\t\tarrangement_id: this.props.arrangement_id,\n\t\t\ttotal_items: this.props.view_info.total_items,\n\t\t\titems_per_page: this.props.view_info.items_per_page,\n\t\t\trows: this.props.view_info.rows,\n\t\t\tcolumns: this.props.view_info.columns,\n\t\t}, () => {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\tcomponentDidUpdate() {\n\t\t// If the arrangement has changed, update the list of transactions to show.\n\t\tif ( this.state.arrangement_id !== this.props.arrangement_id ){\n\t\t\tthis.setState({\n\t\t\t\tarrangement_id: this.props.arrangement_id,\n\t\t\t}, () => {\n\t\t\t\tthis.get_rows_from_server();\n\t\t\t} );\n\t\t}\n\t}\n\n\tget_rows_from_server() {\n\n\t\tif ( ! this.state.items_per_page ) {\n\t\t\tvar items_per_page = 20;\n\t\t} else {\n\t\t\tvar items_per_page = this.state.items_per_page;\n\t\t}\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_list_view_id', this.props.view_slug);\n\t\tpostData.append('mpwpadmin_list_view_search_term', this.state.search_term);\n\t\tpostData.append('mpwpadmin_list_view_page_id', this.state.current_page);\n\t\tpostData.append('mpwpadmin_items_per_page', items_per_page);\n\t\tpostData.append('mpwpadmin_list_view_items_per_page', this.state.items_per_page);\n\t\tpostData.append('tip_jar_wp_arrangement_id', this.state.arrangement_id);\n\t\tpostData.append('mpwpadmin_nonce', this.props.view_info.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcolumns: data.columns,\n\t\t\t\t\t\t\t\trows: data.rows,\n\t\t\t\t\t\t\t\ttotal_items: data.total_items\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\trows: 'Unable to fetch rows...'\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_page_number_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tcurrent_page: event.target.value,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\tget_single_item_from_server( item_to_fetch ) {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_list_view_id', this.props.view_slug);\n\t\tpostData.append('mpwpadmin_list_view_item_id', item_to_fetch);\n\t\tpostData.append('mpwpadmin_nonce', this.props.view_info.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_single_item, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success && data.current_single_item ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcurrent_single_item: data.current_single_item,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcurrent_single_item: 'none_found'\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_items_per_page_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tcurrent_page: 1,\n\t\t\titems_per_page: event.target.value,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\thandle_search_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tsearch_term: event.target.value,\n\t\t\tcurrent_page: 1,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\thandle_single_row_click( single_item, event ) {\n\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {\n\t\t\t\tsingle_data_view: {\n\t\t\t\t\t[single_item['id']['value']]: {} // Use the value in the first column as the URL slug\n\t\t\t\t}\n\t\t\t}\n\t\t} ).then( () => {\n\t\t\tthis.setState( {\n\t\t\t\tcurrent_single_item: single_item\n\t\t\t} );\n\t\t} );\n\n\t}\n\n\thandle_list_view_button_click(){\n\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {\n\t\t\t\tlist_view: {}\n\t\t\t}\n\t\t} );\n\n\t}\n\n\tget_total_pages() {\n\t\treturn Math.ceil( this.state.total_items / this.state.items_per_page );\n\t}\n\n\trender_columns( columns ) {\n\n\t\tif ( ! columns ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar mapper = [];\n\n\t\t// Loop through each column\n\t\tfor (var key in columns) {\n\t\t\tmapper.push(\n\t\t\t\t<div key={ key } scope=\"col\" className=\"mpwpadmin-list-view-column\">\n\t\t\t\t\t<span>{ columns[key] }</span>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn mapper;\n\t}\n\n\trender_rows( rows, columns ) {\n\n\t\tvar mapper = [];\n\t\tvar td_mapper = [];\n\n\t\tif ( ! rows || 0 == this.state.total_items ) {\n\n\t\t\tvar first = true;\n\n\t\t\tfor (var key in columns) {\n\t\t\t\ttd_mapper.push(\n\n\t\t\t\t\t// Render the contents of this table cell\n\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\tif ( first ) {\n\n\t\t\t\t\t\t\tfirst = false;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t{ 'None Found' }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfirst = false;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t{ '' }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})()\n\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add all of that combined data to the main mapper array\n\t\t\tmapper.push(\n\t\t\t\t<div key={ 'none_found' } className=\"mpwpadmin-list-view-row\">\n\t\t\t\t{ td_mapper }\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\treturn mapper;\n\t\t}\n\n\t\t// Loop through each row\n\t\tfor (var row in rows) {\n\n\t\t\t// Combine all of the table data (cells in this row)\n\t\t\tfor (var key in columns) {\n\t\t\t\ttd_mapper.push(\n\n\t\t\t\t\t// Render the contents of this table cell\n\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\tif ( rows[row][key]['show_in_list_view'] ) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t<button onClick={ this.handle_single_row_click.bind( this, rows[row] ) }>\n\t\t\t\t\t\t\t\t\t{(() => {\n\t\t\t\t\t\t\t\t\t\tif ( rows[row][key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\treturn eval( rows[row][key]['value_format_function'] )( rows[row][key] )\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn rows[row][key]['value']\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})()}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})()\n\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add all of that combined data to the main mapper array\n\t\t\tmapper.push(\n\t\t\t\t<div key={ row } className=\"mpwpadmin-list-view-table-row\">\n\t\t\t\t\t{ td_mapper }\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\t// Get the row data array ready for a new row\n\t\t\ttd_mapper = [];\n\t\t}\n\n\t\treturn mapper;\n\n\t}\n\n\trender_search() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpwadmin-list-view-search\">\n\t\t\t<span>{ this.props.view_info.strings.uppercase_search }</span>\n\t\t\t<input type=\"text\" value={ this.state.search_term } onChange={ this.handle_search_change.bind( this ) } />\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_pagination() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpwadmin-list-view-pagination-controls\">\n\t\t\t\t<div className=\"mpwpwadmin-list-view-items-per-page\">\n\t\t\t\t\t<span>{ this.props.view_info.strings.uppercase_items + ' ' + this.props.view_info.strings.lowercase_per + ' ' + this.props.view_info.strings.lowercase_page }</span>\n\t\t\t\t\t<input type=\"number\" min={ 1 } onChange={ this.handle_items_per_page_change.bind( this ) } value={ this.state.items_per_page } />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mpwpwadmin-list-view-pagination\">\n\t\t\t\t\t<span>{ this.props.view_info.strings.uppercase_page }</span>\n\t\t\t\t\t<input type=\"number\" min={ 1 } max={ this.get_total_pages() } onChange={ this.handle_page_number_change.bind( this ) } value={ this.state.current_page } />\n\t\t\t\t\t<span>{ ' ' + this.props.view_info.strings.lowercase_of + ' ' + this.get_total_pages() }</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_list_table() {\n\n\t\tif ( this.state.columns && this.state.rows ) {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-list-view-table' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-header' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-row' }>\n\t\t\t\t\t\t\t{ this.render_columns( this.state.columns ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-body' }>\n\t\t\t\t\t\t{ this.render_rows( this.state.rows, this.state.columns ) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t} else {\n\t\t\treturn <MP_WP_Admin_Spinner />\n\t\t}\n\n\t}\n\n\trender_list_view() {\n\n\t\treturn(\n\t\t\t<div className=\"mpwpadmin-list-view\">\n\t\t\t\t<div className=\"mpwpadmin-list-view-controls\">\n\n\t\t\t\t\t{ this.render_search() }\n\n\t\t\t\t\t{ this.render_pagination() }\n\n\t\t\t\t</div>\n\n\t\t\t\t{ this.render_list_table() }\n\n\t\t\t\t<div className=\"mpwpadmin-list-view-controls\">\n\n\t\t\t\t\t{ this.render_search() }\n\n\t\t\t\t\t{ this.render_pagination() }\n\n\t\t\t\t</div>\n\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-list-view tip-jar-wp-transactions-in-arrangement' }>\n\n\t\t\t<div className=\"mpwpadmin-breadcrumb\">\n\t\t\t<h2>Transactions in this Plan</h2>\n\t\t\t</div>\n\n\t\t\t<div className=\"mpwpadmin-list-view-content-area\">\n\n\t\t\t{ this.render_list_view() }\n\n\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n}\n","window.Tip_Jar_Shortcode_How_To = class Tip_Jar_Shortcode_How_To extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tform_mode: this.props.section_info.component_data.form_mode.default,\n\t\t\topen_style: this.props.section_info.component_data.open_style.default,\n\t\t\tlink_text: this.props.section_info.component_data.link_text.default // \"Leave a tip\"\n\t\t}\n\n\t\tthis.copy_text_field = React.createRef();\n\n\t};\n\n\tcopy_text( ref_to_copy ) {\n\t\tref_to_copy.select();\n\t\tdocument.execCommand('copy');\n\t}\n\n\trender_copy_text_element( text_field_data, ref_to_use ) {\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpadmin-input-component-container' } onClick={ this.copy_text.bind( this, this[ref_to_use] ) }>\n\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ text_field_data.title }</div>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\treadOnly\n\t\t\t\t\t\tref={(input) => this[ref_to_use] = input}\n\t\t\t\t\t\tvalue={ this.get_shortcode_text() }\n\t\t\t\t\t/>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button onClick={ this.copy_text.bind( this, this[ref_to_use] ) } className=\"button\">{ text_field_data.button_text }</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n\thandle_radio_change( name, event ) {\n\n\t\tif ( 'form_mode' == name ) {\n\t\t\tthis.handle_form_mode_change( event );\n\t\t}\n\n\t\tif ( 'open_style' == name ) {\n\t\t\tthis.handle_open_style_change( event );\n\t\t}\n\t}\n\n\thandle_form_mode_change( event ) {\n\t\tthis.setState( {\n\t\t\tform_mode: event.target.value\n\t\t} );\n\t}\n\n\thandle_open_style_change( event ) {\n\t\tthis.setState( {\n\t\t\topen_style: event.target.value\n\t\t} );\n\t}\n\n\thandle_link_text_change( event ) {\n\t\tthis.setState( {\n\t\t\tlink_text: event.target.value\n\t\t} );\n\t}\n\n\tget_shortcode_text() {\n\n\t\tvar shortcode_text = this.props.section_info.component_data.strings.default_shortcode_text;\n\n\t\tif ( 'form' == this.state.form_mode ) {\n\t\t\tshortcode_text = '[tipjarwp]';\n\t\t}\n\n\t\tif ( 'button' == this.state.form_mode ) {\n\t\t\tshortcode_text = '[tipjarwp mode=\"button\" link_text=\"' + this.state.link_text + '\" open_style=\"' + this.state.open_style + '\"]';\n\t\t}\n\n\t\tif ( 'text_link' == this.state.form_mode ) {\n\t\t\tshortcode_text = '[tipjarwp mode=\"text_link\" link_text=\"' + this.state.link_text + '\" open_style=\"' + this.state.open_style + '\"]';\n\t\t}\n\n\t\treturn shortcode_text;\n\t}\n\n\trender_radio_buttons( radio_buttons, name, current_value ) {\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in radio_buttons) {\n\n\t\t\tmapper.push(\n\t\t\t\t<div key={ key } className={ \"tip-jar-wp-radio-button-container\" + ( key == this.state.form_mode ? ' tip-jar-wp-radio-current' : '' ) }>\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<div className=\"tip-jar-wp-radio-button-outer\">\n\t\t\t\t\t\t\t<div className=\"tip-jar-wp-radio-button-inner\">\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype={ 'radio' }\n\t\t\t\t\t\t\t\t\tvalue={ key }\n\t\t\t\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\t\t\t\tchecked={ key == current_value ? true : false }\n\t\t\t\t\t\t\t\t\tonChange={ this.handle_radio_change.bind( this, name ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-radio-button-after\">\n\t\t\t\t\t\t\t\t\t{ radio_buttons[key].after_output }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t)\n\n\t\t}\n\n\t\t// This lets us output the inputs one by one\n\t\treturn (\n\t\t\t<div className=\"tip-jar-wp-radio-buttons-container\">\n\t\t\t{\n\t\t\t\tmapper.map((radio_buttons, index) => {\n\t\t\t\t\treturn radio_buttons;\n\t\t\t\t})\n\t\t\t}\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_mode_field() {\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t<div className=\"mpwpadmin-input-component-container mpwpwadmin-radio-container\">\n\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ this.props.section_info.component_data.form_mode.title }</div>\n\t\t\t\t\t{ this.render_radio_buttons( this.props.section_info.component_data.form_mode.radio_options, 'form_mode', this.state.form_mode ) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_link_text_setting() {\n\n\t\tif (\n\t\t\t'button' == this.state.form_mode ||\n\t\t\t'text_link' == this.state.form_mode\n\t\t) {\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-input-component-container\">\n\t\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ this.props.section_info.component_data.link_text.title }</div>\n\t\t\t\t\t\t<input type=\"text\" value={ this.state.link_text } onChange={ this.handle_link_text_change.bind( this ) } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\trender_open_style_field() {\n\t\tif (\n\t\t\t'button' == this.state.form_mode ||\n\t\t\t'text_link' == this.state.form_mode\n\t\t) {\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-input-component-container mpwpwadmin-radio-container\">\n\t\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ this.props.section_info.component_data.open_style.title }</div>\n\t\t\t\t\t\t{ this.render_radio_buttons( this.props.section_info.component_data.open_style.radio_options, 'open_style', this.state.open_style ) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\trender_lighbox_content() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t<img src={ this.props.section_info.icon } />\n\t\t\t</div>\n\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.section_info.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.section_info.component_data.strings.description }\n\t\t\t\t</div>\n\n\t\t\t\t{ this.render_mode_field() }\n\n\t\t\t\t{ this.render_open_style_field() }\n\n\t\t\t\t{ this.render_link_text_setting() }\n\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ this.render_copy_text_element( this.props.section_info.component_data.copy_shortcode, 'copy_text_field' ) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender(){\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\n\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { tip_jar_wp_shortcode_how_to: {} } ) }>How to show a tip form</button>\n\t\t\t\t<MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ 'tip_jar_wp_shortcode_how_to' }\n\t\t\t\t\tmode={ 'custom_react_component' }\n\t\t\t\t\tcustom_react_component={ this.render_lighbox_content() }\n\t\t\t\t/>\n\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","// This component acts as a wrapper to map data and load a Health Check component as the \"Help\" lightbox for an input field.\nwindow.Tip_Jar_WP_Health_Check_As_Help_Lightbox = class Tip_Jar_WP_Health_Check_As_Help_Lightbox extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n if (!this.props.data) {\n return \"\";\n }\n\n var DynamicReactComponent = eval(this.props.data.react_component);\n var dynamic_react_component = (\n <DynamicReactComponent\n main_component={this.props.main_component}\n data={{\n [this.props.data.key]: {\n is_healthy: false,\n unhealthy: {\n mode: \"live_site\",\n component_data: this.props.data\n }\n }\n }}\n health_check_key={this.props.data.key}\n slug_suffix={\"_help\"}\n this_lightbox_slug={this.props.data.key + \"_help\"}\n />\n );\n\n return dynamic_react_component;\n }\n};\n","window.Tip_Jar_WP_SSL_Health_Check = class Tip_Jar_WP_SSL_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\turl_update_status: false\n\t\t}\n\t};\n\n\tupdate_wordpress_url_to_https() {\n\n\t\tvar this_component = this;\n\n\t\tthis_component.setState( {\n\t\t\turl_update_status: 'attempting_update',\n\t\t});\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_update_wordpress_url_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.tip_jar_wp_update_wordpress_url_nonce );\n\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_update_wordpress_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh this page but over https\n\t\t\t\t\t\t\twindow.location.href = data.https_url;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\n\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t});\n\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_unhealthy_action() {\n\n\t\t// If no certificate exists\n\t\tif ( 'no_certificate_exists' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_description }</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\t// If a certificate does exist, but we just aren't running over https\n\t\tif ( 'certificate_exists' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\n\t\t\tif ( ! this.state.url_update_status ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className=\"button\" onClick={ this.update_wordpress_url_to_https.bind( this ) }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.button_text }</button>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( 'attempting_update' == this.state.url_update_status ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<MP_WP_Admin_Spinner />\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( 'unable_to_update' == this.state.url_update_status ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.update_failed_title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.update_failed_description }</div>\n\t\t\t\t\t\t<button className=\"button\" onClick={ this.update_wordpress_url_to_https.bind( this ) }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.button_text }</button>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t{ this.render_unhealthy_action() }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Stripe_Connect_Health_Check = class Tip_Jar_WP_Stripe_Connect_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tlightbox_open: false\n\t\t}\n\t};\n\n\tcomponentDidMount() {\n\t\tthis.handle_open_status_based_on_url().then( () => {\n\t\t\t// If lightbox containing this component is open in the lightbox views, set the redirect URL on the server so it opens this lightbox\n\t\t\tthis.set_stripe_success_redirect_on_server( this.state.lightbox_open );\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\tthis.handle_open_status_based_on_url().then( () => {\n\n\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\n\t\t\t// If lightbox containing this component is open in the lightbox views, set the redirect URL on the server so it opens this lightbox\n\t\t\tthis.set_stripe_success_redirect_on_server( this.state.lightbox_open );\n\t\t} );\n\n\t}\n\n\thandle_open_status_based_on_url() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// If a lightbox is open based on the setting in the main component\n\t\t\tif ( this.props.main_component && this.props.main_component.state.lightbox_visual_state ) {\n\t\t\t\t// Check if that lightbox is us!\n\t\t\t\tif ( this.props.this_lightbox_slug == Object.keys(this.props.main_component.state.lightbox_visual_state)[0] ) {\n\n\t\t\t\t\t// The lightbox holding this component is showing. Therefore, set that status in this component as well.\n\t\t\t\t\tif ( ! this.state.lightbox_open ) {\n\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\tlightbox_open: true\n\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\tresolve( this.state );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If the current lightbox in the URL is not us, close this one.\n\t\t\t\telse {\n\t\t\t\t\tif ( this.state.lightbox_open ) {\n\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\tlightbox_open: false\n\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\tresolve( this.state );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tset_stripe_success_redirect_on_server( redirect_to_this_lightbox ) {\n\n\t\tif ( ! redirect_to_this_lightbox ) {\n\t\t\tvar tjwp_scsr_mode = '';\n\t\t} else {\n\t\t\tvar tjwp_scsr_mode = this.props.health_check_key;\n\t\t}\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_set_tjwp_scsr', tjwp_scsr_mode);\n\t\tpostData.append('tip_jar_wp_lightbox_suffix', this.props.slug_suffix);\n\t\tpostData.append('tip_jar_wp_set_tjwp_scsr_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.tip_jar_wp_set_tjwp_scsr_nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_set_stripe_connect_success_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} );\n\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t{ ( () => {\n\t\t\t\t\tif ( this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text ) {\n\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t\t<a className='tipjarwp-stripe-connect' href={ this.props.data[this.props.health_check_key].unhealthy.component_data.stripe_connect_url }>\n\t\t\t\t\t\t\t\t\t<span>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text }</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} ) () }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Stripe_Webhook_Health_Check = class Tip_Jar_WP_Stripe_Webhook_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\twebhook_copied: false\n\t\t}\n\n\t\tthis.copy_text_field = React.createRef();\n\t\tthis.set_input_field_as_ref = this.set_input_field_as_ref.bind( this );\n\t};\n\n\tget_connect_button_text() {\n\t\treturn this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text;\n\t}\n\n\tcopy_text( ref_to_copy ) {\n\t\tif ( ! ref_to_copy ) {\n\t\t\treturn;\n\t\t}\n\t\tref_to_copy.select();\n document.execCommand('copy');\n this.setState({ webhook_copied: true });\n\t}\n\n\tset_input_field_as_ref( element ) {\n\t\tthis.copy_text_field = element;\n\t}\n\n\tclick_to_copy_button() {\n\n\t\tif ( this.state.webhook_copied ) {\n\t\t\treturn( <button onClick={ this.copy_text.bind( this, this.copy_text_field ) } className=\"button\">{ 'Copied!' }</button> );\n\t\t} else {\n\t\t\treturn( <button onClick={ this.copy_text.bind( this, this.copy_text_field ) } className=\"button\">{ 'Click to copy' }</button> );\n\t\t}\n\n\t}\n\n\thandle_server_response( data ) {\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Wait for 1 second then refresh\n\t\t\tsetTimeout( () => {\n\t\t\t\tif ( data.success ) {\n\t\t\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}, 300 );\n\n\t\t} )\n\t}\n\n\trender_unhealthy_actions() {\n\n\t\tif ( 'localhost' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tif ( 'live_site' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-steps' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.description }</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-copy-text-container' }>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t\t\tref={ this.set_input_field_as_ref }\n\t\t\t\t\t\t\t\t\tvalue={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.url_to_copy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ this.click_to_copy_button() }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_1 }</li>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_2 }</li>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_3 }</li>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_4 }</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t<a className='tipjarwp-stripe-connect' target=\"_blank\" href={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.stripe_connect_url }>\n\t\t\t\t\t\t\t\t<span>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.stripe_connect_button_text }</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.description }</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\t\t\t\tvar DynamicReactComponent = eval( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field.react_component );\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\t\t\t\t\tid={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field.id }\n\t\t\t\t\t\t\t\t\t\t\tslug={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field.id }\n\t\t\t\t\t\t\t\t\t\t\tprops={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field }\n\t\t\t\t\t\t\t\t\t\t\tupdate_context={ this.handle_server_response.bind( this ) }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} )()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t{ this.render_unhealthy_actions() }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_WP_Mail_Health_Check = class Tip_Jar_WP_WP_Mail_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\temail_value: '',\n\t\t\temail_send_status: false,\n\t\t\tsendgrid_install_status: false\n\t\t}\n\n\t\tthis.email_field = React.createRef();\n\n\t};\n\n\tcomponentDidMount() {\n\n\t\t// If this component was told we are fixing_it_again, reset the variables on the server just in case we are re-testing the email, and it was previously successful.\n\t\tif( this.props.fixing_it_again ) {\n\t\t\tthis.handle_fixing_it_again();\n\t\t}\n\n\t\tvar force_to_step = this.props.data[this.props.health_check_key].unhealthy.component_data.force_to_step;\n\n\t\t// If we should force to a step\n\t\tif ( force_to_step ) {\n\t\t\tif ( 'test_email_successfuly_sent' == force_to_step ) {\n\t\t\t\tthis.setState( {\n\t\t\t\t\temail_send_status: 'sent'\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tthis.setState( {\n\t\t\temail_value: this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.email_address_to_send\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\t// If this component was told we are fixing_it_again, reset the variables on the server just in case we are re-testing the email, and it was previously successful.\n\t\tif( this.props.fixing_it_again ) {\n\t\t\tthis.handle_fixing_it_again();\n\t\t}\n\n\t}\n\n\twait_for_email_confirmation() {\n\n\t\t// Check the server every 3 seconds to see if they confirmed on a phone, or different device.\n\t\tvar refreshing_server = setInterval( () => {\n\t\t\tif ( 'sent' == this.state.email_send_status ) {\n\n\t\t\t\t// If we are still waiting (still unhealthy)\n\t\t\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\t\t\t// Check the server again\n\t\t\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\t\t\t\t}\n\t\t\t\t// If the wp_mail check is suddenly healthy, stop checking for updates\n\t\t\t\telse {\n\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\temail_send_status: 'succeeded'\n\t\t\t\t\t} );\n\n\t\t\t\t\tclearInterval( refreshing_server );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the status of the test email is no longer \"sent\", stop checking the server for updates.\n\t\t\telse {\n\t\t\t\tclearInterval( refreshing_server );\n\t\t\t}\n\t\t}, 4000 );\n\n\t\t// Only do this waiting/refreshing for 2 minutes. This results in a maximum of 30 checks over 2 minutes.\n\t\tsetTimeout( () => {\n\t\t\tclearInterval( refreshing_server );\n\t\t}, 120000 );\n\n\t}\n\n\tget_connect_button_text() {\n\t\treturn this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text;\n\t}\n\n\tsend_email( email_address ) {\n\n\t\tthis.setState( {\n\t\t\temail_send_status: 'sending'\n\t\t});\n\n\t\tvar this_component = this;\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_email', email_address );\n\t\tpostData.append('tip_jar_wp_lightbox_suffix', this.props.slug_suffix );\n\t\tpostData.append('tip_jar_wp_send_test_email_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.send_test_email_nonce );\n\n\t\t// Send a test email\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.server_api_endpoint_sent_test_email, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\temail_send_status: 'unable_to_attempt_send',\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\temail_send_status: 'sent',\n\t\t\t\t\t\t\t}, () => {\n\n\t\t\t\t\t\t\t\tthis_component.wait_for_email_confirmation();\n\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\temail_send_status: 'attempted_and_failed',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\n\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\temail_send_status: 'attempted_but_server_response_incorrect',\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\temail_send_status: 'unable_to_attempt',\n\t\t\t\t});\n\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tinstall_sendgrid_plugin() {\n\n\t\tthis.setState( {\n\t\t\tsendgrid_install_status: 'installing'\n\t\t});\n\n\t\tvar this_component = this;\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_install_sendgrid_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.install_sendgrid_nonce );\n\n\t\t// Send a test email\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.server_api_endpoint_install_sendgrid, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\tsendgrid_install_status: 'failed',\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\temail_send_status: 'done',\n\t\t\t\t\t\t\t\tsendgrid_install_status: 'succeeded',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsendgrid_install_status: 'attempted_and_failed',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\n\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\tsendgrid_install_status: 'attempted_but_server_response_incorrect',\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\tsendgrid_install_status: 'unable_to_attempt',\n\t\t\t\t});\n\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\thandle_fixing_it_again() {\n\n\t\tconsole.log( 'sdgsgsgsdg' );\n\n\t\tthis.reset_wp_mail_flag_on_server().then( () => {\n\n\t\t\t// Reset all of the local state variables to their beginning statuses\n\t\t\tthis.setState( {\n\t\t\t\temail_value: this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.email_address_to_send,\n\t\t\t\temail_send_status: false,\n\t\t\t\tsendgrid_install_status: false\n\t\t\t} );\n\n\t\t} );\n\t}\n\n\thandle_did_not_get_email() {\n\n\t\tthis.setState( {\n\t\t\temail_send_status: 'attempted_and_failed'\n\t\t});\n\n\t\tthis.reset_wp_mail_flag_on_server();\n\t}\n\n\treset_wp_mail_flag_on_server() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Format the data that we'll send to the server\n\t\t\tvar postData = new FormData();\n\t\t\tpostData.append('tip_jar_wp_reset_wp_mail_health_check_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.reset_wp_mail_health_check_nonce );\n\n\t\t\tthis.setState( {\n\t\t\t\tloading: true\n\t\t\t} );\n\n\t\t\t// Set the test email as being not received\n\t\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.server_api_endpoint_reset_wp_mail_health_check, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tmode: \"same-origin\",\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t\theaders: {},\n\t\t\t\tbody: postData\n\t\t\t} ).then( () => {\n\t\t\t\tthis.props.main_component.refresh_mpwpadmin().then( () => {\n\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\tloading: false\n\t\t\t\t\t} );\n\n\t\t\t\t\tresolve();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t} );\n\t}\n\n\thandle_email_change( event ) {\n\t\tthis.setState( {\n\t\t\temail_value: event.target.value\n\t\t} );\n\t}\n\n\tclick_to_send_button( email_address ) {\n\n\t\tvar button_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.send_test_email;\n\n\t\t// If we were unable to attempt a send (possibly no internet connection)\n\t\tif ( 'unable_to_attempt' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.unable_to_attempt_email;\n\t\t}\n\n\t\t// There's an error happening on the server\n\t\tif ( 'attempted_but_server_response_incorrect' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.attempted_but_server_response_incorrect;\n\t\t}\n\n\t\t// If wp_mail failed\n\t\tif ( 'attempted_and_failed' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.attempted_and_failed;\n\t\t}\n\n\t\t// If wp_mail sent the email\n\t\tif ( 'sent' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.email_sent;\n\t\t}\n\n\t\treturn( <button onClick={ this.send_email.bind( this, this.state.email_value ) } className=\"button\">{ button_text }</button> );\n\n\t}\n\n\thandle_server_response_from_sendgrid_api_save( data ) {\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Wait for 1 second then refresh\n\t\t\tsetTimeout( () => {\n\t\t\t\tif ( data.success ) {\n\t\t\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\n\t\t\t\t\t// Restart the email checking process\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\temail_send_status: 'restart',\n\t\t\t\t\t\tsendgrid_install_status: false\n\t\t\t\t\t} );\n\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}, 300 );\n\n\t\t} )\n\t}\n\n\thandle_use_my_own_email_plugin() {\n\n\t\t// Restart the email checking process\n\t\tthis.setState( {\n\t\t\temail_send_status: 'custom_email_plugin',\n\t\t\tsendgrid_install_status: false\n\t\t} );\n\n\t}\n\n\trender_modal_header() {\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t);\n\t}\n\n\trender_spinner() {\n\t\tif ( 'sending' == this.state.email_send_status || 'installing' == this.state.sendgrid_install_status ) {\n\t\t\treturn ( <MP_WP_Admin_Spinner /> );\n\t\t}\n\t}\n\n\trender_step_1() {\n\t\t// If we should show step 1\n\t\tif (\n\t\t\t! this.state.email_send_status ||\n\t\t\t'restart' == this.state.email_send_status ||\n\t\t\t'custom_email_plugin' == this.state.email_send_status ||\n\t\t\t'unable_to_attempt' == this.state.email_send_status ||\n\t\t\t'attempted_but_server_response_incorrect' == this.state.email_send_status\n\t\t) {\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ ( () => {\n\t\t\t\t\t\tif ( 'restart' == this.state.email_send_status ) {\n\t\t\t\t\t\t\treturn( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.restart_title );\n\t\t\t\t\t\t} else if( 'custom_email_plugin' == this.state.email_send_status ) {\n\t\t\t\t\t\t\treturn( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.custom_email_plugin_title );\n\t\t\t\t\t\t}else {\n\t\t\t\t\t\t\treturn( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.title );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) () }\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-copy-text-container' }>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tref={(input) => this.email_field = input}\n\t\t\t\t\t\t\tvalue={ this.state.email_value }\n\t\t\t\t\t\t\tonChange={ this.handle_email_change.bind( this ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ this.click_to_send_button( this.email_field ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_attempted_and_failed() {\n\t\t// If we should show step 2\n\t\tif ( 'attempted_and_failed' == this.state.email_send_status && 'installing' !== this.state.sendgrid_install_status ) {\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className='button' onClick={ this.install_sendgrid_plugin.bind( this ) }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.install_sendgrid_text }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className='button' onClick={ this.handle_use_my_own_email_plugin.bind( this ) }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.use_my_own }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_enter_sendgrid_api_key() {\n\n\t\t// Only show this section if we are done trying to test the email\n\t\tif ( 'done' !== this.state.email_send_status ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( 'succeeded' !== this.state.sendgrid_install_status ) {\n\t\t\t<div>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.sendgrid_install_failed }</div>\n\t\t}\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<a className={ 'button' } target=\"_blank\" href={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.sendgrid_url }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.register_with_sendgrid_button_text }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<a className={ 'button' } target=\"_blank\" href={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.grab_api_key_url }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.grab_your_api_key_button_text }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\t\tvar DynamicReactComponent = eval( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field.react_component );\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\t\t\tid={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field.id }\n\t\t\t\t\t\t\t\t\tslug={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field.id }\n\t\t\t\t\t\t\t\t\tprops={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field }\n\t\t\t\t\t\t\t\t\tupdate_context={ this.handle_server_response_from_sendgrid_api_save.bind( this ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} )()\n\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t)\n\n\t}\n\n\trender_test_email_successfuly_sent() {\n\t\t// If we should show step 2\n\t\tif ( 'sent' == this.state.email_send_status ) {\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className='button' onClick={ this.handle_did_not_get_email.bind( this ) }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.did_not_get_email_button_text }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t{ this.render_modal_header() }\n\t\t\t<div className={ 'mpwpadmin-lightbox-input-steps' }>\n\t\t\t\t{ this.render_spinner() }\n\t\t\t\t{ this.render_step_1() }\n\t\t\t\t{ this.render_test_email_successfuly_sent() }\n\t\t\t\t{ this.render_attempted_and_failed() }\n\t\t\t\t{ this.render_enter_sendgrid_api_key() }\n\t\t\t</div>\n\t\t\t</div>\n\t\t)\n}\n\nrender_healthy_output() {\n\treturn(\n\t\t<div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon' }>\n\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t</div>\n\t\t\t</div>\n\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t</div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t{ ( () => {\n\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} )() }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nrender_based_on_health() {\n\n\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\treturn( this.render_unhealthy_output() );\n\t}\n\n\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\treturn( this.render_healthy_output() );\n\t}\n\n}\n\nrender(){\n\n\tif ( this.state.loading ) {\n\t\treturn( <MP_WP_Admin_Spinner /> );\n\t}\n\n\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\treturn( '' );\n\t}\n\n\treturn (\n\t\t<React.Fragment>\n\t\t{ this.render_based_on_health() }\n\t\t</React.Fragment>\n\t);\n\n}\n\n};\n","window.Tip_Jar_WP_Simple_Text_Health_Check = class Tip_Jar_WP_Simple_Text_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_description }</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Setting_Wizard = class Tip_Jar_WP_Setting_Wizard extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\trender_unhealthy_output() {\n\n\t\tvar DynamicReactComponent = eval( this.props.data[this.props.health_check_key].unhealthy.component_data.input_field.react_component );\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-setting-container ' + 'mpwpadmin-setting-' + this.props.health_check_key + '-container' }>\n\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\tid={ this.props.health_check_key }\n\t\t\t\t\t\t\tslug={ this.props.health_check_key }\n\t\t\t\t\t\t\tprops={ this.props.data[this.props.health_check_key].unhealthy.component_data.input_field }\n\t\t\t\t\t\t\tclass_name={ 'mpwpadmin-setting mpwpadmin-setting-' + this.props.health_check_key }\n\t\t\t\t\t\t\tcontext_id={ null }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Do_Wizard_Health_Check = class Tip_Jar_WP_Do_Wizard_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\tcomponentDidUpdate() {\n\t\t// If this component was told we are fixing_it_again, reset the variable on the server which controls the onboarding wizard's status.\n\t\tif( this.props.fixing_it_again ) {\n\t\t\tthis.start_wizard();\n\t\t}\n\t}\n\n\tstart_wizard() {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append( 'tip_jar_wp_start_wizard_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.start_wizard_nonce );\n\n\t\tvar this_component = this;\n\n\t\t// Set the onboard wizard to be in progress\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_tip_jar_wp_start_wizard, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log( data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh mpwpadmin\n\t\t\t\t\t\t\tthis_component.props.main_component.refresh_mpwpadmin();\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t}\n\n\tset_wizard_to_later() {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append( 'tip_jar_wp_start_wizard_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.wizard_later_nonce );\n\n\t\tvar this_component = this;\n\n\t\t// Set the onboard wizard to be in progress\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_tip_jar_wp_wizard_later, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log( data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh mpwpadmin\n\t\t\t\t\t\t\tthis_component.props.main_component.refresh_mpwpadmin();\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_do_wizard_click() {\n\n\t\tthis.start_wizard();\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, { [this.props.next_lightbox_slug]: {} } );\n\n\t}\n\n\thandle_later_click() {\n\n\t\t// Set the status of the wizard to \"later\" on the server.\n\t\tthis.set_wizard_to_later();\n\n\t\t// Close the lightbox\n\t\tthis.props.main_component.set_all_current_visual_states( false, {} );\n\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<button className=\"button\" onClick={ this.handle_later_click.bind( this ) }>\n\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.do_later_button_text }\n\t\t\t\t\t</button>\n\t\t\t\t\t<button className=\"button\" onClick={ this.handle_do_wizard_click.bind( this ) }>\n\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\t// The healthy and unhealthy output are exactly the same for the Do Wizard health check.\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Complete_Wizard = class Tip_Jar_WP_Complete_Wizard extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\tcomplete_wizard() {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append( 'tip_jar_wp_complete_wizard_nonce', this.props.data[this.props.health_check_key].healthy.component_data.complete_wizard_nonce );\n\n\t\tvar this_component = this;\n\n\t\t// Set the onboard wizard to be complete\n\t\tfetch( this.props.data[this.props.health_check_key].healthy.component_data.server_api_endpoint_complete_wizard, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log( data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh mpwpadmin\n\t\t\t\t\t\t\tthis_component.props.main_component.refresh_mpwpadmin().then( () => {\n\t\t\t\t\t\t\t\t// Close the lightbox\n\t\t\t\t\t\t\t\tthis_component.props.main_component.set_all_current_visual_states( false, {} );\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_healthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<button className=\"button\" onClick={ this.complete_wizard.bind( this ) }>\n\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.complete_wizard_button_text }\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\t// The healthy and unhealthy output are exactly the same for the Complete Wizard health check.\n\t\treturn( this.render_healthy_output() );\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n"],"sourceRoot":""}1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./includes/admin/js/src/index.js","webpack:///./includes/admin/js/src/misc-functions.js","webpack:///./includes/admin/js/src/stripe-connect-field.js","webpack:///./includes/admin/js/src/transaction.js","webpack:///./includes/admin/js/src/arrangement.js","webpack:///./includes/admin/js/src/transactions-in-arrangement.js","webpack:///./includes/admin/js/src/shortcode-how-to.js","webpack:///./includes/admin/js/src/health-check-as-help-lightbox.js","webpack:///./includes/admin/js/src/health-check-components/ssl.js","webpack:///./includes/admin/js/src/health-check-components/stripe-connect.js","webpack:///./includes/admin/js/src/health-check-components/stripe-webhook.js","webpack:///./includes/admin/js/src/health-check-components/wp-mail.js","webpack:///./includes/admin/js/src/health-check-components/simple-text.js","webpack:///./includes/admin/js/src/health-check-components/setting.js","webpack:///./includes/admin/js/src/health-check-components/do-wizard.js","webpack:///./includes/admin/js/src/health-check-components/complete-wizard.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","window","tip_jar_wp_format_date","date_string","date","Date","replace","toLocaleDateString","tip_jar_wp_format_time","toLocaleTimeString","navigator","language","timeZoneName","split","tip_jar_wp_format_date_and_time","toLocaleString","tip_jar_wp_list_view_format_date","data","tip_jar_wp_list_view_format_date_and_time","tip_jar_wp_format_money","cents","currency","is_zero_decimal_currency","string_after","formatted_amount","Number","Intl","NumberFormat","style","format","tip_jar_wp_list_view_format_money","Tip_Jar_WP_Stripe_Connect_Field","_React$Component","props","_this","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","state","props_loaded","saved_status","in_initial_state","lightbox_open","error_code","stripe_is_connected","pending","input_delay","get_input_field_class","_assertThisInitialized","get_input_instruction_class","get_input_instruction_message","set_state","_inherits","_createClass","setState","state_key","state_value","_defineProperty","current_instruction","get_current_instruction_key","instruction_codes","instruction_type","instruction_message","button_strings","connected_text","connect_text","postData","FormData","append","relation_id","id","stripe_disconnect_nonce_id","stripe_disconnect_nonce","this_component","fetch","stripe_disconnect_url","method","credentials","headers","body","then","response","status","json","success","update_context","result","console","log","catch","err","_this2","replace_input_field_with","React","createElement","Fragment","className","href","stripe_connect_url","get_connect_button_text","onClick","disconnect_stripe","disconnect_text","MP_WP_Admin_Spinner","stripe_account_name","stripe_account_label","toggle_help_lightbox","main_component","set_all_current_visual_states","slug","render","help_text","react_component","DynamicReactComponent","eval","dynamic_react_component","component_data","render_field","MP_WP_Admin_Lightbox","title","custom_react_component","Component","Tip_Jar_WP_Admin_Single_Transaction","refunding_status","current_single_item","view_info","nonce_refund_transaction","server_api_endpoint_url_refund_transaction","setTimeout","get_single_item_from_server","raw_value","toLowerCase","type","webhook_notice","refund_string","strings","refund_transaction","refund_transaction_are_you_sure","refund_transaction_refunding","refund_transaction_pending","refund_transaction_failed","refund_transaction_succeeded","new_state","lightbox_state","event","single_item","render_refund_button","mapper","push","visual_state","handle_mpwpadmin_button_click","target","Tip_Jar_WP_Admin_Single_Arrangement","cancellation_status","nonce_cancel_arrangement","server_api_endpoint_url_cancel_arrangement","button_string","cancel_arrangement","cancel_arrangement_are_you_sure","cancel_arrangement_cancelling","cancel_arrangement_pending","cancel_arrangement_failed","cancel_arrangement_succeeded","render_cancel_button","TipJarWPTransactionsInArrangement","view_slug","transactions_in_arrangement","arrangement_id","rows","columns","current_page","total_items","items_per_page","search_term","get_rows_from_server","_this3","nonce","server_api_endpoint_url","item_to_fetch","server_api_endpoint_url_single_item","_this4","single_data_view","list_view","Math","ceil","scope","render_rows","_this5","td_mapper","first","row","handle_single_row_click","uppercase_search","onChange","handle_search_change","uppercase_items","lowercase_per","lowercase_page","min","handle_items_per_page_change","uppercase_page","max","get_total_pages","handle_page_number_change","lowercase_of","render_columns","render_search","render_pagination","render_list_table","render_list_view","Tip_Jar_Shortcode_How_To","form_mode","section_info","default","open_style","link_text","copy_text_field","createRef","ref_to_copy","select","document","execCommand","text_field_data","ref_to_use","copy_text","readOnly","ref","input","get_shortcode_text","button_text","handle_form_mode_change","handle_open_style_change","shortcode_text","default_shortcode_text","radio_buttons","current_value","checked","handle_radio_change","after_output","map","index","render_radio_buttons","radio_options","handle_link_text_change","src","icon","description","render_mode_field","render_open_style_field","render_link_text_setting","render_copy_text_element","copy_shortcode","tip_jar_wp_shortcode_how_to","render_lighbox_content","Tip_Jar_WP_Health_Check_As_Help_Lightbox","is_healthy","unhealthy","health_check_key","slug_suffix","this_lightbox_slug","Tip_Jar_WP_SSL_Health_Check","url_update_status","tip_jar_wp_update_wordpress_url_nonce","server_api_endpoint_update_wordpress_url","location","https_url","required_action_title","required_action_description","update_wordpress_url_to_https","update_failed_title","update_failed_description","render_unhealthy_action","healthy","general_config","doing_wizard","next_lightbox_slug","next_wizard_step_button_text","render_healthy_output","render_unhealthy_output","render_based_on_health","Tip_Jar_WP_Stripe_Connect_Health_Check","handle_open_status_based_on_url","set_stripe_success_redirect_on_server","refresh_mpwpadmin","Promise","resolve","reject","lightbox_visual_state","keys","redirect_to_this_lightbox","tjwp_scsr_mode","tip_jar_wp_set_tjwp_scsr_nonce","server_api_endpoint_set_stripe_connect_success_url","stripe_connect_button_text","_this6","Tip_Jar_WP_Stripe_Webhook_Health_Check","webhook_copied","set_input_field_as_ref","element","render_unhealthy_actions","steps","step1","url_to_copy","click_to_copy_button","step2","line_1","line_2","line_3","line_4","step3","input_field","handle_server_response","Tip_Jar_WP_WP_Mail_Health_Check","email_value","email_send_status","sendgrid_install_status","email_field","fixing_it_again","handle_fixing_it_again","force_to_step","email_address_to_send","refreshing_server","setInterval","clearInterval","email_address","send_test_email_nonce","server_api_endpoint_sent_test_email","wait_for_email_confirmation","attempted_and_failed","install_sendgrid_nonce","server_api_endpoint_install_sendgrid","reset_wp_mail_flag_on_server","test_email_successfuly_sent","reset_wp_mail_health_check_nonce","loading","server_api_endpoint_reset_wp_mail_health_check","send_test_email","unable_to_attempt_email","attempted_but_server_response_incorrect","email_sent","send_email","restart_title","custom_email_plugin_title","handle_email_change","click_to_send_button","install_sendgrid_plugin","install_sendgrid_text","handle_use_my_own_email_plugin","use_my_own","render_enter_sendgrid_api_key","_this7","sendgrid_install_failed","create_sendgrid_account","sendgrid_url","register_with_sendgrid_button_text","already_have_sendgrid_account","grab_api_key_url","grab_your_api_key_button_text","enter_sendgrid_api_key","handle_server_response_from_sendgrid_api_save","handle_did_not_get_email","did_not_get_email_button_text","render_modal_header","render_spinner","render_step_1","render_test_email_successfuly_sent","render_attempted_and_failed","_this8","Tip_Jar_WP_Simple_Text_Health_Check","Tip_Jar_WP_Setting_Wizard","class_name","context_id","Tip_Jar_WP_Do_Wizard_Health_Check","start_wizard","start_wizard_nonce","server_api_endpoint_tip_jar_wp_start_wizard","wizard_later_nonce","server_api_endpoint_tip_jar_wp_wizard_later","set_wizard_to_later","handle_later_click","do_later_button_text","handle_do_wizard_click","Tip_Jar_WP_Complete_Wizard","complete_wizard_nonce","server_api_endpoint_complete_wizard","complete_wizard","complete_wizard_button_text"],"mappings":"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","file":"includes/admin/js/build/tip-jar-wp-admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import \"./misc-functions.js\";\nimport \"./stripe-connect-field.js\";\nimport \"./transaction.js\";\nimport \"./arrangement.js\";\nimport \"./transactions-in-arrangement.js\";\nimport \"./shortcode-how-to.js\";\nimport \"./health-check-as-help-lightbox.js\";\nimport \"./health-check-components/ssl.js\";\nimport \"./health-check-components/stripe-connect.js\";\nimport \"./health-check-components/stripe-webhook.js\";\nimport \"./health-check-components/wp-mail.js\";\nimport \"./health-check-components/simple-text.js\";\nimport \"./health-check-components/setting.js\";\nimport \"./health-check-components/do-wizard.js\";\nimport \"./health-check-components/complete-wizard.js\";\n","/**\n * Format a unix timestamp (UTC) into a date (Jan 1, 1970) in the user's local timezone and locale.\n *\n * @since 1.0.0\n * @param string date_string\n * @return string\n */\nwindow.tip_jar_wp_format_date = function tip_jar_wp_format_date( date_string ) {\n\tvar date = new Date( date_string.replace(/\\s/, 'T') + 'Z' );\n\n\tif ( 'Invalid Date' == date ) {\n\t\treturn date_string;\n\t}\n\n\treturn date.toLocaleDateString();\n}\n\n/**\n * Format a unix timestamp (UTC) into a time (00:00:00) in the user's local timezone and locale.\n *\n * @since 1.0.0\n * @param string date_string\n * @return string\n */\nwindow.tip_jar_wp_format_time = function tip_jar_wp_format_time( date_string ) {\n\tvar date = new Date( date_string.replace(/\\s/, 'T') + 'Z' );\n\n\tif ( 'Invalid Date' == date ) {\n\t\treturn date_string;\n\t}\n\n\treturn date.toLocaleTimeString() + + ' (' + date.toLocaleTimeString( navigator.language,{timeZoneName:'short'}).split(' ')[2] + ')';\n}\n\n/**\n * Format a unix timestamp (UTC) into a date and time (Jan 1, 1970, 00:00:00) in the user's local timezone and locale.\n *\n * @since 1.0.0\n * @param string date_string\n * @return string\n */\nwindow.tip_jar_wp_format_date_and_time = function tip_jar_wp_format_date_and_time( date_string ) {\n\tvar date = new Date( date_string.replace(/\\s/, 'T') + 'Z' );\n\n\tif ( 'Invalid Date' == date ) {\n\t\treturn date_string;\n\t}\n\n\treturn date.toLocaleString() + ' (' + date.toLocaleTimeString( navigator.language,{timeZoneName:'short'}).split(' ')[2] + ')';\n}\n\n/**\n * Takes a date value array from a Tip Jar WP list view component, passes it to tip_jar_wp_format_date, and returns it.\n *\n * @since 1.0.0\n * @param array data\n * @return string\n */\nwindow.tip_jar_wp_list_view_format_date = function tip_jar_wp_list_view_format_date( data ) {\n\treturn tip_jar_wp_format_date( data['value'] );\n}\n\n/**\n * Takes a date value array from a Tip Jar WP list view component, passes it to tip_jar_wp_format_date, and returns it.\n *\n * @since 1.0.0\n * @param array data\n * @return string\n */\nwindow.tip_jar_wp_list_view_format_date_and_time = function tip_jar_wp_list_view_format_date( data ) {\n\treturn tip_jar_wp_format_date_and_time( data['value'] );\n}\n\n/**\n * Format a money amount properly for the user's locale.\n *\n * @since 1.0.0\n * @param int cents\n * @param string currency\n * @param bool is_zero_decimal_currency\n * @param string string_after\n * @return string\n */\nwindow.tip_jar_wp_format_money = function tip_jar_wp_format_money( cents, currency, is_zero_decimal_currency, string_after ) {\n\n\t\tif ( ! currency ) {\n\t\t\tcurrency = 'USD';\n\t\t}\n\n\t\t// If this is a zero-decimal currency\n\t\tif ( is_zero_decimal_currency ) {\n\t\t\tvar formatted_amount = Number( cents );\n\t\t}\n\t\t// If this is not a zero decimal currency\n\t\telse {\n\t\t\tvar formatted_amount = Number( cents ) / 100;\n\t\t}\n\n\t\t// Format the currency based on the user's locale. This allows commas to be used as the decimal seperator, which is technically a translation.\n\t\tformatted_amount = new Intl.NumberFormat(navigator.language, { style: 'currency', currency: currency }).format(formatted_amount);\n\n\t\treturn formatted_amount + string_after;\n}\n\n/**\n * Takes a value array from mpwpadmin's list view component, passes it to tip_jar_wp_format_visual_amount, and returns it.\n *\n * @since 1.0.0\n * @param array data\n * @return string\n */\nwindow.tip_jar_wp_list_view_format_money = function tip_jar_wp_list_view_format_money( data ) {\n\treturn tip_jar_wp_format_money( data['cents'], data['currency'], data['is_zero_decimal_currency'], data['string_after'] );\n}\n","window.Tip_Jar_WP_Stripe_Connect_Field = class Tip_Jar_WP_Stripe_Connect_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tlightbox_open: false,\n\t\t\terror_code: null,\n\t\t\tstripe_is_connected: null,\n\t\t\tpending: false\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\t};\n\n\tcomponentDidMount() {\n\n\t\tthis.setState( {\n\t\t\tprops_loaded: true,\n\t\t\tstripe_is_connected: this.props.props.stripe_is_connected,\n\t\t} );\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tget_current_instruction_key() {\n\n\t\tif ( this.state.stripe_is_connected ) {\n\t\t\treturn 'stripe_connected';\n\t\t}\n\n\t\tif ( ! this.state.stripe_is_connected ) {\n\t\t\treturn 'connect_stripe';\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\tget_connect_button_text() {\n\n\t\tif ( this.state.stripe_is_connected ) {\n\t\t\treturn this.props.props.button_strings.connected_text;\n\t\t}\n\t\tif ( ! this.state.stripe_is_connected ) {\n\t\t\treturn this.props.props.button_strings.connect_text;\n\t\t}\n\n\t}\n\n\tdisconnect_stripe() {\n\n\t\tthis.setState( {\n\t\t\tpending: true,\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_stripe_disconnect', this.props.id);\n\t\tpostData.append('mpwpadmin_stripe_disconnect_mode', this.props.props.mode);\n\t\tpostData.append('mpwpadmin_nonce_id', this.props.props.stripe_disconnect_nonce_id);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.stripe_disconnect_nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.stripe_disconnect_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The user was successfully disconnected from Stripe connect\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tstripe_is_connected: false,\n\t\t\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\t\t} );\n\n\n\t\t\t\t\t\t\t// Pass the response up the chain to the parent component, where it will handle the data as it needs it.\n\t\t\t\t\t\t\tif ( this_component.props.update_context ) {\n\t\t\t\t\t\t\t\tthis_component.props.update_context( data ).then( function( result ) {\n\t\t\t\t\t\t\t\t\tconsole.log( result );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// The user was not successfully disconnected from Stripe connect, but most likely they accidentally disconnected twice somehow. For now we'll assume the disconnection was successful anyway.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tstripe_is_connected: false,\n\t\t\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\trender_field() {\n\n\t\tif ( ! this.state.props_loaded ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\treturn this.props.props.replace_input_field_with;\n\t\t} else {\n\n\t\t\treturn (\n\t\t\t\t<React.Fragment>\n\n\t\t\t\t<div className={ 'mpwpwpadmin-link-container' }>\n\n\t\t\t\t{ (() => {\n\n\t\t\t\t\tif ( ! this.state.pending ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a className='tipjarwp-stripe-connect' href={ this.props.props.stripe_connect_url }>\n\t\t\t\t\t\t\t<span>{ this.get_connect_button_text() }</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t})() }\n\n\t\t\t\t{ (() => {\n\n\t\t\t\t\tif ( this.state.stripe_is_connected && ! this.state.pending ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<button className='tipjarwp-stripe-connect' onClick={ this.disconnect_stripe.bind( this ) }>\n\t\t\t\t\t\t\t<span>{ this.props.props.button_strings.disconnect_text }</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t})() }\n\n\t\t\t\t{ (() => {\n\n\t\t\t\t\tif ( this.state.pending ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MP_WP_Admin_Spinner />\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t})() }\n\n\t\t\t\t{(() => {\n\t\t\t\t\tif ( this.state.stripe_is_connected && ! this.state.pending && this.props.props.stripe_account_name ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-stripe-account-name-container\">\n\t\t\t\t\t\t\t\t\t<span className=\"tip-jar-wp-stripe-account-label\">{ this.props.props.stripe_account_label }</span>\n\t\t\t\t\t\t\t\t\t<span> </span>\n\t\t\t\t\t\t\t\t\t<span className=\"tip-jar-wp-stripe-account-name\">{ this.props.props.stripe_account_name }</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t})()}\n\n\t\t\t\t</div>\n\n\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t</span>\n\t\t\t\t</React.Fragment>\n\t\t\t)\n\t\t}\n\t}\n\n\ttoggle_help_lightbox() {\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t[this.props.slug]: {}\n\t\t} );\n\n\t}\n\n\trender(){\n\n\t\tif ( this.props.props.help_text.react_component ) {\n\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t/>\n\t\t} else {\n\t\t\tvar dynamic_react_component = null;\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-input-component-container' }>\n\t\t\t{ this.render_field() }\n\n\t\t\t<MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ this.props.slug }\n\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\n\t\t\t</div>\n\t\t)\n\t}\n\n};\n","window.Tip_Jar_WP_Admin_Single_Transaction = class Tip_Jar_WP_Admin_Single_Transaction extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\trefunding_status: 'initial',\n\t\t};\n\n\t};\n\n\trefund_transaction() {\n\n\t\t// Do the double check for \"are you sure you want to refund\"\n\t\tif ( 'initial' == this.state.refunding_status ) {\n\n\t\t\tthis.setState( {\n\t\t\t\trefunding_status: 'are_you_sure'\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\trefunding_status: 'refunding'\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_transaction_being_refunded', this.props.current_single_item.id.value);\n\t\tpostData.append('tip_jar_wp_nonce_refund_transaction', this.props.view_info.nonce_refund_transaction);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_refund_transaction, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\trefunding_status: 'failed'\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tif ( data.pending ) {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\trefunding_status: 'pending'\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\trefunding_status: 'refunded_succeeded'\n\t\t\t\t\t\t\t\t}, () => {\n\n\t\t\t\t\t\t\t\t\t// Wait for 1 second while the \"succeess is shown\"\n\t\t\t\t\t\t\t\t\tsetTimeout( () => {\n\n\t\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\t\trefunding_status: 'refunded'\n\t\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\t\t// Get the updated transaction now that it's been refunded (depending on whether Stripe's webhook has arrived yet)\n\t\t\t\t\t\t\t\t\t\tthis_component.props.get_single_item_from_server( this_component.props.current_single_item.id.value );\n\t\t\t\t\t\t\t\t\t}, 1000 );\n\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\trefunding_status: 'failed'\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\trefunding_status: 'failed'\n\t\t\t\t} );\n\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_refund_button() {\n\n\t\t// If this transaction was already refunded, or is a refund transaction itself, don't show a refund button\n\t\tif (\n\t\t\t'refunded' === this.props.current_single_item.status.raw_value.toLowerCase() ||\n\t\t\t'refund' === this.props.current_single_item.type.value.toLowerCase() ||\n\t\t\t// If the webhook failed, we can't refund it anyway, because Stripe never told us the charge ID.\n\t\t\tthis.props.current_single_item.webhook_notice\n\t\t) {\n\t\t\treturn ( '' );\n\t\t}\n\n\t\tvar refund_string = this.props.view_info.strings.refund_transaction;\n\t\tvar on_click = this.refund_transaction.bind( this );\n\n\t\tif ( 'are_you_sure' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_are_you_sure;\n\t\t}\n\n\t\tif ( 'refunding' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_refunding;\n\t\t\ton_click = null;\n\t\t}\n\n\t\tif ( 'pending' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_pending;\n\t\t}\n\n\t\tif ( 'failed' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_failed;\n\t\t}\n\n\t\tif ( 'refunded_succeeded' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_succeeded;\n\t\t\ton_click = null;\n\t\t}\n\n\t\treturn( <button className=\"button\" onClick={ this.refund_transaction.bind( this ) }>{ refund_string }</button> );\n\n\t}\n\n\thandle_mpwpadmin_button_click( new_state, lightbox_state, event ) {\n\t\tthis.props.main_component.set_all_current_visual_states( new_state, lightbox_state );\n\t}\n\n\trender(){\n\n\t\tvar single_item = this.props.current_single_item;\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t<div className={ 'mpwpwadmin-list-view-single-data-item-controls' }>\n\t\t\t{ this.render_refund_button() }\n\t\t\t</div>\n\t\t\t<div className=\"mpwpadmin-single-data\">\n\t\t\t{ (() => {\n\n\t\t\t\tvar mapper = [];\n\t\t\t\tvar value;\n\n\t\t\t\t// Loop through all of the items to show about this item\n\t\t\t\tfor (var key in single_item) {\n\t\t\t\t\tmapper.push( <div className={ 'mpwpadmin-list-view-single-data-item' } key={ key }>{\n\n\t\t\t\t\t\t// Render the output for this data value about the current single item (which was selected from the list)\n\t\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\t\tif ( single_item[key]['show_in_single_data_view'] ) {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-title' }>\n\t\t\t\t\t\t\t\t\t{ single_item[key]['title'] }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-value' }>\n\t\t\t\t\t\t\t\t\t{ ( () => {\n\n\t\t\t\t\t\t\t\t\t\t// Set the visual value\n\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\tvalue = eval( single_item[key]['value_format_function'] )( single_item[key] )\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tvalue = single_item[key]['value']\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// If an mpwpadmin state should be fired when the is clicked\n\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['mpwpadmin_visual_state_onclick'] || single_item[key]['mpwpadmin_lightbox_state_onclick'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar visual_state = single_item[key]['mpwpadmin_visual_state_onclick'] ? single_item[key]['mpwpadmin_visual_state_onclick'] : false;\n\t\t\t\t\t\t\t\t\t\t\tvar lightbox_state = single_item[key]['mpwpadmin_lightbox_state_onclick'] ? single_item[key]['mpwpadmin_lightbox_state_onclick'] : false;\n\n\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<a onClick={ this.handle_mpwpadmin_button_click.bind( this, visual_state, lightbox_state ) }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// If a link should be directed to upon click on this item\n\t\t\t\t\t\t\t\t\t\telse if ( single_item[key]['link_url'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar target = single_item[key]['link_target'] ? single_item[key]['link_url'] : null;\n\n\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<a target={ target } href={ single_item[key]['link_url'] }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t})() }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ( '' );\n\n\t\t\t\t\t\t})()\n\n\t\t\t\t\t}</div> );\n\t\t\t\t}\n\n\t\t\t\treturn mapper;\n\t\t\t})() }\n\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n};\n","window.Tip_Jar_WP_Admin_Single_Arrangement = class Tip_Jar_WP_Admin_Single_Arrangement extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tcancellation_status: 'initial',\n\t\t};\n\n\t};\n\n\tcancel_arrangement() {\n\n\t\t// Do the double check for \"are you sure you want to refund\"\n\t\tif ( 'initial' == this.state.cancellation_status ) {\n\n\t\t\tthis.setState( {\n\t\t\t\tcancellation_status: 'are_you_sure'\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tcancellation_status: 'cancelling'\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_arrangement_being_cancelled', this.props.current_single_item.id.value);\n\t\tpostData.append('tip_jar_wp_nonce_cancel_arrangement', this.props.view_info.nonce_cancel_arrangement);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_cancel_arrangement, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\tcancellation_status: 'failed'\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tif ( data.pending ) {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\tcancellation_status: 'pending'\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\tcancellation_status: 'cancellation_succeeded'\n\t\t\t\t\t\t\t\t}, () => {\n\n\t\t\t\t\t\t\t\t\t// Wait for 1 second while the \"succeess is shown\"\n\t\t\t\t\t\t\t\t\tsetTimeout( () => {\n\n\t\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\t\tcancellation_status: 'cancelled'\n\t\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\t\t// Get the updated arrangement now that it's been cancelled (depending on whether Stripe's webhook has arrived yet)\n\t\t\t\t\t\t\t\t\t\tthis_component.props.get_single_item_from_server( this_component.props.current_single_item.id.value );\n\t\t\t\t\t\t\t\t\t}, 1000 );\n\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcancellation_status: 'failed'\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\tcancellation_status: 'failed'\n\t\t\t\t} );\n\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_cancel_button() {\n\n\t\t// If this arrangement was already cancelled, don't show a refund button\n\t\tif (\n\t\t\t'cancelled' === this.state.cancellation_status ||\n\t\t\t'cancelled' === this.props.current_single_item.status.value.toLowerCase() ||\n\t\t\t// If the webhook failed, we can't cancel it anyway, because Stripe never told us the sub ID.\n\t\t\tthis.props.current_single_item.webhook_notice\n\t\t) {\n\t\t\treturn ( '' );\n\t\t}\n\n\t\tvar button_string = this.props.view_info.strings.cancel_arrangement;\n\t\tvar on_click = this.cancel_arrangement.bind( this );\n\n\t\tif ( 'are_you_sure' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_are_you_sure;\n\t\t}\n\n\t\tif ( 'cancelling' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_cancelling;\n\t\t\ton_click = null;\n\t\t}\n\n\t\tif ( 'pending' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_pending;\n\t\t}\n\n\t\tif ( 'failed' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_failed;\n\t\t}\n\n\t\tif ( 'cancellation_succeeded' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_succeeded;\n\t\t\ton_click = null;\n\t\t}\n\n\t\treturn( <button className=\"button\" onClick={ this.cancel_arrangement.bind( this ) }>{ button_string }</button> );\n\n\t}\n\n\thandle_mpwpadmin_button_click( new_state, lightbox_state, event ) {\n\t\tthis.props.main_component.set_all_current_visual_states( new_state, lightbox_state );\n\t}\n\n\trender(){\n\n\t\tvar single_item = this.props.current_single_item;\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpwadmin-list-view-single-data-item-controls' }>\n\t\t\t\t\t{ this.render_cancel_button() }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mpwpadmin-single-data\">\n\t\t\t\t\t{ (() => {\n\n\t\t\t\t\t\tvar mapper = [];\n\n\t\t\t\t\t\t// Loop through all of the items to show about this item\n\t\t\t\t\t\tfor (var key in single_item) {\n\t\t\t\t\t\t\tmapper.push( <React.Fragment key={ key }>{\n\n\t\t\t\t\t\t\t\t// Render the output for this data value about the current single item (which was selected from the list)\n\t\t\t\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\t\t\t\tif ( single_item[key]['show_in_single_data_view'] ) {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item' }>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-title' }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ single_item[key]['title'] }\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-value' }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ ( () => {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Set the visual value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue = eval( single_item[key]['value_format_function'] )( single_item[key] )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue = single_item[key]['value']\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If an mpwpadmin state should be fired when the is clicked\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['mpwpadmin_visual_state_onclick'] || single_item[key]['mpwpadmin_lightbox_state_onclick'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar visual_state = single_item[key]['mpwpadmin_visual_state_onclick'] ? single_item[key]['mpwpadmin_visual_state_onclick'] : false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar lightbox_state = single_item[key]['mpwpadmin_lightbox_state_onclick'] ? single_item[key]['mpwpadmin_lightbox_state_onclick'] : false;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a onClick={ this.handle_mpwpadmin_button_click.bind( this, visual_state, lightbox_state ) }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If a link should be directed to upon click on this item\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telse if ( single_item[key]['link_url'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar target = single_item[key]['link_target'] ? single_item[key]['link_url'] : null;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a target={ target } href={ single_item[key]['link_url'] }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t})() }\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn ( '' );\n\n\t\t\t\t\t\t\t\t})()\n\n\t\t\t\t\t\t\t}</React.Fragment> );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn mapper;\n\t\t\t\t\t})() }\n\t\t\t\t</div>\n\t\t\t\t<TipJarWPTransactionsInArrangement\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tview_slug={ 'transactions' }\n\t\t\t\t\tview_info={ this.props.view_info.transactions_in_arrangement }\n\t\t\t\t\tarrangement_id={ this.props.current_single_item.id.value }\n\t\t\t\t/>\n\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n};\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\nwindow.TipJarWPTransactionsInArrangement = class TipJarWPTransactionsInArrangement extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t\tcurrent_page: 1,\n\t\t\ttotal_items: 1,\n\t\t\titems_per_page: 1,\n\t\t\tsearch_term: '',\n\t\t\tcurrent_single_item: null,\n\t\t\tarrangement_id: null\n\t\t}\n\n\t\tthis.get_single_item_from_server = this.get_single_item_from_server.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\n\t\tthis.setState( {\n\t\t\tarrangement_id: this.props.arrangement_id,\n\t\t\ttotal_items: this.props.view_info.total_items,\n\t\t\titems_per_page: this.props.view_info.items_per_page,\n\t\t\trows: this.props.view_info.rows,\n\t\t\tcolumns: this.props.view_info.columns,\n\t\t}, () => {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\tcomponentDidUpdate() {\n\t\t// If the arrangement has changed, update the list of transactions to show.\n\t\tif ( this.state.arrangement_id !== this.props.arrangement_id ){\n\t\t\tthis.setState({\n\t\t\t\tarrangement_id: this.props.arrangement_id,\n\t\t\t}, () => {\n\t\t\t\tthis.get_rows_from_server();\n\t\t\t} );\n\t\t}\n\t}\n\n\tget_rows_from_server() {\n\n\t\tif ( ! this.state.items_per_page ) {\n\t\t\tvar items_per_page = 20;\n\t\t} else {\n\t\t\tvar items_per_page = this.state.items_per_page;\n\t\t}\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_list_view_id', this.props.view_slug);\n\t\tpostData.append('mpwpadmin_list_view_search_term', this.state.search_term);\n\t\tpostData.append('mpwpadmin_list_view_page_id', this.state.current_page);\n\t\tpostData.append('mpwpadmin_items_per_page', items_per_page);\n\t\tpostData.append('mpwpadmin_list_view_items_per_page', this.state.items_per_page);\n\t\tpostData.append('tip_jar_wp_arrangement_id', this.state.arrangement_id);\n\t\tpostData.append('mpwpadmin_nonce', this.props.view_info.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcolumns: data.columns,\n\t\t\t\t\t\t\t\trows: data.rows,\n\t\t\t\t\t\t\t\ttotal_items: data.total_items\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\trows: 'Unable to fetch rows...'\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_page_number_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tcurrent_page: event.target.value,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\tget_single_item_from_server( item_to_fetch ) {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_list_view_id', this.props.view_slug);\n\t\tpostData.append('mpwpadmin_list_view_item_id', item_to_fetch);\n\t\tpostData.append('mpwpadmin_nonce', this.props.view_info.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_single_item, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success && data.current_single_item ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcurrent_single_item: data.current_single_item,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcurrent_single_item: 'none_found'\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_items_per_page_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tcurrent_page: 1,\n\t\t\titems_per_page: event.target.value,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\thandle_search_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tsearch_term: event.target.value,\n\t\t\tcurrent_page: 1,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\thandle_single_row_click( single_item, event ) {\n\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {\n\t\t\t\tsingle_data_view: {\n\t\t\t\t\t[single_item['id']['value']]: {} // Use the value in the first column as the URL slug\n\t\t\t\t}\n\t\t\t}\n\t\t} ).then( () => {\n\t\t\tthis.setState( {\n\t\t\t\tcurrent_single_item: single_item\n\t\t\t} );\n\t\t} );\n\n\t}\n\n\thandle_list_view_button_click(){\n\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {\n\t\t\t\tlist_view: {}\n\t\t\t}\n\t\t} );\n\n\t}\n\n\tget_total_pages() {\n\t\treturn Math.ceil( this.state.total_items / this.state.items_per_page );\n\t}\n\n\trender_columns( columns ) {\n\n\t\tif ( ! columns ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar mapper = [];\n\n\t\t// Loop through each column\n\t\tfor (var key in columns) {\n\t\t\tmapper.push(\n\t\t\t\t<div key={ key } scope=\"col\" className=\"mpwpadmin-list-view-column\">\n\t\t\t\t\t<span>{ columns[key] }</span>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn mapper;\n\t}\n\n\trender_rows( rows, columns ) {\n\n\t\tvar mapper = [];\n\t\tvar td_mapper = [];\n\n\t\tif ( ! rows || 0 == this.state.total_items ) {\n\n\t\t\tvar first = true;\n\n\t\t\tfor (var key in columns) {\n\t\t\t\ttd_mapper.push(\n\n\t\t\t\t\t// Render the contents of this table cell\n\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\tif ( first ) {\n\n\t\t\t\t\t\t\tfirst = false;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t{ 'None Found' }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfirst = false;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t{ '' }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})()\n\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add all of that combined data to the main mapper array\n\t\t\tmapper.push(\n\t\t\t\t<div key={ 'none_found' } className=\"mpwpadmin-list-view-row\">\n\t\t\t\t{ td_mapper }\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\treturn mapper;\n\t\t}\n\n\t\t// Loop through each row\n\t\tfor (var row in rows) {\n\n\t\t\t// Combine all of the table data (cells in this row)\n\t\t\tfor (var key in columns) {\n\t\t\t\ttd_mapper.push(\n\n\t\t\t\t\t// Render the contents of this table cell\n\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\tif ( rows[row][key]['show_in_list_view'] ) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t<button onClick={ this.handle_single_row_click.bind( this, rows[row] ) }>\n\t\t\t\t\t\t\t\t\t{(() => {\n\t\t\t\t\t\t\t\t\t\tif ( rows[row][key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\treturn eval( rows[row][key]['value_format_function'] )( rows[row][key] )\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn rows[row][key]['value']\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})()}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})()\n\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add all of that combined data to the main mapper array\n\t\t\tmapper.push(\n\t\t\t\t<div key={ row } className=\"mpwpadmin-list-view-table-row\">\n\t\t\t\t\t{ td_mapper }\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\t// Get the row data array ready for a new row\n\t\t\ttd_mapper = [];\n\t\t}\n\n\t\treturn mapper;\n\n\t}\n\n\trender_search() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpwadmin-list-view-search\">\n\t\t\t<span>{ this.props.view_info.strings.uppercase_search }</span>\n\t\t\t<input type=\"text\" value={ this.state.search_term } onChange={ this.handle_search_change.bind( this ) } />\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_pagination() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpwadmin-list-view-pagination-controls\">\n\t\t\t\t<div className=\"mpwpwadmin-list-view-items-per-page\">\n\t\t\t\t\t<span>{ this.props.view_info.strings.uppercase_items + ' ' + this.props.view_info.strings.lowercase_per + ' ' + this.props.view_info.strings.lowercase_page }</span>\n\t\t\t\t\t<input type=\"number\" min={ 1 } onChange={ this.handle_items_per_page_change.bind( this ) } value={ this.state.items_per_page } />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mpwpwadmin-list-view-pagination\">\n\t\t\t\t\t<span>{ this.props.view_info.strings.uppercase_page }</span>\n\t\t\t\t\t<input type=\"number\" min={ 1 } max={ this.get_total_pages() } onChange={ this.handle_page_number_change.bind( this ) } value={ this.state.current_page } />\n\t\t\t\t\t<span>{ ' ' + this.props.view_info.strings.lowercase_of + ' ' + this.get_total_pages() }</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_list_table() {\n\n\t\tif ( this.state.columns && this.state.rows ) {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-list-view-table' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-header' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-row' }>\n\t\t\t\t\t\t\t{ this.render_columns( this.state.columns ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-body' }>\n\t\t\t\t\t\t{ this.render_rows( this.state.rows, this.state.columns ) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t} else {\n\t\t\treturn <MP_WP_Admin_Spinner />\n\t\t}\n\n\t}\n\n\trender_list_view() {\n\n\t\treturn(\n\t\t\t<div className=\"mpwpadmin-list-view\">\n\t\t\t\t<div className=\"mpwpadmin-list-view-controls\">\n\n\t\t\t\t\t{ this.render_search() }\n\n\t\t\t\t\t{ this.render_pagination() }\n\n\t\t\t\t</div>\n\n\t\t\t\t{ this.render_list_table() }\n\n\t\t\t\t<div className=\"mpwpadmin-list-view-controls\">\n\n\t\t\t\t\t{ this.render_search() }\n\n\t\t\t\t\t{ this.render_pagination() }\n\n\t\t\t\t</div>\n\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-list-view tip-jar-wp-transactions-in-arrangement' }>\n\n\t\t\t<div className=\"mpwpadmin-breadcrumb\">\n\t\t\t<h2>Transactions in this Plan</h2>\n\t\t\t</div>\n\n\t\t\t<div className=\"mpwpadmin-list-view-content-area\">\n\n\t\t\t{ this.render_list_view() }\n\n\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n}\n","window.Tip_Jar_Shortcode_How_To = class Tip_Jar_Shortcode_How_To extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tform_mode: this.props.section_info.component_data.form_mode.default,\n\t\t\topen_style: this.props.section_info.component_data.open_style.default,\n\t\t\tlink_text: this.props.section_info.component_data.link_text.default // \"Leave a tip\"\n\t\t}\n\n\t\tthis.copy_text_field = React.createRef();\n\n\t};\n\n\tcopy_text( ref_to_copy ) {\n\t\tref_to_copy.select();\n\t\tdocument.execCommand('copy');\n\t}\n\n\trender_copy_text_element( text_field_data, ref_to_use ) {\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpadmin-input-component-container' } onClick={ this.copy_text.bind( this, this[ref_to_use] ) }>\n\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ text_field_data.title }</div>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\treadOnly\n\t\t\t\t\t\tref={(input) => this[ref_to_use] = input}\n\t\t\t\t\t\tvalue={ this.get_shortcode_text() }\n\t\t\t\t\t/>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button onClick={ this.copy_text.bind( this, this[ref_to_use] ) } className=\"button\">{ text_field_data.button_text }</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n\thandle_radio_change( name, event ) {\n\n\t\tif ( 'form_mode' == name ) {\n\t\t\tthis.handle_form_mode_change( event );\n\t\t}\n\n\t\tif ( 'open_style' == name ) {\n\t\t\tthis.handle_open_style_change( event );\n\t\t}\n\t}\n\n\thandle_form_mode_change( event ) {\n\t\tthis.setState( {\n\t\t\tform_mode: event.target.value\n\t\t} );\n\t}\n\n\thandle_open_style_change( event ) {\n\t\tthis.setState( {\n\t\t\topen_style: event.target.value\n\t\t} );\n\t}\n\n\thandle_link_text_change( event ) {\n\t\tthis.setState( {\n\t\t\tlink_text: event.target.value\n\t\t} );\n\t}\n\n\tget_shortcode_text() {\n\n\t\tvar shortcode_text = this.props.section_info.component_data.strings.default_shortcode_text;\n\n\t\tif ( 'form' == this.state.form_mode ) {\n\t\t\tshortcode_text = '[tipjarwp]';\n\t\t}\n\n\t\tif ( 'button' == this.state.form_mode ) {\n\t\t\tshortcode_text = '[tipjarwp mode=\"button\" link_text=\"' + this.state.link_text + '\" open_style=\"' + this.state.open_style + '\"]';\n\t\t}\n\n\t\tif ( 'text_link' == this.state.form_mode ) {\n\t\t\tshortcode_text = '[tipjarwp mode=\"text_link\" link_text=\"' + this.state.link_text + '\" open_style=\"' + this.state.open_style + '\"]';\n\t\t}\n\n\t\treturn shortcode_text;\n\t}\n\n\trender_radio_buttons( radio_buttons, name, current_value ) {\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in radio_buttons) {\n\n\t\t\tmapper.push(\n\t\t\t\t<div key={ key } className={ \"tip-jar-wp-radio-button-container\" + ( key == this.state.form_mode ? ' tip-jar-wp-radio-current' : '' ) }>\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<div className=\"tip-jar-wp-radio-button-outer\">\n\t\t\t\t\t\t\t<div className=\"tip-jar-wp-radio-button-inner\">\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype={ 'radio' }\n\t\t\t\t\t\t\t\t\tvalue={ key }\n\t\t\t\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\t\t\t\tchecked={ key == current_value ? true : false }\n\t\t\t\t\t\t\t\t\tonChange={ this.handle_radio_change.bind( this, name ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-radio-button-after\">\n\t\t\t\t\t\t\t\t\t{ radio_buttons[key].after_output }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t)\n\n\t\t}\n\n\t\t// This lets us output the inputs one by one\n\t\treturn (\n\t\t\t<div className=\"tip-jar-wp-radio-buttons-container\">\n\t\t\t{\n\t\t\t\tmapper.map((radio_buttons, index) => {\n\t\t\t\t\treturn radio_buttons;\n\t\t\t\t})\n\t\t\t}\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_mode_field() {\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t<div className=\"mpwpadmin-input-component-container mpwpwadmin-radio-container\">\n\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ this.props.section_info.component_data.form_mode.title }</div>\n\t\t\t\t\t{ this.render_radio_buttons( this.props.section_info.component_data.form_mode.radio_options, 'form_mode', this.state.form_mode ) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_link_text_setting() {\n\n\t\tif (\n\t\t\t'button' == this.state.form_mode ||\n\t\t\t'text_link' == this.state.form_mode\n\t\t) {\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-input-component-container\">\n\t\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ this.props.section_info.component_data.link_text.title }</div>\n\t\t\t\t\t\t<input type=\"text\" value={ this.state.link_text } onChange={ this.handle_link_text_change.bind( this ) } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\trender_open_style_field() {\n\t\tif (\n\t\t\t'button' == this.state.form_mode ||\n\t\t\t'text_link' == this.state.form_mode\n\t\t) {\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-input-component-container mpwpwadmin-radio-container\">\n\t\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ this.props.section_info.component_data.open_style.title }</div>\n\t\t\t\t\t\t{ this.render_radio_buttons( this.props.section_info.component_data.open_style.radio_options, 'open_style', this.state.open_style ) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\trender_lighbox_content() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t<img src={ this.props.section_info.icon } />\n\t\t\t</div>\n\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.section_info.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.section_info.component_data.strings.description }\n\t\t\t\t</div>\n\n\t\t\t\t{ this.render_mode_field() }\n\n\t\t\t\t{ this.render_open_style_field() }\n\n\t\t\t\t{ this.render_link_text_setting() }\n\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ this.render_copy_text_element( this.props.section_info.component_data.copy_shortcode, 'copy_text_field' ) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender(){\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\n\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { tip_jar_wp_shortcode_how_to: {} } ) }>How to show a tip form</button>\n\t\t\t\t<MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ 'tip_jar_wp_shortcode_how_to' }\n\t\t\t\t\tmode={ 'custom_react_component' }\n\t\t\t\t\tcustom_react_component={ this.render_lighbox_content() }\n\t\t\t\t/>\n\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","// This component acts as a wrapper to map data and load a Health Check component as the \"Help\" lightbox for an input field.\nwindow.Tip_Jar_WP_Health_Check_As_Help_Lightbox = class Tip_Jar_WP_Health_Check_As_Help_Lightbox extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n if (!this.props.data) {\n return \"\";\n }\n\n var DynamicReactComponent = eval(this.props.data.react_component);\n var dynamic_react_component = (\n <DynamicReactComponent\n main_component={this.props.main_component}\n data={{\n [this.props.data.key]: {\n is_healthy: false,\n unhealthy: {\n mode: \"live_site\",\n component_data: this.props.data\n }\n }\n }}\n health_check_key={this.props.data.key}\n slug_suffix={\"_help\"}\n this_lightbox_slug={this.props.data.key + \"_help\"}\n />\n );\n\n return dynamic_react_component;\n }\n};\n","window.Tip_Jar_WP_SSL_Health_Check = class Tip_Jar_WP_SSL_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\turl_update_status: false\n\t\t}\n\t};\n\n\tupdate_wordpress_url_to_https() {\n\n\t\tvar this_component = this;\n\n\t\tthis_component.setState( {\n\t\t\turl_update_status: 'attempting_update',\n\t\t});\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_update_wordpress_url_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.tip_jar_wp_update_wordpress_url_nonce );\n\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_update_wordpress_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh this page but over https\n\t\t\t\t\t\t\twindow.location.href = data.https_url;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\n\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t});\n\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_unhealthy_action() {\n\n\t\t// If no certificate exists\n\t\tif ( 'no_certificate_exists' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_description }</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\t// If a certificate does exist, but we just aren't running over https\n\t\tif ( 'certificate_exists' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\n\t\t\tif ( ! this.state.url_update_status ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className=\"button\" onClick={ this.update_wordpress_url_to_https.bind( this ) }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.button_text }</button>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( 'attempting_update' == this.state.url_update_status ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<MP_WP_Admin_Spinner />\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( 'unable_to_update' == this.state.url_update_status ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.update_failed_title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.update_failed_description }</div>\n\t\t\t\t\t\t<button className=\"button\" onClick={ this.update_wordpress_url_to_https.bind( this ) }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.button_text }</button>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t{ this.render_unhealthy_action() }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Stripe_Connect_Health_Check = class Tip_Jar_WP_Stripe_Connect_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tlightbox_open: false\n\t\t}\n\t};\n\n\tcomponentDidMount() {\n\t\tthis.handle_open_status_based_on_url().then( () => {\n\t\t\t// If lightbox containing this component is open in the lightbox views, set the redirect URL on the server so it opens this lightbox\n\t\t\tthis.set_stripe_success_redirect_on_server( this.state.lightbox_open );\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\tthis.handle_open_status_based_on_url().then( () => {\n\n\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\n\t\t\t// If lightbox containing this component is open in the lightbox views, set the redirect URL on the server so it opens this lightbox\n\t\t\tthis.set_stripe_success_redirect_on_server( this.state.lightbox_open );\n\t\t} );\n\n\t}\n\n\thandle_open_status_based_on_url() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// If a lightbox is open based on the setting in the main component\n\t\t\tif ( this.props.main_component && this.props.main_component.state.lightbox_visual_state ) {\n\t\t\t\t// Check if that lightbox is us!\n\t\t\t\tif ( this.props.this_lightbox_slug == Object.keys(this.props.main_component.state.lightbox_visual_state)[0] ) {\n\n\t\t\t\t\t// The lightbox holding this component is showing. Therefore, set that status in this component as well.\n\t\t\t\t\tif ( ! this.state.lightbox_open ) {\n\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\tlightbox_open: true\n\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\tresolve( this.state );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If the current lightbox in the URL is not us, close this one.\n\t\t\t\telse {\n\t\t\t\t\tif ( this.state.lightbox_open ) {\n\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\tlightbox_open: false\n\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\tresolve( this.state );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tset_stripe_success_redirect_on_server( redirect_to_this_lightbox ) {\n\n\t\tif ( ! redirect_to_this_lightbox ) {\n\t\t\tvar tjwp_scsr_mode = '';\n\t\t} else {\n\t\t\tvar tjwp_scsr_mode = this.props.health_check_key;\n\t\t}\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_set_tjwp_scsr', tjwp_scsr_mode);\n\t\tpostData.append('tip_jar_wp_lightbox_suffix', this.props.slug_suffix);\n\t\tpostData.append('tip_jar_wp_set_tjwp_scsr_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.tip_jar_wp_set_tjwp_scsr_nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_set_stripe_connect_success_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} );\n\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t{ ( () => {\n\t\t\t\t\tif ( this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text ) {\n\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t\t<a className='tipjarwp-stripe-connect' href={ this.props.data[this.props.health_check_key].unhealthy.component_data.stripe_connect_url }>\n\t\t\t\t\t\t\t\t\t<span>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text }</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} ) () }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Stripe_Webhook_Health_Check = class Tip_Jar_WP_Stripe_Webhook_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\twebhook_copied: false\n\t\t}\n\n\t\tthis.copy_text_field = React.createRef();\n\t\tthis.set_input_field_as_ref = this.set_input_field_as_ref.bind( this );\n\t};\n\n\tget_connect_button_text() {\n\t\treturn this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text;\n\t}\n\n\tcopy_text( ref_to_copy ) {\n\t\tif ( ! ref_to_copy ) {\n\t\t\treturn;\n\t\t}\n\t\tref_to_copy.select();\n document.execCommand('copy');\n this.setState({ webhook_copied: true });\n\t}\n\n\tset_input_field_as_ref( element ) {\n\t\tthis.copy_text_field = element;\n\t}\n\n\tclick_to_copy_button() {\n\n\t\tif ( this.state.webhook_copied ) {\n\t\t\treturn( <button onClick={ this.copy_text.bind( this, this.copy_text_field ) } className=\"button\">{ 'Copied!' }</button> );\n\t\t} else {\n\t\t\treturn( <button onClick={ this.copy_text.bind( this, this.copy_text_field ) } className=\"button\">{ 'Click to copy' }</button> );\n\t\t}\n\n\t}\n\n\thandle_server_response( data ) {\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Wait for 1 second then refresh\n\t\t\tsetTimeout( () => {\n\t\t\t\tif ( data.success ) {\n\t\t\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}, 300 );\n\n\t\t} )\n\t}\n\n\trender_unhealthy_actions() {\n\n\t\tif ( 'localhost' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tif ( 'live_site' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-steps' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.description }</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-copy-text-container' }>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t\t\tref={ this.set_input_field_as_ref }\n\t\t\t\t\t\t\t\t\tvalue={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.url_to_copy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ this.click_to_copy_button() }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_1 }</li>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_2 }</li>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_3 }</li>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_4 }</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t<a className='tipjarwp-stripe-connect' target=\"_blank\" href={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.stripe_connect_url }>\n\t\t\t\t\t\t\t\t<span>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.stripe_connect_button_text }</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.description }</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\t\t\t\tvar DynamicReactComponent = eval( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field.react_component );\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\t\t\t\t\tid={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field.id }\n\t\t\t\t\t\t\t\t\t\t\tslug={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field.id }\n\t\t\t\t\t\t\t\t\t\t\tprops={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field }\n\t\t\t\t\t\t\t\t\t\t\tupdate_context={ this.handle_server_response.bind( this ) }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} )()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t{ this.render_unhealthy_actions() }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_WP_Mail_Health_Check = class Tip_Jar_WP_WP_Mail_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\temail_value: '',\n\t\t\temail_send_status: false,\n\t\t\tsendgrid_install_status: false\n\t\t}\n\n\t\tthis.email_field = React.createRef();\n\n\t};\n\n\tcomponentDidMount() {\n\n\t\t// If this component was told we are fixing_it_again, reset the variables on the server just in case we are re-testing the email, and it was previously successful.\n\t\tif( this.props.fixing_it_again ) {\n\t\t\tthis.handle_fixing_it_again();\n\t\t}\n\n\t\tvar force_to_step = this.props.data[this.props.health_check_key].unhealthy.component_data.force_to_step;\n\n\t\t// If we should force to a step\n\t\tif ( force_to_step ) {\n\t\t\tif ( 'test_email_successfuly_sent' == force_to_step ) {\n\t\t\t\tthis.setState( {\n\t\t\t\t\temail_send_status: 'sent'\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tthis.setState( {\n\t\t\temail_value: this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.email_address_to_send\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\t// If this component was told we are fixing_it_again, reset the variables on the server just in case we are re-testing the email, and it was previously successful.\n\t\tif( this.props.fixing_it_again ) {\n\t\t\tthis.handle_fixing_it_again();\n\t\t}\n\n\t}\n\n\twait_for_email_confirmation() {\n\n\t\t// Check the server every 3 seconds to see if they confirmed on a phone, or different device.\n\t\tvar refreshing_server = setInterval( () => {\n\t\t\tif ( 'sent' == this.state.email_send_status ) {\n\n\t\t\t\t// If we are still waiting (still unhealthy)\n\t\t\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\t\t\t// Check the server again\n\t\t\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\t\t\t\t}\n\t\t\t\t// If the wp_mail check is suddenly healthy, stop checking for updates\n\t\t\t\telse {\n\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\temail_send_status: 'succeeded'\n\t\t\t\t\t} );\n\n\t\t\t\t\tclearInterval( refreshing_server );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the status of the test email is no longer \"sent\", stop checking the server for updates.\n\t\t\telse {\n\t\t\t\tclearInterval( refreshing_server );\n\t\t\t}\n\t\t}, 4000 );\n\n\t\t// Only do this waiting/refreshing for 2 minutes. This results in a maximum of 30 checks over 2 minutes.\n\t\tsetTimeout( () => {\n\t\t\tclearInterval( refreshing_server );\n\t\t}, 120000 );\n\n\t}\n\n\tget_connect_button_text() {\n\t\treturn this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text;\n\t}\n\n\tsend_email( email_address ) {\n\n\t\tthis.setState( {\n\t\t\temail_send_status: 'sending'\n\t\t});\n\n\t\tvar this_component = this;\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_email', email_address );\n\t\tpostData.append('tip_jar_wp_lightbox_suffix', this.props.slug_suffix );\n\t\tpostData.append('tip_jar_wp_send_test_email_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.send_test_email_nonce );\n\n\t\t// Send a test email\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.server_api_endpoint_sent_test_email, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\temail_send_status: 'unable_to_attempt_send',\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\temail_send_status: 'sent',\n\t\t\t\t\t\t\t}, () => {\n\n\t\t\t\t\t\t\t\tthis_component.wait_for_email_confirmation();\n\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\temail_send_status: 'attempted_and_failed',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\n\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\temail_send_status: 'attempted_but_server_response_incorrect',\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\temail_send_status: 'unable_to_attempt',\n\t\t\t\t});\n\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tinstall_sendgrid_plugin() {\n\n\t\tthis.setState( {\n\t\t\tsendgrid_install_status: 'installing'\n\t\t});\n\n\t\tvar this_component = this;\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_install_sendgrid_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.install_sendgrid_nonce );\n\n\t\t// Send a test email\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.server_api_endpoint_install_sendgrid, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\tsendgrid_install_status: 'failed',\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\temail_send_status: 'done',\n\t\t\t\t\t\t\t\tsendgrid_install_status: 'succeeded',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsendgrid_install_status: 'attempted_and_failed',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\n\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\tsendgrid_install_status: 'attempted_but_server_response_incorrect',\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\tsendgrid_install_status: 'unable_to_attempt',\n\t\t\t\t});\n\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\thandle_fixing_it_again() {\n\n\t\tconsole.log( 'sdgsgsgsdg' );\n\n\t\tthis.reset_wp_mail_flag_on_server().then( () => {\n\n\t\t\t// Reset all of the local state variables to their beginning statuses\n\t\t\tthis.setState( {\n\t\t\t\temail_value: this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.email_address_to_send,\n\t\t\t\temail_send_status: false,\n\t\t\t\tsendgrid_install_status: false\n\t\t\t} );\n\n\t\t} );\n\t}\n\n\thandle_did_not_get_email() {\n\n\t\tthis.setState( {\n\t\t\temail_send_status: 'attempted_and_failed'\n\t\t});\n\n\t\tthis.reset_wp_mail_flag_on_server();\n\t}\n\n\treset_wp_mail_flag_on_server() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Format the data that we'll send to the server\n\t\t\tvar postData = new FormData();\n\t\t\tpostData.append('tip_jar_wp_reset_wp_mail_health_check_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.reset_wp_mail_health_check_nonce );\n\n\t\t\tthis.setState( {\n\t\t\t\tloading: true\n\t\t\t} );\n\n\t\t\t// Set the test email as being not received\n\t\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.server_api_endpoint_reset_wp_mail_health_check, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tmode: \"same-origin\",\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t\theaders: {},\n\t\t\t\tbody: postData\n\t\t\t} ).then( () => {\n\t\t\t\tthis.props.main_component.refresh_mpwpadmin().then( () => {\n\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\tloading: false\n\t\t\t\t\t} );\n\n\t\t\t\t\tresolve();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t} );\n\t}\n\n\thandle_email_change( event ) {\n\t\tthis.setState( {\n\t\t\temail_value: event.target.value\n\t\t} );\n\t}\n\n\tclick_to_send_button( email_address ) {\n\n\t\tvar button_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.send_test_email;\n\n\t\t// If we were unable to attempt a send (possibly no internet connection)\n\t\tif ( 'unable_to_attempt' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.unable_to_attempt_email;\n\t\t}\n\n\t\t// There's an error happening on the server\n\t\tif ( 'attempted_but_server_response_incorrect' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.attempted_but_server_response_incorrect;\n\t\t}\n\n\t\t// If wp_mail failed\n\t\tif ( 'attempted_and_failed' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.attempted_and_failed;\n\t\t}\n\n\t\t// If wp_mail sent the email\n\t\tif ( 'sent' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.email_sent;\n\t\t}\n\n\t\treturn( <button onClick={ this.send_email.bind( this, this.state.email_value ) } className=\"button\">{ button_text }</button> );\n\n\t}\n\n\thandle_server_response_from_sendgrid_api_save( data ) {\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Wait for 1 second then refresh\n\t\t\tsetTimeout( () => {\n\t\t\t\tif ( data.success ) {\n\t\t\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\n\t\t\t\t\t// Restart the email checking process\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\temail_send_status: 'restart',\n\t\t\t\t\t\tsendgrid_install_status: false\n\t\t\t\t\t} );\n\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}, 300 );\n\n\t\t} )\n\t}\n\n\thandle_use_my_own_email_plugin() {\n\n\t\t// Restart the email checking process\n\t\tthis.setState( {\n\t\t\temail_send_status: 'custom_email_plugin',\n\t\t\tsendgrid_install_status: false\n\t\t} );\n\n\t}\n\n\trender_modal_header() {\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t);\n\t}\n\n\trender_spinner() {\n\t\tif ( 'sending' == this.state.email_send_status || 'installing' == this.state.sendgrid_install_status ) {\n\t\t\treturn ( <MP_WP_Admin_Spinner /> );\n\t\t}\n\t}\n\n\trender_step_1() {\n\t\t// If we should show step 1\n\t\tif (\n\t\t\t! this.state.email_send_status ||\n\t\t\t'restart' == this.state.email_send_status ||\n\t\t\t'custom_email_plugin' == this.state.email_send_status ||\n\t\t\t'unable_to_attempt' == this.state.email_send_status ||\n\t\t\t'attempted_but_server_response_incorrect' == this.state.email_send_status\n\t\t) {\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ ( () => {\n\t\t\t\t\t\tif ( 'restart' == this.state.email_send_status ) {\n\t\t\t\t\t\t\treturn( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.restart_title );\n\t\t\t\t\t\t} else if( 'custom_email_plugin' == this.state.email_send_status ) {\n\t\t\t\t\t\t\treturn( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.custom_email_plugin_title );\n\t\t\t\t\t\t}else {\n\t\t\t\t\t\t\treturn( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.title );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) () }\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-copy-text-container' }>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tref={(input) => this.email_field = input}\n\t\t\t\t\t\t\tvalue={ this.state.email_value }\n\t\t\t\t\t\t\tonChange={ this.handle_email_change.bind( this ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ this.click_to_send_button( this.email_field ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_attempted_and_failed() {\n\t\t// If we should show step 2\n\t\tif ( 'attempted_and_failed' == this.state.email_send_status && 'installing' !== this.state.sendgrid_install_status ) {\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className='button' onClick={ this.install_sendgrid_plugin.bind( this ) }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.install_sendgrid_text }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className='button' onClick={ this.handle_use_my_own_email_plugin.bind( this ) }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.use_my_own }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_enter_sendgrid_api_key() {\n\n\t\t// Only show this section if we are done trying to test the email\n\t\tif ( 'done' !== this.state.email_send_status ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( 'succeeded' !== this.state.sendgrid_install_status ) {\n\t\t\t<div>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.sendgrid_install_failed }</div>\n\t\t}\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<a className={ 'button' } target=\"_blank\" href={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.sendgrid_url }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.register_with_sendgrid_button_text }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<a className={ 'button' } target=\"_blank\" href={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.grab_api_key_url }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.grab_your_api_key_button_text }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\t\tvar DynamicReactComponent = eval( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field.react_component );\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\t\t\tid={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field.id }\n\t\t\t\t\t\t\t\t\tslug={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field.id }\n\t\t\t\t\t\t\t\t\tprops={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field }\n\t\t\t\t\t\t\t\t\tupdate_context={ this.handle_server_response_from_sendgrid_api_save.bind( this ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} )()\n\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t)\n\n\t}\n\n\trender_test_email_successfuly_sent() {\n\t\t// If we should show step 2\n\t\tif ( 'sent' == this.state.email_send_status ) {\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className='button' onClick={ this.handle_did_not_get_email.bind( this ) }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.did_not_get_email_button_text }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t{ this.render_modal_header() }\n\t\t\t<div className={ 'mpwpadmin-lightbox-input-steps' }>\n\t\t\t\t{ this.render_spinner() }\n\t\t\t\t{ this.render_step_1() }\n\t\t\t\t{ this.render_test_email_successfuly_sent() }\n\t\t\t\t{ this.render_attempted_and_failed() }\n\t\t\t\t{ this.render_enter_sendgrid_api_key() }\n\t\t\t</div>\n\t\t\t</div>\n\t\t)\n}\n\nrender_healthy_output() {\n\treturn(\n\t\t<div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon' }>\n\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t</div>\n\t\t\t</div>\n\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t</div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t{ ( () => {\n\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} )() }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nrender_based_on_health() {\n\n\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\treturn( this.render_unhealthy_output() );\n\t}\n\n\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\treturn( this.render_healthy_output() );\n\t}\n\n}\n\nrender(){\n\n\tif ( this.state.loading ) {\n\t\treturn( <MP_WP_Admin_Spinner /> );\n\t}\n\n\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\treturn( '' );\n\t}\n\n\treturn (\n\t\t<React.Fragment>\n\t\t{ this.render_based_on_health() }\n\t\t</React.Fragment>\n\t);\n\n}\n\n};\n","window.Tip_Jar_WP_Simple_Text_Health_Check = class Tip_Jar_WP_Simple_Text_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_description }</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Setting_Wizard = class Tip_Jar_WP_Setting_Wizard extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\trender_unhealthy_output() {\n\n\t\tvar DynamicReactComponent = eval( this.props.data[this.props.health_check_key].unhealthy.component_data.input_field.react_component );\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-setting-container ' + 'mpwpadmin-setting-' + this.props.health_check_key + '-container' }>\n\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\tid={ this.props.health_check_key }\n\t\t\t\t\t\t\tslug={ this.props.health_check_key }\n\t\t\t\t\t\t\tprops={ this.props.data[this.props.health_check_key].unhealthy.component_data.input_field }\n\t\t\t\t\t\t\tclass_name={ 'mpwpadmin-setting mpwpadmin-setting-' + this.props.health_check_key }\n\t\t\t\t\t\t\tcontext_id={ null }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Do_Wizard_Health_Check = class Tip_Jar_WP_Do_Wizard_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\tcomponentDidUpdate() {\n\t\t// If this component was told we are fixing_it_again, reset the variable on the server which controls the onboarding wizard's status.\n\t\tif( this.props.fixing_it_again ) {\n\t\t\tthis.start_wizard();\n\t\t}\n\t}\n\n\tstart_wizard() {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append( 'tip_jar_wp_start_wizard_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.start_wizard_nonce );\n\n\t\tvar this_component = this;\n\n\t\t// Set the onboard wizard to be in progress\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_tip_jar_wp_start_wizard, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log( data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh mpwpadmin\n\t\t\t\t\t\t\tthis_component.props.main_component.refresh_mpwpadmin();\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t}\n\n\tset_wizard_to_later() {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append( 'tip_jar_wp_start_wizard_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.wizard_later_nonce );\n\n\t\tvar this_component = this;\n\n\t\t// Set the onboard wizard to be in progress\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_tip_jar_wp_wizard_later, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log( data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh mpwpadmin\n\t\t\t\t\t\t\tthis_component.props.main_component.refresh_mpwpadmin();\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_do_wizard_click() {\n\n\t\tthis.start_wizard();\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, { [this.props.next_lightbox_slug]: {} } );\n\n\t}\n\n\thandle_later_click() {\n\n\t\t// Set the status of the wizard to \"later\" on the server.\n\t\tthis.set_wizard_to_later();\n\n\t\t// Close the lightbox\n\t\tthis.props.main_component.set_all_current_visual_states( false, {} );\n\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<button className=\"button\" onClick={ this.handle_later_click.bind( this ) }>\n\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.do_later_button_text }\n\t\t\t\t\t</button>\n\t\t\t\t\t<button className=\"button\" onClick={ this.handle_do_wizard_click.bind( this ) }>\n\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\t// The healthy and unhealthy output are exactly the same for the Do Wizard health check.\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Complete_Wizard = class Tip_Jar_WP_Complete_Wizard extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\tcomplete_wizard() {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append( 'tip_jar_wp_complete_wizard_nonce', this.props.data[this.props.health_check_key].healthy.component_data.complete_wizard_nonce );\n\n\t\tvar this_component = this;\n\n\t\t// Set the onboard wizard to be complete\n\t\tfetch( this.props.data[this.props.health_check_key].healthy.component_data.server_api_endpoint_complete_wizard, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log( data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh mpwpadmin\n\t\t\t\t\t\t\tthis_component.props.main_component.refresh_mpwpadmin().then( () => {\n\t\t\t\t\t\t\t\t// Close the lightbox\n\t\t\t\t\t\t\t\tthis_component.props.main_component.set_all_current_visual_states( false, {} );\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_healthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<button className=\"button\" onClick={ this.complete_wizard.bind( this ) }>\n\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.complete_wizard_button_text }\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\t// The healthy and unhealthy output are exactly the same for the Complete Wizard health check.\n\t\treturn( this.render_healthy_output() );\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n"],"sourceRoot":""} -
tip-jar-wp/trunk/includes/admin/js/build/tip-jar-wp-mpwpadmin-custom-scripts.js.map
r2449460 r2953538 1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:/// /Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/index.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/misc-functions.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/stripe-connect-field.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/transaction.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/arrangement.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/transactions-in-arrangement.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/shortcode-how-to.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-as-help-lightbox.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/ssl.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/stripe-connect.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/stripe-webhook.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/wp-mail.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/simple-text.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/setting.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/do-wizard.js","webpack:////Users/philjohnston/Documents/wps/local-by-flywheel/tipjarwp/app/public/wp-content/plugins/tip-jar-wp/includes/admin/js/src/health-check-components/complete-wizard.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","window","tip_jar_wp_format_date","date_string","date","Date","replace","toLocaleDateString","tip_jar_wp_format_time","toLocaleTimeString","navigator","language","timeZoneName","split","tip_jar_wp_format_date_and_time","toLocaleString","tip_jar_wp_list_view_format_date","data","tip_jar_wp_list_view_format_date_and_time","tip_jar_wp_format_money","cents","currency","is_zero_decimal_currency","string_after","formatted_amount","Number","Intl","NumberFormat","style","format","tip_jar_wp_list_view_format_money","Tip_Jar_WP_Stripe_Connect_Field","_React$Component","props","_this","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","state","props_loaded","saved_status","in_initial_state","lightbox_open","error_code","stripe_is_connected","pending","input_delay","get_input_field_class","_assertThisInitialized","get_input_instruction_class","get_input_instruction_message","set_state","_inherits","_createClass","setState","state_key","state_value","_defineProperty","current_instruction","get_current_instruction_key","instruction_codes","instruction_type","instruction_message","button_strings","connected_text","connect_text","postData","FormData","append","relation_id","id","stripe_disconnect_nonce_id","stripe_disconnect_nonce","this_component","fetch","stripe_disconnect_url","method","credentials","headers","body","then","response","status","json","success","update_context","result","console","log","catch","err","_this2","replace_input_field_with","React","createElement","Fragment","className","href","stripe_connect_url","get_connect_button_text","onClick","disconnect_stripe","disconnect_text","MP_WP_Admin_Spinner","stripe_account_name","stripe_account_label","toggle_help_lightbox","main_component","set_all_current_visual_states","slug","render","help_text","react_component","DynamicReactComponent","eval","dynamic_react_component","component_data","render_field","MP_WP_Admin_Lightbox","title","custom_react_component","Component","Tip_Jar_WP_Admin_Single_Transaction","refunding_status","current_single_item","view_info","nonce_refund_transaction","server_api_endpoint_url_refund_transaction","setTimeout","get_single_item_from_server","raw_value","toLowerCase","type","webhook_notice","refund_string","strings","refund_transaction","refund_transaction_are_you_sure","refund_transaction_refunding","refund_transaction_pending","refund_transaction_failed","refund_transaction_succeeded","new_state","lightbox_state","event","single_item","render_refund_button","mapper","push","visual_state","handle_mpwpadmin_button_click","target","Tip_Jar_WP_Admin_Single_Arrangement","cancellation_status","nonce_cancel_arrangement","server_api_endpoint_url_cancel_arrangement","button_string","cancel_arrangement","cancel_arrangement_are_you_sure","cancel_arrangement_cancelling","cancel_arrangement_pending","cancel_arrangement_failed","cancel_arrangement_succeeded","render_cancel_button","TipJarWPTransactionsInArrangement","view_slug","transactions_in_arrangement","arrangement_id","rows","columns","current_page","total_items","items_per_page","search_term","get_rows_from_server","_this3","nonce","server_api_endpoint_url","item_to_fetch","server_api_endpoint_url_single_item","_this4","single_data_view","list_view","Math","ceil","scope","render_rows","_this5","td_mapper","first","row","handle_single_row_click","uppercase_search","onChange","handle_search_change","uppercase_items","lowercase_per","lowercase_page","min","handle_items_per_page_change","uppercase_page","max","get_total_pages","handle_page_number_change","lowercase_of","render_columns","render_search","render_pagination","render_list_table","render_list_view","Tip_Jar_Shortcode_How_To","form_mode","section_info","default","open_style","link_text","copy_text_field","createRef","ref_to_copy","select","document","execCommand","text_field_data","ref_to_use","copy_text","readOnly","ref","input","get_shortcode_text","button_text","handle_form_mode_change","handle_open_style_change","shortcode_text","default_shortcode_text","radio_buttons","current_value","checked","handle_radio_change","after_output","map","index","render_radio_buttons","radio_options","handle_link_text_change","src","icon","description","render_mode_field","render_open_style_field","render_link_text_setting","render_copy_text_element","copy_shortcode","tip_jar_wp_shortcode_how_to","render_lighbox_content","Tip_Jar_WP_Health_Check_As_Help_Lightbox","is_healthy","unhealthy","health_check_key","slug_suffix","this_lightbox_slug","Tip_Jar_WP_SSL_Health_Check","url_update_status","tip_jar_wp_update_wordpress_url_nonce","server_api_endpoint_update_wordpress_url","location","https_url","required_action_title","required_action_description","update_wordpress_url_to_https","update_failed_title","update_failed_description","render_unhealthy_action","healthy","general_config","doing_wizard","next_lightbox_slug","next_wizard_step_button_text","render_healthy_output","render_unhealthy_output","render_based_on_health","Tip_Jar_WP_Stripe_Connect_Health_Check","handle_open_status_based_on_url","set_stripe_success_redirect_on_server","refresh_mpwpadmin","Promise","resolve","reject","lightbox_visual_state","keys","redirect_to_this_lightbox","tjwp_scsr_mode","tip_jar_wp_set_tjwp_scsr_nonce","server_api_endpoint_set_stripe_connect_success_url","stripe_connect_button_text","_this6","Tip_Jar_WP_Stripe_Webhook_Health_Check","webhook_copied","set_input_field_as_ref","element","render_unhealthy_actions","steps","step1","url_to_copy","click_to_copy_button","step2","line_1","line_2","line_3","line_4","step3","input_field","handle_server_response","Tip_Jar_WP_WP_Mail_Health_Check","email_value","email_send_status","sendgrid_install_status","email_field","fixing_it_again","handle_fixing_it_again","force_to_step","email_address_to_send","refreshing_server","setInterval","clearInterval","email_address","send_test_email_nonce","server_api_endpoint_sent_test_email","wait_for_email_confirmation","attempted_and_failed","install_sendgrid_nonce","server_api_endpoint_install_sendgrid","reset_wp_mail_flag_on_server","test_email_successfuly_sent","reset_wp_mail_health_check_nonce","loading","server_api_endpoint_reset_wp_mail_health_check","send_test_email","unable_to_attempt_email","attempted_but_server_response_incorrect","email_sent","send_email","restart_title","custom_email_plugin_title","handle_email_change","click_to_send_button","install_sendgrid_plugin","install_sendgrid_text","handle_use_my_own_email_plugin","use_my_own","render_enter_sendgrid_api_key","_this7","sendgrid_install_failed","create_sendgrid_account","sendgrid_url","register_with_sendgrid_button_text","already_have_sendgrid_account","grab_api_key_url","grab_your_api_key_button_text","enter_sendgrid_api_key","handle_server_response_from_sendgrid_api_save","handle_did_not_get_email","did_not_get_email_button_text","render_modal_header","render_spinner","render_step_1","render_test_email_successfuly_sent","render_attempted_and_failed","_this8","Tip_Jar_WP_Simple_Text_Health_Check","Tip_Jar_WP_Setting_Wizard","class_name","context_id","Tip_Jar_WP_Do_Wizard_Health_Check","start_wizard","start_wizard_nonce","server_api_endpoint_tip_jar_wp_start_wizard","wizard_later_nonce","server_api_endpoint_tip_jar_wp_wizard_later","set_wizard_to_later","handle_later_click","do_later_button_text","handle_do_wizard_click","Tip_Jar_WP_Complete_Wizard","complete_wizard_nonce","server_api_endpoint_complete_wizard","complete_wizard","complete_wizard_button_text"],"mappings":"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","file":"includes/admin/js/build/tip-jar-wp-mpwpadmin-custom-scripts.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import \"./misc-functions.js\";\nimport \"./stripe-connect-field.js\";\nimport \"./transaction.js\";\nimport \"./arrangement.js\";\nimport \"./transactions-in-arrangement.js\";\nimport \"./shortcode-how-to.js\";\nimport \"./health-check-as-help-lightbox.js\";\nimport \"./health-check-components/ssl.js\";\nimport \"./health-check-components/stripe-connect.js\";\nimport \"./health-check-components/stripe-webhook.js\";\nimport \"./health-check-components/wp-mail.js\";\nimport \"./health-check-components/simple-text.js\";\nimport \"./health-check-components/setting.js\";\nimport \"./health-check-components/do-wizard.js\";\nimport \"./health-check-components/complete-wizard.js\";\n","/**\n * Format a unix timestamp (UTC) into a date (Jan 1, 1970) in the user's local timezone and locale.\n *\n * @since 1.0.0\n * @param string date_string\n * @return string\n */\nwindow.tip_jar_wp_format_date = function tip_jar_wp_format_date( date_string ) {\n\tvar date = new Date( date_string.replace(/\\s/, 'T') + 'Z' );\n\n\tif ( 'Invalid Date' == date ) {\n\t\treturn date_string;\n\t}\n\n\treturn date.toLocaleDateString();\n}\n\n/**\n * Format a unix timestamp (UTC) into a time (00:00:00) in the user's local timezone and locale.\n *\n * @since 1.0.0\n * @param string date_string\n * @return string\n */\nwindow.tip_jar_wp_format_time = function tip_jar_wp_format_time( date_string ) {\n\tvar date = new Date( date_string.replace(/\\s/, 'T') + 'Z' );\n\n\tif ( 'Invalid Date' == date ) {\n\t\treturn date_string;\n\t}\n\n\treturn date.toLocaleTimeString() + + ' (' + date.toLocaleTimeString( navigator.language,{timeZoneName:'short'}).split(' ')[2] + ')';\n}\n\n/**\n * Format a unix timestamp (UTC) into a date and time (Jan 1, 1970, 00:00:00) in the user's local timezone and locale.\n *\n * @since 1.0.0\n * @param string date_string\n * @return string\n */\nwindow.tip_jar_wp_format_date_and_time = function tip_jar_wp_format_date_and_time( date_string ) {\n\tvar date = new Date( date_string.replace(/\\s/, 'T') + 'Z' );\n\n\tif ( 'Invalid Date' == date ) {\n\t\treturn date_string;\n\t}\n\n\treturn date.toLocaleString() + ' (' + date.toLocaleTimeString( navigator.language,{timeZoneName:'short'}).split(' ')[2] + ')';\n}\n\n/**\n * Takes a date value array from a Tip Jar WP list view component, passes it to tip_jar_wp_format_date, and returns it.\n *\n * @since 1.0.0\n * @param array data\n * @return string\n */\nwindow.tip_jar_wp_list_view_format_date = function tip_jar_wp_list_view_format_date( data ) {\n\treturn tip_jar_wp_format_date( data['value'] );\n}\n\n/**\n * Takes a date value array from a Tip Jar WP list view component, passes it to tip_jar_wp_format_date, and returns it.\n *\n * @since 1.0.0\n * @param array data\n * @return string\n */\nwindow.tip_jar_wp_list_view_format_date_and_time = function tip_jar_wp_list_view_format_date( data ) {\n\treturn tip_jar_wp_format_date_and_time( data['value'] );\n}\n\n/**\n * Format a money amount properly for the user's locale.\n *\n * @since 1.0.0\n * @param int cents\n * @param string currency\n * @param bool is_zero_decimal_currency\n * @param string string_after\n * @return string\n */\nwindow.tip_jar_wp_format_money = function tip_jar_wp_format_money( cents, currency, is_zero_decimal_currency, string_after ) {\n\n\t\tif ( ! currency ) {\n\t\t\tcurrency = 'USD';\n\t\t}\n\n\t\t// If this is a zero-decimal currency\n\t\tif ( is_zero_decimal_currency ) {\n\t\t\tvar formatted_amount = Number( cents );\n\t\t}\n\t\t// If this is not a zero decimal currency\n\t\telse {\n\t\t\tvar formatted_amount = Number( cents ) / 100;\n\t\t}\n\n\t\t// Format the currency based on the user's locale. This allows commas to be used as the decimal seperator, which is technically a translation.\n\t\tformatted_amount = new Intl.NumberFormat(navigator.language, { style: 'currency', currency: currency }).format(formatted_amount);\n\n\t\treturn formatted_amount + string_after;\n}\n\n/**\n * Takes a value array from mpwpadmin's list view component, passes it to tip_jar_wp_format_visual_amount, and returns it.\n *\n * @since 1.0.0\n * @param array data\n * @return string\n */\nwindow.tip_jar_wp_list_view_format_money = function tip_jar_wp_list_view_format_money( data ) {\n\treturn tip_jar_wp_format_money( data['cents'], data['currency'], data['is_zero_decimal_currency'], data['string_after'] );\n}\n","window.Tip_Jar_WP_Stripe_Connect_Field = class Tip_Jar_WP_Stripe_Connect_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tlightbox_open: false,\n\t\t\terror_code: null,\n\t\t\tstripe_is_connected: null,\n\t\t\tpending: false\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\t};\n\n\tcomponentDidMount() {\n\n\t\tthis.setState( {\n\t\t\tprops_loaded: true,\n\t\t\tstripe_is_connected: this.props.props.stripe_is_connected,\n\t\t} );\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tget_current_instruction_key() {\n\n\t\tif ( this.state.stripe_is_connected ) {\n\t\t\treturn 'stripe_connected';\n\t\t}\n\n\t\tif ( ! this.state.stripe_is_connected ) {\n\t\t\treturn 'connect_stripe';\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\tget_connect_button_text() {\n\n\t\tif ( this.state.stripe_is_connected ) {\n\t\t\treturn this.props.props.button_strings.connected_text;\n\t\t}\n\t\tif ( ! this.state.stripe_is_connected ) {\n\t\t\treturn this.props.props.button_strings.connect_text;\n\t\t}\n\n\t}\n\n\tdisconnect_stripe() {\n\n\t\tthis.setState( {\n\t\t\tpending: true,\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_stripe_disconnect', this.props.id);\n\t\tpostData.append('mpwpadmin_stripe_disconnect_mode', this.props.props.mode);\n\t\tpostData.append('mpwpadmin_nonce_id', this.props.props.stripe_disconnect_nonce_id);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.stripe_disconnect_nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.stripe_disconnect_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The user was successfully disconnected from Stripe connect\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tstripe_is_connected: false,\n\t\t\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\t\t} );\n\n\n\t\t\t\t\t\t\t// Pass the response up the chain to the parent component, where it will handle the data as it needs it.\n\t\t\t\t\t\t\tif ( this_component.props.update_context ) {\n\t\t\t\t\t\t\t\tthis_component.props.update_context( data ).then( function( result ) {\n\t\t\t\t\t\t\t\t\tconsole.log( result );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// The user was not successfully disconnected from Stripe connect, but most likely they accidentally disconnected twice somehow. For now we'll assume the disconnection was successful anyway.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tstripe_is_connected: false,\n\t\t\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\trender_field() {\n\n\t\tif ( ! this.state.props_loaded ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\treturn this.props.props.replace_input_field_with;\n\t\t} else {\n\n\t\t\treturn (\n\t\t\t\t<React.Fragment>\n\n\t\t\t\t<div className={ 'mpwpwpadmin-link-container' }>\n\n\t\t\t\t{ (() => {\n\n\t\t\t\t\tif ( ! this.state.pending ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a className='tipjarwp-stripe-connect' href={ this.props.props.stripe_connect_url }>\n\t\t\t\t\t\t\t<span>{ this.get_connect_button_text() }</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t})() }\n\n\t\t\t\t{ (() => {\n\n\t\t\t\t\tif ( this.state.stripe_is_connected && ! this.state.pending ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<button className='tipjarwp-stripe-connect' onClick={ this.disconnect_stripe.bind( this ) }>\n\t\t\t\t\t\t\t<span>{ this.props.props.button_strings.disconnect_text }</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t})() }\n\n\t\t\t\t{ (() => {\n\n\t\t\t\t\tif ( this.state.pending ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MP_WP_Admin_Spinner />\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t})() }\n\n\t\t\t\t{(() => {\n\t\t\t\t\tif ( this.state.stripe_is_connected && ! this.state.pending && this.props.props.stripe_account_name ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-stripe-account-name-container\">\n\t\t\t\t\t\t\t\t\t<span className=\"tip-jar-wp-stripe-account-label\">{ this.props.props.stripe_account_label }</span>\n\t\t\t\t\t\t\t\t\t<span> </span>\n\t\t\t\t\t\t\t\t\t<span className=\"tip-jar-wp-stripe-account-name\">{ this.props.props.stripe_account_name }</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t})()}\n\n\t\t\t\t</div>\n\n\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t</span>\n\t\t\t\t</React.Fragment>\n\t\t\t)\n\t\t}\n\t}\n\n\ttoggle_help_lightbox() {\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t[this.props.slug]: {}\n\t\t} );\n\n\t}\n\n\trender(){\n\n\t\tif ( this.props.props.help_text.react_component ) {\n\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t/>\n\t\t} else {\n\t\t\tvar dynamic_react_component = null;\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-input-component-container' }>\n\t\t\t{ this.render_field() }\n\n\t\t\t<MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ this.props.slug }\n\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\n\t\t\t</div>\n\t\t)\n\t}\n\n};\n","window.Tip_Jar_WP_Admin_Single_Transaction = class Tip_Jar_WP_Admin_Single_Transaction extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\trefunding_status: 'initial',\n\t\t};\n\n\t};\n\n\trefund_transaction() {\n\n\t\t// Do the double check for \"are you sure you want to refund\"\n\t\tif ( 'initial' == this.state.refunding_status ) {\n\n\t\t\tthis.setState( {\n\t\t\t\trefunding_status: 'are_you_sure'\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\trefunding_status: 'refunding'\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_transaction_being_refunded', this.props.current_single_item.id.value);\n\t\tpostData.append('tip_jar_wp_nonce_refund_transaction', this.props.view_info.nonce_refund_transaction);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_refund_transaction, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\trefunding_status: 'failed'\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tif ( data.pending ) {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\trefunding_status: 'pending'\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\trefunding_status: 'refunded_succeeded'\n\t\t\t\t\t\t\t\t}, () => {\n\n\t\t\t\t\t\t\t\t\t// Wait for 1 second while the \"succeess is shown\"\n\t\t\t\t\t\t\t\t\tsetTimeout( () => {\n\n\t\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\t\trefunding_status: 'refunded'\n\t\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\t\t// Get the updated transaction now that it's been refunded (depending on whether Stripe's webhook has arrived yet)\n\t\t\t\t\t\t\t\t\t\tthis_component.props.get_single_item_from_server( this_component.props.current_single_item.id.value );\n\t\t\t\t\t\t\t\t\t}, 1000 );\n\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\trefunding_status: 'failed'\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\trefunding_status: 'failed'\n\t\t\t\t} );\n\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_refund_button() {\n\n\t\t// If this transaction was already refunded, or is a refund transaction itself, don't show a refund button\n\t\tif (\n\t\t\t'refunded' === this.props.current_single_item.status.raw_value.toLowerCase() ||\n\t\t\t'refund' === this.props.current_single_item.type.value.toLowerCase() ||\n\t\t\t// If the webhook failed, we can't refund it anyway, because Stripe never told us the charge ID.\n\t\t\tthis.props.current_single_item.webhook_notice\n\t\t) {\n\t\t\treturn ( '' );\n\t\t}\n\n\t\tvar refund_string = this.props.view_info.strings.refund_transaction;\n\t\tvar on_click = this.refund_transaction.bind( this );\n\n\t\tif ( 'are_you_sure' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_are_you_sure;\n\t\t}\n\n\t\tif ( 'refunding' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_refunding;\n\t\t\ton_click = null;\n\t\t}\n\n\t\tif ( 'pending' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_pending;\n\t\t}\n\n\t\tif ( 'failed' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_failed;\n\t\t}\n\n\t\tif ( 'refunded_succeeded' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_succeeded;\n\t\t\ton_click = null;\n\t\t}\n\n\t\treturn( <button className=\"button\" onClick={ this.refund_transaction.bind( this ) }>{ refund_string }</button> );\n\n\t}\n\n\thandle_mpwpadmin_button_click( new_state, lightbox_state, event ) {\n\t\tthis.props.main_component.set_all_current_visual_states( new_state, lightbox_state );\n\t}\n\n\trender(){\n\n\t\tvar single_item = this.props.current_single_item;\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t<div className={ 'mpwpwadmin-list-view-single-data-item-controls' }>\n\t\t\t{ this.render_refund_button() }\n\t\t\t</div>\n\t\t\t<div className=\"mpwpadmin-single-data\">\n\t\t\t{ (() => {\n\n\t\t\t\tvar mapper = [];\n\t\t\t\tvar value;\n\n\t\t\t\t// Loop through all of the items to show about this item\n\t\t\t\tfor (var key in single_item) {\n\t\t\t\t\tmapper.push( <div className={ 'mpwpadmin-list-view-single-data-item' } key={ key }>{\n\n\t\t\t\t\t\t// Render the output for this data value about the current single item (which was selected from the list)\n\t\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\t\tif ( single_item[key]['show_in_single_data_view'] ) {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-title' }>\n\t\t\t\t\t\t\t\t\t{ single_item[key]['title'] }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-value' }>\n\t\t\t\t\t\t\t\t\t{ ( () => {\n\n\t\t\t\t\t\t\t\t\t\t// Set the visual value\n\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\tvalue = eval( single_item[key]['value_format_function'] )( single_item[key] )\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tvalue = single_item[key]['value']\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// If an mpwpadmin state should be fired when the is clicked\n\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['mpwpadmin_visual_state_onclick'] || single_item[key]['mpwpadmin_lightbox_state_onclick'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar visual_state = single_item[key]['mpwpadmin_visual_state_onclick'] ? single_item[key]['mpwpadmin_visual_state_onclick'] : false;\n\t\t\t\t\t\t\t\t\t\t\tvar lightbox_state = single_item[key]['mpwpadmin_lightbox_state_onclick'] ? single_item[key]['mpwpadmin_lightbox_state_onclick'] : false;\n\n\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<a onClick={ this.handle_mpwpadmin_button_click.bind( this, visual_state, lightbox_state ) }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// If a link should be directed to upon click on this item\n\t\t\t\t\t\t\t\t\t\telse if ( single_item[key]['link_url'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar target = single_item[key]['link_target'] ? single_item[key]['link_url'] : null;\n\n\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<a target={ target } href={ single_item[key]['link_url'] }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t})() }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ( '' );\n\n\t\t\t\t\t\t})()\n\n\t\t\t\t\t}</div> );\n\t\t\t\t}\n\n\t\t\t\treturn mapper;\n\t\t\t})() }\n\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n};\n","window.Tip_Jar_WP_Admin_Single_Arrangement = class Tip_Jar_WP_Admin_Single_Arrangement extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tcancellation_status: 'initial',\n\t\t};\n\n\t};\n\n\tcancel_arrangement() {\n\n\t\t// Do the double check for \"are you sure you want to refund\"\n\t\tif ( 'initial' == this.state.cancellation_status ) {\n\n\t\t\tthis.setState( {\n\t\t\t\tcancellation_status: 'are_you_sure'\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tcancellation_status: 'cancelling'\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_arrangement_being_cancelled', this.props.current_single_item.id.value);\n\t\tpostData.append('tip_jar_wp_nonce_cancel_arrangement', this.props.view_info.nonce_cancel_arrangement);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_cancel_arrangement, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\tcancellation_status: 'failed'\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tif ( data.pending ) {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\tcancellation_status: 'pending'\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\tcancellation_status: 'cancellation_succeeded'\n\t\t\t\t\t\t\t\t}, () => {\n\n\t\t\t\t\t\t\t\t\t// Wait for 1 second while the \"succeess is shown\"\n\t\t\t\t\t\t\t\t\tsetTimeout( () => {\n\n\t\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\t\tcancellation_status: 'cancelled'\n\t\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\t\t// Get the updated arrangement now that it's been cancelled (depending on whether Stripe's webhook has arrived yet)\n\t\t\t\t\t\t\t\t\t\tthis_component.props.get_single_item_from_server( this_component.props.current_single_item.id.value );\n\t\t\t\t\t\t\t\t\t}, 1000 );\n\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcancellation_status: 'failed'\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\tcancellation_status: 'failed'\n\t\t\t\t} );\n\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_cancel_button() {\n\n\t\t// If this arrangement was already cancelled, don't show a refund button\n\t\tif (\n\t\t\t'cancelled' === this.state.cancellation_status ||\n\t\t\t'cancelled' === this.props.current_single_item.status.value.toLowerCase() ||\n\t\t\t// If the webhook failed, we can't cancel it anyway, because Stripe never told us the sub ID.\n\t\t\tthis.props.current_single_item.webhook_notice\n\t\t) {\n\t\t\treturn ( '' );\n\t\t}\n\n\t\tvar button_string = this.props.view_info.strings.cancel_arrangement;\n\t\tvar on_click = this.cancel_arrangement.bind( this );\n\n\t\tif ( 'are_you_sure' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_are_you_sure;\n\t\t}\n\n\t\tif ( 'cancelling' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_cancelling;\n\t\t\ton_click = null;\n\t\t}\n\n\t\tif ( 'pending' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_pending;\n\t\t}\n\n\t\tif ( 'failed' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_failed;\n\t\t}\n\n\t\tif ( 'cancellation_succeeded' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_succeeded;\n\t\t\ton_click = null;\n\t\t}\n\n\t\treturn( <button className=\"button\" onClick={ this.cancel_arrangement.bind( this ) }>{ button_string }</button> );\n\n\t}\n\n\thandle_mpwpadmin_button_click( new_state, lightbox_state, event ) {\n\t\tthis.props.main_component.set_all_current_visual_states( new_state, lightbox_state );\n\t}\n\n\trender(){\n\n\t\tvar single_item = this.props.current_single_item;\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpwadmin-list-view-single-data-item-controls' }>\n\t\t\t\t\t{ this.render_cancel_button() }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mpwpadmin-single-data\">\n\t\t\t\t\t{ (() => {\n\n\t\t\t\t\t\tvar mapper = [];\n\n\t\t\t\t\t\t// Loop through all of the items to show about this item\n\t\t\t\t\t\tfor (var key in single_item) {\n\t\t\t\t\t\t\tmapper.push( <React.Fragment key={ key }>{\n\n\t\t\t\t\t\t\t\t// Render the output for this data value about the current single item (which was selected from the list)\n\t\t\t\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\t\t\t\tif ( single_item[key]['show_in_single_data_view'] ) {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item' }>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-title' }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ single_item[key]['title'] }\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-value' }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ ( () => {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Set the visual value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue = eval( single_item[key]['value_format_function'] )( single_item[key] )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue = single_item[key]['value']\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If an mpwpadmin state should be fired when the is clicked\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['mpwpadmin_visual_state_onclick'] || single_item[key]['mpwpadmin_lightbox_state_onclick'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar visual_state = single_item[key]['mpwpadmin_visual_state_onclick'] ? single_item[key]['mpwpadmin_visual_state_onclick'] : false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar lightbox_state = single_item[key]['mpwpadmin_lightbox_state_onclick'] ? single_item[key]['mpwpadmin_lightbox_state_onclick'] : false;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a onClick={ this.handle_mpwpadmin_button_click.bind( this, visual_state, lightbox_state ) }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If a link should be directed to upon click on this item\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telse if ( single_item[key]['link_url'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar target = single_item[key]['link_target'] ? single_item[key]['link_url'] : null;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a target={ target } href={ single_item[key]['link_url'] }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t})() }\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn ( '' );\n\n\t\t\t\t\t\t\t\t})()\n\n\t\t\t\t\t\t\t}</React.Fragment> );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn mapper;\n\t\t\t\t\t})() }\n\t\t\t\t</div>\n\t\t\t\t<TipJarWPTransactionsInArrangement\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tview_slug={ 'transactions' }\n\t\t\t\t\tview_info={ this.props.view_info.transactions_in_arrangement }\n\t\t\t\t\tarrangement_id={ this.props.current_single_item.id.value }\n\t\t\t\t/>\n\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n};\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\nwindow.TipJarWPTransactionsInArrangement = class TipJarWPTransactionsInArrangement extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t\tcurrent_page: 1,\n\t\t\ttotal_items: 1,\n\t\t\titems_per_page: 1,\n\t\t\tsearch_term: '',\n\t\t\tcurrent_single_item: null,\n\t\t\tarrangement_id: null\n\t\t}\n\n\t\tthis.get_single_item_from_server = this.get_single_item_from_server.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\n\t\tthis.setState( {\n\t\t\tarrangement_id: this.props.arrangement_id,\n\t\t\ttotal_items: this.props.view_info.total_items,\n\t\t\titems_per_page: this.props.view_info.items_per_page,\n\t\t\trows: this.props.view_info.rows,\n\t\t\tcolumns: this.props.view_info.columns,\n\t\t}, () => {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\tcomponentDidUpdate() {\n\t\t// If the arrangement has changed, update the list of transactions to show.\n\t\tif ( this.state.arrangement_id !== this.props.arrangement_id ){\n\t\t\tthis.setState({\n\t\t\t\tarrangement_id: this.props.arrangement_id,\n\t\t\t}, () => {\n\t\t\t\tthis.get_rows_from_server();\n\t\t\t} );\n\t\t}\n\t}\n\n\tget_rows_from_server() {\n\n\t\tif ( ! this.state.items_per_page ) {\n\t\t\tvar items_per_page = 20;\n\t\t} else {\n\t\t\tvar items_per_page = this.state.items_per_page;\n\t\t}\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_list_view_id', this.props.view_slug);\n\t\tpostData.append('mpwpadmin_list_view_search_term', this.state.search_term);\n\t\tpostData.append('mpwpadmin_list_view_page_id', this.state.current_page);\n\t\tpostData.append('mpwpadmin_items_per_page', items_per_page);\n\t\tpostData.append('mpwpadmin_list_view_items_per_page', this.state.items_per_page);\n\t\tpostData.append('tip_jar_wp_arrangement_id', this.state.arrangement_id);\n\t\tpostData.append('mpwpadmin_nonce', this.props.view_info.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcolumns: data.columns,\n\t\t\t\t\t\t\t\trows: data.rows,\n\t\t\t\t\t\t\t\ttotal_items: data.total_items\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\trows: 'Unable to fetch rows...'\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_page_number_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tcurrent_page: event.target.value,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\tget_single_item_from_server( item_to_fetch ) {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_list_view_id', this.props.view_slug);\n\t\tpostData.append('mpwpadmin_list_view_item_id', item_to_fetch);\n\t\tpostData.append('mpwpadmin_nonce', this.props.view_info.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_single_item, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success && data.current_single_item ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcurrent_single_item: data.current_single_item,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcurrent_single_item: 'none_found'\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_items_per_page_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tcurrent_page: 1,\n\t\t\titems_per_page: event.target.value,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\thandle_search_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tsearch_term: event.target.value,\n\t\t\tcurrent_page: 1,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\thandle_single_row_click( single_item, event ) {\n\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {\n\t\t\t\tsingle_data_view: {\n\t\t\t\t\t[single_item['id']['value']]: {} // Use the value in the first column as the URL slug\n\t\t\t\t}\n\t\t\t}\n\t\t} ).then( () => {\n\t\t\tthis.setState( {\n\t\t\t\tcurrent_single_item: single_item\n\t\t\t} );\n\t\t} );\n\n\t}\n\n\thandle_list_view_button_click(){\n\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {\n\t\t\t\tlist_view: {}\n\t\t\t}\n\t\t} );\n\n\t}\n\n\tget_total_pages() {\n\t\treturn Math.ceil( this.state.total_items / this.state.items_per_page );\n\t}\n\n\trender_columns( columns ) {\n\n\t\tif ( ! columns ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar mapper = [];\n\n\t\t// Loop through each column\n\t\tfor (var key in columns) {\n\t\t\tmapper.push(\n\t\t\t\t<div key={ key } scope=\"col\" className=\"mpwpadmin-list-view-column\">\n\t\t\t\t\t<span>{ columns[key] }</span>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn mapper;\n\t}\n\n\trender_rows( rows, columns ) {\n\n\t\tvar mapper = [];\n\t\tvar td_mapper = [];\n\n\t\tif ( ! rows || 0 == this.state.total_items ) {\n\n\t\t\tvar first = true;\n\n\t\t\tfor (var key in columns) {\n\t\t\t\ttd_mapper.push(\n\n\t\t\t\t\t// Render the contents of this table cell\n\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\tif ( first ) {\n\n\t\t\t\t\t\t\tfirst = false;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t{ 'None Found' }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfirst = false;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t{ '' }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})()\n\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add all of that combined data to the main mapper array\n\t\t\tmapper.push(\n\t\t\t\t<div key={ 'none_found' } className=\"mpwpadmin-list-view-row\">\n\t\t\t\t{ td_mapper }\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\treturn mapper;\n\t\t}\n\n\t\t// Loop through each row\n\t\tfor (var row in rows) {\n\n\t\t\t// Combine all of the table data (cells in this row)\n\t\t\tfor (var key in columns) {\n\t\t\t\ttd_mapper.push(\n\n\t\t\t\t\t// Render the contents of this table cell\n\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\tif ( rows[row][key]['show_in_list_view'] ) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t<button onClick={ this.handle_single_row_click.bind( this, rows[row] ) }>\n\t\t\t\t\t\t\t\t\t{(() => {\n\t\t\t\t\t\t\t\t\t\tif ( rows[row][key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\treturn eval( rows[row][key]['value_format_function'] )( rows[row][key] )\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn rows[row][key]['value']\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})()}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})()\n\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add all of that combined data to the main mapper array\n\t\t\tmapper.push(\n\t\t\t\t<div key={ row } className=\"mpwpadmin-list-view-table-row\">\n\t\t\t\t\t{ td_mapper }\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\t// Get the row data array ready for a new row\n\t\t\ttd_mapper = [];\n\t\t}\n\n\t\treturn mapper;\n\n\t}\n\n\trender_search() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpwadmin-list-view-search\">\n\t\t\t<span>{ this.props.view_info.strings.uppercase_search }</span>\n\t\t\t<input type=\"text\" value={ this.state.search_term } onChange={ this.handle_search_change.bind( this ) } />\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_pagination() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpwadmin-list-view-pagination-controls\">\n\t\t\t\t<div className=\"mpwpwadmin-list-view-items-per-page\">\n\t\t\t\t\t<span>{ this.props.view_info.strings.uppercase_items + ' ' + this.props.view_info.strings.lowercase_per + ' ' + this.props.view_info.strings.lowercase_page }</span>\n\t\t\t\t\t<input type=\"number\" min={ 1 } onChange={ this.handle_items_per_page_change.bind( this ) } value={ this.state.items_per_page } />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mpwpwadmin-list-view-pagination\">\n\t\t\t\t\t<span>{ this.props.view_info.strings.uppercase_page }</span>\n\t\t\t\t\t<input type=\"number\" min={ 1 } max={ this.get_total_pages() } onChange={ this.handle_page_number_change.bind( this ) } value={ this.state.current_page } />\n\t\t\t\t\t<span>{ ' ' + this.props.view_info.strings.lowercase_of + ' ' + this.get_total_pages() }</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_list_table() {\n\n\t\tif ( this.state.columns && this.state.rows ) {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-list-view-table' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-header' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-row' }>\n\t\t\t\t\t\t\t{ this.render_columns( this.state.columns ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-body' }>\n\t\t\t\t\t\t{ this.render_rows( this.state.rows, this.state.columns ) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t} else {\n\t\t\treturn <MP_WP_Admin_Spinner />\n\t\t}\n\n\t}\n\n\trender_list_view() {\n\n\t\treturn(\n\t\t\t<div className=\"mpwpadmin-list-view\">\n\t\t\t\t<div className=\"mpwpadmin-list-view-controls\">\n\n\t\t\t\t\t{ this.render_search() }\n\n\t\t\t\t\t{ this.render_pagination() }\n\n\t\t\t\t</div>\n\n\t\t\t\t{ this.render_list_table() }\n\n\t\t\t\t<div className=\"mpwpadmin-list-view-controls\">\n\n\t\t\t\t\t{ this.render_search() }\n\n\t\t\t\t\t{ this.render_pagination() }\n\n\t\t\t\t</div>\n\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-list-view tip-jar-wp-transactions-in-arrangement' }>\n\n\t\t\t<div className=\"mpwpadmin-breadcrumb\">\n\t\t\t<h2>Transactions in this Plan</h2>\n\t\t\t</div>\n\n\t\t\t<div className=\"mpwpadmin-list-view-content-area\">\n\n\t\t\t{ this.render_list_view() }\n\n\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n}\n","window.Tip_Jar_Shortcode_How_To = class Tip_Jar_Shortcode_How_To extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tform_mode: this.props.section_info.component_data.form_mode.default,\n\t\t\topen_style: this.props.section_info.component_data.open_style.default,\n\t\t\tlink_text: this.props.section_info.component_data.link_text.default // \"Leave a tip\"\n\t\t}\n\n\t\tthis.copy_text_field = React.createRef();\n\n\t};\n\n\tcopy_text( ref_to_copy ) {\n\t\tref_to_copy.select();\n\t\tdocument.execCommand('copy');\n\t}\n\n\trender_copy_text_element( text_field_data, ref_to_use ) {\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpadmin-input-component-container' } onClick={ this.copy_text.bind( this, this[ref_to_use] ) }>\n\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ text_field_data.title }</div>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\treadOnly\n\t\t\t\t\t\tref={(input) => this[ref_to_use] = input}\n\t\t\t\t\t\tvalue={ this.get_shortcode_text() }\n\t\t\t\t\t/>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button onClick={ this.copy_text.bind( this, this[ref_to_use] ) } className=\"button\">{ text_field_data.button_text }</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n\thandle_radio_change( name, event ) {\n\n\t\tif ( 'form_mode' == name ) {\n\t\t\tthis.handle_form_mode_change( event );\n\t\t}\n\n\t\tif ( 'open_style' == name ) {\n\t\t\tthis.handle_open_style_change( event );\n\t\t}\n\t}\n\n\thandle_form_mode_change( event ) {\n\t\tthis.setState( {\n\t\t\tform_mode: event.target.value\n\t\t} );\n\t}\n\n\thandle_open_style_change( event ) {\n\t\tthis.setState( {\n\t\t\topen_style: event.target.value\n\t\t} );\n\t}\n\n\thandle_link_text_change( event ) {\n\t\tthis.setState( {\n\t\t\tlink_text: event.target.value\n\t\t} );\n\t}\n\n\tget_shortcode_text() {\n\n\t\tvar shortcode_text = this.props.section_info.component_data.strings.default_shortcode_text;\n\n\t\tif ( 'form' == this.state.form_mode ) {\n\t\t\tshortcode_text = '[tipjarwp]';\n\t\t}\n\n\t\tif ( 'button' == this.state.form_mode ) {\n\t\t\tshortcode_text = '[tipjarwp mode=\"button\" link_text=\"' + this.state.link_text + '\" open_style=\"' + this.state.open_style + '\"]';\n\t\t}\n\n\t\tif ( 'text_link' == this.state.form_mode ) {\n\t\t\tshortcode_text = '[tipjarwp mode=\"text_link\" link_text=\"' + this.state.link_text + '\" open_style=\"' + this.state.open_style + '\"]';\n\t\t}\n\n\t\treturn shortcode_text;\n\t}\n\n\trender_radio_buttons( radio_buttons, name, current_value ) {\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in radio_buttons) {\n\n\t\t\tmapper.push(\n\t\t\t\t<div key={ key } className={ \"tip-jar-wp-radio-button-container\" + ( key == this.state.form_mode ? ' tip-jar-wp-radio-current' : '' ) }>\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<div className=\"tip-jar-wp-radio-button-outer\">\n\t\t\t\t\t\t\t<div className=\"tip-jar-wp-radio-button-inner\">\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype={ 'radio' }\n\t\t\t\t\t\t\t\t\tvalue={ key }\n\t\t\t\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\t\t\t\tchecked={ key == current_value ? true : false }\n\t\t\t\t\t\t\t\t\tonChange={ this.handle_radio_change.bind( this, name ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-radio-button-after\">\n\t\t\t\t\t\t\t\t\t{ radio_buttons[key].after_output }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t)\n\n\t\t}\n\n\t\t// This lets us output the inputs one by one\n\t\treturn (\n\t\t\t<div className=\"tip-jar-wp-radio-buttons-container\">\n\t\t\t{\n\t\t\t\tmapper.map((radio_buttons, index) => {\n\t\t\t\t\treturn radio_buttons;\n\t\t\t\t})\n\t\t\t}\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_mode_field() {\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t<div className=\"mpwpadmin-input-component-container mpwpwadmin-radio-container\">\n\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ this.props.section_info.component_data.form_mode.title }</div>\n\t\t\t\t\t{ this.render_radio_buttons( this.props.section_info.component_data.form_mode.radio_options, 'form_mode', this.state.form_mode ) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_link_text_setting() {\n\n\t\tif (\n\t\t\t'button' == this.state.form_mode ||\n\t\t\t'text_link' == this.state.form_mode\n\t\t) {\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-input-component-container\">\n\t\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ this.props.section_info.component_data.link_text.title }</div>\n\t\t\t\t\t\t<input type=\"text\" value={ this.state.link_text } onChange={ this.handle_link_text_change.bind( this ) } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\trender_open_style_field() {\n\t\tif (\n\t\t\t'button' == this.state.form_mode ||\n\t\t\t'text_link' == this.state.form_mode\n\t\t) {\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-input-component-container mpwpwadmin-radio-container\">\n\t\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ this.props.section_info.component_data.open_style.title }</div>\n\t\t\t\t\t\t{ this.render_radio_buttons( this.props.section_info.component_data.open_style.radio_options, 'open_style', this.state.open_style ) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\trender_lighbox_content() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t<img src={ this.props.section_info.icon } />\n\t\t\t</div>\n\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.section_info.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.section_info.component_data.strings.description }\n\t\t\t\t</div>\n\n\t\t\t\t{ this.render_mode_field() }\n\n\t\t\t\t{ this.render_open_style_field() }\n\n\t\t\t\t{ this.render_link_text_setting() }\n\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ this.render_copy_text_element( this.props.section_info.component_data.copy_shortcode, 'copy_text_field' ) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender(){\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\n\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { tip_jar_wp_shortcode_how_to: {} } ) }>How to show a tip form</button>\n\t\t\t\t<MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ 'tip_jar_wp_shortcode_how_to' }\n\t\t\t\t\tmode={ 'custom_react_component' }\n\t\t\t\t\tcustom_react_component={ this.render_lighbox_content() }\n\t\t\t\t/>\n\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","// This component acts as a wrapper to map data and load a Health Check component as the \"Help\" lightbox for an input field.\nwindow.Tip_Jar_WP_Health_Check_As_Help_Lightbox = class Tip_Jar_WP_Health_Check_As_Help_Lightbox extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n if (!this.props.data) {\n return \"\";\n }\n\n var DynamicReactComponent = eval(this.props.data.react_component);\n var dynamic_react_component = (\n <DynamicReactComponent\n main_component={this.props.main_component}\n data={{\n [this.props.data.key]: {\n is_healthy: false,\n unhealthy: {\n mode: \"live_site\",\n component_data: this.props.data\n }\n }\n }}\n health_check_key={this.props.data.key}\n slug_suffix={\"_help\"}\n this_lightbox_slug={this.props.data.key + \"_help\"}\n />\n );\n\n return dynamic_react_component;\n }\n};\n","window.Tip_Jar_WP_SSL_Health_Check = class Tip_Jar_WP_SSL_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\turl_update_status: false\n\t\t}\n\t};\n\n\tupdate_wordpress_url_to_https() {\n\n\t\tvar this_component = this;\n\n\t\tthis_component.setState( {\n\t\t\turl_update_status: 'attempting_update',\n\t\t});\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_update_wordpress_url_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.tip_jar_wp_update_wordpress_url_nonce );\n\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_update_wordpress_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh this page but over https\n\t\t\t\t\t\t\twindow.location.href = data.https_url;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\n\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t});\n\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_unhealthy_action() {\n\n\t\t// If no certificate exists\n\t\tif ( 'no_certificate_exists' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_description }</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\t// If a certificate does exist, but we just aren't running over https\n\t\tif ( 'certificate_exists' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\n\t\t\tif ( ! this.state.url_update_status ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className=\"button\" onClick={ this.update_wordpress_url_to_https.bind( this ) }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.button_text }</button>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( 'attempting_update' == this.state.url_update_status ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<MP_WP_Admin_Spinner />\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( 'unable_to_update' == this.state.url_update_status ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.update_failed_title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.update_failed_description }</div>\n\t\t\t\t\t\t<button className=\"button\" onClick={ this.update_wordpress_url_to_https.bind( this ) }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.button_text }</button>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t{ this.render_unhealthy_action() }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Stripe_Connect_Health_Check = class Tip_Jar_WP_Stripe_Connect_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tlightbox_open: false\n\t\t}\n\t};\n\n\tcomponentDidMount() {\n\t\tthis.handle_open_status_based_on_url().then( () => {\n\t\t\t// If lightbox containing this component is open in the lightbox views, set the redirect URL on the server so it opens this lightbox\n\t\t\tthis.set_stripe_success_redirect_on_server( this.state.lightbox_open );\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\tthis.handle_open_status_based_on_url().then( () => {\n\n\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\n\t\t\t// If lightbox containing this component is open in the lightbox views, set the redirect URL on the server so it opens this lightbox\n\t\t\tthis.set_stripe_success_redirect_on_server( this.state.lightbox_open );\n\t\t} );\n\n\t}\n\n\thandle_open_status_based_on_url() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// If a lightbox is open based on the setting in the main component\n\t\t\tif ( this.props.main_component && this.props.main_component.state.lightbox_visual_state ) {\n\t\t\t\t// Check if that lightbox is us!\n\t\t\t\tif ( this.props.this_lightbox_slug == Object.keys(this.props.main_component.state.lightbox_visual_state)[0] ) {\n\n\t\t\t\t\t// The lightbox holding this component is showing. Therefore, set that status in this component as well.\n\t\t\t\t\tif ( ! this.state.lightbox_open ) {\n\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\tlightbox_open: true\n\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\tresolve( this.state );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If the current lightbox in the URL is not us, close this one.\n\t\t\t\telse {\n\t\t\t\t\tif ( this.state.lightbox_open ) {\n\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\tlightbox_open: false\n\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\tresolve( this.state );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tset_stripe_success_redirect_on_server( redirect_to_this_lightbox ) {\n\n\t\tif ( ! redirect_to_this_lightbox ) {\n\t\t\tvar tjwp_scsr_mode = '';\n\t\t} else {\n\t\t\tvar tjwp_scsr_mode = this.props.health_check_key;\n\t\t}\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_set_tjwp_scsr', tjwp_scsr_mode);\n\t\tpostData.append('tip_jar_wp_lightbox_suffix', this.props.slug_suffix);\n\t\tpostData.append('tip_jar_wp_set_tjwp_scsr_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.tip_jar_wp_set_tjwp_scsr_nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_set_stripe_connect_success_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} );\n\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t{ ( () => {\n\t\t\t\t\tif ( this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text ) {\n\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t\t<a className='tipjarwp-stripe-connect' href={ this.props.data[this.props.health_check_key].unhealthy.component_data.stripe_connect_url }>\n\t\t\t\t\t\t\t\t\t<span>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text }</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} ) () }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Stripe_Webhook_Health_Check = class Tip_Jar_WP_Stripe_Webhook_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\twebhook_copied: false\n\t\t}\n\n\t\tthis.copy_text_field = React.createRef();\n\t\tthis.set_input_field_as_ref = this.set_input_field_as_ref.bind( this );\n\t};\n\n\tget_connect_button_text() {\n\t\treturn this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text;\n\t}\n\n\tcopy_text( ref_to_copy ) {\n\t\tif ( ! ref_to_copy ) {\n\t\t\treturn;\n\t\t}\n\t\tref_to_copy.select();\n document.execCommand('copy');\n this.setState({ webhook_copied: true });\n\t}\n\n\tset_input_field_as_ref( element ) {\n\t\tthis.copy_text_field = element;\n\t}\n\n\tclick_to_copy_button() {\n\n\t\tif ( this.state.webhook_copied ) {\n\t\t\treturn( <button onClick={ this.copy_text.bind( this, this.copy_text_field ) } className=\"button\">{ 'Copied!' }</button> );\n\t\t} else {\n\t\t\treturn( <button onClick={ this.copy_text.bind( this, this.copy_text_field ) } className=\"button\">{ 'Click to copy' }</button> );\n\t\t}\n\n\t}\n\n\thandle_server_response( data ) {\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Wait for 1 second then refresh\n\t\t\tsetTimeout( () => {\n\t\t\t\tif ( data.success ) {\n\t\t\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}, 300 );\n\n\t\t} )\n\t}\n\n\trender_unhealthy_actions() {\n\n\t\tif ( 'localhost' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tif ( 'live_site' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-steps' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.description }</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-copy-text-container' }>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t\t\tref={ this.set_input_field_as_ref }\n\t\t\t\t\t\t\t\t\tvalue={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.url_to_copy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ this.click_to_copy_button() }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_1 }</li>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_2 }</li>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_3 }</li>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_4 }</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t<a className='tipjarwp-stripe-connect' target=\"_blank\" href={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.stripe_connect_url }>\n\t\t\t\t\t\t\t\t<span>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.stripe_connect_button_text }</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.description }</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\t\t\t\tvar DynamicReactComponent = eval( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field.react_component );\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\t\t\t\t\tid={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field.id }\n\t\t\t\t\t\t\t\t\t\t\tslug={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field.id }\n\t\t\t\t\t\t\t\t\t\t\tprops={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field }\n\t\t\t\t\t\t\t\t\t\t\tupdate_context={ this.handle_server_response.bind( this ) }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} )()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t{ this.render_unhealthy_actions() }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_WP_Mail_Health_Check = class Tip_Jar_WP_WP_Mail_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\temail_value: '',\n\t\t\temail_send_status: false,\n\t\t\tsendgrid_install_status: false\n\t\t}\n\n\t\tthis.email_field = React.createRef();\n\n\t};\n\n\tcomponentDidMount() {\n\n\t\t// If this component was told we are fixing_it_again, reset the variables on the server just in case we are re-testing the email, and it was previously successful.\n\t\tif( this.props.fixing_it_again ) {\n\t\t\tthis.handle_fixing_it_again();\n\t\t}\n\n\t\tvar force_to_step = this.props.data[this.props.health_check_key].unhealthy.component_data.force_to_step;\n\n\t\t// If we should force to a step\n\t\tif ( force_to_step ) {\n\t\t\tif ( 'test_email_successfuly_sent' == force_to_step ) {\n\t\t\t\tthis.setState( {\n\t\t\t\t\temail_send_status: 'sent'\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tthis.setState( {\n\t\t\temail_value: this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.email_address_to_send\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\t// If this component was told we are fixing_it_again, reset the variables on the server just in case we are re-testing the email, and it was previously successful.\n\t\tif( this.props.fixing_it_again ) {\n\t\t\tthis.handle_fixing_it_again();\n\t\t}\n\n\t}\n\n\twait_for_email_confirmation() {\n\n\t\t// Check the server every 3 seconds to see if they confirmed on a phone, or different device.\n\t\tvar refreshing_server = setInterval( () => {\n\t\t\tif ( 'sent' == this.state.email_send_status ) {\n\n\t\t\t\t// If we are still waiting (still unhealthy)\n\t\t\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\t\t\t// Check the server again\n\t\t\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\t\t\t\t}\n\t\t\t\t// If the wp_mail check is suddenly healthy, stop checking for updates\n\t\t\t\telse {\n\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\temail_send_status: 'succeeded'\n\t\t\t\t\t} );\n\n\t\t\t\t\tclearInterval( refreshing_server );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the status of the test email is no longer \"sent\", stop checking the server for updates.\n\t\t\telse {\n\t\t\t\tclearInterval( refreshing_server );\n\t\t\t}\n\t\t}, 4000 );\n\n\t\t// Only do this waiting/refreshing for 2 minutes. This results in a maximum of 30 checks over 2 minutes.\n\t\tsetTimeout( () => {\n\t\t\tclearInterval( refreshing_server );\n\t\t}, 120000 );\n\n\t}\n\n\tget_connect_button_text() {\n\t\treturn this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text;\n\t}\n\n\tsend_email( email_address ) {\n\n\t\tthis.setState( {\n\t\t\temail_send_status: 'sending'\n\t\t});\n\n\t\tvar this_component = this;\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_email', email_address );\n\t\tpostData.append('tip_jar_wp_lightbox_suffix', this.props.slug_suffix );\n\t\tpostData.append('tip_jar_wp_send_test_email_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.send_test_email_nonce );\n\n\t\t// Send a test email\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.server_api_endpoint_sent_test_email, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\temail_send_status: 'unable_to_attempt_send',\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\temail_send_status: 'sent',\n\t\t\t\t\t\t\t}, () => {\n\n\t\t\t\t\t\t\t\tthis_component.wait_for_email_confirmation();\n\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\temail_send_status: 'attempted_and_failed',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\n\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\temail_send_status: 'attempted_but_server_response_incorrect',\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\temail_send_status: 'unable_to_attempt',\n\t\t\t\t});\n\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tinstall_sendgrid_plugin() {\n\n\t\tthis.setState( {\n\t\t\tsendgrid_install_status: 'installing'\n\t\t});\n\n\t\tvar this_component = this;\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_install_sendgrid_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.install_sendgrid_nonce );\n\n\t\t// Send a test email\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.server_api_endpoint_install_sendgrid, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\tsendgrid_install_status: 'failed',\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\temail_send_status: 'done',\n\t\t\t\t\t\t\t\tsendgrid_install_status: 'succeeded',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsendgrid_install_status: 'attempted_and_failed',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\n\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\tsendgrid_install_status: 'attempted_but_server_response_incorrect',\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\tsendgrid_install_status: 'unable_to_attempt',\n\t\t\t\t});\n\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\thandle_fixing_it_again() {\n\n\t\tconsole.log( 'sdgsgsgsdg' );\n\n\t\tthis.reset_wp_mail_flag_on_server().then( () => {\n\n\t\t\t// Reset all of the local state variables to their beginning statuses\n\t\t\tthis.setState( {\n\t\t\t\temail_value: this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.email_address_to_send,\n\t\t\t\temail_send_status: false,\n\t\t\t\tsendgrid_install_status: false\n\t\t\t} );\n\n\t\t} );\n\t}\n\n\thandle_did_not_get_email() {\n\n\t\tthis.setState( {\n\t\t\temail_send_status: 'attempted_and_failed'\n\t\t});\n\n\t\tthis.reset_wp_mail_flag_on_server();\n\t}\n\n\treset_wp_mail_flag_on_server() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Format the data that we'll send to the server\n\t\t\tvar postData = new FormData();\n\t\t\tpostData.append('tip_jar_wp_reset_wp_mail_health_check_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.reset_wp_mail_health_check_nonce );\n\n\t\t\tthis.setState( {\n\t\t\t\tloading: true\n\t\t\t} );\n\n\t\t\t// Set the test email as being not received\n\t\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.server_api_endpoint_reset_wp_mail_health_check, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tmode: \"same-origin\",\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t\theaders: {},\n\t\t\t\tbody: postData\n\t\t\t} ).then( () => {\n\t\t\t\tthis.props.main_component.refresh_mpwpadmin().then( () => {\n\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\tloading: false\n\t\t\t\t\t} );\n\n\t\t\t\t\tresolve();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t} );\n\t}\n\n\thandle_email_change( event ) {\n\t\tthis.setState( {\n\t\t\temail_value: event.target.value\n\t\t} );\n\t}\n\n\tclick_to_send_button( email_address ) {\n\n\t\tvar button_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.send_test_email;\n\n\t\t// If we were unable to attempt a send (possibly no internet connection)\n\t\tif ( 'unable_to_attempt' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.unable_to_attempt_email;\n\t\t}\n\n\t\t// There's an error happening on the server\n\t\tif ( 'attempted_but_server_response_incorrect' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.attempted_but_server_response_incorrect;\n\t\t}\n\n\t\t// If wp_mail failed\n\t\tif ( 'attempted_and_failed' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.attempted_and_failed;\n\t\t}\n\n\t\t// If wp_mail sent the email\n\t\tif ( 'sent' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.email_sent;\n\t\t}\n\n\t\treturn( <button onClick={ this.send_email.bind( this, this.state.email_value ) } className=\"button\">{ button_text }</button> );\n\n\t}\n\n\thandle_server_response_from_sendgrid_api_save( data ) {\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Wait for 1 second then refresh\n\t\t\tsetTimeout( () => {\n\t\t\t\tif ( data.success ) {\n\t\t\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\n\t\t\t\t\t// Restart the email checking process\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\temail_send_status: 'restart',\n\t\t\t\t\t\tsendgrid_install_status: false\n\t\t\t\t\t} );\n\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}, 300 );\n\n\t\t} )\n\t}\n\n\thandle_use_my_own_email_plugin() {\n\n\t\t// Restart the email checking process\n\t\tthis.setState( {\n\t\t\temail_send_status: 'custom_email_plugin',\n\t\t\tsendgrid_install_status: false\n\t\t} );\n\n\t}\n\n\trender_modal_header() {\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t);\n\t}\n\n\trender_spinner() {\n\t\tif ( 'sending' == this.state.email_send_status || 'installing' == this.state.sendgrid_install_status ) {\n\t\t\treturn ( <MP_WP_Admin_Spinner /> );\n\t\t}\n\t}\n\n\trender_step_1() {\n\t\t// If we should show step 1\n\t\tif (\n\t\t\t! this.state.email_send_status ||\n\t\t\t'restart' == this.state.email_send_status ||\n\t\t\t'custom_email_plugin' == this.state.email_send_status ||\n\t\t\t'unable_to_attempt' == this.state.email_send_status ||\n\t\t\t'attempted_but_server_response_incorrect' == this.state.email_send_status\n\t\t) {\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ ( () => {\n\t\t\t\t\t\tif ( 'restart' == this.state.email_send_status ) {\n\t\t\t\t\t\t\treturn( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.restart_title );\n\t\t\t\t\t\t} else if( 'custom_email_plugin' == this.state.email_send_status ) {\n\t\t\t\t\t\t\treturn( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.custom_email_plugin_title );\n\t\t\t\t\t\t}else {\n\t\t\t\t\t\t\treturn( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.title );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) () }\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-copy-text-container' }>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tref={(input) => this.email_field = input}\n\t\t\t\t\t\t\tvalue={ this.state.email_value }\n\t\t\t\t\t\t\tonChange={ this.handle_email_change.bind( this ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ this.click_to_send_button( this.email_field ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_attempted_and_failed() {\n\t\t// If we should show step 2\n\t\tif ( 'attempted_and_failed' == this.state.email_send_status && 'installing' !== this.state.sendgrid_install_status ) {\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className='button' onClick={ this.install_sendgrid_plugin.bind( this ) }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.install_sendgrid_text }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className='button' onClick={ this.handle_use_my_own_email_plugin.bind( this ) }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.use_my_own }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_enter_sendgrid_api_key() {\n\n\t\t// Only show this section if we are done trying to test the email\n\t\tif ( 'done' !== this.state.email_send_status ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( 'succeeded' !== this.state.sendgrid_install_status ) {\n\t\t\t<div>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.sendgrid_install_failed }</div>\n\t\t}\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<a className={ 'button' } target=\"_blank\" href={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.sendgrid_url }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.register_with_sendgrid_button_text }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<a className={ 'button' } target=\"_blank\" href={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.grab_api_key_url }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.grab_your_api_key_button_text }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\t\tvar DynamicReactComponent = eval( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field.react_component );\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\t\t\tid={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field.id }\n\t\t\t\t\t\t\t\t\tslug={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field.id }\n\t\t\t\t\t\t\t\t\tprops={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field }\n\t\t\t\t\t\t\t\t\tupdate_context={ this.handle_server_response_from_sendgrid_api_save.bind( this ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} )()\n\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t)\n\n\t}\n\n\trender_test_email_successfuly_sent() {\n\t\t// If we should show step 2\n\t\tif ( 'sent' == this.state.email_send_status ) {\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className='button' onClick={ this.handle_did_not_get_email.bind( this ) }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.did_not_get_email_button_text }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t{ this.render_modal_header() }\n\t\t\t<div className={ 'mpwpadmin-lightbox-input-steps' }>\n\t\t\t\t{ this.render_spinner() }\n\t\t\t\t{ this.render_step_1() }\n\t\t\t\t{ this.render_test_email_successfuly_sent() }\n\t\t\t\t{ this.render_attempted_and_failed() }\n\t\t\t\t{ this.render_enter_sendgrid_api_key() }\n\t\t\t</div>\n\t\t\t</div>\n\t\t)\n}\n\nrender_healthy_output() {\n\treturn(\n\t\t<div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon' }>\n\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t</div>\n\t\t\t</div>\n\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t</div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t{ ( () => {\n\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} )() }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nrender_based_on_health() {\n\n\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\treturn( this.render_unhealthy_output() );\n\t}\n\n\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\treturn( this.render_healthy_output() );\n\t}\n\n}\n\nrender(){\n\n\tif ( this.state.loading ) {\n\t\treturn( <MP_WP_Admin_Spinner /> );\n\t}\n\n\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\treturn( '' );\n\t}\n\n\treturn (\n\t\t<React.Fragment>\n\t\t{ this.render_based_on_health() }\n\t\t</React.Fragment>\n\t);\n\n}\n\n};\n","window.Tip_Jar_WP_Simple_Text_Health_Check = class Tip_Jar_WP_Simple_Text_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_description }</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Setting_Wizard = class Tip_Jar_WP_Setting_Wizard extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\trender_unhealthy_output() {\n\n\t\tvar DynamicReactComponent = eval( this.props.data[this.props.health_check_key].unhealthy.component_data.input_field.react_component );\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-setting-container ' + 'mpwpadmin-setting-' + this.props.health_check_key + '-container' }>\n\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\tid={ this.props.health_check_key }\n\t\t\t\t\t\t\tslug={ this.props.health_check_key }\n\t\t\t\t\t\t\tprops={ this.props.data[this.props.health_check_key].unhealthy.component_data.input_field }\n\t\t\t\t\t\t\tclass_name={ 'mpwpadmin-setting mpwpadmin-setting-' + this.props.health_check_key }\n\t\t\t\t\t\t\tcontext_id={ null }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Do_Wizard_Health_Check = class Tip_Jar_WP_Do_Wizard_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\tcomponentDidUpdate() {\n\t\t// If this component was told we are fixing_it_again, reset the variable on the server which controls the onboarding wizard's status.\n\t\tif( this.props.fixing_it_again ) {\n\t\t\tthis.start_wizard();\n\t\t}\n\t}\n\n\tstart_wizard() {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append( 'tip_jar_wp_start_wizard_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.start_wizard_nonce );\n\n\t\tvar this_component = this;\n\n\t\t// Set the onboard wizard to be in progress\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_tip_jar_wp_start_wizard, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log( data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh mpwpadmin\n\t\t\t\t\t\t\tthis_component.props.main_component.refresh_mpwpadmin();\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t}\n\n\tset_wizard_to_later() {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append( 'tip_jar_wp_start_wizard_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.wizard_later_nonce );\n\n\t\tvar this_component = this;\n\n\t\t// Set the onboard wizard to be in progress\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_tip_jar_wp_wizard_later, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log( data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh mpwpadmin\n\t\t\t\t\t\t\tthis_component.props.main_component.refresh_mpwpadmin();\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_do_wizard_click() {\n\n\t\tthis.start_wizard();\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, { [this.props.next_lightbox_slug]: {} } );\n\n\t}\n\n\thandle_later_click() {\n\n\t\t// Set the status of the wizard to \"later\" on the server.\n\t\tthis.set_wizard_to_later();\n\n\t\t// Close the lightbox\n\t\tthis.props.main_component.set_all_current_visual_states( false, {} );\n\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<button className=\"button\" onClick={ this.handle_later_click.bind( this ) }>\n\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.do_later_button_text }\n\t\t\t\t\t</button>\n\t\t\t\t\t<button className=\"button\" onClick={ this.handle_do_wizard_click.bind( this ) }>\n\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\t// The healthy and unhealthy output are exactly the same for the Do Wizard health check.\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Complete_Wizard = class Tip_Jar_WP_Complete_Wizard extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\tcomplete_wizard() {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append( 'tip_jar_wp_complete_wizard_nonce', this.props.data[this.props.health_check_key].healthy.component_data.complete_wizard_nonce );\n\n\t\tvar this_component = this;\n\n\t\t// Set the onboard wizard to be complete\n\t\tfetch( this.props.data[this.props.health_check_key].healthy.component_data.server_api_endpoint_complete_wizard, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log( data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh mpwpadmin\n\t\t\t\t\t\t\tthis_component.props.main_component.refresh_mpwpadmin().then( () => {\n\t\t\t\t\t\t\t\t// Close the lightbox\n\t\t\t\t\t\t\t\tthis_component.props.main_component.set_all_current_visual_states( false, {} );\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_healthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<button className=\"button\" onClick={ this.complete_wizard.bind( this ) }>\n\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.complete_wizard_button_text }\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\t// The healthy and unhealthy output are exactly the same for the Complete Wizard health check.\n\t\treturn( this.render_healthy_output() );\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n"],"sourceRoot":""}1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./includes/admin/js/src/index.js","webpack:///./includes/admin/js/src/misc-functions.js","webpack:///./includes/admin/js/src/stripe-connect-field.js","webpack:///./includes/admin/js/src/transaction.js","webpack:///./includes/admin/js/src/arrangement.js","webpack:///./includes/admin/js/src/transactions-in-arrangement.js","webpack:///./includes/admin/js/src/shortcode-how-to.js","webpack:///./includes/admin/js/src/health-check-as-help-lightbox.js","webpack:///./includes/admin/js/src/health-check-components/ssl.js","webpack:///./includes/admin/js/src/health-check-components/stripe-connect.js","webpack:///./includes/admin/js/src/health-check-components/stripe-webhook.js","webpack:///./includes/admin/js/src/health-check-components/wp-mail.js","webpack:///./includes/admin/js/src/health-check-components/simple-text.js","webpack:///./includes/admin/js/src/health-check-components/setting.js","webpack:///./includes/admin/js/src/health-check-components/do-wizard.js","webpack:///./includes/admin/js/src/health-check-components/complete-wizard.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","window","tip_jar_wp_format_date","date_string","date","Date","replace","toLocaleDateString","tip_jar_wp_format_time","toLocaleTimeString","navigator","language","timeZoneName","split","tip_jar_wp_format_date_and_time","toLocaleString","tip_jar_wp_list_view_format_date","data","tip_jar_wp_list_view_format_date_and_time","tip_jar_wp_format_money","cents","currency","is_zero_decimal_currency","string_after","formatted_amount","Number","Intl","NumberFormat","style","format","tip_jar_wp_list_view_format_money","Tip_Jar_WP_Stripe_Connect_Field","_React$Component","props","_this","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","state","props_loaded","saved_status","in_initial_state","lightbox_open","error_code","stripe_is_connected","pending","input_delay","get_input_field_class","_assertThisInitialized","get_input_instruction_class","get_input_instruction_message","set_state","_inherits","_createClass","setState","state_key","state_value","_defineProperty","current_instruction","get_current_instruction_key","instruction_codes","instruction_type","instruction_message","button_strings","connected_text","connect_text","postData","FormData","append","relation_id","id","stripe_disconnect_nonce_id","stripe_disconnect_nonce","this_component","fetch","stripe_disconnect_url","method","credentials","headers","body","then","response","status","json","success","update_context","result","console","log","catch","err","_this2","replace_input_field_with","React","createElement","Fragment","className","href","stripe_connect_url","get_connect_button_text","onClick","disconnect_stripe","disconnect_text","MP_WP_Admin_Spinner","stripe_account_name","stripe_account_label","toggle_help_lightbox","main_component","set_all_current_visual_states","slug","render","help_text","react_component","DynamicReactComponent","eval","dynamic_react_component","component_data","render_field","MP_WP_Admin_Lightbox","title","custom_react_component","Component","Tip_Jar_WP_Admin_Single_Transaction","refunding_status","current_single_item","view_info","nonce_refund_transaction","server_api_endpoint_url_refund_transaction","setTimeout","get_single_item_from_server","raw_value","toLowerCase","type","webhook_notice","refund_string","strings","refund_transaction","refund_transaction_are_you_sure","refund_transaction_refunding","refund_transaction_pending","refund_transaction_failed","refund_transaction_succeeded","new_state","lightbox_state","event","single_item","render_refund_button","mapper","push","visual_state","handle_mpwpadmin_button_click","target","Tip_Jar_WP_Admin_Single_Arrangement","cancellation_status","nonce_cancel_arrangement","server_api_endpoint_url_cancel_arrangement","button_string","cancel_arrangement","cancel_arrangement_are_you_sure","cancel_arrangement_cancelling","cancel_arrangement_pending","cancel_arrangement_failed","cancel_arrangement_succeeded","render_cancel_button","TipJarWPTransactionsInArrangement","view_slug","transactions_in_arrangement","arrangement_id","rows","columns","current_page","total_items","items_per_page","search_term","get_rows_from_server","_this3","nonce","server_api_endpoint_url","item_to_fetch","server_api_endpoint_url_single_item","_this4","single_data_view","list_view","Math","ceil","scope","render_rows","_this5","td_mapper","first","row","handle_single_row_click","uppercase_search","onChange","handle_search_change","uppercase_items","lowercase_per","lowercase_page","min","handle_items_per_page_change","uppercase_page","max","get_total_pages","handle_page_number_change","lowercase_of","render_columns","render_search","render_pagination","render_list_table","render_list_view","Tip_Jar_Shortcode_How_To","form_mode","section_info","default","open_style","link_text","copy_text_field","createRef","ref_to_copy","select","document","execCommand","text_field_data","ref_to_use","copy_text","readOnly","ref","input","get_shortcode_text","button_text","handle_form_mode_change","handle_open_style_change","shortcode_text","default_shortcode_text","radio_buttons","current_value","checked","handle_radio_change","after_output","map","index","render_radio_buttons","radio_options","handle_link_text_change","src","icon","description","render_mode_field","render_open_style_field","render_link_text_setting","render_copy_text_element","copy_shortcode","tip_jar_wp_shortcode_how_to","render_lighbox_content","Tip_Jar_WP_Health_Check_As_Help_Lightbox","is_healthy","unhealthy","health_check_key","slug_suffix","this_lightbox_slug","Tip_Jar_WP_SSL_Health_Check","url_update_status","tip_jar_wp_update_wordpress_url_nonce","server_api_endpoint_update_wordpress_url","location","https_url","required_action_title","required_action_description","update_wordpress_url_to_https","update_failed_title","update_failed_description","render_unhealthy_action","healthy","general_config","doing_wizard","next_lightbox_slug","next_wizard_step_button_text","render_healthy_output","render_unhealthy_output","render_based_on_health","Tip_Jar_WP_Stripe_Connect_Health_Check","handle_open_status_based_on_url","set_stripe_success_redirect_on_server","refresh_mpwpadmin","Promise","resolve","reject","lightbox_visual_state","keys","redirect_to_this_lightbox","tjwp_scsr_mode","tip_jar_wp_set_tjwp_scsr_nonce","server_api_endpoint_set_stripe_connect_success_url","stripe_connect_button_text","_this6","Tip_Jar_WP_Stripe_Webhook_Health_Check","webhook_copied","set_input_field_as_ref","element","render_unhealthy_actions","steps","step1","url_to_copy","click_to_copy_button","step2","line_1","line_2","line_3","line_4","step3","input_field","handle_server_response","Tip_Jar_WP_WP_Mail_Health_Check","email_value","email_send_status","sendgrid_install_status","email_field","fixing_it_again","handle_fixing_it_again","force_to_step","email_address_to_send","refreshing_server","setInterval","clearInterval","email_address","send_test_email_nonce","server_api_endpoint_sent_test_email","wait_for_email_confirmation","attempted_and_failed","install_sendgrid_nonce","server_api_endpoint_install_sendgrid","reset_wp_mail_flag_on_server","test_email_successfuly_sent","reset_wp_mail_health_check_nonce","loading","server_api_endpoint_reset_wp_mail_health_check","send_test_email","unable_to_attempt_email","attempted_but_server_response_incorrect","email_sent","send_email","restart_title","custom_email_plugin_title","handle_email_change","click_to_send_button","install_sendgrid_plugin","install_sendgrid_text","handle_use_my_own_email_plugin","use_my_own","render_enter_sendgrid_api_key","_this7","sendgrid_install_failed","create_sendgrid_account","sendgrid_url","register_with_sendgrid_button_text","already_have_sendgrid_account","grab_api_key_url","grab_your_api_key_button_text","enter_sendgrid_api_key","handle_server_response_from_sendgrid_api_save","handle_did_not_get_email","did_not_get_email_button_text","render_modal_header","render_spinner","render_step_1","render_test_email_successfuly_sent","render_attempted_and_failed","_this8","Tip_Jar_WP_Simple_Text_Health_Check","Tip_Jar_WP_Setting_Wizard","class_name","context_id","Tip_Jar_WP_Do_Wizard_Health_Check","start_wizard","start_wizard_nonce","server_api_endpoint_tip_jar_wp_start_wizard","wizard_later_nonce","server_api_endpoint_tip_jar_wp_wizard_later","set_wizard_to_later","handle_later_click","do_later_button_text","handle_do_wizard_click","Tip_Jar_WP_Complete_Wizard","complete_wizard_nonce","server_api_endpoint_complete_wizard","complete_wizard","complete_wizard_button_text"],"mappings":"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","file":"includes/admin/js/build/tip-jar-wp-mpwpadmin-custom-scripts.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import \"./misc-functions.js\";\nimport \"./stripe-connect-field.js\";\nimport \"./transaction.js\";\nimport \"./arrangement.js\";\nimport \"./transactions-in-arrangement.js\";\nimport \"./shortcode-how-to.js\";\nimport \"./health-check-as-help-lightbox.js\";\nimport \"./health-check-components/ssl.js\";\nimport \"./health-check-components/stripe-connect.js\";\nimport \"./health-check-components/stripe-webhook.js\";\nimport \"./health-check-components/wp-mail.js\";\nimport \"./health-check-components/simple-text.js\";\nimport \"./health-check-components/setting.js\";\nimport \"./health-check-components/do-wizard.js\";\nimport \"./health-check-components/complete-wizard.js\";\n","/**\n * Format a unix timestamp (UTC) into a date (Jan 1, 1970) in the user's local timezone and locale.\n *\n * @since 1.0.0\n * @param string date_string\n * @return string\n */\nwindow.tip_jar_wp_format_date = function tip_jar_wp_format_date( date_string ) {\n\tvar date = new Date( date_string.replace(/\\s/, 'T') + 'Z' );\n\n\tif ( 'Invalid Date' == date ) {\n\t\treturn date_string;\n\t}\n\n\treturn date.toLocaleDateString();\n}\n\n/**\n * Format a unix timestamp (UTC) into a time (00:00:00) in the user's local timezone and locale.\n *\n * @since 1.0.0\n * @param string date_string\n * @return string\n */\nwindow.tip_jar_wp_format_time = function tip_jar_wp_format_time( date_string ) {\n\tvar date = new Date( date_string.replace(/\\s/, 'T') + 'Z' );\n\n\tif ( 'Invalid Date' == date ) {\n\t\treturn date_string;\n\t}\n\n\treturn date.toLocaleTimeString() + + ' (' + date.toLocaleTimeString( navigator.language,{timeZoneName:'short'}).split(' ')[2] + ')';\n}\n\n/**\n * Format a unix timestamp (UTC) into a date and time (Jan 1, 1970, 00:00:00) in the user's local timezone and locale.\n *\n * @since 1.0.0\n * @param string date_string\n * @return string\n */\nwindow.tip_jar_wp_format_date_and_time = function tip_jar_wp_format_date_and_time( date_string ) {\n\tvar date = new Date( date_string.replace(/\\s/, 'T') + 'Z' );\n\n\tif ( 'Invalid Date' == date ) {\n\t\treturn date_string;\n\t}\n\n\treturn date.toLocaleString() + ' (' + date.toLocaleTimeString( navigator.language,{timeZoneName:'short'}).split(' ')[2] + ')';\n}\n\n/**\n * Takes a date value array from a Tip Jar WP list view component, passes it to tip_jar_wp_format_date, and returns it.\n *\n * @since 1.0.0\n * @param array data\n * @return string\n */\nwindow.tip_jar_wp_list_view_format_date = function tip_jar_wp_list_view_format_date( data ) {\n\treturn tip_jar_wp_format_date( data['value'] );\n}\n\n/**\n * Takes a date value array from a Tip Jar WP list view component, passes it to tip_jar_wp_format_date, and returns it.\n *\n * @since 1.0.0\n * @param array data\n * @return string\n */\nwindow.tip_jar_wp_list_view_format_date_and_time = function tip_jar_wp_list_view_format_date( data ) {\n\treturn tip_jar_wp_format_date_and_time( data['value'] );\n}\n\n/**\n * Format a money amount properly for the user's locale.\n *\n * @since 1.0.0\n * @param int cents\n * @param string currency\n * @param bool is_zero_decimal_currency\n * @param string string_after\n * @return string\n */\nwindow.tip_jar_wp_format_money = function tip_jar_wp_format_money( cents, currency, is_zero_decimal_currency, string_after ) {\n\n\t\tif ( ! currency ) {\n\t\t\tcurrency = 'USD';\n\t\t}\n\n\t\t// If this is a zero-decimal currency\n\t\tif ( is_zero_decimal_currency ) {\n\t\t\tvar formatted_amount = Number( cents );\n\t\t}\n\t\t// If this is not a zero decimal currency\n\t\telse {\n\t\t\tvar formatted_amount = Number( cents ) / 100;\n\t\t}\n\n\t\t// Format the currency based on the user's locale. This allows commas to be used as the decimal seperator, which is technically a translation.\n\t\tformatted_amount = new Intl.NumberFormat(navigator.language, { style: 'currency', currency: currency }).format(formatted_amount);\n\n\t\treturn formatted_amount + string_after;\n}\n\n/**\n * Takes a value array from mpwpadmin's list view component, passes it to tip_jar_wp_format_visual_amount, and returns it.\n *\n * @since 1.0.0\n * @param array data\n * @return string\n */\nwindow.tip_jar_wp_list_view_format_money = function tip_jar_wp_list_view_format_money( data ) {\n\treturn tip_jar_wp_format_money( data['cents'], data['currency'], data['is_zero_decimal_currency'], data['string_after'] );\n}\n","window.Tip_Jar_WP_Stripe_Connect_Field = class Tip_Jar_WP_Stripe_Connect_Field extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tprops_loaded: false,\n\t\t\tsaved_status: 'saved',\n\t\t\tin_initial_state: true,\n\t\t\tlightbox_open: false,\n\t\t\terror_code: null,\n\t\t\tstripe_is_connected: null,\n\t\t\tpending: false\n\t\t};\n\n\t\tthis.input_delay = null;\n\n\t\tthis.get_input_field_class = this.get_input_field_class.bind( this );\n\t\tthis.get_input_instruction_class = this.get_input_instruction_class.bind( this );\n\t\tthis.get_input_instruction_message = this.get_input_instruction_message.bind( this );\n\t\tthis.set_state = this.set_state.bind( this );\n\t};\n\n\tcomponentDidMount() {\n\n\t\tthis.setState( {\n\t\t\tprops_loaded: true,\n\t\t\tstripe_is_connected: this.props.props.stripe_is_connected,\n\t\t} );\n\n\t}\n\n\tset_state( state_key, state_value ) {\n\n\t\tthis.setState( {\n\t\t\t[state_key]: state_value\n\t\t} );\n\t}\n\n\tget_current_instruction_key() {\n\n\t\tif ( this.state.stripe_is_connected ) {\n\t\t\treturn 'stripe_connected';\n\t\t}\n\n\t\tif ( ! this.state.stripe_is_connected ) {\n\t\t\treturn 'connect_stripe';\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\tget_input_instruction_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-instruction-error';\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\n\t};\n\n\tget_input_field_class() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\tif ( 'success' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-success';\n\t\t\t}\n\t\t\tif ( 'error' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-error';\n\t\t\t}\n\t\t\tif ( 'initial' == this.props.props.instruction_codes[current_instruction].instruction_type ) {\n\t\t\t\treturn ' mpwpadmin-input-initial';\n\t\t\t}\n\t\t}\n\n\t\treturn ' mpwpadmin-input-initial';\n\n\t};\n\n\tget_input_instruction_message() {\n\n\t\t// Get the current instruction for this field\n\t\tvar current_instruction = this.get_current_instruction_key();\n\n\t\tif ( this.props.props.instruction_codes[current_instruction] ) {\n\t\t\treturn this.props.props.instruction_codes[current_instruction].instruction_message;\n\t\t}\n\t};\n\n\tget_connect_button_text() {\n\n\t\tif ( this.state.stripe_is_connected ) {\n\t\t\treturn this.props.props.button_strings.connected_text;\n\t\t}\n\t\tif ( ! this.state.stripe_is_connected ) {\n\t\t\treturn this.props.props.button_strings.connect_text;\n\t\t}\n\n\t}\n\n\tdisconnect_stripe() {\n\n\t\tthis.setState( {\n\t\t\tpending: true,\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_relation_id', this.props.relation_id );\n\t\tpostData.append('mpwpadmin_stripe_disconnect', this.props.id);\n\t\tpostData.append('mpwpadmin_stripe_disconnect_mode', this.props.props.mode);\n\t\tpostData.append('mpwpadmin_nonce_id', this.props.props.stripe_disconnect_nonce_id);\n\t\tpostData.append('mpwpadmin_nonce', this.props.props.stripe_disconnect_nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.props.stripe_disconnect_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// The user was successfully disconnected from Stripe connect\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tstripe_is_connected: false,\n\t\t\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\t\t} );\n\n\n\t\t\t\t\t\t\t// Pass the response up the chain to the parent component, where it will handle the data as it needs it.\n\t\t\t\t\t\t\tif ( this_component.props.update_context ) {\n\t\t\t\t\t\t\t\tthis_component.props.update_context( data ).then( function( result ) {\n\t\t\t\t\t\t\t\t\tconsole.log( result );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// The user was not successfully disconnected from Stripe connect, but most likely they accidentally disconnected twice somehow. For now we'll assume the disconnection was successful anyway.\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tstripe_is_connected: false,\n\t\t\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\trender_field() {\n\n\t\tif ( ! this.state.props_loaded ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( this.props.props.replace_input_field_with ) {\n\t\t\treturn this.props.props.replace_input_field_with;\n\t\t} else {\n\n\t\t\treturn (\n\t\t\t\t<React.Fragment>\n\n\t\t\t\t<div className={ 'mpwpwpadmin-link-container' }>\n\n\t\t\t\t{ (() => {\n\n\t\t\t\t\tif ( ! this.state.pending ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a className='tipjarwp-stripe-connect' href={ this.props.props.stripe_connect_url }>\n\t\t\t\t\t\t\t<span>{ this.get_connect_button_text() }</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t})() }\n\n\t\t\t\t{ (() => {\n\n\t\t\t\t\tif ( this.state.stripe_is_connected && ! this.state.pending ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<button className='tipjarwp-stripe-connect' onClick={ this.disconnect_stripe.bind( this ) }>\n\t\t\t\t\t\t\t<span>{ this.props.props.button_strings.disconnect_text }</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t})() }\n\n\t\t\t\t{ (() => {\n\n\t\t\t\t\tif ( this.state.pending ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MP_WP_Admin_Spinner />\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t})() }\n\n\t\t\t\t{(() => {\n\t\t\t\t\tif ( this.state.stripe_is_connected && ! this.state.pending && this.props.props.stripe_account_name ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-stripe-account-name-container\">\n\t\t\t\t\t\t\t\t\t<span className=\"tip-jar-wp-stripe-account-label\">{ this.props.props.stripe_account_label }</span>\n\t\t\t\t\t\t\t\t\t<span> </span>\n\t\t\t\t\t\t\t\t\t<span className=\"tip-jar-wp-stripe-account-name\">{ this.props.props.stripe_account_name }</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t})()}\n\n\t\t\t\t</div>\n\n\t\t\t\t<div className={ 'mpwpadmin-input-instruction' + this.get_input_instruction_class() }>{ this.get_input_instruction_message() }</div>\n\t\t\t\t<span className={ 'mpwpadmin-input-top-right-area' }>\n\t\t\t\t<span className={ 'mpwpadmin-input-help-link' } onClick={ this.toggle_help_lightbox.bind( this ) }>help!</span>\n\t\t\t\t</span>\n\t\t\t\t</React.Fragment>\n\t\t\t)\n\t\t}\n\t}\n\n\ttoggle_help_lightbox() {\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, {\n\t\t\t[this.props.slug]: {}\n\t\t} );\n\n\t}\n\n\trender(){\n\n\t\tif ( this.props.props.help_text.react_component ) {\n\t\t\tvar DynamicReactComponent = eval( this.props.props.help_text.react_component );\n\t\t\tvar dynamic_react_component = <DynamicReactComponent\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tdata={ this.props.props.help_text.component_data }\n\t\t\t/>\n\t\t} else {\n\t\t\tvar dynamic_react_component = null;\n\t\t}\n\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-input-component-container' }>\n\t\t\t{ this.render_field() }\n\n\t\t\t<MP_WP_Admin_Lightbox\n\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\tslug={ this.props.slug }\n\t\t\t\ttitle={ this.props.props.help_text.title }\n\t\t\t\tbody={ this.props.props.help_text.body }\n\t\t\t\tmode={ dynamic_react_component ? 'custom_react_component' : 'default' }\n\t\t\t\tcustom_react_component={ dynamic_react_component }\n\t\t\t/>\n\n\t\t\t</div>\n\t\t)\n\t}\n\n};\n","window.Tip_Jar_WP_Admin_Single_Transaction = class Tip_Jar_WP_Admin_Single_Transaction extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\trefunding_status: 'initial',\n\t\t};\n\n\t};\n\n\trefund_transaction() {\n\n\t\t// Do the double check for \"are you sure you want to refund\"\n\t\tif ( 'initial' == this.state.refunding_status ) {\n\n\t\t\tthis.setState( {\n\t\t\t\trefunding_status: 'are_you_sure'\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\trefunding_status: 'refunding'\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_transaction_being_refunded', this.props.current_single_item.id.value);\n\t\tpostData.append('tip_jar_wp_nonce_refund_transaction', this.props.view_info.nonce_refund_transaction);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_refund_transaction, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\trefunding_status: 'failed'\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tif ( data.pending ) {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\trefunding_status: 'pending'\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\trefunding_status: 'refunded_succeeded'\n\t\t\t\t\t\t\t\t}, () => {\n\n\t\t\t\t\t\t\t\t\t// Wait for 1 second while the \"succeess is shown\"\n\t\t\t\t\t\t\t\t\tsetTimeout( () => {\n\n\t\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\t\trefunding_status: 'refunded'\n\t\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\t\t// Get the updated transaction now that it's been refunded (depending on whether Stripe's webhook has arrived yet)\n\t\t\t\t\t\t\t\t\t\tthis_component.props.get_single_item_from_server( this_component.props.current_single_item.id.value );\n\t\t\t\t\t\t\t\t\t}, 1000 );\n\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\trefunding_status: 'failed'\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\trefunding_status: 'failed'\n\t\t\t\t} );\n\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_refund_button() {\n\n\t\t// If this transaction was already refunded, or is a refund transaction itself, don't show a refund button\n\t\tif (\n\t\t\t'refunded' === this.props.current_single_item.status.raw_value.toLowerCase() ||\n\t\t\t'refund' === this.props.current_single_item.type.value.toLowerCase() ||\n\t\t\t// If the webhook failed, we can't refund it anyway, because Stripe never told us the charge ID.\n\t\t\tthis.props.current_single_item.webhook_notice\n\t\t) {\n\t\t\treturn ( '' );\n\t\t}\n\n\t\tvar refund_string = this.props.view_info.strings.refund_transaction;\n\t\tvar on_click = this.refund_transaction.bind( this );\n\n\t\tif ( 'are_you_sure' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_are_you_sure;\n\t\t}\n\n\t\tif ( 'refunding' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_refunding;\n\t\t\ton_click = null;\n\t\t}\n\n\t\tif ( 'pending' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_pending;\n\t\t}\n\n\t\tif ( 'failed' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_failed;\n\t\t}\n\n\t\tif ( 'refunded_succeeded' == this.state.refunding_status ) {\n\t\t\trefund_string = this.props.view_info.strings.refund_transaction_succeeded;\n\t\t\ton_click = null;\n\t\t}\n\n\t\treturn( <button className=\"button\" onClick={ this.refund_transaction.bind( this ) }>{ refund_string }</button> );\n\n\t}\n\n\thandle_mpwpadmin_button_click( new_state, lightbox_state, event ) {\n\t\tthis.props.main_component.set_all_current_visual_states( new_state, lightbox_state );\n\t}\n\n\trender(){\n\n\t\tvar single_item = this.props.current_single_item;\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t<div className={ 'mpwpwadmin-list-view-single-data-item-controls' }>\n\t\t\t{ this.render_refund_button() }\n\t\t\t</div>\n\t\t\t<div className=\"mpwpadmin-single-data\">\n\t\t\t{ (() => {\n\n\t\t\t\tvar mapper = [];\n\t\t\t\tvar value;\n\n\t\t\t\t// Loop through all of the items to show about this item\n\t\t\t\tfor (var key in single_item) {\n\t\t\t\t\tmapper.push( <div className={ 'mpwpadmin-list-view-single-data-item' } key={ key }>{\n\n\t\t\t\t\t\t// Render the output for this data value about the current single item (which was selected from the list)\n\t\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\t\tif ( single_item[key]['show_in_single_data_view'] ) {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-title' }>\n\t\t\t\t\t\t\t\t\t{ single_item[key]['title'] }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-value' }>\n\t\t\t\t\t\t\t\t\t{ ( () => {\n\n\t\t\t\t\t\t\t\t\t\t// Set the visual value\n\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\tvalue = eval( single_item[key]['value_format_function'] )( single_item[key] )\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tvalue = single_item[key]['value']\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// If an mpwpadmin state should be fired when the is clicked\n\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['mpwpadmin_visual_state_onclick'] || single_item[key]['mpwpadmin_lightbox_state_onclick'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar visual_state = single_item[key]['mpwpadmin_visual_state_onclick'] ? single_item[key]['mpwpadmin_visual_state_onclick'] : false;\n\t\t\t\t\t\t\t\t\t\t\tvar lightbox_state = single_item[key]['mpwpadmin_lightbox_state_onclick'] ? single_item[key]['mpwpadmin_lightbox_state_onclick'] : false;\n\n\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<a onClick={ this.handle_mpwpadmin_button_click.bind( this, visual_state, lightbox_state ) }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// If a link should be directed to upon click on this item\n\t\t\t\t\t\t\t\t\t\telse if ( single_item[key]['link_url'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar target = single_item[key]['link_target'] ? single_item[key]['link_url'] : null;\n\n\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<a target={ target } href={ single_item[key]['link_url'] }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t})() }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ( '' );\n\n\t\t\t\t\t\t})()\n\n\t\t\t\t\t}</div> );\n\t\t\t\t}\n\n\t\t\t\treturn mapper;\n\t\t\t})() }\n\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n};\n","window.Tip_Jar_WP_Admin_Single_Arrangement = class Tip_Jar_WP_Admin_Single_Arrangement extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tcancellation_status: 'initial',\n\t\t};\n\n\t};\n\n\tcancel_arrangement() {\n\n\t\t// Do the double check for \"are you sure you want to refund\"\n\t\tif ( 'initial' == this.state.cancellation_status ) {\n\n\t\t\tthis.setState( {\n\t\t\t\tcancellation_status: 'are_you_sure'\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tcancellation_status: 'cancelling'\n\t\t} );\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_arrangement_being_cancelled', this.props.current_single_item.id.value);\n\t\tpostData.append('tip_jar_wp_nonce_cancel_arrangement', this.props.view_info.nonce_cancel_arrangement);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_cancel_arrangement, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\tcancellation_status: 'failed'\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tif ( data.pending ) {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\tcancellation_status: 'pending'\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\tcancellation_status: 'cancellation_succeeded'\n\t\t\t\t\t\t\t\t}, () => {\n\n\t\t\t\t\t\t\t\t\t// Wait for 1 second while the \"succeess is shown\"\n\t\t\t\t\t\t\t\t\tsetTimeout( () => {\n\n\t\t\t\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\t\t\t\tcancellation_status: 'cancelled'\n\t\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\t\t// Get the updated arrangement now that it's been cancelled (depending on whether Stripe's webhook has arrived yet)\n\t\t\t\t\t\t\t\t\t\tthis_component.props.get_single_item_from_server( this_component.props.current_single_item.id.value );\n\t\t\t\t\t\t\t\t\t}, 1000 );\n\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcancellation_status: 'failed'\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\tcancellation_status: 'failed'\n\t\t\t\t} );\n\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_cancel_button() {\n\n\t\t// If this arrangement was already cancelled, don't show a refund button\n\t\tif (\n\t\t\t'cancelled' === this.state.cancellation_status ||\n\t\t\t'cancelled' === this.props.current_single_item.status.value.toLowerCase() ||\n\t\t\t// If the webhook failed, we can't cancel it anyway, because Stripe never told us the sub ID.\n\t\t\tthis.props.current_single_item.webhook_notice\n\t\t) {\n\t\t\treturn ( '' );\n\t\t}\n\n\t\tvar button_string = this.props.view_info.strings.cancel_arrangement;\n\t\tvar on_click = this.cancel_arrangement.bind( this );\n\n\t\tif ( 'are_you_sure' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_are_you_sure;\n\t\t}\n\n\t\tif ( 'cancelling' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_cancelling;\n\t\t\ton_click = null;\n\t\t}\n\n\t\tif ( 'pending' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_pending;\n\t\t}\n\n\t\tif ( 'failed' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_failed;\n\t\t}\n\n\t\tif ( 'cancellation_succeeded' == this.state.cancellation_status ) {\n\t\t\tbutton_string = this.props.view_info.strings.cancel_arrangement_succeeded;\n\t\t\ton_click = null;\n\t\t}\n\n\t\treturn( <button className=\"button\" onClick={ this.cancel_arrangement.bind( this ) }>{ button_string }</button> );\n\n\t}\n\n\thandle_mpwpadmin_button_click( new_state, lightbox_state, event ) {\n\t\tthis.props.main_component.set_all_current_visual_states( new_state, lightbox_state );\n\t}\n\n\trender(){\n\n\t\tvar single_item = this.props.current_single_item;\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpwadmin-list-view-single-data-item-controls' }>\n\t\t\t\t\t{ this.render_cancel_button() }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mpwpadmin-single-data\">\n\t\t\t\t\t{ (() => {\n\n\t\t\t\t\t\tvar mapper = [];\n\n\t\t\t\t\t\t// Loop through all of the items to show about this item\n\t\t\t\t\t\tfor (var key in single_item) {\n\t\t\t\t\t\t\tmapper.push( <React.Fragment key={ key }>{\n\n\t\t\t\t\t\t\t\t// Render the output for this data value about the current single item (which was selected from the list)\n\t\t\t\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\t\t\t\tif ( single_item[key]['show_in_single_data_view'] ) {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item' }>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-title' }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ single_item[key]['title'] }\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-single-data-item-value' }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ ( () => {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Set the visual value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue = eval( single_item[key]['value_format_function'] )( single_item[key] )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue = single_item[key]['value']\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If an mpwpadmin state should be fired when the is clicked\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( single_item[key]['mpwpadmin_visual_state_onclick'] || single_item[key]['mpwpadmin_lightbox_state_onclick'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar visual_state = single_item[key]['mpwpadmin_visual_state_onclick'] ? single_item[key]['mpwpadmin_visual_state_onclick'] : false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar lightbox_state = single_item[key]['mpwpadmin_lightbox_state_onclick'] ? single_item[key]['mpwpadmin_lightbox_state_onclick'] : false;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a onClick={ this.handle_mpwpadmin_button_click.bind( this, visual_state, lightbox_state ) }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If a link should be directed to upon click on this item\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telse if ( single_item[key]['link_url'] ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar target = single_item[key]['link_target'] ? single_item[key]['link_url'] : null;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a target={ target } href={ single_item[key]['link_url'] }>{ value }</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t})() }\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn ( '' );\n\n\t\t\t\t\t\t\t\t})()\n\n\t\t\t\t\t\t\t}</React.Fragment> );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn mapper;\n\t\t\t\t\t})() }\n\t\t\t\t</div>\n\t\t\t\t<TipJarWPTransactionsInArrangement\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tview_slug={ 'transactions' }\n\t\t\t\t\tview_info={ this.props.view_info.transactions_in_arrangement }\n\t\t\t\t\tarrangement_id={ this.props.current_single_item.id.value }\n\t\t\t\t/>\n\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n};\n","/*\n* Tip Jar WP Admin\n* https://www.tipjarwp.com\n*\n* Licensed under the GPL license.\n*\n* Author: Tip Jar WP\n* Version: 1.0\n* Date: April 18, 2018\n*/\n\nwindow.TipJarWPTransactionsInArrangement = class TipJarWPTransactionsInArrangement extends React.Component {\n\n\tconstructor( props ){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t\tcurrent_page: 1,\n\t\t\ttotal_items: 1,\n\t\t\titems_per_page: 1,\n\t\t\tsearch_term: '',\n\t\t\tcurrent_single_item: null,\n\t\t\tarrangement_id: null\n\t\t}\n\n\t\tthis.get_single_item_from_server = this.get_single_item_from_server.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\n\t\tthis.setState( {\n\t\t\tarrangement_id: this.props.arrangement_id,\n\t\t\ttotal_items: this.props.view_info.total_items,\n\t\t\titems_per_page: this.props.view_info.items_per_page,\n\t\t\trows: this.props.view_info.rows,\n\t\t\tcolumns: this.props.view_info.columns,\n\t\t}, () => {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\tcomponentDidUpdate() {\n\t\t// If the arrangement has changed, update the list of transactions to show.\n\t\tif ( this.state.arrangement_id !== this.props.arrangement_id ){\n\t\t\tthis.setState({\n\t\t\t\tarrangement_id: this.props.arrangement_id,\n\t\t\t}, () => {\n\t\t\t\tthis.get_rows_from_server();\n\t\t\t} );\n\t\t}\n\t}\n\n\tget_rows_from_server() {\n\n\t\tif ( ! this.state.items_per_page ) {\n\t\t\tvar items_per_page = 20;\n\t\t} else {\n\t\t\tvar items_per_page = this.state.items_per_page;\n\t\t}\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_list_view_id', this.props.view_slug);\n\t\tpostData.append('mpwpadmin_list_view_search_term', this.state.search_term);\n\t\tpostData.append('mpwpadmin_list_view_page_id', this.state.current_page);\n\t\tpostData.append('mpwpadmin_items_per_page', items_per_page);\n\t\tpostData.append('mpwpadmin_list_view_items_per_page', this.state.items_per_page);\n\t\tpostData.append('tip_jar_wp_arrangement_id', this.state.arrangement_id);\n\t\tpostData.append('mpwpadmin_nonce', this.props.view_info.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcolumns: data.columns,\n\t\t\t\t\t\t\t\trows: data.rows,\n\t\t\t\t\t\t\t\ttotal_items: data.total_items\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\trows: 'Unable to fetch rows...'\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_page_number_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tcurrent_page: event.target.value,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\tget_single_item_from_server( item_to_fetch ) {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('mpwpadmin_list_view_id', this.props.view_slug);\n\t\tpostData.append('mpwpadmin_list_view_item_id', item_to_fetch);\n\t\tpostData.append('mpwpadmin_nonce', this.props.view_info.nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.view_info.server_api_endpoint_url_single_item, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log('Looks like there was a problem. Status Code: ' +\n\t\t\t\t\tresponse.status);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success && data.current_single_item ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcurrent_single_item: data.current_single_item,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tcurrent_single_item: 'none_found'\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_items_per_page_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tcurrent_page: 1,\n\t\t\titems_per_page: event.target.value,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\thandle_search_change( event ) {\n\n\t\tthis.setState( {\n\t\t\tsearch_term: event.target.value,\n\t\t\tcurrent_page: 1,\n\t\t\trows: null,\n\t\t\tcolumns: null,\n\t\t}, function() {\n\t\t\tthis.get_rows_from_server();\n\t\t} );\n\n\t}\n\n\thandle_single_row_click( single_item, event ) {\n\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {\n\t\t\t\tsingle_data_view: {\n\t\t\t\t\t[single_item['id']['value']]: {} // Use the value in the first column as the URL slug\n\t\t\t\t}\n\t\t\t}\n\t\t} ).then( () => {\n\t\t\tthis.setState( {\n\t\t\t\tcurrent_single_item: single_item\n\t\t\t} );\n\t\t} );\n\n\t}\n\n\thandle_list_view_button_click(){\n\n\t\tthis.props.main_component.set_all_current_visual_states( {\n\t\t\t[this.props.view_slug]: {\n\t\t\t\tlist_view: {}\n\t\t\t}\n\t\t} );\n\n\t}\n\n\tget_total_pages() {\n\t\treturn Math.ceil( this.state.total_items / this.state.items_per_page );\n\t}\n\n\trender_columns( columns ) {\n\n\t\tif ( ! columns ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar mapper = [];\n\n\t\t// Loop through each column\n\t\tfor (var key in columns) {\n\t\t\tmapper.push(\n\t\t\t\t<div key={ key } scope=\"col\" className=\"mpwpadmin-list-view-column\">\n\t\t\t\t\t<span>{ columns[key] }</span>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn mapper;\n\t}\n\n\trender_rows( rows, columns ) {\n\n\t\tvar mapper = [];\n\t\tvar td_mapper = [];\n\n\t\tif ( ! rows || 0 == this.state.total_items ) {\n\n\t\t\tvar first = true;\n\n\t\t\tfor (var key in columns) {\n\t\t\t\ttd_mapper.push(\n\n\t\t\t\t\t// Render the contents of this table cell\n\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\tif ( first ) {\n\n\t\t\t\t\t\t\tfirst = false;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t{ 'None Found' }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfirst = false;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t{ '' }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})()\n\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add all of that combined data to the main mapper array\n\t\t\tmapper.push(\n\t\t\t\t<div key={ 'none_found' } className=\"mpwpadmin-list-view-row\">\n\t\t\t\t{ td_mapper }\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\treturn mapper;\n\t\t}\n\n\t\t// Loop through each row\n\t\tfor (var row in rows) {\n\n\t\t\t// Combine all of the table data (cells in this row)\n\t\t\tfor (var key in columns) {\n\t\t\t\ttd_mapper.push(\n\n\t\t\t\t\t// Render the contents of this table cell\n\t\t\t\t\t(() => {\n\n\t\t\t\t\t\t// If we should show this peice of data in the list view\n\t\t\t\t\t\tif ( rows[row][key]['show_in_list_view'] ) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ key } className=\"mpwpadmin-list-view-cell\">\n\t\t\t\t\t\t\t\t\t<button onClick={ this.handle_single_row_click.bind( this, rows[row] ) }>\n\t\t\t\t\t\t\t\t\t{(() => {\n\t\t\t\t\t\t\t\t\t\tif ( rows[row][key]['value_format_function'] ) {\n\t\t\t\t\t\t\t\t\t\t\treturn eval( rows[row][key]['value_format_function'] )( rows[row][key] )\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn rows[row][key]['value']\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})()}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})()\n\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add all of that combined data to the main mapper array\n\t\t\tmapper.push(\n\t\t\t\t<div key={ row } className=\"mpwpadmin-list-view-table-row\">\n\t\t\t\t\t{ td_mapper }\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\t// Get the row data array ready for a new row\n\t\t\ttd_mapper = [];\n\t\t}\n\n\t\treturn mapper;\n\n\t}\n\n\trender_search() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpwadmin-list-view-search\">\n\t\t\t<span>{ this.props.view_info.strings.uppercase_search }</span>\n\t\t\t<input type=\"text\" value={ this.state.search_term } onChange={ this.handle_search_change.bind( this ) } />\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_pagination() {\n\n\t\treturn (\n\t\t\t<div className=\"mpwpwadmin-list-view-pagination-controls\">\n\t\t\t\t<div className=\"mpwpwadmin-list-view-items-per-page\">\n\t\t\t\t\t<span>{ this.props.view_info.strings.uppercase_items + ' ' + this.props.view_info.strings.lowercase_per + ' ' + this.props.view_info.strings.lowercase_page }</span>\n\t\t\t\t\t<input type=\"number\" min={ 1 } onChange={ this.handle_items_per_page_change.bind( this ) } value={ this.state.items_per_page } />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mpwpwadmin-list-view-pagination\">\n\t\t\t\t\t<span>{ this.props.view_info.strings.uppercase_page }</span>\n\t\t\t\t\t<input type=\"number\" min={ 1 } max={ this.get_total_pages() } onChange={ this.handle_page_number_change.bind( this ) } value={ this.state.current_page } />\n\t\t\t\t\t<span>{ ' ' + this.props.view_info.strings.lowercase_of + ' ' + this.get_total_pages() }</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_list_table() {\n\n\t\tif ( this.state.columns && this.state.rows ) {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-list-view-table' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-header' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-row' }>\n\t\t\t\t\t\t\t{ this.render_columns( this.state.columns ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className={ 'mpwpadmin-list-view-table-body' }>\n\t\t\t\t\t\t{ this.render_rows( this.state.rows, this.state.columns ) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t} else {\n\t\t\treturn <MP_WP_Admin_Spinner />\n\t\t}\n\n\t}\n\n\trender_list_view() {\n\n\t\treturn(\n\t\t\t<div className=\"mpwpadmin-list-view\">\n\t\t\t\t<div className=\"mpwpadmin-list-view-controls\">\n\n\t\t\t\t\t{ this.render_search() }\n\n\t\t\t\t\t{ this.render_pagination() }\n\n\t\t\t\t</div>\n\n\t\t\t\t{ this.render_list_table() }\n\n\t\t\t\t<div className=\"mpwpadmin-list-view-controls\">\n\n\t\t\t\t\t{ this.render_search() }\n\n\t\t\t\t\t{ this.render_pagination() }\n\n\t\t\t\t</div>\n\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender() {\n\n\t\treturn (\n\t\t\t<div className={ 'mpwpadmin-list-view tip-jar-wp-transactions-in-arrangement' }>\n\n\t\t\t<div className=\"mpwpadmin-breadcrumb\">\n\t\t\t<h2>Transactions in this Plan</h2>\n\t\t\t</div>\n\n\t\t\t<div className=\"mpwpadmin-list-view-content-area\">\n\n\t\t\t{ this.render_list_view() }\n\n\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n}\n","window.Tip_Jar_Shortcode_How_To = class Tip_Jar_Shortcode_How_To extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tform_mode: this.props.section_info.component_data.form_mode.default,\n\t\t\topen_style: this.props.section_info.component_data.open_style.default,\n\t\t\tlink_text: this.props.section_info.component_data.link_text.default // \"Leave a tip\"\n\t\t}\n\n\t\tthis.copy_text_field = React.createRef();\n\n\t};\n\n\tcopy_text( ref_to_copy ) {\n\t\tref_to_copy.select();\n\t\tdocument.execCommand('copy');\n\t}\n\n\trender_copy_text_element( text_field_data, ref_to_use ) {\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpadmin-input-component-container' } onClick={ this.copy_text.bind( this, this[ref_to_use] ) }>\n\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ text_field_data.title }</div>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\treadOnly\n\t\t\t\t\t\tref={(input) => this[ref_to_use] = input}\n\t\t\t\t\t\tvalue={ this.get_shortcode_text() }\n\t\t\t\t\t/>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button onClick={ this.copy_text.bind( this, this[ref_to_use] ) } className=\"button\">{ text_field_data.button_text }</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n\thandle_radio_change( name, event ) {\n\n\t\tif ( 'form_mode' == name ) {\n\t\t\tthis.handle_form_mode_change( event );\n\t\t}\n\n\t\tif ( 'open_style' == name ) {\n\t\t\tthis.handle_open_style_change( event );\n\t\t}\n\t}\n\n\thandle_form_mode_change( event ) {\n\t\tthis.setState( {\n\t\t\tform_mode: event.target.value\n\t\t} );\n\t}\n\n\thandle_open_style_change( event ) {\n\t\tthis.setState( {\n\t\t\topen_style: event.target.value\n\t\t} );\n\t}\n\n\thandle_link_text_change( event ) {\n\t\tthis.setState( {\n\t\t\tlink_text: event.target.value\n\t\t} );\n\t}\n\n\tget_shortcode_text() {\n\n\t\tvar shortcode_text = this.props.section_info.component_data.strings.default_shortcode_text;\n\n\t\tif ( 'form' == this.state.form_mode ) {\n\t\t\tshortcode_text = '[tipjarwp]';\n\t\t}\n\n\t\tif ( 'button' == this.state.form_mode ) {\n\t\t\tshortcode_text = '[tipjarwp mode=\"button\" link_text=\"' + this.state.link_text + '\" open_style=\"' + this.state.open_style + '\"]';\n\t\t}\n\n\t\tif ( 'text_link' == this.state.form_mode ) {\n\t\t\tshortcode_text = '[tipjarwp mode=\"text_link\" link_text=\"' + this.state.link_text + '\" open_style=\"' + this.state.open_style + '\"]';\n\t\t}\n\n\t\treturn shortcode_text;\n\t}\n\n\trender_radio_buttons( radio_buttons, name, current_value ) {\n\n\t\tvar mapper = [];\n\n\t\t// This lets us loop through the object\n\t\tfor (var key in radio_buttons) {\n\n\t\t\tmapper.push(\n\t\t\t\t<div key={ key } className={ \"tip-jar-wp-radio-button-container\" + ( key == this.state.form_mode ? ' tip-jar-wp-radio-current' : '' ) }>\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<div className=\"tip-jar-wp-radio-button-outer\">\n\t\t\t\t\t\t\t<div className=\"tip-jar-wp-radio-button-inner\">\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype={ 'radio' }\n\t\t\t\t\t\t\t\t\tvalue={ key }\n\t\t\t\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\t\t\t\tchecked={ key == current_value ? true : false }\n\t\t\t\t\t\t\t\t\tonChange={ this.handle_radio_change.bind( this, name ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<div className=\"tip-jar-wp-radio-button-after\">\n\t\t\t\t\t\t\t\t\t{ radio_buttons[key].after_output }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t)\n\n\t\t}\n\n\t\t// This lets us output the inputs one by one\n\t\treturn (\n\t\t\t<div className=\"tip-jar-wp-radio-buttons-container\">\n\t\t\t{\n\t\t\t\tmapper.map((radio_buttons, index) => {\n\t\t\t\t\treturn radio_buttons;\n\t\t\t\t})\n\t\t\t}\n\t\t\t</div>\n\t\t)\n\n\t}\n\n\trender_mode_field() {\n\t\treturn(\n\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t<div className=\"mpwpadmin-input-component-container mpwpwadmin-radio-container\">\n\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ this.props.section_info.component_data.form_mode.title }</div>\n\t\t\t\t\t{ this.render_radio_buttons( this.props.section_info.component_data.form_mode.radio_options, 'form_mode', this.state.form_mode ) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_link_text_setting() {\n\n\t\tif (\n\t\t\t'button' == this.state.form_mode ||\n\t\t\t'text_link' == this.state.form_mode\n\t\t) {\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-input-component-container\">\n\t\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ this.props.section_info.component_data.link_text.title }</div>\n\t\t\t\t\t\t<input type=\"text\" value={ this.state.link_text } onChange={ this.handle_link_text_change.bind( this ) } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\trender_open_style_field() {\n\t\tif (\n\t\t\t'button' == this.state.form_mode ||\n\t\t\t'text_link' == this.state.form_mode\n\t\t) {\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-input-component-container mpwpwadmin-radio-container\">\n\t\t\t\t\t\t<div className=\"mpwpadmin-input-instruction\">{ this.props.section_info.component_data.open_style.title }</div>\n\t\t\t\t\t\t{ this.render_radio_buttons( this.props.section_info.component_data.open_style.radio_options, 'open_style', this.state.open_style ) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\trender_lighbox_content() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t<img src={ this.props.section_info.icon } />\n\t\t\t</div>\n\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.section_info.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.section_info.component_data.strings.description }\n\t\t\t\t</div>\n\n\t\t\t\t{ this.render_mode_field() }\n\n\t\t\t\t{ this.render_open_style_field() }\n\n\t\t\t\t{ this.render_link_text_setting() }\n\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ this.render_copy_text_element( this.props.section_info.component_data.copy_shortcode, 'copy_text_field' ) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender(){\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\n\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { tip_jar_wp_shortcode_how_to: {} } ) }>How to show a tip form</button>\n\t\t\t\t<MP_WP_Admin_Lightbox\n\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\tslug={ 'tip_jar_wp_shortcode_how_to' }\n\t\t\t\t\tmode={ 'custom_react_component' }\n\t\t\t\t\tcustom_react_component={ this.render_lighbox_content() }\n\t\t\t\t/>\n\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","// This component acts as a wrapper to map data and load a Health Check component as the \"Help\" lightbox for an input field.\nwindow.Tip_Jar_WP_Health_Check_As_Help_Lightbox = class Tip_Jar_WP_Health_Check_As_Help_Lightbox extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n if (!this.props.data) {\n return \"\";\n }\n\n var DynamicReactComponent = eval(this.props.data.react_component);\n var dynamic_react_component = (\n <DynamicReactComponent\n main_component={this.props.main_component}\n data={{\n [this.props.data.key]: {\n is_healthy: false,\n unhealthy: {\n mode: \"live_site\",\n component_data: this.props.data\n }\n }\n }}\n health_check_key={this.props.data.key}\n slug_suffix={\"_help\"}\n this_lightbox_slug={this.props.data.key + \"_help\"}\n />\n );\n\n return dynamic_react_component;\n }\n};\n","window.Tip_Jar_WP_SSL_Health_Check = class Tip_Jar_WP_SSL_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\turl_update_status: false\n\t\t}\n\t};\n\n\tupdate_wordpress_url_to_https() {\n\n\t\tvar this_component = this;\n\n\t\tthis_component.setState( {\n\t\t\turl_update_status: 'attempting_update',\n\t\t});\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_update_wordpress_url_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.tip_jar_wp_update_wordpress_url_nonce );\n\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_update_wordpress_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh this page but over https\n\t\t\t\t\t\t\twindow.location.href = data.https_url;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\n\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\turl_update_status: 'unable_to_update',\n\t\t\t\t});\n\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_unhealthy_action() {\n\n\t\t// If no certificate exists\n\t\tif ( 'no_certificate_exists' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_description }</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\t// If a certificate does exist, but we just aren't running over https\n\t\tif ( 'certificate_exists' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\n\t\t\tif ( ! this.state.url_update_status ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className=\"button\" onClick={ this.update_wordpress_url_to_https.bind( this ) }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.button_text }</button>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( 'attempting_update' == this.state.url_update_status ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<MP_WP_Admin_Spinner />\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( 'unable_to_update' == this.state.url_update_status ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.update_failed_title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.update_failed_description }</div>\n\t\t\t\t\t\t<button className=\"button\" onClick={ this.update_wordpress_url_to_https.bind( this ) }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.button_text }</button>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t{ this.render_unhealthy_action() }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Stripe_Connect_Health_Check = class Tip_Jar_WP_Stripe_Connect_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tlightbox_open: false\n\t\t}\n\t};\n\n\tcomponentDidMount() {\n\t\tthis.handle_open_status_based_on_url().then( () => {\n\t\t\t// If lightbox containing this component is open in the lightbox views, set the redirect URL on the server so it opens this lightbox\n\t\t\tthis.set_stripe_success_redirect_on_server( this.state.lightbox_open );\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\tthis.handle_open_status_based_on_url().then( () => {\n\n\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\n\t\t\t// If lightbox containing this component is open in the lightbox views, set the redirect URL on the server so it opens this lightbox\n\t\t\tthis.set_stripe_success_redirect_on_server( this.state.lightbox_open );\n\t\t} );\n\n\t}\n\n\thandle_open_status_based_on_url() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// If a lightbox is open based on the setting in the main component\n\t\t\tif ( this.props.main_component && this.props.main_component.state.lightbox_visual_state ) {\n\t\t\t\t// Check if that lightbox is us!\n\t\t\t\tif ( this.props.this_lightbox_slug == Object.keys(this.props.main_component.state.lightbox_visual_state)[0] ) {\n\n\t\t\t\t\t// The lightbox holding this component is showing. Therefore, set that status in this component as well.\n\t\t\t\t\tif ( ! this.state.lightbox_open ) {\n\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\tlightbox_open: true\n\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\tresolve( this.state );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If the current lightbox in the URL is not us, close this one.\n\t\t\t\telse {\n\t\t\t\t\tif ( this.state.lightbox_open ) {\n\t\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\t\tlightbox_open: false\n\t\t\t\t\t\t}, () => {\n\t\t\t\t\t\t\tresolve( this.state );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tset_stripe_success_redirect_on_server( redirect_to_this_lightbox ) {\n\n\t\tif ( ! redirect_to_this_lightbox ) {\n\t\t\tvar tjwp_scsr_mode = '';\n\t\t} else {\n\t\t\tvar tjwp_scsr_mode = this.props.health_check_key;\n\t\t}\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_set_tjwp_scsr', tjwp_scsr_mode);\n\t\tpostData.append('tip_jar_wp_lightbox_suffix', this.props.slug_suffix);\n\t\tpostData.append('tip_jar_wp_set_tjwp_scsr_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.tip_jar_wp_set_tjwp_scsr_nonce);\n\n\t\tvar this_component = this;\n\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_set_stripe_connect_success_url, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} );\n\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t{ ( () => {\n\t\t\t\t\tif ( this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text ) {\n\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t\t<a className='tipjarwp-stripe-connect' href={ this.props.data[this.props.health_check_key].unhealthy.component_data.stripe_connect_url }>\n\t\t\t\t\t\t\t\t\t<span>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text }</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} ) () }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Stripe_Webhook_Health_Check = class Tip_Jar_WP_Stripe_Webhook_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\twebhook_copied: false\n\t\t}\n\n\t\tthis.copy_text_field = React.createRef();\n\t\tthis.set_input_field_as_ref = this.set_input_field_as_ref.bind( this );\n\t};\n\n\tget_connect_button_text() {\n\t\treturn this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text;\n\t}\n\n\tcopy_text( ref_to_copy ) {\n\t\tif ( ! ref_to_copy ) {\n\t\t\treturn;\n\t\t}\n\t\tref_to_copy.select();\n document.execCommand('copy');\n this.setState({ webhook_copied: true });\n\t}\n\n\tset_input_field_as_ref( element ) {\n\t\tthis.copy_text_field = element;\n\t}\n\n\tclick_to_copy_button() {\n\n\t\tif ( this.state.webhook_copied ) {\n\t\t\treturn( <button onClick={ this.copy_text.bind( this, this.copy_text_field ) } className=\"button\">{ 'Copied!' }</button> );\n\t\t} else {\n\t\t\treturn( <button onClick={ this.copy_text.bind( this, this.copy_text_field ) } className=\"button\">{ 'Click to copy' }</button> );\n\t\t}\n\n\t}\n\n\thandle_server_response( data ) {\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Wait for 1 second then refresh\n\t\t\tsetTimeout( () => {\n\t\t\t\tif ( data.success ) {\n\t\t\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}, 300 );\n\n\t\t} )\n\t}\n\n\trender_unhealthy_actions() {\n\n\t\tif ( 'localhost' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\t\t\treturn (\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tif ( 'live_site' == this.props.data[this.props.health_check_key].unhealthy.mode ) {\n\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-steps' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.description }</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t<div className={ 'mpwpadmin-copy-text-container' }>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t\t\tref={ this.set_input_field_as_ref }\n\t\t\t\t\t\t\t\t\tvalue={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.url_to_copy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ this.click_to_copy_button() }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_1 }</li>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_2 }</li>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_3 }</li>\n\t\t\t\t\t\t\t\t<li>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.description.line_4 }</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t<a className='tipjarwp-stripe-connect' target=\"_blank\" href={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.stripe_connect_url }>\n\t\t\t\t\t\t\t\t<span>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step2.stripe_connect_button_text }</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.title }</div>\n\t\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.description }</div>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\t\t\t\tvar DynamicReactComponent = eval( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field.react_component );\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\t\t\t\t\tid={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field.id }\n\t\t\t\t\t\t\t\t\t\t\tslug={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field.id }\n\t\t\t\t\t\t\t\t\t\t\tprops={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step3.input_field }\n\t\t\t\t\t\t\t\t\t\t\tupdate_context={ this.handle_server_response.bind( this ) }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} )()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t{ this.render_unhealthy_actions() }\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_WP_Mail_Health_Check = class Tip_Jar_WP_WP_Mail_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\temail_value: '',\n\t\t\temail_send_status: false,\n\t\t\tsendgrid_install_status: false\n\t\t}\n\n\t\tthis.email_field = React.createRef();\n\n\t};\n\n\tcomponentDidMount() {\n\n\t\t// If this component was told we are fixing_it_again, reset the variables on the server just in case we are re-testing the email, and it was previously successful.\n\t\tif( this.props.fixing_it_again ) {\n\t\t\tthis.handle_fixing_it_again();\n\t\t}\n\n\t\tvar force_to_step = this.props.data[this.props.health_check_key].unhealthy.component_data.force_to_step;\n\n\t\t// If we should force to a step\n\t\tif ( force_to_step ) {\n\t\t\tif ( 'test_email_successfuly_sent' == force_to_step ) {\n\t\t\t\tthis.setState( {\n\t\t\t\t\temail_send_status: 'sent'\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tthis.setState( {\n\t\t\temail_value: this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.email_address_to_send\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\n\t\t// If this component was told we are fixing_it_again, reset the variables on the server just in case we are re-testing the email, and it was previously successful.\n\t\tif( this.props.fixing_it_again ) {\n\t\t\tthis.handle_fixing_it_again();\n\t\t}\n\n\t}\n\n\twait_for_email_confirmation() {\n\n\t\t// Check the server every 3 seconds to see if they confirmed on a phone, or different device.\n\t\tvar refreshing_server = setInterval( () => {\n\t\t\tif ( 'sent' == this.state.email_send_status ) {\n\n\t\t\t\t// If we are still waiting (still unhealthy)\n\t\t\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\t\t\t// Check the server again\n\t\t\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\t\t\t\t}\n\t\t\t\t// If the wp_mail check is suddenly healthy, stop checking for updates\n\t\t\t\telse {\n\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\temail_send_status: 'succeeded'\n\t\t\t\t\t} );\n\n\t\t\t\t\tclearInterval( refreshing_server );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the status of the test email is no longer \"sent\", stop checking the server for updates.\n\t\t\telse {\n\t\t\t\tclearInterval( refreshing_server );\n\t\t\t}\n\t\t}, 4000 );\n\n\t\t// Only do this waiting/refreshing for 2 minutes. This results in a maximum of 30 checks over 2 minutes.\n\t\tsetTimeout( () => {\n\t\t\tclearInterval( refreshing_server );\n\t\t}, 120000 );\n\n\t}\n\n\tget_connect_button_text() {\n\t\treturn this.props.data[this.props.health_check_key].unhealthy.component_data.strings.stripe_connect_button_text;\n\t}\n\n\tsend_email( email_address ) {\n\n\t\tthis.setState( {\n\t\t\temail_send_status: 'sending'\n\t\t});\n\n\t\tvar this_component = this;\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_email', email_address );\n\t\tpostData.append('tip_jar_wp_lightbox_suffix', this.props.slug_suffix );\n\t\tpostData.append('tip_jar_wp_send_test_email_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.send_test_email_nonce );\n\n\t\t// Send a test email\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.server_api_endpoint_sent_test_email, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\temail_send_status: 'unable_to_attempt_send',\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\temail_send_status: 'sent',\n\t\t\t\t\t\t\t}, () => {\n\n\t\t\t\t\t\t\t\tthis_component.wait_for_email_confirmation();\n\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\temail_send_status: 'attempted_and_failed',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\n\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\temail_send_status: 'attempted_but_server_response_incorrect',\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\temail_send_status: 'unable_to_attempt',\n\t\t\t\t});\n\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\tinstall_sendgrid_plugin() {\n\n\t\tthis.setState( {\n\t\t\tsendgrid_install_status: 'installing'\n\t\t});\n\n\t\tvar this_component = this;\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append('tip_jar_wp_install_sendgrid_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.install_sendgrid_nonce );\n\n\t\t// Send a test email\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.server_api_endpoint_install_sendgrid, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\n\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\tsendgrid_install_status: 'failed',\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\temail_send_status: 'done',\n\t\t\t\t\t\t\t\tsendgrid_install_status: 'succeeded',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\t\tsendgrid_install_status: 'attempted_and_failed',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\n\t\t\t\t\t\tthis_component.setState( {\n\t\t\t\t\t\t\tsendgrid_install_status: 'attempted_but_server_response_incorrect',\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\n\t\t\t\tthis_component.setState( {\n\t\t\t\t\tsendgrid_install_status: 'unable_to_attempt',\n\t\t\t\t});\n\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t}\n\t\t);\n\t}\n\n\thandle_fixing_it_again() {\n\n\t\tconsole.log( 'sdgsgsgsdg' );\n\n\t\tthis.reset_wp_mail_flag_on_server().then( () => {\n\n\t\t\t// Reset all of the local state variables to their beginning statuses\n\t\t\tthis.setState( {\n\t\t\t\temail_value: this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.email_address_to_send,\n\t\t\t\temail_send_status: false,\n\t\t\t\tsendgrid_install_status: false\n\t\t\t} );\n\n\t\t} );\n\t}\n\n\thandle_did_not_get_email() {\n\n\t\tthis.setState( {\n\t\t\temail_send_status: 'attempted_and_failed'\n\t\t});\n\n\t\tthis.reset_wp_mail_flag_on_server();\n\t}\n\n\treset_wp_mail_flag_on_server() {\n\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Format the data that we'll send to the server\n\t\t\tvar postData = new FormData();\n\t\t\tpostData.append('tip_jar_wp_reset_wp_mail_health_check_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.reset_wp_mail_health_check_nonce );\n\n\t\t\tthis.setState( {\n\t\t\t\tloading: true\n\t\t\t} );\n\n\t\t\t// Set the test email as being not received\n\t\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.server_api_endpoint_reset_wp_mail_health_check, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tmode: \"same-origin\",\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t\theaders: {},\n\t\t\t\tbody: postData\n\t\t\t} ).then( () => {\n\t\t\t\tthis.props.main_component.refresh_mpwpadmin().then( () => {\n\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\tloading: false\n\t\t\t\t\t} );\n\n\t\t\t\t\tresolve();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t} );\n\t}\n\n\thandle_email_change( event ) {\n\t\tthis.setState( {\n\t\t\temail_value: event.target.value\n\t\t} );\n\t}\n\n\tclick_to_send_button( email_address ) {\n\n\t\tvar button_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.send_test_email;\n\n\t\t// If we were unable to attempt a send (possibly no internet connection)\n\t\tif ( 'unable_to_attempt' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.unable_to_attempt_email;\n\t\t}\n\n\t\t// There's an error happening on the server\n\t\tif ( 'attempted_but_server_response_incorrect' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.attempted_but_server_response_incorrect;\n\t\t}\n\n\t\t// If wp_mail failed\n\t\tif ( 'attempted_and_failed' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.attempted_and_failed;\n\t\t}\n\n\t\t// If wp_mail sent the email\n\t\tif ( 'sent' == this.state.email_send_status ) {\n\t\t\tbutton_text = this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.email_sent;\n\t\t}\n\n\t\treturn( <button onClick={ this.send_email.bind( this, this.state.email_value ) } className=\"button\">{ button_text }</button> );\n\n\t}\n\n\thandle_server_response_from_sendgrid_api_save( data ) {\n\t\treturn new Promise( (resolve, reject) => {\n\n\t\t\t// Wait for 1 second then refresh\n\t\t\tsetTimeout( () => {\n\t\t\t\tif ( data.success ) {\n\t\t\t\t\tthis.props.main_component.refresh_mpwpadmin();\n\n\t\t\t\t\t// Restart the email checking process\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\temail_send_status: 'restart',\n\t\t\t\t\t\tsendgrid_install_status: false\n\t\t\t\t\t} );\n\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}, 300 );\n\n\t\t} )\n\t}\n\n\thandle_use_my_own_email_plugin() {\n\n\t\t// Restart the email checking process\n\t\tthis.setState( {\n\t\t\temail_send_status: 'custom_email_plugin',\n\t\t\tsendgrid_install_status: false\n\t\t} );\n\n\t}\n\n\trender_modal_header() {\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t);\n\t}\n\n\trender_spinner() {\n\t\tif ( 'sending' == this.state.email_send_status || 'installing' == this.state.sendgrid_install_status ) {\n\t\t\treturn ( <MP_WP_Admin_Spinner /> );\n\t\t}\n\t}\n\n\trender_step_1() {\n\t\t// If we should show step 1\n\t\tif (\n\t\t\t! this.state.email_send_status ||\n\t\t\t'restart' == this.state.email_send_status ||\n\t\t\t'custom_email_plugin' == this.state.email_send_status ||\n\t\t\t'unable_to_attempt' == this.state.email_send_status ||\n\t\t\t'attempted_but_server_response_incorrect' == this.state.email_send_status\n\t\t) {\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ ( () => {\n\t\t\t\t\t\tif ( 'restart' == this.state.email_send_status ) {\n\t\t\t\t\t\t\treturn( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.restart_title );\n\t\t\t\t\t\t} else if( 'custom_email_plugin' == this.state.email_send_status ) {\n\t\t\t\t\t\t\treturn( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.custom_email_plugin_title );\n\t\t\t\t\t\t}else {\n\t\t\t\t\t\t\treturn( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.title );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) () }\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.step1.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<div className={ 'mpwpadmin-copy-text-container' }>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tref={(input) => this.email_field = input}\n\t\t\t\t\t\t\tvalue={ this.state.email_value }\n\t\t\t\t\t\t\tonChange={ this.handle_email_change.bind( this ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ this.click_to_send_button( this.email_field ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_attempted_and_failed() {\n\t\t// If we should show step 2\n\t\tif ( 'attempted_and_failed' == this.state.email_send_status && 'installing' !== this.state.sendgrid_install_status ) {\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className='button' onClick={ this.install_sendgrid_plugin.bind( this ) }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.install_sendgrid_text }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className='button' onClick={ this.handle_use_my_own_email_plugin.bind( this ) }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.use_my_own }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_enter_sendgrid_api_key() {\n\n\t\t// Only show this section if we are done trying to test the email\n\t\tif ( 'done' !== this.state.email_send_status ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( 'succeeded' !== this.state.sendgrid_install_status ) {\n\t\t\t<div>{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.attempted_and_failed.sendgrid_install_failed }</div>\n\t\t}\n\n\t\treturn(\n\t\t\t<React.Fragment>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<a className={ 'button' } target=\"_blank\" href={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.sendgrid_url }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.create_sendgrid_account.register_with_sendgrid_button_text }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<a className={ 'button' } target=\"_blank\" href={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.grab_api_key_url }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.already_have_sendgrid_account.grab_your_api_key_button_text }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\t\tvar DynamicReactComponent = eval( this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field.react_component );\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\t\t\tid={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field.id }\n\t\t\t\t\t\t\t\t\tslug={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field.id }\n\t\t\t\t\t\t\t\t\tprops={ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.enter_sendgrid_api_key.input_field }\n\t\t\t\t\t\t\t\t\tupdate_context={ this.handle_server_response_from_sendgrid_api_save.bind( this ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} )()\n\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</React.Fragment>\n\t\t)\n\n\t}\n\n\trender_test_email_successfuly_sent() {\n\t\t// If we should show step 2\n\t\tif ( 'sent' == this.state.email_send_status ) {\n\t\t\treturn(\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-step' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.description }</div>\n\t\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t\t<button className='button' onClick={ this.handle_did_not_get_email.bind( this ) }>\n\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.steps.test_email_successfuly_sent.did_not_get_email_button_text }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t{ this.render_modal_header() }\n\t\t\t<div className={ 'mpwpadmin-lightbox-input-steps' }>\n\t\t\t\t{ this.render_spinner() }\n\t\t\t\t{ this.render_step_1() }\n\t\t\t\t{ this.render_test_email_successfuly_sent() }\n\t\t\t\t{ this.render_attempted_and_failed() }\n\t\t\t\t{ this.render_enter_sendgrid_api_key() }\n\t\t\t</div>\n\t\t\t</div>\n\t\t)\n}\n\nrender_healthy_output() {\n\treturn(\n\t\t<div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t<div className={ 'mpwpadmin-lightbox-icon' }>\n\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t</div>\n\t\t\t</div>\n\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t</div>\n\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t{ ( () => {\n\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} )() }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nrender_based_on_health() {\n\n\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\treturn( this.render_unhealthy_output() );\n\t}\n\n\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\treturn( this.render_healthy_output() );\n\t}\n\n}\n\nrender(){\n\n\tif ( this.state.loading ) {\n\t\treturn( <MP_WP_Admin_Spinner /> );\n\t}\n\n\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\treturn( '' );\n\t}\n\n\treturn (\n\t\t<React.Fragment>\n\t\t{ this.render_based_on_health() }\n\t\t</React.Fragment>\n\t);\n\n}\n\n};\n","window.Tip_Jar_WP_Simple_Text_Health_Check = class Tip_Jar_WP_Simple_Text_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-title\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_title }</div>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-input-step-description\">{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.required_action_description }</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Setting_Wizard = class Tip_Jar_WP_Setting_Wizard extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\trender_unhealthy_output() {\n\n\t\tvar DynamicReactComponent = eval( this.props.data[this.props.health_check_key].unhealthy.component_data.input_field.react_component );\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<div className={ 'mpwpadmin-setting-container ' + 'mpwpadmin-setting-' + this.props.health_check_key + '-container' }>\n\t\t\t\t\t\t<DynamicReactComponent\n\t\t\t\t\t\t\tmain_component={ this.props.main_component }\n\t\t\t\t\t\t\tid={ this.props.health_check_key }\n\t\t\t\t\t\t\tslug={ this.props.health_check_key }\n\t\t\t\t\t\t\tprops={ this.props.data[this.props.health_check_key].unhealthy.component_data.input_field }\n\t\t\t\t\t\t\tclass_name={ 'mpwpadmin-setting mpwpadmin-setting-' + this.props.health_check_key }\n\t\t\t\t\t\t\tcontext_id={ null }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_healthy_output() {\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-icon-container' }>\n\t\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t{ ( () => {\n\t\t\t\t\t\tif ( this.props.main_component.state.data.general_config.doing_wizard && this.props.next_lightbox_slug ) {\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t<button className=\"button\" onClick={ this.props.main_component.set_all_current_visual_states.bind( this, false, { [this.props.next_lightbox_slug]: {} } ) }>\n\t\t\t\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )() }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_healthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Do_Wizard_Health_Check = class Tip_Jar_WP_Do_Wizard_Health_Check extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\tcomponentDidUpdate() {\n\t\t// If this component was told we are fixing_it_again, reset the variable on the server which controls the onboarding wizard's status.\n\t\tif( this.props.fixing_it_again ) {\n\t\t\tthis.start_wizard();\n\t\t}\n\t}\n\n\tstart_wizard() {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append( 'tip_jar_wp_start_wizard_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.start_wizard_nonce );\n\n\t\tvar this_component = this;\n\n\t\t// Set the onboard wizard to be in progress\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_tip_jar_wp_start_wizard, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log( data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh mpwpadmin\n\t\t\t\t\t\t\tthis_component.props.main_component.refresh_mpwpadmin();\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t}\n\n\tset_wizard_to_later() {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append( 'tip_jar_wp_start_wizard_nonce', this.props.data[this.props.health_check_key].unhealthy.component_data.wizard_later_nonce );\n\n\t\tvar this_component = this;\n\n\t\t// Set the onboard wizard to be in progress\n\t\tfetch( this.props.data[this.props.health_check_key].unhealthy.component_data.server_api_endpoint_tip_jar_wp_wizard_later, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log( data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh mpwpadmin\n\t\t\t\t\t\t\tthis_component.props.main_component.refresh_mpwpadmin();\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t}\n\n\thandle_do_wizard_click() {\n\n\t\tthis.start_wizard();\n\n\t\tthis.props.main_component.set_all_current_visual_states( false, { [this.props.next_lightbox_slug]: {} } );\n\n\t}\n\n\thandle_later_click() {\n\n\t\t// Set the status of the wizard to \"later\" on the server.\n\t\tthis.set_wizard_to_later();\n\n\t\t// Close the lightbox\n\t\tthis.props.main_component.set_all_current_visual_states( false, {} );\n\n\t}\n\n\trender_unhealthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<button className=\"button\" onClick={ this.handle_later_click.bind( this ) }>\n\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.do_later_button_text }\n\t\t\t\t\t</button>\n\t\t\t\t\t<button className=\"button\" onClick={ this.handle_do_wizard_click.bind( this ) }>\n\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].unhealthy.component_data.strings.next_wizard_step_button_text }\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\t// The healthy and unhealthy output are exactly the same for the Do Wizard health check.\n\t\tif ( this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t\tif ( ! this.props.data[this.props.health_check_key].is_healthy ) {\n\t\t\treturn( this.render_unhealthy_output() );\n\t\t}\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n","window.Tip_Jar_WP_Complete_Wizard = class Tip_Jar_WP_Complete_Wizard extends React.Component {\n\n\tconstructor( props ) {\n\t\tsuper(props);\n\t};\n\n\tcomplete_wizard() {\n\n\t\t// Format the data that we'll send to the server\n\t\tvar postData = new FormData();\n\t\tpostData.append( 'tip_jar_wp_complete_wizard_nonce', this.props.data[this.props.health_check_key].healthy.component_data.complete_wizard_nonce );\n\n\t\tvar this_component = this;\n\n\t\t// Set the onboard wizard to be complete\n\t\tfetch( this.props.data[this.props.health_check_key].healthy.component_data.server_api_endpoint_complete_wizard, {\n\t\t\tmethod: \"POST\",\n\t\t\tmode: \"same-origin\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\theaders: {},\n\t\t\tbody: postData\n\t\t} ).then(\n\t\t\tfunction( response ) {\n\t\t\t\tif ( response.status !== 200 ) {\n\t\t\t\t\tconsole.log( data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Examine the text in the response\n\t\t\t\tresponse.json().then(\n\t\t\t\t\tfunction( data ) {\n\t\t\t\t\t\tif ( data.success ) {\n\n\t\t\t\t\t\t\t// Refresh mpwpadmin\n\t\t\t\t\t\t\tthis_component.props.main_component.refresh_mpwpadmin().then( () => {\n\t\t\t\t\t\t\t\t// Close the lightbox\n\t\t\t\t\t\t\t\tthis_component.props.main_component.set_all_current_visual_states( false, {} );\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( data );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t).catch(\n\t\t\t\t\tfunction( err ) {\n\t\t\t\t\t\tconsole.log('Fetch Error: ', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t).catch(\n\t\t\tfunction( err ) {\n\t\t\t\tconsole.log('Fetch Error :-S', err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t);\n\n\t}\n\n\trender_healthy_output() {\n\n\t\treturn(\n\t\t\t<div>\n\t\t\t\t<div className=\"mpwpadmin-lightbox-icon\">\n\t\t\t\t\t<img src={ this.props.data[this.props.health_check_key].icon } />\n\t\t\t\t</div>\n\t\t\t\t<h2 className={ 'mpwpadmin-lightbox-input-title' }>{ this.props.data[this.props.health_check_key].healthy.component_data.strings.title }</h2>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-input-description' }>\n\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.description }\n\t\t\t\t</div>\n\t\t\t\t<div className={ 'mpwpadmin-lightbox-action-area' }>\n\t\t\t\t\t<button className=\"button\" onClick={ this.complete_wizard.bind( this ) }>\n\t\t\t\t\t\t{ this.props.data[this.props.health_check_key].healthy.component_data.strings.complete_wizard_button_text }\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender_based_on_health() {\n\n\t\t// The healthy and unhealthy output are exactly the same for the Complete Wizard health check.\n\t\treturn( this.render_healthy_output() );\n\n\t}\n\n\trender(){\n\n\t\tif ( ! this.props.data[this.props.health_check_key] ) {\n\t\t\treturn( '' );\n\t\t}\n\n\t\treturn (\n\t\t\t<React.Fragment>\n\t\t\t\t{ this.render_based_on_health() }\n\t\t\t</React.Fragment>\n\t\t);\n\n\t}\n\n};\n"],"sourceRoot":""} -
tip-jar-wp/trunk/includes/frontend/css/build/tip-jar-wp.css
r2449460 r2953538 1 @media only screen and (max-width:600px){.ElementsApp .InputElement,.tip-jar-wp-element * input[type=color],.tip-jar-wp-element * input[type=date],.tip-jar-wp-element * input[type=datetime-local],.tip-jar-wp-element * input[type=datetime],.tip-jar-wp-element * input[type=email],.tip-jar-wp-element * input[type=month],.tip-jar-wp-element * input[type=number],.tip-jar-wp-element * input[type=password],.tip-jar-wp-element * input[type=search],.tip-jar-wp-element * input[type=tel],.tip-jar-wp-element * input[type=text],.tip-jar-wp-element * input[type=time],.tip-jar-wp-element * input[type=url],.tip-jar-wp-element * input[type=week],.tip-jar-wp-element * select:focus,.tip-jar-wp-element * textarea,.tip-jar-wp-element .ElementsApp{font-size:19px!important}}.tip-jar-wp-element *{font-family:sans-serif;text-transform:none}.tip-jar-wp-element {width:100%}.tip-jar-wp-element,.tip-jar-wp-element *{box-sizing:border-box;white-space:pre-line}.tip-jar-wp-hidden-view{display:none;opacity:0}.tip-jar-wp-element-json{display:none}@keyframes tip-jar-wp-fade-in-up{from{transform:translate3d(0,2px,0);opacity:0}to{transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes tip-jar-wp-fade-in-up{from{transform:translate3d(0,2px,0);opacity:0}to{transform:translate3d(0,0,0);opacity:1}}.tip-jar-wp-current-view{margin-top:0!important;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-name:tip-jar-wp-fade-in-up;animation-name:tip-jar-wp-fade-in-up;overflow:hidden}.tip-jar-wp-fancy-container{filter:drop-shadow(0 2px 2px rgba(34,36,38,.15));-webkit-filter:drop-shadow(0 2px 2px rgba(34,36,38,.15));position:relative}.tip-jar-wp-fancy-container.tip-jar-wp-current-view.tip-jar-wp-has-featured-media{margin:-38px 0 0 0!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-component-box{width:100%;box-sizing:border-box;color:#333;background-color:#f5f5f7;border-radius:6px;text-align:left;border:1px solid rgba(0,0,0,.1);z-index:2147481000;transition-delay:1ms;transition:all .3s ease-in-out,-webkit-transform .3s ease-in-out}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-box-view{padding:36px}@media only screen and (max-width:600px){.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-box-view{padding:15px}}.tip-jar-wp-featured-media-container{width:85%;margin:0 auto;z-index:1;position:relative}.tip-jar-wp-featured-media{top:0;right:0;left:0;margin:2px auto;z-index:1;border-radius:6px;background-color:#000;box-shadow:0 0 0 1px rgba(0,0,0,.18),0 2px 2px 0 rgba(0,0,0,.08);padding:56.2% 0 0;width:100%;height:100%}.tip-jar-wp-featured-media iframe{position:absolute;border:0;border-radius:6px 6px 0 0;top:0;left:0;width:100%;height:100%}.tip-jar-wp-featured-media iframe{border-radius:6px}.tip-jar-wp-header-logo{width:100%;height:70px;z-index:999999;top:0}.tip-jar-wp-header-logo-container{position:relative;top:0;right:0;left:0;width:70px;height:70px;margin:2px auto;z-index:1}.tip-jar-wp-header-logo-inner-bevel{border:1px solid rgba(0,0,0,.2);width:64px;height:64px;border-radius:100%;box-shadow:inset 0 1px 0 0 hsla(0,0%,100%,.1);position:absolute;top:3px;left:3px;z-index:2}.tip-jar-wp-header-logo-img{border:3px solid #fff;width:70px;height:70px;border-radius:100%;box-shadow:0 0 0 1px rgba(0,0,0,.18),0 2px 2px 0 rgba(0,0,0,.08);position:absolute;top:0;left:0;z-index:1;background-size:cover;background-position:center;clip-path:circle(100%);background-color:#fff}.Header-logoWrap{position:absolute;top:0;right:0;left:0;width:70px;height:70px;margin:2px auto}.Header-logoBevel{border:1px solid rgba(0,0,0,.2);width:64px;height:64px;border-radius:100%;box-shadow:inset 0 1px 0 0 hsla(0,0%,100%,.1);position:absolute;top:3px;left:3px}.Header-logoBorder{border:3px solid #fff;width:70px;height:70px;border-radius:100%;box-shadow:0 0 0 1px rgba(0,0,0,.18),0 2px 2px 0 rgba(0,0,0,.08);position:absolute;top:0;left:0}.Header-logoImage{background:#fff;width:64px;height:64px;margin:3px;border-radius:100%;background-position:50% 50%;background-size:cover;display:inline-block}.Header-logoImageCatchError{display:none}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header{position:relative;background-color:#e8e9eb;border-bottom:1px solid #d9d9d9;padding:25px;border-radius:6px 6px 0 0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header{padding:25px 10px 25px 10px;text-align:center;display:grid}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container.tip-jar-wp-has-featured-media .tip-jar-wp-header{padding:50px 10px 25px 10px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header h1{margin:0 auto;display:inline-block;vertical-align:top;font-size:18px;line-height:1.5;font-weight:700;color:#000;text-shadow:0 1px 0 #fff}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header h1:before{all:unset}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header>*{margin:0 auto}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header .tip-jar-wp-header-media,.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header h2{display:inline-block;vertical-align:top;line-height:1.5;font-size:15px;font-weight:500;color:#5b5b65;text-shadow:0 1px 0 #fff;padding:10px 0 6px 0;max-width:80%;text-align:center}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header h2:before{all:unset}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-close-btn{cursor:pointer;position:absolute;top:5px;right:5px;width:19px;height:19px;line-height:0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-close-btn img{width:18px;height:19px;opacity:1}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-input-instruction{width:100%;color:#6f6f76;text-shadow:0 1px 0 hsla(0,0%,100%,.4);vertical-align:top;font-size:15px;text-transform:unset;margin-bottom:5px}.tip-jar-wp-cc-form.tip-jar-wp-mobile .tip-jar-wp-input-instruction{overflow:hidden;white-space:nowrap}.tip-jar-wp-payment-form-container{text-align:left;border-top:1px solid #fff}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field-container:first-child .tip-jar-wp-payment-field{padding-top:0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field-container .tip-jar-wp-payment-field{padding-top:20px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-instruction-error{color:#fa755a}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-amount-container{display:grid;grid-auto-columns:min-content min-content auto;column-gap:0;row-gap:0;justify-items:stretch;padding:0;background-color:#fff;border-radius:4px;border:1px solid #d4d4d4;width:min-content}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-amount-container.currency-search-visible{width:100%}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-amount-container>div:nth-child(1){grid-column:1}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-amount-container>div:nth-child(2){grid-column:2}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-amount-container>div:nth-child(3){grid-column:3}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field input.tip-jar-wp-tip-amount-input{width:80px;border:none;background:0 0;padding:0 10px 0 10px;box-shadow:none}@media only screen and (max-width:600px){.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field input.tip-jar-wp-tip-amount-input{width:65px}}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field input.tip-jar-wp-tip-amount-input:focus{outline:0;box-shadow:none!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-tip-currency-symbol{font-size:15px;padding:10px;background-color:#f5f5f7;border-right:1px solid #d4d4d4;border-radius:4px 0 0 4px;place-self:stretch;display:flex;align-items:center}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-tip-amount-input-container{place-self:stretch;display:flex;align-items:center;box-shadow:inset 1px 1px 2px #0000000d}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-currency-switcher{display:grid;justify-items:stretch;font-size:15px;white-space:nowrap;line-height:1;color:#6f6f76;background-color:#f5f5f7;border-left:1px solid #d4d4d4;border-radius:0 4px 4px 0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-currency-switcher .tip-jar-wp-tip-currency-code-toggle-btn{font-size:15px;white-space:nowrap;line-height:1;color:#6f6f76;padding:0;background-color:#f5f5f7;border:none;border-radius:0 4px 4px 0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-currency-switcher .tip-jar-wp-tip-currency-code{display:grid;justify-items:stretch;grid-template-columns:min-content auto}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-tip-currency-flag-container{padding:10px;grid-column:1;place-self:center;width:52px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-tip-currency-text-container{grid-column:2;align-self:center;padding:10px 10px 10px 0;text-align:left;white-space:nowrap;word-break:keep-all}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-tip-currency-flag{width:32px;height:32px;background-size:512px;margin:0!important;opacity:1}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-buttons-container .tip-jar-wp-radio-button-container{box-shadow:none;font-size:15px;line-height:18px;text-shadow:0 1px 0 #fff;color:#000!important;text-decoration:none!important;box-shadow:inset 0 0 1px 0 #fff,0 1px 0 0 #fff;border-radius:4px;border:1px solid #d4d4d4}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-container.tip-jar-wp-radio-current{box-shadow:none;font-size:15px;line-height:18px;text-shadow:0 1px 0 #fff;color:#000!important;text-decoration:none!important;cursor:pointer;box-shadow:inset 0 0 1px 0 hsla(240,1%,49%,.3),0 1px 0 0 hsla(0,0%,100%,.7)!important;background-color:#f0f0f3;border-radius:4px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-outer{display:block;width:100%;text-align:center}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-inner{display:inline-block}.tip-jar-wp-element label{width:100%!important;display:block!important;margin:0;font-weight:400}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-container label{padding:10px;display:flex;cursor:pointer}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-container label [type=radio]{vertical-align:baseline}@media only screen and (max-width:600px){.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-container label [type=radio]{vertical-align:middle}}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-buttons-container{display:grid;column-gap:15px;row-gap:15px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-buttons-container .tip-jar-wp-radio-button-container:nth-child(2){grid-column:2}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-buttons-container .tip-jar-wp-radio-button-container:nth-child(3){grid-column:1}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-buttons-container .tip-jar-wp-radio-button-container:nth-child(4){grid-column:2}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-after{display:inline-block;margin-left:5px;font-size:15px;line-height:1;vertical-align:middle;word-break:break-word}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .StripeElement:not(.PaymentRequestButton),.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container input:not([type=checkbox]):not([type=radio]):not(.tip-jar-wp-tip-amount-input),.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container textarea{box-shadow:inset 0 1px 1px 0 hsla(240,1%,49%,.3),0 1px 0 0 hsla(0,0%,100%,.7)}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .StripeElement:not(.PaymentRequestButton),.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container input:not([type=radio]):not([type=checkbox]):not(.tip-jar-wp-tip-amount-input),.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container textarea{-webkit-transition:box-shadow 150ms ease;transition:box-shadow 150ms ease;padding:9px!important;background-color:#fff;border-radius:4px;border:1px solid #d4d4d4;width:100%;margin:0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-mobile .tip-jar-wp-cc-multi-field .tip-jar-wp-cc-multi-field-input-area{position:relative}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-mobile .tip-jar-wp-cc-multi-field .StripeElement:not(.PaymentRequestButton),.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-mobile .tip-jar-wp-cc-multi-field input{border-radius:0;border-top:0;padding-left:45px!important;font-size:19px!important;line-height:1!important;text-indent:0!important;box-shadow:none!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-mobile .tip-jar-wp-cc-multi-field .tip-jar-wp-cc-multi-field-input-area:first-child .StripeElement:not(.PaymentRequestButton){border-top:1px solid #d4d4d4;border-radius:4px 4px 0 0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-mobile .tip-jar-wp-cc-multi-field .tip-jar-wp-cc-multi-field-input-area:last-child input{border-radius:0 0 4px 4px}.tip-jar-wp-mobile{position:relative}.tip-jar-wp-cc-multi-field .tip-jar-wp-cc-form-icon{position:absolute;width:48px;z-index:1}.tip-jar-wp-cc-multi-field .tip-jar-wp-cc-form-icon.tip-jar-wp-credit-card-icon{top:-4px;left:-1px}.tip-jar-wp-cc-multi-field .tip-jar-wp-cc-form-icon.tip-jar-wp-calendar-icon{top:-4px;left:0}.tip-jar-wp-cc-multi-field .tip-jar-wp-cc-form-icon.tip-jar-wp-lock-icon{top:-4px;left:0}.tip-jar-wp-cc-multi-field .tip-jar-wp-cc-form-icon.tip-jar-wp-zipcode-icon{top:-4px;left:0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-mobile .tip-jar-wp-cc-multi-field .tip-jar-wp-cc-multi-field-input-area .tip-jar-wp-cc-multi-field-input-zip-code{padding-left:45px!important;border-top:0!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field input[type=checkbox]{width:initial;margin-right:9px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .StripeElement--focus,.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field input:focus{box-shadow:0 1px 3px 0 #bebebe!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .StripeElement--invalid,.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-input-error{border-color:#fa755a!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .StripeElement--complete,.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-input-success{border-color:#21da38!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .StripeElement--webkit-autofill{background-color:#fefde5!important}.tip-jar-wp-element input{border-radius:4px;padding:9px;font-size:15px;color:#000;margin:0}.tip-jar-wp-element .tip-jar-wp-text-button,.tip-jar-wp-element .tip-jar-wp-text-button:focus,.tip-jar-wp-element .tip-jar-wp-text-button:hover{background:0 0;text-decoration:underline;display:inline-block;padding:0;border:0;width:auto!important}.tip-jar-wp-pay-button,.tip-jar-wp-receipt-line-item-action{position:relative;padding:0;border-radius:4px;background-color:#3ea8e5;background-image:-webkit-gradient(linear,left top,left bottom,from(#44b1e8),to(#3098de));background-image:-webkit-linear-gradient(top,#44b1e8,#3098de);background-image:linear-gradient(-180deg,#44b1e8,#3098de);box-shadow:0 1px 0 0 rgba(46,86,153,.15),inset 0 1px 0 0 rgba(46,86,153,.1),inset 0 -1px 0 0 rgba(46,86,153,.4);font-size:17px;line-height:21px;height:37px;font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.12);color:#fff;cursor:pointer;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;width:100%;border:0}.tip-jar-wp-expandable-terms{margin-bottom:10px}.tip-jar-wp-terms-body{box-shadow:0 1px 3px 0 #e6ebf1;-webkit-transition:box-shadow 150ms ease;transition:box-shadow 150ms ease;padding:13px;background-color:#fff;border-radius:4px;border:1px solid #d4d4d4;width:100%}.tip-jar-wp-payment-error-message{box-shadow:0 1px 3px 0 #e6ebf1;-webkit-transition:box-shadow 150ms ease;transition:box-shadow 150ms ease;padding:13px;background-color:#fff;border-radius:4px;width:100%;border:#fa755a solid 1px;color:#fa755a;font-size:15px}.top-jar-wp-alternate-actions{padding-top:20px}.top-jar-wp-alternate-actions-separator{padding:0 5px;line-height:1;color:#6f6f76;vertical-align:top}.tip-jar-wp-confirmation-note{margin-top:20px}.tip-jar-wp-note-with-tip{width:85%}.tip-jar-wp-receipt{margin:30px 0 0 0}.tip-jar-wp-file-download-instructions-title,.tip-jar-wp-receipt-title{font-size:17px;line-height:18px;font-weight:700;color:#000;text-shadow:0 1px 0 #fff}.tip-jar-wp-receipt-field-space-below{margin-bottom:15px}.tip-jar-wp-receipt-line-item-title{margin:0;line-height:18px;font-weight:700;color:#000;text-shadow:0 1px 0 #fff}.tip-jar-wp-receipt-line-item-value{display:inline-block}.tip-jar-wp-arrangement-id{margin-top:15px}.tip-jar-wp-arrangement-actions{margin-top:15px}.tip-jar-wp-inline-card{display:grid;border-radius:4px;border:1px solid #d4d4d4;padding:0;column-gap:5px;box-shadow:inset 0 0 1px 0 hsla(240,1%,49%,.3),0 1px 0 0 hsla(0,0%,100%,.7)!important;background-color:#f0f0f3;align-items:center}.tip-jar-wp-card-icon{grid-column:1;width:20px;height:20px;vertical-align:sub;box-shadow:inset 0 0 1px 0 hsla(240,1%,49%,.3),0 1px 0 0 hsla(0,0%,100%,.7)!important;background-color:#f0f0f3;margin-left:5px}.tip-jar-wp-inline-card-number{grid-column:2;margin-right:5px}.tip-jar-wp-inline-update-button{grid-column:3}.tip-jar-wp-element .tip-jar-wp-inline-update-button>button,.tip-jar-wp-element .tip-jar-wp-inline-update-button>button:focus,.tip-jar-wp-element .tip-jar-wp-inline-update-button>button:hover{box-shadow:none;background-color:#f5f5f7;padding:5px;border-radius:0 4px 4px 0;box-shadow:none;font-size:13px;line-height:18px;font-weight:700;text-shadow:0 1px 0 #fff;color:#000!important;text-decoration:none;border-left:1px solid #d4d4d4}.tip-jar-wp-element .tip-jar-wp-email-receipt,.tip-jar-wp-element .tip-jar-wp-receipt-action-button{margin:20px 0 0 0}.tip-jar-wp-element .tip-jar-wp-print-receipt{margin:10px 0 10px 0}.tip-jar-wp-back-button-container{margin-bottom:20px}@media print{.tip-jar-wp-element *{text-shadow:none!important;transition:none!important;box-shadow:none!important;filter:none!important;-webkit-filter:none!important}.tip-jar-wp-element .tip-jar-wp-confirmation-note,.tip-jar-wp-element .tip-jar-wp-email-receipt,.tip-jar-wp-element .tip-jar-wp-manage-payments-button,.tip-jar-wp-element .tip-jar-wp-print-receipt{display:none}}.tip-jar-wp-print-page .tip-jar-wp-element .tip-jar-wp-confirmation-note,.tip-jar-wp-print-page .tip-jar-wp-element .tip-jar-wp-print-receipt{display:none}.tip-jar-wp-spinner-container{width:100%;height:100%;text-align:center}.tip-jar-wp-pay-button .tip-jar-wp-spinner-container{display:inline}.tip-jar-wp-spinner{width:20px;height:20px;display:inline-block;position:relative;vertical-align:middle}.tip-jar-wp-double-bounce1,.tip-jar-wp-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:tip-jar-wp-sk-bounce 2s infinite ease-in-out;animation:tip-jar-wp-sk-bounce 2s infinite ease-in-out}.tip-jar-wp-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes tip-jar-wp-sk-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes tip-jar-wp-sk-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.tip-jar-wp-spinner-dark .tip-jar-wp-double-bounce1,.tip-jar-wp-spinner-dark .tip-jar-wp-double-bounce2{background-color:#aaa}@keyframes tip-jar-wp-checkmark-scale{0%{transform:scale3d(.5,.5,1);opacity:0}70%{transform:scale3d(1.1,1.1,1)}100%{transform:scale3d(1,1,1);opactiy:100}}.tip-jar-wp-checkmark-svg{width:30px;height:30px;display:inline-block;vertical-align:middle;transform:scale3d(.5,.5,.5);animation:opacity .1s,tip-jar-wp-checkmark-scale .1s ease-in-out 0s forwards}@keyframes tip-jar-wp-checkmark-stroke{100%{stroke-dashoffset:0}}.tip-jar-wp-checkmark--check{stroke:#fff;stroke-width:25;stroke-dasharray:200;stroke-dashoffset:200;animation:tip-jar-wp-checkmark-stroke .2s cubic-bezier(.65,0,.45,1) .2s forwards}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view,.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-box-view{width:100%;color:#6f6f76;text-shadow:0 1px 0 hsla(0,0%,100%,.4);vertical-align:top;font-size:15px;overflow-x:hidden}.tip-jar-wp-login-form *{width:100%}.tip-jar-wp-login-code-fields{display:grid;column-gap:10px}.tip-jar-wp-login-code-fields>*{text-align:center;place-self:center;align-items:center;width:100%}.tip-jar-wp-login-code-fields>input:nth-child(1){grid-column:1}.tip-jar-wp-login-code-fields>input:nth-child(2){grid-column:2}.tip-jar-wp-login-code-fields>input:nth-child(3){grid-column:3}.tip-jar-wp-login-code-fields>div:nth-child(4){grid-column:4}.tip-jar-wp-login-code-fields>input:nth-child(5){grid-column:5}.tip-jar-wp-login-code-fields>input:nth-child(6){grid-column:6}.tip-jar-wp-login-code-fields>input:nth-child(7){grid-column:7}.tip-jar-wp-login-success{text-align:center}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav{text-align:center;display:grid;grid-auto-columns:min-content}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav-container-full{width:100%;text-align:center;padding-bottom:20px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav-container-center{display:inline-block;-webkit-transition:box-shadow 150ms ease;transition:box-shadow 150ms ease background-color: #fff;border-radius:4px;border:1px solid #d4d4d4}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-nav-current-btn{box-shadow:inset 0 0 1px 0 hsla(240,1%,49%,.3),0 1px 0 0 hsla(0,0%,100%,.7)!important;background-color:#f0f0f3}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav>:first-child button{border-top-left-radius:4px;border-bottom-left-radius:4px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav>:last-child button{border-top-right-radius:4px;border-bottom-right-radius:4px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav>*{grid-row:1;white-space:nowrap;box-shadow:none}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav>* button{white-space:nowrap;padding:14px;box-shadow:none;font-size:13px;line-height:18px;font-weight:700;text-shadow:0 1px 0 #fff;color:#000!important;text-decoration:none!important;cursor:pointer}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-pagination{max-width:160px;display:inline-block;float:right}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-pagination span:first-child{margin-right:5px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-pagination span:nth-child(3){margin-left:5px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-items-per-page{width:50%;display:inline-block;float:left}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-items-per-page span{padding-right:5px;display:inline-block}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-pagination-controls .tip-jar-wp-list-view-pagination input{width:50px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-pagination-controls .tip-jar-wp-list-view-items-per-page input{width:40%}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-table{display:table;table-layout:fixed;width:100%;border:1px solid #d4d4d4;border-radius:4px;-webkit-transition:box-shadow 150ms ease;transition:box-shadow 150ms ease;box-shadow:inset 0 1px 1px 0 hsla(240,1%,49%,.3),0 1px 0 0 hsla(0,0%,100%,.7)}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-table-header{display:table-header-group}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-header-row{display:table-row}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-body{display:table-row-group}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-column{display:table-cell;padding:5px;text-align:center}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-cell{display:table-cell;padding:5px;text-align:center}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-cell button{color:#4a4a4e;vertical-align:middle;font-weight:400;font-size:13px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-row:last-child .tip-jar-wp-list-view-cell:first-child{border-bottom-left-radius:4px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-row:last-child .tip-jar-wp-list-view-cell:last-child{border-bottom-right-radius:4px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-row{display:table-row}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-row:nth-child(even){background-color:#fff}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-row:nth-child(odd){background-color:#ffffff8c}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-before-controls{margin-bottom:20px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-after-controls{margin-top:20px}.tip-jar-wp-modal{position:absolute;top:0;left:0;opacity:0;z-index:0}.tip-jar-wp-modal.tip-jar-wp-modal-closed{display:none}.tip-jar-wp-modal.tip-jar-wp-modal-open{position:fixed;top:0;left:0;right:0;bottom:0;opacity:1;z-index:99999;overflow:scroll;-webkit-overflow-scrolling:touch}.tip-jar-wp-modal-outside-click-to-close{position:absolute;width:100%;height:100%;top:0;left:0}.tip-jar-wp-modal-background{background-color:rgba(0,0,0,.6);width:100%;height:100%}.tip-jar-wp-modal-relative{position:absolute;height:100%;top:0;left:0;width:100%}.tip-jar-wp-modal-absolute{position:absolute;top:0;left:0;text-align:center;width:100%}.tip-jar-wp-modal-inner{display:inline-block;text-align:center;max-width:600px;padding:20px;margin-top:50px;width:100%;border-radius:4px;filter:drop-shadow(0 0 20px rgba(34,36,38));-webkit-filter:drop-shadow(0 0 20px rgba(34,36,38))}.tip-jar-wp-edit-button-container{position:relative;overflow:visible;z-index:999;display:inline-block;vertical-align:text-top}.tip-jar-wp-edit-button-container-absolute{position:absolute;top:0;left:0}.tip-jar-wp-edit-container{position:relative;display:inline-block;padding:30px 10px 10px 10px;border:1px solid #d4d4d4;border:1px solid #f0b849;border-radius:4px;margin:3px 0;min-width:100px}.tip-jar-wp-edit-container>:nth-child(2):last-child:not(textarea){margin-top:0!important;padding-top:0!important;margin-bottom:0!important;padding-bottom:0!important}.tip-jar-wp-edit-area-in-focus,.tip-jar-wp-edit-container-admin-only{position:relative;border:1px solid #f0b849;border-radius:4px;margin:3px 0;width:100%;background-color:#fef8ee;font-size:15px}.tip-jar-wp-edit-container-admin-only-header{position:relative;border-bottom:1px solid #f0b849;border-radius:4px;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:10px;min-width:100px;background-color:#fef8ee;font-size:15px}.tip-jar-wp-edit-container-admin-only-body{position:relative;padding:10px;min-width:100px;font-size:15px}.tip-jar-wp-edit-container-admin-only-title{margin-right:10px;font-weight:600}.tip-jar-wp-edit-container-admin-only-setting:not(:first-child){margin-top:10px}.tip-jar-wp-edit-container-admin-only-setting-title{font-weight:600}.tip-jar-wp-edit-container-admin-only-setting-value{position:relative;border:1px solid #f0b849;border-radius:4px;padding:7px;min-width:100px;background-color:#fffcf6;display:inline-block}.tip-jar-wp-edit-container-admin-only textarea,.tip-jar-wp-edit-container>textarea{min-width:300px;width:100%}.tip-jar-wp-edit-container .tip-jar-wp-edit-button-container{position:absolute;white-space:nowrap;top:-1px;left:-1px}.tip-jar-wp-edit-container-admin-only .tip-jar-wp-edit-button-container{position:absolute;white-space:nowrap;top:1px;left:1px}.tip-jar-wp-top-media-type-editor .tip-jar-wp-edit-button-container{position:relative!important}.tip-jar-wp-edit-button-container .tip-jar-wp-edit-button:nth-child(2){margin-left:5px}.tip-jar-wp-edit-button,.tip-jar-wp-view-button{position:relative;left:0;border:1px solid #f0b849!important;box-shadow:none!important}.tip-jar-wp-terms-edit-container{display:inline-block;vertical-align:top}.tip-jar-wp-shortcode-insert-area .tip-jar-wp-cancel-shortcode{margin-left:5px}1 @media only screen and (max-width:600px){.ElementsApp .InputElement,.tip-jar-wp-element * input[type=color],.tip-jar-wp-element * input[type=date],.tip-jar-wp-element * input[type=datetime-local],.tip-jar-wp-element * input[type=datetime],.tip-jar-wp-element * input[type=email],.tip-jar-wp-element * input[type=month],.tip-jar-wp-element * input[type=number],.tip-jar-wp-element * input[type=password],.tip-jar-wp-element * input[type=search],.tip-jar-wp-element * input[type=tel],.tip-jar-wp-element * input[type=text],.tip-jar-wp-element * input[type=time],.tip-jar-wp-element * input[type=url],.tip-jar-wp-element * input[type=week],.tip-jar-wp-element * select:focus,.tip-jar-wp-element * textarea,.tip-jar-wp-element .ElementsApp{font-size:19px!important}}.tip-jar-wp-element *{font-family:sans-serif;text-transform:none}.tip-jar-wp-element>*{width:100%;max-width:900px!important;margin:0 auto}.tip-jar-wp-element{width:100%}.tip-jar-wp-element,.tip-jar-wp-element *{box-sizing:border-box;white-space:pre-line}.tip-jar-wp-hidden-view{display:none;opacity:0}.tip-jar-wp-element-json{display:none}@keyframes tip-jar-wp-fade-in-up{from{transform:translate3d(0,2px,0);opacity:0}to{transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes tip-jar-wp-fade-in-up{from{transform:translate3d(0,2px,0);opacity:0}to{transform:translate3d(0,0,0);opacity:1}}.tip-jar-wp-current-view{margin-top:0!important;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-name:tip-jar-wp-fade-in-up;animation-name:tip-jar-wp-fade-in-up;overflow:hidden}.tip-jar-wp-fancy-container{filter:drop-shadow(0 2px 2px rgba(34,36,38,.15));-webkit-filter:drop-shadow(0 2px 2px rgba(34,36,38,.15));position:relative}.tip-jar-wp-fancy-container.tip-jar-wp-current-view.tip-jar-wp-has-featured-media{margin:-38px 0 0 0!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-component-box{width:100%;box-sizing:border-box;color:#333;background-color:#f5f5f7;border-radius:6px;text-align:left;border:1px solid rgba(0,0,0,.1);z-index:2147481000;transition-delay:1ms;transition:all .3s ease-in-out,-webkit-transform .3s ease-in-out}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-box-view{padding:36px}@media only screen and (max-width:600px){.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-box-view{padding:15px}}.tip-jar-wp-featured-media-container{width:85%;margin:0 auto;z-index:1;position:relative}.tip-jar-wp-featured-media{top:0;right:0;left:0;margin:2px auto;z-index:1;border-radius:6px;background-color:#000;box-shadow:0 0 0 1px rgba(0,0,0,.18),0 2px 2px 0 rgba(0,0,0,.08);padding:56.2% 0 0;width:100%;height:100%}.tip-jar-wp-featured-media iframe{position:absolute;border:0;border-radius:6px 6px 0 0;top:0;left:0;width:100%;height:100%}.tip-jar-wp-featured-media iframe{border-radius:6px}.tip-jar-wp-header-logo{width:100%;height:70px;z-index:999999;top:0}.tip-jar-wp-header-logo-container{position:relative;top:0;right:0;left:0;width:70px;height:70px;margin:2px auto;z-index:1}.tip-jar-wp-header-logo-inner-bevel{border:1px solid rgba(0,0,0,.2);width:64px;height:64px;border-radius:100%;box-shadow:inset 0 1px 0 0 hsla(0,0%,100%,.1);position:absolute;top:3px;left:3px;z-index:2}.tip-jar-wp-header-logo-img{border:3px solid #fff;width:70px;height:70px;border-radius:100%;box-shadow:0 0 0 1px rgba(0,0,0,.18),0 2px 2px 0 rgba(0,0,0,.08);position:absolute;top:0;left:0;z-index:1;background-size:cover;background-position:center;clip-path:circle(100%);background-color:#fff}.Header-logoWrap{position:absolute;top:0;right:0;left:0;width:70px;height:70px;margin:2px auto}.Header-logoBevel{border:1px solid rgba(0,0,0,.2);width:64px;height:64px;border-radius:100%;box-shadow:inset 0 1px 0 0 hsla(0,0%,100%,.1);position:absolute;top:3px;left:3px}.Header-logoBorder{border:3px solid #fff;width:70px;height:70px;border-radius:100%;box-shadow:0 0 0 1px rgba(0,0,0,.18),0 2px 2px 0 rgba(0,0,0,.08);position:absolute;top:0;left:0}.Header-logoImage{background:#fff;width:64px;height:64px;margin:3px;border-radius:100%;background-position:50% 50%;background-size:cover;display:inline-block}.Header-logoImageCatchError{display:none}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header{position:relative;background-color:#e8e9eb;border-bottom:1px solid #d9d9d9;padding:25px;border-radius:6px 6px 0 0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header{padding:25px 10px 25px 10px;text-align:center;display:grid}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container.tip-jar-wp-has-featured-media .tip-jar-wp-header{padding:50px 10px 25px 10px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header h1{margin:0 auto;display:inline-block;vertical-align:top;font-size:18px;line-height:1.5;font-weight:700;color:#000;text-shadow:0 1px 0 #fff}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header h1:before{all:unset}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header>*{margin:0 auto}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header .tip-jar-wp-header-media,.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header h2{display:inline-block;vertical-align:top;line-height:1.5;font-size:15px;font-weight:500;color:#5b5b65;text-shadow:0 1px 0 #fff;padding:10px 0 6px 0;max-width:80%;text-align:center}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-header h2:before{all:unset}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-close-btn{cursor:pointer;position:absolute;top:5px;right:5px;width:19px;height:19px;line-height:0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-close-btn img{width:18px;height:19px;opacity:1}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-input-instruction{width:100%;color:#6f6f76;text-shadow:0 1px 0 hsla(0,0%,100%,.4);vertical-align:top;font-size:15px;text-transform:unset;margin-bottom:5px}.tip-jar-wp-cc-form.tip-jar-wp-mobile .tip-jar-wp-input-instruction{overflow:hidden;white-space:nowrap}.tip-jar-wp-payment-form-container{text-align:left;border-top:1px solid #fff}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field-container:first-child .tip-jar-wp-payment-field{padding-top:0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field-container .tip-jar-wp-payment-field{padding-top:20px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-instruction-error{color:#fa755a}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-amount-container{display:grid;grid-auto-columns:min-content min-content auto;column-gap:0;row-gap:0;justify-items:stretch;padding:0;background-color:#fff;border-radius:4px;border:1px solid #d4d4d4;width:min-content}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-amount-container.currency-search-visible{width:100%}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-amount-container>div:nth-child(1){grid-column:1}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-amount-container>div:nth-child(2){grid-column:2}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-amount-container>div:nth-child(3){grid-column:3}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field input.tip-jar-wp-tip-amount-input{width:80px;border:none;background:0 0;padding:0 10px 0 10px;box-shadow:none}@media only screen and (max-width:600px){.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field input.tip-jar-wp-tip-amount-input{width:65px}}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field input.tip-jar-wp-tip-amount-input:focus{outline:0;box-shadow:none!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-tip-currency-symbol{font-size:15px;padding:10px;background-color:#f5f5f7;border-right:1px solid #d4d4d4;border-radius:4px 0 0 4px;place-self:stretch;display:flex;align-items:center}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-tip-amount-input-container{place-self:stretch;display:flex;align-items:center;box-shadow:inset 1px 1px 2px #0000000d}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-currency-switcher{display:grid;justify-items:stretch;font-size:15px;white-space:nowrap;line-height:1;color:#6f6f76;background-color:#f5f5f7;border-left:1px solid #d4d4d4;border-radius:0 4px 4px 0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-currency-switcher .tip-jar-wp-tip-currency-code-toggle-btn{font-size:15px;white-space:nowrap;line-height:1;color:#6f6f76;padding:0;background-color:#f5f5f7;border:none;border-radius:0 4px 4px 0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-currency-switcher .tip-jar-wp-tip-currency-code{display:grid;justify-items:stretch;grid-template-columns:min-content auto}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-tip-currency-flag-container{padding:10px;grid-column:1;place-self:center;width:52px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-tip-currency-text-container{grid-column:2;align-self:center;padding:10px 10px 10px 0;text-align:left;white-space:nowrap;word-break:keep-all}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field .tip-jar-wp-tip-currency-flag{width:32px;height:32px;background-size:512px;margin:0!important;opacity:1}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-buttons-container .tip-jar-wp-radio-button-container{box-shadow:none;font-size:15px;line-height:18px;text-shadow:0 1px 0 #fff;color:#000!important;text-decoration:none!important;box-shadow:inset 0 0 1px 0 #fff,0 1px 0 0 #fff;border-radius:4px;border:1px solid #d4d4d4}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-container.tip-jar-wp-radio-current{box-shadow:none;font-size:15px;line-height:18px;text-shadow:0 1px 0 #fff;color:#000!important;text-decoration:none!important;cursor:pointer;box-shadow:inset 0 0 1px 0 hsla(240,1%,49%,.3),0 1px 0 0 hsla(0,0%,100%,.7)!important;background-color:#f0f0f3;border-radius:4px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-outer{display:block;width:100%;text-align:center}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-inner{display:inline-block}.tip-jar-wp-element label{width:100%!important;display:block!important;margin:0;font-weight:400}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-container label{padding:10px;display:flex;cursor:pointer}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-container label [type=radio]{vertical-align:baseline}@media only screen and (max-width:600px){.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-container label [type=radio]{vertical-align:middle}}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-buttons-container{display:grid;column-gap:15px;row-gap:15px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-buttons-container .tip-jar-wp-radio-button-container:nth-child(2){grid-column:2}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-buttons-container .tip-jar-wp-radio-button-container:nth-child(3){grid-column:1}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-buttons-container .tip-jar-wp-radio-button-container:nth-child(4){grid-column:2}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-radio-button-after{display:inline-block;margin-left:5px;font-size:15px;line-height:1;vertical-align:middle;word-break:break-word}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .StripeElement:not(.PaymentRequestButton),.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container input:not([type=checkbox]):not([type=radio]):not(.tip-jar-wp-tip-amount-input),.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container textarea{box-shadow:inset 0 1px 1px 0 hsla(240,1%,49%,.3),0 1px 0 0 hsla(0,0%,100%,.7)}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .StripeElement:not(.PaymentRequestButton),.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container input:not([type=radio]):not([type=checkbox]):not(.tip-jar-wp-tip-amount-input),.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container textarea{-webkit-transition:box-shadow 150ms ease;transition:box-shadow 150ms ease;padding:9px!important;background-color:#fff;border-radius:4px;border:1px solid #d4d4d4;width:100%;margin:0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-mobile .tip-jar-wp-cc-multi-field .tip-jar-wp-cc-multi-field-input-area{position:relative}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-mobile .tip-jar-wp-cc-multi-field .StripeElement:not(.PaymentRequestButton),.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-mobile .tip-jar-wp-cc-multi-field input{border-radius:0;border-top:0;padding-left:45px!important;font-size:19px!important;line-height:1!important;text-indent:0!important;box-shadow:none!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-mobile .tip-jar-wp-cc-multi-field .tip-jar-wp-cc-multi-field-input-area:first-child .StripeElement:not(.PaymentRequestButton){border-top:1px solid #d4d4d4;border-radius:4px 4px 0 0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-mobile .tip-jar-wp-cc-multi-field .tip-jar-wp-cc-multi-field-input-area:last-child input{border-radius:0 0 4px 4px}.tip-jar-wp-mobile{position:relative}.tip-jar-wp-cc-multi-field .tip-jar-wp-cc-form-icon{position:absolute;width:48px;z-index:1}.tip-jar-wp-cc-multi-field .tip-jar-wp-cc-form-icon.tip-jar-wp-credit-card-icon{top:-4px;left:-1px}.tip-jar-wp-cc-multi-field .tip-jar-wp-cc-form-icon.tip-jar-wp-calendar-icon{top:-4px;left:0}.tip-jar-wp-cc-multi-field .tip-jar-wp-cc-form-icon.tip-jar-wp-lock-icon{top:-4px;left:0}.tip-jar-wp-cc-multi-field .tip-jar-wp-cc-form-icon.tip-jar-wp-zipcode-icon{top:-4px;left:0}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-mobile .tip-jar-wp-cc-multi-field .tip-jar-wp-cc-multi-field-input-area .tip-jar-wp-cc-multi-field-input-zip-code{padding-left:45px!important;border-top:0!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field input[type=checkbox]{width:initial;margin-right:9px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .StripeElement--focus,.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-field input:focus{box-shadow:0 1px 3px 0 #bebebe!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .StripeElement--invalid,.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-input-error{border-color:#fa755a!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .StripeElement--complete,.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-input-success{border-color:#21da38!important}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .StripeElement--webkit-autofill{background-color:#fefde5!important}.tip-jar-wp-element input{border-radius:4px;padding:9px;font-size:15px;color:#000;margin:0}.tip-jar-wp-element .tip-jar-wp-text-button,.tip-jar-wp-element .tip-jar-wp-text-button:focus,.tip-jar-wp-element .tip-jar-wp-text-button:hover{background:0 0!important;text-decoration:underline!important;display:inline-block!important;padding:0;border:0!important;width:auto!important}.tip-jar-wp-pay-button,.tip-jar-wp-receipt-line-item-action{position:relative;padding:0;border-radius:4px;background-color:#3ea8e5;background-image:-webkit-gradient(linear,left top,left bottom,from(#44b1e8),to(#3098de));background-image:-webkit-linear-gradient(top,#44b1e8,#3098de);background-image:linear-gradient(-180deg,#44b1e8,#3098de);box-shadow:0 1px 0 0 rgba(46,86,153,.15),inset 0 1px 0 0 rgba(46,86,153,.1),inset 0 -1px 0 0 rgba(46,86,153,.4);font-size:17px;line-height:21px;height:37px;font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.12);color:#fff;cursor:pointer;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;width:100%;border:0}.tip-jar-wp-expandable-terms{margin-bottom:10px}.tip-jar-wp-terms-body{box-shadow:0 1px 3px 0 #e6ebf1;-webkit-transition:box-shadow 150ms ease;transition:box-shadow 150ms ease;padding:13px;background-color:#fff;border-radius:4px;border:1px solid #d4d4d4;width:100%}.tip-jar-wp-payment-error-message{box-shadow:0 1px 3px 0 #e6ebf1;-webkit-transition:box-shadow 150ms ease;transition:box-shadow 150ms ease;padding:13px;background-color:#fff;border-radius:4px;width:100%;border:#fa755a solid 1px;color:#fa755a;font-size:15px}.top-jar-wp-alternate-actions{padding-top:20px}.top-jar-wp-alternate-actions-separator{padding:0 5px;line-height:1;color:#6f6f76;vertical-align:top}.tip-jar-wp-confirmation-note{margin-top:20px}.tip-jar-wp-note-with-tip{width:85%}.tip-jar-wp-receipt{margin:30px 0 0 0}.tip-jar-wp-file-download-instructions-title,.tip-jar-wp-receipt-title{font-size:17px;line-height:18px;font-weight:700;color:#000;text-shadow:0 1px 0 #fff}.tip-jar-wp-receipt-field-space-below{margin-bottom:15px}.tip-jar-wp-receipt-line-item-title{margin:0;line-height:18px;font-weight:700;color:#000;text-shadow:0 1px 0 #fff}.tip-jar-wp-receipt-line-item-value{display:inline-block}.tip-jar-wp-arrangement-id{margin-top:15px}.tip-jar-wp-arrangement-actions{margin-top:15px}.tip-jar-wp-inline-card{display:grid;border-radius:4px;border:1px solid #d4d4d4;padding:0;column-gap:5px;box-shadow:inset 0 0 1px 0 hsla(240,1%,49%,.3),0 1px 0 0 hsla(0,0%,100%,.7)!important;background-color:#f0f0f3;align-items:center}.tip-jar-wp-card-icon{grid-column:1;width:20px;height:20px;vertical-align:sub;box-shadow:inset 0 0 1px 0 hsla(240,1%,49%,.3),0 1px 0 0 hsla(0,0%,100%,.7)!important;background-color:#f0f0f3;margin-left:5px}.tip-jar-wp-inline-card-number{grid-column:2;margin-right:5px}.tip-jar-wp-inline-update-button{grid-column:3}.tip-jar-wp-element .tip-jar-wp-inline-update-button>button,.tip-jar-wp-element .tip-jar-wp-inline-update-button>button:focus,.tip-jar-wp-element .tip-jar-wp-inline-update-button>button:hover{box-shadow:none;background-color:#f5f5f7;padding:5px;border-radius:0 4px 4px 0;box-shadow:none;font-size:13px;line-height:18px;font-weight:700;text-shadow:0 1px 0 #fff;color:#000!important;text-decoration:none;border-left:1px solid #d4d4d4}.tip-jar-wp-element .tip-jar-wp-email-receipt,.tip-jar-wp-element .tip-jar-wp-receipt-action-button{margin:20px 0 0 0}.tip-jar-wp-element .tip-jar-wp-print-receipt{margin:10px 0 10px 0}.tip-jar-wp-back-button-container{margin-bottom:20px}@media print{.tip-jar-wp-element *{text-shadow:none!important;transition:none!important;box-shadow:none!important;filter:none!important;-webkit-filter:none!important}.tip-jar-wp-element .tip-jar-wp-confirmation-note,.tip-jar-wp-element .tip-jar-wp-email-receipt,.tip-jar-wp-element .tip-jar-wp-manage-payments-button,.tip-jar-wp-element .tip-jar-wp-print-receipt{display:none}}.tip-jar-wp-print-page .tip-jar-wp-element .tip-jar-wp-confirmation-note,.tip-jar-wp-print-page .tip-jar-wp-element .tip-jar-wp-print-receipt{display:none}.tip-jar-wp-spinner-container{width:100%;height:100%;text-align:center}.tip-jar-wp-pay-button .tip-jar-wp-spinner-container{display:inline}.tip-jar-wp-spinner{width:20px;height:20px;display:inline-block;position:relative;vertical-align:middle}.tip-jar-wp-double-bounce1,.tip-jar-wp-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:tip-jar-wp-sk-bounce 2s infinite ease-in-out;animation:tip-jar-wp-sk-bounce 2s infinite ease-in-out}.tip-jar-wp-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes tip-jar-wp-sk-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes tip-jar-wp-sk-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.tip-jar-wp-spinner-dark .tip-jar-wp-double-bounce1,.tip-jar-wp-spinner-dark .tip-jar-wp-double-bounce2{background-color:#aaa}@keyframes tip-jar-wp-checkmark-scale{0%{transform:scale3d(.5,.5,1);opacity:0}70%{transform:scale3d(1.1,1.1,1)}100%{transform:scale3d(1,1,1);opactiy:100}}.tip-jar-wp-checkmark-svg{width:30px;height:30px;display:inline-block;vertical-align:middle;transform:scale3d(.5,.5,.5);animation:opacity .1s,tip-jar-wp-checkmark-scale .1s ease-in-out 0s forwards}@keyframes tip-jar-wp-checkmark-stroke{100%{stroke-dashoffset:0}}.tip-jar-wp-checkmark--check{stroke:#fff;stroke-width:25;stroke-dasharray:200;stroke-dashoffset:200;animation:tip-jar-wp-checkmark-stroke .2s cubic-bezier(.65,0,.45,1) .2s forwards}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view,.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-payment-box-view{width:100%;color:#6f6f76;text-shadow:0 1px 0 hsla(0,0%,100%,.4);vertical-align:top;font-size:15px;overflow-x:hidden}.tip-jar-wp-login-form *{width:100%}.tip-jar-wp-login-code-fields{display:grid;column-gap:10px}.tip-jar-wp-login-code-fields>*{text-align:center;place-self:center;align-items:center;width:100%}.tip-jar-wp-login-code-fields>input:nth-child(1){grid-column:1}.tip-jar-wp-login-code-fields>input:nth-child(2){grid-column:2}.tip-jar-wp-login-code-fields>input:nth-child(3){grid-column:3}.tip-jar-wp-login-code-fields>div:nth-child(4){grid-column:4}.tip-jar-wp-login-code-fields>input:nth-child(5){grid-column:5}.tip-jar-wp-login-code-fields>input:nth-child(6){grid-column:6}.tip-jar-wp-login-code-fields>input:nth-child(7){grid-column:7}.tip-jar-wp-login-success{text-align:center}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav{text-align:center;display:grid;grid-auto-columns:min-content}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav-container-full{width:100%;text-align:center;padding-bottom:20px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav-container-center{display:inline-block;-webkit-transition:box-shadow 150ms ease;transition:box-shadow 150ms ease background-color: #fff;border-radius:4px;border:1px solid #d4d4d4}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-nav-current-btn{box-shadow:inset 0 0 1px 0 hsla(240,1%,49%,.3),0 1px 0 0 hsla(0,0%,100%,.7)!important;background-color:#f0f0f3}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav>:first-child button{border-top-left-radius:4px;border-bottom-left-radius:4px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav>:last-child button{border-top-right-radius:4px;border-bottom-right-radius:4px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav>*{grid-row:1;white-space:nowrap;box-shadow:none}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-manage-payments-view .tip-jar-wp-manage-payments-nav>* button{white-space:nowrap;padding:14px;box-shadow:none;font-size:13px;line-height:18px;font-weight:700;text-shadow:0 1px 0 #fff;color:#000!important;text-decoration:none!important;cursor:pointer}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-pagination{max-width:160px;display:inline-block;float:right}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-pagination span:first-child{margin-right:5px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-pagination span:nth-child(3){margin-left:5px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-items-per-page{width:50%;display:inline-block;float:left}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-items-per-page span{padding-right:5px;display:inline-block}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-pagination-controls .tip-jar-wp-list-view-pagination input{width:50px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-pagination-controls .tip-jar-wp-list-view-items-per-page input{width:40%}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-table{display:table;table-layout:fixed;width:100%;border:1px solid #d4d4d4;border-radius:4px;-webkit-transition:box-shadow 150ms ease;transition:box-shadow 150ms ease;box-shadow:inset 0 1px 1px 0 hsla(240,1%,49%,.3),0 1px 0 0 hsla(0,0%,100%,.7)}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-table-header{display:table-header-group}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-header-row{display:table-row}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-body{display:table-row-group}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-column{display:table-cell;padding:5px;text-align:center}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-cell{display:table-cell;padding:5px;text-align:center}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-cell button{color:#4a4a4e;vertical-align:middle;font-weight:400;font-size:13px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-row:last-child .tip-jar-wp-list-view-cell:first-child{border-bottom-left-radius:4px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-row:last-child .tip-jar-wp-list-view-cell:last-child{border-bottom-right-radius:4px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-row{display:table-row}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-row:nth-child(even){background-color:#fff}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-row:nth-child(odd){background-color:#ffffff8c}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-before-controls{margin-bottom:20px}.tip-jar-wp-element .tip-jar-wp-container .tip-jar-wp-fancy-container .tip-jar-wp-list-view-after-controls{margin-top:20px}.tip-jar-wp-modal{position:absolute;top:0;left:0;opacity:0;z-index:0}.tip-jar-wp-modal.tip-jar-wp-modal-closed{display:none}.tip-jar-wp-modal.tip-jar-wp-modal-open{position:fixed;top:0;left:0;right:0;bottom:0;opacity:1;z-index:99999;overflow:scroll;-webkit-overflow-scrolling:touch}.tip-jar-wp-modal-outside-click-to-close{position:absolute;width:100%;height:100%;top:0;left:0}.tip-jar-wp-modal-background{background-color:rgba(0,0,0,.6);width:100%;height:100%}.tip-jar-wp-modal-relative{position:absolute;height:100%;top:0;left:0;width:100%}.tip-jar-wp-modal-absolute{position:absolute;top:0;left:0;text-align:center;width:100%}.tip-jar-wp-modal-inner{display:inline-block;text-align:center;max-width:600px;padding:20px;margin-top:50px;width:100%;border-radius:4px;filter:drop-shadow(0 0 20px rgba(34,36,38));-webkit-filter:drop-shadow(0 0 20px rgba(34,36,38))}.tip-jar-wp-edit-button-container{position:relative;overflow:visible;z-index:999;display:inline-block;vertical-align:text-top}.tip-jar-wp-edit-button-container-absolute{position:absolute;top:0;left:0}.tip-jar-wp-edit-container{position:relative;display:inline-block;padding:30px 10px 10px 10px;border:1px solid #d4d4d4;border:1px solid #f0b849;border-radius:4px;margin:3px 0;min-width:100px}.tip-jar-wp-edit-container>:nth-child(2):last-child:not(textarea){margin-top:0!important;padding-top:0!important;margin-bottom:0!important;padding-bottom:0!important}.tip-jar-wp-edit-area-in-focus,.tip-jar-wp-edit-container-admin-only{position:relative;border:1px solid #f0b849;border-radius:4px;margin:3px 0;width:100%;background-color:#fef8ee;font-size:15px}.tip-jar-wp-edit-container-admin-only-header{position:relative;border-bottom:1px solid #f0b849;border-radius:4px;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:10px;min-width:100px;background-color:#fef8ee;font-size:15px}.tip-jar-wp-edit-container-admin-only-body{position:relative;padding:10px;min-width:100px;font-size:15px}.tip-jar-wp-edit-container-admin-only-title{margin-right:10px;font-weight:600}.tip-jar-wp-edit-container-admin-only-setting:not(:first-child){margin-top:10px}.tip-jar-wp-edit-container-admin-only-setting-title{font-weight:600}.tip-jar-wp-edit-container-admin-only-setting-value{position:relative;border:1px solid #f0b849;border-radius:4px;padding:7px;min-width:100px;background-color:#fffcf6;display:inline-block}.tip-jar-wp-edit-container-admin-only textarea,.tip-jar-wp-edit-container>textarea{min-width:300px;width:100%}.tip-jar-wp-edit-container .tip-jar-wp-edit-button-container{position:absolute;white-space:nowrap;top:-1px;left:-1px}.tip-jar-wp-edit-container-admin-only .tip-jar-wp-edit-button-container{position:absolute;white-space:nowrap;top:1px;left:1px}.tip-jar-wp-top-media-type-editor .tip-jar-wp-edit-button-container{position:relative!important}.tip-jar-wp-edit-button-container .tip-jar-wp-edit-button:nth-child(2){margin-left:5px}.tip-jar-wp-edit-button,.tip-jar-wp-view-button{position:relative;left:0;border:1px solid #f0b849!important;box-shadow:none!important}.tip-jar-wp-terms-edit-container{display:inline-block;vertical-align:top}.tip-jar-wp-shortcode-insert-area .tip-jar-wp-cancel-shortcode{margin-left:5px} -
tip-jar-wp/trunk/includes/frontend/css/src/tip-jar-wp.css
r2449460 r2953538 25 25 text-transform: none; 26 26 } 27 .tip-jar-wp-element > *{ 28 width:100%; 29 max-width: 900px!important; 30 margin: 0px auto; 31 } 27 32 .tip-jar-wp-element{ 28 33 width:100%; … … 587 592 .tip-jar-wp-element .tip-jar-wp-text-button:hover, 588 593 .tip-jar-wp-element .tip-jar-wp-text-button:focus{ 589 background:none ;590 text-decoration:underline ;591 display: inline-block ;594 background:none!important; 595 text-decoration:underline!important; 596 display: inline-block!important; 592 597 padding: 0px; 593 border: 0 ;598 border: 0!important; 594 599 width:auto!important; 595 600 } -
tip-jar-wp/trunk/includes/frontend/php/frontend-queries.php
r2205386 r2953538 51 51 * @return array 52 52 */ 53 function tip_jar_wp_get_arrangement_history_frontend( $query_args = array(), $columns_to_return ) {53 function tip_jar_wp_get_arrangement_history_frontend( $query_args = array(), $columns_to_return = ['id'] ) { 54 54 55 55 $arrangements_db = new Tip_Jar_WP_Arrangements_DB(); … … 245 245 * @return array 246 246 */ 247 function tip_jar_wp_get_transaction_history_frontend( $query_args = array(), $columns_to_return ) {247 function tip_jar_wp_get_transaction_history_frontend( $query_args = array(), $columns_to_return = ['id'] ) { 248 248 249 249 $transactions_db = new Tip_Jar_WP_Transactions_DB(); -
tip-jar-wp/trunk/includes/misc-functions/misc-functions.php
r2449460 r2953538 326 326 // Here we will rebuild the array of currencies so that it is an associative array, since stripe only gives us currency codes but not names. 327 327 foreach ( $stripe_currencies as $stripe_currency_code ) { 328 $formatted_currency_array[ strtoupper( $stripe_currency_code ) ] = $all_currencies_that_exist_in_the_world[ strtoupper( $stripe_currency_code ) ]; 328 if ( isset( $all_currencies_that_exist_in_the_world[ strtoupper( $stripe_currency_code ) ] ) ) { 329 $formatted_currency_array[ strtoupper( $stripe_currency_code ) ] = $all_currencies_that_exist_in_the_world[ strtoupper( $stripe_currency_code ) ]; 330 } else { 331 $formatted_currency_array[ strtoupper( $stripe_currency_code ) ] = $stripe_currency_code; 332 } 329 333 } 330 334 -
tip-jar-wp/trunk/languages/tip-jar-wp.pot
r2449460 r2953538 1 # Copyright (C) 202 1Tip Jar WP1 # Copyright (C) 2023 Tip Jar WP 2 2 # This file is distributed under the GPLv3. 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Tip Jar WP 2. 0.0\n"5 "Project-Id-Version: Tip Jar WP 2.1.0\n" 6 6 "Report-Msgid-Bugs-To: https://tipjarwp.com/\n" 7 "POT-Creation-Date: 202 1-01-03 16:35:02+00:00\n"7 "POT-Creation-Date: 2023-08-15 00:40:32+00:00\n" 8 8 "MIME-Version: 1.0\n" 9 9 "Content-Type: text/plain; charset=utf-8\n" 10 10 "Content-Transfer-Encoding: 8bit\n" 11 "PO-Revision-Date: 202 1-MO-DA HO:MI+ZONE\n"11 "PO-Revision-Date: 2023-MO-DA HO:MI+ZONE\n" 12 12 "Last-Translator: WP-Translations (http://wp-translations.org/)\n" 13 13 "Language-Team: WP-Translations <wpt@wp-translations.org>\n" … … 2831 2831 msgstr "" 2832 2832 2833 #: includes/misc-functions/misc-functions.php:7 572833 #: includes/misc-functions/misc-functions.php:761 2834 2834 msgid "Get Started!" 2835 2835 msgstr "" 2836 2836 2837 #: includes/misc-functions/misc-functions.php:7 582837 #: includes/misc-functions/misc-functions.php:762 2838 2838 msgid "Settings" 2839 2839 msgstr "" -
tip-jar-wp/trunk/readme.txt
r2679975 r2953538 4 4 Donate link: https://tipjarwp.com 5 5 Requires at least: 4.8 6 Tested up to: 5.96 Tested up to: 6.3 7 7 Requires PHP: 7.0 8 8 Stable tag: trunk … … 11 11 12 12 == Description == 13 Tip Jar WP is made for creators, artists, teachers, service providers, and more. It givesan extremely simple and affordable way to accept tips on your WordPress website. On the cutting edge of payment technologies through the power of Stripe, you can accept Apple Pay, Google Pay, standard credit cards, and more with a beautiful and responsively designed payment form.13 Since 2019, Tip Jar WP has helped creators like you earn over $1,000,000 combined! Made for creators, artists, teachers, service providers, and more, it gives you an extremely simple and affordable way to accept tips on your WordPress website. On the cutting edge of payment technologies through the power of Stripe, you can accept Apple Pay, Google Pay, standard credit cards, and more with a beautiful and responsively designed payment form. 14 14 15 15 If you have supporters that love what you do, many will be happy to send a tip to say "thanks" if you give them the option to do so. With out-of-the-box features including both automatic-recurring-payments, or one-time tips, Tip Jar WP makes that possible. … … 93 93 == Changelog == 94 94 95 = 2.1.0 - 2023-08-14 = 96 * PHP8 Compatibility 97 * Fixed an issue with new currencies added at Stripe 98 * Small style improvements for certain themes. 99 95 100 = 2.0.0 - 2021-01-01 = 96 101 * Update to use latest react library for stripe: @stripe/react-stripe-js -
tip-jar-wp/trunk/tip-jar-wp.php
r2449460 r2953538 4 4 Plugin URI: https://tipjarwp.com 5 5 Description: Accept single or recurring tips on your WordPress site in seconds through Apple Pay, Google Pay, Credit Card, and saved-in-browser credit cards. 6 Version: 2. 0.06 Version: 2.1.0 7 7 Author: Tip Jar WP 8 8 Text Domain: tip-jar-wp … … 45 45 if ( ! defined( 'TIP_JAR_WP_VERSION' ) ) { 46 46 47 $tip_jar_wp_version = '2. 0.0';47 $tip_jar_wp_version = '2.1.0'; 48 48 49 49 // If SCRIPT_DEBUG is enabled, break the browser cache.
Note: See TracChangeset
for help on using the changeset viewer.