Version Description
- New: Support up to WordPress 6.0.1
- Fix: Important update! Deselecting all tables does not lead to exclusion of tables as expected, but leads to selection of all tables. Thus all tables are copied and possibly overwritten instead of deselected. Applies to new cloning, UPDATE and RESET of a staging page. That can lead to data loss in the staging site. An update is strongly recommended!. #1814
- Fix: Can not upload backup file to google drive if the google api returns incorrect value for available storage size (negative value). This sometimes happens for Google workspace accounts and does not affect all users. #1799
- Fix: Plugin wps-hide-login could not be excluded during cloning process, preventing users from log in to the staging site #1812
Download this release
Release Info
Developer | ReneHermi |
Plugin | WP Staging – DB & File Duplicator & Migration |
Version | 2.9.17 |
Comparing to | |
See all releases |
Code changes from version 2.9.16 to 2.9.17
- Backend/Modules/Jobs/Cloning.php +1 -0
- Backend/Modules/Jobs/Directories.php +7 -5
- Backend/Modules/Jobs/Updating.php +1 -2
- Backend/views/backup/free-version.php +17 -1
- assets/js/dist/wpstg-admin.js +5 -0
- assets/js/dist/wpstg-admin.js.map +1 -1
- assets/js/dist/wpstg-admin.min.js +1 -1
- assets/js/dist/wpstg-admin.min.js.map +1 -1
- constantsFree.php +2 -2
- opcacheBootstrap.php +1 -1
- readme.txt +13 -61
- wp-staging.php +1 -1
Backend/Modules/Jobs/Cloning.php
CHANGED
@@ -133,6 +133,7 @@ class Cloning extends Job
|
|
133 |
|
134 |
// Included Tables / Prefixed Table - Excluded Tables
|
135 |
$selectedTables = new SelectedTables($_POST['includedTables'], $_POST['excludedTables'], $_POST['selectedTablesWithoutPrefix']);
|
|
|
136 |
$this->options->tables = $selectedTables->getSelectedTables($this->options->networkClone);
|
137 |
|
138 |
// Exclude File Size Rules
|
133 |
|
134 |
// Included Tables / Prefixed Table - Excluded Tables
|
135 |
$selectedTables = new SelectedTables($_POST['includedTables'], $_POST['excludedTables'], $_POST['selectedTablesWithoutPrefix']);
|
136 |
+
$selectedTables->setAllTablesExcluded(empty($_POST['allTablesExcluded']) ? false : $_POST['allTablesExcluded'] === 'true');
|
137 |
$this->options->tables = $selectedTables->getSelectedTables($this->options->networkClone);
|
138 |
|
139 |
// Exclude File Size Rules
|
Backend/Modules/Jobs/Directories.php
CHANGED
@@ -134,8 +134,10 @@ class Directories extends JobExecutable
|
|
134 |
* Scan plugins, mu-plugins, themes or uploads dir depending upon the input
|
135 |
*
|
136 |
* @param string $directory
|
|
|
|
|
137 |
*/
|
138 |
-
|
139 |
{
|
140 |
// Skip if scanning uploads directory and symlink option selected
|
141 |
if ($this->wpDirectories->getUploadsPath() === $directory && $this->options->uploadsSymlinked) {
|
@@ -167,7 +169,7 @@ class Directories extends JobExecutable
|
|
167 |
];
|
168 |
|
169 |
// Exclude predefined plugins if given directory is plugins dir
|
170 |
-
if ($this->filesystem->normalizePath(
|
171 |
$excludePaths[] = '**/wp-staging*/**/node_modules'; // only exclude node modules in WP Staging's plugins
|
172 |
// add excluded plugins defined by WP Staging
|
173 |
$excludePaths = array_merge((new ExcludedPlugins())->getPluginsToExcludeWithRelativePath(), $excludePaths);
|
@@ -176,7 +178,7 @@ class Directories extends JobExecutable
|
|
176 |
$excludePaths = array_merge($this->getFilteredExcludedPaths(), $excludePaths);
|
177 |
|
178 |
try {
|
179 |
-
$this->options->totalFiles += $this->scanToCacheFile($files, $directory, true, $excludePaths, $this->getFilteredExcludedFileSizes());
|
180 |
} catch (Exception $e) {
|
181 |
$this->returnException('Error: ' . $e->getMessage());
|
182 |
}
|
@@ -517,7 +519,7 @@ class Directories extends JobExecutable
|
|
517 |
* Return List of all user defined file size excludes from hooks and through UI
|
518 |
* @return array
|
519 |
*/
|
520 |
-
|
521 |
{
|
522 |
return apply_filters('wpstg_clone_file_size_exclude', $this->options->excludeSizeRules);
|
523 |
}
|
@@ -528,7 +530,7 @@ class Directories extends JobExecutable
|
|
528 |
* Defined by WP Staging i.e. cache or some plugins.
|
529 |
* @return array
|
530 |
*/
|
531 |
-
|
532 |
{
|
533 |
$excludePaths = [];
|
534 |
$abspath = $this->strUtils->sanitizeDirectorySeparator(ABSPATH);
|
134 |
* Scan plugins, mu-plugins, themes or uploads dir depending upon the input
|
135 |
*
|
136 |
* @param string $directory
|
137 |
+
* @param string $pluginDir - default const WP_PLUGIN_DIR - testing purpose only
|
138 |
+
* @param string $wpRoot - default const ABSPATH - testing purpose only
|
139 |
*/
|
140 |
+
protected function getWpContentSubDirectory($directory, $pluginDir = WP_PLUGIN_DIR, $wpRoot = ABSPATH)
|
141 |
{
|
142 |
// Skip if scanning uploads directory and symlink option selected
|
143 |
if ($this->wpDirectories->getUploadsPath() === $directory && $this->options->uploadsSymlinked) {
|
169 |
];
|
170 |
|
171 |
// Exclude predefined plugins if given directory is plugins dir
|
172 |
+
if ($this->filesystem->normalizePath($pluginDir, true) === $directory) {
|
173 |
$excludePaths[] = '**/wp-staging*/**/node_modules'; // only exclude node modules in WP Staging's plugins
|
174 |
// add excluded plugins defined by WP Staging
|
175 |
$excludePaths = array_merge((new ExcludedPlugins())->getPluginsToExcludeWithRelativePath(), $excludePaths);
|
178 |
$excludePaths = array_merge($this->getFilteredExcludedPaths(), $excludePaths);
|
179 |
|
180 |
try {
|
181 |
+
$this->options->totalFiles += $this->scanToCacheFile($files, $directory, true, $excludePaths, $this->getFilteredExcludedFileSizes(), $wpRoot);
|
182 |
} catch (Exception $e) {
|
183 |
$this->returnException('Error: ' . $e->getMessage());
|
184 |
}
|
519 |
* Return List of all user defined file size excludes from hooks and through UI
|
520 |
* @return array
|
521 |
*/
|
522 |
+
protected function getFilteredExcludedFileSizes()
|
523 |
{
|
524 |
return apply_filters('wpstg_clone_file_size_exclude', $this->options->excludeSizeRules);
|
525 |
}
|
530 |
* Defined by WP Staging i.e. cache or some plugins.
|
531 |
* @return array
|
532 |
*/
|
533 |
+
protected function getFilteredExcludedPaths()
|
534 |
{
|
535 |
$excludePaths = [];
|
536 |
$abspath = $this->strUtils->sanitizeDirectorySeparator(ABSPATH);
|
Backend/Modules/Jobs/Updating.php
CHANGED
@@ -4,10 +4,8 @@ namespace WPStaging\Backend\Modules\Jobs;
|
|
4 |
|
5 |
use WPStaging\Core\WPStaging;
|
6 |
use WPStaging\Core\Utils\Helper;
|
7 |
-
use WPStaging\Framework\Adapter\Database as DatabaseAdapter;
|
8 |
use WPStaging\Framework\Database\SelectedTables;
|
9 |
use WPStaging\Framework\Filesystem\Scanning\ScanConst;
|
10 |
-
use WPStaging\Framework\Database\TableService;
|
11 |
use WPStaging\Framework\Utils\SlashMode;
|
12 |
use WPStaging\Framework\Utils\WpDefaultDirectories;
|
13 |
|
@@ -240,6 +238,7 @@ class Updating extends Job
|
|
240 |
{
|
241 |
// Included Tables / Prefixed Table - Excluded Tables
|
242 |
$selectedTables = new SelectedTables($_POST['includedTables'], $_POST['excludedTables'], $_POST['selectedTablesWithoutPrefix']);
|
|
|
243 |
$this->options->tables = $selectedTables->getSelectedTables($this->options->networkClone);
|
244 |
}
|
245 |
|
4 |
|
5 |
use WPStaging\Core\WPStaging;
|
6 |
use WPStaging\Core\Utils\Helper;
|
|
|
7 |
use WPStaging\Framework\Database\SelectedTables;
|
8 |
use WPStaging\Framework\Filesystem\Scanning\ScanConst;
|
|
|
9 |
use WPStaging\Framework\Utils\SlashMode;
|
10 |
use WPStaging\Framework\Utils\WpDefaultDirectories;
|
11 |
|
238 |
{
|
239 |
// Included Tables / Prefixed Table - Excluded Tables
|
240 |
$selectedTables = new SelectedTables($_POST['includedTables'], $_POST['excludedTables'], $_POST['selectedTablesWithoutPrefix']);
|
241 |
+
$selectedTables->setAllTablesExcluded(empty($_POST['allTablesExcluded']) ? false : $_POST['allTablesExcluded'] === 'true');
|
242 |
$this->options->tables = $selectedTables->getSelectedTables($this->options->networkClone);
|
243 |
}
|
244 |
|
Backend/views/backup/free-version.php
CHANGED
@@ -10,7 +10,23 @@
|
|
10 |
<ul>
|
11 |
<li class="wpstg-clone wpstg-dark-alert">
|
12 |
<p><strong><?php esc_html_e('Backup & Migration is a PRO feature!', 'wp-staging'); ?></strong></p>
|
13 |
-
<p><?php _e('<a href="https://wp-staging.com/?utm_source=wp-admin&utm_medium=wp-admin&utm_campaign=backup-restore&utm_term=backup-restore" target="_blank" id="wpstg-button-backup-upgrade" class="wpstg-button--primary wpstg-button--cta-red wpstg-border--violet">
|
14 |
</li>
|
15 |
</ul>
|
16 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
<ul>
|
11 |
<li class="wpstg-clone wpstg-dark-alert">
|
12 |
<p><strong><?php esc_html_e('Backup & Migration is a PRO feature!', 'wp-staging'); ?></strong></p>
|
13 |
+
<p><?php _e('<a href="https://wp-staging.com/?utm_source=wp-admin&utm_medium=wp-admin&utm_campaign=backup-restore&utm_term=backup-restore" target="_blank" id="wpstg-button-backup-upgrade" class="wpstg-button--primary wpstg-button--cta-red wpstg-border--violet">Unlock</a>', 'wp-staging'); ?></p>
|
14 |
</li>
|
15 |
</ul>
|
16 |
</div>
|
17 |
+
|
18 |
+
<div id="wpstg-did-you-know" style="margin-bottom:12px">
|
19 |
+
<strong><?php echo sprintf(__('Did you know? You can upload backup files to another website to transfer it. <a href="%s" target="_blank">Read more</a>', 'wp-staging'), 'https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/'); ?></strong>
|
20 |
+
</div>
|
21 |
+
|
22 |
+
<div id="wpstg-step-1">
|
23 |
+
<button id="wpstg-new-backup" class="wpstg-next-step-link wpstg-blue-primary wpstg-button" disabled>
|
24 |
+
<?php esc_html_e('Create New Backup', 'wp-staging') ?>
|
25 |
+
</button>
|
26 |
+
<button id="wpstg-upload-backup" class="wpstg-next-step-link wpstg-blue-primary wpstg-button wpstg-ml-4" disabled>
|
27 |
+
<?php esc_html_e('Upload Backup', 'wp-staging') ?>
|
28 |
+
</button>
|
29 |
+
<button id="wpstg-manage-backup-schedules" class="wpstg-next-step-link wpstg-blue-primary wpstg-button wpstg-ml-4" disabled>
|
30 |
+
<?php esc_html_e('Edit Backup Plans', 'wp-staging') ?>
|
31 |
+
</button>
|
32 |
+
</div>
|
assets/js/dist/wpstg-admin.js
CHANGED
@@ -2477,6 +2477,7 @@
|
|
2477 |
var includedTables = '';
|
2478 |
var excludedTables = '';
|
2479 |
var selectedTablesWithoutPrefix = '';
|
|
|
2480 |
|
2481 |
if (tableSelector !== null) {
|
2482 |
includedTables = tableSelector.getIncludedTables();
|
@@ -2488,11 +2489,13 @@
|
|
2488 |
includedTables = '';
|
2489 |
} else if (excludedTables.length > includedTables.length) {
|
2490 |
excludedTables = '';
|
|
|
2491 |
}
|
2492 |
|
2493 |
resetClone(clone, {
|
2494 |
includedTables: includedTables,
|
2495 |
excludedTables: excludedTables,
|
|
|
2496 |
selectedTablesWithoutPrefix: selectedTablesWithoutPrefix,
|
2497 |
excludeSizeRules: encodeURIComponent(exclFilters.sizes),
|
2498 |
excludeGlobRules: encodeURIComponent(exclFilters.globs),
|
@@ -2781,6 +2784,7 @@
|
|
2781 |
|
2782 |
that.data.includedTables = '';
|
2783 |
that.data.excludedTables = '';
|
|
|
2784 |
|
2785 |
if (that.tableSelector !== null) {
|
2786 |
that.data.includedTables = that.tableSelector.getIncludedTables();
|
@@ -2792,6 +2796,7 @@
|
|
2792 |
that.data.includedTables = '';
|
2793 |
} else if (that.data.excludedTables.length > that.data.includedTables.length) {
|
2794 |
that.data.excludedTables = '';
|
|
|
2795 |
}
|
2796 |
|
2797 |
that.data.databaseServer = $('#wpstg_db_server').val();
|
2477 |
var includedTables = '';
|
2478 |
var excludedTables = '';
|
2479 |
var selectedTablesWithoutPrefix = '';
|
2480 |
+
var allTablesExcluded = false;
|
2481 |
|
2482 |
if (tableSelector !== null) {
|
2483 |
includedTables = tableSelector.getIncludedTables();
|
2489 |
includedTables = '';
|
2490 |
} else if (excludedTables.length > includedTables.length) {
|
2491 |
excludedTables = '';
|
2492 |
+
allTablesExcluded = includedTables === '';
|
2493 |
}
|
2494 |
|
2495 |
resetClone(clone, {
|
2496 |
includedTables: includedTables,
|
2497 |
excludedTables: excludedTables,
|
2498 |
+
allTablesExcluded: allTablesExcluded,
|
2499 |
selectedTablesWithoutPrefix: selectedTablesWithoutPrefix,
|
2500 |
excludeSizeRules: encodeURIComponent(exclFilters.sizes),
|
2501 |
excludeGlobRules: encodeURIComponent(exclFilters.globs),
|
2784 |
|
2785 |
that.data.includedTables = '';
|
2786 |
that.data.excludedTables = '';
|
2787 |
+
that.data.allTablesExcluded = false;
|
2788 |
|
2789 |
if (that.tableSelector !== null) {
|
2790 |
that.data.includedTables = that.tableSelector.getIncludedTables();
|
2796 |
that.data.includedTables = '';
|
2797 |
} else if (that.data.excludedTables.length > that.data.includedTables.length) {
|
2798 |
that.data.excludedTables = '';
|
2799 |
+
that.data.allTablesExcluded = that.data.includedTables === '';
|
2800 |
}
|
2801 |
|
2802 |
that.data.databaseServer = $('#wpstg_db_server').val();
|
assets/js/dist/wpstg-admin.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"file":"wpstg-admin.js","sources":["../src/modules/wpstg-polyfill.js","../src/modules/wpstg-dom-utils.js","../src/modules/wpstg-clone-staging.js","../src/modules/wpstg-directory-navigation.js","../src/modules/wpstg-table-selection.js","../src/modules/wpstg-exclude-filters.js","../src/modules/wpstg-modal.js","../src/modules/wpstg-hover-intent.js","../src/wpstg.js","../src/modules/wpstg-reset-modal.js","../src/modules/wpstg-cloning-advance-settings.js","../src/modules/wpstg-main-menu.js","../src/wpstg-admin.js"],"sourcesContent":["/**\n * Polyfills the `Element.prototype.closest` function if not available in the browser.\n *\n * @return {Function} A function that will return the closest element, by selector, to this element.\n */\nfunction polyfillClosest() {\n if (Element.prototype.closest) {\n if (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n\n Element.prototype.closest = function(s) {\n let el = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n }\n\n return function(element, selector) {\n return element instanceof Element ? element.closest(selector) : null;\n };\n}\n\nexport const closest = polyfillClosest();\n","import {closest} from './wpstg-polyfill';\n\n/**\n * WP STAGING basic jQuery replacement\n */\n\n/**\n * Shortcut for document.querySelector() or jQuery's $()\n * Return single element only\n */\nexport function qs(selector) {\n return document.querySelector(selector);\n}\n\n/**\n * Shortcut for document.querySelector() or jQuery's $()\n * Return collection of elements\n */\nexport function all(selector) {\n return document.querySelectorAll(selector);\n}\n\n/**\n * alternative of jQuery - $(parent).on(event, selector, handler)\n */\nexport function addEvent(parent, evt, selector, handler) {\n if (!parent instanceof Element) {\n return;\n }\n\n parent.addEventListener(evt, function(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n handler(event.target.closest(selector), event);\n }\n }, false);\n}\n\nexport function slideDown(element, duration = 400) {\n element.style.display = 'block';\n element.style.overflow = 'hidden';\n const height = element.offsetHeight;\n element.style.height = '0px';\n element.style.transitionProperty = 'height';\n element.style.transitionDuration = duration + 'ms';\n setTimeout(() => {\n element.style.height = height + 'px';\n window.setTimeout(() => {\n element.style.removeProperty('height');\n element.style.removeProperty('overflow');\n element.style.removeProperty('transition-duration');\n element.style.removeProperty('transition-property');\n }, duration);\n }, 0);\n}\n\nexport function slideUp(element, duration = 400) {\n element.style.display = 'block';\n element.style.overflow = 'hidden';\n const height = element.offsetHeight;\n element.style.height = height + 'px';\n element.style.transitionProperty = 'height';\n element.style.transitionDuration = duration + 'ms';\n setTimeout(() => {\n element.style.height = '0px';\n window.setTimeout(() => {\n element.style.display = 'none';\n element.style.removeProperty('height');\n element.style.removeProperty('overflow');\n element.style.removeProperty('transition-duration');\n element.style.removeProperty('transition-property');\n }, duration);\n }, 0);\n}\n\nexport function fadeOut(element, duration = 300) {\n element.style.opacity = 1;\n element.style.transitionProperty = 'opacity';\n element.style.transitionDuration = duration + 'ms';\n setTimeout(() => {\n element.style.opacity = 0;\n window.setTimeout(() => {\n element.style.display = 'none';\n element.style.removeProperty('opacity');\n element.style.removeProperty('transition-duration');\n element.style.removeProperty('transition-property');\n }, duration);\n }, 0);\n}\n\nexport function getNextSibling(element, selector) {\n let sibling = element.nextElementSibling;\n\n while (sibling) {\n if (sibling.matches(selector)) {\n return sibling;\n }\n\n sibling = sibling.nextElementSibling;\n }\n};\n\nexport function getParents(element, selector) {\n const result = [];\n for (let parent = element && element.parentElement; parent; parent = parent.parentElement) {\n if (parent.matches(selector)) {\n result.push(parent);\n }\n }\n\n return result;\n}\n\n/**\n * Check if element has class name\n * @param element\n * @param className\n * @return {boolean}\n */\nexport function hasClass(element, className) {\n return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;\n}\n\n/**\n * Dispatches a change on an element that will trigger, depending on the element type,\n * cascading changes on elements dependant on the one that triggered the change and that\n * belong in the same container.\n *\n * @param {Element} element A reference to the Element the change was triggered from.\n *\n * @return {void} The function does not return any value and will have the side-effect of\n * hiding or showing dependant elements.\n */\nexport function handleDisplayDependencies(element) {\n if (!element instanceof Element || !element.id) {\n return;\n }\n\n const containerSelector = '.wpstg-container';\n // Use the default WordPress CSS class to hide and show the objects.\n const hiddenClass = 'hidden';\n const elementType = element.getAttribute('type');\n\n switch (elementType) {\n case 'checkbox':\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n const showIfChecked = container.querySelectorAll(`[data-show-if-checked=\"${element.id}\"]`);\n const showIfUnchecked = container.querySelectorAll(`[data-show-if-unchecked=\"${element.id}\"]`);\n const checked = element.checked;\n\n if (showIfChecked.length) {\n for (const el of showIfChecked) {\n if (checked) {\n el.classList.remove(hiddenClass);\n } else {\n el.classList.add(hiddenClass);\n }\n }\n }\n\n if (showIfUnchecked.length) {\n for (const el of showIfUnchecked) {\n if (checked) {\n el.classList.add(hiddenClass);\n } else {\n el.classList.remove(hiddenClass);\n }\n }\n }\n\n return;\n default:\n // Not a type we handle.\n return;\n }\n}\n\n/**\n * Initializes the display status of any element that depends on the status of another to\n * either hide or show.\n *\n * @return {void} The function will have the side-effect to toggle the hide/show class from\n * elements dependant on another to hide or show.\n */\nexport function initDependantDisplay() {\n const displayControllerSelector = '[onchange^=\"WPStaging.handleDisplayDependencies\"]';\n const displayControllers = document.querySelectorAll(displayControllerSelector);\n for (const displayController of displayControllers) {\n handleDisplayDependencies(displayController);\n }\n}\n\n/**\n * Toggle target element set in data-wpstg-target of the given element\n *\n * @param {Element} element A reference to the Element the change was triggered from.\n *\n * @return {void} The function does not return any value and will have the side-effect of\n * hiding or showing dependant elements.\n */\nexport function handleToggleElement(element) {\n if (!element instanceof Element || !element.getAttribute('data-wpstg-target')) {\n return;\n }\n\n const containerSelector = '.wpstg_admin';\n // Use the default WordPress CSS class to hide and show the objects.\n const hiddenClass = 'hidden';\n\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n const elements = container.querySelectorAll(element.getAttribute('data-wpstg-target'));\n\n if (elements.length) {\n for (const el of elements) {\n el.classList.toggle(hiddenClass);\n }\n }\n}\n\n/**\n * Copy text in data-wpstg-copy to element(s) in data-wpstg-target\n *\n * @param {Element} element\n *\n * @return {void}\n */\nexport function handleCopyPaste(element) {\n if (!element instanceof Element || !element.getAttribute('data-wpstg-target') || !element.getAttribute('data-wpstg-copy')) {\n return;\n }\n\n const containerSelector = '.wpstg_admin';\n\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n navigator.clipboard.writeText(element.getAttribute('data-wpstg-copy'));\n const elements = container.querySelectorAll(element.getAttribute('data-wpstg-target'));\n\n if (elements.length) {\n for (const el of elements) {\n el.value = element.getAttribute('data-wpstg-copy', '');\n }\n }\n}\n\n/**\n * Copy text in data-wpstg-source to clipboard\n *\n * @param {Element} element\n *\n * @return {void}\n */\nexport function handleCopyToClipboard(element) {\n if (!element instanceof Element || !element.getAttribute('data-wpstg-source')) {\n return;\n }\n\n const containerSelector = '.wpstg_admin';\n\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n const el = container.querySelector(element.getAttribute('data-wpstg-source'));\n\n if (el) {\n navigator.clipboard.writeText(el.value);\n }\n}\n\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Enable/Disable cloning for staging site\n */\nexport default class WpstgCloneStaging {\n constructor(\n pageWrapperId = '#wpstg-clonepage-wrapper',\n wpstgObject = wpstg,\n ) {\n this.pageWrapper = dom.qs(pageWrapperId);\n this.wpstgObject = wpstgObject;\n this.enableButtonId = '#wpstg-enable-staging-cloning';\n this.enableAction = 'wpstg_enable_staging_cloning';\n\n this.notyf = new Notyf({\n duration: 10000,\n position: {\n x: 'center',\n y: 'bottom',\n },\n dismissible: true,\n types: [\n {\n type: 'warning',\n background: 'orange',\n icon: false,\n },\n ],\n });\n this.init();\n }\n\n addEvents() {\n if (this.pageWrapper === null) {\n return;\n }\n\n dom.addEvent(this.pageWrapper, 'click', this.enableButtonId, () => {\n this.sendRequest(this.enableAction);\n });\n }\n\n init() {\n this.addEvents();\n }\n\n sendRequest(action) {\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams({\n action: action,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((data) => {\n // Reload current page if successful.\n if ('undefined' !== typeof (data.success) && data.success) {\n location.reload();\n return;\n }\n\n // There will be message probably in case of error\n if ('undefined' !== typeof (data.message)) {\n this.notyf.error(data.message);\n return;\n }\n\n this.notyf.error(this.wpstgObject.i18n['somethingWentWrong']);\n }).catch((error) => {\n console.warn(this.wpstgObject.i18n['somethingWentWrong'], error);\n });\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Fetch directory direct child directories\n */\nexport default class WpstgDirectoryNavigation {\n constructor(\n directoryListingSelector = '#wpstg-directories-listing',\n workflowSelector = '#wpstg-workflow',\n wpstgObject = wpstg,\n notyf = null,\n ) {\n this.directoryListingContainer = dom.qs(directoryListingSelector);\n this.workflow = dom.qs(workflowSelector);\n this.wpstgObject = wpstgObject;\n this.dirCheckboxSelector = '.wpstg-check-dir';\n this.dirExpandSelector = '.wpstg-expand-dirs';\n this.unselectAllDirsSelector = '.wpstg-unselect-dirs';\n this.selectDefaultDirsSelector = '.wpstg-select-dirs-default';\n this.fetchChildrenAction = 'wpstg_fetch_dir_childrens';\n this.currentCheckboxElement = null;\n this.currentParentDiv = null;\n this.currentLoader = null;\n this.existingExcludes = [];\n this.excludedDirectories = [];\n this.isDefaultSelected = false;\n this.notyf = notyf;\n\n this.init();\n }\n\n addEvents() {\n if (this.directoryListingContainer === null) {\n console.log('Error: directory navigation add events');\n return;\n }\n\n dom.addEvent(this.directoryListingContainer, 'change', this.dirCheckboxSelector, (element, event) => {\n event.preventDefault();\n console.log(this.getExcludedDirectories());\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', this.dirExpandSelector, (element, event) => {\n event.preventDefault();\n if (this.toggleDirExpand(element)) {\n this.sendRequest(this.fetchChildrenAction, element);\n }\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', this.unselectAllDirsSelector, () => {\n this.unselectAll();\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', this.selectDefaultDirsSelector, () => {\n this.selectDefault();\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', '.wpstg-expand-dirs', (target, event) => {\n event.preventDefault();\n this.toggleDirectoryNavigation(target);\n });\n\n dom.addEvent(this.directoryListingContainer, 'change', 'input.wpstg-check-dir', (target) => {\n this.updateDirectorySelection(target);\n });\n }\n\n init() {\n this.addEvents();\n this.parseExcludes();\n }\n\n /**\n * Toggle Dir Expand,\n * Return true if children aren't fetched\n * @param {HTMLElement} element\n * @return {boolean}\n */\n toggleDirExpand(element) {\n this.currentParentDiv = element.parentElement;\n this.currentCheckboxElement = element.previousSibling;\n this.currentLoader = this.currentParentDiv.querySelector('.wpstg-is-dir-loading');\n if (this.currentCheckboxElement.getAttribute('data-navigateable', 'false') === 'false') {\n return false;\n }\n\n if (this.currentCheckboxElement.getAttribute('data-scanned', 'false') === 'false') {\n return true;\n }\n\n return false;\n }\n\n sendRequest(action) {\n if (this.currentLoader !== null) {\n this.currentLoader.style.display = 'inline-block';\n }\n\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams({\n action: action,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n dirPath: this.currentCheckboxElement.value,\n isChecked: this.currentCheckboxElement.checked,\n forceDefault: this.isDefaultSelected,\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((data) => {\n if ('undefined' !== typeof (data.success) && data.success) {\n this.currentCheckboxElement.setAttribute('data-scanned', true);\n const dirContainer = document.createElement('div');\n dirContainer.classList.add('wpstg-dir');\n dirContainer.classList.add('wpstg-subdir');\n dirContainer.innerHTML = JSON.parse(data.directoryListing);\n this.currentParentDiv.appendChild(dirContainer);\n if (this.currentLoader !== null) {\n this.currentLoader.style.display = 'none';\n }\n\n dom.slideDown(dirContainer);\n\n return;\n }\n\n if (this.notyf !== null) {\n this.notyf.error(this.wpstgObject.i18n['somethingWentWrong']);\n } else {\n alert('Error: ' + this.wpstgObject.i18n['somethingWentWrong']);\n }\n }).catch((error) => {\n console.warn(this.wpstgObject.i18n['somethingWentWrong'], error);\n });\n }\n\n getExcludedDirectories() {\n this.excludedDirectories = [];\n this.directoryListingContainer.querySelectorAll('.wpstg-dir input:not(:checked)').forEach((element) => {\n if (!this.isParentExcluded(element.value)) {\n this.excludedDirectories.push(element.value);\n }\n });\n\n this.existingExcludes.forEach((exclude) => {\n if (!this.isParentExcluded(exclude) && !this.isScanned(exclude)) {\n this.excludedDirectories.push(exclude);\n }\n });\n\n return this.excludedDirectories.join(this.wpstgObject.settings.directorySeparator);\n }\n\n /**\n * @param {string} path\n * @return {bool}\n */\n isParentExcluded(path) {\n let isParentAlreadyExcluded = false;\n this.excludedDirectories.forEach((dir) => {\n if (path.startsWith(dir + '/')) {\n isParentAlreadyExcluded = true;\n }\n });\n\n return isParentAlreadyExcluded;\n }\n\n getExtraDirectoriesRootOnly() {\n this.getExcludedDirectories();\n const extraDirectories = [];\n this.directoryListingContainer.querySelectorAll(':not(.wpstg-subdir)>.wpstg-dir>input.wpstg-wp-non-core-dir:checked').forEach((element) => {\n extraDirectories.push(element.value);\n });\n\n // Check if extra directories text area exists\n // TODO: remove extraCustomDirectories code if no one require extraCustomDirectories...\n const extraDirectoriesTextArea = dom.qs('#wpstg_extraDirectories');\n if (extraDirectoriesTextArea === null || extraDirectoriesTextArea.value === '') {\n return extraDirectories.join(this.wpstgObject.settings.directorySeparator);\n }\n\n const extraCustomDirectories = extraDirectoriesTextArea.value.split(/\\r?\\n/);\n\n return extraDirectories.concat(extraCustomDirectories).join(this.wpstgObject.settings.directorySeparator);\n }\n\n unselectAll() {\n this.directoryListingContainer.querySelectorAll('.wpstg-dir input').forEach((element) => {\n element.checked = false;\n });\n }\n\n selectDefault() {\n // unselect all checkboxes\n this.unselectAll();\n\n // only select those checkboxes whose class is wpstg-wp-core-dir\n this.directoryListingContainer.querySelectorAll('.wpstg-dir input.wpstg-wp-core-dir').forEach((element) => {\n element.checked = true;\n });\n\n // then unselect those checkboxes whose parent has wpstg extra checkbox\n this.directoryListingContainer.querySelectorAll('.wpstg-dir > .wpstg-wp-non-core-dir').forEach((element) => {\n element.parentElement.querySelectorAll('input.wpstg-wp-core-dir').forEach((element) => {\n element.checked = false;\n });\n });\n\n this.isDefaultSelected = true;\n }\n\n parseExcludes() {\n this.existingExcludes = this.directoryListingContainer.getAttribute('data-existing-excludes', []);\n if (this.existingExcludes === '') {\n this.existingExcludes = [];\n return;\n }\n\n if (this.existingExcludes.length === 0) {\n this.existingExcludes = [];\n return;\n }\n\n const existingExcludes = this.existingExcludes.split(',');\n this.existingExcludes = existingExcludes.map((exclude) => {\n if (exclude.substr(0, 1) === '/') {\n return exclude.slice(1);\n }\n\n return exclude;\n });\n }\n\n isScanned(exclude) {\n let scanned = false;\n this.directoryListingContainer.querySelectorAll('.wpstg-dir>input').forEach((element) => {\n if (element.value == exclude) {\n scanned = true;\n }\n });\n\n return scanned;\n }\n\n toggleDirectoryNavigation(element) {\n const cbElement = element.previousSibling;\n if (cbElement.getAttribute('data-navigateable', 'false') === 'false') {\n return;\n }\n\n if (cbElement.getAttribute('data-scanned', 'false') === 'false') {\n return;\n }\n\n const subDirectories = dom.getNextSibling(element, '.wpstg-subdir');\n\n if (subDirectories.style.display === 'none') {\n dom.slideDown(subDirectories);\n } else {\n dom.slideUp(subDirectories);\n }\n }\n\n updateDirectorySelection(element) {\n const parent = element.parentElement;\n if (element.checked) {\n dom.getParents(parent, '.wpstg-dir').forEach((parElem) => {\n for (let i = 0; i < parElem.children.length; i++) {\n if (parElem.children[i].matches('.wpstg-check-dir')) {\n parElem.children[i].checked = true;\n }\n }\n });\n parent.querySelectorAll('.wpstg-expand-dirs').forEach((x) => {\n x.classList.remove('disabled');\n });\n parent.querySelectorAll('.wpstg-subdir .wpstg-check-dir').forEach((x) => {\n x.checked = true;\n });\n } else {\n parent.querySelectorAll('.wpstg-expand-dirs, .wpstg-check-subdirs').forEach((x) => {\n x.classList.add('disabled');\n });\n parent.querySelectorAll('.wpstg-dir .wpstg-check-dir').forEach((x) => {\n x.checked = false;\n });\n }\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Database tables selection\n */\nexport default class WpstgTableSelection {\n constructor(\n databaseTableSectionSelector = '#wpstg-scanning-db',\n workflowSelector = '#wpstg-workflow',\n networkCloneSelector = '#wpstg_network_clone',\n wpstgObject = wpstg,\n ) {\n this.databaseTableSection = dom.qs(databaseTableSectionSelector);\n this.workflow = dom.qs(workflowSelector);\n this.networkCloneSelector = networkCloneSelector;\n this.networkCloneCheckbox = dom.qs(networkCloneSelector);\n this.wpstgObject = wpstgObject;\n this.isAllTablesChecked = true;\n this.isMultisite = this.wpstgObject.isMultisite === '1';\n this.isNetworkClone = false;\n\n this.init();\n }\n\n setNetworkClone(isNetworkClone) {\n this.isNetworkClone = isNetworkClone;\n }\n\n addEvents() {\n if (this.workflow === null) {\n console.log('Error: database table section is null. Cannot register events');\n return;\n }\n\n dom.addEvent(this.workflow, 'change', this.networkCloneSelector, () => {\n this.selectDefaultTables();\n });\n\n dom.addEvent(this.workflow, 'click', '.wpstg-button-select', (target, event) => {\n event.preventDefault();\n this.selectDefaultTables();\n });\n\n dom.addEvent(this.workflow, 'click', '.wpstg-button-unselect', (target, event) => {\n event.preventDefault();\n this.toggleTableSelection();\n });\n }\n\n init() {\n this.addEvents();\n }\n\n getRegexPattern() {\n let pattern = '^' + this.wpstgObject.tblprefix;\n let isNetwork = false;\n if (this.networkCloneCheckbox !== undefined && this.networkCloneCheckbox !== null) {\n isNetwork = this.networkCloneCheckbox.checked;\n }\n\n // Force network clone true if set explicitly\n if (this.isNetworkClone) {\n isNetwork = true;\n }\n\n if (this.isMultisite && !isNetwork) {\n pattern += '([^0-9])_*';\n }\n\n return pattern;\n }\n\n selectDefaultTables() {\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning .wpstg-db-table');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (name.match(regexPattern)) {\n option.selected = true;\n } else {\n option.selected = false;\n }\n });\n }\n\n toggleTableSelection() {\n if (false === this.isAllTablesChecked) {\n this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning .wpstg-db-table').forEach((option) => {\n option.selected = true;\n });\n this.databaseTableSection.querySelector('.wpstg-button-unselect').innerHTML = 'Unselect All';\n // cache.get('.wpstg-db-table-checkboxes').prop('checked', true);\n this.isAllTablesChecked = true;\n } else {\n this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning .wpstg-db-table').forEach((option) => {\n option.selected = false;\n });\n this.databaseTableSection.querySelector('.wpstg-button-unselect').innerHTML = 'Select All';\n // cache.get('.wpstg-db-table-checkboxes').prop('checked', false);\n this.isAllTablesChecked = false;\n }\n }\n\n getSelectedTablesWithoutPrefix() {\n const selectedTablesWithoutPrefix = [];\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning option:checked');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (!name.match(regexPattern)) {\n selectedTablesWithoutPrefix.push(option.value);\n }\n });\n\n return selectedTablesWithoutPrefix.join(this.wpstgObject.settings.directorySeparator);\n }\n\n getIncludedTables() {\n const includedTables = [];\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning option:checked');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (name.match(regexPattern)) {\n includedTables.push(option.value);\n }\n });\n\n return includedTables.join(this.wpstgObject.settings.directorySeparator);\n }\n\n getExcludedTables() {\n const excludedTables = [];\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning option:not(:checked)');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (name.match(regexPattern)) {\n excludedTables.push(option.value);\n }\n });\n\n return excludedTables.join(this.wpstgObject.settings.directorySeparator);\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Rich Exclude Filter Module\n */\nexport default class WpstgExcludeFilters {\n constructor(\n excludeFilterContainerSelector = '#wpstg-exclude-filters-container',\n wpstgObject = wpstg,\n ) {\n this.excludeContainer = dom.qs(excludeFilterContainerSelector);\n this.excludeTableBody = dom.qs(`${excludeFilterContainerSelector} tbody`);\n this.wpstgObject = wpstgObject;\n this.init();\n }\n\n addEvents() {\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-file-size-rule', () => {\n this.addFileSizeExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-file-ext-rule', () => {\n this.addFileExtExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-file-name-rule', () => {\n this.addFileNameExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-dir-name-rule', () => {\n this.addDirNameExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-clear-all-rules', () => {\n this.clearExcludes();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-remove-exclude-rule', (target) => {\n this.removeExclude(target);\n });\n }\n\n init() {\n if (this.excludeContainer === null) {\n console.log('Error: Given table selector not found!');\n return;\n }\n\n this.addEvents();\n }\n\n addFileSizeExclude() {\n this.addExcludeRuleRow('#wpstg-file-size-exclude-filter-template');\n }\n\n addFileExtExclude() {\n this.addExcludeRuleRow('#wpstg-file-ext-exclude-filter-template');\n }\n\n addFileNameExclude() {\n this.addExcludeRuleRow('#wpstg-file-name-exclude-filter-template');\n }\n\n addDirNameExclude() {\n this.addExcludeRuleRow('#wpstg-dir-name-exclude-filter-template');\n }\n\n addExcludeRuleRow(templateName) {\n const excludeRowTemplate = dom.qs(templateName);\n if (excludeRowTemplate !== null) {\n const clone = excludeRowTemplate.content.cloneNode(true);\n const excludeRow = clone.querySelector('tr');\n\n this.excludeTableBody.appendChild(excludeRow);\n dom.all('.wpstg-has-exclude-rules').forEach((e) => {\n e.style.display = 'inherit';\n });\n }\n }\n\n clearExcludes() {\n this.excludeTableBody.innerHTML = '';\n dom.all('.wpstg-has-exclude-rules').forEach((e) => {\n e.style.display = 'none';\n });\n }\n\n removeExclude(target) {\n if (target.parentElement !== null && target.parentElement.parentElement !== null) {\n this.excludeTableBody.removeChild(target.parentElement.parentElement);\n }\n\n if (this.excludeTableBody.innerHTML.trim() === '') {\n dom.all('.wpstg-has-exclude-rules').forEach((e) => {\n e.style.display = 'none';\n });\n }\n }\n\n /**\n * Converts all the exclude filters arrays into one single string to keep size of post request small\n * @return {string}\n */\n getExcludeFilters() {\n const globExcludes = [];\n const sizeExcludes = [];\n\n const sizeCompares = this.excludeTableBody.querySelectorAll('select[name=\"wpstgFileSizeExcludeRuleCompare[]\"]');\n const sizeSizes = this.excludeTableBody.querySelectorAll('input[name=\"wpstgFileSizeExcludeRuleSize[]\"]');\n const sizeByte = this.excludeTableBody.querySelectorAll('select[name=\"wpstgFileSizeExcludeRuleByte[]\"]');\n for (const [key, sizeInput] of Object.entries(sizeSizes)) {\n if (sizeInput.value !== '') {\n sizeExcludes.push(sizeCompares[key].value + ' ' + sizeInput.value + sizeByte[key].value);\n }\n }\n\n const extensionInputs = this.excludeTableBody.querySelectorAll('input[name=\"wpstgFileExtExcludeRule[]\"]');\n extensionInputs.forEach((x) => {\n const ext = this.cleanStringForGlob(x.value);\n if (ext !== '') {\n globExcludes.push('ext:' + ext.trim());\n }\n });\n\n const fileNamesPos = this.excludeTableBody.querySelectorAll('select[name=\"wpstgFileNameExcludeRulePos[]\"]');\n const fileNames = this.excludeTableBody.querySelectorAll('input[name=\"wpstgFileNameExcludeRulePath[]\"]');\n for (const [key, fileInput] of Object.entries(fileNames)) {\n let fileName = '';\n if ('name_exact_matches' === fileNamesPos[key].value) {\n fileName = this.cleanStringForGlobExactMatches(fileInput.value);\n } else {\n fileName = this.cleanStringForGlob(fileInput.value);\n }\n\n if (fileName !== '') {\n globExcludes.push('file:' + fileNamesPos[key].value + ' ' + fileName.trim());\n }\n }\n\n const dirNamesPos = this.excludeTableBody.querySelectorAll('select[name=\"wpstgDirNameExcludeRulePos[]\"]');\n const dirNames = this.excludeTableBody.querySelectorAll('input[name=\"wpstgDirNameExcludeRulePath[]\"]');\n for (const [key, dirInput] of Object.entries(dirNames)) {\n const dirName = this.cleanStringForGlob(dirInput.value);\n if (dirName !== '') {\n globExcludes.push('dir:' + dirNamesPos[key].value + ' ' + dirName.trim());\n }\n }\n\n return {\n 'sizes': sizeExcludes.filter(this.onlyUnique).join(','),\n // return set of unique rules\n 'globs': globExcludes.filter(this.onlyUnique).join(','),\n };\n }\n\n onlyUnique(value, index, self) {\n return self.indexOf(value) === index;\n }\n\n /**\n * Remove most of the comment glob characters from the string\n * @param {String} value\n * @return {String}\n */\n cleanStringForGlob(value) {\n // will replace character like * ^ / \\ ! ? [ from the string\n return value.replace(/[*^//!\\.[?]/g, '');\n }\n\n /**\n * Remove most of the comment glob characters from the string except . to allow input of extensions\n * @param {String} value\n * @return {String}\n */\n cleanStringForGlobExactMatches(value) {\n // will replace character like * ^ / \\ ! ? [ from the string\n return value.replace(/[*^//!\\\\[?]/g, '');\n }\n}\n","/**\n * Basic WP Staging Modal implemented with help of Sweetalerts\n */\nexport default class WpstgModal {\n constructor(\n confirmAction,\n wpstgObject = wpstg,\n ) {\n this.confirmAction = confirmAction;\n this.wpstgObject = wpstgObject;\n }\n\n show(swalOptions, additionalParams = {}, callback = null) {\n wpstgSwal.fire(swalOptions).then((result) => {\n if (result.value && this.error !== null) {\n this.triggerConfirmAction(additionalParams, callback);\n }\n });\n }\n\n triggerConfirmAction(additionalParams = {}, callback = null) {\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams(Object.assign({\n action: this.confirmAction,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n }, additionalParams)),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((response) => {\n if (callback !== null) {\n callback(response);\n }\n }).catch((error) => {\n console.log(this.wpstgObject.i18n['somethingWentWrong'], error);\n });\n }\n}\n","'use strict';\n\n/**\n * This is a namespaced port of https://github.com/tristen/hoverintent,\n * with slight modification to accept selector with dynamically added element in dom,\n * instead of just already present element.\n *\n * @param {HTMLElement} parent\n * @param {string} selector\n * @param {CallableFunction} onOver\n * @param {CallableFunction} onOut\n *\n * @return {object}\n */\nexport default function(parent, selector, onOver, onOut) {\n let x; let y; let pX; let pY;\n let mouseOver = false;\n let focused = false;\n const h = {};\n let state = 0;\n let timer = 0;\n\n let options = {\n sensitivity: 7,\n interval: 100,\n timeout: 0,\n handleFocus: false,\n };\n\n function delay(el, e) {\n if (timer) {\n timer = clearTimeout(timer);\n }\n\n state = 0;\n return focused ? undefined : onOut(el, e);\n }\n\n function tracker(e) {\n x = e.clientX;\n y = e.clientY;\n }\n\n function compare(el, e) {\n if (timer) timer = clearTimeout(timer);\n if ((Math.abs(pX - x) + Math.abs(pY - y)) < options.sensitivity) {\n state = 1;\n return focused ? undefined : onOver(el, e);\n } else {\n pX = x;\n pY = y;\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n }\n\n // Public methods\n h.options = function(opt) {\n const focusOptionChanged = opt.handleFocus !== options.handleFocus;\n options = Object.assign({}, options, opt);\n if (focusOptionChanged) {\n options.handleFocus ? addFocus() : removeFocus();\n }\n\n return h;\n };\n\n function dispatchOver(el, e) {\n mouseOver = true;\n if (timer) {\n timer = clearTimeout(timer);\n }\n\n el.removeEventListener('mousemove', tracker, false);\n\n if (state !== 1) {\n pX = e.clientX;\n pY = e.clientY;\n\n el.addEventListener('mousemove', tracker, false);\n\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n\n return this;\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchOver to support dynamically added elements to dom\n */\n function onMouseOver(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchOver(event.target.closest(selector), event);\n }\n };\n\n function dispatchOut(el, e) {\n mouseOver = false;\n if (timer) {\n timer = clearTimeout(timer);\n }\n\n el.removeEventListener('mousemove', tracker, false);\n\n if (state === 1) {\n timer = setTimeout(function() {\n delay(el, e);\n }, options.timeout);\n }\n\n return this;\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchOut to support dynamically added elements to dom\n */\n function onMouseOut(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchOut(event.target.closest(selector), event);\n }\n };\n\n function dispatchFocus(el, e) {\n if (!mouseOver) {\n focused = true;\n onOver(el, e);\n }\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchFocus to support dynamically added elements to dom\n */\n function onFocus(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchFocus(event.target.closest(selector), event);\n }\n };\n\n function dispatchBlur(el, e) {\n if (!mouseOver && focused) {\n focused = false;\n onOut(el, e);\n }\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchBlur to support dynamically added elements to dom\n */\n function onBlur(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchBlur(event.target.closest(selector), event);\n }\n };\n\n /**\n * Modified to support dynamically added element\n */\n function addFocus() {\n parent.addEventListener('focus', onFocus, false);\n parent.addEventListener('blur', onBlur, false);\n }\n\n /**\n * Modified to support dynamically added element\n */\n function removeFocus() {\n parent.removeEventListener('focus', onFocus, false);\n parent.removeEventListener('blur', onBlur, false);\n }\n\n /**\n * Modified to support dynamically added element\n */\n h.remove = function() {\n if (!parent) {\n return;\n }\n\n parent.removeEventListener('mouseover', onMouseOver, false);\n parent.removeEventListener('mouseout', onMouseOut, false);\n removeFocus();\n };\n\n /**\n * Modified to support dynamically added element\n */\n if (parent) {\n parent.addEventListener('mouseover', onMouseOver, false);\n parent.addEventListener('mouseout', onMouseOut, false);\n }\n\n return h;\n};\n","import wpstgHoverIntent from './modules/wpstg-hover-intent';\n\nexport default (function($) {\n const WPStagingCommon = {\n continueErrorHandle: true,\n cache: {\n elements: [],\n get: function(selector) {\n // It is already cached!\n if ($.inArray(selector, this.elements) !== -1) {\n return this.elements[selector];\n }\n\n // Create cache and return\n this.elements[selector] = $(selector);\n\n return this.elements[selector];\n },\n refresh: function(selector) {\n selector.elements[selector] = $(selector);\n },\n },\n setJobId: function(jobId) {\n localStorage.setItem('jobIdBeingProcessed', jobId);\n },\n getJobId: function() {\n return localStorage.getItem('jobIdBeingProcessed');\n },\n listenTooltip: function() {\n wpstgHoverIntent(document, '.wpstg--tooltip', function(target, event) {\n target.querySelector('.wpstg--tooltiptext').style.visibility = 'visible';\n }, function(target, event) {\n target.querySelector('.wpstg--tooltiptext').style.visibility = 'hidden';\n });\n },\n isEmpty: function(obj) {\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n\n return true;\n },\n // Get the custom themed Swal Modal for WP Staging\n // Easy to maintain now in one place now\n getSwalModal: function(isContentCentered = false, customClasses = {}) {\n // common style for all swal modal used in WP Staging\n const defaultCustomClasses = {\n confirmButton: 'wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn wpstg-100-width',\n cancelButton: 'wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn wpstg-100-width',\n actions: 'wpstg--modal--actions',\n popup: isContentCentered ? 'wpstg-swal-popup centered-modal' : 'wpstg-swal-popup',\n };\n\n // If a attribute exists in both default and additional attributes,\n // The class(es) of the additional attribute will overrite the default one.\n const options = {\n customClass: Object.assign(defaultCustomClasses, customClasses),\n buttonsStyling: false,\n reverseButtons: true,\n showClass: {\n popup: 'wpstg--swal2-show wpstg-swal-show',\n },\n };\n\n return wpstgSwal.mixin(options);\n },\n showSuccessModal: function(htmlContent) {\n this.getSwalModal().fire({\n showConfirmButton: false,\n showCancelButton: true,\n cancelButtonText: 'OK',\n icon: 'success',\n title: 'Success!',\n html: '<div class=\"wpstg--grey\" style=\"text-align: left; margin-top: 8px;\">' + htmlContent + '</div>',\n });\n },\n showWarningModal: function(htmlContent) {\n this.getSwalModal().fire({\n showConfirmButton: false,\n showCancelButton: true,\n cancelButtonText: 'OK',\n icon: 'warning',\n title: '',\n html: '<div class=\"wpstg--grey\" style=\"text-align: left; margin-top: 8px;\">' + htmlContent + '</div>',\n });\n },\n showErrorModal: function(htmlContent) {\n this.getSwalModal().fire({\n showConfirmButton: false,\n showCancelButton: true,\n cancelButtonText: 'OK',\n icon: 'error',\n title: 'Error!',\n html: '<div class=\"wpstg--grey\" style=\"text-align: left; margin-top: 8px;\">' + htmlContent + '</div>',\n });\n },\n getSwalContainer: function() {\n return wpstgSwal.getContainer();\n },\n closeSwalModal: function() {\n wpstgSwal.close();\n },\n /**\n * Treats a default response object generated by WordPress's\n * wp_send_json_success() or wp_send_json_error() functions in\n * PHP, parses it in JavaScript, and either throws if it's an error,\n * or returns the data if the response is successful.\n *\n * @param {object} response\n * @return {*}\n */\n getDataFromWordPressResponse(response) {\n if (typeof response !== 'object') {\n throw new Error('Unexpected response (ERR 1341)');\n }\n\n if (!response.hasOwnProperty('success')) {\n throw new Error('Unexpected response (ERR 1342)');\n }\n\n if (!response.hasOwnProperty('data')) {\n throw new Error('Unexpected response (ERR 1343)');\n }\n\n if (response.success === false) {\n if (response.data instanceof Array && response.data.length > 0) {\n throw new Error(response.data.shift());\n } else {\n throw new Error('Response was not successful');\n }\n } else {\n // Successful response. Return the data.\n return response.data;\n }\n },\n isLoading: function(isLoading) {\n if (!isLoading || isLoading === false) {\n WPStagingCommon.cache.get('.wpstg-loader').hide();\n } else {\n WPStagingCommon.cache.get('.wpstg-loader').show();\n }\n },\n /**\n * Convert the given url to make it slug compatible\n * @param {string} url\n * @return {string}\n */\n slugify: function(url) {\n return url.toString()\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .replace(/\\s+/g, '-')\n .replace(/&/g, '-and-')\n .replace(/[^a-z0-9\\-]/g, '')\n .replace(/-+/g, '-')\n .replace(/^-*/, '')\n .replace(/-*$/, '')\n ;\n },\n showAjaxFatalError: function(response, prependMessage, appendMessage) {\n prependMessage = prependMessage ? prependMessage + '<br/><br/>' : 'Something went wrong! <br/><br/>';\n appendMessage = appendMessage ? appendMessage + '<br/><br/>' : '<br/><br/>Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.';\n\n if (response === false) {\n WPStagingCommon.showError(prependMessage + ' Error: No response.' + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n\n if (typeof response.error !== 'undefined' && response.error) {\n WPStagingCommon.showError(prependMessage + ' Error: ' + response.message + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n },\n handleFetchErrors: function(response) {\n if (!response.ok) {\n WPStagingCommon.showError('Error: ' + response.status + ' - ' + response.statusText + '. Please try again or contact support.');\n }\n return response;\n },\n showError: function(message) {\n WPStagingCommon.cache.get('#wpstg-try-again').css('display', 'inline-block');\n WPStagingCommon.cache.get('#wpstg-cancel-cloning').text('Reset');\n WPStagingCommon.cache.get('#wpstg-resume-cloning').show();\n WPStagingCommon.cache.get('#wpstg-error-wrapper').show();\n WPStagingCommon.cache.get('#wpstg-error-details').show().html(message);\n WPStagingCommon.cache.get('#wpstg-removing-clone').removeClass('loading');\n WPStagingCommon.cache.get('.wpstg-loader').hide();\n $('.wpstg--modal--process--generic-problem').show().html(message);\n },\n resetErrors: function() {\n WPStagingCommon.cache.get('#wpstg-error-details').hide().html('');\n },\n /**\n * Ajax Requests\n * @param {Object} data\n * @param {Function} callback\n * @param {string} dataType\n * @param {bool} showErrors\n * @param {int} tryCount\n * @param {float} incrementRatio\n * @param {function} errorCallback\n */\n ajax: function(data, callback, dataType, showErrors, tryCount, incrementRatio = null, errorCallback = null) {\n if ('undefined' === typeof (dataType)) {\n dataType = 'json';\n }\n\n if (false !== showErrors) {\n showErrors = true;\n }\n\n tryCount = 'undefined' === typeof (tryCount) ? 0 : tryCount;\n\n const retryLimit = 10;\n\n let retryTimeout = 10000 * tryCount;\n\n incrementRatio = parseInt(incrementRatio);\n if (!isNaN(incrementRatio)) {\n retryTimeout *= incrementRatio;\n }\n\n $.ajax({\n url: ajaxurl + '?action=wpstg_processing&_=' + (Date.now() / 1000),\n type: 'POST',\n dataType: dataType,\n cache: false,\n data: data,\n error: function(xhr, textStatus, errorThrown) {\n console.log(xhr.status + ' ' + xhr.statusText + '---' + textStatus);\n\n if (typeof (errorCallback) === 'function') {\n // Custom error handler\n errorCallback(xhr, textStatus, errorThrown);\n\n if (!WPStagingCommon.continueErrorHandle) {\n // Reset state\n WPStagingCommon.continueErrorHandle = true;\n\n return;\n }\n }\n\n // Default error handler\n tryCount++;\n if (tryCount <= retryLimit) {\n setTimeout(function() {\n WPStagingCommon.ajax(data, callback, dataType, showErrors, tryCount, incrementRatio);\n return;\n }, retryTimeout);\n } else {\n const errorCode = 'undefined' === typeof (xhr.status) ? 'Unknown' : xhr.status;\n WPStagingCommon.showError(\n 'Fatal Error: ' + errorCode + ' Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.',\n );\n }\n },\n success: function(data) {\n if ('function' === typeof (callback)) {\n callback(data);\n }\n },\n statusCode: {\n 404: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 404 - Can\\'t find ajax request URL! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 500: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Fatal Error 500 - Internal server error while processing the request! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 504: function() {\n if (tryCount > retryLimit) {\n WPStagingCommon.showError('Error 504 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 502: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 502 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 503: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 503 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 429: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 429 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 403: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Refresh page or login again! The process should be finished successfully. \\n\\ ');\n }\n },\n },\n });\n },\n };\n\n return WPStagingCommon;\n})(jQuery);\n","\nimport * as dom from './wpstg-dom-utils.js';\nimport WpstgDirectoryNavigation from './wpstg-directory-navigation.js';\nimport WpstgTableSelection from './wpstg-table-selection';\nimport WpstgExcludeFilters from './wpstg-exclude-filters.js';\nimport WpstgModal from './wpstg-modal.js';\nimport WPStagingCommon from './../wpstg.js';\n\n/**\n * Manage RESET MODAL\n */\nexport default class WpstgResetModal {\n constructor(\n cloneID,\n workflowSelector = '#wpstg-workflow',\n fetchExcludeSettingsAction = 'wpstg_clone_excludes_settings',\n modalErrorAction = 'wpstg_modal_error',\n wpstgObject = wpstg,\n ) {\n this.cloneID = cloneID;\n this.workflow = dom.qs(workflowSelector);\n this.wpstgObject = wpstgObject;\n this.fetchExcludeSettingsAction = fetchExcludeSettingsAction;\n this.modalErrorAction = modalErrorAction;\n this.resetButtonClass = 'wpstg-confirm-reset-clone';\n this.resetModalContainerClass = 'wpstg-reset-confirmation';\n this.resetTabSelector = '.wpstg-reset-exclude-tab';\n this.directoryNavigator = null;\n this.excludeFilters = null;\n this.tableSelector = null;\n this.isNetworkClone = false;\n }\n\n addEvents() {\n const resetModalContainer = dom.qs('.' + this.resetModalContainerClass);\n if (resetModalContainer === null) {\n console.log('Exit');\n return;\n }\n\n dom.addEvent(resetModalContainer, 'click', this.resetTabSelector, (target) => {\n this.toggleContent(target);\n });\n }\n\n init() {\n this.addEvents();\n }\n\n setNetworkClone(isNetworkClone) {\n this.isNetworkClone = isNetworkClone;\n }\n\n toggleContent(target) {\n const resetModalContainer = dom.qs('.' + this.resetModalContainerClass);\n const contentId = target.getAttribute('data-id');\n const tabTriangle = target.querySelector('.wpstg-tab-triangle');\n const isCollapsed = target.getAttribute('data-collapsed', 'true');\n const content = dom.qs(contentId);\n if (isCollapsed === 'true') {\n if (resetModalContainer.classList.contains('has-collapsible-open')) {\n resetModalContainer.classList.add('has-collapsible-open-2');\n } else {\n resetModalContainer.classList.add('has-collapsible-open');\n }\n\n dom.slideDown(content);\n tabTriangle.style.transform = 'rotate(90deg)';\n target.setAttribute('data-collapsed', 'false');\n } else {\n if (resetModalContainer.classList.contains('has-collapsible-open-2')) {\n resetModalContainer.classList.remove('has-collapsible-open-2');\n } else {\n resetModalContainer.classList.remove('has-collapsible-open');\n }\n\n dom.slideUp(content);\n tabTriangle.style.removeProperty('transform');\n target.setAttribute('data-collapsed', 'true');\n }\n }\n\n /**\n * Show Swal alert with loader and send ajax request to fetch content of alert.\n * @return Promise\n */\n showModal() {\n const swalPromise = this.loadModal();\n this.init();\n this.fetchCloneExcludes();\n return swalPromise;\n }\n\n loadModal() {\n return WPStagingCommon.getSwalModal(false, {\n confirmButton: this.resetButtonClass + ' wpstg-confirm-reset-clone wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn',\n container: this.resetModalContainerClass + ' wpstg-swal2-container wpstg-swal2-loading',\n }).fire({\n title: '',\n icon: 'warning',\n html: this.getAjaxLoader(),\n width: '400px',\n focusConfirm: false,\n confirmButtonText: this.wpstgObject.i18n.resetClone,\n showCancelButton: true,\n });\n }\n\n fetchCloneExcludes() {\n this.error = null;\n // send ajax request and fetch preserved exclude settings\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams({\n action: this.fetchExcludeSettingsAction,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n clone: this.cloneID,\n job: 'resetting',\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((data) => {\n if (!data.success) {\n const errorModal = new WpstgModal(this.modalErrorAction, this.wpstgObject);\n errorModal.show(Object.assign({\n title: 'Error',\n icon: 'error',\n html: this.wpstgObject.i18n['somethingWentWrong'],\n width: '500px',\n confirmButtonText: 'Ok',\n showCancelButton: false,\n customClass: {\n confirmButton: 'wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn',\n cancelButton: 'wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn',\n actions: 'wpstg--modal--actions',\n popup: 'wpstg-swal-popup centered-modal',\n },\n buttonsStyling: false,\n reverseButtons: true,\n }, data.swalOptions), {\n type: data.type,\n });\n\n return;\n }\n\n const modal = dom.qs('.wpstg-reset-confirmation');\n modal.classList.remove('wpstg-swal2-loading');\n modal.querySelector('.wpstg--swal2-popup').style.width = '500px';\n modal.querySelector('.wpstg--swal2-content').innerHTML = data.html;\n this.directoryNavigator = new WpstgDirectoryNavigation();\n this.excludeFilters = new WpstgExcludeFilters();\n this.tableSelector = new WpstgTableSelection('#wpstg-reset-excluded-tables', '.' + this.resetModalContainerClass);\n this.tableSelector.setNetworkClone(this.isNetworkClone);\n }).catch((error) => {\n this.renderError({\n 'html': this.wpstgObject.i18n['somethingWentWrong'] + ' ' + error,\n });\n });\n }\n\n getDirectoryNavigator() {\n return this.directoryNavigator;\n }\n\n getExcludeFilters() {\n return this.excludeFilters;\n }\n\n getTableSelector() {\n return this.tableSelector;\n }\n\n getAjaxLoader() {\n return '<div class=\"wpstg-swal2-ajax-loader\"><img src=\"' + this.wpstgObject.wpstgIcon + '\" /></div>';\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Handle toggle of advance settings checkboxes\n */\nexport default class WpstgCloningAdvanceSettings {\n constructor(\n baseContainerSelector = '#wpstg-clonepage-wrapper',\n ) {\n this.baseContainer = dom.qs(baseContainerSelector);\n this.checkBoxSettingTogglerSelector = '.wpstg-toggle-advance-settings-section';\n this.init();\n }\n\n /**\n * Add events\n * @return {void}\n */\n addEvents() {\n if (this.baseContainer === null) {\n return;\n }\n\n dom.addEvent(this.baseContainer, 'change', this.checkBoxSettingTogglerSelector, (element) => {\n this.toggleSettings(element);\n });\n }\n\n /**\n * @return {void}\n */\n init() {\n this.addEvents();\n }\n\n /**\n * Expand/Collapse checkbox content on change\n * @return {void}\n */\n toggleSettings(element) {\n const target = dom.qs('#' + element.getAttribute('data-id'));\n if (element.checked) {\n dom.slideDown(target);\n } else {\n dom.slideUp(target);\n }\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\nexport default class WpstgMainMenu {\n constructor() {\n this.activeTabClass = 'wpstg--tab--active';\n this.mainMenu();\n }\n\n mainMenu() {\n const tabHeader = dom.qs('.wpstg--tab--header');\n // Early bail if tab header is not available\n if (tabHeader === null) {\n return;\n }\n\n dom.addEvent(dom.qs('.wpstg--tab--header'), 'click', '.wpstg-button', (element) => {\n const $this = element;\n const target = $this.getAttribute('data-target');\n const targetElements = dom.all(target);\n const menuItems = dom.all('.wpstg--tab--header a[data-target]');\n const contents = dom.all('.wpstg--tab--contents > .wpstg--tab--content');\n\n contents.forEach((content) => {\n // active tab class is without the css dot class prefix\n if (content.matches('.' + this.activeTabClass + ':not(' + target + ')')) {\n content.classList.remove(this.activeTabClass);\n }\n });\n\n menuItems.forEach((menuItem) => {\n if (menuItem !== $this) {\n menuItem.classList.remove(this.activeTabClass);\n }\n });\n\n $this.classList.add(this.activeTabClass);\n\n targetElements.forEach((targetElement) => {\n targetElement.classList.add(this.activeTabClass);\n });\n\n if ('#wpstg--tab--backup' === target) {\n window.dispatchEvent(new Event('backups-tab'));\n }\n });\n };\n}\n","import WpstgCloneStaging from './modules/wpstg-clone-staging.js';\nimport WpstgDirectoryNavigation from './modules/wpstg-directory-navigation.js';\nimport WpstgTableSelection from './modules/wpstg-table-selection.js';\nimport WpstgExcludeFilters from './modules/wpstg-exclude-filters.js';\nimport WpstgResetModal from './modules/wpstg-reset-modal.js';\nimport WpstgModal from './modules/wpstg-modal.js';\nimport WpstgCloningAdvanceSettings from './modules/wpstg-cloning-advance-settings.js';\nimport WpstgMainMenu from './modules/wpstg-main-menu.js';\nimport WPStagingCommon from './wpstg.js';\nimport {handleDisplayDependencies, handleToggleElement, handleCopyPaste, handleCopyToClipboard} from './modules/wpstg-dom-utils.js';\n\nvar WPStaging = (function($) {\n const that = {\n isCancelled: false,\n isFinished: false,\n getLogs: false,\n time: 1,\n executionTime: false,\n progressBar: 0,\n cloneExcludeFilters: null,\n directoryNavigator: null,\n tableSelector: null,\n notyf: null,\n areAllTablesChecked: true,\n handleDisplayDependencies: handleDisplayDependencies,\n handleToggleElement: handleToggleElement,\n handleCopyPaste: handleCopyPaste,\n handleCopyToClipboard: handleCopyToClipboard,\n };\n const cache = {elements: []};\n let timeout; let ajaxSpinner;\n\n /**\n * Get / Set Cache for Selector\n * @param {String} selector\n * @return {*}\n */\n cache.get = function(selector) {\n // It is already cached!\n if ($.inArray(selector, cache.elements) !== -1) {\n return cache.elements[selector];\n }\n\n // Create cache and return\n cache.elements[selector] = jQuery(selector);\n\n return cache.elements[selector];\n };\n\n /**\n * Refreshes given cache\n * @param {String} selector\n */\n cache.refresh = function(selector) {\n selector.elements[selector] = jQuery(selector);\n };\n\n /**\n * Show and Log Error Message\n * @param {String} message\n */\n const showError = function(message) {\n cache.get('#wpstg-try-again').css('display', 'inline-block');\n cache.get('#wpstg-cancel-cloning').text('Reset');\n cache.get('#wpstg-resume-cloning').show();\n cache.get('#wpstg-error-wrapper').show();\n cache.get('#wpstg-error-details').show().html(message);\n cache.get('#wpstg-removing-clone').removeClass('loading');\n cache.get('.wpstg-loader').hide();\n $('.wpstg--modal--process--generic-problem').show().html(message);\n\n // Error event information for Staging\n $.ajax({\n url: ajaxurl,\n type: 'POST',\n dataType: 'json',\n data: {\n 'action': 'wpstg_staging_job_error',\n 'accessToken': wpstg.accessToken,\n 'nonce': wpstg.nonce,\n 'error_message': message,\n },\n });\n };\n\n /**\n * Show warning during cloning or push process when closing tab or browser, or changing page\n * @param {beforeunload} event\n * @return {null}\n */\n that.warnIfClosingDuringProcess = function(event) {\n // Only some browsers show the message below, most say something like \"Changes you made may not be saved\" (Chrome) or \"You have unsaved changes. Exit?\"\n event.returnValue = 'You MUST leave this window open while cloning/pushing. Please wait...';\n return null;\n };\n\n /**\n *\n * @param response the error object\n * @param prependMessage Overwrite default error message at beginning\n * @param appendMessage Overwrite default error message at end\n * @returns void\n */\n\n const showAjaxFatalError = function(response, prependMessage, appendMessage) {\n prependMessage = prependMessage ? prependMessage + '<br/><br/>' : 'Something went wrong! <br/><br/>';\n appendMessage = appendMessage ? appendMessage + '<br/><br/>' : '<br/><br/>Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.';\n\n if (response === false) {\n showError(prependMessage + ' Error: No response.' + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n\n if (typeof response.error !== 'undefined' && response.error) {\n console.error(response.message);\n showError(prependMessage + ' Error: ' + response.message + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n };\n\n /**\n *\n * @param response\n * @return {{ok}|*}\n */\n const handleFetchErrors = function(response) {\n if (!response.ok) {\n showError('Error: ' + response.status + ' - ' + response.statusText + '. Please try again or contact support.');\n }\n return response;\n };\n\n /** Hide and reset previous thrown visible errors */\n const resetErrors = function() {\n cache.get('#wpstg-error-details').hide().html('');\n };\n\n /**\n * Common Elements\n */\n const elements = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n let urlSpinner = ajaxurl.replace('/admin-ajax.php', '') + '/images/spinner';\n let timer;\n\n if (2 < window.devicePixelRatio) {\n urlSpinner += '-2x';\n }\n\n urlSpinner += '.gif';\n\n ajaxSpinner = '<img src=\\'\\'' + urlSpinner + '\\' alt=\\'\\' class=\\'ajax-spinner general-spinner\\' />';\n\n const getBaseValues = function() {\n const path = $('#wpstg-use-target-dir').data('base-path');\n const uri = $('#wpstg-use-target-hostname').data('base-uri');\n return {\n path,\n };\n };\n\n $workFlow\n /**\n .on('change', '#wpstg_network_clone', function(e) {\n e.preventDefault();\n $('.wpstg-button-select').trigger('click');\n })\n */\n // Check / Un-check All Database Tables New\n .on('click', '.wpstg-button-unselect', function(e) {\n e.preventDefault();\n\n if (false === that.areAllTablesChecked) {\n cache.get('#wpstg_select_tables_cloning .wpstg-db-table').prop('selected', 'selected');\n cache.get('.wpstg-button-unselect').text('Unselect All');\n cache.get('.wpstg-db-table-checkboxes').prop('checked', true);\n that.areAllTablesChecked = true;\n } else {\n cache.get('#wpstg_select_tables_cloning .wpstg-db-table').prop('selected', false);\n cache.get('.wpstg-button-unselect').text('Select All');\n cache.get('.wpstg-db-table-checkboxes').prop('checked', false);\n that.areAllTablesChecked = false;\n }\n })\n\n /**\n * Select tables with certain tbl prefix | NEW\n * @param obj e\n * @returns {undefined}\n */\n /**\n .on('click', '.wpstg-button-select', function(e) {\n e.preventDefault();\n $('#wpstg_select_tables_cloning .wpstg-db-table').each(function() {\n let regex = '^' + wpstg.tblprefix;\n if (wpstg.isMultisite === '1' && !$('#wpstg_network_clone').is(':checked')) {\n regex += '([^0-9])_*';\n }\n\n if ($(this).attr('name').match(regex)) {\n $(this).prop('selected', 'selected');\n } else {\n $(this).prop('selected', false);\n }\n });\n })\n\n // Expand Directories\n .on('click', '.wpstg-expand-dirs', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n\n $this.siblings('.wpstg-subdir').slideToggle();\n })\n // When a directory checkbox is Selected\n .on('change', 'input.wpstg-check-dir', function() {\n const $directory = $(this).parent('.wpstg-dir');\n\n if (this.checked) {\n $directory.parents('.wpstg-dir').children('.wpstg-check-dir').prop('checked', true);\n $directory.find('.wpstg-expand-dirs').removeClass('disabled');\n $directory.find('.wpstg-subdir .wpstg-check-dir').prop('checked', true);\n } else {\n $directory.find('.wpstg-dir .wpstg-check-dir').prop('checked', false);\n $directory.find('.wpstg-expand-dirs, .wpstg-check-subdirs').addClass('disabled');\n $directory.find('.wpstg-check-subdirs').data('action', 'check').text('check');\n }\n })\n // When a directory name is Selected\n .on('change', 'href.wpstg-check-dir', function() {\n const $directory = $(this).parent('.wpstg-dir');\n\n if (this.checked) {\n $directory.parents('.wpstg-dir').children('.wpstg-check-dir').prop('checked', true);\n $directory.find('.wpstg-expand-dirs').removeClass('disabled');\n $directory.find('.wpstg-subdir .wpstg-check-dir').prop('checked', true);\n } else {\n $directory.find('.wpstg-dir .wpstg-check-dir').prop('checked', false);\n $directory.find('.wpstg-expand-dirs, .wpstg-check-subdirs').addClass('disabled');\n $directory.find('.wpstg-check-subdirs').data('action', 'check').text('check');\n }\n })\n */\n // Check the max length of the clone name and if the clone name already exists\n .on('keyup', '#wpstg-new-clone-id', function() {\n // Hide previous errors\n document.getElementById('wpstg-error-details').style.display = 'none';\n\n // This request was already sent, clear it up!\n if ('number' === typeof (timer)) {\n clearInterval(timer);\n }\n\n // Early bail if site name is empty\n if (this.value === undefined || this.value === '') {\n cache.get('#wpstg-new-clone-id').removeClass('wpstg-error-input');\n cache.get('#wpstg-start-cloning').removeAttr('disabled');\n cache.get('#wpstg-clone-id-error').text('').hide();\n return;\n }\n\n // Convert the site name to directory name (slugify the site name to create directory name)\n const cloneDirectoryName = WPStagingCommon.slugify(this.value);\n\n timer = setTimeout(\n function() {\n ajax(\n {\n action: 'wpstg_check_clone',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n directoryName: cloneDirectoryName,\n },\n function(response) {\n if (response.status === 'success') {\n cache.get('#wpstg-new-clone-id').removeClass('wpstg-error-input');\n cache.get('#wpstg-start-cloning').removeAttr('disabled');\n cache.get('#wpstg-clone-id-error').text('').hide();\n } else {\n cache.get('#wpstg-new-clone-id').addClass('wpstg-error-input');\n cache.get('#wpstg-start-cloning').prop('disabled', true);\n cache.get('#wpstg-clone-id-error').text(response.message).show();\n }\n },\n );\n },\n 500,\n );\n })\n // Restart cloning process\n .on('click', '#wpstg-start-cloning', function() {\n resetErrors();\n that.isCancelled = false;\n that.getLogs = false;\n that.progressBar = 0;\n })\n .on('input', '#wpstg-new-clone-id', function() {\n if ($('#wpstg-clone-directory').length < 1) {\n return;\n }\n\n const slug = WPStagingCommon.slugify(this.value).substring(0, 16);\n const $targetDir = $('#wpstg-use-target-dir');\n const $targetUri = $('#wpstg-use-target-hostname');\n let path = $targetDir.data('base-path');\n let uri = $targetUri.data('base-uri');\n\n if (path) {\n path = path.replace(/\\/+$/g, '') + '/' + slug + '/';\n }\n\n if (uri) {\n uri = uri.replace(/\\/+$/g, '') + '/' + slug;\n }\n\n\n $('.wpstg-use-target-dir--value').text(path);\n $('.wpstg-use-target-hostname--value').text(uri);\n\n $targetDir.attr('data-path', path);\n $targetUri.attr('data-uri', uri);\n $('#wpstg_clone_dir').attr('placeholder', path);\n $('#wpstg_clone_hostname').attr('placeholder', uri);\n })\n .on('input', '#wpstg_clone_hostname', function() {\n if ($(this).val() === '' || validateTargetHost()) {\n $('#wpstg_clone_hostname_error').remove();\n return;\n }\n if (!validateTargetHost() && !$('#wpstg_clone_hostname_error').length) {\n $('#wpstg-clone-directory tr:last-of-type').after('<tr><td> </td><td><p id=\"wpstg_clone_hostname_error\" style=\"color: red;\"> Invalid host name. Please provide it in a format like http://example.com</p></td></tr>');\n }\n })\n ;\n\n cloneActions();\n };\n\n /* @returns {boolean} */\n var validateTargetHost = function() {\n const the_domain = $('#wpstg_clone_hostname').val();\n\n if (the_domain === '') {\n return true;\n }\n\n const reg = /^http(s)?:\\/\\/.*$/;\n if (reg.test(the_domain) === false) {\n return false;\n }\n return true;\n };\n\n /**\n * Clone actions\n */\n var cloneActions = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n\n $workFlow\n // Cancel cloning\n .on('click', '#wpstg-cancel-cloning', function() {\n if (!confirm('Are you sure you want to cancel cloning process?')) {\n return false;\n }\n\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n $this.prop('disabled', true);\n\n that.isCancelled = true;\n that.progressBar = 0;\n\n $('#wpstg-processing-status').text('Please wait...this can take up a while.');\n $('.wpstg-loader, #wpstg-show-log-button').hide();\n\n $this.parent().append(ajaxSpinner);\n\n cancelCloning();\n })\n // Resume cloning\n .on('click', '#wpstg-resume-cloning', function() {\n resetErrors();\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n\n that.isCancelled = false;\n\n $('#wpstg-processing-status').text('Try to resume cloning process...');\n $('#wpstg-error-details').hide();\n $('.wpstg-loader').show();\n\n $this.parent().append(ajaxSpinner);\n\n that.startCloning();\n })\n // Cancel update cloning\n .on('click', '#wpstg-cancel-cloning-update', function() {\n resetErrors();\n\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n $this.prop('disabled', true);\n\n that.isCancelled = true;\n\n $('#wpstg-cloning-result').text('Please wait...this can take up a while.');\n $('.wpstg-loader, #wpstg-show-log-button').hide();\n\n $this.parent().append(ajaxSpinner);\n\n cancelCloningUpdate();\n })\n // Restart cloning\n .on('click', '#wpstg-restart-cloning', function() {\n resetErrors();\n\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n $this.prop('disabled', true);\n\n that.isCancelled = true;\n\n $('#wpstg-cloning-result').text('Please wait...this can take up a while.');\n $('.wpstg-loader, #wpstg-show-log-button').hide();\n\n $this.parent().append(ajaxSpinner);\n\n restart();\n })\n // Delete clone - confirmation\n .on('click', '.wpstg-remove-clone[data-clone]', function(e) {\n resetErrors();\n e.preventDefault();\n\n const $existingClones = cache.get('#wpstg-existing-clones');\n\n $workFlow.removeClass('active');\n\n cache.get('.wpstg-loader').show();\n\n ajax(\n {\n action: 'wpstg_confirm_delete_clone',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n clone: $(this).data('clone'),\n },\n function(response) {\n cache.get('#wpstg-removing-clone').html(response);\n\n $existingClones.children('img').remove();\n\n cache.get('.wpstg-loader').hide();\n\n $('html, body').animate({\n // This logic is meant to be a \"scrollBottom\"\n scrollTop: $('#wpstg-remove-clone').offset().top - $(window).height() +\n $('#wpstg-remove-clone').height() + 50,\n }, 100);\n },\n 'HTML',\n );\n })\n // Delete clone - confirmed\n .on('click', '#wpstg-remove-clone', function(e) {\n resetErrors();\n e.preventDefault();\n\n cache.get('#wpstg-removing-clone').addClass('loading');\n\n cache.get('.wpstg-loader').show();\n\n deleteClone($(this).data('clone'));\n })\n // Cancel deleting clone\n .on('click', '#wpstg-cancel-removing', function(e) {\n e.preventDefault();\n $('.wpstg-clone').removeClass('active');\n cache.get('#wpstg-removing-clone').html('');\n })\n // Update\n .on('click', '.wpstg-execute-clone', function(e) {\n e.preventDefault();\n\n const clone = $(this).data('clone');\n\n $workFlow.addClass('loading');\n that.cloneExcludeFilters = null;\n ajax(\n {\n action: 'wpstg_scanning',\n clone: clone,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response.length < 1) {\n showError(\n 'Something went wrong! Error: No response. Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.',\n );\n }\n\n const jsonResponse = tryParseJson(response);\n if (jsonResponse !== false && jsonResponse.success === false) {\n $workFlow.removeClass('loading');\n showErrorModal(jsonResponse);\n\n return;\n }\n\n $workFlow.removeClass('loading').html(response);\n // register check disk space function for clone update process.\n checkDiskSpace();\n that.directoryNavigator = new WpstgDirectoryNavigation('#wpstg-directories-listing', '#wpstg-workflow', wpstg, that.notyf);\n that.tableSelector = new WpstgTableSelection('#wpstg-scanning-db', '#wpstg-workflow', '#wpstg_network_clone', wpstg, that.notyf);\n that.cloneExcludeFilters = new WpstgExcludeFilters();\n that.switchStep(2);\n },\n 'HTML',\n );\n })\n // Reset Clone\n .on('click', '.wpstg-reset-clone', function(e) {\n e.preventDefault();\n const clone = $(this).data('clone');\n const resetModal = new WpstgResetModal(clone);\n resetModal.setNetworkClone($(this).data('network') === 'yes');\n const promise = resetModal.showModal();\n that.areAllTablesChecked = true;\n\n promise.then((result) => {\n if (result.value) {\n const dirNavigator = resetModal.getDirectoryNavigator();\n const tableSelector = resetModal.getTableSelector();\n const exclFilters = resetModal.getExcludeFilters().getExcludeFilters();\n\n let includedTables = '';\n let excludedTables = '';\n let selectedTablesWithoutPrefix = '';\n\n if (tableSelector !== null) {\n includedTables = tableSelector.getIncludedTables();\n excludedTables = tableSelector.getExcludedTables();\n selectedTablesWithoutPrefix = tableSelector.getSelectedTablesWithoutPrefix();\n }\n\n if (includedTables.length > excludedTables.length) {\n includedTables = '';\n } else if (excludedTables.length > includedTables.length) {\n excludedTables = '';\n }\n\n resetClone(clone, {\n includedTables: includedTables,\n excludedTables: excludedTables,\n selectedTablesWithoutPrefix: selectedTablesWithoutPrefix,\n excludeSizeRules: encodeURIComponent(exclFilters.sizes),\n excludeGlobRules: encodeURIComponent(exclFilters.globs),\n excludedDirectories: dirNavigator.getExcludedDirectories(),\n extraDirectories: dirNavigator.getExtraDirectoriesRootOnly(),\n });\n }\n });\n\n return;\n });\n };\n\n /**\n * Ajax Requests\n * @param Object data\n * @param Function callback\n * @param string dataType\n * @param bool showErrors\n * @param int tryCount\n * @param float incrementRatio\n */\n var ajax = function(data, callback, dataType, showErrors, tryCount, incrementRatio = null) {\n if ('undefined' === typeof (dataType)) {\n dataType = 'json';\n }\n\n if (false !== showErrors) {\n showErrors = true;\n }\n\n tryCount = 'undefined' === typeof (tryCount) ? 0 : tryCount;\n\n const retryLimit = 5;\n\n let retryTimeout = 10000 * tryCount;\n\n incrementRatio = parseInt(incrementRatio);\n if (!isNaN(incrementRatio)) {\n retryTimeout *= incrementRatio;\n }\n\n $.ajax({\n url: ajaxurl + '?action=wpstg_processing&_=' + (Date.now() / 1000),\n type: 'POST',\n dataType: dataType,\n cache: false,\n data: data,\n error: function(xhr, textStatus, errorThrown) {\n // try again after 10 seconds\n tryCount++;\n if (tryCount <= retryLimit) {\n console.log('RETRYING ' + tryCount + '/' + retryLimit);\n setTimeout(function() {\n ajax(data, callback, dataType, showErrors, tryCount, incrementRatio);\n return;\n }, retryTimeout);\n } else {\n console.log('RETRYING LIMIT');\n const errorCode = 'undefined' === typeof (xhr.status) ? 'Unknown' : xhr.status;\n showError(\n 'Fatal Error: ' + errorCode + ' Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.',\n );\n }\n },\n success: function(data) {\n if ('function' === typeof (callback)) {\n callback(data);\n }\n },\n statusCode: {\n 404: function() {\n if (tryCount >= retryLimit) {\n showError('Error 404 - Can\\'t find ajax request URL! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 500: function() {\n if (tryCount >= retryLimit) {\n showError('Fatal Error 500 - Internal server error while processing the request! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 504: function() {\n if (tryCount > retryLimit) {\n showError('Error 504 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 502: function() {\n if (tryCount >= retryLimit) {\n showError('Error 502 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 503: function() {\n if (tryCount >= retryLimit) {\n showError('Error 503 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 429: function() {\n if (tryCount >= retryLimit) {\n showError('Error 429 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 403: function() {\n if (tryCount >= retryLimit) {\n showError('Refresh page or login again! The process should be finished successfully. \\n\\ ');\n }\n },\n },\n });\n };\n\n /**\n * Next / Previous Step Clicks to Navigate Through Staging Job\n */\n const stepButtons = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n\n $workFlow\n // Next Button\n .on('click', '.wpstg-next-step-link', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n const isScan = false;\n\n if ($('#wpstg_clone_hostname').length && !validateTargetHost()) {\n $('#wpstg_clone_hostname').focus();\n return false;\n }\n\n if ($this.data('action') === 'wpstg_update' || $this.data('action') === 'wpstg_reset') {\n // Update / Reset Clone - confirmed\n let onlyUpdateMessage = '';\n if ($this.data('action') === 'wpstg_update') {\n onlyUpdateMessage = ' \\n\\nExclude all tables and folders you do not want to overwrite, first! \\n\\nDo not cancel the updating process! This can break your staging site. \\n\\n\\Create a backup of your staging website before you proceed.';\n }\n\n if (!confirm('STOP! This will overwrite your staging site with all selected data from the production site! This should be used only if you want to clone again your production site. Are you sure you want to do this?' + onlyUpdateMessage)) {\n return false;\n }\n }\n\n // Button is disabled\n if ($this.attr('disabled')) {\n return false;\n }\n\n if ($this.data('action') === 'wpstg_cloning') {\n // Verify External Database If Checked and Not Skipped\n if ($('#wpstg-ext-db').is(':checked')) {\n verifyExternalDatabase($this, $workFlow);\n return;\n }\n }\n\n proceedCloning($this, $workFlow);\n })\n // Previous Button\n .on('click', '.wpstg-prev-step-link', function(e) {\n e.preventDefault();\n cache.get('.wpstg-loader').removeClass('wpstg-finished');\n cache.get('.wpstg-loader').hide();\n loadOverview();\n });\n };\n\n /**\n * Get Included (Checked) Database Tables\n * @return {Array}\n */\n const getIncludedTables = function() {\n const includedTables = [];\n\n $('#wpstg_select_tables_cloning option:selected').each(function() {\n includedTables.push(this.value);\n });\n\n return includedTables;\n };\n\n /**\n * Get Excluded (Unchecked) Database Tables\n * Not used anymore!\n * @return {Array}\n */\n const getExcludedTables = function() {\n const excludedTables = [];\n\n $('.wpstg-db-table input:not(:checked)').each(function() {\n excludedTables.push(this.name);\n });\n\n return excludedTables;\n };\n\n /**\n * Verify External Database for Cloning\n */\n var verifyExternalDatabase = function($this, workflow) {\n cache.get('.wpstg-loader').show();\n ajax(\n {\n action: 'wpstg_database_verification',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n databaseUser: cache.get('#wpstg_db_username').val(),\n databasePassword: cache.get('#wpstg_db_password').val(),\n databaseServer: cache.get('#wpstg_db_server').val(),\n databaseDatabase: cache.get('#wpstg_db_database').val(),\n },\n function(response) {\n // Undefined Error\n if (false === response) {\n showError(\n 'Something went wrong! Error: No response.' +\n 'Please try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n cache.get('.wpstg-loader').hide();\n return;\n }\n\n // Throw Error\n if ('undefined' === typeof (response.success)) {\n showError(\n 'Something went wrong! Error: Invalid response.' +\n 'Please try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n cache.get('.wpstg-loader').hide();\n return;\n }\n\n if (response.success) {\n cache.get('.wpstg-loader').hide();\n proceedCloning($this, workflow);\n return;\n }\n\n if (response.error_type === 'comparison') {\n cache.get('.wpstg-loader').hide();\n let render = '<table class=\"wpstg-db-comparison-table\"><thead><tr><th>Property</th><th>Production DB</th><th>Staging DB</th><th>Status</th></tr></thead><tbody>';\n response.checks.forEach((x) => {\n let icon = '<span class=\"wpstg-css-tick\"></span>';\n if (x.production !== x.staging) {\n icon = '<span class=\"wpstg-css-cross\"></span>';\n }\n render += '<tr><td>' + x.name + '</td><td>' + x.production + '</td><td>' + x.staging + '</td><td>' + icon + '</td></tr>';\n });\n render += '</tbody></table><p>Note: Some MySQL/MariaDB properties do not match. You may proceed but the staging site may not work as expected.</p>';\n WPStagingCommon.getSwalModal(true, {\n popup: 'wpstg-swal-popup wpstg-db-comparison-modal centered-modal',\n }).fire({\n title: 'Different Database Properties',\n icon: 'warning',\n html: render,\n width: '650px',\n focusConfirm: false,\n confirmButtonText: 'Proceed',\n showCancelButton: true,\n }).then(function(result) {\n if (result.value) {\n proceedCloning($this, workflow);\n }\n });\n return;\n }\n\n WPStagingCommon.getSwalModal(true).fire({\n title: 'Different Database Properties',\n icon: 'error',\n html: response.message,\n focusConfirm: true,\n confirmButtonText: 'Ok',\n showCancelButton: false,\n });\n cache.get('.wpstg-loader').hide();\n },\n 'json',\n false,\n );\n };\n\n /**\n * Get Cloning Step Data\n */\n const getCloningData = function() {\n if ('wpstg_cloning' !== that.data.action && 'wpstg_update' !== that.data.action && 'wpstg_reset' !== that.data.action) {\n return;\n }\n\n that.data.cloneID = new Date().getTime().toString();\n if ('wpstg_update' === that.data.action) {\n that.data.cloneID = $('#wpstg-new-clone-id').data('clone');\n }\n\n that.data.cloneName = $('#wpstg-new-clone-id').val() || that.data.cloneID;\n\n if (that.directoryNavigator !== null) {\n that.data.excludedDirectories = encodeURIComponent(that.directoryNavigator.getExcludedDirectories());\n that.data.extraDirectories = encodeURIComponent(that.directoryNavigator.getExtraDirectoriesRootOnly());\n }\n\n that.data.excludeGlobRules = '';\n that.data.excludeSizeRules = '';\n if (that.cloneExcludeFilters instanceof WpstgExcludeFilters) {\n const rules = that.cloneExcludeFilters.getExcludeFilters();\n that.data.excludeGlobRules = encodeURIComponent(rules.globs);\n that.data.excludeSizeRules = encodeURIComponent(rules.sizes);\n }\n\n that.data.includedTables = '';\n that.data.excludedTables = '';\n if (that.tableSelector !== null) {\n that.data.includedTables = that.tableSelector.getIncludedTables();\n that.data.excludedTables = that.tableSelector.getExcludedTables();\n that.data.selectedTablesWithoutPrefix = that.tableSelector.getSelectedTablesWithoutPrefix();\n }\n\n if (that.data.includedTables.length > that.data.excludedTables.length) {\n that.data.includedTables = '';\n } else if (that.data.excludedTables.length > that.data.includedTables.length) {\n that.data.excludedTables = '';\n }\n\n that.data.databaseServer = $('#wpstg_db_server').val();\n that.data.databaseUser = $('#wpstg_db_username').val();\n that.data.databasePassword = $('#wpstg_db_password').val();\n that.data.databaseDatabase = $('#wpstg_db_database').val();\n that.data.databasePrefix = $('#wpstg_db_prefix').val();\n const cloneDir = $('#wpstg_clone_dir').val();\n that.data.cloneDir = encodeURIComponent($.trim(cloneDir));\n that.data.cloneHostname = $('#wpstg_clone_hostname').val();\n that.data.emailsAllowed = $('#wpstg_allow_emails').is(':checked');\n that.data.networkClone = $('#wpstg_network_clone').is(':checked');\n that.data.uploadsSymlinked = $('#wpstg_symlink_upload').is(':checked');\n that.data.cleanPluginsThemes = $('#wpstg-clean-plugins-themes').is(':checked');\n that.data.cleanUploadsDir = $('#wpstg-clean-uploads').is(':checked');\n };\n\n var proceedCloning = function($this, workflow) {\n // Add loading overlay\n workflow.addClass('loading');\n\n // Prepare data\n that.data = {\n action: $this.data('action'),\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n };\n\n // Cloning data\n getCloningData();\n\n sendCloningAjax(workflow);\n };\n\n var sendCloningAjax = function(workflow) {\n // Send ajax request\n ajax(\n that.data,\n function(response) {\n // Undefined Error\n if (false === response) {\n showError(\n 'Something went wrong!<br/><br/> Go to WP Staging > Settings and lower \\'File Copy Limit\\' and \\'DB Query Limit\\'. Also set \\'CPU Load Priority to low \\'' +\n 'and try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n }\n\n\n if (response.length < 1) {\n showError(\n 'Something went wrong! No response. Go to WP Staging > Settings and lower \\'File Copy Limit\\' and \\'DB Query Limit\\'. Also set \\'CPU Load Priority to low \\'' +\n 'and try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n }\n\n const jsonResponse = tryParseJson(response);\n if (jsonResponse !== false && jsonResponse.success === false) {\n workflow.removeClass('loading');\n showErrorModal(jsonResponse);\n\n return;\n }\n\n // Styling of elements\n workflow.removeClass('loading').html(response);\n that.cloneExcludeFilters = null;\n if (that.data.action === 'wpstg_scanning') {\n that.areAllTablesChecked = true;\n that.directoryNavigator = new WpstgDirectoryNavigation('#wpstg-directories-listing', '#wpstg-workflow', wpstg, that.notyf);\n that.tableSelector = new WpstgTableSelection('#wpstg-scanning-db', '#wpstg-workflow', '#wpstg_network_clone', wpstg, that.notyf);\n that.switchStep(2);\n that.cloneExcludeFilters = new WpstgExcludeFilters();\n } else if (that.data.action === 'wpstg_cloning' || that.data.action === 'wpstg_update' || that.data.action === 'wpstg_reset') {\n that.switchStep(3);\n }\n\n // Start cloning\n that.startCloning();\n },\n 'HTML',\n );\n };\n\n var showErrorModal = function(response) {\n const errorModal = new WpstgModal('wpstg_modal_error', wpstg);\n errorModal.show(Object.assign({\n title: 'Error',\n icon: 'error',\n html: wpstg.i18n['somethingWentWrong'] + (response.message !== undefined ? ('<br/>' + response.message) : ''),\n width: '500px',\n confirmButtonText: 'Ok',\n showCancelButton: false,\n customClass: {\n confirmButton: 'wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn',\n cancelButton: 'wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn',\n actions: 'wpstg--modal--actions',\n popup: 'wpstg-swal-popup centered-modal',\n },\n buttonsStyling: false,\n reverseButtons: true,\n }, response.swalOptions), {\n type: response.type,\n });\n };\n\n const tryParseJson = function(json) {\n // early bail if not string\n if (!json) {\n return false;\n }\n\n try {\n const object = JSON.parse(json);\n if (object && typeof object === 'object') {\n return object;\n }\n } catch (e) {\n // do nothing on catch\n }\n\n return false;\n };\n\n var resetClone = function(clone, excludeOptions) {\n that.data = {\n action: 'wpstg_reset',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n cloneID: clone,\n };\n\n that.data = {...that.data, ...excludeOptions};\n\n const $workFlow = cache.get('#wpstg-workflow');\n sendCloningAjax($workFlow);\n };\n\n /**\n * Loads Overview (first step) of Staging Job\n */\n var loadOverview = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n\n $workFlow.addClass('loading');\n\n ajax(\n {\n action: 'wpstg_overview',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response.length < 1) {\n showError(\n 'Something went wrong! No response. Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report.',\n );\n }\n\n const $currentStep = cache.get('.wpstg-current-step');\n\n // Styling of elements\n $workFlow.removeClass('loading').html(response);\n },\n 'HTML',\n );\n\n that.switchStep(1);\n cache.get('.wpstg-step3-cloning').show();\n cache.get('.wpstg-step3-pushing').hide();\n };\n\n /**\n * Load Tabs\n */\n const tabs = function() {\n cache.get('#wpstg-workflow').on('click', '.wpstg-tab-header', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n const $section = cache.get($this.data('id'));\n\n $this.toggleClass('expand');\n\n $section.slideToggle();\n\n const tabTriangle = $this.find('.wpstg-tab-triangle');\n\n if ($this.hasClass('expand')) {\n tabTriangle.removeClass('wpstg-no-icon');\n tabTriangle.text('');\n tabTriangle.addClass('wpstg-rotate-90');\n } else {\n tabTriangle.removeClass('wpstg-rotate-90');\n }\n });\n };\n\n /**\n * Delete Clone\n * @param {String} clone\n */\n var deleteClone = function(clone) {\n const deleteDir = $('#deleteDirectory:checked').data('deletepath');\n\n ajax(\n {\n action: 'wpstg_delete_clone',\n clone: clone,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n excludedTables: getExcludedTables(),\n deleteDir: deleteDir,\n },\n function(response) {\n if (response) {\n showAjaxFatalError(response);\n\n // Finished\n if ('undefined' !== typeof response.delete && (response.delete === 'finished' || response.delete === 'unfinished')) {\n cache.get('#wpstg-removing-clone').removeClass('loading').html('');\n\n if (response.delete === 'finished' && response.error === undefined) {\n $('.wpstg-clone[data-clone-id=\"' + clone + '\"]').remove();\n }\n\n // No staging site message is also of type/class .wpstg-class but hidden\n // We have just excluded that from search when counting no of clones\n if ($('#wpstg-existing-clones .wpstg-clone').length < 1) {\n cache.get('#wpstg-existing-clones').find('h3').text('');\n cache.get('#wpstg-no-staging-site-results').show();\n }\n\n cache.get('.wpstg-loader').hide();\n return;\n }\n }\n // continue\n if (true !== response) {\n deleteClone(clone);\n return;\n }\n },\n );\n };\n\n /**\n * Cancel Cloning Process\n */\n var cancelCloning = function() {\n that.timer('stop');\n\n\n if (true === that.isFinished) {\n return true;\n }\n\n ajax(\n {\n action: 'wpstg_cancel_clone',\n clone: that.data.cloneID,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response && 'undefined' !== typeof (response.delete) && response.delete === 'finished') {\n cache.get('.wpstg-loader').hide();\n // Load overview\n loadOverview();\n return;\n }\n\n if (true !== response) {\n // continue\n cancelCloning();\n return;\n }\n\n // Load overview\n loadOverview();\n },\n );\n };\n\n /**\n * Cancel Cloning Process\n */\n var cancelCloningUpdate = function() {\n if (true === that.isFinished) {\n return true;\n }\n\n ajax(\n {\n action: 'wpstg_cancel_update',\n clone: that.data.cloneID,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response && 'undefined' !== typeof (response.delete) && response.delete === 'finished') {\n // Load overview\n loadOverview();\n return;\n }\n\n if (true !== response) {\n // continue\n cancelCloningUpdate();\n return;\n }\n\n // Load overview\n loadOverview();\n },\n );\n };\n\n /**\n * Cancel Cloning Process\n */\n var restart = function() {\n if (true === that.isFinished) {\n return true;\n }\n\n ajax(\n {\n action: 'wpstg_restart',\n // clone: that.data.cloneID,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response && 'undefined' !== typeof (response.delete) && response.delete === 'finished') {\n // Load overview\n loadOverview();\n return;\n }\n\n if (true !== response) {\n // continue\n cancelCloningUpdate();\n return;\n }\n\n // Load overview\n loadOverview();\n },\n );\n };\n\n /**\n * Scroll the window log to bottom\n * @return void\n */\n const logscroll = function() {\n const $div = cache.get('.wpstg-log-details');\n if ('undefined' !== typeof ($div[0])) {\n $div.scrollTop($div[0].scrollHeight);\n }\n };\n\n /**\n * Append the log to the logging window\n * @param string log\n * @return void\n */\n const getLogs = function(log) {\n if (log != null && 'undefined' !== typeof (log)) {\n if (log.constructor === Array) {\n $.each(log, function(index, value) {\n if (value === null) {\n return;\n }\n if (value.type === 'ERROR') {\n cache.get('.wpstg-log-details').append('<span class=\"wpstg--red\">[' + value.type + ']</span>-' + '[' + value.date + '] ' + value.message + '</br>');\n } else {\n cache.get('.wpstg-log-details').append('[' + value.type + ']-' + '[' + value.date + '] ' + value.message + '</br>');\n }\n });\n } else {\n cache.get('.wpstg-log-details').append('[' + log.type + ']-' + '[' + log.date + '] ' + log.message + '</br>');\n }\n }\n logscroll();\n };\n\n /**\n * Check diskspace\n * @return string json\n */\n var checkDiskSpace = function() {\n cache.get('#wpstg-check-space').on('click', function(e) {\n cache.get('.wpstg-loader').show();\n const excludedDirectories = encodeURIComponent(that.directoryNavigator.getExcludedDirectories());\n const extraDirectories = encodeURIComponent(that.directoryNavigator.getExtraDirectoriesRootOnly());\n\n ajax(\n {\n action: 'wpstg_check_disk_space',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n excludedDirectories: excludedDirectories,\n extraDirectories: extraDirectories,\n },\n function(response) {\n if (false === response) {\n cache.get('#wpstg-clone-id-error').text('Can not detect required disk space').show();\n cache.get('.wpstg-loader').hide();\n return;\n }\n\n // Show required disk space\n cache.get('#wpstg-clone-id-error').html(\n 'Estimated necessary disk space: ' + response.requiredSpace +\n (response.errorMessage !== null ? ('<br>' + response.errorMessage) : '') +\n '<br> <span style=\"color:#444;\">Before you proceed ensure your account has enough free disk space to hold the entire instance of the production site. You can check the available space from your hosting account (cPanel or similar).</span>').show();\n cache.get('.wpstg-loader').hide();\n },\n 'json',\n false,\n );\n });\n };\n\n /**\n * Show or hide animated loading icon\n * @param isLoading bool\n */\n const isLoading = function(isLoading) {\n if (!isLoading || isLoading === false) {\n cache.get('.wpstg-loader').hide();\n } else {\n cache.get('.wpstg-loader').show();\n }\n };\n\n /**\n * Count up processing execution time\n * @param string status\n * @return html\n */\n that.timer = function(status) {\n if (status === 'stop') {\n const time = that.time;\n that.time = 1;\n clearInterval(that.executionTime);\n return that.convertSeconds(time);\n }\n\n\n that.executionTime = setInterval(function() {\n if (null !== document.getElementById('wpstg-processing-timer')) {\n document.getElementById('wpstg-processing-timer').innerHTML = 'Elapsed Time: ' + that.convertSeconds(that.time);\n }\n that.time++;\n if (status === 'stop') {\n that.time = 1;\n clearInterval(that.executionTime);\n }\n }, 1000);\n };\n\n /**\n * Convert seconds to hourly format\n * @param int seconds\n * @return string\n */\n that.convertSeconds = function(seconds) {\n const date = new Date(null);\n date.setSeconds(seconds); // specify value for SECONDS here\n return date.toISOString().substr(11, 8);\n };\n\n /**\n * Start Cloning Process\n * @type {Function}\n */\n that.startCloning = (function() {\n resetErrors();\n\n // Register function for checking disk space\n checkDiskSpace();\n\n if ('wpstg_cloning' !== that.data.action && 'wpstg_update' !== that.data.action && 'wpstg_reset' !== that.data.action) {\n return;\n }\n\n that.isCancelled = false;\n\n // Start the process\n start();\n\n // Functions\n // Start\n function start() {\n cache.get('.wpstg-loader').show();\n cache.get('#wpstg-cancel-cloning').text('Cancel');\n cache.get('#wpstg-resume-cloning').hide();\n cache.get('#wpstg-error-details').hide();\n\n\n // Clone Database\n setTimeout(function() {\n // cloneDatabase();\n window.addEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n processing();\n }, wpstg.delayReq);\n\n that.timer('start');\n }\n\n\n /**\n * Start ajax processing\n * @return string\n */\n var processing = function() {\n if (true === that.isCancelled) {\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return false;\n }\n\n isLoading(true);\n\n let excludedDirectories = '';\n let extraDirectories = '';\n if (that.directoryNavigator !== null) {\n excludedDirectories = that.directoryNavigator.getExcludedDirectories();\n extraDirectories = that.directoryNavigator.getExtraDirectoriesRootOnly();\n }\n\n // Show logging window\n cache.get('.wpstg-log-details').show();\n\n WPStaging.ajax(\n {\n action: 'wpstg_processing',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n excludedTables: getExcludedTables(),\n excludedDirectories: encodeURIComponent(excludedDirectories),\n extraDirectories: encodeURIComponent(extraDirectories),\n },\n function(response) {\n showAjaxFatalError(response);\n\n // Add Log messages\n if ('undefined' !== typeof (response.last_msg) && response.last_msg) {\n getLogs(response.last_msg);\n }\n // Continue processing\n if (false === response.status) {\n progressBar(response);\n\n setTimeout(function() {\n cache.get('.wpstg-loader').show();\n processing();\n }, wpstg.delayReq);\n } else if (true === response.status && 'finished' !== response.status) {\n cache.get('#wpstg-error-details').hide();\n cache.get('#wpstg-error-wrapper').hide();\n progressBar(response, true);\n processing();\n } else if ('finished' === response.status || ('undefined' !== typeof (response.job_done) && response.job_done)) {\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n finish(response);\n }\n ;\n },\n 'json',\n false,\n );\n };\n\n // Finish\n function finish(response) {\n if (true === that.getLogs) {\n getLogs();\n }\n\n progressBar(response);\n\n // Add Log\n if ('undefined' !== typeof (response.last_msg)) {\n getLogs(response.last_msg);\n }\n\n cache.get('.wpstg-loader').hide();\n cache.get('#wpstg-processing-header').html('Processing Complete');\n $('#wpstg-processing-status').text('Succesfully finished');\n\n cache.get('#wpstg_staging_name').html(that.data.cloneID);\n cache.get('#wpstg-finished-result').show();\n cache.get('#wpstg-cancel-cloning').hide();\n cache.get('#wpstg-resume-cloning').hide();\n cache.get('#wpstg-cancel-cloning-update').prop('disabled', true);\n\n const $link1 = cache.get('#wpstg-clone-url-1');\n const $link = cache.get('#wpstg-clone-url');\n $link1.attr('href', response.url);\n $link1.html(response.url);\n $link.attr('href', response.url);\n\n cache.get('#wpstg-remove-clone').data('clone', that.data.cloneID);\n\n // Finished\n that.isFinished = true;\n that.timer('stop');\n\n\n cache.get('.wpstg-loader').hide();\n cache.get('#wpstg-processing-header').html('Processing Complete');\n\n // show alert\n let msg = wpstg.i18n.cloneResetComplete;\n if (that.data.action === 'wpstg_update') {\n msg = wpstg.i18n.cloneUpdateComplete;\n }\n\n if (that.data.action === 'wpstg_update' || that.data.action === 'wpstg_reset') {\n cache.get('#wpstg-cancel-cloning-update').hide();\n cache.get('.wpstg-prev-step-link').show();\n\n WPStagingCommon.getSwalModal(true, {\n confirmButton: 'wpstg--btn--confirm wpstg-green-button wpstg-button wpstg-link-btn wpstg-100-width',\n }).fire({\n title: '',\n icon: 'success',\n html: msg,\n width: '500px',\n focusConfirm: true,\n });\n }\n\n return false;\n }\n\n /**\n * Add percentage progress bar\n * @param object response\n * @return {Boolean}\n */\n var progressBar = function(response, restart) {\n if ('undefined' === typeof (response.percentage)) {\n return false;\n }\n\n if (response.job === 'database') {\n cache.get('#wpstg-progress-db').width(response.percentage * 0.2 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 1 of 4 Cloning Database Tables...');\n }\n\n if (response.job === 'SearchReplace') {\n cache.get('#wpstg-progress-db').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-db').html('1. Database');\n // Assumption: All previous steps are done.\n // This avoids bugs where some steps are skipped and the progress bar is incomplete as a result\n cache.get('#wpstg-progress-db').width('20%');\n\n cache.get('#wpstg-progress-sr').width(response.percentage * 0.1 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 2 of 4 Preparing Database Data...');\n }\n\n if (response.job === 'directories') {\n cache.get('#wpstg-progress-sr').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-sr').html('2. Data');\n cache.get('#wpstg-progress-sr').width('10%');\n\n cache.get('#wpstg-progress-dirs').width(response.percentage * 0.1 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 3 of 4 Getting files...');\n }\n if (response.job === 'files') {\n cache.get('#wpstg-progress-dirs').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-dirs').html('3. Files');\n cache.get('#wpstg-progress-dirs').width('10%');\n\n cache.get('#wpstg-progress-files').width(response.percentage * 0.6 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 4 of 4 Copy files...');\n }\n if (response.job === 'finish') {\n cache.get('#wpstg-progress-files').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-files').html('4. Copy Files');\n cache.get('#wpstg-progress-files').width('60%');\n\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Cloning Process Finished');\n }\n };\n });\n\n that.switchStep = function(step) {\n cache.get('.wpstg-current-step')\n .removeClass('wpstg-current-step');\n cache.get('.wpstg-step' + step)\n .addClass('wpstg-current-step');\n };\n\n /**\n * Initiation\n * @type {Function}\n */\n that.init = (function() {\n loadOverview();\n elements();\n stepButtons();\n tabs();\n WPStagingCommon.listenTooltip();\n new WpstgMainMenu();\n new WpstgCloneStaging();\n new WpstgCloningAdvanceSettings();\n that.notyf = new Notyf({\n duration: 10000,\n position: {\n x: 'center',\n y: 'bottom',\n },\n dismissible: true,\n types: [\n {\n type: 'warning',\n background: 'orange',\n icon: false,\n },\n ],\n });\n });\n\n /**\n * Ajax call\n * @type {ajax}\n */\n that.ajax = ajax;\n that.showError = showError;\n that.getLogs = getLogs;\n that.loadOverview = loadOverview;\n\n return that;\n})(jQuery);\n\njQuery(document).ready(function() {\n WPStaging.init();\n // This is necessary to make WPStaging var accessibile in WP Staging PRO js script\n window.WPStaging = WPStaging;\n});\n\n/**\n * Report Issue modal\n */\njQuery(document).ready(function($) {\n $('body').on('click', '#wpstg-report-issue-button', function(e) {\n console.log('REPORT');\n $('.wpstg--tab--active .wpstg-report-issue-form').toggleClass('wpstg-report-show');\n e.preventDefault();\n });\n\n $('body').on('click', '#wpstg-backups-report-issue-button', function(e) {\n $('.wpstg--tab--active .wpstg-report-issue-form').toggleClass('wpstg-report-show');\n e.preventDefault();\n });\n\n $('body').on('click', '#wpstg-report-cancel', function(e) {\n $('.wpstg--tab--active .wpstg-report-issue-form').removeClass('wpstg-report-show');\n e.preventDefault();\n });\n\n $('body').on('click', '.wpstg--tab--active #wpstg-report-submit', function(e) {\n const self = $(this);\n sendIssueReport(self, 'false');\n e.preventDefault();\n });\n\n /*\n * Close Success Modal\n */\n\n $('body').on('click', '#wpstg-success-button', function(e) {\n e.preventDefault();\n $('.wpstg-report-issue-form').removeClass('wpstg-report-show');\n });\n\n function sendIssueReport(button, forceSend = 'false') {\n const spinner = button.next();\n const email = $('.wpstg--tab--active .wpstg-report-email').val();\n const hosting_provider = $('.wpstg--tab--active .wpstg-report-hosting-provider').val();\n const message = $('.wpstg--tab--active .wpstg-report-description').val();\n const syslog = $('.wpstg--tab--active .wpstg-report-syslog').is(':checked');\n const terms = $('.wpstg--tab--active .wpstg-report-terms').is(':checked');\n\n button.attr('disabled', true);\n spinner.css('visibility', 'visible');\n\n $.ajax({\n url: ajaxurl,\n type: 'POST',\n dataType: 'json',\n async: true,\n data: {\n 'action': 'wpstg_send_report',\n 'accessToken': wpstg.accessToken,\n 'nonce': wpstg.nonce,\n 'wpstg_email': email,\n 'wpstg_provider': hosting_provider,\n 'wpstg_message': message,\n 'wpstg_syslog': +syslog,\n 'wpstg_terms': +terms,\n 'wpstg_force_send': forceSend,\n },\n }).done(function(data) {\n button.attr('disabled', false);\n spinner.css('visibility', 'hidden');\n\n if (data.errors.length > 0) {\n $('.wpstg--tab--active .wpstg-report-issue-form .wpstg-message').remove();\n\n let errorMessage = $('<div />').addClass('wpstg-message wpstg-error-message');\n $.each(data.errors, function(key, value) {\n if (value.status === 'already_submitted') {\n errorMessage = '';\n // TODO: remove default custom classes\n WPStagingCommon.getSwalModal(true, {\n container: 'wpstg-issue-resubmit-confirmation',\n }).fire({\n title: '',\n icon: 'warning',\n html: value.message,\n showCancelButton: true,\n focusConfirm: false,\n confirmButtonText: 'Yes',\n cancelButtonText: 'No',\n }).then((result) => {\n if (result.isConfirmed) {\n sendIssueReport(button, 'true');\n }\n });\n } else {\n errorMessage.append('<p>' + value + '</p>');\n }\n });\n\n $('.wpstg--tab--active .wpstg-report-issue-form').prepend(errorMessage);\n } else {\n const successMessage = $('<div />').addClass('wpstg-message wpstg-success-message');\n successMessage.append('<p>Thanks for submitting your request! You should receive an auto reply mail with your ticket ID immediately for confirmation!<br><br>If you do not get that mail please contact us directly at <strong>support@wp-staging.com</strong></p>');\n\n $('.wpstg--tab--active .wpstg-report-issue-form').html(successMessage);\n $('.wpstg--tab--active .wpstg-success-message').append('<div style=\"float:right;margin-top:10px;\"><a id=\"wpstg-success-button\" href=\"#\" class=\"wpstg--red\">[X] CLOSE</a></div>');\n\n // Hide message\n setTimeout(function() {\n $('.wpstg--tab--active .wpstg-report-issue-form').removeClass('wpstg-report-active');\n }, 2000);\n }\n });\n }\n\n // Open/close actions drop down menu\n $(document).on('click', '.wpstg-dropdown>.wpstg-dropdown-toggler', function(e) {\n e.preventDefault();\n $(e.target).next('.wpstg-dropdown-menu').toggleClass('shown');\n\n $(e.target).find('.wpstg-caret').toggleClass('wpstg-caret-up');\n });\n\n $(document).on('click', '.wpstg-caret', function(e) {\n e.preventDefault();\n\n const toggler = $(e.target).closest('.wpstg-dropdown-toggler');\n\n if (toggler) {\n toggler.trigger('click');\n }\n });\n\n // Close action drop down menu if clicked anywhere outside\n document.addEventListener('click', function(event) {\n const isClickInside = event.target.closest('.wpstg-dropdown-toggler');\n if (!isClickInside) {\n const dropDown = document.getElementsByClassName('wpstg-dropdown-menu');\n for (let i = 0; i < dropDown.length; i++) {\n dropDown[i].classList.remove('shown');\n }\n $('.wpstg-caret').removeClass('wpstg-caret-up');\n }\n });\n\n // \"Event info\" for backup errors\n window.addEventListener('finishedProcessWithError', function(customEvent) {\n $.ajax({\n url: ajaxurl,\n type: 'POST',\n dataType: 'json',\n data: {\n 'action': 'wpstg_job_error',\n 'accessToken': wpstg.accessToken,\n 'nonce': wpstg.nonce,\n 'error_message': customEvent.detail.error,\n 'job_id': WPStagingCommon.getJobId(),\n },\n });\n });\n});\n"],"names":["polyfillClosest","Element","prototype","closest","matches","msMatchesSelector","webkitMatchesSelector","s","el","call","parentElement","parentNode","nodeType","element","selector","qs","document","querySelector","all","querySelectorAll","addEvent","parent","evt","handler","addEventListener","event","target","slideDown","duration","style","display","overflow","height","offsetHeight","transitionProperty","transitionDuration","setTimeout","window","removeProperty","slideUp","getNextSibling","sibling","nextElementSibling","getParents","result","push","handleDisplayDependencies","id","containerSelector","hiddenClass","elementType","getAttribute","container","showIfChecked","showIfUnchecked","checked","length","classList","remove","add","handleToggleElement","elements","toggle","handleCopyPaste","navigator","clipboard","writeText","value","handleCopyToClipboard","WpstgCloneStaging","pageWrapperId","wpstgObject","wpstg","pageWrapper","dom","enableButtonId","enableAction","notyf","Notyf","position","x","y","dismissible","types","type","background","icon","init","addEvents","sendRequest","action","fetch","ajaxUrl","method","credentials","body","URLSearchParams","accessToken","nonce","headers","then","response","ok","json","Promise","reject","data","success","location","reload","message","error","i18n","console","warn","WpstgDirectoryNavigation","directoryListingSelector","workflowSelector","directoryListingContainer","workflow","dirCheckboxSelector","dirExpandSelector","unselectAllDirsSelector","selectDefaultDirsSelector","fetchChildrenAction","currentCheckboxElement","currentParentDiv","currentLoader","existingExcludes","excludedDirectories","isDefaultSelected","log","preventDefault","getExcludedDirectories","toggleDirExpand","unselectAll","selectDefault","toggleDirectoryNavigation","updateDirectorySelection","parseExcludes","previousSibling","dirPath","isChecked","forceDefault","setAttribute","dirContainer","createElement","innerHTML","JSON","parse","directoryListing","appendChild","alert","forEach","isParentExcluded","exclude","isScanned","join","settings","directorySeparator","path","isParentAlreadyExcluded","dir","startsWith","getExtraDirectoriesRootOnly","extraDirectories","extraDirectoriesTextArea","extraCustomDirectories","split","concat","map","substr","slice","scanned","cbElement","subDirectories","parElem","i","children","WpstgTableSelection","databaseTableSectionSelector","networkCloneSelector","databaseTableSection","networkCloneCheckbox","isAllTablesChecked","isMultisite","isNetworkClone","setNetworkClone","selectDefaultTables","toggleTableSelection","getRegexPattern","pattern","tblprefix","isNetwork","undefined","options","regexPattern","option","name","match","selected","getSelectedTablesWithoutPrefix","selectedTablesWithoutPrefix","getIncludedTables","includedTables","getExcludedTables","excludedTables","WpstgExcludeFilters","excludeFilterContainerSelector","excludeContainer","excludeTableBody","addFileSizeExclude","addFileExtExclude","addFileNameExclude","addDirNameExclude","clearExcludes","removeExclude","addExcludeRuleRow","templateName","excludeRowTemplate","clone","content","cloneNode","excludeRow","e","removeChild","trim","getExcludeFilters","globExcludes","sizeExcludes","sizeCompares","sizeSizes","sizeByte","Object","entries","key","sizeInput","extensionInputs","ext","cleanStringForGlob","fileNamesPos","fileNames","fileInput","fileName","cleanStringForGlobExactMatches","dirNamesPos","dirNames","dirInput","dirName","filter","onlyUnique","index","self","indexOf","replace","WpstgModal","confirmAction","show","swalOptions","additionalParams","callback","wpstgSwal","fire","triggerConfirmAction","assign","onOver","onOut","pX","pY","mouseOver","focused","h","state","timer","sensitivity","interval","timeout","handleFocus","delay","clearTimeout","tracker","clientX","clientY","compare","Math","abs","opt","focusOptionChanged","addFocus","removeFocus","dispatchOver","removeEventListener","onMouseOver","dispatchOut","onMouseOut","dispatchFocus","onFocus","dispatchBlur","onBlur","$","WPStagingCommon","continueErrorHandle","cache","get","inArray","refresh","setJobId","jobId","localStorage","setItem","getJobId","getItem","listenTooltip","wpstgHoverIntent","visibility","isEmpty","obj","prop","hasOwnProperty","getSwalModal","isContentCentered","customClasses","defaultCustomClasses","confirmButton","cancelButton","actions","popup","customClass","buttonsStyling","reverseButtons","showClass","mixin","showSuccessModal","htmlContent","showConfirmButton","showCancelButton","cancelButtonText","title","html","showWarningModal","showErrorModal","getSwalContainer","getContainer","closeSwalModal","close","getDataFromWordPressResponse","Error","Array","shift","isLoading","hide","slugify","url","toString","toLowerCase","normalize","showAjaxFatalError","prependMessage","appendMessage","showError","WPStaging","warnIfClosingDuringProcess","handleFetchErrors","status","statusText","css","text","removeClass","resetErrors","ajax","dataType","showErrors","tryCount","incrementRatio","errorCallback","retryLimit","retryTimeout","parseInt","isNaN","ajaxurl","Date","now","xhr","textStatus","errorThrown","errorCode","statusCode","jQuery","WpstgResetModal","cloneID","fetchExcludeSettingsAction","modalErrorAction","resetButtonClass","resetModalContainerClass","resetTabSelector","directoryNavigator","excludeFilters","tableSelector","resetModalContainer","toggleContent","contentId","tabTriangle","isCollapsed","contains","transform","showModal","swalPromise","loadModal","fetchCloneExcludes","getAjaxLoader","width","focusConfirm","confirmButtonText","resetClone","job","errorModal","modal","renderError","getDirectoryNavigator","getTableSelector","wpstgIcon","WpstgCloningAdvanceSettings","baseContainerSelector","baseContainer","checkBoxSettingTogglerSelector","toggleSettings","WpstgMainMenu","activeTabClass","mainMenu","tabHeader","$this","targetElements","menuItems","contents","menuItem","targetElement","dispatchEvent","Event","that","isCancelled","isFinished","getLogs","time","executionTime","progressBar","cloneExcludeFilters","areAllTablesChecked","ajaxSpinner","returnValue","$workFlow","urlSpinner","devicePixelRatio","on","getElementById","clearInterval","removeAttr","cloneDirectoryName","directoryName","addClass","slug","substring","$targetDir","$targetUri","uri","attr","val","validateTargetHost","after","cloneActions","the_domain","reg","test","confirm","append","cancelCloning","startCloning","cancelCloningUpdate","restart","$existingClones","animate","scrollTop","offset","top","deleteClone","jsonResponse","tryParseJson","checkDiskSpace","switchStep","resetModal","promise","dirNavigator","exclFilters","excludeSizeRules","encodeURIComponent","sizes","excludeGlobRules","globs","stepButtons","focus","onlyUpdateMessage","is","verifyExternalDatabase","proceedCloning","loadOverview","each","databaseUser","databasePassword","databaseServer","databaseDatabase","error_type","render","checks","production","staging","getCloningData","getTime","cloneName","rules","databasePrefix","cloneDir","cloneHostname","emailsAllowed","networkClone","uploadsSymlinked","cleanPluginsThemes","cleanUploadsDir","sendCloningAjax","object","excludeOptions","tabs","$section","toggleClass","slideToggle","find","hasClass","deleteDir","logscroll","$div","scrollHeight","constructor","date","requiredSpace","errorMessage","convertSeconds","setInterval","seconds","setSeconds","toISOString","start","processing","delayReq","last_msg","job_done","finish","$link1","$link","msg","cloneResetComplete","cloneUpdateComplete","percentage","toFixed","step","ready","sendIssueReport","button","forceSend","spinner","next","email","hosting_provider","syslog","terms","async","done","errors","isConfirmed","prepend","successMessage","toggler","trigger","isClickInside","dropDown","getElementsByClassName","customEvent","detail"],"mappings":"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"}
|
1 |
+
{"version":3,"file":"wpstg-admin.js","sources":["../src/modules/wpstg-polyfill.js","../src/modules/wpstg-dom-utils.js","../src/modules/wpstg-clone-staging.js","../src/modules/wpstg-directory-navigation.js","../src/modules/wpstg-table-selection.js","../src/modules/wpstg-exclude-filters.js","../src/modules/wpstg-modal.js","../src/modules/wpstg-hover-intent.js","../src/wpstg.js","../src/modules/wpstg-reset-modal.js","../src/modules/wpstg-cloning-advance-settings.js","../src/modules/wpstg-main-menu.js","../src/wpstg-admin.js"],"sourcesContent":["/**\n * Polyfills the `Element.prototype.closest` function if not available in the browser.\n *\n * @return {Function} A function that will return the closest element, by selector, to this element.\n */\nfunction polyfillClosest() {\n if (Element.prototype.closest) {\n if (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n\n Element.prototype.closest = function(s) {\n let el = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n }\n\n return function(element, selector) {\n return element instanceof Element ? element.closest(selector) : null;\n };\n}\n\nexport const closest = polyfillClosest();\n","import {closest} from './wpstg-polyfill';\n\n/**\n * WP STAGING basic jQuery replacement\n */\n\n/**\n * Shortcut for document.querySelector() or jQuery's $()\n * Return single element only\n */\nexport function qs(selector) {\n return document.querySelector(selector);\n}\n\n/**\n * Shortcut for document.querySelector() or jQuery's $()\n * Return collection of elements\n */\nexport function all(selector) {\n return document.querySelectorAll(selector);\n}\n\n/**\n * alternative of jQuery - $(parent).on(event, selector, handler)\n */\nexport function addEvent(parent, evt, selector, handler) {\n if (!parent instanceof Element) {\n return;\n }\n\n parent.addEventListener(evt, function(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n handler(event.target.closest(selector), event);\n }\n }, false);\n}\n\nexport function slideDown(element, duration = 400) {\n element.style.display = 'block';\n element.style.overflow = 'hidden';\n const height = element.offsetHeight;\n element.style.height = '0px';\n element.style.transitionProperty = 'height';\n element.style.transitionDuration = duration + 'ms';\n setTimeout(() => {\n element.style.height = height + 'px';\n window.setTimeout(() => {\n element.style.removeProperty('height');\n element.style.removeProperty('overflow');\n element.style.removeProperty('transition-duration');\n element.style.removeProperty('transition-property');\n }, duration);\n }, 0);\n}\n\nexport function slideUp(element, duration = 400) {\n element.style.display = 'block';\n element.style.overflow = 'hidden';\n const height = element.offsetHeight;\n element.style.height = height + 'px';\n element.style.transitionProperty = 'height';\n element.style.transitionDuration = duration + 'ms';\n setTimeout(() => {\n element.style.height = '0px';\n window.setTimeout(() => {\n element.style.display = 'none';\n element.style.removeProperty('height');\n element.style.removeProperty('overflow');\n element.style.removeProperty('transition-duration');\n element.style.removeProperty('transition-property');\n }, duration);\n }, 0);\n}\n\nexport function fadeOut(element, duration = 300) {\n element.style.opacity = 1;\n element.style.transitionProperty = 'opacity';\n element.style.transitionDuration = duration + 'ms';\n setTimeout(() => {\n element.style.opacity = 0;\n window.setTimeout(() => {\n element.style.display = 'none';\n element.style.removeProperty('opacity');\n element.style.removeProperty('transition-duration');\n element.style.removeProperty('transition-property');\n }, duration);\n }, 0);\n}\n\nexport function getNextSibling(element, selector) {\n let sibling = element.nextElementSibling;\n\n while (sibling) {\n if (sibling.matches(selector)) {\n return sibling;\n }\n\n sibling = sibling.nextElementSibling;\n }\n};\n\nexport function getParents(element, selector) {\n const result = [];\n for (let parent = element && element.parentElement; parent; parent = parent.parentElement) {\n if (parent.matches(selector)) {\n result.push(parent);\n }\n }\n\n return result;\n}\n\n/**\n * Check if element has class name\n * @param element\n * @param className\n * @return {boolean}\n */\nexport function hasClass(element, className) {\n return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;\n}\n\n/**\n * Dispatches a change on an element that will trigger, depending on the element type,\n * cascading changes on elements dependant on the one that triggered the change and that\n * belong in the same container.\n *\n * @param {Element} element A reference to the Element the change was triggered from.\n *\n * @return {void} The function does not return any value and will have the side-effect of\n * hiding or showing dependant elements.\n */\nexport function handleDisplayDependencies(element) {\n if (!element instanceof Element || !element.id) {\n return;\n }\n\n const containerSelector = '.wpstg-container';\n // Use the default WordPress CSS class to hide and show the objects.\n const hiddenClass = 'hidden';\n const elementType = element.getAttribute('type');\n\n switch (elementType) {\n case 'checkbox':\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n const showIfChecked = container.querySelectorAll(`[data-show-if-checked=\"${element.id}\"]`);\n const showIfUnchecked = container.querySelectorAll(`[data-show-if-unchecked=\"${element.id}\"]`);\n const checked = element.checked;\n\n if (showIfChecked.length) {\n for (const el of showIfChecked) {\n if (checked) {\n el.classList.remove(hiddenClass);\n } else {\n el.classList.add(hiddenClass);\n }\n }\n }\n\n if (showIfUnchecked.length) {\n for (const el of showIfUnchecked) {\n if (checked) {\n el.classList.add(hiddenClass);\n } else {\n el.classList.remove(hiddenClass);\n }\n }\n }\n\n return;\n default:\n // Not a type we handle.\n return;\n }\n}\n\n/**\n * Initializes the display status of any element that depends on the status of another to\n * either hide or show.\n *\n * @return {void} The function will have the side-effect to toggle the hide/show class from\n * elements dependant on another to hide or show.\n */\nexport function initDependantDisplay() {\n const displayControllerSelector = '[onchange^=\"WPStaging.handleDisplayDependencies\"]';\n const displayControllers = document.querySelectorAll(displayControllerSelector);\n for (const displayController of displayControllers) {\n handleDisplayDependencies(displayController);\n }\n}\n\n/**\n * Toggle target element set in data-wpstg-target of the given element\n *\n * @param {Element} element A reference to the Element the change was triggered from.\n *\n * @return {void} The function does not return any value and will have the side-effect of\n * hiding or showing dependant elements.\n */\nexport function handleToggleElement(element) {\n if (!element instanceof Element || !element.getAttribute('data-wpstg-target')) {\n return;\n }\n\n const containerSelector = '.wpstg_admin';\n // Use the default WordPress CSS class to hide and show the objects.\n const hiddenClass = 'hidden';\n\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n const elements = container.querySelectorAll(element.getAttribute('data-wpstg-target'));\n\n if (elements.length) {\n for (const el of elements) {\n el.classList.toggle(hiddenClass);\n }\n }\n}\n\n/**\n * Copy text in data-wpstg-copy to element(s) in data-wpstg-target\n *\n * @param {Element} element\n *\n * @return {void}\n */\nexport function handleCopyPaste(element) {\n if (!element instanceof Element || !element.getAttribute('data-wpstg-target') || !element.getAttribute('data-wpstg-copy')) {\n return;\n }\n\n const containerSelector = '.wpstg_admin';\n\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n navigator.clipboard.writeText(element.getAttribute('data-wpstg-copy'));\n const elements = container.querySelectorAll(element.getAttribute('data-wpstg-target'));\n\n if (elements.length) {\n for (const el of elements) {\n el.value = element.getAttribute('data-wpstg-copy', '');\n }\n }\n}\n\n/**\n * Copy text in data-wpstg-source to clipboard\n *\n * @param {Element} element\n *\n * @return {void}\n */\nexport function handleCopyToClipboard(element) {\n if (!element instanceof Element || !element.getAttribute('data-wpstg-source')) {\n return;\n }\n\n const containerSelector = '.wpstg_admin';\n\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n const el = container.querySelector(element.getAttribute('data-wpstg-source'));\n\n if (el) {\n navigator.clipboard.writeText(el.value);\n }\n}\n\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Enable/Disable cloning for staging site\n */\nexport default class WpstgCloneStaging {\n constructor(\n pageWrapperId = '#wpstg-clonepage-wrapper',\n wpstgObject = wpstg,\n ) {\n this.pageWrapper = dom.qs(pageWrapperId);\n this.wpstgObject = wpstgObject;\n this.enableButtonId = '#wpstg-enable-staging-cloning';\n this.enableAction = 'wpstg_enable_staging_cloning';\n\n this.notyf = new Notyf({\n duration: 10000,\n position: {\n x: 'center',\n y: 'bottom',\n },\n dismissible: true,\n types: [\n {\n type: 'warning',\n background: 'orange',\n icon: false,\n },\n ],\n });\n this.init();\n }\n\n addEvents() {\n if (this.pageWrapper === null) {\n return;\n }\n\n dom.addEvent(this.pageWrapper, 'click', this.enableButtonId, () => {\n this.sendRequest(this.enableAction);\n });\n }\n\n init() {\n this.addEvents();\n }\n\n sendRequest(action) {\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams({\n action: action,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((data) => {\n // Reload current page if successful.\n if ('undefined' !== typeof (data.success) && data.success) {\n location.reload();\n return;\n }\n\n // There will be message probably in case of error\n if ('undefined' !== typeof (data.message)) {\n this.notyf.error(data.message);\n return;\n }\n\n this.notyf.error(this.wpstgObject.i18n['somethingWentWrong']);\n }).catch((error) => {\n console.warn(this.wpstgObject.i18n['somethingWentWrong'], error);\n });\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Fetch directory direct child directories\n */\nexport default class WpstgDirectoryNavigation {\n constructor(\n directoryListingSelector = '#wpstg-directories-listing',\n workflowSelector = '#wpstg-workflow',\n wpstgObject = wpstg,\n notyf = null,\n ) {\n this.directoryListingContainer = dom.qs(directoryListingSelector);\n this.workflow = dom.qs(workflowSelector);\n this.wpstgObject = wpstgObject;\n this.dirCheckboxSelector = '.wpstg-check-dir';\n this.dirExpandSelector = '.wpstg-expand-dirs';\n this.unselectAllDirsSelector = '.wpstg-unselect-dirs';\n this.selectDefaultDirsSelector = '.wpstg-select-dirs-default';\n this.fetchChildrenAction = 'wpstg_fetch_dir_childrens';\n this.currentCheckboxElement = null;\n this.currentParentDiv = null;\n this.currentLoader = null;\n this.existingExcludes = [];\n this.excludedDirectories = [];\n this.isDefaultSelected = false;\n this.notyf = notyf;\n\n this.init();\n }\n\n addEvents() {\n if (this.directoryListingContainer === null) {\n console.log('Error: directory navigation add events');\n return;\n }\n\n dom.addEvent(this.directoryListingContainer, 'change', this.dirCheckboxSelector, (element, event) => {\n event.preventDefault();\n console.log(this.getExcludedDirectories());\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', this.dirExpandSelector, (element, event) => {\n event.preventDefault();\n if (this.toggleDirExpand(element)) {\n this.sendRequest(this.fetchChildrenAction, element);\n }\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', this.unselectAllDirsSelector, () => {\n this.unselectAll();\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', this.selectDefaultDirsSelector, () => {\n this.selectDefault();\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', '.wpstg-expand-dirs', (target, event) => {\n event.preventDefault();\n this.toggleDirectoryNavigation(target);\n });\n\n dom.addEvent(this.directoryListingContainer, 'change', 'input.wpstg-check-dir', (target) => {\n this.updateDirectorySelection(target);\n });\n }\n\n init() {\n this.addEvents();\n this.parseExcludes();\n }\n\n /**\n * Toggle Dir Expand,\n * Return true if children aren't fetched\n * @param {HTMLElement} element\n * @return {boolean}\n */\n toggleDirExpand(element) {\n this.currentParentDiv = element.parentElement;\n this.currentCheckboxElement = element.previousSibling;\n this.currentLoader = this.currentParentDiv.querySelector('.wpstg-is-dir-loading');\n if (this.currentCheckboxElement.getAttribute('data-navigateable', 'false') === 'false') {\n return false;\n }\n\n if (this.currentCheckboxElement.getAttribute('data-scanned', 'false') === 'false') {\n return true;\n }\n\n return false;\n }\n\n sendRequest(action) {\n if (this.currentLoader !== null) {\n this.currentLoader.style.display = 'inline-block';\n }\n\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams({\n action: action,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n dirPath: this.currentCheckboxElement.value,\n isChecked: this.currentCheckboxElement.checked,\n forceDefault: this.isDefaultSelected,\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((data) => {\n if ('undefined' !== typeof (data.success) && data.success) {\n this.currentCheckboxElement.setAttribute('data-scanned', true);\n const dirContainer = document.createElement('div');\n dirContainer.classList.add('wpstg-dir');\n dirContainer.classList.add('wpstg-subdir');\n dirContainer.innerHTML = JSON.parse(data.directoryListing);\n this.currentParentDiv.appendChild(dirContainer);\n if (this.currentLoader !== null) {\n this.currentLoader.style.display = 'none';\n }\n\n dom.slideDown(dirContainer);\n\n return;\n }\n\n if (this.notyf !== null) {\n this.notyf.error(this.wpstgObject.i18n['somethingWentWrong']);\n } else {\n alert('Error: ' + this.wpstgObject.i18n['somethingWentWrong']);\n }\n }).catch((error) => {\n console.warn(this.wpstgObject.i18n['somethingWentWrong'], error);\n });\n }\n\n getExcludedDirectories() {\n this.excludedDirectories = [];\n this.directoryListingContainer.querySelectorAll('.wpstg-dir input:not(:checked)').forEach((element) => {\n if (!this.isParentExcluded(element.value)) {\n this.excludedDirectories.push(element.value);\n }\n });\n\n this.existingExcludes.forEach((exclude) => {\n if (!this.isParentExcluded(exclude) && !this.isScanned(exclude)) {\n this.excludedDirectories.push(exclude);\n }\n });\n\n return this.excludedDirectories.join(this.wpstgObject.settings.directorySeparator);\n }\n\n /**\n * @param {string} path\n * @return {bool}\n */\n isParentExcluded(path) {\n let isParentAlreadyExcluded = false;\n this.excludedDirectories.forEach((dir) => {\n if (path.startsWith(dir + '/')) {\n isParentAlreadyExcluded = true;\n }\n });\n\n return isParentAlreadyExcluded;\n }\n\n getExtraDirectoriesRootOnly() {\n this.getExcludedDirectories();\n const extraDirectories = [];\n this.directoryListingContainer.querySelectorAll(':not(.wpstg-subdir)>.wpstg-dir>input.wpstg-wp-non-core-dir:checked').forEach((element) => {\n extraDirectories.push(element.value);\n });\n\n // Check if extra directories text area exists\n // TODO: remove extraCustomDirectories code if no one require extraCustomDirectories...\n const extraDirectoriesTextArea = dom.qs('#wpstg_extraDirectories');\n if (extraDirectoriesTextArea === null || extraDirectoriesTextArea.value === '') {\n return extraDirectories.join(this.wpstgObject.settings.directorySeparator);\n }\n\n const extraCustomDirectories = extraDirectoriesTextArea.value.split(/\\r?\\n/);\n\n return extraDirectories.concat(extraCustomDirectories).join(this.wpstgObject.settings.directorySeparator);\n }\n\n unselectAll() {\n this.directoryListingContainer.querySelectorAll('.wpstg-dir input').forEach((element) => {\n element.checked = false;\n });\n }\n\n selectDefault() {\n // unselect all checkboxes\n this.unselectAll();\n\n // only select those checkboxes whose class is wpstg-wp-core-dir\n this.directoryListingContainer.querySelectorAll('.wpstg-dir input.wpstg-wp-core-dir').forEach((element) => {\n element.checked = true;\n });\n\n // then unselect those checkboxes whose parent has wpstg extra checkbox\n this.directoryListingContainer.querySelectorAll('.wpstg-dir > .wpstg-wp-non-core-dir').forEach((element) => {\n element.parentElement.querySelectorAll('input.wpstg-wp-core-dir').forEach((element) => {\n element.checked = false;\n });\n });\n\n this.isDefaultSelected = true;\n }\n\n parseExcludes() {\n this.existingExcludes = this.directoryListingContainer.getAttribute('data-existing-excludes', []);\n if (this.existingExcludes === '') {\n this.existingExcludes = [];\n return;\n }\n\n if (this.existingExcludes.length === 0) {\n this.existingExcludes = [];\n return;\n }\n\n const existingExcludes = this.existingExcludes.split(',');\n this.existingExcludes = existingExcludes.map((exclude) => {\n if (exclude.substr(0, 1) === '/') {\n return exclude.slice(1);\n }\n\n return exclude;\n });\n }\n\n isScanned(exclude) {\n let scanned = false;\n this.directoryListingContainer.querySelectorAll('.wpstg-dir>input').forEach((element) => {\n if (element.value == exclude) {\n scanned = true;\n }\n });\n\n return scanned;\n }\n\n toggleDirectoryNavigation(element) {\n const cbElement = element.previousSibling;\n if (cbElement.getAttribute('data-navigateable', 'false') === 'false') {\n return;\n }\n\n if (cbElement.getAttribute('data-scanned', 'false') === 'false') {\n return;\n }\n\n const subDirectories = dom.getNextSibling(element, '.wpstg-subdir');\n\n if (subDirectories.style.display === 'none') {\n dom.slideDown(subDirectories);\n } else {\n dom.slideUp(subDirectories);\n }\n }\n\n updateDirectorySelection(element) {\n const parent = element.parentElement;\n if (element.checked) {\n dom.getParents(parent, '.wpstg-dir').forEach((parElem) => {\n for (let i = 0; i < parElem.children.length; i++) {\n if (parElem.children[i].matches('.wpstg-check-dir')) {\n parElem.children[i].checked = true;\n }\n }\n });\n parent.querySelectorAll('.wpstg-expand-dirs').forEach((x) => {\n x.classList.remove('disabled');\n });\n parent.querySelectorAll('.wpstg-subdir .wpstg-check-dir').forEach((x) => {\n x.checked = true;\n });\n } else {\n parent.querySelectorAll('.wpstg-expand-dirs, .wpstg-check-subdirs').forEach((x) => {\n x.classList.add('disabled');\n });\n parent.querySelectorAll('.wpstg-dir .wpstg-check-dir').forEach((x) => {\n x.checked = false;\n });\n }\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Database tables selection\n */\nexport default class WpstgTableSelection {\n constructor(\n databaseTableSectionSelector = '#wpstg-scanning-db',\n workflowSelector = '#wpstg-workflow',\n networkCloneSelector = '#wpstg_network_clone',\n wpstgObject = wpstg,\n ) {\n this.databaseTableSection = dom.qs(databaseTableSectionSelector);\n this.workflow = dom.qs(workflowSelector);\n this.networkCloneSelector = networkCloneSelector;\n this.networkCloneCheckbox = dom.qs(networkCloneSelector);\n this.wpstgObject = wpstgObject;\n this.isAllTablesChecked = true;\n this.isMultisite = this.wpstgObject.isMultisite === '1';\n this.isNetworkClone = false;\n\n this.init();\n }\n\n setNetworkClone(isNetworkClone) {\n this.isNetworkClone = isNetworkClone;\n }\n\n addEvents() {\n if (this.workflow === null) {\n console.log('Error: database table section is null. Cannot register events');\n return;\n }\n\n dom.addEvent(this.workflow, 'change', this.networkCloneSelector, () => {\n this.selectDefaultTables();\n });\n\n dom.addEvent(this.workflow, 'click', '.wpstg-button-select', (target, event) => {\n event.preventDefault();\n this.selectDefaultTables();\n });\n\n dom.addEvent(this.workflow, 'click', '.wpstg-button-unselect', (target, event) => {\n event.preventDefault();\n this.toggleTableSelection();\n });\n }\n\n init() {\n this.addEvents();\n }\n\n getRegexPattern() {\n let pattern = '^' + this.wpstgObject.tblprefix;\n let isNetwork = false;\n if (this.networkCloneCheckbox !== undefined && this.networkCloneCheckbox !== null) {\n isNetwork = this.networkCloneCheckbox.checked;\n }\n\n // Force network clone true if set explicitly\n if (this.isNetworkClone) {\n isNetwork = true;\n }\n\n if (this.isMultisite && !isNetwork) {\n pattern += '([^0-9])_*';\n }\n\n return pattern;\n }\n\n selectDefaultTables() {\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning .wpstg-db-table');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (name.match(regexPattern)) {\n option.selected = true;\n } else {\n option.selected = false;\n }\n });\n }\n\n toggleTableSelection() {\n if (false === this.isAllTablesChecked) {\n this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning .wpstg-db-table').forEach((option) => {\n option.selected = true;\n });\n this.databaseTableSection.querySelector('.wpstg-button-unselect').innerHTML = 'Unselect All';\n // cache.get('.wpstg-db-table-checkboxes').prop('checked', true);\n this.isAllTablesChecked = true;\n } else {\n this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning .wpstg-db-table').forEach((option) => {\n option.selected = false;\n });\n this.databaseTableSection.querySelector('.wpstg-button-unselect').innerHTML = 'Select All';\n // cache.get('.wpstg-db-table-checkboxes').prop('checked', false);\n this.isAllTablesChecked = false;\n }\n }\n\n getSelectedTablesWithoutPrefix() {\n const selectedTablesWithoutPrefix = [];\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning option:checked');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (!name.match(regexPattern)) {\n selectedTablesWithoutPrefix.push(option.value);\n }\n });\n\n return selectedTablesWithoutPrefix.join(this.wpstgObject.settings.directorySeparator);\n }\n\n getIncludedTables() {\n const includedTables = [];\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning option:checked');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (name.match(regexPattern)) {\n includedTables.push(option.value);\n }\n });\n\n return includedTables.join(this.wpstgObject.settings.directorySeparator);\n }\n\n getExcludedTables() {\n const excludedTables = [];\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning option:not(:checked)');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (name.match(regexPattern)) {\n excludedTables.push(option.value);\n }\n });\n\n return excludedTables.join(this.wpstgObject.settings.directorySeparator);\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Rich Exclude Filter Module\n */\nexport default class WpstgExcludeFilters {\n constructor(\n excludeFilterContainerSelector = '#wpstg-exclude-filters-container',\n wpstgObject = wpstg,\n ) {\n this.excludeContainer = dom.qs(excludeFilterContainerSelector);\n this.excludeTableBody = dom.qs(`${excludeFilterContainerSelector} tbody`);\n this.wpstgObject = wpstgObject;\n this.init();\n }\n\n addEvents() {\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-file-size-rule', () => {\n this.addFileSizeExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-file-ext-rule', () => {\n this.addFileExtExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-file-name-rule', () => {\n this.addFileNameExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-dir-name-rule', () => {\n this.addDirNameExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-clear-all-rules', () => {\n this.clearExcludes();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-remove-exclude-rule', (target) => {\n this.removeExclude(target);\n });\n }\n\n init() {\n if (this.excludeContainer === null) {\n console.log('Error: Given table selector not found!');\n return;\n }\n\n this.addEvents();\n }\n\n addFileSizeExclude() {\n this.addExcludeRuleRow('#wpstg-file-size-exclude-filter-template');\n }\n\n addFileExtExclude() {\n this.addExcludeRuleRow('#wpstg-file-ext-exclude-filter-template');\n }\n\n addFileNameExclude() {\n this.addExcludeRuleRow('#wpstg-file-name-exclude-filter-template');\n }\n\n addDirNameExclude() {\n this.addExcludeRuleRow('#wpstg-dir-name-exclude-filter-template');\n }\n\n addExcludeRuleRow(templateName) {\n const excludeRowTemplate = dom.qs(templateName);\n if (excludeRowTemplate !== null) {\n const clone = excludeRowTemplate.content.cloneNode(true);\n const excludeRow = clone.querySelector('tr');\n\n this.excludeTableBody.appendChild(excludeRow);\n dom.all('.wpstg-has-exclude-rules').forEach((e) => {\n e.style.display = 'inherit';\n });\n }\n }\n\n clearExcludes() {\n this.excludeTableBody.innerHTML = '';\n dom.all('.wpstg-has-exclude-rules').forEach((e) => {\n e.style.display = 'none';\n });\n }\n\n removeExclude(target) {\n if (target.parentElement !== null && target.parentElement.parentElement !== null) {\n this.excludeTableBody.removeChild(target.parentElement.parentElement);\n }\n\n if (this.excludeTableBody.innerHTML.trim() === '') {\n dom.all('.wpstg-has-exclude-rules').forEach((e) => {\n e.style.display = 'none';\n });\n }\n }\n\n /**\n * Converts all the exclude filters arrays into one single string to keep size of post request small\n * @return {string}\n */\n getExcludeFilters() {\n const globExcludes = [];\n const sizeExcludes = [];\n\n const sizeCompares = this.excludeTableBody.querySelectorAll('select[name=\"wpstgFileSizeExcludeRuleCompare[]\"]');\n const sizeSizes = this.excludeTableBody.querySelectorAll('input[name=\"wpstgFileSizeExcludeRuleSize[]\"]');\n const sizeByte = this.excludeTableBody.querySelectorAll('select[name=\"wpstgFileSizeExcludeRuleByte[]\"]');\n for (const [key, sizeInput] of Object.entries(sizeSizes)) {\n if (sizeInput.value !== '') {\n sizeExcludes.push(sizeCompares[key].value + ' ' + sizeInput.value + sizeByte[key].value);\n }\n }\n\n const extensionInputs = this.excludeTableBody.querySelectorAll('input[name=\"wpstgFileExtExcludeRule[]\"]');\n extensionInputs.forEach((x) => {\n const ext = this.cleanStringForGlob(x.value);\n if (ext !== '') {\n globExcludes.push('ext:' + ext.trim());\n }\n });\n\n const fileNamesPos = this.excludeTableBody.querySelectorAll('select[name=\"wpstgFileNameExcludeRulePos[]\"]');\n const fileNames = this.excludeTableBody.querySelectorAll('input[name=\"wpstgFileNameExcludeRulePath[]\"]');\n for (const [key, fileInput] of Object.entries(fileNames)) {\n let fileName = '';\n if ('name_exact_matches' === fileNamesPos[key].value) {\n fileName = this.cleanStringForGlobExactMatches(fileInput.value);\n } else {\n fileName = this.cleanStringForGlob(fileInput.value);\n }\n\n if (fileName !== '') {\n globExcludes.push('file:' + fileNamesPos[key].value + ' ' + fileName.trim());\n }\n }\n\n const dirNamesPos = this.excludeTableBody.querySelectorAll('select[name=\"wpstgDirNameExcludeRulePos[]\"]');\n const dirNames = this.excludeTableBody.querySelectorAll('input[name=\"wpstgDirNameExcludeRulePath[]\"]');\n for (const [key, dirInput] of Object.entries(dirNames)) {\n const dirName = this.cleanStringForGlob(dirInput.value);\n if (dirName !== '') {\n globExcludes.push('dir:' + dirNamesPos[key].value + ' ' + dirName.trim());\n }\n }\n\n return {\n 'sizes': sizeExcludes.filter(this.onlyUnique).join(','),\n // return set of unique rules\n 'globs': globExcludes.filter(this.onlyUnique).join(','),\n };\n }\n\n onlyUnique(value, index, self) {\n return self.indexOf(value) === index;\n }\n\n /**\n * Remove most of the comment glob characters from the string\n * @param {String} value\n * @return {String}\n */\n cleanStringForGlob(value) {\n // will replace character like * ^ / \\ ! ? [ from the string\n return value.replace(/[*^//!\\.[?]/g, '');\n }\n\n /**\n * Remove most of the comment glob characters from the string except . to allow input of extensions\n * @param {String} value\n * @return {String}\n */\n cleanStringForGlobExactMatches(value) {\n // will replace character like * ^ / \\ ! ? [ from the string\n return value.replace(/[*^//!\\\\[?]/g, '');\n }\n}\n","/**\n * Basic WP Staging Modal implemented with help of Sweetalerts\n */\nexport default class WpstgModal {\n constructor(\n confirmAction,\n wpstgObject = wpstg,\n ) {\n this.confirmAction = confirmAction;\n this.wpstgObject = wpstgObject;\n }\n\n show(swalOptions, additionalParams = {}, callback = null) {\n wpstgSwal.fire(swalOptions).then((result) => {\n if (result.value && this.error !== null) {\n this.triggerConfirmAction(additionalParams, callback);\n }\n });\n }\n\n triggerConfirmAction(additionalParams = {}, callback = null) {\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams(Object.assign({\n action: this.confirmAction,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n }, additionalParams)),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((response) => {\n if (callback !== null) {\n callback(response);\n }\n }).catch((error) => {\n console.log(this.wpstgObject.i18n['somethingWentWrong'], error);\n });\n }\n}\n","'use strict';\n\n/**\n * This is a namespaced port of https://github.com/tristen/hoverintent,\n * with slight modification to accept selector with dynamically added element in dom,\n * instead of just already present element.\n *\n * @param {HTMLElement} parent\n * @param {string} selector\n * @param {CallableFunction} onOver\n * @param {CallableFunction} onOut\n *\n * @return {object}\n */\nexport default function(parent, selector, onOver, onOut) {\n let x; let y; let pX; let pY;\n let mouseOver = false;\n let focused = false;\n const h = {};\n let state = 0;\n let timer = 0;\n\n let options = {\n sensitivity: 7,\n interval: 100,\n timeout: 0,\n handleFocus: false,\n };\n\n function delay(el, e) {\n if (timer) {\n timer = clearTimeout(timer);\n }\n\n state = 0;\n return focused ? undefined : onOut(el, e);\n }\n\n function tracker(e) {\n x = e.clientX;\n y = e.clientY;\n }\n\n function compare(el, e) {\n if (timer) timer = clearTimeout(timer);\n if ((Math.abs(pX - x) + Math.abs(pY - y)) < options.sensitivity) {\n state = 1;\n return focused ? undefined : onOver(el, e);\n } else {\n pX = x;\n pY = y;\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n }\n\n // Public methods\n h.options = function(opt) {\n const focusOptionChanged = opt.handleFocus !== options.handleFocus;\n options = Object.assign({}, options, opt);\n if (focusOptionChanged) {\n options.handleFocus ? addFocus() : removeFocus();\n }\n\n return h;\n };\n\n function dispatchOver(el, e) {\n mouseOver = true;\n if (timer) {\n timer = clearTimeout(timer);\n }\n\n el.removeEventListener('mousemove', tracker, false);\n\n if (state !== 1) {\n pX = e.clientX;\n pY = e.clientY;\n\n el.addEventListener('mousemove', tracker, false);\n\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n\n return this;\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchOver to support dynamically added elements to dom\n */\n function onMouseOver(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchOver(event.target.closest(selector), event);\n }\n };\n\n function dispatchOut(el, e) {\n mouseOver = false;\n if (timer) {\n timer = clearTimeout(timer);\n }\n\n el.removeEventListener('mousemove', tracker, false);\n\n if (state === 1) {\n timer = setTimeout(function() {\n delay(el, e);\n }, options.timeout);\n }\n\n return this;\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchOut to support dynamically added elements to dom\n */\n function onMouseOut(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchOut(event.target.closest(selector), event);\n }\n };\n\n function dispatchFocus(el, e) {\n if (!mouseOver) {\n focused = true;\n onOver(el, e);\n }\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchFocus to support dynamically added elements to dom\n */\n function onFocus(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchFocus(event.target.closest(selector), event);\n }\n };\n\n function dispatchBlur(el, e) {\n if (!mouseOver && focused) {\n focused = false;\n onOut(el, e);\n }\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchBlur to support dynamically added elements to dom\n */\n function onBlur(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchBlur(event.target.closest(selector), event);\n }\n };\n\n /**\n * Modified to support dynamically added element\n */\n function addFocus() {\n parent.addEventListener('focus', onFocus, false);\n parent.addEventListener('blur', onBlur, false);\n }\n\n /**\n * Modified to support dynamically added element\n */\n function removeFocus() {\n parent.removeEventListener('focus', onFocus, false);\n parent.removeEventListener('blur', onBlur, false);\n }\n\n /**\n * Modified to support dynamically added element\n */\n h.remove = function() {\n if (!parent) {\n return;\n }\n\n parent.removeEventListener('mouseover', onMouseOver, false);\n parent.removeEventListener('mouseout', onMouseOut, false);\n removeFocus();\n };\n\n /**\n * Modified to support dynamically added element\n */\n if (parent) {\n parent.addEventListener('mouseover', onMouseOver, false);\n parent.addEventListener('mouseout', onMouseOut, false);\n }\n\n return h;\n};\n","import wpstgHoverIntent from './modules/wpstg-hover-intent';\n\nexport default (function($) {\n const WPStagingCommon = {\n continueErrorHandle: true,\n cache: {\n elements: [],\n get: function(selector) {\n // It is already cached!\n if ($.inArray(selector, this.elements) !== -1) {\n return this.elements[selector];\n }\n\n // Create cache and return\n this.elements[selector] = $(selector);\n\n return this.elements[selector];\n },\n refresh: function(selector) {\n selector.elements[selector] = $(selector);\n },\n },\n setJobId: function(jobId) {\n localStorage.setItem('jobIdBeingProcessed', jobId);\n },\n getJobId: function() {\n return localStorage.getItem('jobIdBeingProcessed');\n },\n listenTooltip: function() {\n wpstgHoverIntent(document, '.wpstg--tooltip', function(target, event) {\n target.querySelector('.wpstg--tooltiptext').style.visibility = 'visible';\n }, function(target, event) {\n target.querySelector('.wpstg--tooltiptext').style.visibility = 'hidden';\n });\n },\n isEmpty: function(obj) {\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n\n return true;\n },\n // Get the custom themed Swal Modal for WP Staging\n // Easy to maintain now in one place now\n getSwalModal: function(isContentCentered = false, customClasses = {}) {\n // common style for all swal modal used in WP Staging\n const defaultCustomClasses = {\n confirmButton: 'wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn wpstg-100-width',\n cancelButton: 'wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn wpstg-100-width',\n actions: 'wpstg--modal--actions',\n popup: isContentCentered ? 'wpstg-swal-popup centered-modal' : 'wpstg-swal-popup',\n };\n\n // If a attribute exists in both default and additional attributes,\n // The class(es) of the additional attribute will overrite the default one.\n const options = {\n customClass: Object.assign(defaultCustomClasses, customClasses),\n buttonsStyling: false,\n reverseButtons: true,\n showClass: {\n popup: 'wpstg--swal2-show wpstg-swal-show',\n },\n };\n\n return wpstgSwal.mixin(options);\n },\n showSuccessModal: function(htmlContent) {\n this.getSwalModal().fire({\n showConfirmButton: false,\n showCancelButton: true,\n cancelButtonText: 'OK',\n icon: 'success',\n title: 'Success!',\n html: '<div class=\"wpstg--grey\" style=\"text-align: left; margin-top: 8px;\">' + htmlContent + '</div>',\n });\n },\n showWarningModal: function(htmlContent) {\n this.getSwalModal().fire({\n showConfirmButton: false,\n showCancelButton: true,\n cancelButtonText: 'OK',\n icon: 'warning',\n title: '',\n html: '<div class=\"wpstg--grey\" style=\"text-align: left; margin-top: 8px;\">' + htmlContent + '</div>',\n });\n },\n showErrorModal: function(htmlContent) {\n this.getSwalModal().fire({\n showConfirmButton: false,\n showCancelButton: true,\n cancelButtonText: 'OK',\n icon: 'error',\n title: 'Error!',\n html: '<div class=\"wpstg--grey\" style=\"text-align: left; margin-top: 8px;\">' + htmlContent + '</div>',\n });\n },\n getSwalContainer: function() {\n return wpstgSwal.getContainer();\n },\n closeSwalModal: function() {\n wpstgSwal.close();\n },\n /**\n * Treats a default response object generated by WordPress's\n * wp_send_json_success() or wp_send_json_error() functions in\n * PHP, parses it in JavaScript, and either throws if it's an error,\n * or returns the data if the response is successful.\n *\n * @param {object} response\n * @return {*}\n */\n getDataFromWordPressResponse(response) {\n if (typeof response !== 'object') {\n throw new Error('Unexpected response (ERR 1341)');\n }\n\n if (!response.hasOwnProperty('success')) {\n throw new Error('Unexpected response (ERR 1342)');\n }\n\n if (!response.hasOwnProperty('data')) {\n throw new Error('Unexpected response (ERR 1343)');\n }\n\n if (response.success === false) {\n if (response.data instanceof Array && response.data.length > 0) {\n throw new Error(response.data.shift());\n } else {\n throw new Error('Response was not successful');\n }\n } else {\n // Successful response. Return the data.\n return response.data;\n }\n },\n isLoading: function(isLoading) {\n if (!isLoading || isLoading === false) {\n WPStagingCommon.cache.get('.wpstg-loader').hide();\n } else {\n WPStagingCommon.cache.get('.wpstg-loader').show();\n }\n },\n /**\n * Convert the given url to make it slug compatible\n * @param {string} url\n * @return {string}\n */\n slugify: function(url) {\n return url.toString()\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .replace(/\\s+/g, '-')\n .replace(/&/g, '-and-')\n .replace(/[^a-z0-9\\-]/g, '')\n .replace(/-+/g, '-')\n .replace(/^-*/, '')\n .replace(/-*$/, '')\n ;\n },\n showAjaxFatalError: function(response, prependMessage, appendMessage) {\n prependMessage = prependMessage ? prependMessage + '<br/><br/>' : 'Something went wrong! <br/><br/>';\n appendMessage = appendMessage ? appendMessage + '<br/><br/>' : '<br/><br/>Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.';\n\n if (response === false) {\n WPStagingCommon.showError(prependMessage + ' Error: No response.' + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n\n if (typeof response.error !== 'undefined' && response.error) {\n WPStagingCommon.showError(prependMessage + ' Error: ' + response.message + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n },\n handleFetchErrors: function(response) {\n if (!response.ok) {\n WPStagingCommon.showError('Error: ' + response.status + ' - ' + response.statusText + '. Please try again or contact support.');\n }\n return response;\n },\n showError: function(message) {\n WPStagingCommon.cache.get('#wpstg-try-again').css('display', 'inline-block');\n WPStagingCommon.cache.get('#wpstg-cancel-cloning').text('Reset');\n WPStagingCommon.cache.get('#wpstg-resume-cloning').show();\n WPStagingCommon.cache.get('#wpstg-error-wrapper').show();\n WPStagingCommon.cache.get('#wpstg-error-details').show().html(message);\n WPStagingCommon.cache.get('#wpstg-removing-clone').removeClass('loading');\n WPStagingCommon.cache.get('.wpstg-loader').hide();\n $('.wpstg--modal--process--generic-problem').show().html(message);\n },\n resetErrors: function() {\n WPStagingCommon.cache.get('#wpstg-error-details').hide().html('');\n },\n /**\n * Ajax Requests\n * @param {Object} data\n * @param {Function} callback\n * @param {string} dataType\n * @param {bool} showErrors\n * @param {int} tryCount\n * @param {float} incrementRatio\n * @param {function} errorCallback\n */\n ajax: function(data, callback, dataType, showErrors, tryCount, incrementRatio = null, errorCallback = null) {\n if ('undefined' === typeof (dataType)) {\n dataType = 'json';\n }\n\n if (false !== showErrors) {\n showErrors = true;\n }\n\n tryCount = 'undefined' === typeof (tryCount) ? 0 : tryCount;\n\n const retryLimit = 10;\n\n let retryTimeout = 10000 * tryCount;\n\n incrementRatio = parseInt(incrementRatio);\n if (!isNaN(incrementRatio)) {\n retryTimeout *= incrementRatio;\n }\n\n $.ajax({\n url: ajaxurl + '?action=wpstg_processing&_=' + (Date.now() / 1000),\n type: 'POST',\n dataType: dataType,\n cache: false,\n data: data,\n error: function(xhr, textStatus, errorThrown) {\n console.log(xhr.status + ' ' + xhr.statusText + '---' + textStatus);\n\n if (typeof (errorCallback) === 'function') {\n // Custom error handler\n errorCallback(xhr, textStatus, errorThrown);\n\n if (!WPStagingCommon.continueErrorHandle) {\n // Reset state\n WPStagingCommon.continueErrorHandle = true;\n\n return;\n }\n }\n\n // Default error handler\n tryCount++;\n if (tryCount <= retryLimit) {\n setTimeout(function() {\n WPStagingCommon.ajax(data, callback, dataType, showErrors, tryCount, incrementRatio);\n return;\n }, retryTimeout);\n } else {\n const errorCode = 'undefined' === typeof (xhr.status) ? 'Unknown' : xhr.status;\n WPStagingCommon.showError(\n 'Fatal Error: ' + errorCode + ' Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.',\n );\n }\n },\n success: function(data) {\n if ('function' === typeof (callback)) {\n callback(data);\n }\n },\n statusCode: {\n 404: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 404 - Can\\'t find ajax request URL! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 500: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Fatal Error 500 - Internal server error while processing the request! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 504: function() {\n if (tryCount > retryLimit) {\n WPStagingCommon.showError('Error 504 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 502: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 502 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 503: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 503 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 429: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 429 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 403: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Refresh page or login again! The process should be finished successfully. \\n\\ ');\n }\n },\n },\n });\n },\n };\n\n return WPStagingCommon;\n})(jQuery);\n","\nimport * as dom from './wpstg-dom-utils.js';\nimport WpstgDirectoryNavigation from './wpstg-directory-navigation.js';\nimport WpstgTableSelection from './wpstg-table-selection';\nimport WpstgExcludeFilters from './wpstg-exclude-filters.js';\nimport WpstgModal from './wpstg-modal.js';\nimport WPStagingCommon from './../wpstg.js';\n\n/**\n * Manage RESET MODAL\n */\nexport default class WpstgResetModal {\n constructor(\n cloneID,\n workflowSelector = '#wpstg-workflow',\n fetchExcludeSettingsAction = 'wpstg_clone_excludes_settings',\n modalErrorAction = 'wpstg_modal_error',\n wpstgObject = wpstg,\n ) {\n this.cloneID = cloneID;\n this.workflow = dom.qs(workflowSelector);\n this.wpstgObject = wpstgObject;\n this.fetchExcludeSettingsAction = fetchExcludeSettingsAction;\n this.modalErrorAction = modalErrorAction;\n this.resetButtonClass = 'wpstg-confirm-reset-clone';\n this.resetModalContainerClass = 'wpstg-reset-confirmation';\n this.resetTabSelector = '.wpstg-reset-exclude-tab';\n this.directoryNavigator = null;\n this.excludeFilters = null;\n this.tableSelector = null;\n this.isNetworkClone = false;\n }\n\n addEvents() {\n const resetModalContainer = dom.qs('.' + this.resetModalContainerClass);\n if (resetModalContainer === null) {\n console.log('Exit');\n return;\n }\n\n dom.addEvent(resetModalContainer, 'click', this.resetTabSelector, (target) => {\n this.toggleContent(target);\n });\n }\n\n init() {\n this.addEvents();\n }\n\n setNetworkClone(isNetworkClone) {\n this.isNetworkClone = isNetworkClone;\n }\n\n toggleContent(target) {\n const resetModalContainer = dom.qs('.' + this.resetModalContainerClass);\n const contentId = target.getAttribute('data-id');\n const tabTriangle = target.querySelector('.wpstg-tab-triangle');\n const isCollapsed = target.getAttribute('data-collapsed', 'true');\n const content = dom.qs(contentId);\n if (isCollapsed === 'true') {\n if (resetModalContainer.classList.contains('has-collapsible-open')) {\n resetModalContainer.classList.add('has-collapsible-open-2');\n } else {\n resetModalContainer.classList.add('has-collapsible-open');\n }\n\n dom.slideDown(content);\n tabTriangle.style.transform = 'rotate(90deg)';\n target.setAttribute('data-collapsed', 'false');\n } else {\n if (resetModalContainer.classList.contains('has-collapsible-open-2')) {\n resetModalContainer.classList.remove('has-collapsible-open-2');\n } else {\n resetModalContainer.classList.remove('has-collapsible-open');\n }\n\n dom.slideUp(content);\n tabTriangle.style.removeProperty('transform');\n target.setAttribute('data-collapsed', 'true');\n }\n }\n\n /**\n * Show Swal alert with loader and send ajax request to fetch content of alert.\n * @return Promise\n */\n showModal() {\n const swalPromise = this.loadModal();\n this.init();\n this.fetchCloneExcludes();\n return swalPromise;\n }\n\n loadModal() {\n return WPStagingCommon.getSwalModal(false, {\n confirmButton: this.resetButtonClass + ' wpstg-confirm-reset-clone wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn',\n container: this.resetModalContainerClass + ' wpstg-swal2-container wpstg-swal2-loading',\n }).fire({\n title: '',\n icon: 'warning',\n html: this.getAjaxLoader(),\n width: '400px',\n focusConfirm: false,\n confirmButtonText: this.wpstgObject.i18n.resetClone,\n showCancelButton: true,\n });\n }\n\n fetchCloneExcludes() {\n this.error = null;\n // send ajax request and fetch preserved exclude settings\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams({\n action: this.fetchExcludeSettingsAction,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n clone: this.cloneID,\n job: 'resetting',\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((data) => {\n if (!data.success) {\n const errorModal = new WpstgModal(this.modalErrorAction, this.wpstgObject);\n errorModal.show(Object.assign({\n title: 'Error',\n icon: 'error',\n html: this.wpstgObject.i18n['somethingWentWrong'],\n width: '500px',\n confirmButtonText: 'Ok',\n showCancelButton: false,\n customClass: {\n confirmButton: 'wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn',\n cancelButton: 'wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn',\n actions: 'wpstg--modal--actions',\n popup: 'wpstg-swal-popup centered-modal',\n },\n buttonsStyling: false,\n reverseButtons: true,\n }, data.swalOptions), {\n type: data.type,\n });\n\n return;\n }\n\n const modal = dom.qs('.wpstg-reset-confirmation');\n modal.classList.remove('wpstg-swal2-loading');\n modal.querySelector('.wpstg--swal2-popup').style.width = '500px';\n modal.querySelector('.wpstg--swal2-content').innerHTML = data.html;\n this.directoryNavigator = new WpstgDirectoryNavigation();\n this.excludeFilters = new WpstgExcludeFilters();\n this.tableSelector = new WpstgTableSelection('#wpstg-reset-excluded-tables', '.' + this.resetModalContainerClass);\n this.tableSelector.setNetworkClone(this.isNetworkClone);\n }).catch((error) => {\n this.renderError({\n 'html': this.wpstgObject.i18n['somethingWentWrong'] + ' ' + error,\n });\n });\n }\n\n getDirectoryNavigator() {\n return this.directoryNavigator;\n }\n\n getExcludeFilters() {\n return this.excludeFilters;\n }\n\n getTableSelector() {\n return this.tableSelector;\n }\n\n getAjaxLoader() {\n return '<div class=\"wpstg-swal2-ajax-loader\"><img src=\"' + this.wpstgObject.wpstgIcon + '\" /></div>';\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Handle toggle of advance settings checkboxes\n */\nexport default class WpstgCloningAdvanceSettings {\n constructor(\n baseContainerSelector = '#wpstg-clonepage-wrapper',\n ) {\n this.baseContainer = dom.qs(baseContainerSelector);\n this.checkBoxSettingTogglerSelector = '.wpstg-toggle-advance-settings-section';\n this.init();\n }\n\n /**\n * Add events\n * @return {void}\n */\n addEvents() {\n if (this.baseContainer === null) {\n return;\n }\n\n dom.addEvent(this.baseContainer, 'change', this.checkBoxSettingTogglerSelector, (element) => {\n this.toggleSettings(element);\n });\n }\n\n /**\n * @return {void}\n */\n init() {\n this.addEvents();\n }\n\n /**\n * Expand/Collapse checkbox content on change\n * @return {void}\n */\n toggleSettings(element) {\n const target = dom.qs('#' + element.getAttribute('data-id'));\n if (element.checked) {\n dom.slideDown(target);\n } else {\n dom.slideUp(target);\n }\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\nexport default class WpstgMainMenu {\n constructor() {\n this.activeTabClass = 'wpstg--tab--active';\n this.mainMenu();\n }\n\n mainMenu() {\n const tabHeader = dom.qs('.wpstg--tab--header');\n // Early bail if tab header is not available\n if (tabHeader === null) {\n return;\n }\n\n dom.addEvent(dom.qs('.wpstg--tab--header'), 'click', '.wpstg-button', (element) => {\n const $this = element;\n const target = $this.getAttribute('data-target');\n const targetElements = dom.all(target);\n const menuItems = dom.all('.wpstg--tab--header a[data-target]');\n const contents = dom.all('.wpstg--tab--contents > .wpstg--tab--content');\n\n contents.forEach((content) => {\n // active tab class is without the css dot class prefix\n if (content.matches('.' + this.activeTabClass + ':not(' + target + ')')) {\n content.classList.remove(this.activeTabClass);\n }\n });\n\n menuItems.forEach((menuItem) => {\n if (menuItem !== $this) {\n menuItem.classList.remove(this.activeTabClass);\n }\n });\n\n $this.classList.add(this.activeTabClass);\n\n targetElements.forEach((targetElement) => {\n targetElement.classList.add(this.activeTabClass);\n });\n\n if ('#wpstg--tab--backup' === target) {\n window.dispatchEvent(new Event('backups-tab'));\n }\n });\n };\n}\n","import WpstgCloneStaging from './modules/wpstg-clone-staging.js';\nimport WpstgDirectoryNavigation from './modules/wpstg-directory-navigation.js';\nimport WpstgTableSelection from './modules/wpstg-table-selection.js';\nimport WpstgExcludeFilters from './modules/wpstg-exclude-filters.js';\nimport WpstgResetModal from './modules/wpstg-reset-modal.js';\nimport WpstgModal from './modules/wpstg-modal.js';\nimport WpstgCloningAdvanceSettings from './modules/wpstg-cloning-advance-settings.js';\nimport WpstgMainMenu from './modules/wpstg-main-menu.js';\nimport WPStagingCommon from './wpstg.js';\nimport {handleDisplayDependencies, handleToggleElement, handleCopyPaste, handleCopyToClipboard} from './modules/wpstg-dom-utils.js';\n\nvar WPStaging = (function($) {\n const that = {\n isCancelled: false,\n isFinished: false,\n getLogs: false,\n time: 1,\n executionTime: false,\n progressBar: 0,\n cloneExcludeFilters: null,\n directoryNavigator: null,\n tableSelector: null,\n notyf: null,\n areAllTablesChecked: true,\n handleDisplayDependencies: handleDisplayDependencies,\n handleToggleElement: handleToggleElement,\n handleCopyPaste: handleCopyPaste,\n handleCopyToClipboard: handleCopyToClipboard,\n };\n const cache = {elements: []};\n let timeout; let ajaxSpinner;\n\n /**\n * Get / Set Cache for Selector\n * @param {String} selector\n * @return {*}\n */\n cache.get = function(selector) {\n // It is already cached!\n if ($.inArray(selector, cache.elements) !== -1) {\n return cache.elements[selector];\n }\n\n // Create cache and return\n cache.elements[selector] = jQuery(selector);\n\n return cache.elements[selector];\n };\n\n /**\n * Refreshes given cache\n * @param {String} selector\n */\n cache.refresh = function(selector) {\n selector.elements[selector] = jQuery(selector);\n };\n\n /**\n * Show and Log Error Message\n * @param {String} message\n */\n const showError = function(message) {\n cache.get('#wpstg-try-again').css('display', 'inline-block');\n cache.get('#wpstg-cancel-cloning').text('Reset');\n cache.get('#wpstg-resume-cloning').show();\n cache.get('#wpstg-error-wrapper').show();\n cache.get('#wpstg-error-details').show().html(message);\n cache.get('#wpstg-removing-clone').removeClass('loading');\n cache.get('.wpstg-loader').hide();\n $('.wpstg--modal--process--generic-problem').show().html(message);\n\n // Error event information for Staging\n $.ajax({\n url: ajaxurl,\n type: 'POST',\n dataType: 'json',\n data: {\n 'action': 'wpstg_staging_job_error',\n 'accessToken': wpstg.accessToken,\n 'nonce': wpstg.nonce,\n 'error_message': message,\n },\n });\n };\n\n /**\n * Show warning during cloning or push process when closing tab or browser, or changing page\n * @param {beforeunload} event\n * @return {null}\n */\n that.warnIfClosingDuringProcess = function(event) {\n // Only some browsers show the message below, most say something like \"Changes you made may not be saved\" (Chrome) or \"You have unsaved changes. Exit?\"\n event.returnValue = 'You MUST leave this window open while cloning/pushing. Please wait...';\n return null;\n };\n\n /**\n *\n * @param response the error object\n * @param prependMessage Overwrite default error message at beginning\n * @param appendMessage Overwrite default error message at end\n * @returns void\n */\n\n const showAjaxFatalError = function(response, prependMessage, appendMessage) {\n prependMessage = prependMessage ? prependMessage + '<br/><br/>' : 'Something went wrong! <br/><br/>';\n appendMessage = appendMessage ? appendMessage + '<br/><br/>' : '<br/><br/>Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.';\n\n if (response === false) {\n showError(prependMessage + ' Error: No response.' + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n\n if (typeof response.error !== 'undefined' && response.error) {\n console.error(response.message);\n showError(prependMessage + ' Error: ' + response.message + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n };\n\n /**\n *\n * @param response\n * @return {{ok}|*}\n */\n const handleFetchErrors = function(response) {\n if (!response.ok) {\n showError('Error: ' + response.status + ' - ' + response.statusText + '. Please try again or contact support.');\n }\n return response;\n };\n\n /** Hide and reset previous thrown visible errors */\n const resetErrors = function() {\n cache.get('#wpstg-error-details').hide().html('');\n };\n\n /**\n * Common Elements\n */\n const elements = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n let urlSpinner = ajaxurl.replace('/admin-ajax.php', '') + '/images/spinner';\n let timer;\n\n if (2 < window.devicePixelRatio) {\n urlSpinner += '-2x';\n }\n\n urlSpinner += '.gif';\n\n ajaxSpinner = '<img src=\\'\\'' + urlSpinner + '\\' alt=\\'\\' class=\\'ajax-spinner general-spinner\\' />';\n\n const getBaseValues = function() {\n const path = $('#wpstg-use-target-dir').data('base-path');\n const uri = $('#wpstg-use-target-hostname').data('base-uri');\n return {\n path,\n };\n };\n\n $workFlow\n /**\n .on('change', '#wpstg_network_clone', function(e) {\n e.preventDefault();\n $('.wpstg-button-select').trigger('click');\n })\n */\n // Check / Un-check All Database Tables New\n .on('click', '.wpstg-button-unselect', function(e) {\n e.preventDefault();\n\n if (false === that.areAllTablesChecked) {\n cache.get('#wpstg_select_tables_cloning .wpstg-db-table').prop('selected', 'selected');\n cache.get('.wpstg-button-unselect').text('Unselect All');\n cache.get('.wpstg-db-table-checkboxes').prop('checked', true);\n that.areAllTablesChecked = true;\n } else {\n cache.get('#wpstg_select_tables_cloning .wpstg-db-table').prop('selected', false);\n cache.get('.wpstg-button-unselect').text('Select All');\n cache.get('.wpstg-db-table-checkboxes').prop('checked', false);\n that.areAllTablesChecked = false;\n }\n })\n\n /**\n * Select tables with certain tbl prefix | NEW\n * @param obj e\n * @returns {undefined}\n */\n /**\n .on('click', '.wpstg-button-select', function(e) {\n e.preventDefault();\n $('#wpstg_select_tables_cloning .wpstg-db-table').each(function() {\n let regex = '^' + wpstg.tblprefix;\n if (wpstg.isMultisite === '1' && !$('#wpstg_network_clone').is(':checked')) {\n regex += '([^0-9])_*';\n }\n\n if ($(this).attr('name').match(regex)) {\n $(this).prop('selected', 'selected');\n } else {\n $(this).prop('selected', false);\n }\n });\n })\n\n // Expand Directories\n .on('click', '.wpstg-expand-dirs', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n\n $this.siblings('.wpstg-subdir').slideToggle();\n })\n // When a directory checkbox is Selected\n .on('change', 'input.wpstg-check-dir', function() {\n const $directory = $(this).parent('.wpstg-dir');\n\n if (this.checked) {\n $directory.parents('.wpstg-dir').children('.wpstg-check-dir').prop('checked', true);\n $directory.find('.wpstg-expand-dirs').removeClass('disabled');\n $directory.find('.wpstg-subdir .wpstg-check-dir').prop('checked', true);\n } else {\n $directory.find('.wpstg-dir .wpstg-check-dir').prop('checked', false);\n $directory.find('.wpstg-expand-dirs, .wpstg-check-subdirs').addClass('disabled');\n $directory.find('.wpstg-check-subdirs').data('action', 'check').text('check');\n }\n })\n // When a directory name is Selected\n .on('change', 'href.wpstg-check-dir', function() {\n const $directory = $(this).parent('.wpstg-dir');\n\n if (this.checked) {\n $directory.parents('.wpstg-dir').children('.wpstg-check-dir').prop('checked', true);\n $directory.find('.wpstg-expand-dirs').removeClass('disabled');\n $directory.find('.wpstg-subdir .wpstg-check-dir').prop('checked', true);\n } else {\n $directory.find('.wpstg-dir .wpstg-check-dir').prop('checked', false);\n $directory.find('.wpstg-expand-dirs, .wpstg-check-subdirs').addClass('disabled');\n $directory.find('.wpstg-check-subdirs').data('action', 'check').text('check');\n }\n })\n */\n // Check the max length of the clone name and if the clone name already exists\n .on('keyup', '#wpstg-new-clone-id', function() {\n // Hide previous errors\n document.getElementById('wpstg-error-details').style.display = 'none';\n\n // This request was already sent, clear it up!\n if ('number' === typeof (timer)) {\n clearInterval(timer);\n }\n\n // Early bail if site name is empty\n if (this.value === undefined || this.value === '') {\n cache.get('#wpstg-new-clone-id').removeClass('wpstg-error-input');\n cache.get('#wpstg-start-cloning').removeAttr('disabled');\n cache.get('#wpstg-clone-id-error').text('').hide();\n return;\n }\n\n // Convert the site name to directory name (slugify the site name to create directory name)\n const cloneDirectoryName = WPStagingCommon.slugify(this.value);\n\n timer = setTimeout(\n function() {\n ajax(\n {\n action: 'wpstg_check_clone',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n directoryName: cloneDirectoryName,\n },\n function(response) {\n if (response.status === 'success') {\n cache.get('#wpstg-new-clone-id').removeClass('wpstg-error-input');\n cache.get('#wpstg-start-cloning').removeAttr('disabled');\n cache.get('#wpstg-clone-id-error').text('').hide();\n } else {\n cache.get('#wpstg-new-clone-id').addClass('wpstg-error-input');\n cache.get('#wpstg-start-cloning').prop('disabled', true);\n cache.get('#wpstg-clone-id-error').text(response.message).show();\n }\n },\n );\n },\n 500,\n );\n })\n // Restart cloning process\n .on('click', '#wpstg-start-cloning', function() {\n resetErrors();\n that.isCancelled = false;\n that.getLogs = false;\n that.progressBar = 0;\n })\n .on('input', '#wpstg-new-clone-id', function() {\n if ($('#wpstg-clone-directory').length < 1) {\n return;\n }\n\n const slug = WPStagingCommon.slugify(this.value).substring(0, 16);\n const $targetDir = $('#wpstg-use-target-dir');\n const $targetUri = $('#wpstg-use-target-hostname');\n let path = $targetDir.data('base-path');\n let uri = $targetUri.data('base-uri');\n\n if (path) {\n path = path.replace(/\\/+$/g, '') + '/' + slug + '/';\n }\n\n if (uri) {\n uri = uri.replace(/\\/+$/g, '') + '/' + slug;\n }\n\n\n $('.wpstg-use-target-dir--value').text(path);\n $('.wpstg-use-target-hostname--value').text(uri);\n\n $targetDir.attr('data-path', path);\n $targetUri.attr('data-uri', uri);\n $('#wpstg_clone_dir').attr('placeholder', path);\n $('#wpstg_clone_hostname').attr('placeholder', uri);\n })\n .on('input', '#wpstg_clone_hostname', function() {\n if ($(this).val() === '' || validateTargetHost()) {\n $('#wpstg_clone_hostname_error').remove();\n return;\n }\n if (!validateTargetHost() && !$('#wpstg_clone_hostname_error').length) {\n $('#wpstg-clone-directory tr:last-of-type').after('<tr><td> </td><td><p id=\"wpstg_clone_hostname_error\" style=\"color: red;\"> Invalid host name. Please provide it in a format like http://example.com</p></td></tr>');\n }\n })\n ;\n\n cloneActions();\n };\n\n /* @returns {boolean} */\n var validateTargetHost = function() {\n const the_domain = $('#wpstg_clone_hostname').val();\n\n if (the_domain === '') {\n return true;\n }\n\n const reg = /^http(s)?:\\/\\/.*$/;\n if (reg.test(the_domain) === false) {\n return false;\n }\n return true;\n };\n\n /**\n * Clone actions\n */\n var cloneActions = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n\n $workFlow\n // Cancel cloning\n .on('click', '#wpstg-cancel-cloning', function() {\n if (!confirm('Are you sure you want to cancel cloning process?')) {\n return false;\n }\n\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n $this.prop('disabled', true);\n\n that.isCancelled = true;\n that.progressBar = 0;\n\n $('#wpstg-processing-status').text('Please wait...this can take up a while.');\n $('.wpstg-loader, #wpstg-show-log-button').hide();\n\n $this.parent().append(ajaxSpinner);\n\n cancelCloning();\n })\n // Resume cloning\n .on('click', '#wpstg-resume-cloning', function() {\n resetErrors();\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n\n that.isCancelled = false;\n\n $('#wpstg-processing-status').text('Try to resume cloning process...');\n $('#wpstg-error-details').hide();\n $('.wpstg-loader').show();\n\n $this.parent().append(ajaxSpinner);\n\n that.startCloning();\n })\n // Cancel update cloning\n .on('click', '#wpstg-cancel-cloning-update', function() {\n resetErrors();\n\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n $this.prop('disabled', true);\n\n that.isCancelled = true;\n\n $('#wpstg-cloning-result').text('Please wait...this can take up a while.');\n $('.wpstg-loader, #wpstg-show-log-button').hide();\n\n $this.parent().append(ajaxSpinner);\n\n cancelCloningUpdate();\n })\n // Restart cloning\n .on('click', '#wpstg-restart-cloning', function() {\n resetErrors();\n\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n $this.prop('disabled', true);\n\n that.isCancelled = true;\n\n $('#wpstg-cloning-result').text('Please wait...this can take up a while.');\n $('.wpstg-loader, #wpstg-show-log-button').hide();\n\n $this.parent().append(ajaxSpinner);\n\n restart();\n })\n // Delete clone - confirmation\n .on('click', '.wpstg-remove-clone[data-clone]', function(e) {\n resetErrors();\n e.preventDefault();\n\n const $existingClones = cache.get('#wpstg-existing-clones');\n\n $workFlow.removeClass('active');\n\n cache.get('.wpstg-loader').show();\n\n ajax(\n {\n action: 'wpstg_confirm_delete_clone',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n clone: $(this).data('clone'),\n },\n function(response) {\n cache.get('#wpstg-removing-clone').html(response);\n\n $existingClones.children('img').remove();\n\n cache.get('.wpstg-loader').hide();\n\n $('html, body').animate({\n // This logic is meant to be a \"scrollBottom\"\n scrollTop: $('#wpstg-remove-clone').offset().top - $(window).height() +\n $('#wpstg-remove-clone').height() + 50,\n }, 100);\n },\n 'HTML',\n );\n })\n // Delete clone - confirmed\n .on('click', '#wpstg-remove-clone', function(e) {\n resetErrors();\n e.preventDefault();\n\n cache.get('#wpstg-removing-clone').addClass('loading');\n\n cache.get('.wpstg-loader').show();\n\n deleteClone($(this).data('clone'));\n })\n // Cancel deleting clone\n .on('click', '#wpstg-cancel-removing', function(e) {\n e.preventDefault();\n $('.wpstg-clone').removeClass('active');\n cache.get('#wpstg-removing-clone').html('');\n })\n // Update\n .on('click', '.wpstg-execute-clone', function(e) {\n e.preventDefault();\n\n const clone = $(this).data('clone');\n\n $workFlow.addClass('loading');\n that.cloneExcludeFilters = null;\n ajax(\n {\n action: 'wpstg_scanning',\n clone: clone,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response.length < 1) {\n showError(\n 'Something went wrong! Error: No response. Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.',\n );\n }\n\n const jsonResponse = tryParseJson(response);\n if (jsonResponse !== false && jsonResponse.success === false) {\n $workFlow.removeClass('loading');\n showErrorModal(jsonResponse);\n\n return;\n }\n\n $workFlow.removeClass('loading').html(response);\n // register check disk space function for clone update process.\n checkDiskSpace();\n that.directoryNavigator = new WpstgDirectoryNavigation('#wpstg-directories-listing', '#wpstg-workflow', wpstg, that.notyf);\n that.tableSelector = new WpstgTableSelection('#wpstg-scanning-db', '#wpstg-workflow', '#wpstg_network_clone', wpstg, that.notyf);\n that.cloneExcludeFilters = new WpstgExcludeFilters();\n that.switchStep(2);\n },\n 'HTML',\n );\n })\n // Reset Clone\n .on('click', '.wpstg-reset-clone', function(e) {\n e.preventDefault();\n const clone = $(this).data('clone');\n const resetModal = new WpstgResetModal(clone);\n resetModal.setNetworkClone($(this).data('network') === 'yes');\n const promise = resetModal.showModal();\n that.areAllTablesChecked = true;\n\n promise.then((result) => {\n if (result.value) {\n const dirNavigator = resetModal.getDirectoryNavigator();\n const tableSelector = resetModal.getTableSelector();\n const exclFilters = resetModal.getExcludeFilters().getExcludeFilters();\n\n let includedTables = '';\n let excludedTables = '';\n let selectedTablesWithoutPrefix = '';\n let allTablesExcluded = false;\n\n if (tableSelector !== null) {\n includedTables = tableSelector.getIncludedTables();\n excludedTables = tableSelector.getExcludedTables();\n selectedTablesWithoutPrefix = tableSelector.getSelectedTablesWithoutPrefix();\n }\n\n if (includedTables.length > excludedTables.length) {\n includedTables = '';\n } else if (excludedTables.length > includedTables.length) {\n excludedTables = '';\n allTablesExcluded = includedTables === '';\n }\n\n resetClone(clone, {\n includedTables: includedTables,\n excludedTables: excludedTables,\n allTablesExcluded: allTablesExcluded,\n selectedTablesWithoutPrefix: selectedTablesWithoutPrefix,\n excludeSizeRules: encodeURIComponent(exclFilters.sizes),\n excludeGlobRules: encodeURIComponent(exclFilters.globs),\n excludedDirectories: dirNavigator.getExcludedDirectories(),\n extraDirectories: dirNavigator.getExtraDirectoriesRootOnly(),\n });\n }\n });\n\n return;\n });\n };\n\n /**\n * Ajax Requests\n * @param Object data\n * @param Function callback\n * @param string dataType\n * @param bool showErrors\n * @param int tryCount\n * @param float incrementRatio\n */\n var ajax = function(data, callback, dataType, showErrors, tryCount, incrementRatio = null) {\n if ('undefined' === typeof (dataType)) {\n dataType = 'json';\n }\n\n if (false !== showErrors) {\n showErrors = true;\n }\n\n tryCount = 'undefined' === typeof (tryCount) ? 0 : tryCount;\n\n const retryLimit = 5;\n\n let retryTimeout = 10000 * tryCount;\n\n incrementRatio = parseInt(incrementRatio);\n if (!isNaN(incrementRatio)) {\n retryTimeout *= incrementRatio;\n }\n\n $.ajax({\n url: ajaxurl + '?action=wpstg_processing&_=' + (Date.now() / 1000),\n type: 'POST',\n dataType: dataType,\n cache: false,\n data: data,\n error: function(xhr, textStatus, errorThrown) {\n // try again after 10 seconds\n tryCount++;\n if (tryCount <= retryLimit) {\n console.log('RETRYING ' + tryCount + '/' + retryLimit);\n setTimeout(function() {\n ajax(data, callback, dataType, showErrors, tryCount, incrementRatio);\n return;\n }, retryTimeout);\n } else {\n console.log('RETRYING LIMIT');\n const errorCode = 'undefined' === typeof (xhr.status) ? 'Unknown' : xhr.status;\n showError(\n 'Fatal Error: ' + errorCode + ' Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.',\n );\n }\n },\n success: function(data) {\n if ('function' === typeof (callback)) {\n callback(data);\n }\n },\n statusCode: {\n 404: function() {\n if (tryCount >= retryLimit) {\n showError('Error 404 - Can\\'t find ajax request URL! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 500: function() {\n if (tryCount >= retryLimit) {\n showError('Fatal Error 500 - Internal server error while processing the request! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 504: function() {\n if (tryCount > retryLimit) {\n showError('Error 504 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 502: function() {\n if (tryCount >= retryLimit) {\n showError('Error 502 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 503: function() {\n if (tryCount >= retryLimit) {\n showError('Error 503 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 429: function() {\n if (tryCount >= retryLimit) {\n showError('Error 429 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 403: function() {\n if (tryCount >= retryLimit) {\n showError('Refresh page or login again! The process should be finished successfully. \\n\\ ');\n }\n },\n },\n });\n };\n\n /**\n * Next / Previous Step Clicks to Navigate Through Staging Job\n */\n const stepButtons = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n\n $workFlow\n // Next Button\n .on('click', '.wpstg-next-step-link', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n const isScan = false;\n\n if ($('#wpstg_clone_hostname').length && !validateTargetHost()) {\n $('#wpstg_clone_hostname').focus();\n return false;\n }\n\n if ($this.data('action') === 'wpstg_update' || $this.data('action') === 'wpstg_reset') {\n // Update / Reset Clone - confirmed\n let onlyUpdateMessage = '';\n if ($this.data('action') === 'wpstg_update') {\n onlyUpdateMessage = ' \\n\\nExclude all tables and folders you do not want to overwrite, first! \\n\\nDo not cancel the updating process! This can break your staging site. \\n\\n\\Create a backup of your staging website before you proceed.';\n }\n\n if (!confirm('STOP! This will overwrite your staging site with all selected data from the production site! This should be used only if you want to clone again your production site. Are you sure you want to do this?' + onlyUpdateMessage)) {\n return false;\n }\n }\n\n // Button is disabled\n if ($this.attr('disabled')) {\n return false;\n }\n\n if ($this.data('action') === 'wpstg_cloning') {\n // Verify External Database If Checked and Not Skipped\n if ($('#wpstg-ext-db').is(':checked')) {\n verifyExternalDatabase($this, $workFlow);\n return;\n }\n }\n\n proceedCloning($this, $workFlow);\n })\n // Previous Button\n .on('click', '.wpstg-prev-step-link', function(e) {\n e.preventDefault();\n cache.get('.wpstg-loader').removeClass('wpstg-finished');\n cache.get('.wpstg-loader').hide();\n loadOverview();\n });\n };\n\n /**\n * Get Included (Checked) Database Tables\n * @return {Array}\n */\n const getIncludedTables = function() {\n const includedTables = [];\n\n $('#wpstg_select_tables_cloning option:selected').each(function() {\n includedTables.push(this.value);\n });\n\n return includedTables;\n };\n\n /**\n * Get Excluded (Unchecked) Database Tables\n * Not used anymore!\n * @return {Array}\n */\n const getExcludedTables = function() {\n const excludedTables = [];\n\n $('.wpstg-db-table input:not(:checked)').each(function() {\n excludedTables.push(this.name);\n });\n\n return excludedTables;\n };\n\n /**\n * Verify External Database for Cloning\n */\n var verifyExternalDatabase = function($this, workflow) {\n cache.get('.wpstg-loader').show();\n ajax(\n {\n action: 'wpstg_database_verification',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n databaseUser: cache.get('#wpstg_db_username').val(),\n databasePassword: cache.get('#wpstg_db_password').val(),\n databaseServer: cache.get('#wpstg_db_server').val(),\n databaseDatabase: cache.get('#wpstg_db_database').val(),\n },\n function(response) {\n // Undefined Error\n if (false === response) {\n showError(\n 'Something went wrong! Error: No response.' +\n 'Please try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n cache.get('.wpstg-loader').hide();\n return;\n }\n\n // Throw Error\n if ('undefined' === typeof (response.success)) {\n showError(\n 'Something went wrong! Error: Invalid response.' +\n 'Please try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n cache.get('.wpstg-loader').hide();\n return;\n }\n\n if (response.success) {\n cache.get('.wpstg-loader').hide();\n proceedCloning($this, workflow);\n return;\n }\n\n if (response.error_type === 'comparison') {\n cache.get('.wpstg-loader').hide();\n let render = '<table class=\"wpstg-db-comparison-table\"><thead><tr><th>Property</th><th>Production DB</th><th>Staging DB</th><th>Status</th></tr></thead><tbody>';\n response.checks.forEach((x) => {\n let icon = '<span class=\"wpstg-css-tick\"></span>';\n if (x.production !== x.staging) {\n icon = '<span class=\"wpstg-css-cross\"></span>';\n }\n render += '<tr><td>' + x.name + '</td><td>' + x.production + '</td><td>' + x.staging + '</td><td>' + icon + '</td></tr>';\n });\n render += '</tbody></table><p>Note: Some MySQL/MariaDB properties do not match. You may proceed but the staging site may not work as expected.</p>';\n WPStagingCommon.getSwalModal(true, {\n popup: 'wpstg-swal-popup wpstg-db-comparison-modal centered-modal',\n }).fire({\n title: 'Different Database Properties',\n icon: 'warning',\n html: render,\n width: '650px',\n focusConfirm: false,\n confirmButtonText: 'Proceed',\n showCancelButton: true,\n }).then(function(result) {\n if (result.value) {\n proceedCloning($this, workflow);\n }\n });\n return;\n }\n\n WPStagingCommon.getSwalModal(true).fire({\n title: 'Different Database Properties',\n icon: 'error',\n html: response.message,\n focusConfirm: true,\n confirmButtonText: 'Ok',\n showCancelButton: false,\n });\n cache.get('.wpstg-loader').hide();\n },\n 'json',\n false,\n );\n };\n\n /**\n * Get Cloning Step Data\n */\n const getCloningData = function() {\n if ('wpstg_cloning' !== that.data.action && 'wpstg_update' !== that.data.action && 'wpstg_reset' !== that.data.action) {\n return;\n }\n\n that.data.cloneID = new Date().getTime().toString();\n if ('wpstg_update' === that.data.action) {\n that.data.cloneID = $('#wpstg-new-clone-id').data('clone');\n }\n\n that.data.cloneName = $('#wpstg-new-clone-id').val() || that.data.cloneID;\n\n if (that.directoryNavigator !== null) {\n that.data.excludedDirectories = encodeURIComponent(that.directoryNavigator.getExcludedDirectories());\n that.data.extraDirectories = encodeURIComponent(that.directoryNavigator.getExtraDirectoriesRootOnly());\n }\n\n that.data.excludeGlobRules = '';\n that.data.excludeSizeRules = '';\n if (that.cloneExcludeFilters instanceof WpstgExcludeFilters) {\n const rules = that.cloneExcludeFilters.getExcludeFilters();\n that.data.excludeGlobRules = encodeURIComponent(rules.globs);\n that.data.excludeSizeRules = encodeURIComponent(rules.sizes);\n }\n\n that.data.includedTables = '';\n that.data.excludedTables = '';\n that.data.allTablesExcluded = false;\n\n if (that.tableSelector !== null) {\n that.data.includedTables = that.tableSelector.getIncludedTables();\n that.data.excludedTables = that.tableSelector.getExcludedTables();\n that.data.selectedTablesWithoutPrefix = that.tableSelector.getSelectedTablesWithoutPrefix();\n }\n\n if (that.data.includedTables.length > that.data.excludedTables.length) {\n that.data.includedTables = '';\n } else if (that.data.excludedTables.length > that.data.includedTables.length) {\n that.data.excludedTables = '';\n that.data.allTablesExcluded = that.data.includedTables === '';\n }\n\n that.data.databaseServer = $('#wpstg_db_server').val();\n that.data.databaseUser = $('#wpstg_db_username').val();\n that.data.databasePassword = $('#wpstg_db_password').val();\n that.data.databaseDatabase = $('#wpstg_db_database').val();\n that.data.databasePrefix = $('#wpstg_db_prefix').val();\n const cloneDir = $('#wpstg_clone_dir').val();\n that.data.cloneDir = encodeURIComponent($.trim(cloneDir));\n that.data.cloneHostname = $('#wpstg_clone_hostname').val();\n that.data.emailsAllowed = $('#wpstg_allow_emails').is(':checked');\n that.data.networkClone = $('#wpstg_network_clone').is(':checked');\n that.data.uploadsSymlinked = $('#wpstg_symlink_upload').is(':checked');\n that.data.cleanPluginsThemes = $('#wpstg-clean-plugins-themes').is(':checked');\n that.data.cleanUploadsDir = $('#wpstg-clean-uploads').is(':checked');\n };\n\n var proceedCloning = function($this, workflow) {\n // Add loading overlay\n workflow.addClass('loading');\n\n // Prepare data\n that.data = {\n action: $this.data('action'),\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n };\n\n // Cloning data\n getCloningData();\n\n sendCloningAjax(workflow);\n };\n\n var sendCloningAjax = function(workflow) {\n // Send ajax request\n ajax(\n that.data,\n function(response) {\n // Undefined Error\n if (false === response) {\n showError(\n 'Something went wrong!<br/><br/> Go to WP Staging > Settings and lower \\'File Copy Limit\\' and \\'DB Query Limit\\'. Also set \\'CPU Load Priority to low \\'' +\n 'and try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n }\n\n\n if (response.length < 1) {\n showError(\n 'Something went wrong! No response. Go to WP Staging > Settings and lower \\'File Copy Limit\\' and \\'DB Query Limit\\'. Also set \\'CPU Load Priority to low \\'' +\n 'and try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n }\n\n const jsonResponse = tryParseJson(response);\n if (jsonResponse !== false && jsonResponse.success === false) {\n workflow.removeClass('loading');\n showErrorModal(jsonResponse);\n\n return;\n }\n\n // Styling of elements\n workflow.removeClass('loading').html(response);\n that.cloneExcludeFilters = null;\n if (that.data.action === 'wpstg_scanning') {\n that.areAllTablesChecked = true;\n that.directoryNavigator = new WpstgDirectoryNavigation('#wpstg-directories-listing', '#wpstg-workflow', wpstg, that.notyf);\n that.tableSelector = new WpstgTableSelection('#wpstg-scanning-db', '#wpstg-workflow', '#wpstg_network_clone', wpstg, that.notyf);\n that.switchStep(2);\n that.cloneExcludeFilters = new WpstgExcludeFilters();\n } else if (that.data.action === 'wpstg_cloning' || that.data.action === 'wpstg_update' || that.data.action === 'wpstg_reset') {\n that.switchStep(3);\n }\n\n // Start cloning\n that.startCloning();\n },\n 'HTML',\n );\n };\n\n var showErrorModal = function(response) {\n const errorModal = new WpstgModal('wpstg_modal_error', wpstg);\n errorModal.show(Object.assign({\n title: 'Error',\n icon: 'error',\n html: wpstg.i18n['somethingWentWrong'] + (response.message !== undefined ? ('<br/>' + response.message) : ''),\n width: '500px',\n confirmButtonText: 'Ok',\n showCancelButton: false,\n customClass: {\n confirmButton: 'wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn',\n cancelButton: 'wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn',\n actions: 'wpstg--modal--actions',\n popup: 'wpstg-swal-popup centered-modal',\n },\n buttonsStyling: false,\n reverseButtons: true,\n }, response.swalOptions), {\n type: response.type,\n });\n };\n\n const tryParseJson = function(json) {\n // early bail if not string\n if (!json) {\n return false;\n }\n\n try {\n const object = JSON.parse(json);\n if (object && typeof object === 'object') {\n return object;\n }\n } catch (e) {\n // do nothing on catch\n }\n\n return false;\n };\n\n var resetClone = function(clone, excludeOptions) {\n that.data = {\n action: 'wpstg_reset',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n cloneID: clone,\n };\n\n that.data = {...that.data, ...excludeOptions};\n\n const $workFlow = cache.get('#wpstg-workflow');\n sendCloningAjax($workFlow);\n };\n\n /**\n * Loads Overview (first step) of Staging Job\n */\n var loadOverview = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n\n $workFlow.addClass('loading');\n\n ajax(\n {\n action: 'wpstg_overview',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response.length < 1) {\n showError(\n 'Something went wrong! No response. Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report.',\n );\n }\n\n const $currentStep = cache.get('.wpstg-current-step');\n\n // Styling of elements\n $workFlow.removeClass('loading').html(response);\n },\n 'HTML',\n );\n\n that.switchStep(1);\n cache.get('.wpstg-step3-cloning').show();\n cache.get('.wpstg-step3-pushing').hide();\n };\n\n /**\n * Load Tabs\n */\n const tabs = function() {\n cache.get('#wpstg-workflow').on('click', '.wpstg-tab-header', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n const $section = cache.get($this.data('id'));\n\n $this.toggleClass('expand');\n\n $section.slideToggle();\n\n const tabTriangle = $this.find('.wpstg-tab-triangle');\n\n if ($this.hasClass('expand')) {\n tabTriangle.removeClass('wpstg-no-icon');\n tabTriangle.text('');\n tabTriangle.addClass('wpstg-rotate-90');\n } else {\n tabTriangle.removeClass('wpstg-rotate-90');\n }\n });\n };\n\n /**\n * Delete Clone\n * @param {String} clone\n */\n var deleteClone = function(clone) {\n const deleteDir = $('#deleteDirectory:checked').data('deletepath');\n\n ajax(\n {\n action: 'wpstg_delete_clone',\n clone: clone,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n excludedTables: getExcludedTables(),\n deleteDir: deleteDir,\n },\n function(response) {\n if (response) {\n showAjaxFatalError(response);\n\n // Finished\n if ('undefined' !== typeof response.delete && (response.delete === 'finished' || response.delete === 'unfinished')) {\n cache.get('#wpstg-removing-clone').removeClass('loading').html('');\n\n if (response.delete === 'finished' && response.error === undefined) {\n $('.wpstg-clone[data-clone-id=\"' + clone + '\"]').remove();\n }\n\n // No staging site message is also of type/class .wpstg-class but hidden\n // We have just excluded that from search when counting no of clones\n if ($('#wpstg-existing-clones .wpstg-clone').length < 1) {\n cache.get('#wpstg-existing-clones').find('h3').text('');\n cache.get('#wpstg-no-staging-site-results').show();\n }\n\n cache.get('.wpstg-loader').hide();\n return;\n }\n }\n // continue\n if (true !== response) {\n deleteClone(clone);\n return;\n }\n },\n );\n };\n\n /**\n * Cancel Cloning Process\n */\n var cancelCloning = function() {\n that.timer('stop');\n\n\n if (true === that.isFinished) {\n return true;\n }\n\n ajax(\n {\n action: 'wpstg_cancel_clone',\n clone: that.data.cloneID,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response && 'undefined' !== typeof (response.delete) && response.delete === 'finished') {\n cache.get('.wpstg-loader').hide();\n // Load overview\n loadOverview();\n return;\n }\n\n if (true !== response) {\n // continue\n cancelCloning();\n return;\n }\n\n // Load overview\n loadOverview();\n },\n );\n };\n\n /**\n * Cancel Cloning Process\n */\n var cancelCloningUpdate = function() {\n if (true === that.isFinished) {\n return true;\n }\n\n ajax(\n {\n action: 'wpstg_cancel_update',\n clone: that.data.cloneID,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response && 'undefined' !== typeof (response.delete) && response.delete === 'finished') {\n // Load overview\n loadOverview();\n return;\n }\n\n if (true !== response) {\n // continue\n cancelCloningUpdate();\n return;\n }\n\n // Load overview\n loadOverview();\n },\n );\n };\n\n /**\n * Cancel Cloning Process\n */\n var restart = function() {\n if (true === that.isFinished) {\n return true;\n }\n\n ajax(\n {\n action: 'wpstg_restart',\n // clone: that.data.cloneID,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response && 'undefined' !== typeof (response.delete) && response.delete === 'finished') {\n // Load overview\n loadOverview();\n return;\n }\n\n if (true !== response) {\n // continue\n cancelCloningUpdate();\n return;\n }\n\n // Load overview\n loadOverview();\n },\n );\n };\n\n /**\n * Scroll the window log to bottom\n * @return void\n */\n const logscroll = function() {\n const $div = cache.get('.wpstg-log-details');\n if ('undefined' !== typeof ($div[0])) {\n $div.scrollTop($div[0].scrollHeight);\n }\n };\n\n /**\n * Append the log to the logging window\n * @param string log\n * @return void\n */\n const getLogs = function(log) {\n if (log != null && 'undefined' !== typeof (log)) {\n if (log.constructor === Array) {\n $.each(log, function(index, value) {\n if (value === null) {\n return;\n }\n if (value.type === 'ERROR') {\n cache.get('.wpstg-log-details').append('<span class=\"wpstg--red\">[' + value.type + ']</span>-' + '[' + value.date + '] ' + value.message + '</br>');\n } else {\n cache.get('.wpstg-log-details').append('[' + value.type + ']-' + '[' + value.date + '] ' + value.message + '</br>');\n }\n });\n } else {\n cache.get('.wpstg-log-details').append('[' + log.type + ']-' + '[' + log.date + '] ' + log.message + '</br>');\n }\n }\n logscroll();\n };\n\n /**\n * Check diskspace\n * @return string json\n */\n var checkDiskSpace = function() {\n cache.get('#wpstg-check-space').on('click', function(e) {\n cache.get('.wpstg-loader').show();\n const excludedDirectories = encodeURIComponent(that.directoryNavigator.getExcludedDirectories());\n const extraDirectories = encodeURIComponent(that.directoryNavigator.getExtraDirectoriesRootOnly());\n\n ajax(\n {\n action: 'wpstg_check_disk_space',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n excludedDirectories: excludedDirectories,\n extraDirectories: extraDirectories,\n },\n function(response) {\n if (false === response) {\n cache.get('#wpstg-clone-id-error').text('Can not detect required disk space').show();\n cache.get('.wpstg-loader').hide();\n return;\n }\n\n // Show required disk space\n cache.get('#wpstg-clone-id-error').html(\n 'Estimated necessary disk space: ' + response.requiredSpace +\n (response.errorMessage !== null ? ('<br>' + response.errorMessage) : '') +\n '<br> <span style=\"color:#444;\">Before you proceed ensure your account has enough free disk space to hold the entire instance of the production site. You can check the available space from your hosting account (cPanel or similar).</span>').show();\n cache.get('.wpstg-loader').hide();\n },\n 'json',\n false,\n );\n });\n };\n\n /**\n * Show or hide animated loading icon\n * @param isLoading bool\n */\n const isLoading = function(isLoading) {\n if (!isLoading || isLoading === false) {\n cache.get('.wpstg-loader').hide();\n } else {\n cache.get('.wpstg-loader').show();\n }\n };\n\n /**\n * Count up processing execution time\n * @param string status\n * @return html\n */\n that.timer = function(status) {\n if (status === 'stop') {\n const time = that.time;\n that.time = 1;\n clearInterval(that.executionTime);\n return that.convertSeconds(time);\n }\n\n\n that.executionTime = setInterval(function() {\n if (null !== document.getElementById('wpstg-processing-timer')) {\n document.getElementById('wpstg-processing-timer').innerHTML = 'Elapsed Time: ' + that.convertSeconds(that.time);\n }\n that.time++;\n if (status === 'stop') {\n that.time = 1;\n clearInterval(that.executionTime);\n }\n }, 1000);\n };\n\n /**\n * Convert seconds to hourly format\n * @param int seconds\n * @return string\n */\n that.convertSeconds = function(seconds) {\n const date = new Date(null);\n date.setSeconds(seconds); // specify value for SECONDS here\n return date.toISOString().substr(11, 8);\n };\n\n /**\n * Start Cloning Process\n * @type {Function}\n */\n that.startCloning = (function() {\n resetErrors();\n\n // Register function for checking disk space\n checkDiskSpace();\n\n if ('wpstg_cloning' !== that.data.action && 'wpstg_update' !== that.data.action && 'wpstg_reset' !== that.data.action) {\n return;\n }\n\n that.isCancelled = false;\n\n // Start the process\n start();\n\n // Functions\n // Start\n function start() {\n cache.get('.wpstg-loader').show();\n cache.get('#wpstg-cancel-cloning').text('Cancel');\n cache.get('#wpstg-resume-cloning').hide();\n cache.get('#wpstg-error-details').hide();\n\n\n // Clone Database\n setTimeout(function() {\n // cloneDatabase();\n window.addEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n processing();\n }, wpstg.delayReq);\n\n that.timer('start');\n }\n\n\n /**\n * Start ajax processing\n * @return string\n */\n var processing = function() {\n if (true === that.isCancelled) {\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return false;\n }\n\n isLoading(true);\n\n let excludedDirectories = '';\n let extraDirectories = '';\n if (that.directoryNavigator !== null) {\n excludedDirectories = that.directoryNavigator.getExcludedDirectories();\n extraDirectories = that.directoryNavigator.getExtraDirectoriesRootOnly();\n }\n\n // Show logging window\n cache.get('.wpstg-log-details').show();\n\n WPStaging.ajax(\n {\n action: 'wpstg_processing',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n excludedTables: getExcludedTables(),\n excludedDirectories: encodeURIComponent(excludedDirectories),\n extraDirectories: encodeURIComponent(extraDirectories),\n },\n function(response) {\n showAjaxFatalError(response);\n\n // Add Log messages\n if ('undefined' !== typeof (response.last_msg) && response.last_msg) {\n getLogs(response.last_msg);\n }\n // Continue processing\n if (false === response.status) {\n progressBar(response);\n\n setTimeout(function() {\n cache.get('.wpstg-loader').show();\n processing();\n }, wpstg.delayReq);\n } else if (true === response.status && 'finished' !== response.status) {\n cache.get('#wpstg-error-details').hide();\n cache.get('#wpstg-error-wrapper').hide();\n progressBar(response, true);\n processing();\n } else if ('finished' === response.status || ('undefined' !== typeof (response.job_done) && response.job_done)) {\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n finish(response);\n }\n ;\n },\n 'json',\n false,\n );\n };\n\n // Finish\n function finish(response) {\n if (true === that.getLogs) {\n getLogs();\n }\n\n progressBar(response);\n\n // Add Log\n if ('undefined' !== typeof (response.last_msg)) {\n getLogs(response.last_msg);\n }\n\n cache.get('.wpstg-loader').hide();\n cache.get('#wpstg-processing-header').html('Processing Complete');\n $('#wpstg-processing-status').text('Succesfully finished');\n\n cache.get('#wpstg_staging_name').html(that.data.cloneID);\n cache.get('#wpstg-finished-result').show();\n cache.get('#wpstg-cancel-cloning').hide();\n cache.get('#wpstg-resume-cloning').hide();\n cache.get('#wpstg-cancel-cloning-update').prop('disabled', true);\n\n const $link1 = cache.get('#wpstg-clone-url-1');\n const $link = cache.get('#wpstg-clone-url');\n $link1.attr('href', response.url);\n $link1.html(response.url);\n $link.attr('href', response.url);\n\n cache.get('#wpstg-remove-clone').data('clone', that.data.cloneID);\n\n // Finished\n that.isFinished = true;\n that.timer('stop');\n\n\n cache.get('.wpstg-loader').hide();\n cache.get('#wpstg-processing-header').html('Processing Complete');\n\n // show alert\n let msg = wpstg.i18n.cloneResetComplete;\n if (that.data.action === 'wpstg_update') {\n msg = wpstg.i18n.cloneUpdateComplete;\n }\n\n if (that.data.action === 'wpstg_update' || that.data.action === 'wpstg_reset') {\n cache.get('#wpstg-cancel-cloning-update').hide();\n cache.get('.wpstg-prev-step-link').show();\n\n WPStagingCommon.getSwalModal(true, {\n confirmButton: 'wpstg--btn--confirm wpstg-green-button wpstg-button wpstg-link-btn wpstg-100-width',\n }).fire({\n title: '',\n icon: 'success',\n html: msg,\n width: '500px',\n focusConfirm: true,\n });\n }\n\n return false;\n }\n\n /**\n * Add percentage progress bar\n * @param object response\n * @return {Boolean}\n */\n var progressBar = function(response, restart) {\n if ('undefined' === typeof (response.percentage)) {\n return false;\n }\n\n if (response.job === 'database') {\n cache.get('#wpstg-progress-db').width(response.percentage * 0.2 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 1 of 4 Cloning Database Tables...');\n }\n\n if (response.job === 'SearchReplace') {\n cache.get('#wpstg-progress-db').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-db').html('1. Database');\n // Assumption: All previous steps are done.\n // This avoids bugs where some steps are skipped and the progress bar is incomplete as a result\n cache.get('#wpstg-progress-db').width('20%');\n\n cache.get('#wpstg-progress-sr').width(response.percentage * 0.1 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 2 of 4 Preparing Database Data...');\n }\n\n if (response.job === 'directories') {\n cache.get('#wpstg-progress-sr').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-sr').html('2. Data');\n cache.get('#wpstg-progress-sr').width('10%');\n\n cache.get('#wpstg-progress-dirs').width(response.percentage * 0.1 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 3 of 4 Getting files...');\n }\n if (response.job === 'files') {\n cache.get('#wpstg-progress-dirs').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-dirs').html('3. Files');\n cache.get('#wpstg-progress-dirs').width('10%');\n\n cache.get('#wpstg-progress-files').width(response.percentage * 0.6 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 4 of 4 Copy files...');\n }\n if (response.job === 'finish') {\n cache.get('#wpstg-progress-files').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-files').html('4. Copy Files');\n cache.get('#wpstg-progress-files').width('60%');\n\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Cloning Process Finished');\n }\n };\n });\n\n that.switchStep = function(step) {\n cache.get('.wpstg-current-step')\n .removeClass('wpstg-current-step');\n cache.get('.wpstg-step' + step)\n .addClass('wpstg-current-step');\n };\n\n /**\n * Initiation\n * @type {Function}\n */\n that.init = (function() {\n loadOverview();\n elements();\n stepButtons();\n tabs();\n WPStagingCommon.listenTooltip();\n new WpstgMainMenu();\n new WpstgCloneStaging();\n new WpstgCloningAdvanceSettings();\n that.notyf = new Notyf({\n duration: 10000,\n position: {\n x: 'center',\n y: 'bottom',\n },\n dismissible: true,\n types: [\n {\n type: 'warning',\n background: 'orange',\n icon: false,\n },\n ],\n });\n });\n\n /**\n * Ajax call\n * @type {ajax}\n */\n that.ajax = ajax;\n that.showError = showError;\n that.getLogs = getLogs;\n that.loadOverview = loadOverview;\n\n return that;\n})(jQuery);\n\njQuery(document).ready(function() {\n WPStaging.init();\n // This is necessary to make WPStaging var accessibile in WP Staging PRO js script\n window.WPStaging = WPStaging;\n});\n\n/**\n * Report Issue modal\n */\njQuery(document).ready(function($) {\n $('body').on('click', '#wpstg-report-issue-button', function(e) {\n console.log('REPORT');\n $('.wpstg--tab--active .wpstg-report-issue-form').toggleClass('wpstg-report-show');\n e.preventDefault();\n });\n\n $('body').on('click', '#wpstg-backups-report-issue-button', function(e) {\n $('.wpstg--tab--active .wpstg-report-issue-form').toggleClass('wpstg-report-show');\n e.preventDefault();\n });\n\n $('body').on('click', '#wpstg-report-cancel', function(e) {\n $('.wpstg--tab--active .wpstg-report-issue-form').removeClass('wpstg-report-show');\n e.preventDefault();\n });\n\n $('body').on('click', '.wpstg--tab--active #wpstg-report-submit', function(e) {\n const self = $(this);\n sendIssueReport(self, 'false');\n e.preventDefault();\n });\n\n /*\n * Close Success Modal\n */\n\n $('body').on('click', '#wpstg-success-button', function(e) {\n e.preventDefault();\n $('.wpstg-report-issue-form').removeClass('wpstg-report-show');\n });\n\n function sendIssueReport(button, forceSend = 'false') {\n const spinner = button.next();\n const email = $('.wpstg--tab--active .wpstg-report-email').val();\n const hosting_provider = $('.wpstg--tab--active .wpstg-report-hosting-provider').val();\n const message = $('.wpstg--tab--active .wpstg-report-description').val();\n const syslog = $('.wpstg--tab--active .wpstg-report-syslog').is(':checked');\n const terms = $('.wpstg--tab--active .wpstg-report-terms').is(':checked');\n\n button.attr('disabled', true);\n spinner.css('visibility', 'visible');\n\n $.ajax({\n url: ajaxurl,\n type: 'POST',\n dataType: 'json',\n async: true,\n data: {\n 'action': 'wpstg_send_report',\n 'accessToken': wpstg.accessToken,\n 'nonce': wpstg.nonce,\n 'wpstg_email': email,\n 'wpstg_provider': hosting_provider,\n 'wpstg_message': message,\n 'wpstg_syslog': +syslog,\n 'wpstg_terms': +terms,\n 'wpstg_force_send': forceSend,\n },\n }).done(function(data) {\n button.attr('disabled', false);\n spinner.css('visibility', 'hidden');\n\n if (data.errors.length > 0) {\n $('.wpstg--tab--active .wpstg-report-issue-form .wpstg-message').remove();\n\n let errorMessage = $('<div />').addClass('wpstg-message wpstg-error-message');\n $.each(data.errors, function(key, value) {\n if (value.status === 'already_submitted') {\n errorMessage = '';\n // TODO: remove default custom classes\n WPStagingCommon.getSwalModal(true, {\n container: 'wpstg-issue-resubmit-confirmation',\n }).fire({\n title: '',\n icon: 'warning',\n html: value.message,\n showCancelButton: true,\n focusConfirm: false,\n confirmButtonText: 'Yes',\n cancelButtonText: 'No',\n }).then((result) => {\n if (result.isConfirmed) {\n sendIssueReport(button, 'true');\n }\n });\n } else {\n errorMessage.append('<p>' + value + '</p>');\n }\n });\n\n $('.wpstg--tab--active .wpstg-report-issue-form').prepend(errorMessage);\n } else {\n const successMessage = $('<div />').addClass('wpstg-message wpstg-success-message');\n successMessage.append('<p>Thanks for submitting your request! You should receive an auto reply mail with your ticket ID immediately for confirmation!<br><br>If you do not get that mail please contact us directly at <strong>support@wp-staging.com</strong></p>');\n\n $('.wpstg--tab--active .wpstg-report-issue-form').html(successMessage);\n $('.wpstg--tab--active .wpstg-success-message').append('<div style=\"float:right;margin-top:10px;\"><a id=\"wpstg-success-button\" href=\"#\" class=\"wpstg--red\">[X] CLOSE</a></div>');\n\n // Hide message\n setTimeout(function() {\n $('.wpstg--tab--active .wpstg-report-issue-form').removeClass('wpstg-report-active');\n }, 2000);\n }\n });\n }\n\n // Open/close actions drop down menu\n $(document).on('click', '.wpstg-dropdown>.wpstg-dropdown-toggler', function(e) {\n e.preventDefault();\n $(e.target).next('.wpstg-dropdown-menu').toggleClass('shown');\n\n $(e.target).find('.wpstg-caret').toggleClass('wpstg-caret-up');\n });\n\n $(document).on('click', '.wpstg-caret', function(e) {\n e.preventDefault();\n\n const toggler = $(e.target).closest('.wpstg-dropdown-toggler');\n\n if (toggler) {\n toggler.trigger('click');\n }\n });\n\n // Close action drop down menu if clicked anywhere outside\n document.addEventListener('click', function(event) {\n const isClickInside = event.target.closest('.wpstg-dropdown-toggler');\n if (!isClickInside) {\n const dropDown = document.getElementsByClassName('wpstg-dropdown-menu');\n for (let i = 0; i < dropDown.length; i++) {\n dropDown[i].classList.remove('shown');\n }\n $('.wpstg-caret').removeClass('wpstg-caret-up');\n }\n });\n\n // \"Event info\" for backup errors\n window.addEventListener('finishedProcessWithError', function(customEvent) {\n $.ajax({\n url: ajaxurl,\n type: 'POST',\n dataType: 'json',\n data: {\n 'action': 'wpstg_job_error',\n 'accessToken': wpstg.accessToken,\n 'nonce': wpstg.nonce,\n 'error_message': customEvent.detail.error,\n 'job_id': WPStagingCommon.getJobId(),\n },\n });\n });\n});\n"],"names":["polyfillClosest","Element","prototype","closest","matches","msMatchesSelector","webkitMatchesSelector","s","el","call","parentElement","parentNode","nodeType","element","selector","qs","document","querySelector","all","querySelectorAll","addEvent","parent","evt","handler","addEventListener","event","target","slideDown","duration","style","display","overflow","height","offsetHeight","transitionProperty","transitionDuration","setTimeout","window","removeProperty","slideUp","getNextSibling","sibling","nextElementSibling","getParents","result","push","handleDisplayDependencies","id","containerSelector","hiddenClass","elementType","getAttribute","container","showIfChecked","showIfUnchecked","checked","length","classList","remove","add","handleToggleElement","elements","toggle","handleCopyPaste","navigator","clipboard","writeText","value","handleCopyToClipboard","WpstgCloneStaging","pageWrapperId","wpstgObject","wpstg","pageWrapper","dom","enableButtonId","enableAction","notyf","Notyf","position","x","y","dismissible","types","type","background","icon","init","addEvents","sendRequest","action","fetch","ajaxUrl","method","credentials","body","URLSearchParams","accessToken","nonce","headers","then","response","ok","json","Promise","reject","data","success","location","reload","message","error","i18n","console","warn","WpstgDirectoryNavigation","directoryListingSelector","workflowSelector","directoryListingContainer","workflow","dirCheckboxSelector","dirExpandSelector","unselectAllDirsSelector","selectDefaultDirsSelector","fetchChildrenAction","currentCheckboxElement","currentParentDiv","currentLoader","existingExcludes","excludedDirectories","isDefaultSelected","log","preventDefault","getExcludedDirectories","toggleDirExpand","unselectAll","selectDefault","toggleDirectoryNavigation","updateDirectorySelection","parseExcludes","previousSibling","dirPath","isChecked","forceDefault","setAttribute","dirContainer","createElement","innerHTML","JSON","parse","directoryListing","appendChild","alert","forEach","isParentExcluded","exclude","isScanned","join","settings","directorySeparator","path","isParentAlreadyExcluded","dir","startsWith","getExtraDirectoriesRootOnly","extraDirectories","extraDirectoriesTextArea","extraCustomDirectories","split","concat","map","substr","slice","scanned","cbElement","subDirectories","parElem","i","children","WpstgTableSelection","databaseTableSectionSelector","networkCloneSelector","databaseTableSection","networkCloneCheckbox","isAllTablesChecked","isMultisite","isNetworkClone","setNetworkClone","selectDefaultTables","toggleTableSelection","getRegexPattern","pattern","tblprefix","isNetwork","undefined","options","regexPattern","option","name","match","selected","getSelectedTablesWithoutPrefix","selectedTablesWithoutPrefix","getIncludedTables","includedTables","getExcludedTables","excludedTables","WpstgExcludeFilters","excludeFilterContainerSelector","excludeContainer","excludeTableBody","addFileSizeExclude","addFileExtExclude","addFileNameExclude","addDirNameExclude","clearExcludes","removeExclude","addExcludeRuleRow","templateName","excludeRowTemplate","clone","content","cloneNode","excludeRow","e","removeChild","trim","getExcludeFilters","globExcludes","sizeExcludes","sizeCompares","sizeSizes","sizeByte","Object","entries","key","sizeInput","extensionInputs","ext","cleanStringForGlob","fileNamesPos","fileNames","fileInput","fileName","cleanStringForGlobExactMatches","dirNamesPos","dirNames","dirInput","dirName","filter","onlyUnique","index","self","indexOf","replace","WpstgModal","confirmAction","show","swalOptions","additionalParams","callback","wpstgSwal","fire","triggerConfirmAction","assign","onOver","onOut","pX","pY","mouseOver","focused","h","state","timer","sensitivity","interval","timeout","handleFocus","delay","clearTimeout","tracker","clientX","clientY","compare","Math","abs","opt","focusOptionChanged","addFocus","removeFocus","dispatchOver","removeEventListener","onMouseOver","dispatchOut","onMouseOut","dispatchFocus","onFocus","dispatchBlur","onBlur","$","WPStagingCommon","continueErrorHandle","cache","get","inArray","refresh","setJobId","jobId","localStorage","setItem","getJobId","getItem","listenTooltip","wpstgHoverIntent","visibility","isEmpty","obj","prop","hasOwnProperty","getSwalModal","isContentCentered","customClasses","defaultCustomClasses","confirmButton","cancelButton","actions","popup","customClass","buttonsStyling","reverseButtons","showClass","mixin","showSuccessModal","htmlContent","showConfirmButton","showCancelButton","cancelButtonText","title","html","showWarningModal","showErrorModal","getSwalContainer","getContainer","closeSwalModal","close","getDataFromWordPressResponse","Error","Array","shift","isLoading","hide","slugify","url","toString","toLowerCase","normalize","showAjaxFatalError","prependMessage","appendMessage","showError","WPStaging","warnIfClosingDuringProcess","handleFetchErrors","status","statusText","css","text","removeClass","resetErrors","ajax","dataType","showErrors","tryCount","incrementRatio","errorCallback","retryLimit","retryTimeout","parseInt","isNaN","ajaxurl","Date","now","xhr","textStatus","errorThrown","errorCode","statusCode","jQuery","WpstgResetModal","cloneID","fetchExcludeSettingsAction","modalErrorAction","resetButtonClass","resetModalContainerClass","resetTabSelector","directoryNavigator","excludeFilters","tableSelector","resetModalContainer","toggleContent","contentId","tabTriangle","isCollapsed","contains","transform","showModal","swalPromise","loadModal","fetchCloneExcludes","getAjaxLoader","width","focusConfirm","confirmButtonText","resetClone","job","errorModal","modal","renderError","getDirectoryNavigator","getTableSelector","wpstgIcon","WpstgCloningAdvanceSettings","baseContainerSelector","baseContainer","checkBoxSettingTogglerSelector","toggleSettings","WpstgMainMenu","activeTabClass","mainMenu","tabHeader","$this","targetElements","menuItems","contents","menuItem","targetElement","dispatchEvent","Event","that","isCancelled","isFinished","getLogs","time","executionTime","progressBar","cloneExcludeFilters","areAllTablesChecked","ajaxSpinner","returnValue","$workFlow","urlSpinner","devicePixelRatio","on","getElementById","clearInterval","removeAttr","cloneDirectoryName","directoryName","addClass","slug","substring","$targetDir","$targetUri","uri","attr","val","validateTargetHost","after","cloneActions","the_domain","reg","test","confirm","append","cancelCloning","startCloning","cancelCloningUpdate","restart","$existingClones","animate","scrollTop","offset","top","deleteClone","jsonResponse","tryParseJson","checkDiskSpace","switchStep","resetModal","promise","dirNavigator","exclFilters","allTablesExcluded","excludeSizeRules","encodeURIComponent","sizes","excludeGlobRules","globs","stepButtons","focus","onlyUpdateMessage","is","verifyExternalDatabase","proceedCloning","loadOverview","each","databaseUser","databasePassword","databaseServer","databaseDatabase","error_type","render","checks","production","staging","getCloningData","getTime","cloneName","rules","databasePrefix","cloneDir","cloneHostname","emailsAllowed","networkClone","uploadsSymlinked","cleanPluginsThemes","cleanUploadsDir","sendCloningAjax","object","excludeOptions","tabs","$section","toggleClass","slideToggle","find","hasClass","deleteDir","logscroll","$div","scrollHeight","constructor","date","requiredSpace","errorMessage","convertSeconds","setInterval","seconds","setSeconds","toISOString","start","processing","delayReq","last_msg","job_done","finish","$link1","$link","msg","cloneResetComplete","cloneUpdateComplete","percentage","toFixed","step","ready","sendIssueReport","button","forceSend","spinner","next","email","hosting_provider","syslog","terms","async","done","errors","isConfirmed","prepend","successMessage","toggler","trigger","isClickInside","dropDown","getElementsByClassName","customEvent","detail"],"mappings":"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"}
|
assets/js/dist/wpstg-admin.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
!function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&(e[n]=s[n])}return e}).apply(this,arguments)}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var s=0,n=new Array(t);s<t;s++)n[s]=e[s];return n}function s(e,s){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,s){if(e){if("string"==typeof e)return t(e,s);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(e,s):void 0}}(e))||s&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}var n=(Element.prototype.closest&&(Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest=function(e){var t=this;do{if(Element.prototype.matches.call(t,e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}),function(e,t){return e instanceof Element?e.closest(t):null});function r(e){return document.querySelector(e)}function o(e){return document.querySelectorAll(e)}function i(e,t,s,n){!e instanceof Element||e.addEventListener(t,(function(e){e.target.matches(s+", "+s+" *")&&n(e.target.closest(s),e)}),!1)}function a(e,t){void 0===t&&(t=400),e.style.display="block",e.style.overflow="hidden";var s=e.offsetHeight;e.style.height="0px",e.style.transitionProperty="height",e.style.transitionDuration=t+"ms",setTimeout((function(){e.style.height=s+"px",window.setTimeout((function(){e.style.removeProperty("height"),e.style.removeProperty("overflow"),e.style.removeProperty("transition-duration"),e.style.removeProperty("transition-property")}),t)}),0)}function l(e,t){void 0===t&&(t=400),e.style.display="block",e.style.overflow="hidden";var s=e.offsetHeight;e.style.height=s+"px",e.style.transitionProperty="height",e.style.transitionDuration=t+"ms",setTimeout((function(){e.style.height="0px",window.setTimeout((function(){e.style.display="none",e.style.removeProperty("height"),e.style.removeProperty("overflow"),e.style.removeProperty("transition-duration"),e.style.removeProperty("transition-property")}),t)}),0)}function c(e){if(!(!e instanceof Element)&&e.id){var t="hidden";switch(e.getAttribute("type")){case"checkbox":var r=n(e,".wpstg-container");if(null===r)return;var o=r.querySelectorAll('[data-show-if-checked="'+e.id+'"]'),i=r.querySelectorAll('[data-show-if-unchecked="'+e.id+'"]'),a=e.checked;if(o.length)for(var l,c=s(o);!(l=c()).done;){var g=l.value;a?g.classList.remove(t):g.classList.add(t)}if(i.length)for(var d,p=s(i);!(d=p()).done;){var u=d.value;a?u.classList.add(t):u.classList.remove(t)}return;default:return}}}function g(e){if(!(!e instanceof Element)&&e.getAttribute("data-wpstg-target")){var t=n(e,".wpstg_admin");if(null!==t){var r=t.querySelectorAll(e.getAttribute("data-wpstg-target"));if(r.length)for(var o,i=s(r);!(o=i()).done;){o.value.classList.toggle("hidden")}}}}function d(e){if(!(!e instanceof Element)&&e.getAttribute("data-wpstg-target")&&e.getAttribute("data-wpstg-copy")){var t=n(e,".wpstg_admin");if(null!==t){navigator.clipboard.writeText(e.getAttribute("data-wpstg-copy"));var r=t.querySelectorAll(e.getAttribute("data-wpstg-target"));if(r.length)for(var o,i=s(r);!(o=i()).done;){o.value.value=e.getAttribute("data-wpstg-copy","")}}}}function p(e){if(!(!e instanceof Element)&&e.getAttribute("data-wpstg-source")){var t=n(e,".wpstg_admin");if(null!==t){var s=t.querySelector(e.getAttribute("data-wpstg-source"));s&&navigator.clipboard.writeText(s.value)}}}var u=function(){function e(e,t){void 0===e&&(e="#wpstg-clonepage-wrapper"),void 0===t&&(t=wpstg),this.pageWrapper=r(e),this.wpstgObject=t,this.enableButtonId="#wpstg-enable-staging-cloning",this.enableAction="wpstg_enable_staging_cloning",this.notyf=new Notyf({duration:1e4,position:{x:"center",y:"bottom"},dismissible:!0,types:[{type:"warning",background:"orange",icon:!1}]}),this.init()}var t=e.prototype;return t.addEvents=function(){var e=this;null!==this.pageWrapper&&i(this.pageWrapper,"click",this.enableButtonId,(function(){e.sendRequest(e.enableAction)}))},t.init=function(){this.addEvents()},t.sendRequest=function(e){var t=this;fetch(this.wpstgObject.ajaxUrl,{method:"POST",credentials:"same-origin",body:new URLSearchParams({action:e,accessToken:this.wpstgObject.accessToken,nonce:this.wpstgObject.nonce}),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((function(e){return e.ok?e.json():Promise.reject(e)})).then((function(e){void 0!==e.success&&e.success?location.reload():void 0===e.message?t.notyf.error(t.wpstgObject.i18n.somethingWentWrong):t.notyf.error(e.message)})).catch((function(e){console.warn(t.wpstgObject.i18n.somethingWentWrong,e)}))},e}(),w=function(){function e(e,t,s,n){void 0===e&&(e="#wpstg-directories-listing"),void 0===t&&(t="#wpstg-workflow"),void 0===s&&(s=wpstg),void 0===n&&(n=null),this.directoryListingContainer=r(e),this.workflow=r(t),this.wpstgObject=s,this.dirCheckboxSelector=".wpstg-check-dir",this.dirExpandSelector=".wpstg-expand-dirs",this.unselectAllDirsSelector=".wpstg-unselect-dirs",this.selectDefaultDirsSelector=".wpstg-select-dirs-default",this.fetchChildrenAction="wpstg_fetch_dir_childrens",this.currentCheckboxElement=null,this.currentParentDiv=null,this.currentLoader=null,this.existingExcludes=[],this.excludedDirectories=[],this.isDefaultSelected=!1,this.notyf=n,this.init()}var t=e.prototype;return t.addEvents=function(){var e=this;null!==this.directoryListingContainer?(i(this.directoryListingContainer,"change",this.dirCheckboxSelector,(function(t,s){s.preventDefault(),console.log(e.getExcludedDirectories())})),i(this.directoryListingContainer,"click",this.dirExpandSelector,(function(t,s){s.preventDefault(),e.toggleDirExpand(t)&&e.sendRequest(e.fetchChildrenAction,t)})),i(this.directoryListingContainer,"click",this.unselectAllDirsSelector,(function(){e.unselectAll()})),i(this.directoryListingContainer,"click",this.selectDefaultDirsSelector,(function(){e.selectDefault()})),i(this.directoryListingContainer,"click",".wpstg-expand-dirs",(function(t,s){s.preventDefault(),e.toggleDirectoryNavigation(t)})),i(this.directoryListingContainer,"change","input.wpstg-check-dir",(function(t){e.updateDirectorySelection(t)}))):console.log("Error: directory navigation add events")},t.init=function(){this.addEvents(),this.parseExcludes()},t.toggleDirExpand=function(e){return this.currentParentDiv=e.parentElement,this.currentCheckboxElement=e.previousSibling,this.currentLoader=this.currentParentDiv.querySelector(".wpstg-is-dir-loading"),"false"!==this.currentCheckboxElement.getAttribute("data-navigateable","false")&&"false"===this.currentCheckboxElement.getAttribute("data-scanned","false")},t.sendRequest=function(e){var t=this;null!==this.currentLoader&&(this.currentLoader.style.display="inline-block"),fetch(this.wpstgObject.ajaxUrl,{method:"POST",credentials:"same-origin",body:new URLSearchParams({action:e,accessToken:this.wpstgObject.accessToken,nonce:this.wpstgObject.nonce,dirPath:this.currentCheckboxElement.value,isChecked:this.currentCheckboxElement.checked,forceDefault:this.isDefaultSelected}),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((function(e){return e.ok?e.json():Promise.reject(e)})).then((function(e){if(void 0!==e.success&&e.success){t.currentCheckboxElement.setAttribute("data-scanned",!0);var s=document.createElement("div");return s.classList.add("wpstg-dir"),s.classList.add("wpstg-subdir"),s.innerHTML=JSON.parse(e.directoryListing),t.currentParentDiv.appendChild(s),null!==t.currentLoader&&(t.currentLoader.style.display="none"),void a(s)}null!==t.notyf?t.notyf.error(t.wpstgObject.i18n.somethingWentWrong):alert("Error: "+t.wpstgObject.i18n.somethingWentWrong)})).catch((function(e){console.warn(t.wpstgObject.i18n.somethingWentWrong,e)}))},t.getExcludedDirectories=function(){var e=this;return this.excludedDirectories=[],this.directoryListingContainer.querySelectorAll(".wpstg-dir input:not(:checked)").forEach((function(t){e.isParentExcluded(t.value)||e.excludedDirectories.push(t.value)})),this.existingExcludes.forEach((function(t){e.isParentExcluded(t)||e.isScanned(t)||e.excludedDirectories.push(t)})),this.excludedDirectories.join(this.wpstgObject.settings.directorySeparator)},t.isParentExcluded=function(e){var t=!1;return this.excludedDirectories.forEach((function(s){e.startsWith(s+"/")&&(t=!0)})),t},t.getExtraDirectoriesRootOnly=function(){this.getExcludedDirectories();var e=[];this.directoryListingContainer.querySelectorAll(":not(.wpstg-subdir)>.wpstg-dir>input.wpstg-wp-non-core-dir:checked").forEach((function(t){e.push(t.value)}));var t=r("#wpstg_extraDirectories");if(null===t||""===t.value)return e.join(this.wpstgObject.settings.directorySeparator);var s=t.value.split(/\r?\n/);return e.concat(s).join(this.wpstgObject.settings.directorySeparator)},t.unselectAll=function(){this.directoryListingContainer.querySelectorAll(".wpstg-dir input").forEach((function(e){e.checked=!1}))},t.selectDefault=function(){this.unselectAll(),this.directoryListingContainer.querySelectorAll(".wpstg-dir input.wpstg-wp-core-dir").forEach((function(e){e.checked=!0})),this.directoryListingContainer.querySelectorAll(".wpstg-dir > .wpstg-wp-non-core-dir").forEach((function(e){e.parentElement.querySelectorAll("input.wpstg-wp-core-dir").forEach((function(e){e.checked=!1}))})),this.isDefaultSelected=!0},t.parseExcludes=function(){if(this.existingExcludes=this.directoryListingContainer.getAttribute("data-existing-excludes",[]),""!==this.existingExcludes)if(0!==this.existingExcludes.length){var e=this.existingExcludes.split(",");this.existingExcludes=e.map((function(e){return"/"===e.substr(0,1)?e.slice(1):e}))}else this.existingExcludes=[];else this.existingExcludes=[]},t.isScanned=function(e){var t=!1;return this.directoryListingContainer.querySelectorAll(".wpstg-dir>input").forEach((function(s){s.value==e&&(t=!0)})),t},t.toggleDirectoryNavigation=function(e){var t=e.previousSibling;if("false"!==t.getAttribute("data-navigateable","false")&&"false"!==t.getAttribute("data-scanned","false")){var s=function(e,t){for(var s=e.nextElementSibling;s;){if(s.matches(t))return s;s=s.nextElementSibling}}(e,".wpstg-subdir");"none"===s.style.display?a(s):l(s)}},t.updateDirectorySelection=function(e){var t=e.parentElement;e.checked?(function(e,t){for(var s=[],n=e&&e.parentElement;n;n=n.parentElement)n.matches(t)&&s.push(n);return s}(t,".wpstg-dir").forEach((function(e){for(var t=0;t<e.children.length;t++)e.children[t].matches(".wpstg-check-dir")&&(e.children[t].checked=!0)})),t.querySelectorAll(".wpstg-expand-dirs").forEach((function(e){e.classList.remove("disabled")})),t.querySelectorAll(".wpstg-subdir .wpstg-check-dir").forEach((function(e){e.checked=!0}))):(t.querySelectorAll(".wpstg-expand-dirs, .wpstg-check-subdirs").forEach((function(e){e.classList.add("disabled")})),t.querySelectorAll(".wpstg-dir .wpstg-check-dir").forEach((function(e){e.checked=!1})))},e}(),h=function(){function e(e,t,s,n){void 0===e&&(e="#wpstg-scanning-db"),void 0===t&&(t="#wpstg-workflow"),void 0===s&&(s="#wpstg_network_clone"),void 0===n&&(n=wpstg),this.databaseTableSection=r(e),this.workflow=r(t),this.networkCloneSelector=s,this.networkCloneCheckbox=r(s),this.wpstgObject=n,this.isAllTablesChecked=!0,this.isMultisite="1"===this.wpstgObject.isMultisite,this.isNetworkClone=!1,this.init()}var t=e.prototype;return t.setNetworkClone=function(e){this.isNetworkClone=e},t.addEvents=function(){var e=this;null!==this.workflow?(i(this.workflow,"change",this.networkCloneSelector,(function(){e.selectDefaultTables()})),i(this.workflow,"click",".wpstg-button-select",(function(t,s){s.preventDefault(),e.selectDefaultTables()})),i(this.workflow,"click",".wpstg-button-unselect",(function(t,s){s.preventDefault(),e.toggleTableSelection()}))):console.log("Error: database table section is null. Cannot register events")},t.init=function(){this.addEvents()},t.getRegexPattern=function(){var e="^"+this.wpstgObject.tblprefix,t=!1;return void 0!==this.networkCloneCheckbox&&null!==this.networkCloneCheckbox&&(t=this.networkCloneCheckbox.checked),this.isNetworkClone&&(t=!0),this.isMultisite&&!t&&(e+="([^0-9])_*"),e},t.selectDefaultTables=function(){var e=this.databaseTableSection.querySelectorAll("#wpstg_select_tables_cloning .wpstg-db-table"),t=this.getRegexPattern();e.forEach((function(e){e.getAttribute("name","").match(t)?e.selected=!0:e.selected=!1}))},t.toggleTableSelection=function(){!1===this.isAllTablesChecked?(this.databaseTableSection.querySelectorAll("#wpstg_select_tables_cloning .wpstg-db-table").forEach((function(e){e.selected=!0})),this.databaseTableSection.querySelector(".wpstg-button-unselect").innerHTML="Unselect All",this.isAllTablesChecked=!0):(this.databaseTableSection.querySelectorAll("#wpstg_select_tables_cloning .wpstg-db-table").forEach((function(e){e.selected=!1})),this.databaseTableSection.querySelector(".wpstg-button-unselect").innerHTML="Select All",this.isAllTablesChecked=!1)},t.getSelectedTablesWithoutPrefix=function(){var e=[],t=this.databaseTableSection.querySelectorAll("#wpstg_select_tables_cloning option:checked"),s=this.getRegexPattern();return t.forEach((function(t){t.getAttribute("name","").match(s)||e.push(t.value)})),e.join(this.wpstgObject.settings.directorySeparator)},t.getIncludedTables=function(){var e=[],t=this.databaseTableSection.querySelectorAll("#wpstg_select_tables_cloning option:checked"),s=this.getRegexPattern();return t.forEach((function(t){t.getAttribute("name","").match(s)&&e.push(t.value)})),e.join(this.wpstgObject.settings.directorySeparator)},t.getExcludedTables=function(){var e=[],t=this.databaseTableSection.querySelectorAll("#wpstg_select_tables_cloning option:not(:checked)"),s=this.getRegexPattern();return t.forEach((function(t){t.getAttribute("name","").match(s)&&e.push(t.value)})),e.join(this.wpstgObject.settings.directorySeparator)},e}(),f=function(){function e(e,t){void 0===e&&(e="#wpstg-exclude-filters-container"),void 0===t&&(t=wpstg),this.excludeContainer=r(e),this.excludeTableBody=r(e+" tbody"),this.wpstgObject=t,this.init()}var t=e.prototype;return t.addEvents=function(){var e=this;i(this.excludeContainer,"click",".wpstg-file-size-rule",(function(){e.addFileSizeExclude()})),i(this.excludeContainer,"click",".wpstg-file-ext-rule",(function(){e.addFileExtExclude()})),i(this.excludeContainer,"click",".wpstg-file-name-rule",(function(){e.addFileNameExclude()})),i(this.excludeContainer,"click",".wpstg-dir-name-rule",(function(){e.addDirNameExclude()})),i(this.excludeContainer,"click",".wpstg-clear-all-rules",(function(){e.clearExcludes()})),i(this.excludeContainer,"click",".wpstg-remove-exclude-rule",(function(t){e.removeExclude(t)}))},t.init=function(){null!==this.excludeContainer?this.addEvents():console.log("Error: Given table selector not found!")},t.addFileSizeExclude=function(){this.addExcludeRuleRow("#wpstg-file-size-exclude-filter-template")},t.addFileExtExclude=function(){this.addExcludeRuleRow("#wpstg-file-ext-exclude-filter-template")},t.addFileNameExclude=function(){this.addExcludeRuleRow("#wpstg-file-name-exclude-filter-template")},t.addDirNameExclude=function(){this.addExcludeRuleRow("#wpstg-dir-name-exclude-filter-template")},t.addExcludeRuleRow=function(e){var t=r(e);if(null!==t){var s=t.content.cloneNode(!0).querySelector("tr");this.excludeTableBody.appendChild(s),o(".wpstg-has-exclude-rules").forEach((function(e){e.style.display="inherit"}))}},t.clearExcludes=function(){this.excludeTableBody.innerHTML="",o(".wpstg-has-exclude-rules").forEach((function(e){e.style.display="none"}))},t.removeExclude=function(e){null!==e.parentElement&&null!==e.parentElement.parentElement&&this.excludeTableBody.removeChild(e.parentElement.parentElement),""===this.excludeTableBody.innerHTML.trim()&&o(".wpstg-has-exclude-rules").forEach((function(e){e.style.display="none"}))},t.getExcludeFilters=function(){for(var e=this,t=[],s=[],n=this.excludeTableBody.querySelectorAll('select[name="wpstgFileSizeExcludeRuleCompare[]"]'),r=this.excludeTableBody.querySelectorAll('input[name="wpstgFileSizeExcludeRuleSize[]"]'),o=this.excludeTableBody.querySelectorAll('select[name="wpstgFileSizeExcludeRuleByte[]"]'),i=0,a=Object.entries(r);i<a.length;i++){var l=a[i],c=l[0],g=l[1];""!==g.value&&s.push(n[c].value+" "+g.value+o[c].value)}this.excludeTableBody.querySelectorAll('input[name="wpstgFileExtExcludeRule[]"]').forEach((function(s){var n=e.cleanStringForGlob(s.value);""!==n&&t.push("ext:"+n.trim())}));for(var d=this.excludeTableBody.querySelectorAll('select[name="wpstgFileNameExcludeRulePos[]"]'),p=this.excludeTableBody.querySelectorAll('input[name="wpstgFileNameExcludeRulePath[]"]'),u=0,w=Object.entries(p);u<w.length;u++){var h=w[u],f=h[0],m=h[1],v="";""!==(v="name_exact_matches"===d[f].value?this.cleanStringForGlobExactMatches(m.value):this.cleanStringForGlob(m.value))&&t.push("file:"+d[f].value+" "+v.trim())}for(var b=this.excludeTableBody.querySelectorAll('select[name="wpstgDirNameExcludeRulePos[]"]'),y=this.excludeTableBody.querySelectorAll('input[name="wpstgDirNameExcludeRulePath[]"]'),x=0,k=Object.entries(y);x<k.length;x++){var S=k[x],E=S[0],C=S[1],T=this.cleanStringForGlob(C.value);""!==T&&t.push("dir:"+b[E].value+" "+T.trim())}return{sizes:s.filter(this.onlyUnique).join(","),globs:t.filter(this.onlyUnique).join(",")}},t.onlyUnique=function(e,t,s){return s.indexOf(e)===t},t.cleanStringForGlob=function(e){return e.replace(/[*^//!\.[?]/g,"")},t.cleanStringForGlobExactMatches=function(e){return e.replace(/[*^//!\\[?]/g,"")},e}(),m=function(){function e(e,t){void 0===t&&(t=wpstg),this.confirmAction=e,this.wpstgObject=t}var t=e.prototype;return t.show=function(e,t,s){var n=this;void 0===t&&(t={}),void 0===s&&(s=null),wpstgSwal.fire(e).then((function(e){e.value&&null!==n.error&&n.triggerConfirmAction(t,s)}))},t.triggerConfirmAction=function(e,t){var s=this;void 0===e&&(e={}),void 0===t&&(t=null),fetch(this.wpstgObject.ajaxUrl,{method:"POST",credentials:"same-origin",body:new URLSearchParams(Object.assign({action:this.confirmAction,accessToken:this.wpstgObject.accessToken,nonce:this.wpstgObject.nonce},e)),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((function(e){return e.ok?e.json():Promise.reject(e)})).then((function(e){null!==t&&t(e)})).catch((function(e){console.log(s.wpstgObject.i18n.somethingWentWrong,e)}))},e}();function v(e,t,s,n){var r,o,i,a,l=!1,c=!1,g={},d=0,p=0,u={sensitivity:7,interval:100,timeout:0,handleFocus:!1};function w(e){r=e.clientX,o=e.clientY}function h(e,t){if(p&&(p=clearTimeout(p)),Math.abs(i-r)+Math.abs(a-o)<u.sensitivity)return d=1,c?void 0:s(e,t);i=r,a=o,p=setTimeout((function(){h(e,t)}),u.interval)}function f(e,t){return l=!0,p&&(p=clearTimeout(p)),e.removeEventListener("mousemove",w,!1),1!==d&&(i=t.clientX,a=t.clientY,e.addEventListener("mousemove",w,!1),p=setTimeout((function(){h(e,t)}),u.interval)),this}function m(e){e.target.matches(t+", "+t+" *")&&f(e.target.closest(t),e)}function v(e,t){return l=!1,p&&(p=clearTimeout(p)),e.removeEventListener("mousemove",w,!1),1===d&&(p=setTimeout((function(){!function(e,t){p&&(p=clearTimeout(p)),d=0,c||n(e,t)}(e,t)}),u.timeout)),this}function b(e){e.target.matches(t+", "+t+" *")&&v(e.target.closest(t),e)}function y(e){var n,r;e.target.matches(t+", "+t+" *")&&(n=e.target.closest(t),r=e,l||(c=!0,s(n,r)))}function x(e){var s,r;e.target.matches(t+", "+t+" *")&&(s=e.target.closest(t),r=e,!l&&c&&(c=!1,n(s,r)))}function k(){e.removeEventListener("focus",y,!1),e.removeEventListener("blur",x,!1)}return g.options=function(t){var s=t.handleFocus!==u.handleFocus;return u=Object.assign({},u,t),s&&(u.handleFocus?(e.addEventListener("focus",y,!1),e.addEventListener("blur",x,!1)):k()),g},g.remove=function(){e&&(e.removeEventListener("mouseover",m,!1),e.removeEventListener("mouseout",b,!1),k())},e&&(e.addEventListener("mouseover",m,!1),e.addEventListener("mouseout",b,!1)),g}var b=function(e){var t={continueErrorHandle:!0,cache:{elements:[],get:function(t){return-1!==e.inArray(t,this.elements)||(this.elements[t]=e(t)),this.elements[t]},refresh:function(t){t.elements[t]=e(t)}},setJobId:function(e){localStorage.setItem("jobIdBeingProcessed",e)},getJobId:function(){return localStorage.getItem("jobIdBeingProcessed")},listenTooltip:function(){v(document,".wpstg--tooltip",(function(e,t){e.querySelector(".wpstg--tooltiptext").style.visibility="visible"}),(function(e,t){e.querySelector(".wpstg--tooltiptext").style.visibility="hidden"}))},isEmpty:function(e){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0},getSwalModal:function(e,t){void 0===e&&(e=!1),void 0===t&&(t={});var s={confirmButton:"wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn wpstg-100-width",cancelButton:"wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn wpstg-100-width",actions:"wpstg--modal--actions",popup:e?"wpstg-swal-popup centered-modal":"wpstg-swal-popup"},n={customClass:Object.assign(s,t),buttonsStyling:!1,reverseButtons:!0,showClass:{popup:"wpstg--swal2-show wpstg-swal-show"}};return wpstgSwal.mixin(n)},showSuccessModal:function(e){this.getSwalModal().fire({showConfirmButton:!1,showCancelButton:!0,cancelButtonText:"OK",icon:"success",title:"Success!",html:'<div class="wpstg--grey" style="text-align: left; margin-top: 8px;">'+e+"</div>"})},showWarningModal:function(e){this.getSwalModal().fire({showConfirmButton:!1,showCancelButton:!0,cancelButtonText:"OK",icon:"warning",title:"",html:'<div class="wpstg--grey" style="text-align: left; margin-top: 8px;">'+e+"</div>"})},showErrorModal:function(e){this.getSwalModal().fire({showConfirmButton:!1,showCancelButton:!0,cancelButtonText:"OK",icon:"error",title:"Error!",html:'<div class="wpstg--grey" style="text-align: left; margin-top: 8px;">'+e+"</div>"})},getSwalContainer:function(){return wpstgSwal.getContainer()},closeSwalModal:function(){wpstgSwal.close()},getDataFromWordPressResponse:function(e){if("object"!=typeof e)throw new Error("Unexpected response (ERR 1341)");if(!e.hasOwnProperty("success"))throw new Error("Unexpected response (ERR 1342)");if(!e.hasOwnProperty("data"))throw new Error("Unexpected response (ERR 1343)");if(!1===e.success)throw e.data instanceof Array&&e.data.length>0?new Error(e.data.shift()):new Error("Response was not successful");return e.data},isLoading:function(e){e&&!1!==e?t.cache.get(".wpstg-loader").show():t.cache.get(".wpstg-loader").hide()},slugify:function(e){return e.toString().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g,"-").replace(/&/g,"-and-").replace(/[^a-z0-9\-]/g,"").replace(/-+/g,"-").replace(/^-*/,"").replace(/-*$/,"")},showAjaxFatalError:function(e,s,n){return s=s?s+"<br/><br/>":"Something went wrong! <br/><br/>",n=n?n+"<br/><br/>":"<br/><br/>Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.",!1===e?(t.showError(s+" Error: No response."+n),void window.removeEventListener("beforeunload",WPStaging.warnIfClosingDuringProcess)):void 0!==e.error&&e.error?(t.showError(s+" Error: "+e.message+n),void window.removeEventListener("beforeunload",WPStaging.warnIfClosingDuringProcess)):void 0},handleFetchErrors:function(e){return e.ok||t.showError("Error: "+e.status+" - "+e.statusText+". Please try again or contact support."),e},showError:function(s){t.cache.get("#wpstg-try-again").css("display","inline-block"),t.cache.get("#wpstg-cancel-cloning").text("Reset"),t.cache.get("#wpstg-resume-cloning").show(),t.cache.get("#wpstg-error-wrapper").show(),t.cache.get("#wpstg-error-details").show().html(s),t.cache.get("#wpstg-removing-clone").removeClass("loading"),t.cache.get(".wpstg-loader").hide(),e(".wpstg--modal--process--generic-problem").show().html(s)},resetErrors:function(){t.cache.get("#wpstg-error-details").hide().html("")},ajax:function(s,n,r,o,i,a,l){void 0===a&&(a=null),void 0===l&&(l=null),void 0===r&&(r="json"),!1!==o&&(o=!0);var c=10,g=1e4*(i=void 0===i?0:i);a=parseInt(a),isNaN(a)||(g*=a),e.ajax({url:ajaxurl+"?action=wpstg_processing&_="+Date.now()/1e3,type:"POST",dataType:r,cache:!1,data:s,error:function(e,d,p){if(console.log(e.status+" "+e.statusText+"---"+d),"function"!=typeof l||(l(e,d,p),t.continueErrorHandle))if(++i<=c)setTimeout((function(){t.ajax(s,n,r,o,i,a)}),g);else{var u=void 0===e.status?"Unknown":e.status;t.showError("Fatal Error: "+u+" Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.")}else t.continueErrorHandle=!0},success:function(e){"function"==typeof n&&n(e)},statusCode:{404:function(){i>=c&&t.showError("Error 404 - Can't find ajax request URL! Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.")},500:function(){i>=c&&t.showError("Fatal Error 500 - Internal server error while processing the request! Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.")},504:function(){i>c&&t.showError("Error 504 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},502:function(){i>=c&&t.showError("Error 502 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},503:function(){i>=c&&t.showError("Error 503 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},429:function(){i>=c&&t.showError("Error 429 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},403:function(){i>=c&&t.showError("Refresh page or login again! The process should be finished successfully. \n ")}}})}};return t}(jQuery),y=function(){function e(e,t,s,n,o){void 0===t&&(t="#wpstg-workflow"),void 0===s&&(s="wpstg_clone_excludes_settings"),void 0===n&&(n="wpstg_modal_error"),void 0===o&&(o=wpstg),this.cloneID=e,this.workflow=r(t),this.wpstgObject=o,this.fetchExcludeSettingsAction=s,this.modalErrorAction=n,this.resetButtonClass="wpstg-confirm-reset-clone",this.resetModalContainerClass="wpstg-reset-confirmation",this.resetTabSelector=".wpstg-reset-exclude-tab",this.directoryNavigator=null,this.excludeFilters=null,this.tableSelector=null,this.isNetworkClone=!1}var t=e.prototype;return t.addEvents=function(){var e=this,t=r("."+this.resetModalContainerClass);null!==t?i(t,"click",this.resetTabSelector,(function(t){e.toggleContent(t)})):console.log("Exit")},t.init=function(){this.addEvents()},t.setNetworkClone=function(e){this.isNetworkClone=e},t.toggleContent=function(e){var t=r("."+this.resetModalContainerClass),s=e.getAttribute("data-id"),n=e.querySelector(".wpstg-tab-triangle"),o=e.getAttribute("data-collapsed","true"),i=r(s);"true"===o?(t.classList.contains("has-collapsible-open")?t.classList.add("has-collapsible-open-2"):t.classList.add("has-collapsible-open"),a(i),n.style.transform="rotate(90deg)",e.setAttribute("data-collapsed","false")):(t.classList.contains("has-collapsible-open-2")?t.classList.remove("has-collapsible-open-2"):t.classList.remove("has-collapsible-open"),l(i),n.style.removeProperty("transform"),e.setAttribute("data-collapsed","true"))},t.showModal=function(){var e=this.loadModal();return this.init(),this.fetchCloneExcludes(),e},t.loadModal=function(){return b.getSwalModal(!1,{confirmButton:this.resetButtonClass+" wpstg-confirm-reset-clone wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn",container:this.resetModalContainerClass+" wpstg-swal2-container wpstg-swal2-loading"}).fire({title:"",icon:"warning",html:this.getAjaxLoader(),width:"400px",focusConfirm:!1,confirmButtonText:this.wpstgObject.i18n.resetClone,showCancelButton:!0})},t.fetchCloneExcludes=function(){var e=this;this.error=null,fetch(this.wpstgObject.ajaxUrl,{method:"POST",credentials:"same-origin",body:new URLSearchParams({action:this.fetchExcludeSettingsAction,accessToken:this.wpstgObject.accessToken,nonce:this.wpstgObject.nonce,clone:this.cloneID,job:"resetting"}),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((function(e){return e.ok?e.json():Promise.reject(e)})).then((function(t){if(t.success){var s=r(".wpstg-reset-confirmation");s.classList.remove("wpstg-swal2-loading"),s.querySelector(".wpstg--swal2-popup").style.width="500px",s.querySelector(".wpstg--swal2-content").innerHTML=t.html,e.directoryNavigator=new w,e.excludeFilters=new f,e.tableSelector=new h("#wpstg-reset-excluded-tables","."+e.resetModalContainerClass),e.tableSelector.setNetworkClone(e.isNetworkClone)}else{new m(e.modalErrorAction,e.wpstgObject).show(Object.assign({title:"Error",icon:"error",html:e.wpstgObject.i18n.somethingWentWrong,width:"500px",confirmButtonText:"Ok",showCancelButton:!1,customClass:{confirmButton:"wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn",cancelButton:"wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn",actions:"wpstg--modal--actions",popup:"wpstg-swal-popup centered-modal"},buttonsStyling:!1,reverseButtons:!0},t.swalOptions),{type:t.type})}})).catch((function(t){e.renderError({html:e.wpstgObject.i18n.somethingWentWrong+" "+t})}))},t.getDirectoryNavigator=function(){return this.directoryNavigator},t.getExcludeFilters=function(){return this.excludeFilters},t.getTableSelector=function(){return this.tableSelector},t.getAjaxLoader=function(){return'<div class="wpstg-swal2-ajax-loader"><img src="'+this.wpstgObject.wpstgIcon+'" /></div>'},e}(),x=function(){function e(e){void 0===e&&(e="#wpstg-clonepage-wrapper"),this.baseContainer=r(e),this.checkBoxSettingTogglerSelector=".wpstg-toggle-advance-settings-section",this.init()}var t=e.prototype;return t.addEvents=function(){var e=this;null!==this.baseContainer&&i(this.baseContainer,"change",this.checkBoxSettingTogglerSelector,(function(t){e.toggleSettings(t)}))},t.init=function(){this.addEvents()},t.toggleSettings=function(e){var t=r("#"+e.getAttribute("data-id"));e.checked?a(t):l(t)},e}(),k=function(){function e(){this.activeTabClass="wpstg--tab--active",this.mainMenu()}return e.prototype.mainMenu=function(){var e=this;null!==r(".wpstg--tab--header")&&i(r(".wpstg--tab--header"),"click",".wpstg-button",(function(t){var s=t,n=s.getAttribute("data-target"),r=o(n),i=o(".wpstg--tab--header a[data-target]");o(".wpstg--tab--contents > .wpstg--tab--content").forEach((function(t){t.matches("."+e.activeTabClass+":not("+n+")")&&t.classList.remove(e.activeTabClass)})),i.forEach((function(t){t!==s&&t.classList.remove(e.activeTabClass)})),s.classList.add(e.activeTabClass),r.forEach((function(t){t.classList.add(e.activeTabClass)})),"#wpstg--tab--backup"===n&&window.dispatchEvent(new Event("backups-tab"))}))},e}(),S=function(t){var s,n={isCancelled:!1,isFinished:!1,getLogs:!1,time:1,executionTime:!1,progressBar:0,cloneExcludeFilters:null,directoryNavigator:null,tableSelector:null,notyf:null,areAllTablesChecked:!0,handleDisplayDependencies:c,handleToggleElement:g,handleCopyPaste:d,handleCopyToClipboard:p},r={elements:[]};r.get=function(e){return-1!==t.inArray(e,r.elements)||(r.elements[e]=jQuery(e)),r.elements[e]},r.refresh=function(e){e.elements[e]=jQuery(e)};var o=function(e){r.get("#wpstg-try-again").css("display","inline-block"),r.get("#wpstg-cancel-cloning").text("Reset"),r.get("#wpstg-resume-cloning").show(),r.get("#wpstg-error-wrapper").show(),r.get("#wpstg-error-details").show().html(e),r.get("#wpstg-removing-clone").removeClass("loading"),r.get(".wpstg-loader").hide(),t(".wpstg--modal--process--generic-problem").show().html(e),t.ajax({url:ajaxurl,type:"POST",dataType:"json",data:{action:"wpstg_staging_job_error",accessToken:wpstg.accessToken,nonce:wpstg.nonce,error_message:e}})};n.warnIfClosingDuringProcess=function(e){return e.returnValue="You MUST leave this window open while cloning/pushing. Please wait...",null};var i=function(e,t,s){return t=t?t+"<br/><br/>":"Something went wrong! <br/><br/>",s=s?s+"<br/><br/>":"<br/><br/>Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.",!1===e?(o(t+" Error: No response."+s),void window.removeEventListener("beforeunload",S.warnIfClosingDuringProcess)):void 0!==e.error&&e.error?(console.error(e.message),o(t+" Error: "+e.message+s),void window.removeEventListener("beforeunload",S.warnIfClosingDuringProcess)):void 0},a=function(){r.get("#wpstg-error-details").hide().html("")},l=function(){var e=t("#wpstg_clone_hostname").val();if(""===e)return!0;return!1!==/^http(s)?:\/\/.*$/.test(e)},v=function(){var e=r.get("#wpstg-workflow");e.on("click","#wpstg-cancel-cloning",(function(){if(!confirm("Are you sure you want to cancel cloning process?"))return!1;var e=t(this);t("#wpstg-try-again, #wpstg-home-link").hide(),e.prop("disabled",!0),n.isCancelled=!0,n.progressBar=0,t("#wpstg-processing-status").text("Please wait...this can take up a while."),t(".wpstg-loader, #wpstg-show-log-button").hide(),e.parent().append(s),O()})).on("click","#wpstg-resume-cloning",(function(){a();var e=t(this);t("#wpstg-try-again, #wpstg-home-link").hide(),n.isCancelled=!1,t("#wpstg-processing-status").text("Try to resume cloning process..."),t("#wpstg-error-details").hide(),t(".wpstg-loader").show(),e.parent().append(s),n.startCloning()})).on("click","#wpstg-cancel-cloning-update",(function(){a();var e=t(this);t("#wpstg-try-again, #wpstg-home-link").hide(),e.prop("disabled",!0),n.isCancelled=!0,t("#wpstg-cloning-result").text("Please wait...this can take up a while."),t(".wpstg-loader, #wpstg-show-log-button").hide(),e.parent().append(s),R()})).on("click","#wpstg-restart-cloning",(function(){a();var e=t(this);t("#wpstg-try-again, #wpstg-home-link").hide(),e.prop("disabled",!0),n.isCancelled=!0,t("#wpstg-cloning-result").text("Please wait...this can take up a while."),t(".wpstg-loader, #wpstg-show-log-button").hide(),e.parent().append(s),B()})).on("click",".wpstg-remove-clone[data-clone]",(function(s){a(),s.preventDefault();var n=r.get("#wpstg-existing-clones");e.removeClass("active"),r.get(".wpstg-loader").show(),E({action:"wpstg_confirm_delete_clone",accessToken:wpstg.accessToken,nonce:wpstg.nonce,clone:t(this).data("clone")},(function(e){r.get("#wpstg-removing-clone").html(e),n.children("img").remove(),r.get(".wpstg-loader").hide(),t("html, body").animate({scrollTop:t("#wpstg-remove-clone").offset().top-t(window).height()+t("#wpstg-remove-clone").height()+50},100)}),"HTML")})).on("click","#wpstg-remove-clone",(function(e){a(),e.preventDefault(),r.get("#wpstg-removing-clone").addClass("loading"),r.get(".wpstg-loader").show(),I(t(this).data("clone"))})).on("click","#wpstg-cancel-removing",(function(e){e.preventDefault(),t(".wpstg-clone").removeClass("active"),r.get("#wpstg-removing-clone").html("")})).on("click",".wpstg-execute-clone",(function(s){s.preventDefault();var r=t(this).data("clone");e.addClass("loading"),n.cloneExcludeFilters=null,E({action:"wpstg_scanning",clone:r,accessToken:wpstg.accessToken,nonce:wpstg.nonce},(function(t){t.length<1&&o("Something went wrong! Error: No response. Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.");var s=D(t);if(!1!==s&&!1===s.success)return e.removeClass("loading"),void j(s);e.removeClass("loading").html(t),F(),n.directoryNavigator=new w("#wpstg-directories-listing","#wpstg-workflow",wpstg,n.notyf),n.tableSelector=new h("#wpstg-scanning-db","#wpstg-workflow","#wpstg_network_clone",wpstg,n.notyf),n.cloneExcludeFilters=new f,n.switchStep(2)}),"HTML")})).on("click",".wpstg-reset-clone",(function(e){e.preventDefault();var s=t(this).data("clone"),r=new y(s);r.setNetworkClone("yes"===t(this).data("network"));var o=r.showModal();n.areAllTablesChecked=!0,o.then((function(e){if(e.value){var t=r.getDirectoryNavigator(),n=r.getTableSelector(),o=r.getExcludeFilters().getExcludeFilters(),i="",a="",l="";null!==n&&(i=n.getIncludedTables(),a=n.getExcludedTables(),l=n.getSelectedTablesWithoutPrefix()),i.length>a.length?i="":a.length>i.length&&(a=""),A(s,{includedTables:i,excludedTables:a,selectedTablesWithoutPrefix:l,excludeSizeRules:encodeURIComponent(o.sizes),excludeGlobRules:encodeURIComponent(o.globs),excludedDirectories:t.getExcludedDirectories(),extraDirectories:t.getExtraDirectoriesRootOnly()})}}))}))},E=function e(s,n,r,i,a,l){void 0===l&&(l=null),void 0===r&&(r="json"),!1!==i&&(i=!0);var c=1e4*(a=void 0===a?0:a);l=parseInt(l),isNaN(l)||(c*=l),t.ajax({url:ajaxurl+"?action=wpstg_processing&_="+Date.now()/1e3,type:"POST",dataType:r,cache:!1,data:s,error:function(t,g,d){if(++a<=5)console.log("RETRYING "+a+"/5"),setTimeout((function(){e(s,n,r,i,a,l)}),c);else{console.log("RETRYING LIMIT");var p=void 0===t.status?"Unknown":t.status;o("Fatal Error: "+p+" Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.")}},success:function(e){"function"==typeof n&&n(e)},statusCode:{404:function(){a>=5&&o("Error 404 - Can't find ajax request URL! Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.")},500:function(){a>=5&&o("Fatal Error 500 - Internal server error while processing the request! Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.")},504:function(){a>5&&o("Error 504 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},502:function(){a>=5&&o("Error 502 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},503:function(){a>=5&&o("Error 503 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},429:function(){a>=5&&o("Error 429 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},403:function(){a>=5&&o("Refresh page or login again! The process should be finished successfully. \n ")}}})},C=function(){var e=[];return t(".wpstg-db-table input:not(:checked)").each((function(){e.push(this.name)})),e},T=function(e,t){r.get(".wpstg-loader").show(),E({action:"wpstg_database_verification",accessToken:wpstg.accessToken,nonce:wpstg.nonce,databaseUser:r.get("#wpstg_db_username").val(),databasePassword:r.get("#wpstg_db_password").val(),databaseServer:r.get("#wpstg_db_server").val(),databaseDatabase:r.get("#wpstg_db_database").val()},(function(s){if(!1===s)return o("Something went wrong! Error: No response.Please try again. If that does not help, <a href='https://wp-staging.com/support/' target='_blank'>open a support ticket</a> "),void r.get(".wpstg-loader").hide();if(void 0===s.success)return o("Something went wrong! Error: Invalid response.Please try again. If that does not help, <a href='https://wp-staging.com/support/' target='_blank'>open a support ticket</a> "),void r.get(".wpstg-loader").hide();if(s.success)return r.get(".wpstg-loader").hide(),void _(e,t);if("comparison"===s.error_type){r.get(".wpstg-loader").hide();var n='<table class="wpstg-db-comparison-table"><thead><tr><th>Property</th><th>Production DB</th><th>Staging DB</th><th>Status</th></tr></thead><tbody>';return s.checks.forEach((function(e){var t='<span class="wpstg-css-tick"></span>';e.production!==e.staging&&(t='<span class="wpstg-css-cross"></span>'),n+="<tr><td>"+e.name+"</td><td>"+e.production+"</td><td>"+e.staging+"</td><td>"+t+"</td></tr>"})),n+="</tbody></table><p>Note: Some MySQL/MariaDB properties do not match. You may proceed but the staging site may not work as expected.</p>",void b.getSwalModal(!0,{popup:"wpstg-swal-popup wpstg-db-comparison-modal centered-modal"}).fire({title:"Different Database Properties",icon:"warning",html:n,width:"650px",focusConfirm:!1,confirmButtonText:"Proceed",showCancelButton:!0}).then((function(s){s.value&&_(e,t)}))}b.getSwalModal(!0).fire({title:"Different Database Properties",icon:"error",html:s.message,focusConfirm:!0,confirmButtonText:"Ok",showCancelButton:!1}),r.get(".wpstg-loader").hide()}),"json",!1)},_=function(e,s){s.addClass("loading"),n.data={action:e.data("action"),accessToken:wpstg.accessToken,nonce:wpstg.nonce},function(){if("wpstg_cloning"===n.data.action||"wpstg_update"===n.data.action||"wpstg_reset"===n.data.action){if(n.data.cloneID=(new Date).getTime().toString(),"wpstg_update"===n.data.action&&(n.data.cloneID=t("#wpstg-new-clone-id").data("clone")),n.data.cloneName=t("#wpstg-new-clone-id").val()||n.data.cloneID,null!==n.directoryNavigator&&(n.data.excludedDirectories=encodeURIComponent(n.directoryNavigator.getExcludedDirectories()),n.data.extraDirectories=encodeURIComponent(n.directoryNavigator.getExtraDirectoriesRootOnly())),n.data.excludeGlobRules="",n.data.excludeSizeRules="",n.cloneExcludeFilters instanceof f){var e=n.cloneExcludeFilters.getExcludeFilters();n.data.excludeGlobRules=encodeURIComponent(e.globs),n.data.excludeSizeRules=encodeURIComponent(e.sizes)}n.data.includedTables="",n.data.excludedTables="",null!==n.tableSelector&&(n.data.includedTables=n.tableSelector.getIncludedTables(),n.data.excludedTables=n.tableSelector.getExcludedTables(),n.data.selectedTablesWithoutPrefix=n.tableSelector.getSelectedTablesWithoutPrefix()),n.data.includedTables.length>n.data.excludedTables.length?n.data.includedTables="":n.data.excludedTables.length>n.data.includedTables.length&&(n.data.excludedTables=""),n.data.databaseServer=t("#wpstg_db_server").val(),n.data.databaseUser=t("#wpstg_db_username").val(),n.data.databasePassword=t("#wpstg_db_password").val(),n.data.databaseDatabase=t("#wpstg_db_database").val(),n.data.databasePrefix=t("#wpstg_db_prefix").val();var s=t("#wpstg_clone_dir").val();n.data.cloneDir=encodeURIComponent(t.trim(s)),n.data.cloneHostname=t("#wpstg_clone_hostname").val(),n.data.emailsAllowed=t("#wpstg_allow_emails").is(":checked"),n.data.networkClone=t("#wpstg_network_clone").is(":checked"),n.data.uploadsSymlinked=t("#wpstg_symlink_upload").is(":checked"),n.data.cleanPluginsThemes=t("#wpstg-clean-plugins-themes").is(":checked"),n.data.cleanUploadsDir=t("#wpstg-clean-uploads").is(":checked")}}(),P(s)},P=function(e){E(n.data,(function(t){!1===t&&o("Something went wrong!<br/><br/> Go to WP Staging > Settings and lower 'File Copy Limit' and 'DB Query Limit'. Also set 'CPU Load Priority to low 'and try again. If that does not help, <a href='https://wp-staging.com/support/' target='_blank'>open a support ticket</a> "),t.length<1&&o("Something went wrong! No response. Go to WP Staging > Settings and lower 'File Copy Limit' and 'DB Query Limit'. Also set 'CPU Load Priority to low 'and try again. If that does not help, <a href='https://wp-staging.com/support/' target='_blank'>open a support ticket</a> ");var s=D(t);if(!1!==s&&!1===s.success)return e.removeClass("loading"),void j(s);e.removeClass("loading").html(t),n.cloneExcludeFilters=null,"wpstg_scanning"===n.data.action?(n.areAllTablesChecked=!0,n.directoryNavigator=new w("#wpstg-directories-listing","#wpstg-workflow",wpstg,n.notyf),n.tableSelector=new h("#wpstg-scanning-db","#wpstg-workflow","#wpstg_network_clone",wpstg,n.notyf),n.switchStep(2),n.cloneExcludeFilters=new f):"wpstg_cloning"!==n.data.action&&"wpstg_update"!==n.data.action&&"wpstg_reset"!==n.data.action||n.switchStep(3),n.startCloning()}),"HTML")},j=function(e){new m("wpstg_modal_error",wpstg).show(Object.assign({title:"Error",icon:"error",html:wpstg.i18n.somethingWentWrong+(void 0!==e.message?"<br/>"+e.message:""),width:"500px",confirmButtonText:"Ok",showCancelButton:!1,customClass:{confirmButton:"wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn",cancelButton:"wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn",actions:"wpstg--modal--actions",popup:"wpstg-swal-popup centered-modal"},buttonsStyling:!1,reverseButtons:!0},e.swalOptions),{type:e.type})},D=function(e){if(!e)return!1;try{var t=JSON.parse(e);if(t&&"object"==typeof t)return t}catch(e){}return!1},A=function(t,s){n.data={action:"wpstg_reset",accessToken:wpstg.accessToken,nonce:wpstg.nonce,cloneID:t},n.data=e({},n.data,s);var o=r.get("#wpstg-workflow");P(o)},L=function(){var e=r.get("#wpstg-workflow");e.addClass("loading"),E({action:"wpstg_overview",accessToken:wpstg.accessToken,nonce:wpstg.nonce},(function(t){t.length<1&&o("Something went wrong! No response. Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report."),r.get(".wpstg-current-step"),e.removeClass("loading").html(t)}),"HTML"),n.switchStep(1),r.get(".wpstg-step3-cloning").show(),r.get(".wpstg-step3-pushing").hide()},I=function e(s){var n=t("#deleteDirectory:checked").data("deletepath");E({action:"wpstg_delete_clone",clone:s,accessToken:wpstg.accessToken,nonce:wpstg.nonce,excludedTables:C(),deleteDir:n},(function(n){if(n&&(i(n),void 0!==n.delete&&("finished"===n.delete||"unfinished"===n.delete)))return r.get("#wpstg-removing-clone").removeClass("loading").html(""),"finished"===n.delete&&void 0===n.error&&t('.wpstg-clone[data-clone-id="'+s+'"]').remove(),t("#wpstg-existing-clones .wpstg-clone").length<1&&(r.get("#wpstg-existing-clones").find("h3").text(""),r.get("#wpstg-no-staging-site-results").show()),void r.get(".wpstg-loader").hide();!0===n||e(s)}))},O=function e(){if(n.timer("stop"),!0===n.isFinished)return!0;E({action:"wpstg_cancel_clone",clone:n.data.cloneID,accessToken:wpstg.accessToken,nonce:wpstg.nonce},(function(t){if(t&&void 0!==t.delete&&"finished"===t.delete)return r.get(".wpstg-loader").hide(),void L();!0===t?L():e()}))},R=function e(){if(!0===n.isFinished)return!0;E({action:"wpstg_cancel_update",clone:n.data.cloneID,accessToken:wpstg.accessToken,nonce:wpstg.nonce},(function(t){t&&void 0!==t.delete&&"finished"===t.delete||!0===t?L():e()}))},B=function(){if(!0===n.isFinished)return!0;E({action:"wpstg_restart",accessToken:wpstg.accessToken,nonce:wpstg.nonce},(function(e){e&&void 0!==e.delete&&"finished"===e.delete||!0===e?L():R()}))},q=function(e){var s;null!=e&&void 0!==e&&(e.constructor===Array?t.each(e,(function(e,t){null!==t&&("ERROR"===t.type?r.get(".wpstg-log-details").append('<span class="wpstg--red">['+t.type+"]</span>-["+t.date+"] "+t.message+"</br>"):r.get(".wpstg-log-details").append("["+t.type+"]-["+t.date+"] "+t.message+"</br>"))})):r.get(".wpstg-log-details").append("["+e.type+"]-["+e.date+"] "+e.message+"</br>")),void 0!==(s=r.get(".wpstg-log-details"))[0]&&s.scrollTop(s[0].scrollHeight)},F=function(){r.get("#wpstg-check-space").on("click",(function(e){r.get(".wpstg-loader").show();var t=encodeURIComponent(n.directoryNavigator.getExcludedDirectories()),s=encodeURIComponent(n.directoryNavigator.getExtraDirectoriesRootOnly());E({action:"wpstg_check_disk_space",accessToken:wpstg.accessToken,nonce:wpstg.nonce,excludedDirectories:t,extraDirectories:s},(function(e){if(!1===e)return r.get("#wpstg-clone-id-error").text("Can not detect required disk space").show(),void r.get(".wpstg-loader").hide();r.get("#wpstg-clone-id-error").html("Estimated necessary disk space: "+e.requiredSpace+(null!==e.errorMessage?"<br>"+e.errorMessage:"")+'<br> <span style="color:#444;">Before you proceed ensure your account has enough free disk space to hold the entire instance of the production site. You can check the available space from your hosting account (cPanel or similar).</span>').show(),r.get(".wpstg-loader").hide()}),"json",!1)}))};return n.timer=function(e){if("stop"===e){var t=n.time;return n.time=1,clearInterval(n.executionTime),n.convertSeconds(t)}n.executionTime=setInterval((function(){null!==document.getElementById("wpstg-processing-timer")&&(document.getElementById("wpstg-processing-timer").innerHTML="Elapsed Time: "+n.convertSeconds(n.time)),n.time++,"stop"===e&&(n.time=1,clearInterval(n.executionTime))}),1e3)},n.convertSeconds=function(e){var t=new Date(null);return t.setSeconds(e),t.toISOString().substr(11,8)},n.startCloning=function(){if(a(),F(),"wpstg_cloning"===n.data.action||"wpstg_update"===n.data.action||"wpstg_reset"===n.data.action){n.isCancelled=!1,r.get(".wpstg-loader").show(),r.get("#wpstg-cancel-cloning").text("Cancel"),r.get("#wpstg-resume-cloning").hide(),r.get("#wpstg-error-details").hide(),setTimeout((function(){window.addEventListener("beforeunload",S.warnIfClosingDuringProcess),e()}),wpstg.delayReq),n.timer("start");var e=function e(){if(!0===n.isCancelled)return window.removeEventListener("beforeunload",S.warnIfClosingDuringProcess),!1;var o;(o=!0)&&!1!==o?r.get(".wpstg-loader").show():r.get(".wpstg-loader").hide();var a="",l="";null!==n.directoryNavigator&&(a=n.directoryNavigator.getExcludedDirectories(),l=n.directoryNavigator.getExtraDirectoriesRootOnly()),r.get(".wpstg-log-details").show(),S.ajax({action:"wpstg_processing",accessToken:wpstg.accessToken,nonce:wpstg.nonce,excludedTables:C(),excludedDirectories:encodeURIComponent(a),extraDirectories:encodeURIComponent(l)},(function(o){i(o),void 0!==o.last_msg&&o.last_msg&&q(o.last_msg),!1===o.status?(s(o),setTimeout((function(){r.get(".wpstg-loader").show(),e()}),wpstg.delayReq)):!0===o.status&&"finished"!==o.status?(r.get("#wpstg-error-details").hide(),r.get("#wpstg-error-wrapper").hide(),s(o),e()):("finished"===o.status||void 0!==o.job_done&&o.job_done)&&(window.removeEventListener("beforeunload",S.warnIfClosingDuringProcess),function(e){!0===n.getLogs&&q();s(e),void 0!==e.last_msg&&q(e.last_msg);r.get(".wpstg-loader").hide(),r.get("#wpstg-processing-header").html("Processing Complete"),t("#wpstg-processing-status").text("Succesfully finished"),r.get("#wpstg_staging_name").html(n.data.cloneID),r.get("#wpstg-finished-result").show(),r.get("#wpstg-cancel-cloning").hide(),r.get("#wpstg-resume-cloning").hide(),r.get("#wpstg-cancel-cloning-update").prop("disabled",!0);var o=r.get("#wpstg-clone-url-1"),i=r.get("#wpstg-clone-url");o.attr("href",e.url),o.html(e.url),i.attr("href",e.url),r.get("#wpstg-remove-clone").data("clone",n.data.cloneID),n.isFinished=!0,n.timer("stop"),r.get(".wpstg-loader").hide(),r.get("#wpstg-processing-header").html("Processing Complete");var a=wpstg.i18n.cloneResetComplete;"wpstg_update"===n.data.action&&(a=wpstg.i18n.cloneUpdateComplete);"wpstg_update"!==n.data.action&&"wpstg_reset"!==n.data.action||(r.get("#wpstg-cancel-cloning-update").hide(),r.get(".wpstg-prev-step-link").show(),b.getSwalModal(!0,{confirmButton:"wpstg--btn--confirm wpstg-green-button wpstg-button wpstg-link-btn wpstg-100-width"}).fire({title:"",icon:"success",html:a,width:"500px",focusConfirm:!0}))}(o))}),"json",!1)},s=function(e,t){if(void 0===e.percentage)return!1;"database"===e.job&&(r.get("#wpstg-progress-db").width(.2*e.percentage+"%").html(e.percentage+"%"),r.get("#wpstg-processing-status").html(e.percentage.toFixed(0)+"% - Step 1 of 4 Cloning Database Tables...")),"SearchReplace"===e.job&&(r.get("#wpstg-progress-db").css("background-color","#3bc36b"),r.get("#wpstg-progress-db").html("1. Database"),r.get("#wpstg-progress-db").width("20%"),r.get("#wpstg-progress-sr").width(.1*e.percentage+"%").html(e.percentage+"%"),r.get("#wpstg-processing-status").html(e.percentage.toFixed(0)+"% - Step 2 of 4 Preparing Database Data...")),"directories"===e.job&&(r.get("#wpstg-progress-sr").css("background-color","#3bc36b"),r.get("#wpstg-progress-sr").html("2. Data"),r.get("#wpstg-progress-sr").width("10%"),r.get("#wpstg-progress-dirs").width(.1*e.percentage+"%").html(e.percentage+"%"),r.get("#wpstg-processing-status").html(e.percentage.toFixed(0)+"% - Step 3 of 4 Getting files...")),"files"===e.job&&(r.get("#wpstg-progress-dirs").css("background-color","#3bc36b"),r.get("#wpstg-progress-dirs").html("3. Files"),r.get("#wpstg-progress-dirs").width("10%"),r.get("#wpstg-progress-files").width(.6*e.percentage+"%").html(e.percentage+"%"),r.get("#wpstg-processing-status").html(e.percentage.toFixed(0)+"% - Step 4 of 4 Copy files...")),"finish"===e.job&&(r.get("#wpstg-progress-files").css("background-color","#3bc36b"),r.get("#wpstg-progress-files").html("4. Copy Files"),r.get("#wpstg-progress-files").width("60%"),r.get("#wpstg-processing-status").html(e.percentage.toFixed(0)+"% - Cloning Process Finished"))}}},n.switchStep=function(e){r.get(".wpstg-current-step").removeClass("wpstg-current-step"),r.get(".wpstg-step"+e).addClass("wpstg-current-step")},n.init=function(){var e,o,i;L(),o=r.get("#wpstg-workflow"),i=ajaxurl.replace("/admin-ajax.php","")+"/images/spinner",2<window.devicePixelRatio&&(i+="-2x"),s="<img src=''"+(i+=".gif")+"' alt='' class='ajax-spinner general-spinner' />",o.on("click",".wpstg-button-unselect",(function(e){e.preventDefault(),!1===n.areAllTablesChecked?(r.get("#wpstg_select_tables_cloning .wpstg-db-table").prop("selected","selected"),r.get(".wpstg-button-unselect").text("Unselect All"),r.get(".wpstg-db-table-checkboxes").prop("checked",!0),n.areAllTablesChecked=!0):(r.get("#wpstg_select_tables_cloning .wpstg-db-table").prop("selected",!1),r.get(".wpstg-button-unselect").text("Select All"),r.get(".wpstg-db-table-checkboxes").prop("checked",!1),n.areAllTablesChecked=!1)})).on("keyup","#wpstg-new-clone-id",(function(){if(document.getElementById("wpstg-error-details").style.display="none","number"==typeof e&&clearInterval(e),void 0===this.value||""===this.value)return r.get("#wpstg-new-clone-id").removeClass("wpstg-error-input"),r.get("#wpstg-start-cloning").removeAttr("disabled"),void r.get("#wpstg-clone-id-error").text("").hide();var t=b.slugify(this.value);e=setTimeout((function(){E({action:"wpstg_check_clone",accessToken:wpstg.accessToken,nonce:wpstg.nonce,directoryName:t},(function(e){"success"===e.status?(r.get("#wpstg-new-clone-id").removeClass("wpstg-error-input"),r.get("#wpstg-start-cloning").removeAttr("disabled"),r.get("#wpstg-clone-id-error").text("").hide()):(r.get("#wpstg-new-clone-id").addClass("wpstg-error-input"),r.get("#wpstg-start-cloning").prop("disabled",!0),r.get("#wpstg-clone-id-error").text(e.message).show())}))}),500)})).on("click","#wpstg-start-cloning",(function(){a(),n.isCancelled=!1,n.getLogs=!1,n.progressBar=0})).on("input","#wpstg-new-clone-id",(function(){if(!(t("#wpstg-clone-directory").length<1)){var e=b.slugify(this.value).substring(0,16),s=t("#wpstg-use-target-dir"),n=t("#wpstg-use-target-hostname"),r=s.data("base-path"),o=n.data("base-uri");r&&(r=r.replace(/\/+$/g,"")+"/"+e+"/"),o&&(o=o.replace(/\/+$/g,"")+"/"+e),t(".wpstg-use-target-dir--value").text(r),t(".wpstg-use-target-hostname--value").text(o),s.attr("data-path",r),n.attr("data-uri",o),t("#wpstg_clone_dir").attr("placeholder",r),t("#wpstg_clone_hostname").attr("placeholder",o)}})).on("input","#wpstg_clone_hostname",(function(){""===t(this).val()||l()?t("#wpstg_clone_hostname_error").remove():l()||t("#wpstg_clone_hostname_error").length||t("#wpstg-clone-directory tr:last-of-type").after('<tr><td> </td><td><p id="wpstg_clone_hostname_error" style="color: red;"> Invalid host name. Please provide it in a format like http://example.com</p></td></tr>')})),v(),function(){var e=r.get("#wpstg-workflow");e.on("click",".wpstg-next-step-link",(function(s){s.preventDefault();var n=t(this);if(t("#wpstg_clone_hostname").length&&!l())return t("#wpstg_clone_hostname").focus(),!1;if("wpstg_update"===n.data("action")||"wpstg_reset"===n.data("action")){var r="";if("wpstg_update"===n.data("action")&&(r=" \n\nExclude all tables and folders you do not want to overwrite, first! \n\nDo not cancel the updating process! This can break your staging site. \n\nCreate a backup of your staging website before you proceed."),!confirm("STOP! This will overwrite your staging site with all selected data from the production site! This should be used only if you want to clone again your production site. Are you sure you want to do this?"+r))return!1}if(n.attr("disabled"))return!1;"wpstg_cloning"===n.data("action")&&t("#wpstg-ext-db").is(":checked")?T(n,e):_(n,e)})).on("click",".wpstg-prev-step-link",(function(e){e.preventDefault(),r.get(".wpstg-loader").removeClass("wpstg-finished"),r.get(".wpstg-loader").hide(),L()}))}(),r.get("#wpstg-workflow").on("click",".wpstg-tab-header",(function(e){e.preventDefault();var s=t(this),n=r.get(s.data("id"));s.toggleClass("expand"),n.slideToggle();var o=s.find(".wpstg-tab-triangle");s.hasClass("expand")?(o.removeClass("wpstg-no-icon"),o.text(""),o.addClass("wpstg-rotate-90")):o.removeClass("wpstg-rotate-90")})),b.listenTooltip(),new k,new u,new x,n.notyf=new Notyf({duration:1e4,position:{x:"center",y:"bottom"},dismissible:!0,types:[{type:"warning",background:"orange",icon:!1}]})},n.ajax=E,n.showError=o,n.getLogs=q,n.loadOverview=L,n}(jQuery);jQuery(document).ready((function(){S.init(),window.WPStaging=S})),jQuery(document).ready((function(e){function t(s,n){void 0===n&&(n="false");var r=s.next(),o=e(".wpstg--tab--active .wpstg-report-email").val(),i=e(".wpstg--tab--active .wpstg-report-hosting-provider").val(),a=e(".wpstg--tab--active .wpstg-report-description").val(),l=e(".wpstg--tab--active .wpstg-report-syslog").is(":checked"),c=e(".wpstg--tab--active .wpstg-report-terms").is(":checked");s.attr("disabled",!0),r.css("visibility","visible"),e.ajax({url:ajaxurl,type:"POST",dataType:"json",async:!0,data:{action:"wpstg_send_report",accessToken:wpstg.accessToken,nonce:wpstg.nonce,wpstg_email:o,wpstg_provider:i,wpstg_message:a,wpstg_syslog:+l,wpstg_terms:+c,wpstg_force_send:n}}).done((function(n){if(s.attr("disabled",!1),r.css("visibility","hidden"),n.errors.length>0){e(".wpstg--tab--active .wpstg-report-issue-form .wpstg-message").remove();var o=e("<div />").addClass("wpstg-message wpstg-error-message");e.each(n.errors,(function(e,n){"already_submitted"===n.status?(o="",b.getSwalModal(!0,{container:"wpstg-issue-resubmit-confirmation"}).fire({title:"",icon:"warning",html:n.message,showCancelButton:!0,focusConfirm:!1,confirmButtonText:"Yes",cancelButtonText:"No"}).then((function(e){e.isConfirmed&&t(s,"true")}))):o.append("<p>"+n+"</p>")})),e(".wpstg--tab--active .wpstg-report-issue-form").prepend(o)}else{var i=e("<div />").addClass("wpstg-message wpstg-success-message");i.append("<p>Thanks for submitting your request! You should receive an auto reply mail with your ticket ID immediately for confirmation!<br><br>If you do not get that mail please contact us directly at <strong>support@wp-staging.com</strong></p>"),e(".wpstg--tab--active .wpstg-report-issue-form").html(i),e(".wpstg--tab--active .wpstg-success-message").append('<div style="float:right;margin-top:10px;"><a id="wpstg-success-button" href="#" class="wpstg--red">[X] CLOSE</a></div>'),setTimeout((function(){e(".wpstg--tab--active .wpstg-report-issue-form").removeClass("wpstg-report-active")}),2e3)}}))}e("body").on("click","#wpstg-report-issue-button",(function(t){console.log("REPORT"),e(".wpstg--tab--active .wpstg-report-issue-form").toggleClass("wpstg-report-show"),t.preventDefault()})),e("body").on("click","#wpstg-backups-report-issue-button",(function(t){e(".wpstg--tab--active .wpstg-report-issue-form").toggleClass("wpstg-report-show"),t.preventDefault()})),e("body").on("click","#wpstg-report-cancel",(function(t){e(".wpstg--tab--active .wpstg-report-issue-form").removeClass("wpstg-report-show"),t.preventDefault()})),e("body").on("click",".wpstg--tab--active #wpstg-report-submit",(function(s){t(e(this),"false"),s.preventDefault()})),e("body").on("click","#wpstg-success-button",(function(t){t.preventDefault(),e(".wpstg-report-issue-form").removeClass("wpstg-report-show")})),e(document).on("click",".wpstg-dropdown>.wpstg-dropdown-toggler",(function(t){t.preventDefault(),e(t.target).next(".wpstg-dropdown-menu").toggleClass("shown"),e(t.target).find(".wpstg-caret").toggleClass("wpstg-caret-up")})),e(document).on("click",".wpstg-caret",(function(t){t.preventDefault();var s=e(t.target).closest(".wpstg-dropdown-toggler");s&&s.trigger("click")})),document.addEventListener("click",(function(t){if(!t.target.closest(".wpstg-dropdown-toggler")){for(var s=document.getElementsByClassName("wpstg-dropdown-menu"),n=0;n<s.length;n++)s[n].classList.remove("shown");e(".wpstg-caret").removeClass("wpstg-caret-up")}})),window.addEventListener("finishedProcessWithError",(function(t){e.ajax({url:ajaxurl,type:"POST",dataType:"json",data:{action:"wpstg_job_error",accessToken:wpstg.accessToken,nonce:wpstg.nonce,error_message:t.detail.error,job_id:b.getJobId()}})}))}))}();
|
2 |
//# sourceMappingURL=wpstg-admin.min.js.map
|
1 |
+
!function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&(e[n]=s[n])}return e}).apply(this,arguments)}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var s=0,n=new Array(t);s<t;s++)n[s]=e[s];return n}function s(e,s){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,s){if(e){if("string"==typeof e)return t(e,s);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(e,s):void 0}}(e))||s&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}var n=(Element.prototype.closest&&(Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest=function(e){var t=this;do{if(Element.prototype.matches.call(t,e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}),function(e,t){return e instanceof Element?e.closest(t):null});function r(e){return document.querySelector(e)}function o(e){return document.querySelectorAll(e)}function i(e,t,s,n){!e instanceof Element||e.addEventListener(t,(function(e){e.target.matches(s+", "+s+" *")&&n(e.target.closest(s),e)}),!1)}function a(e,t){void 0===t&&(t=400),e.style.display="block",e.style.overflow="hidden";var s=e.offsetHeight;e.style.height="0px",e.style.transitionProperty="height",e.style.transitionDuration=t+"ms",setTimeout((function(){e.style.height=s+"px",window.setTimeout((function(){e.style.removeProperty("height"),e.style.removeProperty("overflow"),e.style.removeProperty("transition-duration"),e.style.removeProperty("transition-property")}),t)}),0)}function l(e,t){void 0===t&&(t=400),e.style.display="block",e.style.overflow="hidden";var s=e.offsetHeight;e.style.height=s+"px",e.style.transitionProperty="height",e.style.transitionDuration=t+"ms",setTimeout((function(){e.style.height="0px",window.setTimeout((function(){e.style.display="none",e.style.removeProperty("height"),e.style.removeProperty("overflow"),e.style.removeProperty("transition-duration"),e.style.removeProperty("transition-property")}),t)}),0)}function c(e){if(!(!e instanceof Element)&&e.id){var t="hidden";switch(e.getAttribute("type")){case"checkbox":var r=n(e,".wpstg-container");if(null===r)return;var o=r.querySelectorAll('[data-show-if-checked="'+e.id+'"]'),i=r.querySelectorAll('[data-show-if-unchecked="'+e.id+'"]'),a=e.checked;if(o.length)for(var l,c=s(o);!(l=c()).done;){var g=l.value;a?g.classList.remove(t):g.classList.add(t)}if(i.length)for(var d,p=s(i);!(d=p()).done;){var u=d.value;a?u.classList.add(t):u.classList.remove(t)}return;default:return}}}function g(e){if(!(!e instanceof Element)&&e.getAttribute("data-wpstg-target")){var t=n(e,".wpstg_admin");if(null!==t){var r=t.querySelectorAll(e.getAttribute("data-wpstg-target"));if(r.length)for(var o,i=s(r);!(o=i()).done;){o.value.classList.toggle("hidden")}}}}function d(e){if(!(!e instanceof Element)&&e.getAttribute("data-wpstg-target")&&e.getAttribute("data-wpstg-copy")){var t=n(e,".wpstg_admin");if(null!==t){navigator.clipboard.writeText(e.getAttribute("data-wpstg-copy"));var r=t.querySelectorAll(e.getAttribute("data-wpstg-target"));if(r.length)for(var o,i=s(r);!(o=i()).done;){o.value.value=e.getAttribute("data-wpstg-copy","")}}}}function p(e){if(!(!e instanceof Element)&&e.getAttribute("data-wpstg-source")){var t=n(e,".wpstg_admin");if(null!==t){var s=t.querySelector(e.getAttribute("data-wpstg-source"));s&&navigator.clipboard.writeText(s.value)}}}var u=function(){function e(e,t){void 0===e&&(e="#wpstg-clonepage-wrapper"),void 0===t&&(t=wpstg),this.pageWrapper=r(e),this.wpstgObject=t,this.enableButtonId="#wpstg-enable-staging-cloning",this.enableAction="wpstg_enable_staging_cloning",this.notyf=new Notyf({duration:1e4,position:{x:"center",y:"bottom"},dismissible:!0,types:[{type:"warning",background:"orange",icon:!1}]}),this.init()}var t=e.prototype;return t.addEvents=function(){var e=this;null!==this.pageWrapper&&i(this.pageWrapper,"click",this.enableButtonId,(function(){e.sendRequest(e.enableAction)}))},t.init=function(){this.addEvents()},t.sendRequest=function(e){var t=this;fetch(this.wpstgObject.ajaxUrl,{method:"POST",credentials:"same-origin",body:new URLSearchParams({action:e,accessToken:this.wpstgObject.accessToken,nonce:this.wpstgObject.nonce}),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((function(e){return e.ok?e.json():Promise.reject(e)})).then((function(e){void 0!==e.success&&e.success?location.reload():void 0===e.message?t.notyf.error(t.wpstgObject.i18n.somethingWentWrong):t.notyf.error(e.message)})).catch((function(e){console.warn(t.wpstgObject.i18n.somethingWentWrong,e)}))},e}(),w=function(){function e(e,t,s,n){void 0===e&&(e="#wpstg-directories-listing"),void 0===t&&(t="#wpstg-workflow"),void 0===s&&(s=wpstg),void 0===n&&(n=null),this.directoryListingContainer=r(e),this.workflow=r(t),this.wpstgObject=s,this.dirCheckboxSelector=".wpstg-check-dir",this.dirExpandSelector=".wpstg-expand-dirs",this.unselectAllDirsSelector=".wpstg-unselect-dirs",this.selectDefaultDirsSelector=".wpstg-select-dirs-default",this.fetchChildrenAction="wpstg_fetch_dir_childrens",this.currentCheckboxElement=null,this.currentParentDiv=null,this.currentLoader=null,this.existingExcludes=[],this.excludedDirectories=[],this.isDefaultSelected=!1,this.notyf=n,this.init()}var t=e.prototype;return t.addEvents=function(){var e=this;null!==this.directoryListingContainer?(i(this.directoryListingContainer,"change",this.dirCheckboxSelector,(function(t,s){s.preventDefault(),console.log(e.getExcludedDirectories())})),i(this.directoryListingContainer,"click",this.dirExpandSelector,(function(t,s){s.preventDefault(),e.toggleDirExpand(t)&&e.sendRequest(e.fetchChildrenAction,t)})),i(this.directoryListingContainer,"click",this.unselectAllDirsSelector,(function(){e.unselectAll()})),i(this.directoryListingContainer,"click",this.selectDefaultDirsSelector,(function(){e.selectDefault()})),i(this.directoryListingContainer,"click",".wpstg-expand-dirs",(function(t,s){s.preventDefault(),e.toggleDirectoryNavigation(t)})),i(this.directoryListingContainer,"change","input.wpstg-check-dir",(function(t){e.updateDirectorySelection(t)}))):console.log("Error: directory navigation add events")},t.init=function(){this.addEvents(),this.parseExcludes()},t.toggleDirExpand=function(e){return this.currentParentDiv=e.parentElement,this.currentCheckboxElement=e.previousSibling,this.currentLoader=this.currentParentDiv.querySelector(".wpstg-is-dir-loading"),"false"!==this.currentCheckboxElement.getAttribute("data-navigateable","false")&&"false"===this.currentCheckboxElement.getAttribute("data-scanned","false")},t.sendRequest=function(e){var t=this;null!==this.currentLoader&&(this.currentLoader.style.display="inline-block"),fetch(this.wpstgObject.ajaxUrl,{method:"POST",credentials:"same-origin",body:new URLSearchParams({action:e,accessToken:this.wpstgObject.accessToken,nonce:this.wpstgObject.nonce,dirPath:this.currentCheckboxElement.value,isChecked:this.currentCheckboxElement.checked,forceDefault:this.isDefaultSelected}),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((function(e){return e.ok?e.json():Promise.reject(e)})).then((function(e){if(void 0!==e.success&&e.success){t.currentCheckboxElement.setAttribute("data-scanned",!0);var s=document.createElement("div");return s.classList.add("wpstg-dir"),s.classList.add("wpstg-subdir"),s.innerHTML=JSON.parse(e.directoryListing),t.currentParentDiv.appendChild(s),null!==t.currentLoader&&(t.currentLoader.style.display="none"),void a(s)}null!==t.notyf?t.notyf.error(t.wpstgObject.i18n.somethingWentWrong):alert("Error: "+t.wpstgObject.i18n.somethingWentWrong)})).catch((function(e){console.warn(t.wpstgObject.i18n.somethingWentWrong,e)}))},t.getExcludedDirectories=function(){var e=this;return this.excludedDirectories=[],this.directoryListingContainer.querySelectorAll(".wpstg-dir input:not(:checked)").forEach((function(t){e.isParentExcluded(t.value)||e.excludedDirectories.push(t.value)})),this.existingExcludes.forEach((function(t){e.isParentExcluded(t)||e.isScanned(t)||e.excludedDirectories.push(t)})),this.excludedDirectories.join(this.wpstgObject.settings.directorySeparator)},t.isParentExcluded=function(e){var t=!1;return this.excludedDirectories.forEach((function(s){e.startsWith(s+"/")&&(t=!0)})),t},t.getExtraDirectoriesRootOnly=function(){this.getExcludedDirectories();var e=[];this.directoryListingContainer.querySelectorAll(":not(.wpstg-subdir)>.wpstg-dir>input.wpstg-wp-non-core-dir:checked").forEach((function(t){e.push(t.value)}));var t=r("#wpstg_extraDirectories");if(null===t||""===t.value)return e.join(this.wpstgObject.settings.directorySeparator);var s=t.value.split(/\r?\n/);return e.concat(s).join(this.wpstgObject.settings.directorySeparator)},t.unselectAll=function(){this.directoryListingContainer.querySelectorAll(".wpstg-dir input").forEach((function(e){e.checked=!1}))},t.selectDefault=function(){this.unselectAll(),this.directoryListingContainer.querySelectorAll(".wpstg-dir input.wpstg-wp-core-dir").forEach((function(e){e.checked=!0})),this.directoryListingContainer.querySelectorAll(".wpstg-dir > .wpstg-wp-non-core-dir").forEach((function(e){e.parentElement.querySelectorAll("input.wpstg-wp-core-dir").forEach((function(e){e.checked=!1}))})),this.isDefaultSelected=!0},t.parseExcludes=function(){if(this.existingExcludes=this.directoryListingContainer.getAttribute("data-existing-excludes",[]),""!==this.existingExcludes)if(0!==this.existingExcludes.length){var e=this.existingExcludes.split(",");this.existingExcludes=e.map((function(e){return"/"===e.substr(0,1)?e.slice(1):e}))}else this.existingExcludes=[];else this.existingExcludes=[]},t.isScanned=function(e){var t=!1;return this.directoryListingContainer.querySelectorAll(".wpstg-dir>input").forEach((function(s){s.value==e&&(t=!0)})),t},t.toggleDirectoryNavigation=function(e){var t=e.previousSibling;if("false"!==t.getAttribute("data-navigateable","false")&&"false"!==t.getAttribute("data-scanned","false")){var s=function(e,t){for(var s=e.nextElementSibling;s;){if(s.matches(t))return s;s=s.nextElementSibling}}(e,".wpstg-subdir");"none"===s.style.display?a(s):l(s)}},t.updateDirectorySelection=function(e){var t=e.parentElement;e.checked?(function(e,t){for(var s=[],n=e&&e.parentElement;n;n=n.parentElement)n.matches(t)&&s.push(n);return s}(t,".wpstg-dir").forEach((function(e){for(var t=0;t<e.children.length;t++)e.children[t].matches(".wpstg-check-dir")&&(e.children[t].checked=!0)})),t.querySelectorAll(".wpstg-expand-dirs").forEach((function(e){e.classList.remove("disabled")})),t.querySelectorAll(".wpstg-subdir .wpstg-check-dir").forEach((function(e){e.checked=!0}))):(t.querySelectorAll(".wpstg-expand-dirs, .wpstg-check-subdirs").forEach((function(e){e.classList.add("disabled")})),t.querySelectorAll(".wpstg-dir .wpstg-check-dir").forEach((function(e){e.checked=!1})))},e}(),h=function(){function e(e,t,s,n){void 0===e&&(e="#wpstg-scanning-db"),void 0===t&&(t="#wpstg-workflow"),void 0===s&&(s="#wpstg_network_clone"),void 0===n&&(n=wpstg),this.databaseTableSection=r(e),this.workflow=r(t),this.networkCloneSelector=s,this.networkCloneCheckbox=r(s),this.wpstgObject=n,this.isAllTablesChecked=!0,this.isMultisite="1"===this.wpstgObject.isMultisite,this.isNetworkClone=!1,this.init()}var t=e.prototype;return t.setNetworkClone=function(e){this.isNetworkClone=e},t.addEvents=function(){var e=this;null!==this.workflow?(i(this.workflow,"change",this.networkCloneSelector,(function(){e.selectDefaultTables()})),i(this.workflow,"click",".wpstg-button-select",(function(t,s){s.preventDefault(),e.selectDefaultTables()})),i(this.workflow,"click",".wpstg-button-unselect",(function(t,s){s.preventDefault(),e.toggleTableSelection()}))):console.log("Error: database table section is null. Cannot register events")},t.init=function(){this.addEvents()},t.getRegexPattern=function(){var e="^"+this.wpstgObject.tblprefix,t=!1;return void 0!==this.networkCloneCheckbox&&null!==this.networkCloneCheckbox&&(t=this.networkCloneCheckbox.checked),this.isNetworkClone&&(t=!0),this.isMultisite&&!t&&(e+="([^0-9])_*"),e},t.selectDefaultTables=function(){var e=this.databaseTableSection.querySelectorAll("#wpstg_select_tables_cloning .wpstg-db-table"),t=this.getRegexPattern();e.forEach((function(e){e.getAttribute("name","").match(t)?e.selected=!0:e.selected=!1}))},t.toggleTableSelection=function(){!1===this.isAllTablesChecked?(this.databaseTableSection.querySelectorAll("#wpstg_select_tables_cloning .wpstg-db-table").forEach((function(e){e.selected=!0})),this.databaseTableSection.querySelector(".wpstg-button-unselect").innerHTML="Unselect All",this.isAllTablesChecked=!0):(this.databaseTableSection.querySelectorAll("#wpstg_select_tables_cloning .wpstg-db-table").forEach((function(e){e.selected=!1})),this.databaseTableSection.querySelector(".wpstg-button-unselect").innerHTML="Select All",this.isAllTablesChecked=!1)},t.getSelectedTablesWithoutPrefix=function(){var e=[],t=this.databaseTableSection.querySelectorAll("#wpstg_select_tables_cloning option:checked"),s=this.getRegexPattern();return t.forEach((function(t){t.getAttribute("name","").match(s)||e.push(t.value)})),e.join(this.wpstgObject.settings.directorySeparator)},t.getIncludedTables=function(){var e=[],t=this.databaseTableSection.querySelectorAll("#wpstg_select_tables_cloning option:checked"),s=this.getRegexPattern();return t.forEach((function(t){t.getAttribute("name","").match(s)&&e.push(t.value)})),e.join(this.wpstgObject.settings.directorySeparator)},t.getExcludedTables=function(){var e=[],t=this.databaseTableSection.querySelectorAll("#wpstg_select_tables_cloning option:not(:checked)"),s=this.getRegexPattern();return t.forEach((function(t){t.getAttribute("name","").match(s)&&e.push(t.value)})),e.join(this.wpstgObject.settings.directorySeparator)},e}(),f=function(){function e(e,t){void 0===e&&(e="#wpstg-exclude-filters-container"),void 0===t&&(t=wpstg),this.excludeContainer=r(e),this.excludeTableBody=r(e+" tbody"),this.wpstgObject=t,this.init()}var t=e.prototype;return t.addEvents=function(){var e=this;i(this.excludeContainer,"click",".wpstg-file-size-rule",(function(){e.addFileSizeExclude()})),i(this.excludeContainer,"click",".wpstg-file-ext-rule",(function(){e.addFileExtExclude()})),i(this.excludeContainer,"click",".wpstg-file-name-rule",(function(){e.addFileNameExclude()})),i(this.excludeContainer,"click",".wpstg-dir-name-rule",(function(){e.addDirNameExclude()})),i(this.excludeContainer,"click",".wpstg-clear-all-rules",(function(){e.clearExcludes()})),i(this.excludeContainer,"click",".wpstg-remove-exclude-rule",(function(t){e.removeExclude(t)}))},t.init=function(){null!==this.excludeContainer?this.addEvents():console.log("Error: Given table selector not found!")},t.addFileSizeExclude=function(){this.addExcludeRuleRow("#wpstg-file-size-exclude-filter-template")},t.addFileExtExclude=function(){this.addExcludeRuleRow("#wpstg-file-ext-exclude-filter-template")},t.addFileNameExclude=function(){this.addExcludeRuleRow("#wpstg-file-name-exclude-filter-template")},t.addDirNameExclude=function(){this.addExcludeRuleRow("#wpstg-dir-name-exclude-filter-template")},t.addExcludeRuleRow=function(e){var t=r(e);if(null!==t){var s=t.content.cloneNode(!0).querySelector("tr");this.excludeTableBody.appendChild(s),o(".wpstg-has-exclude-rules").forEach((function(e){e.style.display="inherit"}))}},t.clearExcludes=function(){this.excludeTableBody.innerHTML="",o(".wpstg-has-exclude-rules").forEach((function(e){e.style.display="none"}))},t.removeExclude=function(e){null!==e.parentElement&&null!==e.parentElement.parentElement&&this.excludeTableBody.removeChild(e.parentElement.parentElement),""===this.excludeTableBody.innerHTML.trim()&&o(".wpstg-has-exclude-rules").forEach((function(e){e.style.display="none"}))},t.getExcludeFilters=function(){for(var e=this,t=[],s=[],n=this.excludeTableBody.querySelectorAll('select[name="wpstgFileSizeExcludeRuleCompare[]"]'),r=this.excludeTableBody.querySelectorAll('input[name="wpstgFileSizeExcludeRuleSize[]"]'),o=this.excludeTableBody.querySelectorAll('select[name="wpstgFileSizeExcludeRuleByte[]"]'),i=0,a=Object.entries(r);i<a.length;i++){var l=a[i],c=l[0],g=l[1];""!==g.value&&s.push(n[c].value+" "+g.value+o[c].value)}this.excludeTableBody.querySelectorAll('input[name="wpstgFileExtExcludeRule[]"]').forEach((function(s){var n=e.cleanStringForGlob(s.value);""!==n&&t.push("ext:"+n.trim())}));for(var d=this.excludeTableBody.querySelectorAll('select[name="wpstgFileNameExcludeRulePos[]"]'),p=this.excludeTableBody.querySelectorAll('input[name="wpstgFileNameExcludeRulePath[]"]'),u=0,w=Object.entries(p);u<w.length;u++){var h=w[u],f=h[0],m=h[1],v="";""!==(v="name_exact_matches"===d[f].value?this.cleanStringForGlobExactMatches(m.value):this.cleanStringForGlob(m.value))&&t.push("file:"+d[f].value+" "+v.trim())}for(var b=this.excludeTableBody.querySelectorAll('select[name="wpstgDirNameExcludeRulePos[]"]'),y=this.excludeTableBody.querySelectorAll('input[name="wpstgDirNameExcludeRulePath[]"]'),x=0,k=Object.entries(y);x<k.length;x++){var S=k[x],E=S[0],C=S[1],T=this.cleanStringForGlob(C.value);""!==T&&t.push("dir:"+b[E].value+" "+T.trim())}return{sizes:s.filter(this.onlyUnique).join(","),globs:t.filter(this.onlyUnique).join(",")}},t.onlyUnique=function(e,t,s){return s.indexOf(e)===t},t.cleanStringForGlob=function(e){return e.replace(/[*^//!\.[?]/g,"")},t.cleanStringForGlobExactMatches=function(e){return e.replace(/[*^//!\\[?]/g,"")},e}(),m=function(){function e(e,t){void 0===t&&(t=wpstg),this.confirmAction=e,this.wpstgObject=t}var t=e.prototype;return t.show=function(e,t,s){var n=this;void 0===t&&(t={}),void 0===s&&(s=null),wpstgSwal.fire(e).then((function(e){e.value&&null!==n.error&&n.triggerConfirmAction(t,s)}))},t.triggerConfirmAction=function(e,t){var s=this;void 0===e&&(e={}),void 0===t&&(t=null),fetch(this.wpstgObject.ajaxUrl,{method:"POST",credentials:"same-origin",body:new URLSearchParams(Object.assign({action:this.confirmAction,accessToken:this.wpstgObject.accessToken,nonce:this.wpstgObject.nonce},e)),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((function(e){return e.ok?e.json():Promise.reject(e)})).then((function(e){null!==t&&t(e)})).catch((function(e){console.log(s.wpstgObject.i18n.somethingWentWrong,e)}))},e}();function v(e,t,s,n){var r,o,i,a,l=!1,c=!1,g={},d=0,p=0,u={sensitivity:7,interval:100,timeout:0,handleFocus:!1};function w(e){r=e.clientX,o=e.clientY}function h(e,t){if(p&&(p=clearTimeout(p)),Math.abs(i-r)+Math.abs(a-o)<u.sensitivity)return d=1,c?void 0:s(e,t);i=r,a=o,p=setTimeout((function(){h(e,t)}),u.interval)}function f(e,t){return l=!0,p&&(p=clearTimeout(p)),e.removeEventListener("mousemove",w,!1),1!==d&&(i=t.clientX,a=t.clientY,e.addEventListener("mousemove",w,!1),p=setTimeout((function(){h(e,t)}),u.interval)),this}function m(e){e.target.matches(t+", "+t+" *")&&f(e.target.closest(t),e)}function v(e,t){return l=!1,p&&(p=clearTimeout(p)),e.removeEventListener("mousemove",w,!1),1===d&&(p=setTimeout((function(){!function(e,t){p&&(p=clearTimeout(p)),d=0,c||n(e,t)}(e,t)}),u.timeout)),this}function b(e){e.target.matches(t+", "+t+" *")&&v(e.target.closest(t),e)}function y(e){var n,r;e.target.matches(t+", "+t+" *")&&(n=e.target.closest(t),r=e,l||(c=!0,s(n,r)))}function x(e){var s,r;e.target.matches(t+", "+t+" *")&&(s=e.target.closest(t),r=e,!l&&c&&(c=!1,n(s,r)))}function k(){e.removeEventListener("focus",y,!1),e.removeEventListener("blur",x,!1)}return g.options=function(t){var s=t.handleFocus!==u.handleFocus;return u=Object.assign({},u,t),s&&(u.handleFocus?(e.addEventListener("focus",y,!1),e.addEventListener("blur",x,!1)):k()),g},g.remove=function(){e&&(e.removeEventListener("mouseover",m,!1),e.removeEventListener("mouseout",b,!1),k())},e&&(e.addEventListener("mouseover",m,!1),e.addEventListener("mouseout",b,!1)),g}var b=function(e){var t={continueErrorHandle:!0,cache:{elements:[],get:function(t){return-1!==e.inArray(t,this.elements)||(this.elements[t]=e(t)),this.elements[t]},refresh:function(t){t.elements[t]=e(t)}},setJobId:function(e){localStorage.setItem("jobIdBeingProcessed",e)},getJobId:function(){return localStorage.getItem("jobIdBeingProcessed")},listenTooltip:function(){v(document,".wpstg--tooltip",(function(e,t){e.querySelector(".wpstg--tooltiptext").style.visibility="visible"}),(function(e,t){e.querySelector(".wpstg--tooltiptext").style.visibility="hidden"}))},isEmpty:function(e){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0},getSwalModal:function(e,t){void 0===e&&(e=!1),void 0===t&&(t={});var s={confirmButton:"wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn wpstg-100-width",cancelButton:"wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn wpstg-100-width",actions:"wpstg--modal--actions",popup:e?"wpstg-swal-popup centered-modal":"wpstg-swal-popup"},n={customClass:Object.assign(s,t),buttonsStyling:!1,reverseButtons:!0,showClass:{popup:"wpstg--swal2-show wpstg-swal-show"}};return wpstgSwal.mixin(n)},showSuccessModal:function(e){this.getSwalModal().fire({showConfirmButton:!1,showCancelButton:!0,cancelButtonText:"OK",icon:"success",title:"Success!",html:'<div class="wpstg--grey" style="text-align: left; margin-top: 8px;">'+e+"</div>"})},showWarningModal:function(e){this.getSwalModal().fire({showConfirmButton:!1,showCancelButton:!0,cancelButtonText:"OK",icon:"warning",title:"",html:'<div class="wpstg--grey" style="text-align: left; margin-top: 8px;">'+e+"</div>"})},showErrorModal:function(e){this.getSwalModal().fire({showConfirmButton:!1,showCancelButton:!0,cancelButtonText:"OK",icon:"error",title:"Error!",html:'<div class="wpstg--grey" style="text-align: left; margin-top: 8px;">'+e+"</div>"})},getSwalContainer:function(){return wpstgSwal.getContainer()},closeSwalModal:function(){wpstgSwal.close()},getDataFromWordPressResponse:function(e){if("object"!=typeof e)throw new Error("Unexpected response (ERR 1341)");if(!e.hasOwnProperty("success"))throw new Error("Unexpected response (ERR 1342)");if(!e.hasOwnProperty("data"))throw new Error("Unexpected response (ERR 1343)");if(!1===e.success)throw e.data instanceof Array&&e.data.length>0?new Error(e.data.shift()):new Error("Response was not successful");return e.data},isLoading:function(e){e&&!1!==e?t.cache.get(".wpstg-loader").show():t.cache.get(".wpstg-loader").hide()},slugify:function(e){return e.toString().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g,"-").replace(/&/g,"-and-").replace(/[^a-z0-9\-]/g,"").replace(/-+/g,"-").replace(/^-*/,"").replace(/-*$/,"")},showAjaxFatalError:function(e,s,n){return s=s?s+"<br/><br/>":"Something went wrong! <br/><br/>",n=n?n+"<br/><br/>":"<br/><br/>Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.",!1===e?(t.showError(s+" Error: No response."+n),void window.removeEventListener("beforeunload",WPStaging.warnIfClosingDuringProcess)):void 0!==e.error&&e.error?(t.showError(s+" Error: "+e.message+n),void window.removeEventListener("beforeunload",WPStaging.warnIfClosingDuringProcess)):void 0},handleFetchErrors:function(e){return e.ok||t.showError("Error: "+e.status+" - "+e.statusText+". Please try again or contact support."),e},showError:function(s){t.cache.get("#wpstg-try-again").css("display","inline-block"),t.cache.get("#wpstg-cancel-cloning").text("Reset"),t.cache.get("#wpstg-resume-cloning").show(),t.cache.get("#wpstg-error-wrapper").show(),t.cache.get("#wpstg-error-details").show().html(s),t.cache.get("#wpstg-removing-clone").removeClass("loading"),t.cache.get(".wpstg-loader").hide(),e(".wpstg--modal--process--generic-problem").show().html(s)},resetErrors:function(){t.cache.get("#wpstg-error-details").hide().html("")},ajax:function(s,n,r,o,i,a,l){void 0===a&&(a=null),void 0===l&&(l=null),void 0===r&&(r="json"),!1!==o&&(o=!0);var c=10,g=1e4*(i=void 0===i?0:i);a=parseInt(a),isNaN(a)||(g*=a),e.ajax({url:ajaxurl+"?action=wpstg_processing&_="+Date.now()/1e3,type:"POST",dataType:r,cache:!1,data:s,error:function(e,d,p){if(console.log(e.status+" "+e.statusText+"---"+d),"function"!=typeof l||(l(e,d,p),t.continueErrorHandle))if(++i<=c)setTimeout((function(){t.ajax(s,n,r,o,i,a)}),g);else{var u=void 0===e.status?"Unknown":e.status;t.showError("Fatal Error: "+u+" Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.")}else t.continueErrorHandle=!0},success:function(e){"function"==typeof n&&n(e)},statusCode:{404:function(){i>=c&&t.showError("Error 404 - Can't find ajax request URL! Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.")},500:function(){i>=c&&t.showError("Fatal Error 500 - Internal server error while processing the request! Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.")},504:function(){i>c&&t.showError("Error 504 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},502:function(){i>=c&&t.showError("Error 502 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},503:function(){i>=c&&t.showError("Error 503 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},429:function(){i>=c&&t.showError("Error 429 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},403:function(){i>=c&&t.showError("Refresh page or login again! The process should be finished successfully. \n ")}}})}};return t}(jQuery),y=function(){function e(e,t,s,n,o){void 0===t&&(t="#wpstg-workflow"),void 0===s&&(s="wpstg_clone_excludes_settings"),void 0===n&&(n="wpstg_modal_error"),void 0===o&&(o=wpstg),this.cloneID=e,this.workflow=r(t),this.wpstgObject=o,this.fetchExcludeSettingsAction=s,this.modalErrorAction=n,this.resetButtonClass="wpstg-confirm-reset-clone",this.resetModalContainerClass="wpstg-reset-confirmation",this.resetTabSelector=".wpstg-reset-exclude-tab",this.directoryNavigator=null,this.excludeFilters=null,this.tableSelector=null,this.isNetworkClone=!1}var t=e.prototype;return t.addEvents=function(){var e=this,t=r("."+this.resetModalContainerClass);null!==t?i(t,"click",this.resetTabSelector,(function(t){e.toggleContent(t)})):console.log("Exit")},t.init=function(){this.addEvents()},t.setNetworkClone=function(e){this.isNetworkClone=e},t.toggleContent=function(e){var t=r("."+this.resetModalContainerClass),s=e.getAttribute("data-id"),n=e.querySelector(".wpstg-tab-triangle"),o=e.getAttribute("data-collapsed","true"),i=r(s);"true"===o?(t.classList.contains("has-collapsible-open")?t.classList.add("has-collapsible-open-2"):t.classList.add("has-collapsible-open"),a(i),n.style.transform="rotate(90deg)",e.setAttribute("data-collapsed","false")):(t.classList.contains("has-collapsible-open-2")?t.classList.remove("has-collapsible-open-2"):t.classList.remove("has-collapsible-open"),l(i),n.style.removeProperty("transform"),e.setAttribute("data-collapsed","true"))},t.showModal=function(){var e=this.loadModal();return this.init(),this.fetchCloneExcludes(),e},t.loadModal=function(){return b.getSwalModal(!1,{confirmButton:this.resetButtonClass+" wpstg-confirm-reset-clone wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn",container:this.resetModalContainerClass+" wpstg-swal2-container wpstg-swal2-loading"}).fire({title:"",icon:"warning",html:this.getAjaxLoader(),width:"400px",focusConfirm:!1,confirmButtonText:this.wpstgObject.i18n.resetClone,showCancelButton:!0})},t.fetchCloneExcludes=function(){var e=this;this.error=null,fetch(this.wpstgObject.ajaxUrl,{method:"POST",credentials:"same-origin",body:new URLSearchParams({action:this.fetchExcludeSettingsAction,accessToken:this.wpstgObject.accessToken,nonce:this.wpstgObject.nonce,clone:this.cloneID,job:"resetting"}),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((function(e){return e.ok?e.json():Promise.reject(e)})).then((function(t){if(t.success){var s=r(".wpstg-reset-confirmation");s.classList.remove("wpstg-swal2-loading"),s.querySelector(".wpstg--swal2-popup").style.width="500px",s.querySelector(".wpstg--swal2-content").innerHTML=t.html,e.directoryNavigator=new w,e.excludeFilters=new f,e.tableSelector=new h("#wpstg-reset-excluded-tables","."+e.resetModalContainerClass),e.tableSelector.setNetworkClone(e.isNetworkClone)}else{new m(e.modalErrorAction,e.wpstgObject).show(Object.assign({title:"Error",icon:"error",html:e.wpstgObject.i18n.somethingWentWrong,width:"500px",confirmButtonText:"Ok",showCancelButton:!1,customClass:{confirmButton:"wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn",cancelButton:"wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn",actions:"wpstg--modal--actions",popup:"wpstg-swal-popup centered-modal"},buttonsStyling:!1,reverseButtons:!0},t.swalOptions),{type:t.type})}})).catch((function(t){e.renderError({html:e.wpstgObject.i18n.somethingWentWrong+" "+t})}))},t.getDirectoryNavigator=function(){return this.directoryNavigator},t.getExcludeFilters=function(){return this.excludeFilters},t.getTableSelector=function(){return this.tableSelector},t.getAjaxLoader=function(){return'<div class="wpstg-swal2-ajax-loader"><img src="'+this.wpstgObject.wpstgIcon+'" /></div>'},e}(),x=function(){function e(e){void 0===e&&(e="#wpstg-clonepage-wrapper"),this.baseContainer=r(e),this.checkBoxSettingTogglerSelector=".wpstg-toggle-advance-settings-section",this.init()}var t=e.prototype;return t.addEvents=function(){var e=this;null!==this.baseContainer&&i(this.baseContainer,"change",this.checkBoxSettingTogglerSelector,(function(t){e.toggleSettings(t)}))},t.init=function(){this.addEvents()},t.toggleSettings=function(e){var t=r("#"+e.getAttribute("data-id"));e.checked?a(t):l(t)},e}(),k=function(){function e(){this.activeTabClass="wpstg--tab--active",this.mainMenu()}return e.prototype.mainMenu=function(){var e=this;null!==r(".wpstg--tab--header")&&i(r(".wpstg--tab--header"),"click",".wpstg-button",(function(t){var s=t,n=s.getAttribute("data-target"),r=o(n),i=o(".wpstg--tab--header a[data-target]");o(".wpstg--tab--contents > .wpstg--tab--content").forEach((function(t){t.matches("."+e.activeTabClass+":not("+n+")")&&t.classList.remove(e.activeTabClass)})),i.forEach((function(t){t!==s&&t.classList.remove(e.activeTabClass)})),s.classList.add(e.activeTabClass),r.forEach((function(t){t.classList.add(e.activeTabClass)})),"#wpstg--tab--backup"===n&&window.dispatchEvent(new Event("backups-tab"))}))},e}(),S=function(t){var s,n={isCancelled:!1,isFinished:!1,getLogs:!1,time:1,executionTime:!1,progressBar:0,cloneExcludeFilters:null,directoryNavigator:null,tableSelector:null,notyf:null,areAllTablesChecked:!0,handleDisplayDependencies:c,handleToggleElement:g,handleCopyPaste:d,handleCopyToClipboard:p},r={elements:[]};r.get=function(e){return-1!==t.inArray(e,r.elements)||(r.elements[e]=jQuery(e)),r.elements[e]},r.refresh=function(e){e.elements[e]=jQuery(e)};var o=function(e){r.get("#wpstg-try-again").css("display","inline-block"),r.get("#wpstg-cancel-cloning").text("Reset"),r.get("#wpstg-resume-cloning").show(),r.get("#wpstg-error-wrapper").show(),r.get("#wpstg-error-details").show().html(e),r.get("#wpstg-removing-clone").removeClass("loading"),r.get(".wpstg-loader").hide(),t(".wpstg--modal--process--generic-problem").show().html(e),t.ajax({url:ajaxurl,type:"POST",dataType:"json",data:{action:"wpstg_staging_job_error",accessToken:wpstg.accessToken,nonce:wpstg.nonce,error_message:e}})};n.warnIfClosingDuringProcess=function(e){return e.returnValue="You MUST leave this window open while cloning/pushing. Please wait...",null};var i=function(e,t,s){return t=t?t+"<br/><br/>":"Something went wrong! <br/><br/>",s=s?s+"<br/><br/>":"<br/><br/>Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.",!1===e?(o(t+" Error: No response."+s),void window.removeEventListener("beforeunload",S.warnIfClosingDuringProcess)):void 0!==e.error&&e.error?(console.error(e.message),o(t+" Error: "+e.message+s),void window.removeEventListener("beforeunload",S.warnIfClosingDuringProcess)):void 0},a=function(){r.get("#wpstg-error-details").hide().html("")},l=function(){var e=t("#wpstg_clone_hostname").val();if(""===e)return!0;return!1!==/^http(s)?:\/\/.*$/.test(e)},v=function(){var e=r.get("#wpstg-workflow");e.on("click","#wpstg-cancel-cloning",(function(){if(!confirm("Are you sure you want to cancel cloning process?"))return!1;var e=t(this);t("#wpstg-try-again, #wpstg-home-link").hide(),e.prop("disabled",!0),n.isCancelled=!0,n.progressBar=0,t("#wpstg-processing-status").text("Please wait...this can take up a while."),t(".wpstg-loader, #wpstg-show-log-button").hide(),e.parent().append(s),O()})).on("click","#wpstg-resume-cloning",(function(){a();var e=t(this);t("#wpstg-try-again, #wpstg-home-link").hide(),n.isCancelled=!1,t("#wpstg-processing-status").text("Try to resume cloning process..."),t("#wpstg-error-details").hide(),t(".wpstg-loader").show(),e.parent().append(s),n.startCloning()})).on("click","#wpstg-cancel-cloning-update",(function(){a();var e=t(this);t("#wpstg-try-again, #wpstg-home-link").hide(),e.prop("disabled",!0),n.isCancelled=!0,t("#wpstg-cloning-result").text("Please wait...this can take up a while."),t(".wpstg-loader, #wpstg-show-log-button").hide(),e.parent().append(s),R()})).on("click","#wpstg-restart-cloning",(function(){a();var e=t(this);t("#wpstg-try-again, #wpstg-home-link").hide(),e.prop("disabled",!0),n.isCancelled=!0,t("#wpstg-cloning-result").text("Please wait...this can take up a while."),t(".wpstg-loader, #wpstg-show-log-button").hide(),e.parent().append(s),B()})).on("click",".wpstg-remove-clone[data-clone]",(function(s){a(),s.preventDefault();var n=r.get("#wpstg-existing-clones");e.removeClass("active"),r.get(".wpstg-loader").show(),E({action:"wpstg_confirm_delete_clone",accessToken:wpstg.accessToken,nonce:wpstg.nonce,clone:t(this).data("clone")},(function(e){r.get("#wpstg-removing-clone").html(e),n.children("img").remove(),r.get(".wpstg-loader").hide(),t("html, body").animate({scrollTop:t("#wpstg-remove-clone").offset().top-t(window).height()+t("#wpstg-remove-clone").height()+50},100)}),"HTML")})).on("click","#wpstg-remove-clone",(function(e){a(),e.preventDefault(),r.get("#wpstg-removing-clone").addClass("loading"),r.get(".wpstg-loader").show(),I(t(this).data("clone"))})).on("click","#wpstg-cancel-removing",(function(e){e.preventDefault(),t(".wpstg-clone").removeClass("active"),r.get("#wpstg-removing-clone").html("")})).on("click",".wpstg-execute-clone",(function(s){s.preventDefault();var r=t(this).data("clone");e.addClass("loading"),n.cloneExcludeFilters=null,E({action:"wpstg_scanning",clone:r,accessToken:wpstg.accessToken,nonce:wpstg.nonce},(function(t){t.length<1&&o("Something went wrong! Error: No response. Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.");var s=D(t);if(!1!==s&&!1===s.success)return e.removeClass("loading"),void j(s);e.removeClass("loading").html(t),F(),n.directoryNavigator=new w("#wpstg-directories-listing","#wpstg-workflow",wpstg,n.notyf),n.tableSelector=new h("#wpstg-scanning-db","#wpstg-workflow","#wpstg_network_clone",wpstg,n.notyf),n.cloneExcludeFilters=new f,n.switchStep(2)}),"HTML")})).on("click",".wpstg-reset-clone",(function(e){e.preventDefault();var s=t(this).data("clone"),r=new y(s);r.setNetworkClone("yes"===t(this).data("network"));var o=r.showModal();n.areAllTablesChecked=!0,o.then((function(e){if(e.value){var t=r.getDirectoryNavigator(),n=r.getTableSelector(),o=r.getExcludeFilters().getExcludeFilters(),i="",a="",l="",c=!1;null!==n&&(i=n.getIncludedTables(),a=n.getExcludedTables(),l=n.getSelectedTablesWithoutPrefix()),i.length>a.length?i="":a.length>i.length&&(a="",c=""===i),A(s,{includedTables:i,excludedTables:a,allTablesExcluded:c,selectedTablesWithoutPrefix:l,excludeSizeRules:encodeURIComponent(o.sizes),excludeGlobRules:encodeURIComponent(o.globs),excludedDirectories:t.getExcludedDirectories(),extraDirectories:t.getExtraDirectoriesRootOnly()})}}))}))},E=function e(s,n,r,i,a,l){void 0===l&&(l=null),void 0===r&&(r="json"),!1!==i&&(i=!0);var c=1e4*(a=void 0===a?0:a);l=parseInt(l),isNaN(l)||(c*=l),t.ajax({url:ajaxurl+"?action=wpstg_processing&_="+Date.now()/1e3,type:"POST",dataType:r,cache:!1,data:s,error:function(t,g,d){if(++a<=5)console.log("RETRYING "+a+"/5"),setTimeout((function(){e(s,n,r,i,a,l)}),c);else{console.log("RETRYING LIMIT");var p=void 0===t.status?"Unknown":t.status;o("Fatal Error: "+p+" Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.")}},success:function(e){"function"==typeof n&&n(e)},statusCode:{404:function(){a>=5&&o("Error 404 - Can't find ajax request URL! Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.")},500:function(){a>=5&&o("Fatal Error 500 - Internal server error while processing the request! Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.")},504:function(){a>5&&o("Error 504 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},502:function(){a>=5&&o("Error 502 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},503:function(){a>=5&&o("Error 503 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},429:function(){a>=5&&o("Error 429 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report and contact us.\n ")},403:function(){a>=5&&o("Refresh page or login again! The process should be finished successfully. \n ")}}})},C=function(){var e=[];return t(".wpstg-db-table input:not(:checked)").each((function(){e.push(this.name)})),e},T=function(e,t){r.get(".wpstg-loader").show(),E({action:"wpstg_database_verification",accessToken:wpstg.accessToken,nonce:wpstg.nonce,databaseUser:r.get("#wpstg_db_username").val(),databasePassword:r.get("#wpstg_db_password").val(),databaseServer:r.get("#wpstg_db_server").val(),databaseDatabase:r.get("#wpstg_db_database").val()},(function(s){if(!1===s)return o("Something went wrong! Error: No response.Please try again. If that does not help, <a href='https://wp-staging.com/support/' target='_blank'>open a support ticket</a> "),void r.get(".wpstg-loader").hide();if(void 0===s.success)return o("Something went wrong! Error: Invalid response.Please try again. If that does not help, <a href='https://wp-staging.com/support/' target='_blank'>open a support ticket</a> "),void r.get(".wpstg-loader").hide();if(s.success)return r.get(".wpstg-loader").hide(),void _(e,t);if("comparison"===s.error_type){r.get(".wpstg-loader").hide();var n='<table class="wpstg-db-comparison-table"><thead><tr><th>Property</th><th>Production DB</th><th>Staging DB</th><th>Status</th></tr></thead><tbody>';return s.checks.forEach((function(e){var t='<span class="wpstg-css-tick"></span>';e.production!==e.staging&&(t='<span class="wpstg-css-cross"></span>'),n+="<tr><td>"+e.name+"</td><td>"+e.production+"</td><td>"+e.staging+"</td><td>"+t+"</td></tr>"})),n+="</tbody></table><p>Note: Some MySQL/MariaDB properties do not match. You may proceed but the staging site may not work as expected.</p>",void b.getSwalModal(!0,{popup:"wpstg-swal-popup wpstg-db-comparison-modal centered-modal"}).fire({title:"Different Database Properties",icon:"warning",html:n,width:"650px",focusConfirm:!1,confirmButtonText:"Proceed",showCancelButton:!0}).then((function(s){s.value&&_(e,t)}))}b.getSwalModal(!0).fire({title:"Different Database Properties",icon:"error",html:s.message,focusConfirm:!0,confirmButtonText:"Ok",showCancelButton:!1}),r.get(".wpstg-loader").hide()}),"json",!1)},_=function(e,s){s.addClass("loading"),n.data={action:e.data("action"),accessToken:wpstg.accessToken,nonce:wpstg.nonce},function(){if("wpstg_cloning"===n.data.action||"wpstg_update"===n.data.action||"wpstg_reset"===n.data.action){if(n.data.cloneID=(new Date).getTime().toString(),"wpstg_update"===n.data.action&&(n.data.cloneID=t("#wpstg-new-clone-id").data("clone")),n.data.cloneName=t("#wpstg-new-clone-id").val()||n.data.cloneID,null!==n.directoryNavigator&&(n.data.excludedDirectories=encodeURIComponent(n.directoryNavigator.getExcludedDirectories()),n.data.extraDirectories=encodeURIComponent(n.directoryNavigator.getExtraDirectoriesRootOnly())),n.data.excludeGlobRules="",n.data.excludeSizeRules="",n.cloneExcludeFilters instanceof f){var e=n.cloneExcludeFilters.getExcludeFilters();n.data.excludeGlobRules=encodeURIComponent(e.globs),n.data.excludeSizeRules=encodeURIComponent(e.sizes)}n.data.includedTables="",n.data.excludedTables="",n.data.allTablesExcluded=!1,null!==n.tableSelector&&(n.data.includedTables=n.tableSelector.getIncludedTables(),n.data.excludedTables=n.tableSelector.getExcludedTables(),n.data.selectedTablesWithoutPrefix=n.tableSelector.getSelectedTablesWithoutPrefix()),n.data.includedTables.length>n.data.excludedTables.length?n.data.includedTables="":n.data.excludedTables.length>n.data.includedTables.length&&(n.data.excludedTables="",n.data.allTablesExcluded=""===n.data.includedTables),n.data.databaseServer=t("#wpstg_db_server").val(),n.data.databaseUser=t("#wpstg_db_username").val(),n.data.databasePassword=t("#wpstg_db_password").val(),n.data.databaseDatabase=t("#wpstg_db_database").val(),n.data.databasePrefix=t("#wpstg_db_prefix").val();var s=t("#wpstg_clone_dir").val();n.data.cloneDir=encodeURIComponent(t.trim(s)),n.data.cloneHostname=t("#wpstg_clone_hostname").val(),n.data.emailsAllowed=t("#wpstg_allow_emails").is(":checked"),n.data.networkClone=t("#wpstg_network_clone").is(":checked"),n.data.uploadsSymlinked=t("#wpstg_symlink_upload").is(":checked"),n.data.cleanPluginsThemes=t("#wpstg-clean-plugins-themes").is(":checked"),n.data.cleanUploadsDir=t("#wpstg-clean-uploads").is(":checked")}}(),P(s)},P=function(e){E(n.data,(function(t){!1===t&&o("Something went wrong!<br/><br/> Go to WP Staging > Settings and lower 'File Copy Limit' and 'DB Query Limit'. Also set 'CPU Load Priority to low 'and try again. If that does not help, <a href='https://wp-staging.com/support/' target='_blank'>open a support ticket</a> "),t.length<1&&o("Something went wrong! No response. Go to WP Staging > Settings and lower 'File Copy Limit' and 'DB Query Limit'. Also set 'CPU Load Priority to low 'and try again. If that does not help, <a href='https://wp-staging.com/support/' target='_blank'>open a support ticket</a> ");var s=D(t);if(!1!==s&&!1===s.success)return e.removeClass("loading"),void j(s);e.removeClass("loading").html(t),n.cloneExcludeFilters=null,"wpstg_scanning"===n.data.action?(n.areAllTablesChecked=!0,n.directoryNavigator=new w("#wpstg-directories-listing","#wpstg-workflow",wpstg,n.notyf),n.tableSelector=new h("#wpstg-scanning-db","#wpstg-workflow","#wpstg_network_clone",wpstg,n.notyf),n.switchStep(2),n.cloneExcludeFilters=new f):"wpstg_cloning"!==n.data.action&&"wpstg_update"!==n.data.action&&"wpstg_reset"!==n.data.action||n.switchStep(3),n.startCloning()}),"HTML")},j=function(e){new m("wpstg_modal_error",wpstg).show(Object.assign({title:"Error",icon:"error",html:wpstg.i18n.somethingWentWrong+(void 0!==e.message?"<br/>"+e.message:""),width:"500px",confirmButtonText:"Ok",showCancelButton:!1,customClass:{confirmButton:"wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn",cancelButton:"wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn",actions:"wpstg--modal--actions",popup:"wpstg-swal-popup centered-modal"},buttonsStyling:!1,reverseButtons:!0},e.swalOptions),{type:e.type})},D=function(e){if(!e)return!1;try{var t=JSON.parse(e);if(t&&"object"==typeof t)return t}catch(e){}return!1},A=function(t,s){n.data={action:"wpstg_reset",accessToken:wpstg.accessToken,nonce:wpstg.nonce,cloneID:t},n.data=e({},n.data,s);var o=r.get("#wpstg-workflow");P(o)},L=function(){var e=r.get("#wpstg-workflow");e.addClass("loading"),E({action:"wpstg_overview",accessToken:wpstg.accessToken,nonce:wpstg.nonce},(function(t){t.length<1&&o("Something went wrong! No response. Please try the <a href='https://wp-staging.com/docs/wp-staging-settings-for-small-servers/' target='_blank'>WP Staging Small Server Settings</a> or submit an error report."),r.get(".wpstg-current-step"),e.removeClass("loading").html(t)}),"HTML"),n.switchStep(1),r.get(".wpstg-step3-cloning").show(),r.get(".wpstg-step3-pushing").hide()},I=function e(s){var n=t("#deleteDirectory:checked").data("deletepath");E({action:"wpstg_delete_clone",clone:s,accessToken:wpstg.accessToken,nonce:wpstg.nonce,excludedTables:C(),deleteDir:n},(function(n){if(n&&(i(n),void 0!==n.delete&&("finished"===n.delete||"unfinished"===n.delete)))return r.get("#wpstg-removing-clone").removeClass("loading").html(""),"finished"===n.delete&&void 0===n.error&&t('.wpstg-clone[data-clone-id="'+s+'"]').remove(),t("#wpstg-existing-clones .wpstg-clone").length<1&&(r.get("#wpstg-existing-clones").find("h3").text(""),r.get("#wpstg-no-staging-site-results").show()),void r.get(".wpstg-loader").hide();!0===n||e(s)}))},O=function e(){if(n.timer("stop"),!0===n.isFinished)return!0;E({action:"wpstg_cancel_clone",clone:n.data.cloneID,accessToken:wpstg.accessToken,nonce:wpstg.nonce},(function(t){if(t&&void 0!==t.delete&&"finished"===t.delete)return r.get(".wpstg-loader").hide(),void L();!0===t?L():e()}))},R=function e(){if(!0===n.isFinished)return!0;E({action:"wpstg_cancel_update",clone:n.data.cloneID,accessToken:wpstg.accessToken,nonce:wpstg.nonce},(function(t){t&&void 0!==t.delete&&"finished"===t.delete||!0===t?L():e()}))},B=function(){if(!0===n.isFinished)return!0;E({action:"wpstg_restart",accessToken:wpstg.accessToken,nonce:wpstg.nonce},(function(e){e&&void 0!==e.delete&&"finished"===e.delete||!0===e?L():R()}))},q=function(e){var s;null!=e&&void 0!==e&&(e.constructor===Array?t.each(e,(function(e,t){null!==t&&("ERROR"===t.type?r.get(".wpstg-log-details").append('<span class="wpstg--red">['+t.type+"]</span>-["+t.date+"] "+t.message+"</br>"):r.get(".wpstg-log-details").append("["+t.type+"]-["+t.date+"] "+t.message+"</br>"))})):r.get(".wpstg-log-details").append("["+e.type+"]-["+e.date+"] "+e.message+"</br>")),void 0!==(s=r.get(".wpstg-log-details"))[0]&&s.scrollTop(s[0].scrollHeight)},F=function(){r.get("#wpstg-check-space").on("click",(function(e){r.get(".wpstg-loader").show();var t=encodeURIComponent(n.directoryNavigator.getExcludedDirectories()),s=encodeURIComponent(n.directoryNavigator.getExtraDirectoriesRootOnly());E({action:"wpstg_check_disk_space",accessToken:wpstg.accessToken,nonce:wpstg.nonce,excludedDirectories:t,extraDirectories:s},(function(e){if(!1===e)return r.get("#wpstg-clone-id-error").text("Can not detect required disk space").show(),void r.get(".wpstg-loader").hide();r.get("#wpstg-clone-id-error").html("Estimated necessary disk space: "+e.requiredSpace+(null!==e.errorMessage?"<br>"+e.errorMessage:"")+'<br> <span style="color:#444;">Before you proceed ensure your account has enough free disk space to hold the entire instance of the production site. You can check the available space from your hosting account (cPanel or similar).</span>').show(),r.get(".wpstg-loader").hide()}),"json",!1)}))};return n.timer=function(e){if("stop"===e){var t=n.time;return n.time=1,clearInterval(n.executionTime),n.convertSeconds(t)}n.executionTime=setInterval((function(){null!==document.getElementById("wpstg-processing-timer")&&(document.getElementById("wpstg-processing-timer").innerHTML="Elapsed Time: "+n.convertSeconds(n.time)),n.time++,"stop"===e&&(n.time=1,clearInterval(n.executionTime))}),1e3)},n.convertSeconds=function(e){var t=new Date(null);return t.setSeconds(e),t.toISOString().substr(11,8)},n.startCloning=function(){if(a(),F(),"wpstg_cloning"===n.data.action||"wpstg_update"===n.data.action||"wpstg_reset"===n.data.action){n.isCancelled=!1,r.get(".wpstg-loader").show(),r.get("#wpstg-cancel-cloning").text("Cancel"),r.get("#wpstg-resume-cloning").hide(),r.get("#wpstg-error-details").hide(),setTimeout((function(){window.addEventListener("beforeunload",S.warnIfClosingDuringProcess),e()}),wpstg.delayReq),n.timer("start");var e=function e(){if(!0===n.isCancelled)return window.removeEventListener("beforeunload",S.warnIfClosingDuringProcess),!1;var o;(o=!0)&&!1!==o?r.get(".wpstg-loader").show():r.get(".wpstg-loader").hide();var a="",l="";null!==n.directoryNavigator&&(a=n.directoryNavigator.getExcludedDirectories(),l=n.directoryNavigator.getExtraDirectoriesRootOnly()),r.get(".wpstg-log-details").show(),S.ajax({action:"wpstg_processing",accessToken:wpstg.accessToken,nonce:wpstg.nonce,excludedTables:C(),excludedDirectories:encodeURIComponent(a),extraDirectories:encodeURIComponent(l)},(function(o){i(o),void 0!==o.last_msg&&o.last_msg&&q(o.last_msg),!1===o.status?(s(o),setTimeout((function(){r.get(".wpstg-loader").show(),e()}),wpstg.delayReq)):!0===o.status&&"finished"!==o.status?(r.get("#wpstg-error-details").hide(),r.get("#wpstg-error-wrapper").hide(),s(o),e()):("finished"===o.status||void 0!==o.job_done&&o.job_done)&&(window.removeEventListener("beforeunload",S.warnIfClosingDuringProcess),function(e){!0===n.getLogs&&q();s(e),void 0!==e.last_msg&&q(e.last_msg);r.get(".wpstg-loader").hide(),r.get("#wpstg-processing-header").html("Processing Complete"),t("#wpstg-processing-status").text("Succesfully finished"),r.get("#wpstg_staging_name").html(n.data.cloneID),r.get("#wpstg-finished-result").show(),r.get("#wpstg-cancel-cloning").hide(),r.get("#wpstg-resume-cloning").hide(),r.get("#wpstg-cancel-cloning-update").prop("disabled",!0);var o=r.get("#wpstg-clone-url-1"),i=r.get("#wpstg-clone-url");o.attr("href",e.url),o.html(e.url),i.attr("href",e.url),r.get("#wpstg-remove-clone").data("clone",n.data.cloneID),n.isFinished=!0,n.timer("stop"),r.get(".wpstg-loader").hide(),r.get("#wpstg-processing-header").html("Processing Complete");var a=wpstg.i18n.cloneResetComplete;"wpstg_update"===n.data.action&&(a=wpstg.i18n.cloneUpdateComplete);"wpstg_update"!==n.data.action&&"wpstg_reset"!==n.data.action||(r.get("#wpstg-cancel-cloning-update").hide(),r.get(".wpstg-prev-step-link").show(),b.getSwalModal(!0,{confirmButton:"wpstg--btn--confirm wpstg-green-button wpstg-button wpstg-link-btn wpstg-100-width"}).fire({title:"",icon:"success",html:a,width:"500px",focusConfirm:!0}))}(o))}),"json",!1)},s=function(e,t){if(void 0===e.percentage)return!1;"database"===e.job&&(r.get("#wpstg-progress-db").width(.2*e.percentage+"%").html(e.percentage+"%"),r.get("#wpstg-processing-status").html(e.percentage.toFixed(0)+"% - Step 1 of 4 Cloning Database Tables...")),"SearchReplace"===e.job&&(r.get("#wpstg-progress-db").css("background-color","#3bc36b"),r.get("#wpstg-progress-db").html("1. Database"),r.get("#wpstg-progress-db").width("20%"),r.get("#wpstg-progress-sr").width(.1*e.percentage+"%").html(e.percentage+"%"),r.get("#wpstg-processing-status").html(e.percentage.toFixed(0)+"% - Step 2 of 4 Preparing Database Data...")),"directories"===e.job&&(r.get("#wpstg-progress-sr").css("background-color","#3bc36b"),r.get("#wpstg-progress-sr").html("2. Data"),r.get("#wpstg-progress-sr").width("10%"),r.get("#wpstg-progress-dirs").width(.1*e.percentage+"%").html(e.percentage+"%"),r.get("#wpstg-processing-status").html(e.percentage.toFixed(0)+"% - Step 3 of 4 Getting files...")),"files"===e.job&&(r.get("#wpstg-progress-dirs").css("background-color","#3bc36b"),r.get("#wpstg-progress-dirs").html("3. Files"),r.get("#wpstg-progress-dirs").width("10%"),r.get("#wpstg-progress-files").width(.6*e.percentage+"%").html(e.percentage+"%"),r.get("#wpstg-processing-status").html(e.percentage.toFixed(0)+"% - Step 4 of 4 Copy files...")),"finish"===e.job&&(r.get("#wpstg-progress-files").css("background-color","#3bc36b"),r.get("#wpstg-progress-files").html("4. Copy Files"),r.get("#wpstg-progress-files").width("60%"),r.get("#wpstg-processing-status").html(e.percentage.toFixed(0)+"% - Cloning Process Finished"))}}},n.switchStep=function(e){r.get(".wpstg-current-step").removeClass("wpstg-current-step"),r.get(".wpstg-step"+e).addClass("wpstg-current-step")},n.init=function(){var e,o,i;L(),o=r.get("#wpstg-workflow"),i=ajaxurl.replace("/admin-ajax.php","")+"/images/spinner",2<window.devicePixelRatio&&(i+="-2x"),s="<img src=''"+(i+=".gif")+"' alt='' class='ajax-spinner general-spinner' />",o.on("click",".wpstg-button-unselect",(function(e){e.preventDefault(),!1===n.areAllTablesChecked?(r.get("#wpstg_select_tables_cloning .wpstg-db-table").prop("selected","selected"),r.get(".wpstg-button-unselect").text("Unselect All"),r.get(".wpstg-db-table-checkboxes").prop("checked",!0),n.areAllTablesChecked=!0):(r.get("#wpstg_select_tables_cloning .wpstg-db-table").prop("selected",!1),r.get(".wpstg-button-unselect").text("Select All"),r.get(".wpstg-db-table-checkboxes").prop("checked",!1),n.areAllTablesChecked=!1)})).on("keyup","#wpstg-new-clone-id",(function(){if(document.getElementById("wpstg-error-details").style.display="none","number"==typeof e&&clearInterval(e),void 0===this.value||""===this.value)return r.get("#wpstg-new-clone-id").removeClass("wpstg-error-input"),r.get("#wpstg-start-cloning").removeAttr("disabled"),void r.get("#wpstg-clone-id-error").text("").hide();var t=b.slugify(this.value);e=setTimeout((function(){E({action:"wpstg_check_clone",accessToken:wpstg.accessToken,nonce:wpstg.nonce,directoryName:t},(function(e){"success"===e.status?(r.get("#wpstg-new-clone-id").removeClass("wpstg-error-input"),r.get("#wpstg-start-cloning").removeAttr("disabled"),r.get("#wpstg-clone-id-error").text("").hide()):(r.get("#wpstg-new-clone-id").addClass("wpstg-error-input"),r.get("#wpstg-start-cloning").prop("disabled",!0),r.get("#wpstg-clone-id-error").text(e.message).show())}))}),500)})).on("click","#wpstg-start-cloning",(function(){a(),n.isCancelled=!1,n.getLogs=!1,n.progressBar=0})).on("input","#wpstg-new-clone-id",(function(){if(!(t("#wpstg-clone-directory").length<1)){var e=b.slugify(this.value).substring(0,16),s=t("#wpstg-use-target-dir"),n=t("#wpstg-use-target-hostname"),r=s.data("base-path"),o=n.data("base-uri");r&&(r=r.replace(/\/+$/g,"")+"/"+e+"/"),o&&(o=o.replace(/\/+$/g,"")+"/"+e),t(".wpstg-use-target-dir--value").text(r),t(".wpstg-use-target-hostname--value").text(o),s.attr("data-path",r),n.attr("data-uri",o),t("#wpstg_clone_dir").attr("placeholder",r),t("#wpstg_clone_hostname").attr("placeholder",o)}})).on("input","#wpstg_clone_hostname",(function(){""===t(this).val()||l()?t("#wpstg_clone_hostname_error").remove():l()||t("#wpstg_clone_hostname_error").length||t("#wpstg-clone-directory tr:last-of-type").after('<tr><td> </td><td><p id="wpstg_clone_hostname_error" style="color: red;"> Invalid host name. Please provide it in a format like http://example.com</p></td></tr>')})),v(),function(){var e=r.get("#wpstg-workflow");e.on("click",".wpstg-next-step-link",(function(s){s.preventDefault();var n=t(this);if(t("#wpstg_clone_hostname").length&&!l())return t("#wpstg_clone_hostname").focus(),!1;if("wpstg_update"===n.data("action")||"wpstg_reset"===n.data("action")){var r="";if("wpstg_update"===n.data("action")&&(r=" \n\nExclude all tables and folders you do not want to overwrite, first! \n\nDo not cancel the updating process! This can break your staging site. \n\nCreate a backup of your staging website before you proceed."),!confirm("STOP! This will overwrite your staging site with all selected data from the production site! This should be used only if you want to clone again your production site. Are you sure you want to do this?"+r))return!1}if(n.attr("disabled"))return!1;"wpstg_cloning"===n.data("action")&&t("#wpstg-ext-db").is(":checked")?T(n,e):_(n,e)})).on("click",".wpstg-prev-step-link",(function(e){e.preventDefault(),r.get(".wpstg-loader").removeClass("wpstg-finished"),r.get(".wpstg-loader").hide(),L()}))}(),r.get("#wpstg-workflow").on("click",".wpstg-tab-header",(function(e){e.preventDefault();var s=t(this),n=r.get(s.data("id"));s.toggleClass("expand"),n.slideToggle();var o=s.find(".wpstg-tab-triangle");s.hasClass("expand")?(o.removeClass("wpstg-no-icon"),o.text(""),o.addClass("wpstg-rotate-90")):o.removeClass("wpstg-rotate-90")})),b.listenTooltip(),new k,new u,new x,n.notyf=new Notyf({duration:1e4,position:{x:"center",y:"bottom"},dismissible:!0,types:[{type:"warning",background:"orange",icon:!1}]})},n.ajax=E,n.showError=o,n.getLogs=q,n.loadOverview=L,n}(jQuery);jQuery(document).ready((function(){S.init(),window.WPStaging=S})),jQuery(document).ready((function(e){function t(s,n){void 0===n&&(n="false");var r=s.next(),o=e(".wpstg--tab--active .wpstg-report-email").val(),i=e(".wpstg--tab--active .wpstg-report-hosting-provider").val(),a=e(".wpstg--tab--active .wpstg-report-description").val(),l=e(".wpstg--tab--active .wpstg-report-syslog").is(":checked"),c=e(".wpstg--tab--active .wpstg-report-terms").is(":checked");s.attr("disabled",!0),r.css("visibility","visible"),e.ajax({url:ajaxurl,type:"POST",dataType:"json",async:!0,data:{action:"wpstg_send_report",accessToken:wpstg.accessToken,nonce:wpstg.nonce,wpstg_email:o,wpstg_provider:i,wpstg_message:a,wpstg_syslog:+l,wpstg_terms:+c,wpstg_force_send:n}}).done((function(n){if(s.attr("disabled",!1),r.css("visibility","hidden"),n.errors.length>0){e(".wpstg--tab--active .wpstg-report-issue-form .wpstg-message").remove();var o=e("<div />").addClass("wpstg-message wpstg-error-message");e.each(n.errors,(function(e,n){"already_submitted"===n.status?(o="",b.getSwalModal(!0,{container:"wpstg-issue-resubmit-confirmation"}).fire({title:"",icon:"warning",html:n.message,showCancelButton:!0,focusConfirm:!1,confirmButtonText:"Yes",cancelButtonText:"No"}).then((function(e){e.isConfirmed&&t(s,"true")}))):o.append("<p>"+n+"</p>")})),e(".wpstg--tab--active .wpstg-report-issue-form").prepend(o)}else{var i=e("<div />").addClass("wpstg-message wpstg-success-message");i.append("<p>Thanks for submitting your request! You should receive an auto reply mail with your ticket ID immediately for confirmation!<br><br>If you do not get that mail please contact us directly at <strong>support@wp-staging.com</strong></p>"),e(".wpstg--tab--active .wpstg-report-issue-form").html(i),e(".wpstg--tab--active .wpstg-success-message").append('<div style="float:right;margin-top:10px;"><a id="wpstg-success-button" href="#" class="wpstg--red">[X] CLOSE</a></div>'),setTimeout((function(){e(".wpstg--tab--active .wpstg-report-issue-form").removeClass("wpstg-report-active")}),2e3)}}))}e("body").on("click","#wpstg-report-issue-button",(function(t){console.log("REPORT"),e(".wpstg--tab--active .wpstg-report-issue-form").toggleClass("wpstg-report-show"),t.preventDefault()})),e("body").on("click","#wpstg-backups-report-issue-button",(function(t){e(".wpstg--tab--active .wpstg-report-issue-form").toggleClass("wpstg-report-show"),t.preventDefault()})),e("body").on("click","#wpstg-report-cancel",(function(t){e(".wpstg--tab--active .wpstg-report-issue-form").removeClass("wpstg-report-show"),t.preventDefault()})),e("body").on("click",".wpstg--tab--active #wpstg-report-submit",(function(s){t(e(this),"false"),s.preventDefault()})),e("body").on("click","#wpstg-success-button",(function(t){t.preventDefault(),e(".wpstg-report-issue-form").removeClass("wpstg-report-show")})),e(document).on("click",".wpstg-dropdown>.wpstg-dropdown-toggler",(function(t){t.preventDefault(),e(t.target).next(".wpstg-dropdown-menu").toggleClass("shown"),e(t.target).find(".wpstg-caret").toggleClass("wpstg-caret-up")})),e(document).on("click",".wpstg-caret",(function(t){t.preventDefault();var s=e(t.target).closest(".wpstg-dropdown-toggler");s&&s.trigger("click")})),document.addEventListener("click",(function(t){if(!t.target.closest(".wpstg-dropdown-toggler")){for(var s=document.getElementsByClassName("wpstg-dropdown-menu"),n=0;n<s.length;n++)s[n].classList.remove("shown");e(".wpstg-caret").removeClass("wpstg-caret-up")}})),window.addEventListener("finishedProcessWithError",(function(t){e.ajax({url:ajaxurl,type:"POST",dataType:"json",data:{action:"wpstg_job_error",accessToken:wpstg.accessToken,nonce:wpstg.nonce,error_message:t.detail.error,job_id:b.getJobId()}})}))}))}();
|
2 |
//# sourceMappingURL=wpstg-admin.min.js.map
|
assets/js/dist/wpstg-admin.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"file":"wpstg-admin.min.js","sources":["../src/modules/wpstg-polyfill.js","../src/modules/wpstg-dom-utils.js","../src/modules/wpstg-clone-staging.js","../src/modules/wpstg-directory-navigation.js","../src/modules/wpstg-table-selection.js","../src/modules/wpstg-exclude-filters.js","../src/modules/wpstg-modal.js","../src/modules/wpstg-hover-intent.js","../src/wpstg.js","../src/modules/wpstg-reset-modal.js","../src/modules/wpstg-cloning-advance-settings.js","../src/modules/wpstg-main-menu.js","../src/wpstg-admin.js"],"sourcesContent":["/**\n * Polyfills the `Element.prototype.closest` function if not available in the browser.\n *\n * @return {Function} A function that will return the closest element, by selector, to this element.\n */\nfunction polyfillClosest() {\n if (Element.prototype.closest) {\n if (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n\n Element.prototype.closest = function(s) {\n let el = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n }\n\n return function(element, selector) {\n return element instanceof Element ? element.closest(selector) : null;\n };\n}\n\nexport const closest = polyfillClosest();\n","import {closest} from './wpstg-polyfill';\n\n/**\n * WP STAGING basic jQuery replacement\n */\n\n/**\n * Shortcut for document.querySelector() or jQuery's $()\n * Return single element only\n */\nexport function qs(selector) {\n return document.querySelector(selector);\n}\n\n/**\n * Shortcut for document.querySelector() or jQuery's $()\n * Return collection of elements\n */\nexport function all(selector) {\n return document.querySelectorAll(selector);\n}\n\n/**\n * alternative of jQuery - $(parent).on(event, selector, handler)\n */\nexport function addEvent(parent, evt, selector, handler) {\n if (!parent instanceof Element) {\n return;\n }\n\n parent.addEventListener(evt, function(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n handler(event.target.closest(selector), event);\n }\n }, false);\n}\n\nexport function slideDown(element, duration = 400) {\n element.style.display = 'block';\n element.style.overflow = 'hidden';\n const height = element.offsetHeight;\n element.style.height = '0px';\n element.style.transitionProperty = 'height';\n element.style.transitionDuration = duration + 'ms';\n setTimeout(() => {\n element.style.height = height + 'px';\n window.setTimeout(() => {\n element.style.removeProperty('height');\n element.style.removeProperty('overflow');\n element.style.removeProperty('transition-duration');\n element.style.removeProperty('transition-property');\n }, duration);\n }, 0);\n}\n\nexport function slideUp(element, duration = 400) {\n element.style.display = 'block';\n element.style.overflow = 'hidden';\n const height = element.offsetHeight;\n element.style.height = height + 'px';\n element.style.transitionProperty = 'height';\n element.style.transitionDuration = duration + 'ms';\n setTimeout(() => {\n element.style.height = '0px';\n window.setTimeout(() => {\n element.style.display = 'none';\n element.style.removeProperty('height');\n element.style.removeProperty('overflow');\n element.style.removeProperty('transition-duration');\n element.style.removeProperty('transition-property');\n }, duration);\n }, 0);\n}\n\nexport function fadeOut(element, duration = 300) {\n element.style.opacity = 1;\n element.style.transitionProperty = 'opacity';\n element.style.transitionDuration = duration + 'ms';\n setTimeout(() => {\n element.style.opacity = 0;\n window.setTimeout(() => {\n element.style.display = 'none';\n element.style.removeProperty('opacity');\n element.style.removeProperty('transition-duration');\n element.style.removeProperty('transition-property');\n }, duration);\n }, 0);\n}\n\nexport function getNextSibling(element, selector) {\n let sibling = element.nextElementSibling;\n\n while (sibling) {\n if (sibling.matches(selector)) {\n return sibling;\n }\n\n sibling = sibling.nextElementSibling;\n }\n};\n\nexport function getParents(element, selector) {\n const result = [];\n for (let parent = element && element.parentElement; parent; parent = parent.parentElement) {\n if (parent.matches(selector)) {\n result.push(parent);\n }\n }\n\n return result;\n}\n\n/**\n * Check if element has class name\n * @param element\n * @param className\n * @return {boolean}\n */\nexport function hasClass(element, className) {\n return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;\n}\n\n/**\n * Dispatches a change on an element that will trigger, depending on the element type,\n * cascading changes on elements dependant on the one that triggered the change and that\n * belong in the same container.\n *\n * @param {Element} element A reference to the Element the change was triggered from.\n *\n * @return {void} The function does not return any value and will have the side-effect of\n * hiding or showing dependant elements.\n */\nexport function handleDisplayDependencies(element) {\n if (!element instanceof Element || !element.id) {\n return;\n }\n\n const containerSelector = '.wpstg-container';\n // Use the default WordPress CSS class to hide and show the objects.\n const hiddenClass = 'hidden';\n const elementType = element.getAttribute('type');\n\n switch (elementType) {\n case 'checkbox':\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n const showIfChecked = container.querySelectorAll(`[data-show-if-checked=\"${element.id}\"]`);\n const showIfUnchecked = container.querySelectorAll(`[data-show-if-unchecked=\"${element.id}\"]`);\n const checked = element.checked;\n\n if (showIfChecked.length) {\n for (const el of showIfChecked) {\n if (checked) {\n el.classList.remove(hiddenClass);\n } else {\n el.classList.add(hiddenClass);\n }\n }\n }\n\n if (showIfUnchecked.length) {\n for (const el of showIfUnchecked) {\n if (checked) {\n el.classList.add(hiddenClass);\n } else {\n el.classList.remove(hiddenClass);\n }\n }\n }\n\n return;\n default:\n // Not a type we handle.\n return;\n }\n}\n\n/**\n * Initializes the display status of any element that depends on the status of another to\n * either hide or show.\n *\n * @return {void} The function will have the side-effect to toggle the hide/show class from\n * elements dependant on another to hide or show.\n */\nexport function initDependantDisplay() {\n const displayControllerSelector = '[onchange^=\"WPStaging.handleDisplayDependencies\"]';\n const displayControllers = document.querySelectorAll(displayControllerSelector);\n for (const displayController of displayControllers) {\n handleDisplayDependencies(displayController);\n }\n}\n\n/**\n * Toggle target element set in data-wpstg-target of the given element\n *\n * @param {Element} element A reference to the Element the change was triggered from.\n *\n * @return {void} The function does not return any value and will have the side-effect of\n * hiding or showing dependant elements.\n */\nexport function handleToggleElement(element) {\n if (!element instanceof Element || !element.getAttribute('data-wpstg-target')) {\n return;\n }\n\n const containerSelector = '.wpstg_admin';\n // Use the default WordPress CSS class to hide and show the objects.\n const hiddenClass = 'hidden';\n\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n const elements = container.querySelectorAll(element.getAttribute('data-wpstg-target'));\n\n if (elements.length) {\n for (const el of elements) {\n el.classList.toggle(hiddenClass);\n }\n }\n}\n\n/**\n * Copy text in data-wpstg-copy to element(s) in data-wpstg-target\n *\n * @param {Element} element\n *\n * @return {void}\n */\nexport function handleCopyPaste(element) {\n if (!element instanceof Element || !element.getAttribute('data-wpstg-target') || !element.getAttribute('data-wpstg-copy')) {\n return;\n }\n\n const containerSelector = '.wpstg_admin';\n\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n navigator.clipboard.writeText(element.getAttribute('data-wpstg-copy'));\n const elements = container.querySelectorAll(element.getAttribute('data-wpstg-target'));\n\n if (elements.length) {\n for (const el of elements) {\n el.value = element.getAttribute('data-wpstg-copy', '');\n }\n }\n}\n\n/**\n * Copy text in data-wpstg-source to clipboard\n *\n * @param {Element} element\n *\n * @return {void}\n */\nexport function handleCopyToClipboard(element) {\n if (!element instanceof Element || !element.getAttribute('data-wpstg-source')) {\n return;\n }\n\n const containerSelector = '.wpstg_admin';\n\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n const el = container.querySelector(element.getAttribute('data-wpstg-source'));\n\n if (el) {\n navigator.clipboard.writeText(el.value);\n }\n}\n\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Enable/Disable cloning for staging site\n */\nexport default class WpstgCloneStaging {\n constructor(\n pageWrapperId = '#wpstg-clonepage-wrapper',\n wpstgObject = wpstg,\n ) {\n this.pageWrapper = dom.qs(pageWrapperId);\n this.wpstgObject = wpstgObject;\n this.enableButtonId = '#wpstg-enable-staging-cloning';\n this.enableAction = 'wpstg_enable_staging_cloning';\n\n this.notyf = new Notyf({\n duration: 10000,\n position: {\n x: 'center',\n y: 'bottom',\n },\n dismissible: true,\n types: [\n {\n type: 'warning',\n background: 'orange',\n icon: false,\n },\n ],\n });\n this.init();\n }\n\n addEvents() {\n if (this.pageWrapper === null) {\n return;\n }\n\n dom.addEvent(this.pageWrapper, 'click', this.enableButtonId, () => {\n this.sendRequest(this.enableAction);\n });\n }\n\n init() {\n this.addEvents();\n }\n\n sendRequest(action) {\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams({\n action: action,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((data) => {\n // Reload current page if successful.\n if ('undefined' !== typeof (data.success) && data.success) {\n location.reload();\n return;\n }\n\n // There will be message probably in case of error\n if ('undefined' !== typeof (data.message)) {\n this.notyf.error(data.message);\n return;\n }\n\n this.notyf.error(this.wpstgObject.i18n['somethingWentWrong']);\n }).catch((error) => {\n console.warn(this.wpstgObject.i18n['somethingWentWrong'], error);\n });\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Fetch directory direct child directories\n */\nexport default class WpstgDirectoryNavigation {\n constructor(\n directoryListingSelector = '#wpstg-directories-listing',\n workflowSelector = '#wpstg-workflow',\n wpstgObject = wpstg,\n notyf = null,\n ) {\n this.directoryListingContainer = dom.qs(directoryListingSelector);\n this.workflow = dom.qs(workflowSelector);\n this.wpstgObject = wpstgObject;\n this.dirCheckboxSelector = '.wpstg-check-dir';\n this.dirExpandSelector = '.wpstg-expand-dirs';\n this.unselectAllDirsSelector = '.wpstg-unselect-dirs';\n this.selectDefaultDirsSelector = '.wpstg-select-dirs-default';\n this.fetchChildrenAction = 'wpstg_fetch_dir_childrens';\n this.currentCheckboxElement = null;\n this.currentParentDiv = null;\n this.currentLoader = null;\n this.existingExcludes = [];\n this.excludedDirectories = [];\n this.isDefaultSelected = false;\n this.notyf = notyf;\n\n this.init();\n }\n\n addEvents() {\n if (this.directoryListingContainer === null) {\n console.log('Error: directory navigation add events');\n return;\n }\n\n dom.addEvent(this.directoryListingContainer, 'change', this.dirCheckboxSelector, (element, event) => {\n event.preventDefault();\n console.log(this.getExcludedDirectories());\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', this.dirExpandSelector, (element, event) => {\n event.preventDefault();\n if (this.toggleDirExpand(element)) {\n this.sendRequest(this.fetchChildrenAction, element);\n }\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', this.unselectAllDirsSelector, () => {\n this.unselectAll();\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', this.selectDefaultDirsSelector, () => {\n this.selectDefault();\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', '.wpstg-expand-dirs', (target, event) => {\n event.preventDefault();\n this.toggleDirectoryNavigation(target);\n });\n\n dom.addEvent(this.directoryListingContainer, 'change', 'input.wpstg-check-dir', (target) => {\n this.updateDirectorySelection(target);\n });\n }\n\n init() {\n this.addEvents();\n this.parseExcludes();\n }\n\n /**\n * Toggle Dir Expand,\n * Return true if children aren't fetched\n * @param {HTMLElement} element\n * @return {boolean}\n */\n toggleDirExpand(element) {\n this.currentParentDiv = element.parentElement;\n this.currentCheckboxElement = element.previousSibling;\n this.currentLoader = this.currentParentDiv.querySelector('.wpstg-is-dir-loading');\n if (this.currentCheckboxElement.getAttribute('data-navigateable', 'false') === 'false') {\n return false;\n }\n\n if (this.currentCheckboxElement.getAttribute('data-scanned', 'false') === 'false') {\n return true;\n }\n\n return false;\n }\n\n sendRequest(action) {\n if (this.currentLoader !== null) {\n this.currentLoader.style.display = 'inline-block';\n }\n\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams({\n action: action,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n dirPath: this.currentCheckboxElement.value,\n isChecked: this.currentCheckboxElement.checked,\n forceDefault: this.isDefaultSelected,\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((data) => {\n if ('undefined' !== typeof (data.success) && data.success) {\n this.currentCheckboxElement.setAttribute('data-scanned', true);\n const dirContainer = document.createElement('div');\n dirContainer.classList.add('wpstg-dir');\n dirContainer.classList.add('wpstg-subdir');\n dirContainer.innerHTML = JSON.parse(data.directoryListing);\n this.currentParentDiv.appendChild(dirContainer);\n if (this.currentLoader !== null) {\n this.currentLoader.style.display = 'none';\n }\n\n dom.slideDown(dirContainer);\n\n return;\n }\n\n if (this.notyf !== null) {\n this.notyf.error(this.wpstgObject.i18n['somethingWentWrong']);\n } else {\n alert('Error: ' + this.wpstgObject.i18n['somethingWentWrong']);\n }\n }).catch((error) => {\n console.warn(this.wpstgObject.i18n['somethingWentWrong'], error);\n });\n }\n\n getExcludedDirectories() {\n this.excludedDirectories = [];\n this.directoryListingContainer.querySelectorAll('.wpstg-dir input:not(:checked)').forEach((element) => {\n if (!this.isParentExcluded(element.value)) {\n this.excludedDirectories.push(element.value);\n }\n });\n\n this.existingExcludes.forEach((exclude) => {\n if (!this.isParentExcluded(exclude) && !this.isScanned(exclude)) {\n this.excludedDirectories.push(exclude);\n }\n });\n\n return this.excludedDirectories.join(this.wpstgObject.settings.directorySeparator);\n }\n\n /**\n * @param {string} path\n * @return {bool}\n */\n isParentExcluded(path) {\n let isParentAlreadyExcluded = false;\n this.excludedDirectories.forEach((dir) => {\n if (path.startsWith(dir + '/')) {\n isParentAlreadyExcluded = true;\n }\n });\n\n return isParentAlreadyExcluded;\n }\n\n getExtraDirectoriesRootOnly() {\n this.getExcludedDirectories();\n const extraDirectories = [];\n this.directoryListingContainer.querySelectorAll(':not(.wpstg-subdir)>.wpstg-dir>input.wpstg-wp-non-core-dir:checked').forEach((element) => {\n extraDirectories.push(element.value);\n });\n\n // Check if extra directories text area exists\n // TODO: remove extraCustomDirectories code if no one require extraCustomDirectories...\n const extraDirectoriesTextArea = dom.qs('#wpstg_extraDirectories');\n if (extraDirectoriesTextArea === null || extraDirectoriesTextArea.value === '') {\n return extraDirectories.join(this.wpstgObject.settings.directorySeparator);\n }\n\n const extraCustomDirectories = extraDirectoriesTextArea.value.split(/\\r?\\n/);\n\n return extraDirectories.concat(extraCustomDirectories).join(this.wpstgObject.settings.directorySeparator);\n }\n\n unselectAll() {\n this.directoryListingContainer.querySelectorAll('.wpstg-dir input').forEach((element) => {\n element.checked = false;\n });\n }\n\n selectDefault() {\n // unselect all checkboxes\n this.unselectAll();\n\n // only select those checkboxes whose class is wpstg-wp-core-dir\n this.directoryListingContainer.querySelectorAll('.wpstg-dir input.wpstg-wp-core-dir').forEach((element) => {\n element.checked = true;\n });\n\n // then unselect those checkboxes whose parent has wpstg extra checkbox\n this.directoryListingContainer.querySelectorAll('.wpstg-dir > .wpstg-wp-non-core-dir').forEach((element) => {\n element.parentElement.querySelectorAll('input.wpstg-wp-core-dir').forEach((element) => {\n element.checked = false;\n });\n });\n\n this.isDefaultSelected = true;\n }\n\n parseExcludes() {\n this.existingExcludes = this.directoryListingContainer.getAttribute('data-existing-excludes', []);\n if (this.existingExcludes === '') {\n this.existingExcludes = [];\n return;\n }\n\n if (this.existingExcludes.length === 0) {\n this.existingExcludes = [];\n return;\n }\n\n const existingExcludes = this.existingExcludes.split(',');\n this.existingExcludes = existingExcludes.map((exclude) => {\n if (exclude.substr(0, 1) === '/') {\n return exclude.slice(1);\n }\n\n return exclude;\n });\n }\n\n isScanned(exclude) {\n let scanned = false;\n this.directoryListingContainer.querySelectorAll('.wpstg-dir>input').forEach((element) => {\n if (element.value == exclude) {\n scanned = true;\n }\n });\n\n return scanned;\n }\n\n toggleDirectoryNavigation(element) {\n const cbElement = element.previousSibling;\n if (cbElement.getAttribute('data-navigateable', 'false') === 'false') {\n return;\n }\n\n if (cbElement.getAttribute('data-scanned', 'false') === 'false') {\n return;\n }\n\n const subDirectories = dom.getNextSibling(element, '.wpstg-subdir');\n\n if (subDirectories.style.display === 'none') {\n dom.slideDown(subDirectories);\n } else {\n dom.slideUp(subDirectories);\n }\n }\n\n updateDirectorySelection(element) {\n const parent = element.parentElement;\n if (element.checked) {\n dom.getParents(parent, '.wpstg-dir').forEach((parElem) => {\n for (let i = 0; i < parElem.children.length; i++) {\n if (parElem.children[i].matches('.wpstg-check-dir')) {\n parElem.children[i].checked = true;\n }\n }\n });\n parent.querySelectorAll('.wpstg-expand-dirs').forEach((x) => {\n x.classList.remove('disabled');\n });\n parent.querySelectorAll('.wpstg-subdir .wpstg-check-dir').forEach((x) => {\n x.checked = true;\n });\n } else {\n parent.querySelectorAll('.wpstg-expand-dirs, .wpstg-check-subdirs').forEach((x) => {\n x.classList.add('disabled');\n });\n parent.querySelectorAll('.wpstg-dir .wpstg-check-dir').forEach((x) => {\n x.checked = false;\n });\n }\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Database tables selection\n */\nexport default class WpstgTableSelection {\n constructor(\n databaseTableSectionSelector = '#wpstg-scanning-db',\n workflowSelector = '#wpstg-workflow',\n networkCloneSelector = '#wpstg_network_clone',\n wpstgObject = wpstg,\n ) {\n this.databaseTableSection = dom.qs(databaseTableSectionSelector);\n this.workflow = dom.qs(workflowSelector);\n this.networkCloneSelector = networkCloneSelector;\n this.networkCloneCheckbox = dom.qs(networkCloneSelector);\n this.wpstgObject = wpstgObject;\n this.isAllTablesChecked = true;\n this.isMultisite = this.wpstgObject.isMultisite === '1';\n this.isNetworkClone = false;\n\n this.init();\n }\n\n setNetworkClone(isNetworkClone) {\n this.isNetworkClone = isNetworkClone;\n }\n\n addEvents() {\n if (this.workflow === null) {\n console.log('Error: database table section is null. Cannot register events');\n return;\n }\n\n dom.addEvent(this.workflow, 'change', this.networkCloneSelector, () => {\n this.selectDefaultTables();\n });\n\n dom.addEvent(this.workflow, 'click', '.wpstg-button-select', (target, event) => {\n event.preventDefault();\n this.selectDefaultTables();\n });\n\n dom.addEvent(this.workflow, 'click', '.wpstg-button-unselect', (target, event) => {\n event.preventDefault();\n this.toggleTableSelection();\n });\n }\n\n init() {\n this.addEvents();\n }\n\n getRegexPattern() {\n let pattern = '^' + this.wpstgObject.tblprefix;\n let isNetwork = false;\n if (this.networkCloneCheckbox !== undefined && this.networkCloneCheckbox !== null) {\n isNetwork = this.networkCloneCheckbox.checked;\n }\n\n // Force network clone true if set explicitly\n if (this.isNetworkClone) {\n isNetwork = true;\n }\n\n if (this.isMultisite && !isNetwork) {\n pattern += '([^0-9])_*';\n }\n\n return pattern;\n }\n\n selectDefaultTables() {\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning .wpstg-db-table');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (name.match(regexPattern)) {\n option.selected = true;\n } else {\n option.selected = false;\n }\n });\n }\n\n toggleTableSelection() {\n if (false === this.isAllTablesChecked) {\n this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning .wpstg-db-table').forEach((option) => {\n option.selected = true;\n });\n this.databaseTableSection.querySelector('.wpstg-button-unselect').innerHTML = 'Unselect All';\n // cache.get('.wpstg-db-table-checkboxes').prop('checked', true);\n this.isAllTablesChecked = true;\n } else {\n this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning .wpstg-db-table').forEach((option) => {\n option.selected = false;\n });\n this.databaseTableSection.querySelector('.wpstg-button-unselect').innerHTML = 'Select All';\n // cache.get('.wpstg-db-table-checkboxes').prop('checked', false);\n this.isAllTablesChecked = false;\n }\n }\n\n getSelectedTablesWithoutPrefix() {\n const selectedTablesWithoutPrefix = [];\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning option:checked');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (!name.match(regexPattern)) {\n selectedTablesWithoutPrefix.push(option.value);\n }\n });\n\n return selectedTablesWithoutPrefix.join(this.wpstgObject.settings.directorySeparator);\n }\n\n getIncludedTables() {\n const includedTables = [];\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning option:checked');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (name.match(regexPattern)) {\n includedTables.push(option.value);\n }\n });\n\n return includedTables.join(this.wpstgObject.settings.directorySeparator);\n }\n\n getExcludedTables() {\n const excludedTables = [];\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning option:not(:checked)');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (name.match(regexPattern)) {\n excludedTables.push(option.value);\n }\n });\n\n return excludedTables.join(this.wpstgObject.settings.directorySeparator);\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Rich Exclude Filter Module\n */\nexport default class WpstgExcludeFilters {\n constructor(\n excludeFilterContainerSelector = '#wpstg-exclude-filters-container',\n wpstgObject = wpstg,\n ) {\n this.excludeContainer = dom.qs(excludeFilterContainerSelector);\n this.excludeTableBody = dom.qs(`${excludeFilterContainerSelector} tbody`);\n this.wpstgObject = wpstgObject;\n this.init();\n }\n\n addEvents() {\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-file-size-rule', () => {\n this.addFileSizeExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-file-ext-rule', () => {\n this.addFileExtExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-file-name-rule', () => {\n this.addFileNameExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-dir-name-rule', () => {\n this.addDirNameExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-clear-all-rules', () => {\n this.clearExcludes();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-remove-exclude-rule', (target) => {\n this.removeExclude(target);\n });\n }\n\n init() {\n if (this.excludeContainer === null) {\n console.log('Error: Given table selector not found!');\n return;\n }\n\n this.addEvents();\n }\n\n addFileSizeExclude() {\n this.addExcludeRuleRow('#wpstg-file-size-exclude-filter-template');\n }\n\n addFileExtExclude() {\n this.addExcludeRuleRow('#wpstg-file-ext-exclude-filter-template');\n }\n\n addFileNameExclude() {\n this.addExcludeRuleRow('#wpstg-file-name-exclude-filter-template');\n }\n\n addDirNameExclude() {\n this.addExcludeRuleRow('#wpstg-dir-name-exclude-filter-template');\n }\n\n addExcludeRuleRow(templateName) {\n const excludeRowTemplate = dom.qs(templateName);\n if (excludeRowTemplate !== null) {\n const clone = excludeRowTemplate.content.cloneNode(true);\n const excludeRow = clone.querySelector('tr');\n\n this.excludeTableBody.appendChild(excludeRow);\n dom.all('.wpstg-has-exclude-rules').forEach((e) => {\n e.style.display = 'inherit';\n });\n }\n }\n\n clearExcludes() {\n this.excludeTableBody.innerHTML = '';\n dom.all('.wpstg-has-exclude-rules').forEach((e) => {\n e.style.display = 'none';\n });\n }\n\n removeExclude(target) {\n if (target.parentElement !== null && target.parentElement.parentElement !== null) {\n this.excludeTableBody.removeChild(target.parentElement.parentElement);\n }\n\n if (this.excludeTableBody.innerHTML.trim() === '') {\n dom.all('.wpstg-has-exclude-rules').forEach((e) => {\n e.style.display = 'none';\n });\n }\n }\n\n /**\n * Converts all the exclude filters arrays into one single string to keep size of post request small\n * @return {string}\n */\n getExcludeFilters() {\n const globExcludes = [];\n const sizeExcludes = [];\n\n const sizeCompares = this.excludeTableBody.querySelectorAll('select[name=\"wpstgFileSizeExcludeRuleCompare[]\"]');\n const sizeSizes = this.excludeTableBody.querySelectorAll('input[name=\"wpstgFileSizeExcludeRuleSize[]\"]');\n const sizeByte = this.excludeTableBody.querySelectorAll('select[name=\"wpstgFileSizeExcludeRuleByte[]\"]');\n for (const [key, sizeInput] of Object.entries(sizeSizes)) {\n if (sizeInput.value !== '') {\n sizeExcludes.push(sizeCompares[key].value + ' ' + sizeInput.value + sizeByte[key].value);\n }\n }\n\n const extensionInputs = this.excludeTableBody.querySelectorAll('input[name=\"wpstgFileExtExcludeRule[]\"]');\n extensionInputs.forEach((x) => {\n const ext = this.cleanStringForGlob(x.value);\n if (ext !== '') {\n globExcludes.push('ext:' + ext.trim());\n }\n });\n\n const fileNamesPos = this.excludeTableBody.querySelectorAll('select[name=\"wpstgFileNameExcludeRulePos[]\"]');\n const fileNames = this.excludeTableBody.querySelectorAll('input[name=\"wpstgFileNameExcludeRulePath[]\"]');\n for (const [key, fileInput] of Object.entries(fileNames)) {\n let fileName = '';\n if ('name_exact_matches' === fileNamesPos[key].value) {\n fileName = this.cleanStringForGlobExactMatches(fileInput.value);\n } else {\n fileName = this.cleanStringForGlob(fileInput.value);\n }\n\n if (fileName !== '') {\n globExcludes.push('file:' + fileNamesPos[key].value + ' ' + fileName.trim());\n }\n }\n\n const dirNamesPos = this.excludeTableBody.querySelectorAll('select[name=\"wpstgDirNameExcludeRulePos[]\"]');\n const dirNames = this.excludeTableBody.querySelectorAll('input[name=\"wpstgDirNameExcludeRulePath[]\"]');\n for (const [key, dirInput] of Object.entries(dirNames)) {\n const dirName = this.cleanStringForGlob(dirInput.value);\n if (dirName !== '') {\n globExcludes.push('dir:' + dirNamesPos[key].value + ' ' + dirName.trim());\n }\n }\n\n return {\n 'sizes': sizeExcludes.filter(this.onlyUnique).join(','),\n // return set of unique rules\n 'globs': globExcludes.filter(this.onlyUnique).join(','),\n };\n }\n\n onlyUnique(value, index, self) {\n return self.indexOf(value) === index;\n }\n\n /**\n * Remove most of the comment glob characters from the string\n * @param {String} value\n * @return {String}\n */\n cleanStringForGlob(value) {\n // will replace character like * ^ / \\ ! ? [ from the string\n return value.replace(/[*^//!\\.[?]/g, '');\n }\n\n /**\n * Remove most of the comment glob characters from the string except . to allow input of extensions\n * @param {String} value\n * @return {String}\n */\n cleanStringForGlobExactMatches(value) {\n // will replace character like * ^ / \\ ! ? [ from the string\n return value.replace(/[*^//!\\\\[?]/g, '');\n }\n}\n","/**\n * Basic WP Staging Modal implemented with help of Sweetalerts\n */\nexport default class WpstgModal {\n constructor(\n confirmAction,\n wpstgObject = wpstg,\n ) {\n this.confirmAction = confirmAction;\n this.wpstgObject = wpstgObject;\n }\n\n show(swalOptions, additionalParams = {}, callback = null) {\n wpstgSwal.fire(swalOptions).then((result) => {\n if (result.value && this.error !== null) {\n this.triggerConfirmAction(additionalParams, callback);\n }\n });\n }\n\n triggerConfirmAction(additionalParams = {}, callback = null) {\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams(Object.assign({\n action: this.confirmAction,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n }, additionalParams)),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((response) => {\n if (callback !== null) {\n callback(response);\n }\n }).catch((error) => {\n console.log(this.wpstgObject.i18n['somethingWentWrong'], error);\n });\n }\n}\n","'use strict';\n\n/**\n * This is a namespaced port of https://github.com/tristen/hoverintent,\n * with slight modification to accept selector with dynamically added element in dom,\n * instead of just already present element.\n *\n * @param {HTMLElement} parent\n * @param {string} selector\n * @param {CallableFunction} onOver\n * @param {CallableFunction} onOut\n *\n * @return {object}\n */\nexport default function(parent, selector, onOver, onOut) {\n let x; let y; let pX; let pY;\n let mouseOver = false;\n let focused = false;\n const h = {};\n let state = 0;\n let timer = 0;\n\n let options = {\n sensitivity: 7,\n interval: 100,\n timeout: 0,\n handleFocus: false,\n };\n\n function delay(el, e) {\n if (timer) {\n timer = clearTimeout(timer);\n }\n\n state = 0;\n return focused ? undefined : onOut(el, e);\n }\n\n function tracker(e) {\n x = e.clientX;\n y = e.clientY;\n }\n\n function compare(el, e) {\n if (timer) timer = clearTimeout(timer);\n if ((Math.abs(pX - x) + Math.abs(pY - y)) < options.sensitivity) {\n state = 1;\n return focused ? undefined : onOver(el, e);\n } else {\n pX = x;\n pY = y;\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n }\n\n // Public methods\n h.options = function(opt) {\n const focusOptionChanged = opt.handleFocus !== options.handleFocus;\n options = Object.assign({}, options, opt);\n if (focusOptionChanged) {\n options.handleFocus ? addFocus() : removeFocus();\n }\n\n return h;\n };\n\n function dispatchOver(el, e) {\n mouseOver = true;\n if (timer) {\n timer = clearTimeout(timer);\n }\n\n el.removeEventListener('mousemove', tracker, false);\n\n if (state !== 1) {\n pX = e.clientX;\n pY = e.clientY;\n\n el.addEventListener('mousemove', tracker, false);\n\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n\n return this;\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchOver to support dynamically added elements to dom\n */\n function onMouseOver(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchOver(event.target.closest(selector), event);\n }\n };\n\n function dispatchOut(el, e) {\n mouseOver = false;\n if (timer) {\n timer = clearTimeout(timer);\n }\n\n el.removeEventListener('mousemove', tracker, false);\n\n if (state === 1) {\n timer = setTimeout(function() {\n delay(el, e);\n }, options.timeout);\n }\n\n return this;\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchOut to support dynamically added elements to dom\n */\n function onMouseOut(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchOut(event.target.closest(selector), event);\n }\n };\n\n function dispatchFocus(el, e) {\n if (!mouseOver) {\n focused = true;\n onOver(el, e);\n }\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchFocus to support dynamically added elements to dom\n */\n function onFocus(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchFocus(event.target.closest(selector), event);\n }\n };\n\n function dispatchBlur(el, e) {\n if (!mouseOver && focused) {\n focused = false;\n onOut(el, e);\n }\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchBlur to support dynamically added elements to dom\n */\n function onBlur(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchBlur(event.target.closest(selector), event);\n }\n };\n\n /**\n * Modified to support dynamically added element\n */\n function addFocus() {\n parent.addEventListener('focus', onFocus, false);\n parent.addEventListener('blur', onBlur, false);\n }\n\n /**\n * Modified to support dynamically added element\n */\n function removeFocus() {\n parent.removeEventListener('focus', onFocus, false);\n parent.removeEventListener('blur', onBlur, false);\n }\n\n /**\n * Modified to support dynamically added element\n */\n h.remove = function() {\n if (!parent) {\n return;\n }\n\n parent.removeEventListener('mouseover', onMouseOver, false);\n parent.removeEventListener('mouseout', onMouseOut, false);\n removeFocus();\n };\n\n /**\n * Modified to support dynamically added element\n */\n if (parent) {\n parent.addEventListener('mouseover', onMouseOver, false);\n parent.addEventListener('mouseout', onMouseOut, false);\n }\n\n return h;\n};\n","import wpstgHoverIntent from './modules/wpstg-hover-intent';\n\nexport default (function($) {\n const WPStagingCommon = {\n continueErrorHandle: true,\n cache: {\n elements: [],\n get: function(selector) {\n // It is already cached!\n if ($.inArray(selector, this.elements) !== -1) {\n return this.elements[selector];\n }\n\n // Create cache and return\n this.elements[selector] = $(selector);\n\n return this.elements[selector];\n },\n refresh: function(selector) {\n selector.elements[selector] = $(selector);\n },\n },\n setJobId: function(jobId) {\n localStorage.setItem('jobIdBeingProcessed', jobId);\n },\n getJobId: function() {\n return localStorage.getItem('jobIdBeingProcessed');\n },\n listenTooltip: function() {\n wpstgHoverIntent(document, '.wpstg--tooltip', function(target, event) {\n target.querySelector('.wpstg--tooltiptext').style.visibility = 'visible';\n }, function(target, event) {\n target.querySelector('.wpstg--tooltiptext').style.visibility = 'hidden';\n });\n },\n isEmpty: function(obj) {\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n\n return true;\n },\n // Get the custom themed Swal Modal for WP Staging\n // Easy to maintain now in one place now\n getSwalModal: function(isContentCentered = false, customClasses = {}) {\n // common style for all swal modal used in WP Staging\n const defaultCustomClasses = {\n confirmButton: 'wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn wpstg-100-width',\n cancelButton: 'wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn wpstg-100-width',\n actions: 'wpstg--modal--actions',\n popup: isContentCentered ? 'wpstg-swal-popup centered-modal' : 'wpstg-swal-popup',\n };\n\n // If a attribute exists in both default and additional attributes,\n // The class(es) of the additional attribute will overrite the default one.\n const options = {\n customClass: Object.assign(defaultCustomClasses, customClasses),\n buttonsStyling: false,\n reverseButtons: true,\n showClass: {\n popup: 'wpstg--swal2-show wpstg-swal-show',\n },\n };\n\n return wpstgSwal.mixin(options);\n },\n showSuccessModal: function(htmlContent) {\n this.getSwalModal().fire({\n showConfirmButton: false,\n showCancelButton: true,\n cancelButtonText: 'OK',\n icon: 'success',\n title: 'Success!',\n html: '<div class=\"wpstg--grey\" style=\"text-align: left; margin-top: 8px;\">' + htmlContent + '</div>',\n });\n },\n showWarningModal: function(htmlContent) {\n this.getSwalModal().fire({\n showConfirmButton: false,\n showCancelButton: true,\n cancelButtonText: 'OK',\n icon: 'warning',\n title: '',\n html: '<div class=\"wpstg--grey\" style=\"text-align: left; margin-top: 8px;\">' + htmlContent + '</div>',\n });\n },\n showErrorModal: function(htmlContent) {\n this.getSwalModal().fire({\n showConfirmButton: false,\n showCancelButton: true,\n cancelButtonText: 'OK',\n icon: 'error',\n title: 'Error!',\n html: '<div class=\"wpstg--grey\" style=\"text-align: left; margin-top: 8px;\">' + htmlContent + '</div>',\n });\n },\n getSwalContainer: function() {\n return wpstgSwal.getContainer();\n },\n closeSwalModal: function() {\n wpstgSwal.close();\n },\n /**\n * Treats a default response object generated by WordPress's\n * wp_send_json_success() or wp_send_json_error() functions in\n * PHP, parses it in JavaScript, and either throws if it's an error,\n * or returns the data if the response is successful.\n *\n * @param {object} response\n * @return {*}\n */\n getDataFromWordPressResponse(response) {\n if (typeof response !== 'object') {\n throw new Error('Unexpected response (ERR 1341)');\n }\n\n if (!response.hasOwnProperty('success')) {\n throw new Error('Unexpected response (ERR 1342)');\n }\n\n if (!response.hasOwnProperty('data')) {\n throw new Error('Unexpected response (ERR 1343)');\n }\n\n if (response.success === false) {\n if (response.data instanceof Array && response.data.length > 0) {\n throw new Error(response.data.shift());\n } else {\n throw new Error('Response was not successful');\n }\n } else {\n // Successful response. Return the data.\n return response.data;\n }\n },\n isLoading: function(isLoading) {\n if (!isLoading || isLoading === false) {\n WPStagingCommon.cache.get('.wpstg-loader').hide();\n } else {\n WPStagingCommon.cache.get('.wpstg-loader').show();\n }\n },\n /**\n * Convert the given url to make it slug compatible\n * @param {string} url\n * @return {string}\n */\n slugify: function(url) {\n return url.toString()\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .replace(/\\s+/g, '-')\n .replace(/&/g, '-and-')\n .replace(/[^a-z0-9\\-]/g, '')\n .replace(/-+/g, '-')\n .replace(/^-*/, '')\n .replace(/-*$/, '')\n ;\n },\n showAjaxFatalError: function(response, prependMessage, appendMessage) {\n prependMessage = prependMessage ? prependMessage + '<br/><br/>' : 'Something went wrong! <br/><br/>';\n appendMessage = appendMessage ? appendMessage + '<br/><br/>' : '<br/><br/>Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.';\n\n if (response === false) {\n WPStagingCommon.showError(prependMessage + ' Error: No response.' + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n\n if (typeof response.error !== 'undefined' && response.error) {\n WPStagingCommon.showError(prependMessage + ' Error: ' + response.message + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n },\n handleFetchErrors: function(response) {\n if (!response.ok) {\n WPStagingCommon.showError('Error: ' + response.status + ' - ' + response.statusText + '. Please try again or contact support.');\n }\n return response;\n },\n showError: function(message) {\n WPStagingCommon.cache.get('#wpstg-try-again').css('display', 'inline-block');\n WPStagingCommon.cache.get('#wpstg-cancel-cloning').text('Reset');\n WPStagingCommon.cache.get('#wpstg-resume-cloning').show();\n WPStagingCommon.cache.get('#wpstg-error-wrapper').show();\n WPStagingCommon.cache.get('#wpstg-error-details').show().html(message);\n WPStagingCommon.cache.get('#wpstg-removing-clone').removeClass('loading');\n WPStagingCommon.cache.get('.wpstg-loader').hide();\n $('.wpstg--modal--process--generic-problem').show().html(message);\n },\n resetErrors: function() {\n WPStagingCommon.cache.get('#wpstg-error-details').hide().html('');\n },\n /**\n * Ajax Requests\n * @param {Object} data\n * @param {Function} callback\n * @param {string} dataType\n * @param {bool} showErrors\n * @param {int} tryCount\n * @param {float} incrementRatio\n * @param {function} errorCallback\n */\n ajax: function(data, callback, dataType, showErrors, tryCount, incrementRatio = null, errorCallback = null) {\n if ('undefined' === typeof (dataType)) {\n dataType = 'json';\n }\n\n if (false !== showErrors) {\n showErrors = true;\n }\n\n tryCount = 'undefined' === typeof (tryCount) ? 0 : tryCount;\n\n const retryLimit = 10;\n\n let retryTimeout = 10000 * tryCount;\n\n incrementRatio = parseInt(incrementRatio);\n if (!isNaN(incrementRatio)) {\n retryTimeout *= incrementRatio;\n }\n\n $.ajax({\n url: ajaxurl + '?action=wpstg_processing&_=' + (Date.now() / 1000),\n type: 'POST',\n dataType: dataType,\n cache: false,\n data: data,\n error: function(xhr, textStatus, errorThrown) {\n console.log(xhr.status + ' ' + xhr.statusText + '---' + textStatus);\n\n if (typeof (errorCallback) === 'function') {\n // Custom error handler\n errorCallback(xhr, textStatus, errorThrown);\n\n if (!WPStagingCommon.continueErrorHandle) {\n // Reset state\n WPStagingCommon.continueErrorHandle = true;\n\n return;\n }\n }\n\n // Default error handler\n tryCount++;\n if (tryCount <= retryLimit) {\n setTimeout(function() {\n WPStagingCommon.ajax(data, callback, dataType, showErrors, tryCount, incrementRatio);\n return;\n }, retryTimeout);\n } else {\n const errorCode = 'undefined' === typeof (xhr.status) ? 'Unknown' : xhr.status;\n WPStagingCommon.showError(\n 'Fatal Error: ' + errorCode + ' Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.',\n );\n }\n },\n success: function(data) {\n if ('function' === typeof (callback)) {\n callback(data);\n }\n },\n statusCode: {\n 404: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 404 - Can\\'t find ajax request URL! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 500: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Fatal Error 500 - Internal server error while processing the request! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 504: function() {\n if (tryCount > retryLimit) {\n WPStagingCommon.showError('Error 504 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 502: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 502 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 503: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 503 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 429: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 429 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 403: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Refresh page or login again! The process should be finished successfully. \\n\\ ');\n }\n },\n },\n });\n },\n };\n\n return WPStagingCommon;\n})(jQuery);\n","\nimport * as dom from './wpstg-dom-utils.js';\nimport WpstgDirectoryNavigation from './wpstg-directory-navigation.js';\nimport WpstgTableSelection from './wpstg-table-selection';\nimport WpstgExcludeFilters from './wpstg-exclude-filters.js';\nimport WpstgModal from './wpstg-modal.js';\nimport WPStagingCommon from './../wpstg.js';\n\n/**\n * Manage RESET MODAL\n */\nexport default class WpstgResetModal {\n constructor(\n cloneID,\n workflowSelector = '#wpstg-workflow',\n fetchExcludeSettingsAction = 'wpstg_clone_excludes_settings',\n modalErrorAction = 'wpstg_modal_error',\n wpstgObject = wpstg,\n ) {\n this.cloneID = cloneID;\n this.workflow = dom.qs(workflowSelector);\n this.wpstgObject = wpstgObject;\n this.fetchExcludeSettingsAction = fetchExcludeSettingsAction;\n this.modalErrorAction = modalErrorAction;\n this.resetButtonClass = 'wpstg-confirm-reset-clone';\n this.resetModalContainerClass = 'wpstg-reset-confirmation';\n this.resetTabSelector = '.wpstg-reset-exclude-tab';\n this.directoryNavigator = null;\n this.excludeFilters = null;\n this.tableSelector = null;\n this.isNetworkClone = false;\n }\n\n addEvents() {\n const resetModalContainer = dom.qs('.' + this.resetModalContainerClass);\n if (resetModalContainer === null) {\n console.log('Exit');\n return;\n }\n\n dom.addEvent(resetModalContainer, 'click', this.resetTabSelector, (target) => {\n this.toggleContent(target);\n });\n }\n\n init() {\n this.addEvents();\n }\n\n setNetworkClone(isNetworkClone) {\n this.isNetworkClone = isNetworkClone;\n }\n\n toggleContent(target) {\n const resetModalContainer = dom.qs('.' + this.resetModalContainerClass);\n const contentId = target.getAttribute('data-id');\n const tabTriangle = target.querySelector('.wpstg-tab-triangle');\n const isCollapsed = target.getAttribute('data-collapsed', 'true');\n const content = dom.qs(contentId);\n if (isCollapsed === 'true') {\n if (resetModalContainer.classList.contains('has-collapsible-open')) {\n resetModalContainer.classList.add('has-collapsible-open-2');\n } else {\n resetModalContainer.classList.add('has-collapsible-open');\n }\n\n dom.slideDown(content);\n tabTriangle.style.transform = 'rotate(90deg)';\n target.setAttribute('data-collapsed', 'false');\n } else {\n if (resetModalContainer.classList.contains('has-collapsible-open-2')) {\n resetModalContainer.classList.remove('has-collapsible-open-2');\n } else {\n resetModalContainer.classList.remove('has-collapsible-open');\n }\n\n dom.slideUp(content);\n tabTriangle.style.removeProperty('transform');\n target.setAttribute('data-collapsed', 'true');\n }\n }\n\n /**\n * Show Swal alert with loader and send ajax request to fetch content of alert.\n * @return Promise\n */\n showModal() {\n const swalPromise = this.loadModal();\n this.init();\n this.fetchCloneExcludes();\n return swalPromise;\n }\n\n loadModal() {\n return WPStagingCommon.getSwalModal(false, {\n confirmButton: this.resetButtonClass + ' wpstg-confirm-reset-clone wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn',\n container: this.resetModalContainerClass + ' wpstg-swal2-container wpstg-swal2-loading',\n }).fire({\n title: '',\n icon: 'warning',\n html: this.getAjaxLoader(),\n width: '400px',\n focusConfirm: false,\n confirmButtonText: this.wpstgObject.i18n.resetClone,\n showCancelButton: true,\n });\n }\n\n fetchCloneExcludes() {\n this.error = null;\n // send ajax request and fetch preserved exclude settings\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams({\n action: this.fetchExcludeSettingsAction,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n clone: this.cloneID,\n job: 'resetting',\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((data) => {\n if (!data.success) {\n const errorModal = new WpstgModal(this.modalErrorAction, this.wpstgObject);\n errorModal.show(Object.assign({\n title: 'Error',\n icon: 'error',\n html: this.wpstgObject.i18n['somethingWentWrong'],\n width: '500px',\n confirmButtonText: 'Ok',\n showCancelButton: false,\n customClass: {\n confirmButton: 'wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn',\n cancelButton: 'wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn',\n actions: 'wpstg--modal--actions',\n popup: 'wpstg-swal-popup centered-modal',\n },\n buttonsStyling: false,\n reverseButtons: true,\n }, data.swalOptions), {\n type: data.type,\n });\n\n return;\n }\n\n const modal = dom.qs('.wpstg-reset-confirmation');\n modal.classList.remove('wpstg-swal2-loading');\n modal.querySelector('.wpstg--swal2-popup').style.width = '500px';\n modal.querySelector('.wpstg--swal2-content').innerHTML = data.html;\n this.directoryNavigator = new WpstgDirectoryNavigation();\n this.excludeFilters = new WpstgExcludeFilters();\n this.tableSelector = new WpstgTableSelection('#wpstg-reset-excluded-tables', '.' + this.resetModalContainerClass);\n this.tableSelector.setNetworkClone(this.isNetworkClone);\n }).catch((error) => {\n this.renderError({\n 'html': this.wpstgObject.i18n['somethingWentWrong'] + ' ' + error,\n });\n });\n }\n\n getDirectoryNavigator() {\n return this.directoryNavigator;\n }\n\n getExcludeFilters() {\n return this.excludeFilters;\n }\n\n getTableSelector() {\n return this.tableSelector;\n }\n\n getAjaxLoader() {\n return '<div class=\"wpstg-swal2-ajax-loader\"><img src=\"' + this.wpstgObject.wpstgIcon + '\" /></div>';\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Handle toggle of advance settings checkboxes\n */\nexport default class WpstgCloningAdvanceSettings {\n constructor(\n baseContainerSelector = '#wpstg-clonepage-wrapper',\n ) {\n this.baseContainer = dom.qs(baseContainerSelector);\n this.checkBoxSettingTogglerSelector = '.wpstg-toggle-advance-settings-section';\n this.init();\n }\n\n /**\n * Add events\n * @return {void}\n */\n addEvents() {\n if (this.baseContainer === null) {\n return;\n }\n\n dom.addEvent(this.baseContainer, 'change', this.checkBoxSettingTogglerSelector, (element) => {\n this.toggleSettings(element);\n });\n }\n\n /**\n * @return {void}\n */\n init() {\n this.addEvents();\n }\n\n /**\n * Expand/Collapse checkbox content on change\n * @return {void}\n */\n toggleSettings(element) {\n const target = dom.qs('#' + element.getAttribute('data-id'));\n if (element.checked) {\n dom.slideDown(target);\n } else {\n dom.slideUp(target);\n }\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\nexport default class WpstgMainMenu {\n constructor() {\n this.activeTabClass = 'wpstg--tab--active';\n this.mainMenu();\n }\n\n mainMenu() {\n const tabHeader = dom.qs('.wpstg--tab--header');\n // Early bail if tab header is not available\n if (tabHeader === null) {\n return;\n }\n\n dom.addEvent(dom.qs('.wpstg--tab--header'), 'click', '.wpstg-button', (element) => {\n const $this = element;\n const target = $this.getAttribute('data-target');\n const targetElements = dom.all(target);\n const menuItems = dom.all('.wpstg--tab--header a[data-target]');\n const contents = dom.all('.wpstg--tab--contents > .wpstg--tab--content');\n\n contents.forEach((content) => {\n // active tab class is without the css dot class prefix\n if (content.matches('.' + this.activeTabClass + ':not(' + target + ')')) {\n content.classList.remove(this.activeTabClass);\n }\n });\n\n menuItems.forEach((menuItem) => {\n if (menuItem !== $this) {\n menuItem.classList.remove(this.activeTabClass);\n }\n });\n\n $this.classList.add(this.activeTabClass);\n\n targetElements.forEach((targetElement) => {\n targetElement.classList.add(this.activeTabClass);\n });\n\n if ('#wpstg--tab--backup' === target) {\n window.dispatchEvent(new Event('backups-tab'));\n }\n });\n };\n}\n","import WpstgCloneStaging from './modules/wpstg-clone-staging.js';\nimport WpstgDirectoryNavigation from './modules/wpstg-directory-navigation.js';\nimport WpstgTableSelection from './modules/wpstg-table-selection.js';\nimport WpstgExcludeFilters from './modules/wpstg-exclude-filters.js';\nimport WpstgResetModal from './modules/wpstg-reset-modal.js';\nimport WpstgModal from './modules/wpstg-modal.js';\nimport WpstgCloningAdvanceSettings from './modules/wpstg-cloning-advance-settings.js';\nimport WpstgMainMenu from './modules/wpstg-main-menu.js';\nimport WPStagingCommon from './wpstg.js';\nimport {handleDisplayDependencies, handleToggleElement, handleCopyPaste, handleCopyToClipboard} from './modules/wpstg-dom-utils.js';\n\nvar WPStaging = (function($) {\n const that = {\n isCancelled: false,\n isFinished: false,\n getLogs: false,\n time: 1,\n executionTime: false,\n progressBar: 0,\n cloneExcludeFilters: null,\n directoryNavigator: null,\n tableSelector: null,\n notyf: null,\n areAllTablesChecked: true,\n handleDisplayDependencies: handleDisplayDependencies,\n handleToggleElement: handleToggleElement,\n handleCopyPaste: handleCopyPaste,\n handleCopyToClipboard: handleCopyToClipboard,\n };\n const cache = {elements: []};\n let timeout; let ajaxSpinner;\n\n /**\n * Get / Set Cache for Selector\n * @param {String} selector\n * @return {*}\n */\n cache.get = function(selector) {\n // It is already cached!\n if ($.inArray(selector, cache.elements) !== -1) {\n return cache.elements[selector];\n }\n\n // Create cache and return\n cache.elements[selector] = jQuery(selector);\n\n return cache.elements[selector];\n };\n\n /**\n * Refreshes given cache\n * @param {String} selector\n */\n cache.refresh = function(selector) {\n selector.elements[selector] = jQuery(selector);\n };\n\n /**\n * Show and Log Error Message\n * @param {String} message\n */\n const showError = function(message) {\n cache.get('#wpstg-try-again').css('display', 'inline-block');\n cache.get('#wpstg-cancel-cloning').text('Reset');\n cache.get('#wpstg-resume-cloning').show();\n cache.get('#wpstg-error-wrapper').show();\n cache.get('#wpstg-error-details').show().html(message);\n cache.get('#wpstg-removing-clone').removeClass('loading');\n cache.get('.wpstg-loader').hide();\n $('.wpstg--modal--process--generic-problem').show().html(message);\n\n // Error event information for Staging\n $.ajax({\n url: ajaxurl,\n type: 'POST',\n dataType: 'json',\n data: {\n 'action': 'wpstg_staging_job_error',\n 'accessToken': wpstg.accessToken,\n 'nonce': wpstg.nonce,\n 'error_message': message,\n },\n });\n };\n\n /**\n * Show warning during cloning or push process when closing tab or browser, or changing page\n * @param {beforeunload} event\n * @return {null}\n */\n that.warnIfClosingDuringProcess = function(event) {\n // Only some browsers show the message below, most say something like \"Changes you made may not be saved\" (Chrome) or \"You have unsaved changes. Exit?\"\n event.returnValue = 'You MUST leave this window open while cloning/pushing. Please wait...';\n return null;\n };\n\n /**\n *\n * @param response the error object\n * @param prependMessage Overwrite default error message at beginning\n * @param appendMessage Overwrite default error message at end\n * @returns void\n */\n\n const showAjaxFatalError = function(response, prependMessage, appendMessage) {\n prependMessage = prependMessage ? prependMessage + '<br/><br/>' : 'Something went wrong! <br/><br/>';\n appendMessage = appendMessage ? appendMessage + '<br/><br/>' : '<br/><br/>Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.';\n\n if (response === false) {\n showError(prependMessage + ' Error: No response.' + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n\n if (typeof response.error !== 'undefined' && response.error) {\n console.error(response.message);\n showError(prependMessage + ' Error: ' + response.message + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n };\n\n /**\n *\n * @param response\n * @return {{ok}|*}\n */\n const handleFetchErrors = function(response) {\n if (!response.ok) {\n showError('Error: ' + response.status + ' - ' + response.statusText + '. Please try again or contact support.');\n }\n return response;\n };\n\n /** Hide and reset previous thrown visible errors */\n const resetErrors = function() {\n cache.get('#wpstg-error-details').hide().html('');\n };\n\n /**\n * Common Elements\n */\n const elements = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n let urlSpinner = ajaxurl.replace('/admin-ajax.php', '') + '/images/spinner';\n let timer;\n\n if (2 < window.devicePixelRatio) {\n urlSpinner += '-2x';\n }\n\n urlSpinner += '.gif';\n\n ajaxSpinner = '<img src=\\'\\'' + urlSpinner + '\\' alt=\\'\\' class=\\'ajax-spinner general-spinner\\' />';\n\n const getBaseValues = function() {\n const path = $('#wpstg-use-target-dir').data('base-path');\n const uri = $('#wpstg-use-target-hostname').data('base-uri');\n return {\n path,\n };\n };\n\n $workFlow\n /**\n .on('change', '#wpstg_network_clone', function(e) {\n e.preventDefault();\n $('.wpstg-button-select').trigger('click');\n })\n */\n // Check / Un-check All Database Tables New\n .on('click', '.wpstg-button-unselect', function(e) {\n e.preventDefault();\n\n if (false === that.areAllTablesChecked) {\n cache.get('#wpstg_select_tables_cloning .wpstg-db-table').prop('selected', 'selected');\n cache.get('.wpstg-button-unselect').text('Unselect All');\n cache.get('.wpstg-db-table-checkboxes').prop('checked', true);\n that.areAllTablesChecked = true;\n } else {\n cache.get('#wpstg_select_tables_cloning .wpstg-db-table').prop('selected', false);\n cache.get('.wpstg-button-unselect').text('Select All');\n cache.get('.wpstg-db-table-checkboxes').prop('checked', false);\n that.areAllTablesChecked = false;\n }\n })\n\n /**\n * Select tables with certain tbl prefix | NEW\n * @param obj e\n * @returns {undefined}\n */\n /**\n .on('click', '.wpstg-button-select', function(e) {\n e.preventDefault();\n $('#wpstg_select_tables_cloning .wpstg-db-table').each(function() {\n let regex = '^' + wpstg.tblprefix;\n if (wpstg.isMultisite === '1' && !$('#wpstg_network_clone').is(':checked')) {\n regex += '([^0-9])_*';\n }\n\n if ($(this).attr('name').match(regex)) {\n $(this).prop('selected', 'selected');\n } else {\n $(this).prop('selected', false);\n }\n });\n })\n\n // Expand Directories\n .on('click', '.wpstg-expand-dirs', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n\n $this.siblings('.wpstg-subdir').slideToggle();\n })\n // When a directory checkbox is Selected\n .on('change', 'input.wpstg-check-dir', function() {\n const $directory = $(this).parent('.wpstg-dir');\n\n if (this.checked) {\n $directory.parents('.wpstg-dir').children('.wpstg-check-dir').prop('checked', true);\n $directory.find('.wpstg-expand-dirs').removeClass('disabled');\n $directory.find('.wpstg-subdir .wpstg-check-dir').prop('checked', true);\n } else {\n $directory.find('.wpstg-dir .wpstg-check-dir').prop('checked', false);\n $directory.find('.wpstg-expand-dirs, .wpstg-check-subdirs').addClass('disabled');\n $directory.find('.wpstg-check-subdirs').data('action', 'check').text('check');\n }\n })\n // When a directory name is Selected\n .on('change', 'href.wpstg-check-dir', function() {\n const $directory = $(this).parent('.wpstg-dir');\n\n if (this.checked) {\n $directory.parents('.wpstg-dir').children('.wpstg-check-dir').prop('checked', true);\n $directory.find('.wpstg-expand-dirs').removeClass('disabled');\n $directory.find('.wpstg-subdir .wpstg-check-dir').prop('checked', true);\n } else {\n $directory.find('.wpstg-dir .wpstg-check-dir').prop('checked', false);\n $directory.find('.wpstg-expand-dirs, .wpstg-check-subdirs').addClass('disabled');\n $directory.find('.wpstg-check-subdirs').data('action', 'check').text('check');\n }\n })\n */\n // Check the max length of the clone name and if the clone name already exists\n .on('keyup', '#wpstg-new-clone-id', function() {\n // Hide previous errors\n document.getElementById('wpstg-error-details').style.display = 'none';\n\n // This request was already sent, clear it up!\n if ('number' === typeof (timer)) {\n clearInterval(timer);\n }\n\n // Early bail if site name is empty\n if (this.value === undefined || this.value === '') {\n cache.get('#wpstg-new-clone-id').removeClass('wpstg-error-input');\n cache.get('#wpstg-start-cloning').removeAttr('disabled');\n cache.get('#wpstg-clone-id-error').text('').hide();\n return;\n }\n\n // Convert the site name to directory name (slugify the site name to create directory name)\n const cloneDirectoryName = WPStagingCommon.slugify(this.value);\n\n timer = setTimeout(\n function() {\n ajax(\n {\n action: 'wpstg_check_clone',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n directoryName: cloneDirectoryName,\n },\n function(response) {\n if (response.status === 'success') {\n cache.get('#wpstg-new-clone-id').removeClass('wpstg-error-input');\n cache.get('#wpstg-start-cloning').removeAttr('disabled');\n cache.get('#wpstg-clone-id-error').text('').hide();\n } else {\n cache.get('#wpstg-new-clone-id').addClass('wpstg-error-input');\n cache.get('#wpstg-start-cloning').prop('disabled', true);\n cache.get('#wpstg-clone-id-error').text(response.message).show();\n }\n },\n );\n },\n 500,\n );\n })\n // Restart cloning process\n .on('click', '#wpstg-start-cloning', function() {\n resetErrors();\n that.isCancelled = false;\n that.getLogs = false;\n that.progressBar = 0;\n })\n .on('input', '#wpstg-new-clone-id', function() {\n if ($('#wpstg-clone-directory').length < 1) {\n return;\n }\n\n const slug = WPStagingCommon.slugify(this.value).substring(0, 16);\n const $targetDir = $('#wpstg-use-target-dir');\n const $targetUri = $('#wpstg-use-target-hostname');\n let path = $targetDir.data('base-path');\n let uri = $targetUri.data('base-uri');\n\n if (path) {\n path = path.replace(/\\/+$/g, '') + '/' + slug + '/';\n }\n\n if (uri) {\n uri = uri.replace(/\\/+$/g, '') + '/' + slug;\n }\n\n\n $('.wpstg-use-target-dir--value').text(path);\n $('.wpstg-use-target-hostname--value').text(uri);\n\n $targetDir.attr('data-path', path);\n $targetUri.attr('data-uri', uri);\n $('#wpstg_clone_dir').attr('placeholder', path);\n $('#wpstg_clone_hostname').attr('placeholder', uri);\n })\n .on('input', '#wpstg_clone_hostname', function() {\n if ($(this).val() === '' || validateTargetHost()) {\n $('#wpstg_clone_hostname_error').remove();\n return;\n }\n if (!validateTargetHost() && !$('#wpstg_clone_hostname_error').length) {\n $('#wpstg-clone-directory tr:last-of-type').after('<tr><td> </td><td><p id=\"wpstg_clone_hostname_error\" style=\"color: red;\"> Invalid host name. Please provide it in a format like http://example.com</p></td></tr>');\n }\n })\n ;\n\n cloneActions();\n };\n\n /* @returns {boolean} */\n var validateTargetHost = function() {\n const the_domain = $('#wpstg_clone_hostname').val();\n\n if (the_domain === '') {\n return true;\n }\n\n const reg = /^http(s)?:\\/\\/.*$/;\n if (reg.test(the_domain) === false) {\n return false;\n }\n return true;\n };\n\n /**\n * Clone actions\n */\n var cloneActions = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n\n $workFlow\n // Cancel cloning\n .on('click', '#wpstg-cancel-cloning', function() {\n if (!confirm('Are you sure you want to cancel cloning process?')) {\n return false;\n }\n\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n $this.prop('disabled', true);\n\n that.isCancelled = true;\n that.progressBar = 0;\n\n $('#wpstg-processing-status').text('Please wait...this can take up a while.');\n $('.wpstg-loader, #wpstg-show-log-button').hide();\n\n $this.parent().append(ajaxSpinner);\n\n cancelCloning();\n })\n // Resume cloning\n .on('click', '#wpstg-resume-cloning', function() {\n resetErrors();\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n\n that.isCancelled = false;\n\n $('#wpstg-processing-status').text('Try to resume cloning process...');\n $('#wpstg-error-details').hide();\n $('.wpstg-loader').show();\n\n $this.parent().append(ajaxSpinner);\n\n that.startCloning();\n })\n // Cancel update cloning\n .on('click', '#wpstg-cancel-cloning-update', function() {\n resetErrors();\n\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n $this.prop('disabled', true);\n\n that.isCancelled = true;\n\n $('#wpstg-cloning-result').text('Please wait...this can take up a while.');\n $('.wpstg-loader, #wpstg-show-log-button').hide();\n\n $this.parent().append(ajaxSpinner);\n\n cancelCloningUpdate();\n })\n // Restart cloning\n .on('click', '#wpstg-restart-cloning', function() {\n resetErrors();\n\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n $this.prop('disabled', true);\n\n that.isCancelled = true;\n\n $('#wpstg-cloning-result').text('Please wait...this can take up a while.');\n $('.wpstg-loader, #wpstg-show-log-button').hide();\n\n $this.parent().append(ajaxSpinner);\n\n restart();\n })\n // Delete clone - confirmation\n .on('click', '.wpstg-remove-clone[data-clone]', function(e) {\n resetErrors();\n e.preventDefault();\n\n const $existingClones = cache.get('#wpstg-existing-clones');\n\n $workFlow.removeClass('active');\n\n cache.get('.wpstg-loader').show();\n\n ajax(\n {\n action: 'wpstg_confirm_delete_clone',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n clone: $(this).data('clone'),\n },\n function(response) {\n cache.get('#wpstg-removing-clone').html(response);\n\n $existingClones.children('img').remove();\n\n cache.get('.wpstg-loader').hide();\n\n $('html, body').animate({\n // This logic is meant to be a \"scrollBottom\"\n scrollTop: $('#wpstg-remove-clone').offset().top - $(window).height() +\n $('#wpstg-remove-clone').height() + 50,\n }, 100);\n },\n 'HTML',\n );\n })\n // Delete clone - confirmed\n .on('click', '#wpstg-remove-clone', function(e) {\n resetErrors();\n e.preventDefault();\n\n cache.get('#wpstg-removing-clone').addClass('loading');\n\n cache.get('.wpstg-loader').show();\n\n deleteClone($(this).data('clone'));\n })\n // Cancel deleting clone\n .on('click', '#wpstg-cancel-removing', function(e) {\n e.preventDefault();\n $('.wpstg-clone').removeClass('active');\n cache.get('#wpstg-removing-clone').html('');\n })\n // Update\n .on('click', '.wpstg-execute-clone', function(e) {\n e.preventDefault();\n\n const clone = $(this).data('clone');\n\n $workFlow.addClass('loading');\n that.cloneExcludeFilters = null;\n ajax(\n {\n action: 'wpstg_scanning',\n clone: clone,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response.length < 1) {\n showError(\n 'Something went wrong! Error: No response. Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.',\n );\n }\n\n const jsonResponse = tryParseJson(response);\n if (jsonResponse !== false && jsonResponse.success === false) {\n $workFlow.removeClass('loading');\n showErrorModal(jsonResponse);\n\n return;\n }\n\n $workFlow.removeClass('loading').html(response);\n // register check disk space function for clone update process.\n checkDiskSpace();\n that.directoryNavigator = new WpstgDirectoryNavigation('#wpstg-directories-listing', '#wpstg-workflow', wpstg, that.notyf);\n that.tableSelector = new WpstgTableSelection('#wpstg-scanning-db', '#wpstg-workflow', '#wpstg_network_clone', wpstg, that.notyf);\n that.cloneExcludeFilters = new WpstgExcludeFilters();\n that.switchStep(2);\n },\n 'HTML',\n );\n })\n // Reset Clone\n .on('click', '.wpstg-reset-clone', function(e) {\n e.preventDefault();\n const clone = $(this).data('clone');\n const resetModal = new WpstgResetModal(clone);\n resetModal.setNetworkClone($(this).data('network') === 'yes');\n const promise = resetModal.showModal();\n that.areAllTablesChecked = true;\n\n promise.then((result) => {\n if (result.value) {\n const dirNavigator = resetModal.getDirectoryNavigator();\n const tableSelector = resetModal.getTableSelector();\n const exclFilters = resetModal.getExcludeFilters().getExcludeFilters();\n\n let includedTables = '';\n let excludedTables = '';\n let selectedTablesWithoutPrefix = '';\n\n if (tableSelector !== null) {\n includedTables = tableSelector.getIncludedTables();\n excludedTables = tableSelector.getExcludedTables();\n selectedTablesWithoutPrefix = tableSelector.getSelectedTablesWithoutPrefix();\n }\n\n if (includedTables.length > excludedTables.length) {\n includedTables = '';\n } else if (excludedTables.length > includedTables.length) {\n excludedTables = '';\n }\n\n resetClone(clone, {\n includedTables: includedTables,\n excludedTables: excludedTables,\n selectedTablesWithoutPrefix: selectedTablesWithoutPrefix,\n excludeSizeRules: encodeURIComponent(exclFilters.sizes),\n excludeGlobRules: encodeURIComponent(exclFilters.globs),\n excludedDirectories: dirNavigator.getExcludedDirectories(),\n extraDirectories: dirNavigator.getExtraDirectoriesRootOnly(),\n });\n }\n });\n\n return;\n });\n };\n\n /**\n * Ajax Requests\n * @param Object data\n * @param Function callback\n * @param string dataType\n * @param bool showErrors\n * @param int tryCount\n * @param float incrementRatio\n */\n var ajax = function(data, callback, dataType, showErrors, tryCount, incrementRatio = null) {\n if ('undefined' === typeof (dataType)) {\n dataType = 'json';\n }\n\n if (false !== showErrors) {\n showErrors = true;\n }\n\n tryCount = 'undefined' === typeof (tryCount) ? 0 : tryCount;\n\n const retryLimit = 5;\n\n let retryTimeout = 10000 * tryCount;\n\n incrementRatio = parseInt(incrementRatio);\n if (!isNaN(incrementRatio)) {\n retryTimeout *= incrementRatio;\n }\n\n $.ajax({\n url: ajaxurl + '?action=wpstg_processing&_=' + (Date.now() / 1000),\n type: 'POST',\n dataType: dataType,\n cache: false,\n data: data,\n error: function(xhr, textStatus, errorThrown) {\n // try again after 10 seconds\n tryCount++;\n if (tryCount <= retryLimit) {\n console.log('RETRYING ' + tryCount + '/' + retryLimit);\n setTimeout(function() {\n ajax(data, callback, dataType, showErrors, tryCount, incrementRatio);\n return;\n }, retryTimeout);\n } else {\n console.log('RETRYING LIMIT');\n const errorCode = 'undefined' === typeof (xhr.status) ? 'Unknown' : xhr.status;\n showError(\n 'Fatal Error: ' + errorCode + ' Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.',\n );\n }\n },\n success: function(data) {\n if ('function' === typeof (callback)) {\n callback(data);\n }\n },\n statusCode: {\n 404: function() {\n if (tryCount >= retryLimit) {\n showError('Error 404 - Can\\'t find ajax request URL! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 500: function() {\n if (tryCount >= retryLimit) {\n showError('Fatal Error 500 - Internal server error while processing the request! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 504: function() {\n if (tryCount > retryLimit) {\n showError('Error 504 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 502: function() {\n if (tryCount >= retryLimit) {\n showError('Error 502 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 503: function() {\n if (tryCount >= retryLimit) {\n showError('Error 503 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 429: function() {\n if (tryCount >= retryLimit) {\n showError('Error 429 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 403: function() {\n if (tryCount >= retryLimit) {\n showError('Refresh page or login again! The process should be finished successfully. \\n\\ ');\n }\n },\n },\n });\n };\n\n /**\n * Next / Previous Step Clicks to Navigate Through Staging Job\n */\n const stepButtons = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n\n $workFlow\n // Next Button\n .on('click', '.wpstg-next-step-link', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n const isScan = false;\n\n if ($('#wpstg_clone_hostname').length && !validateTargetHost()) {\n $('#wpstg_clone_hostname').focus();\n return false;\n }\n\n if ($this.data('action') === 'wpstg_update' || $this.data('action') === 'wpstg_reset') {\n // Update / Reset Clone - confirmed\n let onlyUpdateMessage = '';\n if ($this.data('action') === 'wpstg_update') {\n onlyUpdateMessage = ' \\n\\nExclude all tables and folders you do not want to overwrite, first! \\n\\nDo not cancel the updating process! This can break your staging site. \\n\\n\\Create a backup of your staging website before you proceed.';\n }\n\n if (!confirm('STOP! This will overwrite your staging site with all selected data from the production site! This should be used only if you want to clone again your production site. Are you sure you want to do this?' + onlyUpdateMessage)) {\n return false;\n }\n }\n\n // Button is disabled\n if ($this.attr('disabled')) {\n return false;\n }\n\n if ($this.data('action') === 'wpstg_cloning') {\n // Verify External Database If Checked and Not Skipped\n if ($('#wpstg-ext-db').is(':checked')) {\n verifyExternalDatabase($this, $workFlow);\n return;\n }\n }\n\n proceedCloning($this, $workFlow);\n })\n // Previous Button\n .on('click', '.wpstg-prev-step-link', function(e) {\n e.preventDefault();\n cache.get('.wpstg-loader').removeClass('wpstg-finished');\n cache.get('.wpstg-loader').hide();\n loadOverview();\n });\n };\n\n /**\n * Get Included (Checked) Database Tables\n * @return {Array}\n */\n const getIncludedTables = function() {\n const includedTables = [];\n\n $('#wpstg_select_tables_cloning option:selected').each(function() {\n includedTables.push(this.value);\n });\n\n return includedTables;\n };\n\n /**\n * Get Excluded (Unchecked) Database Tables\n * Not used anymore!\n * @return {Array}\n */\n const getExcludedTables = function() {\n const excludedTables = [];\n\n $('.wpstg-db-table input:not(:checked)').each(function() {\n excludedTables.push(this.name);\n });\n\n return excludedTables;\n };\n\n /**\n * Verify External Database for Cloning\n */\n var verifyExternalDatabase = function($this, workflow) {\n cache.get('.wpstg-loader').show();\n ajax(\n {\n action: 'wpstg_database_verification',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n databaseUser: cache.get('#wpstg_db_username').val(),\n databasePassword: cache.get('#wpstg_db_password').val(),\n databaseServer: cache.get('#wpstg_db_server').val(),\n databaseDatabase: cache.get('#wpstg_db_database').val(),\n },\n function(response) {\n // Undefined Error\n if (false === response) {\n showError(\n 'Something went wrong! Error: No response.' +\n 'Please try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n cache.get('.wpstg-loader').hide();\n return;\n }\n\n // Throw Error\n if ('undefined' === typeof (response.success)) {\n showError(\n 'Something went wrong! Error: Invalid response.' +\n 'Please try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n cache.get('.wpstg-loader').hide();\n return;\n }\n\n if (response.success) {\n cache.get('.wpstg-loader').hide();\n proceedCloning($this, workflow);\n return;\n }\n\n if (response.error_type === 'comparison') {\n cache.get('.wpstg-loader').hide();\n let render = '<table class=\"wpstg-db-comparison-table\"><thead><tr><th>Property</th><th>Production DB</th><th>Staging DB</th><th>Status</th></tr></thead><tbody>';\n response.checks.forEach((x) => {\n let icon = '<span class=\"wpstg-css-tick\"></span>';\n if (x.production !== x.staging) {\n icon = '<span class=\"wpstg-css-cross\"></span>';\n }\n render += '<tr><td>' + x.name + '</td><td>' + x.production + '</td><td>' + x.staging + '</td><td>' + icon + '</td></tr>';\n });\n render += '</tbody></table><p>Note: Some MySQL/MariaDB properties do not match. You may proceed but the staging site may not work as expected.</p>';\n WPStagingCommon.getSwalModal(true, {\n popup: 'wpstg-swal-popup wpstg-db-comparison-modal centered-modal',\n }).fire({\n title: 'Different Database Properties',\n icon: 'warning',\n html: render,\n width: '650px',\n focusConfirm: false,\n confirmButtonText: 'Proceed',\n showCancelButton: true,\n }).then(function(result) {\n if (result.value) {\n proceedCloning($this, workflow);\n }\n });\n return;\n }\n\n WPStagingCommon.getSwalModal(true).fire({\n title: 'Different Database Properties',\n icon: 'error',\n html: response.message,\n focusConfirm: true,\n confirmButtonText: 'Ok',\n showCancelButton: false,\n });\n cache.get('.wpstg-loader').hide();\n },\n 'json',\n false,\n );\n };\n\n /**\n * Get Cloning Step Data\n */\n const getCloningData = function() {\n if ('wpstg_cloning' !== that.data.action && 'wpstg_update' !== that.data.action && 'wpstg_reset' !== that.data.action) {\n return;\n }\n\n that.data.cloneID = new Date().getTime().toString();\n if ('wpstg_update' === that.data.action) {\n that.data.cloneID = $('#wpstg-new-clone-id').data('clone');\n }\n\n that.data.cloneName = $('#wpstg-new-clone-id').val() || that.data.cloneID;\n\n if (that.directoryNavigator !== null) {\n that.data.excludedDirectories = encodeURIComponent(that.directoryNavigator.getExcludedDirectories());\n that.data.extraDirectories = encodeURIComponent(that.directoryNavigator.getExtraDirectoriesRootOnly());\n }\n\n that.data.excludeGlobRules = '';\n that.data.excludeSizeRules = '';\n if (that.cloneExcludeFilters instanceof WpstgExcludeFilters) {\n const rules = that.cloneExcludeFilters.getExcludeFilters();\n that.data.excludeGlobRules = encodeURIComponent(rules.globs);\n that.data.excludeSizeRules = encodeURIComponent(rules.sizes);\n }\n\n that.data.includedTables = '';\n that.data.excludedTables = '';\n if (that.tableSelector !== null) {\n that.data.includedTables = that.tableSelector.getIncludedTables();\n that.data.excludedTables = that.tableSelector.getExcludedTables();\n that.data.selectedTablesWithoutPrefix = that.tableSelector.getSelectedTablesWithoutPrefix();\n }\n\n if (that.data.includedTables.length > that.data.excludedTables.length) {\n that.data.includedTables = '';\n } else if (that.data.excludedTables.length > that.data.includedTables.length) {\n that.data.excludedTables = '';\n }\n\n that.data.databaseServer = $('#wpstg_db_server').val();\n that.data.databaseUser = $('#wpstg_db_username').val();\n that.data.databasePassword = $('#wpstg_db_password').val();\n that.data.databaseDatabase = $('#wpstg_db_database').val();\n that.data.databasePrefix = $('#wpstg_db_prefix').val();\n const cloneDir = $('#wpstg_clone_dir').val();\n that.data.cloneDir = encodeURIComponent($.trim(cloneDir));\n that.data.cloneHostname = $('#wpstg_clone_hostname').val();\n that.data.emailsAllowed = $('#wpstg_allow_emails').is(':checked');\n that.data.networkClone = $('#wpstg_network_clone').is(':checked');\n that.data.uploadsSymlinked = $('#wpstg_symlink_upload').is(':checked');\n that.data.cleanPluginsThemes = $('#wpstg-clean-plugins-themes').is(':checked');\n that.data.cleanUploadsDir = $('#wpstg-clean-uploads').is(':checked');\n };\n\n var proceedCloning = function($this, workflow) {\n // Add loading overlay\n workflow.addClass('loading');\n\n // Prepare data\n that.data = {\n action: $this.data('action'),\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n };\n\n // Cloning data\n getCloningData();\n\n sendCloningAjax(workflow);\n };\n\n var sendCloningAjax = function(workflow) {\n // Send ajax request\n ajax(\n that.data,\n function(response) {\n // Undefined Error\n if (false === response) {\n showError(\n 'Something went wrong!<br/><br/> Go to WP Staging > Settings and lower \\'File Copy Limit\\' and \\'DB Query Limit\\'. Also set \\'CPU Load Priority to low \\'' +\n 'and try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n }\n\n\n if (response.length < 1) {\n showError(\n 'Something went wrong! No response. Go to WP Staging > Settings and lower \\'File Copy Limit\\' and \\'DB Query Limit\\'. Also set \\'CPU Load Priority to low \\'' +\n 'and try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n }\n\n const jsonResponse = tryParseJson(response);\n if (jsonResponse !== false && jsonResponse.success === false) {\n workflow.removeClass('loading');\n showErrorModal(jsonResponse);\n\n return;\n }\n\n // Styling of elements\n workflow.removeClass('loading').html(response);\n that.cloneExcludeFilters = null;\n if (that.data.action === 'wpstg_scanning') {\n that.areAllTablesChecked = true;\n that.directoryNavigator = new WpstgDirectoryNavigation('#wpstg-directories-listing', '#wpstg-workflow', wpstg, that.notyf);\n that.tableSelector = new WpstgTableSelection('#wpstg-scanning-db', '#wpstg-workflow', '#wpstg_network_clone', wpstg, that.notyf);\n that.switchStep(2);\n that.cloneExcludeFilters = new WpstgExcludeFilters();\n } else if (that.data.action === 'wpstg_cloning' || that.data.action === 'wpstg_update' || that.data.action === 'wpstg_reset') {\n that.switchStep(3);\n }\n\n // Start cloning\n that.startCloning();\n },\n 'HTML',\n );\n };\n\n var showErrorModal = function(response) {\n const errorModal = new WpstgModal('wpstg_modal_error', wpstg);\n errorModal.show(Object.assign({\n title: 'Error',\n icon: 'error',\n html: wpstg.i18n['somethingWentWrong'] + (response.message !== undefined ? ('<br/>' + response.message) : ''),\n width: '500px',\n confirmButtonText: 'Ok',\n showCancelButton: false,\n customClass: {\n confirmButton: 'wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn',\n cancelButton: 'wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn',\n actions: 'wpstg--modal--actions',\n popup: 'wpstg-swal-popup centered-modal',\n },\n buttonsStyling: false,\n reverseButtons: true,\n }, response.swalOptions), {\n type: response.type,\n });\n };\n\n const tryParseJson = function(json) {\n // early bail if not string\n if (!json) {\n return false;\n }\n\n try {\n const object = JSON.parse(json);\n if (object && typeof object === 'object') {\n return object;\n }\n } catch (e) {\n // do nothing on catch\n }\n\n return false;\n };\n\n var resetClone = function(clone, excludeOptions) {\n that.data = {\n action: 'wpstg_reset',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n cloneID: clone,\n };\n\n that.data = {...that.data, ...excludeOptions};\n\n const $workFlow = cache.get('#wpstg-workflow');\n sendCloningAjax($workFlow);\n };\n\n /**\n * Loads Overview (first step) of Staging Job\n */\n var loadOverview = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n\n $workFlow.addClass('loading');\n\n ajax(\n {\n action: 'wpstg_overview',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response.length < 1) {\n showError(\n 'Something went wrong! No response. Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report.',\n );\n }\n\n const $currentStep = cache.get('.wpstg-current-step');\n\n // Styling of elements\n $workFlow.removeClass('loading').html(response);\n },\n 'HTML',\n );\n\n that.switchStep(1);\n cache.get('.wpstg-step3-cloning').show();\n cache.get('.wpstg-step3-pushing').hide();\n };\n\n /**\n * Load Tabs\n */\n const tabs = function() {\n cache.get('#wpstg-workflow').on('click', '.wpstg-tab-header', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n const $section = cache.get($this.data('id'));\n\n $this.toggleClass('expand');\n\n $section.slideToggle();\n\n const tabTriangle = $this.find('.wpstg-tab-triangle');\n\n if ($this.hasClass('expand')) {\n tabTriangle.removeClass('wpstg-no-icon');\n tabTriangle.text('');\n tabTriangle.addClass('wpstg-rotate-90');\n } else {\n tabTriangle.removeClass('wpstg-rotate-90');\n }\n });\n };\n\n /**\n * Delete Clone\n * @param {String} clone\n */\n var deleteClone = function(clone) {\n const deleteDir = $('#deleteDirectory:checked').data('deletepath');\n\n ajax(\n {\n action: 'wpstg_delete_clone',\n clone: clone,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n excludedTables: getExcludedTables(),\n deleteDir: deleteDir,\n },\n function(response) {\n if (response) {\n showAjaxFatalError(response);\n\n // Finished\n if ('undefined' !== typeof response.delete && (response.delete === 'finished' || response.delete === 'unfinished')) {\n cache.get('#wpstg-removing-clone').removeClass('loading').html('');\n\n if (response.delete === 'finished' && response.error === undefined) {\n $('.wpstg-clone[data-clone-id=\"' + clone + '\"]').remove();\n }\n\n // No staging site message is also of type/class .wpstg-class but hidden\n // We have just excluded that from search when counting no of clones\n if ($('#wpstg-existing-clones .wpstg-clone').length < 1) {\n cache.get('#wpstg-existing-clones').find('h3').text('');\n cache.get('#wpstg-no-staging-site-results').show();\n }\n\n cache.get('.wpstg-loader').hide();\n return;\n }\n }\n // continue\n if (true !== response) {\n deleteClone(clone);\n return;\n }\n },\n );\n };\n\n /**\n * Cancel Cloning Process\n */\n var cancelCloning = function() {\n that.timer('stop');\n\n\n if (true === that.isFinished) {\n return true;\n }\n\n ajax(\n {\n action: 'wpstg_cancel_clone',\n clone: that.data.cloneID,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response && 'undefined' !== typeof (response.delete) && response.delete === 'finished') {\n cache.get('.wpstg-loader').hide();\n // Load overview\n loadOverview();\n return;\n }\n\n if (true !== response) {\n // continue\n cancelCloning();\n return;\n }\n\n // Load overview\n loadOverview();\n },\n );\n };\n\n /**\n * Cancel Cloning Process\n */\n var cancelCloningUpdate = function() {\n if (true === that.isFinished) {\n return true;\n }\n\n ajax(\n {\n action: 'wpstg_cancel_update',\n clone: that.data.cloneID,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response && 'undefined' !== typeof (response.delete) && response.delete === 'finished') {\n // Load overview\n loadOverview();\n return;\n }\n\n if (true !== response) {\n // continue\n cancelCloningUpdate();\n return;\n }\n\n // Load overview\n loadOverview();\n },\n );\n };\n\n /**\n * Cancel Cloning Process\n */\n var restart = function() {\n if (true === that.isFinished) {\n return true;\n }\n\n ajax(\n {\n action: 'wpstg_restart',\n // clone: that.data.cloneID,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response && 'undefined' !== typeof (response.delete) && response.delete === 'finished') {\n // Load overview\n loadOverview();\n return;\n }\n\n if (true !== response) {\n // continue\n cancelCloningUpdate();\n return;\n }\n\n // Load overview\n loadOverview();\n },\n );\n };\n\n /**\n * Scroll the window log to bottom\n * @return void\n */\n const logscroll = function() {\n const $div = cache.get('.wpstg-log-details');\n if ('undefined' !== typeof ($div[0])) {\n $div.scrollTop($div[0].scrollHeight);\n }\n };\n\n /**\n * Append the log to the logging window\n * @param string log\n * @return void\n */\n const getLogs = function(log) {\n if (log != null && 'undefined' !== typeof (log)) {\n if (log.constructor === Array) {\n $.each(log, function(index, value) {\n if (value === null) {\n return;\n }\n if (value.type === 'ERROR') {\n cache.get('.wpstg-log-details').append('<span class=\"wpstg--red\">[' + value.type + ']</span>-' + '[' + value.date + '] ' + value.message + '</br>');\n } else {\n cache.get('.wpstg-log-details').append('[' + value.type + ']-' + '[' + value.date + '] ' + value.message + '</br>');\n }\n });\n } else {\n cache.get('.wpstg-log-details').append('[' + log.type + ']-' + '[' + log.date + '] ' + log.message + '</br>');\n }\n }\n logscroll();\n };\n\n /**\n * Check diskspace\n * @return string json\n */\n var checkDiskSpace = function() {\n cache.get('#wpstg-check-space').on('click', function(e) {\n cache.get('.wpstg-loader').show();\n const excludedDirectories = encodeURIComponent(that.directoryNavigator.getExcludedDirectories());\n const extraDirectories = encodeURIComponent(that.directoryNavigator.getExtraDirectoriesRootOnly());\n\n ajax(\n {\n action: 'wpstg_check_disk_space',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n excludedDirectories: excludedDirectories,\n extraDirectories: extraDirectories,\n },\n function(response) {\n if (false === response) {\n cache.get('#wpstg-clone-id-error').text('Can not detect required disk space').show();\n cache.get('.wpstg-loader').hide();\n return;\n }\n\n // Show required disk space\n cache.get('#wpstg-clone-id-error').html(\n 'Estimated necessary disk space: ' + response.requiredSpace +\n (response.errorMessage !== null ? ('<br>' + response.errorMessage) : '') +\n '<br> <span style=\"color:#444;\">Before you proceed ensure your account has enough free disk space to hold the entire instance of the production site. You can check the available space from your hosting account (cPanel or similar).</span>').show();\n cache.get('.wpstg-loader').hide();\n },\n 'json',\n false,\n );\n });\n };\n\n /**\n * Show or hide animated loading icon\n * @param isLoading bool\n */\n const isLoading = function(isLoading) {\n if (!isLoading || isLoading === false) {\n cache.get('.wpstg-loader').hide();\n } else {\n cache.get('.wpstg-loader').show();\n }\n };\n\n /**\n * Count up processing execution time\n * @param string status\n * @return html\n */\n that.timer = function(status) {\n if (status === 'stop') {\n const time = that.time;\n that.time = 1;\n clearInterval(that.executionTime);\n return that.convertSeconds(time);\n }\n\n\n that.executionTime = setInterval(function() {\n if (null !== document.getElementById('wpstg-processing-timer')) {\n document.getElementById('wpstg-processing-timer').innerHTML = 'Elapsed Time: ' + that.convertSeconds(that.time);\n }\n that.time++;\n if (status === 'stop') {\n that.time = 1;\n clearInterval(that.executionTime);\n }\n }, 1000);\n };\n\n /**\n * Convert seconds to hourly format\n * @param int seconds\n * @return string\n */\n that.convertSeconds = function(seconds) {\n const date = new Date(null);\n date.setSeconds(seconds); // specify value for SECONDS here\n return date.toISOString().substr(11, 8);\n };\n\n /**\n * Start Cloning Process\n * @type {Function}\n */\n that.startCloning = (function() {\n resetErrors();\n\n // Register function for checking disk space\n checkDiskSpace();\n\n if ('wpstg_cloning' !== that.data.action && 'wpstg_update' !== that.data.action && 'wpstg_reset' !== that.data.action) {\n return;\n }\n\n that.isCancelled = false;\n\n // Start the process\n start();\n\n // Functions\n // Start\n function start() {\n cache.get('.wpstg-loader').show();\n cache.get('#wpstg-cancel-cloning').text('Cancel');\n cache.get('#wpstg-resume-cloning').hide();\n cache.get('#wpstg-error-details').hide();\n\n\n // Clone Database\n setTimeout(function() {\n // cloneDatabase();\n window.addEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n processing();\n }, wpstg.delayReq);\n\n that.timer('start');\n }\n\n\n /**\n * Start ajax processing\n * @return string\n */\n var processing = function() {\n if (true === that.isCancelled) {\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return false;\n }\n\n isLoading(true);\n\n let excludedDirectories = '';\n let extraDirectories = '';\n if (that.directoryNavigator !== null) {\n excludedDirectories = that.directoryNavigator.getExcludedDirectories();\n extraDirectories = that.directoryNavigator.getExtraDirectoriesRootOnly();\n }\n\n // Show logging window\n cache.get('.wpstg-log-details').show();\n\n WPStaging.ajax(\n {\n action: 'wpstg_processing',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n excludedTables: getExcludedTables(),\n excludedDirectories: encodeURIComponent(excludedDirectories),\n extraDirectories: encodeURIComponent(extraDirectories),\n },\n function(response) {\n showAjaxFatalError(response);\n\n // Add Log messages\n if ('undefined' !== typeof (response.last_msg) && response.last_msg) {\n getLogs(response.last_msg);\n }\n // Continue processing\n if (false === response.status) {\n progressBar(response);\n\n setTimeout(function() {\n cache.get('.wpstg-loader').show();\n processing();\n }, wpstg.delayReq);\n } else if (true === response.status && 'finished' !== response.status) {\n cache.get('#wpstg-error-details').hide();\n cache.get('#wpstg-error-wrapper').hide();\n progressBar(response, true);\n processing();\n } else if ('finished' === response.status || ('undefined' !== typeof (response.job_done) && response.job_done)) {\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n finish(response);\n }\n ;\n },\n 'json',\n false,\n );\n };\n\n // Finish\n function finish(response) {\n if (true === that.getLogs) {\n getLogs();\n }\n\n progressBar(response);\n\n // Add Log\n if ('undefined' !== typeof (response.last_msg)) {\n getLogs(response.last_msg);\n }\n\n cache.get('.wpstg-loader').hide();\n cache.get('#wpstg-processing-header').html('Processing Complete');\n $('#wpstg-processing-status').text('Succesfully finished');\n\n cache.get('#wpstg_staging_name').html(that.data.cloneID);\n cache.get('#wpstg-finished-result').show();\n cache.get('#wpstg-cancel-cloning').hide();\n cache.get('#wpstg-resume-cloning').hide();\n cache.get('#wpstg-cancel-cloning-update').prop('disabled', true);\n\n const $link1 = cache.get('#wpstg-clone-url-1');\n const $link = cache.get('#wpstg-clone-url');\n $link1.attr('href', response.url);\n $link1.html(response.url);\n $link.attr('href', response.url);\n\n cache.get('#wpstg-remove-clone').data('clone', that.data.cloneID);\n\n // Finished\n that.isFinished = true;\n that.timer('stop');\n\n\n cache.get('.wpstg-loader').hide();\n cache.get('#wpstg-processing-header').html('Processing Complete');\n\n // show alert\n let msg = wpstg.i18n.cloneResetComplete;\n if (that.data.action === 'wpstg_update') {\n msg = wpstg.i18n.cloneUpdateComplete;\n }\n\n if (that.data.action === 'wpstg_update' || that.data.action === 'wpstg_reset') {\n cache.get('#wpstg-cancel-cloning-update').hide();\n cache.get('.wpstg-prev-step-link').show();\n\n WPStagingCommon.getSwalModal(true, {\n confirmButton: 'wpstg--btn--confirm wpstg-green-button wpstg-button wpstg-link-btn wpstg-100-width',\n }).fire({\n title: '',\n icon: 'success',\n html: msg,\n width: '500px',\n focusConfirm: true,\n });\n }\n\n return false;\n }\n\n /**\n * Add percentage progress bar\n * @param object response\n * @return {Boolean}\n */\n var progressBar = function(response, restart) {\n if ('undefined' === typeof (response.percentage)) {\n return false;\n }\n\n if (response.job === 'database') {\n cache.get('#wpstg-progress-db').width(response.percentage * 0.2 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 1 of 4 Cloning Database Tables...');\n }\n\n if (response.job === 'SearchReplace') {\n cache.get('#wpstg-progress-db').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-db').html('1. Database');\n // Assumption: All previous steps are done.\n // This avoids bugs where some steps are skipped and the progress bar is incomplete as a result\n cache.get('#wpstg-progress-db').width('20%');\n\n cache.get('#wpstg-progress-sr').width(response.percentage * 0.1 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 2 of 4 Preparing Database Data...');\n }\n\n if (response.job === 'directories') {\n cache.get('#wpstg-progress-sr').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-sr').html('2. Data');\n cache.get('#wpstg-progress-sr').width('10%');\n\n cache.get('#wpstg-progress-dirs').width(response.percentage * 0.1 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 3 of 4 Getting files...');\n }\n if (response.job === 'files') {\n cache.get('#wpstg-progress-dirs').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-dirs').html('3. Files');\n cache.get('#wpstg-progress-dirs').width('10%');\n\n cache.get('#wpstg-progress-files').width(response.percentage * 0.6 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 4 of 4 Copy files...');\n }\n if (response.job === 'finish') {\n cache.get('#wpstg-progress-files').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-files').html('4. Copy Files');\n cache.get('#wpstg-progress-files').width('60%');\n\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Cloning Process Finished');\n }\n };\n });\n\n that.switchStep = function(step) {\n cache.get('.wpstg-current-step')\n .removeClass('wpstg-current-step');\n cache.get('.wpstg-step' + step)\n .addClass('wpstg-current-step');\n };\n\n /**\n * Initiation\n * @type {Function}\n */\n that.init = (function() {\n loadOverview();\n elements();\n stepButtons();\n tabs();\n WPStagingCommon.listenTooltip();\n new WpstgMainMenu();\n new WpstgCloneStaging();\n new WpstgCloningAdvanceSettings();\n that.notyf = new Notyf({\n duration: 10000,\n position: {\n x: 'center',\n y: 'bottom',\n },\n dismissible: true,\n types: [\n {\n type: 'warning',\n background: 'orange',\n icon: false,\n },\n ],\n });\n });\n\n /**\n * Ajax call\n * @type {ajax}\n */\n that.ajax = ajax;\n that.showError = showError;\n that.getLogs = getLogs;\n that.loadOverview = loadOverview;\n\n return that;\n})(jQuery);\n\njQuery(document).ready(function() {\n WPStaging.init();\n // This is necessary to make WPStaging var accessibile in WP Staging PRO js script\n window.WPStaging = WPStaging;\n});\n\n/**\n * Report Issue modal\n */\njQuery(document).ready(function($) {\n $('body').on('click', '#wpstg-report-issue-button', function(e) {\n console.log('REPORT');\n $('.wpstg--tab--active .wpstg-report-issue-form').toggleClass('wpstg-report-show');\n e.preventDefault();\n });\n\n $('body').on('click', '#wpstg-backups-report-issue-button', function(e) {\n $('.wpstg--tab--active .wpstg-report-issue-form').toggleClass('wpstg-report-show');\n e.preventDefault();\n });\n\n $('body').on('click', '#wpstg-report-cancel', function(e) {\n $('.wpstg--tab--active .wpstg-report-issue-form').removeClass('wpstg-report-show');\n e.preventDefault();\n });\n\n $('body').on('click', '.wpstg--tab--active #wpstg-report-submit', function(e) {\n const self = $(this);\n sendIssueReport(self, 'false');\n e.preventDefault();\n });\n\n /*\n * Close Success Modal\n */\n\n $('body').on('click', '#wpstg-success-button', function(e) {\n e.preventDefault();\n $('.wpstg-report-issue-form').removeClass('wpstg-report-show');\n });\n\n function sendIssueReport(button, forceSend = 'false') {\n const spinner = button.next();\n const email = $('.wpstg--tab--active .wpstg-report-email').val();\n const hosting_provider = $('.wpstg--tab--active .wpstg-report-hosting-provider').val();\n const message = $('.wpstg--tab--active .wpstg-report-description').val();\n const syslog = $('.wpstg--tab--active .wpstg-report-syslog').is(':checked');\n const terms = $('.wpstg--tab--active .wpstg-report-terms').is(':checked');\n\n button.attr('disabled', true);\n spinner.css('visibility', 'visible');\n\n $.ajax({\n url: ajaxurl,\n type: 'POST',\n dataType: 'json',\n async: true,\n data: {\n 'action': 'wpstg_send_report',\n 'accessToken': wpstg.accessToken,\n 'nonce': wpstg.nonce,\n 'wpstg_email': email,\n 'wpstg_provider': hosting_provider,\n 'wpstg_message': message,\n 'wpstg_syslog': +syslog,\n 'wpstg_terms': +terms,\n 'wpstg_force_send': forceSend,\n },\n }).done(function(data) {\n button.attr('disabled', false);\n spinner.css('visibility', 'hidden');\n\n if (data.errors.length > 0) {\n $('.wpstg--tab--active .wpstg-report-issue-form .wpstg-message').remove();\n\n let errorMessage = $('<div />').addClass('wpstg-message wpstg-error-message');\n $.each(data.errors, function(key, value) {\n if (value.status === 'already_submitted') {\n errorMessage = '';\n // TODO: remove default custom classes\n WPStagingCommon.getSwalModal(true, {\n container: 'wpstg-issue-resubmit-confirmation',\n }).fire({\n title: '',\n icon: 'warning',\n html: value.message,\n showCancelButton: true,\n focusConfirm: false,\n confirmButtonText: 'Yes',\n cancelButtonText: 'No',\n }).then((result) => {\n if (result.isConfirmed) {\n sendIssueReport(button, 'true');\n }\n });\n } else {\n errorMessage.append('<p>' + value + '</p>');\n }\n });\n\n $('.wpstg--tab--active .wpstg-report-issue-form').prepend(errorMessage);\n } else {\n const successMessage = $('<div />').addClass('wpstg-message wpstg-success-message');\n successMessage.append('<p>Thanks for submitting your request! You should receive an auto reply mail with your ticket ID immediately for confirmation!<br><br>If you do not get that mail please contact us directly at <strong>support@wp-staging.com</strong></p>');\n\n $('.wpstg--tab--active .wpstg-report-issue-form').html(successMessage);\n $('.wpstg--tab--active .wpstg-success-message').append('<div style=\"float:right;margin-top:10px;\"><a id=\"wpstg-success-button\" href=\"#\" class=\"wpstg--red\">[X] CLOSE</a></div>');\n\n // Hide message\n setTimeout(function() {\n $('.wpstg--tab--active .wpstg-report-issue-form').removeClass('wpstg-report-active');\n }, 2000);\n }\n });\n }\n\n // Open/close actions drop down menu\n $(document).on('click', '.wpstg-dropdown>.wpstg-dropdown-toggler', function(e) {\n e.preventDefault();\n $(e.target).next('.wpstg-dropdown-menu').toggleClass('shown');\n\n $(e.target).find('.wpstg-caret').toggleClass('wpstg-caret-up');\n });\n\n $(document).on('click', '.wpstg-caret', function(e) {\n e.preventDefault();\n\n const toggler = $(e.target).closest('.wpstg-dropdown-toggler');\n\n if (toggler) {\n toggler.trigger('click');\n }\n });\n\n // Close action drop down menu if clicked anywhere outside\n document.addEventListener('click', function(event) {\n const isClickInside = event.target.closest('.wpstg-dropdown-toggler');\n if (!isClickInside) {\n const dropDown = document.getElementsByClassName('wpstg-dropdown-menu');\n for (let i = 0; i < dropDown.length; i++) {\n dropDown[i].classList.remove('shown');\n }\n $('.wpstg-caret').removeClass('wpstg-caret-up');\n }\n });\n\n // \"Event info\" for backup errors\n window.addEventListener('finishedProcessWithError', function(customEvent) {\n $.ajax({\n url: ajaxurl,\n type: 'POST',\n dataType: 'json',\n data: {\n 'action': 'wpstg_job_error',\n 'accessToken': wpstg.accessToken,\n 'nonce': wpstg.nonce,\n 'error_message': customEvent.detail.error,\n 'job_id': WPStagingCommon.getJobId(),\n },\n });\n });\n});\n"],"names":["closest","Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","s","el","this","call","parentElement","parentNode","nodeType","element","selector","qs","document","querySelector","all","querySelectorAll","addEvent","parent","evt","handler","addEventListener","event","target","slideDown","duration","style","display","overflow","height","offsetHeight","transitionProperty","transitionDuration","setTimeout","window","removeProperty","slideUp","handleDisplayDependencies","id","hiddenClass","getAttribute","container","showIfChecked","showIfUnchecked","checked","length","classList","remove","add","handleToggleElement","elements","toggle","handleCopyPaste","navigator","clipboard","writeText","value","handleCopyToClipboard","WpstgCloneStaging","pageWrapperId","wpstgObject","wpstg","pageWrapper","dom","enableButtonId","enableAction","notyf","Notyf","position","x","y","dismissible","types","type","background","icon","init","addEvents","_this","sendRequest","action","fetch","ajaxUrl","method","credentials","body","URLSearchParams","accessToken","nonce","headers","then","response","ok","json","Promise","reject","data","success","location","reload","message","_this2","error","i18n","console","warn","WpstgDirectoryNavigation","directoryListingSelector","workflowSelector","directoryListingContainer","workflow","dirCheckboxSelector","dirExpandSelector","unselectAllDirsSelector","selectDefaultDirsSelector","fetchChildrenAction","currentCheckboxElement","currentParentDiv","currentLoader","existingExcludes","excludedDirectories","isDefaultSelected","preventDefault","log","getExcludedDirectories","toggleDirExpand","unselectAll","selectDefault","toggleDirectoryNavigation","updateDirectorySelection","parseExcludes","previousSibling","dirPath","isChecked","forceDefault","setAttribute","dirContainer","createElement","innerHTML","JSON","parse","directoryListing","appendChild","alert","forEach","_this3","isParentExcluded","push","exclude","isScanned","join","settings","directorySeparator","path","isParentAlreadyExcluded","dir","startsWith","getExtraDirectoriesRootOnly","extraDirectories","extraDirectoriesTextArea","extraCustomDirectories","split","concat","map","substr","slice","scanned","cbElement","subDirectories","sibling","nextElementSibling","result","parElem","i","children","WpstgTableSelection","databaseTableSectionSelector","networkCloneSelector","databaseTableSection","networkCloneCheckbox","isAllTablesChecked","isMultisite","isNetworkClone","setNetworkClone","selectDefaultTables","toggleTableSelection","getRegexPattern","pattern","tblprefix","isNetwork","undefined","options","regexPattern","option","match","selected","getSelectedTablesWithoutPrefix","selectedTablesWithoutPrefix","getIncludedTables","includedTables","getExcludedTables","excludedTables","WpstgExcludeFilters","excludeFilterContainerSelector","excludeContainer","excludeTableBody","addFileSizeExclude","addFileExtExclude","addFileNameExclude","addDirNameExclude","clearExcludes","removeExclude","addExcludeRuleRow","templateName","excludeRowTemplate","excludeRow","content","cloneNode","e","removeChild","trim","getExcludeFilters","globExcludes","sizeExcludes","sizeCompares","sizeSizes","sizeByte","Object","entries","key","sizeInput","ext","cleanStringForGlob","fileNamesPos","fileNames","fileInput","fileName","cleanStringForGlobExactMatches","dirNamesPos","dirNames","dirInput","dirName","filter","onlyUnique","index","self","indexOf","replace","WpstgModal","confirmAction","show","swalOptions","additionalParams","callback","wpstgSwal","fire","triggerConfirmAction","assign","onOver","onOut","pX","pY","mouseOver","focused","h","state","timer","sensitivity","interval","timeout","handleFocus","tracker","clientX","clientY","compare","clearTimeout","Math","abs","dispatchOver","removeEventListener","onMouseOver","dispatchOut","delay","onMouseOut","onFocus","onBlur","removeFocus","opt","focusOptionChanged","$","WPStagingCommon","continueErrorHandle","cache","get","inArray","refresh","setJobId","jobId","localStorage","setItem","getJobId","getItem","listenTooltip","wpstgHoverIntent","visibility","isEmpty","obj","prop","hasOwnProperty","getSwalModal","isContentCentered","customClasses","defaultCustomClasses","confirmButton","cancelButton","actions","popup","customClass","buttonsStyling","reverseButtons","showClass","mixin","showSuccessModal","htmlContent","showConfirmButton","showCancelButton","cancelButtonText","title","html","showWarningModal","showErrorModal","getSwalContainer","getContainer","closeSwalModal","close","getDataFromWordPressResponse","Error","Array","shift","isLoading","hide","slugify","url","toString","toLowerCase","normalize","showAjaxFatalError","prependMessage","appendMessage","showError","WPStaging","warnIfClosingDuringProcess","handleFetchErrors","status","statusText","css","text","removeClass","resetErrors","ajax","dataType","showErrors","tryCount","incrementRatio","errorCallback","retryLimit","retryTimeout","parseInt","isNaN","ajaxurl","Date","now","xhr","textStatus","errorThrown","errorCode","statusCode","jQuery","WpstgResetModal","cloneID","fetchExcludeSettingsAction","modalErrorAction","resetButtonClass","resetModalContainerClass","resetTabSelector","directoryNavigator","excludeFilters","tableSelector","resetModalContainer","toggleContent","contentId","tabTriangle","isCollapsed","contains","transform","showModal","swalPromise","loadModal","fetchCloneExcludes","getAjaxLoader","width","focusConfirm","confirmButtonText","resetClone","clone","job","modal","renderError","getDirectoryNavigator","getTableSelector","wpstgIcon","WpstgCloningAdvanceSettings","baseContainerSelector","baseContainer","checkBoxSettingTogglerSelector","toggleSettings","WpstgMainMenu","activeTabClass","mainMenu","$this","targetElements","menuItems","menuItem","targetElement","dispatchEvent","Event","ajaxSpinner","that","isCancelled","isFinished","getLogs","time","executionTime","progressBar","cloneExcludeFilters","areAllTablesChecked","returnValue","validateTargetHost","the_domain","val","test","cloneActions","$workFlow","on","confirm","append","cancelCloning","startCloning","cancelCloningUpdate","restart","$existingClones","animate","scrollTop","offset","top","addClass","deleteClone","jsonResponse","tryParseJson","checkDiskSpace","switchStep","resetModal","promise","dirNavigator","exclFilters","excludeSizeRules","encodeURIComponent","sizes","excludeGlobRules","globs","each","name","verifyExternalDatabase","databaseUser","databasePassword","databaseServer","databaseDatabase","proceedCloning","error_type","render","checks","production","staging","getTime","cloneName","rules","databasePrefix","cloneDir","cloneHostname","emailsAllowed","is","networkClone","uploadsSymlinked","cleanPluginsThemes","cleanUploadsDir","getCloningData","sendCloningAjax","object","excludeOptions","loadOverview","deleteDir","find","$div","constructor","date","scrollHeight","requiredSpace","errorMessage","clearInterval","convertSeconds","setInterval","getElementById","seconds","setSeconds","toISOString","processing","delayReq","last_msg","job_done","$link1","$link","attr","msg","cloneResetComplete","cloneUpdateComplete","finish","percentage","toFixed","step","urlSpinner","devicePixelRatio","removeAttr","cloneDirectoryName","directoryName","slug","substring","$targetDir","$targetUri","uri","after","focus","onlyUpdateMessage","stepButtons","$section","toggleClass","slideToggle","hasClass","ready","sendIssueReport","button","forceSend","spinner","next","email","hosting_provider","syslog","terms","async","done","errors","isConfirmed","prepend","successMessage","toggler","trigger","dropDown","getElementsByClassName","customEvent","detail"],"mappings":"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"}
|
1 |
+
{"version":3,"file":"wpstg-admin.min.js","sources":["../src/modules/wpstg-polyfill.js","../src/modules/wpstg-dom-utils.js","../src/modules/wpstg-clone-staging.js","../src/modules/wpstg-directory-navigation.js","../src/modules/wpstg-table-selection.js","../src/modules/wpstg-exclude-filters.js","../src/modules/wpstg-modal.js","../src/modules/wpstg-hover-intent.js","../src/wpstg.js","../src/modules/wpstg-reset-modal.js","../src/modules/wpstg-cloning-advance-settings.js","../src/modules/wpstg-main-menu.js","../src/wpstg-admin.js"],"sourcesContent":["/**\n * Polyfills the `Element.prototype.closest` function if not available in the browser.\n *\n * @return {Function} A function that will return the closest element, by selector, to this element.\n */\nfunction polyfillClosest() {\n if (Element.prototype.closest) {\n if (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n\n Element.prototype.closest = function(s) {\n let el = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n }\n\n return function(element, selector) {\n return element instanceof Element ? element.closest(selector) : null;\n };\n}\n\nexport const closest = polyfillClosest();\n","import {closest} from './wpstg-polyfill';\n\n/**\n * WP STAGING basic jQuery replacement\n */\n\n/**\n * Shortcut for document.querySelector() or jQuery's $()\n * Return single element only\n */\nexport function qs(selector) {\n return document.querySelector(selector);\n}\n\n/**\n * Shortcut for document.querySelector() or jQuery's $()\n * Return collection of elements\n */\nexport function all(selector) {\n return document.querySelectorAll(selector);\n}\n\n/**\n * alternative of jQuery - $(parent).on(event, selector, handler)\n */\nexport function addEvent(parent, evt, selector, handler) {\n if (!parent instanceof Element) {\n return;\n }\n\n parent.addEventListener(evt, function(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n handler(event.target.closest(selector), event);\n }\n }, false);\n}\n\nexport function slideDown(element, duration = 400) {\n element.style.display = 'block';\n element.style.overflow = 'hidden';\n const height = element.offsetHeight;\n element.style.height = '0px';\n element.style.transitionProperty = 'height';\n element.style.transitionDuration = duration + 'ms';\n setTimeout(() => {\n element.style.height = height + 'px';\n window.setTimeout(() => {\n element.style.removeProperty('height');\n element.style.removeProperty('overflow');\n element.style.removeProperty('transition-duration');\n element.style.removeProperty('transition-property');\n }, duration);\n }, 0);\n}\n\nexport function slideUp(element, duration = 400) {\n element.style.display = 'block';\n element.style.overflow = 'hidden';\n const height = element.offsetHeight;\n element.style.height = height + 'px';\n element.style.transitionProperty = 'height';\n element.style.transitionDuration = duration + 'ms';\n setTimeout(() => {\n element.style.height = '0px';\n window.setTimeout(() => {\n element.style.display = 'none';\n element.style.removeProperty('height');\n element.style.removeProperty('overflow');\n element.style.removeProperty('transition-duration');\n element.style.removeProperty('transition-property');\n }, duration);\n }, 0);\n}\n\nexport function fadeOut(element, duration = 300) {\n element.style.opacity = 1;\n element.style.transitionProperty = 'opacity';\n element.style.transitionDuration = duration + 'ms';\n setTimeout(() => {\n element.style.opacity = 0;\n window.setTimeout(() => {\n element.style.display = 'none';\n element.style.removeProperty('opacity');\n element.style.removeProperty('transition-duration');\n element.style.removeProperty('transition-property');\n }, duration);\n }, 0);\n}\n\nexport function getNextSibling(element, selector) {\n let sibling = element.nextElementSibling;\n\n while (sibling) {\n if (sibling.matches(selector)) {\n return sibling;\n }\n\n sibling = sibling.nextElementSibling;\n }\n};\n\nexport function getParents(element, selector) {\n const result = [];\n for (let parent = element && element.parentElement; parent; parent = parent.parentElement) {\n if (parent.matches(selector)) {\n result.push(parent);\n }\n }\n\n return result;\n}\n\n/**\n * Check if element has class name\n * @param element\n * @param className\n * @return {boolean}\n */\nexport function hasClass(element, className) {\n return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;\n}\n\n/**\n * Dispatches a change on an element that will trigger, depending on the element type,\n * cascading changes on elements dependant on the one that triggered the change and that\n * belong in the same container.\n *\n * @param {Element} element A reference to the Element the change was triggered from.\n *\n * @return {void} The function does not return any value and will have the side-effect of\n * hiding or showing dependant elements.\n */\nexport function handleDisplayDependencies(element) {\n if (!element instanceof Element || !element.id) {\n return;\n }\n\n const containerSelector = '.wpstg-container';\n // Use the default WordPress CSS class to hide and show the objects.\n const hiddenClass = 'hidden';\n const elementType = element.getAttribute('type');\n\n switch (elementType) {\n case 'checkbox':\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n const showIfChecked = container.querySelectorAll(`[data-show-if-checked=\"${element.id}\"]`);\n const showIfUnchecked = container.querySelectorAll(`[data-show-if-unchecked=\"${element.id}\"]`);\n const checked = element.checked;\n\n if (showIfChecked.length) {\n for (const el of showIfChecked) {\n if (checked) {\n el.classList.remove(hiddenClass);\n } else {\n el.classList.add(hiddenClass);\n }\n }\n }\n\n if (showIfUnchecked.length) {\n for (const el of showIfUnchecked) {\n if (checked) {\n el.classList.add(hiddenClass);\n } else {\n el.classList.remove(hiddenClass);\n }\n }\n }\n\n return;\n default:\n // Not a type we handle.\n return;\n }\n}\n\n/**\n * Initializes the display status of any element that depends on the status of another to\n * either hide or show.\n *\n * @return {void} The function will have the side-effect to toggle the hide/show class from\n * elements dependant on another to hide or show.\n */\nexport function initDependantDisplay() {\n const displayControllerSelector = '[onchange^=\"WPStaging.handleDisplayDependencies\"]';\n const displayControllers = document.querySelectorAll(displayControllerSelector);\n for (const displayController of displayControllers) {\n handleDisplayDependencies(displayController);\n }\n}\n\n/**\n * Toggle target element set in data-wpstg-target of the given element\n *\n * @param {Element} element A reference to the Element the change was triggered from.\n *\n * @return {void} The function does not return any value and will have the side-effect of\n * hiding or showing dependant elements.\n */\nexport function handleToggleElement(element) {\n if (!element instanceof Element || !element.getAttribute('data-wpstg-target')) {\n return;\n }\n\n const containerSelector = '.wpstg_admin';\n // Use the default WordPress CSS class to hide and show the objects.\n const hiddenClass = 'hidden';\n\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n const elements = container.querySelectorAll(element.getAttribute('data-wpstg-target'));\n\n if (elements.length) {\n for (const el of elements) {\n el.classList.toggle(hiddenClass);\n }\n }\n}\n\n/**\n * Copy text in data-wpstg-copy to element(s) in data-wpstg-target\n *\n * @param {Element} element\n *\n * @return {void}\n */\nexport function handleCopyPaste(element) {\n if (!element instanceof Element || !element.getAttribute('data-wpstg-target') || !element.getAttribute('data-wpstg-copy')) {\n return;\n }\n\n const containerSelector = '.wpstg_admin';\n\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n navigator.clipboard.writeText(element.getAttribute('data-wpstg-copy'));\n const elements = container.querySelectorAll(element.getAttribute('data-wpstg-target'));\n\n if (elements.length) {\n for (const el of elements) {\n el.value = element.getAttribute('data-wpstg-copy', '');\n }\n }\n}\n\n/**\n * Copy text in data-wpstg-source to clipboard\n *\n * @param {Element} element\n *\n * @return {void}\n */\nexport function handleCopyToClipboard(element) {\n if (!element instanceof Element || !element.getAttribute('data-wpstg-source')) {\n return;\n }\n\n const containerSelector = '.wpstg_admin';\n\n // Go as high as the container that contains this element.\n const container = closest(element, containerSelector);\n\n if (container === null) {\n return;\n }\n\n const el = container.querySelector(element.getAttribute('data-wpstg-source'));\n\n if (el) {\n navigator.clipboard.writeText(el.value);\n }\n}\n\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Enable/Disable cloning for staging site\n */\nexport default class WpstgCloneStaging {\n constructor(\n pageWrapperId = '#wpstg-clonepage-wrapper',\n wpstgObject = wpstg,\n ) {\n this.pageWrapper = dom.qs(pageWrapperId);\n this.wpstgObject = wpstgObject;\n this.enableButtonId = '#wpstg-enable-staging-cloning';\n this.enableAction = 'wpstg_enable_staging_cloning';\n\n this.notyf = new Notyf({\n duration: 10000,\n position: {\n x: 'center',\n y: 'bottom',\n },\n dismissible: true,\n types: [\n {\n type: 'warning',\n background: 'orange',\n icon: false,\n },\n ],\n });\n this.init();\n }\n\n addEvents() {\n if (this.pageWrapper === null) {\n return;\n }\n\n dom.addEvent(this.pageWrapper, 'click', this.enableButtonId, () => {\n this.sendRequest(this.enableAction);\n });\n }\n\n init() {\n this.addEvents();\n }\n\n sendRequest(action) {\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams({\n action: action,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((data) => {\n // Reload current page if successful.\n if ('undefined' !== typeof (data.success) && data.success) {\n location.reload();\n return;\n }\n\n // There will be message probably in case of error\n if ('undefined' !== typeof (data.message)) {\n this.notyf.error(data.message);\n return;\n }\n\n this.notyf.error(this.wpstgObject.i18n['somethingWentWrong']);\n }).catch((error) => {\n console.warn(this.wpstgObject.i18n['somethingWentWrong'], error);\n });\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Fetch directory direct child directories\n */\nexport default class WpstgDirectoryNavigation {\n constructor(\n directoryListingSelector = '#wpstg-directories-listing',\n workflowSelector = '#wpstg-workflow',\n wpstgObject = wpstg,\n notyf = null,\n ) {\n this.directoryListingContainer = dom.qs(directoryListingSelector);\n this.workflow = dom.qs(workflowSelector);\n this.wpstgObject = wpstgObject;\n this.dirCheckboxSelector = '.wpstg-check-dir';\n this.dirExpandSelector = '.wpstg-expand-dirs';\n this.unselectAllDirsSelector = '.wpstg-unselect-dirs';\n this.selectDefaultDirsSelector = '.wpstg-select-dirs-default';\n this.fetchChildrenAction = 'wpstg_fetch_dir_childrens';\n this.currentCheckboxElement = null;\n this.currentParentDiv = null;\n this.currentLoader = null;\n this.existingExcludes = [];\n this.excludedDirectories = [];\n this.isDefaultSelected = false;\n this.notyf = notyf;\n\n this.init();\n }\n\n addEvents() {\n if (this.directoryListingContainer === null) {\n console.log('Error: directory navigation add events');\n return;\n }\n\n dom.addEvent(this.directoryListingContainer, 'change', this.dirCheckboxSelector, (element, event) => {\n event.preventDefault();\n console.log(this.getExcludedDirectories());\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', this.dirExpandSelector, (element, event) => {\n event.preventDefault();\n if (this.toggleDirExpand(element)) {\n this.sendRequest(this.fetchChildrenAction, element);\n }\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', this.unselectAllDirsSelector, () => {\n this.unselectAll();\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', this.selectDefaultDirsSelector, () => {\n this.selectDefault();\n });\n\n dom.addEvent(this.directoryListingContainer, 'click', '.wpstg-expand-dirs', (target, event) => {\n event.preventDefault();\n this.toggleDirectoryNavigation(target);\n });\n\n dom.addEvent(this.directoryListingContainer, 'change', 'input.wpstg-check-dir', (target) => {\n this.updateDirectorySelection(target);\n });\n }\n\n init() {\n this.addEvents();\n this.parseExcludes();\n }\n\n /**\n * Toggle Dir Expand,\n * Return true if children aren't fetched\n * @param {HTMLElement} element\n * @return {boolean}\n */\n toggleDirExpand(element) {\n this.currentParentDiv = element.parentElement;\n this.currentCheckboxElement = element.previousSibling;\n this.currentLoader = this.currentParentDiv.querySelector('.wpstg-is-dir-loading');\n if (this.currentCheckboxElement.getAttribute('data-navigateable', 'false') === 'false') {\n return false;\n }\n\n if (this.currentCheckboxElement.getAttribute('data-scanned', 'false') === 'false') {\n return true;\n }\n\n return false;\n }\n\n sendRequest(action) {\n if (this.currentLoader !== null) {\n this.currentLoader.style.display = 'inline-block';\n }\n\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams({\n action: action,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n dirPath: this.currentCheckboxElement.value,\n isChecked: this.currentCheckboxElement.checked,\n forceDefault: this.isDefaultSelected,\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((data) => {\n if ('undefined' !== typeof (data.success) && data.success) {\n this.currentCheckboxElement.setAttribute('data-scanned', true);\n const dirContainer = document.createElement('div');\n dirContainer.classList.add('wpstg-dir');\n dirContainer.classList.add('wpstg-subdir');\n dirContainer.innerHTML = JSON.parse(data.directoryListing);\n this.currentParentDiv.appendChild(dirContainer);\n if (this.currentLoader !== null) {\n this.currentLoader.style.display = 'none';\n }\n\n dom.slideDown(dirContainer);\n\n return;\n }\n\n if (this.notyf !== null) {\n this.notyf.error(this.wpstgObject.i18n['somethingWentWrong']);\n } else {\n alert('Error: ' + this.wpstgObject.i18n['somethingWentWrong']);\n }\n }).catch((error) => {\n console.warn(this.wpstgObject.i18n['somethingWentWrong'], error);\n });\n }\n\n getExcludedDirectories() {\n this.excludedDirectories = [];\n this.directoryListingContainer.querySelectorAll('.wpstg-dir input:not(:checked)').forEach((element) => {\n if (!this.isParentExcluded(element.value)) {\n this.excludedDirectories.push(element.value);\n }\n });\n\n this.existingExcludes.forEach((exclude) => {\n if (!this.isParentExcluded(exclude) && !this.isScanned(exclude)) {\n this.excludedDirectories.push(exclude);\n }\n });\n\n return this.excludedDirectories.join(this.wpstgObject.settings.directorySeparator);\n }\n\n /**\n * @param {string} path\n * @return {bool}\n */\n isParentExcluded(path) {\n let isParentAlreadyExcluded = false;\n this.excludedDirectories.forEach((dir) => {\n if (path.startsWith(dir + '/')) {\n isParentAlreadyExcluded = true;\n }\n });\n\n return isParentAlreadyExcluded;\n }\n\n getExtraDirectoriesRootOnly() {\n this.getExcludedDirectories();\n const extraDirectories = [];\n this.directoryListingContainer.querySelectorAll(':not(.wpstg-subdir)>.wpstg-dir>input.wpstg-wp-non-core-dir:checked').forEach((element) => {\n extraDirectories.push(element.value);\n });\n\n // Check if extra directories text area exists\n // TODO: remove extraCustomDirectories code if no one require extraCustomDirectories...\n const extraDirectoriesTextArea = dom.qs('#wpstg_extraDirectories');\n if (extraDirectoriesTextArea === null || extraDirectoriesTextArea.value === '') {\n return extraDirectories.join(this.wpstgObject.settings.directorySeparator);\n }\n\n const extraCustomDirectories = extraDirectoriesTextArea.value.split(/\\r?\\n/);\n\n return extraDirectories.concat(extraCustomDirectories).join(this.wpstgObject.settings.directorySeparator);\n }\n\n unselectAll() {\n this.directoryListingContainer.querySelectorAll('.wpstg-dir input').forEach((element) => {\n element.checked = false;\n });\n }\n\n selectDefault() {\n // unselect all checkboxes\n this.unselectAll();\n\n // only select those checkboxes whose class is wpstg-wp-core-dir\n this.directoryListingContainer.querySelectorAll('.wpstg-dir input.wpstg-wp-core-dir').forEach((element) => {\n element.checked = true;\n });\n\n // then unselect those checkboxes whose parent has wpstg extra checkbox\n this.directoryListingContainer.querySelectorAll('.wpstg-dir > .wpstg-wp-non-core-dir').forEach((element) => {\n element.parentElement.querySelectorAll('input.wpstg-wp-core-dir').forEach((element) => {\n element.checked = false;\n });\n });\n\n this.isDefaultSelected = true;\n }\n\n parseExcludes() {\n this.existingExcludes = this.directoryListingContainer.getAttribute('data-existing-excludes', []);\n if (this.existingExcludes === '') {\n this.existingExcludes = [];\n return;\n }\n\n if (this.existingExcludes.length === 0) {\n this.existingExcludes = [];\n return;\n }\n\n const existingExcludes = this.existingExcludes.split(',');\n this.existingExcludes = existingExcludes.map((exclude) => {\n if (exclude.substr(0, 1) === '/') {\n return exclude.slice(1);\n }\n\n return exclude;\n });\n }\n\n isScanned(exclude) {\n let scanned = false;\n this.directoryListingContainer.querySelectorAll('.wpstg-dir>input').forEach((element) => {\n if (element.value == exclude) {\n scanned = true;\n }\n });\n\n return scanned;\n }\n\n toggleDirectoryNavigation(element) {\n const cbElement = element.previousSibling;\n if (cbElement.getAttribute('data-navigateable', 'false') === 'false') {\n return;\n }\n\n if (cbElement.getAttribute('data-scanned', 'false') === 'false') {\n return;\n }\n\n const subDirectories = dom.getNextSibling(element, '.wpstg-subdir');\n\n if (subDirectories.style.display === 'none') {\n dom.slideDown(subDirectories);\n } else {\n dom.slideUp(subDirectories);\n }\n }\n\n updateDirectorySelection(element) {\n const parent = element.parentElement;\n if (element.checked) {\n dom.getParents(parent, '.wpstg-dir').forEach((parElem) => {\n for (let i = 0; i < parElem.children.length; i++) {\n if (parElem.children[i].matches('.wpstg-check-dir')) {\n parElem.children[i].checked = true;\n }\n }\n });\n parent.querySelectorAll('.wpstg-expand-dirs').forEach((x) => {\n x.classList.remove('disabled');\n });\n parent.querySelectorAll('.wpstg-subdir .wpstg-check-dir').forEach((x) => {\n x.checked = true;\n });\n } else {\n parent.querySelectorAll('.wpstg-expand-dirs, .wpstg-check-subdirs').forEach((x) => {\n x.classList.add('disabled');\n });\n parent.querySelectorAll('.wpstg-dir .wpstg-check-dir').forEach((x) => {\n x.checked = false;\n });\n }\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Database tables selection\n */\nexport default class WpstgTableSelection {\n constructor(\n databaseTableSectionSelector = '#wpstg-scanning-db',\n workflowSelector = '#wpstg-workflow',\n networkCloneSelector = '#wpstg_network_clone',\n wpstgObject = wpstg,\n ) {\n this.databaseTableSection = dom.qs(databaseTableSectionSelector);\n this.workflow = dom.qs(workflowSelector);\n this.networkCloneSelector = networkCloneSelector;\n this.networkCloneCheckbox = dom.qs(networkCloneSelector);\n this.wpstgObject = wpstgObject;\n this.isAllTablesChecked = true;\n this.isMultisite = this.wpstgObject.isMultisite === '1';\n this.isNetworkClone = false;\n\n this.init();\n }\n\n setNetworkClone(isNetworkClone) {\n this.isNetworkClone = isNetworkClone;\n }\n\n addEvents() {\n if (this.workflow === null) {\n console.log('Error: database table section is null. Cannot register events');\n return;\n }\n\n dom.addEvent(this.workflow, 'change', this.networkCloneSelector, () => {\n this.selectDefaultTables();\n });\n\n dom.addEvent(this.workflow, 'click', '.wpstg-button-select', (target, event) => {\n event.preventDefault();\n this.selectDefaultTables();\n });\n\n dom.addEvent(this.workflow, 'click', '.wpstg-button-unselect', (target, event) => {\n event.preventDefault();\n this.toggleTableSelection();\n });\n }\n\n init() {\n this.addEvents();\n }\n\n getRegexPattern() {\n let pattern = '^' + this.wpstgObject.tblprefix;\n let isNetwork = false;\n if (this.networkCloneCheckbox !== undefined && this.networkCloneCheckbox !== null) {\n isNetwork = this.networkCloneCheckbox.checked;\n }\n\n // Force network clone true if set explicitly\n if (this.isNetworkClone) {\n isNetwork = true;\n }\n\n if (this.isMultisite && !isNetwork) {\n pattern += '([^0-9])_*';\n }\n\n return pattern;\n }\n\n selectDefaultTables() {\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning .wpstg-db-table');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (name.match(regexPattern)) {\n option.selected = true;\n } else {\n option.selected = false;\n }\n });\n }\n\n toggleTableSelection() {\n if (false === this.isAllTablesChecked) {\n this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning .wpstg-db-table').forEach((option) => {\n option.selected = true;\n });\n this.databaseTableSection.querySelector('.wpstg-button-unselect').innerHTML = 'Unselect All';\n // cache.get('.wpstg-db-table-checkboxes').prop('checked', true);\n this.isAllTablesChecked = true;\n } else {\n this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning .wpstg-db-table').forEach((option) => {\n option.selected = false;\n });\n this.databaseTableSection.querySelector('.wpstg-button-unselect').innerHTML = 'Select All';\n // cache.get('.wpstg-db-table-checkboxes').prop('checked', false);\n this.isAllTablesChecked = false;\n }\n }\n\n getSelectedTablesWithoutPrefix() {\n const selectedTablesWithoutPrefix = [];\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning option:checked');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (!name.match(regexPattern)) {\n selectedTablesWithoutPrefix.push(option.value);\n }\n });\n\n return selectedTablesWithoutPrefix.join(this.wpstgObject.settings.directorySeparator);\n }\n\n getIncludedTables() {\n const includedTables = [];\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning option:checked');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (name.match(regexPattern)) {\n includedTables.push(option.value);\n }\n });\n\n return includedTables.join(this.wpstgObject.settings.directorySeparator);\n }\n\n getExcludedTables() {\n const excludedTables = [];\n const options = this.databaseTableSection.querySelectorAll('#wpstg_select_tables_cloning option:not(:checked)');\n const regexPattern = this.getRegexPattern();\n options.forEach((option) => {\n const name = option.getAttribute('name', '');\n if (name.match(regexPattern)) {\n excludedTables.push(option.value);\n }\n });\n\n return excludedTables.join(this.wpstgObject.settings.directorySeparator);\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Rich Exclude Filter Module\n */\nexport default class WpstgExcludeFilters {\n constructor(\n excludeFilterContainerSelector = '#wpstg-exclude-filters-container',\n wpstgObject = wpstg,\n ) {\n this.excludeContainer = dom.qs(excludeFilterContainerSelector);\n this.excludeTableBody = dom.qs(`${excludeFilterContainerSelector} tbody`);\n this.wpstgObject = wpstgObject;\n this.init();\n }\n\n addEvents() {\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-file-size-rule', () => {\n this.addFileSizeExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-file-ext-rule', () => {\n this.addFileExtExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-file-name-rule', () => {\n this.addFileNameExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-dir-name-rule', () => {\n this.addDirNameExclude();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-clear-all-rules', () => {\n this.clearExcludes();\n });\n\n dom.addEvent(this.excludeContainer, 'click', '.wpstg-remove-exclude-rule', (target) => {\n this.removeExclude(target);\n });\n }\n\n init() {\n if (this.excludeContainer === null) {\n console.log('Error: Given table selector not found!');\n return;\n }\n\n this.addEvents();\n }\n\n addFileSizeExclude() {\n this.addExcludeRuleRow('#wpstg-file-size-exclude-filter-template');\n }\n\n addFileExtExclude() {\n this.addExcludeRuleRow('#wpstg-file-ext-exclude-filter-template');\n }\n\n addFileNameExclude() {\n this.addExcludeRuleRow('#wpstg-file-name-exclude-filter-template');\n }\n\n addDirNameExclude() {\n this.addExcludeRuleRow('#wpstg-dir-name-exclude-filter-template');\n }\n\n addExcludeRuleRow(templateName) {\n const excludeRowTemplate = dom.qs(templateName);\n if (excludeRowTemplate !== null) {\n const clone = excludeRowTemplate.content.cloneNode(true);\n const excludeRow = clone.querySelector('tr');\n\n this.excludeTableBody.appendChild(excludeRow);\n dom.all('.wpstg-has-exclude-rules').forEach((e) => {\n e.style.display = 'inherit';\n });\n }\n }\n\n clearExcludes() {\n this.excludeTableBody.innerHTML = '';\n dom.all('.wpstg-has-exclude-rules').forEach((e) => {\n e.style.display = 'none';\n });\n }\n\n removeExclude(target) {\n if (target.parentElement !== null && target.parentElement.parentElement !== null) {\n this.excludeTableBody.removeChild(target.parentElement.parentElement);\n }\n\n if (this.excludeTableBody.innerHTML.trim() === '') {\n dom.all('.wpstg-has-exclude-rules').forEach((e) => {\n e.style.display = 'none';\n });\n }\n }\n\n /**\n * Converts all the exclude filters arrays into one single string to keep size of post request small\n * @return {string}\n */\n getExcludeFilters() {\n const globExcludes = [];\n const sizeExcludes = [];\n\n const sizeCompares = this.excludeTableBody.querySelectorAll('select[name=\"wpstgFileSizeExcludeRuleCompare[]\"]');\n const sizeSizes = this.excludeTableBody.querySelectorAll('input[name=\"wpstgFileSizeExcludeRuleSize[]\"]');\n const sizeByte = this.excludeTableBody.querySelectorAll('select[name=\"wpstgFileSizeExcludeRuleByte[]\"]');\n for (const [key, sizeInput] of Object.entries(sizeSizes)) {\n if (sizeInput.value !== '') {\n sizeExcludes.push(sizeCompares[key].value + ' ' + sizeInput.value + sizeByte[key].value);\n }\n }\n\n const extensionInputs = this.excludeTableBody.querySelectorAll('input[name=\"wpstgFileExtExcludeRule[]\"]');\n extensionInputs.forEach((x) => {\n const ext = this.cleanStringForGlob(x.value);\n if (ext !== '') {\n globExcludes.push('ext:' + ext.trim());\n }\n });\n\n const fileNamesPos = this.excludeTableBody.querySelectorAll('select[name=\"wpstgFileNameExcludeRulePos[]\"]');\n const fileNames = this.excludeTableBody.querySelectorAll('input[name=\"wpstgFileNameExcludeRulePath[]\"]');\n for (const [key, fileInput] of Object.entries(fileNames)) {\n let fileName = '';\n if ('name_exact_matches' === fileNamesPos[key].value) {\n fileName = this.cleanStringForGlobExactMatches(fileInput.value);\n } else {\n fileName = this.cleanStringForGlob(fileInput.value);\n }\n\n if (fileName !== '') {\n globExcludes.push('file:' + fileNamesPos[key].value + ' ' + fileName.trim());\n }\n }\n\n const dirNamesPos = this.excludeTableBody.querySelectorAll('select[name=\"wpstgDirNameExcludeRulePos[]\"]');\n const dirNames = this.excludeTableBody.querySelectorAll('input[name=\"wpstgDirNameExcludeRulePath[]\"]');\n for (const [key, dirInput] of Object.entries(dirNames)) {\n const dirName = this.cleanStringForGlob(dirInput.value);\n if (dirName !== '') {\n globExcludes.push('dir:' + dirNamesPos[key].value + ' ' + dirName.trim());\n }\n }\n\n return {\n 'sizes': sizeExcludes.filter(this.onlyUnique).join(','),\n // return set of unique rules\n 'globs': globExcludes.filter(this.onlyUnique).join(','),\n };\n }\n\n onlyUnique(value, index, self) {\n return self.indexOf(value) === index;\n }\n\n /**\n * Remove most of the comment glob characters from the string\n * @param {String} value\n * @return {String}\n */\n cleanStringForGlob(value) {\n // will replace character like * ^ / \\ ! ? [ from the string\n return value.replace(/[*^//!\\.[?]/g, '');\n }\n\n /**\n * Remove most of the comment glob characters from the string except . to allow input of extensions\n * @param {String} value\n * @return {String}\n */\n cleanStringForGlobExactMatches(value) {\n // will replace character like * ^ / \\ ! ? [ from the string\n return value.replace(/[*^//!\\\\[?]/g, '');\n }\n}\n","/**\n * Basic WP Staging Modal implemented with help of Sweetalerts\n */\nexport default class WpstgModal {\n constructor(\n confirmAction,\n wpstgObject = wpstg,\n ) {\n this.confirmAction = confirmAction;\n this.wpstgObject = wpstgObject;\n }\n\n show(swalOptions, additionalParams = {}, callback = null) {\n wpstgSwal.fire(swalOptions).then((result) => {\n if (result.value && this.error !== null) {\n this.triggerConfirmAction(additionalParams, callback);\n }\n });\n }\n\n triggerConfirmAction(additionalParams = {}, callback = null) {\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams(Object.assign({\n action: this.confirmAction,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n }, additionalParams)),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((response) => {\n if (callback !== null) {\n callback(response);\n }\n }).catch((error) => {\n console.log(this.wpstgObject.i18n['somethingWentWrong'], error);\n });\n }\n}\n","'use strict';\n\n/**\n * This is a namespaced port of https://github.com/tristen/hoverintent,\n * with slight modification to accept selector with dynamically added element in dom,\n * instead of just already present element.\n *\n * @param {HTMLElement} parent\n * @param {string} selector\n * @param {CallableFunction} onOver\n * @param {CallableFunction} onOut\n *\n * @return {object}\n */\nexport default function(parent, selector, onOver, onOut) {\n let x; let y; let pX; let pY;\n let mouseOver = false;\n let focused = false;\n const h = {};\n let state = 0;\n let timer = 0;\n\n let options = {\n sensitivity: 7,\n interval: 100,\n timeout: 0,\n handleFocus: false,\n };\n\n function delay(el, e) {\n if (timer) {\n timer = clearTimeout(timer);\n }\n\n state = 0;\n return focused ? undefined : onOut(el, e);\n }\n\n function tracker(e) {\n x = e.clientX;\n y = e.clientY;\n }\n\n function compare(el, e) {\n if (timer) timer = clearTimeout(timer);\n if ((Math.abs(pX - x) + Math.abs(pY - y)) < options.sensitivity) {\n state = 1;\n return focused ? undefined : onOver(el, e);\n } else {\n pX = x;\n pY = y;\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n }\n\n // Public methods\n h.options = function(opt) {\n const focusOptionChanged = opt.handleFocus !== options.handleFocus;\n options = Object.assign({}, options, opt);\n if (focusOptionChanged) {\n options.handleFocus ? addFocus() : removeFocus();\n }\n\n return h;\n };\n\n function dispatchOver(el, e) {\n mouseOver = true;\n if (timer) {\n timer = clearTimeout(timer);\n }\n\n el.removeEventListener('mousemove', tracker, false);\n\n if (state !== 1) {\n pX = e.clientX;\n pY = e.clientY;\n\n el.addEventListener('mousemove', tracker, false);\n\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n\n return this;\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchOver to support dynamically added elements to dom\n */\n function onMouseOver(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchOver(event.target.closest(selector), event);\n }\n };\n\n function dispatchOut(el, e) {\n mouseOver = false;\n if (timer) {\n timer = clearTimeout(timer);\n }\n\n el.removeEventListener('mousemove', tracker, false);\n\n if (state === 1) {\n timer = setTimeout(function() {\n delay(el, e);\n }, options.timeout);\n }\n\n return this;\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchOut to support dynamically added elements to dom\n */\n function onMouseOut(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchOut(event.target.closest(selector), event);\n }\n };\n\n function dispatchFocus(el, e) {\n if (!mouseOver) {\n focused = true;\n onOver(el, e);\n }\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchFocus to support dynamically added elements to dom\n */\n function onFocus(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchFocus(event.target.closest(selector), event);\n }\n };\n\n function dispatchBlur(el, e) {\n if (!mouseOver && focused) {\n focused = false;\n onOut(el, e);\n }\n }\n\n /**\n * Newly added method,\n * A wrapper around dispatchBlur to support dynamically added elements to dom\n */\n function onBlur(event) {\n if (event.target.matches(selector + ', ' + selector + ' *')) {\n dispatchBlur(event.target.closest(selector), event);\n }\n };\n\n /**\n * Modified to support dynamically added element\n */\n function addFocus() {\n parent.addEventListener('focus', onFocus, false);\n parent.addEventListener('blur', onBlur, false);\n }\n\n /**\n * Modified to support dynamically added element\n */\n function removeFocus() {\n parent.removeEventListener('focus', onFocus, false);\n parent.removeEventListener('blur', onBlur, false);\n }\n\n /**\n * Modified to support dynamically added element\n */\n h.remove = function() {\n if (!parent) {\n return;\n }\n\n parent.removeEventListener('mouseover', onMouseOver, false);\n parent.removeEventListener('mouseout', onMouseOut, false);\n removeFocus();\n };\n\n /**\n * Modified to support dynamically added element\n */\n if (parent) {\n parent.addEventListener('mouseover', onMouseOver, false);\n parent.addEventListener('mouseout', onMouseOut, false);\n }\n\n return h;\n};\n","import wpstgHoverIntent from './modules/wpstg-hover-intent';\n\nexport default (function($) {\n const WPStagingCommon = {\n continueErrorHandle: true,\n cache: {\n elements: [],\n get: function(selector) {\n // It is already cached!\n if ($.inArray(selector, this.elements) !== -1) {\n return this.elements[selector];\n }\n\n // Create cache and return\n this.elements[selector] = $(selector);\n\n return this.elements[selector];\n },\n refresh: function(selector) {\n selector.elements[selector] = $(selector);\n },\n },\n setJobId: function(jobId) {\n localStorage.setItem('jobIdBeingProcessed', jobId);\n },\n getJobId: function() {\n return localStorage.getItem('jobIdBeingProcessed');\n },\n listenTooltip: function() {\n wpstgHoverIntent(document, '.wpstg--tooltip', function(target, event) {\n target.querySelector('.wpstg--tooltiptext').style.visibility = 'visible';\n }, function(target, event) {\n target.querySelector('.wpstg--tooltiptext').style.visibility = 'hidden';\n });\n },\n isEmpty: function(obj) {\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n\n return true;\n },\n // Get the custom themed Swal Modal for WP Staging\n // Easy to maintain now in one place now\n getSwalModal: function(isContentCentered = false, customClasses = {}) {\n // common style for all swal modal used in WP Staging\n const defaultCustomClasses = {\n confirmButton: 'wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn wpstg-100-width',\n cancelButton: 'wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn wpstg-100-width',\n actions: 'wpstg--modal--actions',\n popup: isContentCentered ? 'wpstg-swal-popup centered-modal' : 'wpstg-swal-popup',\n };\n\n // If a attribute exists in both default and additional attributes,\n // The class(es) of the additional attribute will overrite the default one.\n const options = {\n customClass: Object.assign(defaultCustomClasses, customClasses),\n buttonsStyling: false,\n reverseButtons: true,\n showClass: {\n popup: 'wpstg--swal2-show wpstg-swal-show',\n },\n };\n\n return wpstgSwal.mixin(options);\n },\n showSuccessModal: function(htmlContent) {\n this.getSwalModal().fire({\n showConfirmButton: false,\n showCancelButton: true,\n cancelButtonText: 'OK',\n icon: 'success',\n title: 'Success!',\n html: '<div class=\"wpstg--grey\" style=\"text-align: left; margin-top: 8px;\">' + htmlContent + '</div>',\n });\n },\n showWarningModal: function(htmlContent) {\n this.getSwalModal().fire({\n showConfirmButton: false,\n showCancelButton: true,\n cancelButtonText: 'OK',\n icon: 'warning',\n title: '',\n html: '<div class=\"wpstg--grey\" style=\"text-align: left; margin-top: 8px;\">' + htmlContent + '</div>',\n });\n },\n showErrorModal: function(htmlContent) {\n this.getSwalModal().fire({\n showConfirmButton: false,\n showCancelButton: true,\n cancelButtonText: 'OK',\n icon: 'error',\n title: 'Error!',\n html: '<div class=\"wpstg--grey\" style=\"text-align: left; margin-top: 8px;\">' + htmlContent + '</div>',\n });\n },\n getSwalContainer: function() {\n return wpstgSwal.getContainer();\n },\n closeSwalModal: function() {\n wpstgSwal.close();\n },\n /**\n * Treats a default response object generated by WordPress's\n * wp_send_json_success() or wp_send_json_error() functions in\n * PHP, parses it in JavaScript, and either throws if it's an error,\n * or returns the data if the response is successful.\n *\n * @param {object} response\n * @return {*}\n */\n getDataFromWordPressResponse(response) {\n if (typeof response !== 'object') {\n throw new Error('Unexpected response (ERR 1341)');\n }\n\n if (!response.hasOwnProperty('success')) {\n throw new Error('Unexpected response (ERR 1342)');\n }\n\n if (!response.hasOwnProperty('data')) {\n throw new Error('Unexpected response (ERR 1343)');\n }\n\n if (response.success === false) {\n if (response.data instanceof Array && response.data.length > 0) {\n throw new Error(response.data.shift());\n } else {\n throw new Error('Response was not successful');\n }\n } else {\n // Successful response. Return the data.\n return response.data;\n }\n },\n isLoading: function(isLoading) {\n if (!isLoading || isLoading === false) {\n WPStagingCommon.cache.get('.wpstg-loader').hide();\n } else {\n WPStagingCommon.cache.get('.wpstg-loader').show();\n }\n },\n /**\n * Convert the given url to make it slug compatible\n * @param {string} url\n * @return {string}\n */\n slugify: function(url) {\n return url.toString()\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .replace(/\\s+/g, '-')\n .replace(/&/g, '-and-')\n .replace(/[^a-z0-9\\-]/g, '')\n .replace(/-+/g, '-')\n .replace(/^-*/, '')\n .replace(/-*$/, '')\n ;\n },\n showAjaxFatalError: function(response, prependMessage, appendMessage) {\n prependMessage = prependMessage ? prependMessage + '<br/><br/>' : 'Something went wrong! <br/><br/>';\n appendMessage = appendMessage ? appendMessage + '<br/><br/>' : '<br/><br/>Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.';\n\n if (response === false) {\n WPStagingCommon.showError(prependMessage + ' Error: No response.' + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n\n if (typeof response.error !== 'undefined' && response.error) {\n WPStagingCommon.showError(prependMessage + ' Error: ' + response.message + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n },\n handleFetchErrors: function(response) {\n if (!response.ok) {\n WPStagingCommon.showError('Error: ' + response.status + ' - ' + response.statusText + '. Please try again or contact support.');\n }\n return response;\n },\n showError: function(message) {\n WPStagingCommon.cache.get('#wpstg-try-again').css('display', 'inline-block');\n WPStagingCommon.cache.get('#wpstg-cancel-cloning').text('Reset');\n WPStagingCommon.cache.get('#wpstg-resume-cloning').show();\n WPStagingCommon.cache.get('#wpstg-error-wrapper').show();\n WPStagingCommon.cache.get('#wpstg-error-details').show().html(message);\n WPStagingCommon.cache.get('#wpstg-removing-clone').removeClass('loading');\n WPStagingCommon.cache.get('.wpstg-loader').hide();\n $('.wpstg--modal--process--generic-problem').show().html(message);\n },\n resetErrors: function() {\n WPStagingCommon.cache.get('#wpstg-error-details').hide().html('');\n },\n /**\n * Ajax Requests\n * @param {Object} data\n * @param {Function} callback\n * @param {string} dataType\n * @param {bool} showErrors\n * @param {int} tryCount\n * @param {float} incrementRatio\n * @param {function} errorCallback\n */\n ajax: function(data, callback, dataType, showErrors, tryCount, incrementRatio = null, errorCallback = null) {\n if ('undefined' === typeof (dataType)) {\n dataType = 'json';\n }\n\n if (false !== showErrors) {\n showErrors = true;\n }\n\n tryCount = 'undefined' === typeof (tryCount) ? 0 : tryCount;\n\n const retryLimit = 10;\n\n let retryTimeout = 10000 * tryCount;\n\n incrementRatio = parseInt(incrementRatio);\n if (!isNaN(incrementRatio)) {\n retryTimeout *= incrementRatio;\n }\n\n $.ajax({\n url: ajaxurl + '?action=wpstg_processing&_=' + (Date.now() / 1000),\n type: 'POST',\n dataType: dataType,\n cache: false,\n data: data,\n error: function(xhr, textStatus, errorThrown) {\n console.log(xhr.status + ' ' + xhr.statusText + '---' + textStatus);\n\n if (typeof (errorCallback) === 'function') {\n // Custom error handler\n errorCallback(xhr, textStatus, errorThrown);\n\n if (!WPStagingCommon.continueErrorHandle) {\n // Reset state\n WPStagingCommon.continueErrorHandle = true;\n\n return;\n }\n }\n\n // Default error handler\n tryCount++;\n if (tryCount <= retryLimit) {\n setTimeout(function() {\n WPStagingCommon.ajax(data, callback, dataType, showErrors, tryCount, incrementRatio);\n return;\n }, retryTimeout);\n } else {\n const errorCode = 'undefined' === typeof (xhr.status) ? 'Unknown' : xhr.status;\n WPStagingCommon.showError(\n 'Fatal Error: ' + errorCode + ' Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.',\n );\n }\n },\n success: function(data) {\n if ('function' === typeof (callback)) {\n callback(data);\n }\n },\n statusCode: {\n 404: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 404 - Can\\'t find ajax request URL! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 500: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Fatal Error 500 - Internal server error while processing the request! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 504: function() {\n if (tryCount > retryLimit) {\n WPStagingCommon.showError('Error 504 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 502: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 502 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 503: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 503 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 429: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Error 429 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 403: function() {\n if (tryCount >= retryLimit) {\n WPStagingCommon.showError('Refresh page or login again! The process should be finished successfully. \\n\\ ');\n }\n },\n },\n });\n },\n };\n\n return WPStagingCommon;\n})(jQuery);\n","\nimport * as dom from './wpstg-dom-utils.js';\nimport WpstgDirectoryNavigation from './wpstg-directory-navigation.js';\nimport WpstgTableSelection from './wpstg-table-selection';\nimport WpstgExcludeFilters from './wpstg-exclude-filters.js';\nimport WpstgModal from './wpstg-modal.js';\nimport WPStagingCommon from './../wpstg.js';\n\n/**\n * Manage RESET MODAL\n */\nexport default class WpstgResetModal {\n constructor(\n cloneID,\n workflowSelector = '#wpstg-workflow',\n fetchExcludeSettingsAction = 'wpstg_clone_excludes_settings',\n modalErrorAction = 'wpstg_modal_error',\n wpstgObject = wpstg,\n ) {\n this.cloneID = cloneID;\n this.workflow = dom.qs(workflowSelector);\n this.wpstgObject = wpstgObject;\n this.fetchExcludeSettingsAction = fetchExcludeSettingsAction;\n this.modalErrorAction = modalErrorAction;\n this.resetButtonClass = 'wpstg-confirm-reset-clone';\n this.resetModalContainerClass = 'wpstg-reset-confirmation';\n this.resetTabSelector = '.wpstg-reset-exclude-tab';\n this.directoryNavigator = null;\n this.excludeFilters = null;\n this.tableSelector = null;\n this.isNetworkClone = false;\n }\n\n addEvents() {\n const resetModalContainer = dom.qs('.' + this.resetModalContainerClass);\n if (resetModalContainer === null) {\n console.log('Exit');\n return;\n }\n\n dom.addEvent(resetModalContainer, 'click', this.resetTabSelector, (target) => {\n this.toggleContent(target);\n });\n }\n\n init() {\n this.addEvents();\n }\n\n setNetworkClone(isNetworkClone) {\n this.isNetworkClone = isNetworkClone;\n }\n\n toggleContent(target) {\n const resetModalContainer = dom.qs('.' + this.resetModalContainerClass);\n const contentId = target.getAttribute('data-id');\n const tabTriangle = target.querySelector('.wpstg-tab-triangle');\n const isCollapsed = target.getAttribute('data-collapsed', 'true');\n const content = dom.qs(contentId);\n if (isCollapsed === 'true') {\n if (resetModalContainer.classList.contains('has-collapsible-open')) {\n resetModalContainer.classList.add('has-collapsible-open-2');\n } else {\n resetModalContainer.classList.add('has-collapsible-open');\n }\n\n dom.slideDown(content);\n tabTriangle.style.transform = 'rotate(90deg)';\n target.setAttribute('data-collapsed', 'false');\n } else {\n if (resetModalContainer.classList.contains('has-collapsible-open-2')) {\n resetModalContainer.classList.remove('has-collapsible-open-2');\n } else {\n resetModalContainer.classList.remove('has-collapsible-open');\n }\n\n dom.slideUp(content);\n tabTriangle.style.removeProperty('transform');\n target.setAttribute('data-collapsed', 'true');\n }\n }\n\n /**\n * Show Swal alert with loader and send ajax request to fetch content of alert.\n * @return Promise\n */\n showModal() {\n const swalPromise = this.loadModal();\n this.init();\n this.fetchCloneExcludes();\n return swalPromise;\n }\n\n loadModal() {\n return WPStagingCommon.getSwalModal(false, {\n confirmButton: this.resetButtonClass + ' wpstg-confirm-reset-clone wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn',\n container: this.resetModalContainerClass + ' wpstg-swal2-container wpstg-swal2-loading',\n }).fire({\n title: '',\n icon: 'warning',\n html: this.getAjaxLoader(),\n width: '400px',\n focusConfirm: false,\n confirmButtonText: this.wpstgObject.i18n.resetClone,\n showCancelButton: true,\n });\n }\n\n fetchCloneExcludes() {\n this.error = null;\n // send ajax request and fetch preserved exclude settings\n fetch(this.wpstgObject.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: new URLSearchParams({\n action: this.fetchExcludeSettingsAction,\n accessToken: this.wpstgObject.accessToken,\n nonce: this.wpstgObject.nonce,\n clone: this.cloneID,\n job: 'resetting',\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n return Promise.reject(response);\n }).then((data) => {\n if (!data.success) {\n const errorModal = new WpstgModal(this.modalErrorAction, this.wpstgObject);\n errorModal.show(Object.assign({\n title: 'Error',\n icon: 'error',\n html: this.wpstgObject.i18n['somethingWentWrong'],\n width: '500px',\n confirmButtonText: 'Ok',\n showCancelButton: false,\n customClass: {\n confirmButton: 'wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn',\n cancelButton: 'wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn',\n actions: 'wpstg--modal--actions',\n popup: 'wpstg-swal-popup centered-modal',\n },\n buttonsStyling: false,\n reverseButtons: true,\n }, data.swalOptions), {\n type: data.type,\n });\n\n return;\n }\n\n const modal = dom.qs('.wpstg-reset-confirmation');\n modal.classList.remove('wpstg-swal2-loading');\n modal.querySelector('.wpstg--swal2-popup').style.width = '500px';\n modal.querySelector('.wpstg--swal2-content').innerHTML = data.html;\n this.directoryNavigator = new WpstgDirectoryNavigation();\n this.excludeFilters = new WpstgExcludeFilters();\n this.tableSelector = new WpstgTableSelection('#wpstg-reset-excluded-tables', '.' + this.resetModalContainerClass);\n this.tableSelector.setNetworkClone(this.isNetworkClone);\n }).catch((error) => {\n this.renderError({\n 'html': this.wpstgObject.i18n['somethingWentWrong'] + ' ' + error,\n });\n });\n }\n\n getDirectoryNavigator() {\n return this.directoryNavigator;\n }\n\n getExcludeFilters() {\n return this.excludeFilters;\n }\n\n getTableSelector() {\n return this.tableSelector;\n }\n\n getAjaxLoader() {\n return '<div class=\"wpstg-swal2-ajax-loader\"><img src=\"' + this.wpstgObject.wpstgIcon + '\" /></div>';\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\n/**\n * Handle toggle of advance settings checkboxes\n */\nexport default class WpstgCloningAdvanceSettings {\n constructor(\n baseContainerSelector = '#wpstg-clonepage-wrapper',\n ) {\n this.baseContainer = dom.qs(baseContainerSelector);\n this.checkBoxSettingTogglerSelector = '.wpstg-toggle-advance-settings-section';\n this.init();\n }\n\n /**\n * Add events\n * @return {void}\n */\n addEvents() {\n if (this.baseContainer === null) {\n return;\n }\n\n dom.addEvent(this.baseContainer, 'change', this.checkBoxSettingTogglerSelector, (element) => {\n this.toggleSettings(element);\n });\n }\n\n /**\n * @return {void}\n */\n init() {\n this.addEvents();\n }\n\n /**\n * Expand/Collapse checkbox content on change\n * @return {void}\n */\n toggleSettings(element) {\n const target = dom.qs('#' + element.getAttribute('data-id'));\n if (element.checked) {\n dom.slideDown(target);\n } else {\n dom.slideUp(target);\n }\n }\n}\n","import * as dom from './wpstg-dom-utils.js';\n\nexport default class WpstgMainMenu {\n constructor() {\n this.activeTabClass = 'wpstg--tab--active';\n this.mainMenu();\n }\n\n mainMenu() {\n const tabHeader = dom.qs('.wpstg--tab--header');\n // Early bail if tab header is not available\n if (tabHeader === null) {\n return;\n }\n\n dom.addEvent(dom.qs('.wpstg--tab--header'), 'click', '.wpstg-button', (element) => {\n const $this = element;\n const target = $this.getAttribute('data-target');\n const targetElements = dom.all(target);\n const menuItems = dom.all('.wpstg--tab--header a[data-target]');\n const contents = dom.all('.wpstg--tab--contents > .wpstg--tab--content');\n\n contents.forEach((content) => {\n // active tab class is without the css dot class prefix\n if (content.matches('.' + this.activeTabClass + ':not(' + target + ')')) {\n content.classList.remove(this.activeTabClass);\n }\n });\n\n menuItems.forEach((menuItem) => {\n if (menuItem !== $this) {\n menuItem.classList.remove(this.activeTabClass);\n }\n });\n\n $this.classList.add(this.activeTabClass);\n\n targetElements.forEach((targetElement) => {\n targetElement.classList.add(this.activeTabClass);\n });\n\n if ('#wpstg--tab--backup' === target) {\n window.dispatchEvent(new Event('backups-tab'));\n }\n });\n };\n}\n","import WpstgCloneStaging from './modules/wpstg-clone-staging.js';\nimport WpstgDirectoryNavigation from './modules/wpstg-directory-navigation.js';\nimport WpstgTableSelection from './modules/wpstg-table-selection.js';\nimport WpstgExcludeFilters from './modules/wpstg-exclude-filters.js';\nimport WpstgResetModal from './modules/wpstg-reset-modal.js';\nimport WpstgModal from './modules/wpstg-modal.js';\nimport WpstgCloningAdvanceSettings from './modules/wpstg-cloning-advance-settings.js';\nimport WpstgMainMenu from './modules/wpstg-main-menu.js';\nimport WPStagingCommon from './wpstg.js';\nimport {handleDisplayDependencies, handleToggleElement, handleCopyPaste, handleCopyToClipboard} from './modules/wpstg-dom-utils.js';\n\nvar WPStaging = (function($) {\n const that = {\n isCancelled: false,\n isFinished: false,\n getLogs: false,\n time: 1,\n executionTime: false,\n progressBar: 0,\n cloneExcludeFilters: null,\n directoryNavigator: null,\n tableSelector: null,\n notyf: null,\n areAllTablesChecked: true,\n handleDisplayDependencies: handleDisplayDependencies,\n handleToggleElement: handleToggleElement,\n handleCopyPaste: handleCopyPaste,\n handleCopyToClipboard: handleCopyToClipboard,\n };\n const cache = {elements: []};\n let timeout; let ajaxSpinner;\n\n /**\n * Get / Set Cache for Selector\n * @param {String} selector\n * @return {*}\n */\n cache.get = function(selector) {\n // It is already cached!\n if ($.inArray(selector, cache.elements) !== -1) {\n return cache.elements[selector];\n }\n\n // Create cache and return\n cache.elements[selector] = jQuery(selector);\n\n return cache.elements[selector];\n };\n\n /**\n * Refreshes given cache\n * @param {String} selector\n */\n cache.refresh = function(selector) {\n selector.elements[selector] = jQuery(selector);\n };\n\n /**\n * Show and Log Error Message\n * @param {String} message\n */\n const showError = function(message) {\n cache.get('#wpstg-try-again').css('display', 'inline-block');\n cache.get('#wpstg-cancel-cloning').text('Reset');\n cache.get('#wpstg-resume-cloning').show();\n cache.get('#wpstg-error-wrapper').show();\n cache.get('#wpstg-error-details').show().html(message);\n cache.get('#wpstg-removing-clone').removeClass('loading');\n cache.get('.wpstg-loader').hide();\n $('.wpstg--modal--process--generic-problem').show().html(message);\n\n // Error event information for Staging\n $.ajax({\n url: ajaxurl,\n type: 'POST',\n dataType: 'json',\n data: {\n 'action': 'wpstg_staging_job_error',\n 'accessToken': wpstg.accessToken,\n 'nonce': wpstg.nonce,\n 'error_message': message,\n },\n });\n };\n\n /**\n * Show warning during cloning or push process when closing tab or browser, or changing page\n * @param {beforeunload} event\n * @return {null}\n */\n that.warnIfClosingDuringProcess = function(event) {\n // Only some browsers show the message below, most say something like \"Changes you made may not be saved\" (Chrome) or \"You have unsaved changes. Exit?\"\n event.returnValue = 'You MUST leave this window open while cloning/pushing. Please wait...';\n return null;\n };\n\n /**\n *\n * @param response the error object\n * @param prependMessage Overwrite default error message at beginning\n * @param appendMessage Overwrite default error message at end\n * @returns void\n */\n\n const showAjaxFatalError = function(response, prependMessage, appendMessage) {\n prependMessage = prependMessage ? prependMessage + '<br/><br/>' : 'Something went wrong! <br/><br/>';\n appendMessage = appendMessage ? appendMessage + '<br/><br/>' : '<br/><br/>Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.';\n\n if (response === false) {\n showError(prependMessage + ' Error: No response.' + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n\n if (typeof response.error !== 'undefined' && response.error) {\n console.error(response.message);\n showError(prependMessage + ' Error: ' + response.message + appendMessage);\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return;\n }\n };\n\n /**\n *\n * @param response\n * @return {{ok}|*}\n */\n const handleFetchErrors = function(response) {\n if (!response.ok) {\n showError('Error: ' + response.status + ' - ' + response.statusText + '. Please try again or contact support.');\n }\n return response;\n };\n\n /** Hide and reset previous thrown visible errors */\n const resetErrors = function() {\n cache.get('#wpstg-error-details').hide().html('');\n };\n\n /**\n * Common Elements\n */\n const elements = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n let urlSpinner = ajaxurl.replace('/admin-ajax.php', '') + '/images/spinner';\n let timer;\n\n if (2 < window.devicePixelRatio) {\n urlSpinner += '-2x';\n }\n\n urlSpinner += '.gif';\n\n ajaxSpinner = '<img src=\\'\\'' + urlSpinner + '\\' alt=\\'\\' class=\\'ajax-spinner general-spinner\\' />';\n\n const getBaseValues = function() {\n const path = $('#wpstg-use-target-dir').data('base-path');\n const uri = $('#wpstg-use-target-hostname').data('base-uri');\n return {\n path,\n };\n };\n\n $workFlow\n /**\n .on('change', '#wpstg_network_clone', function(e) {\n e.preventDefault();\n $('.wpstg-button-select').trigger('click');\n })\n */\n // Check / Un-check All Database Tables New\n .on('click', '.wpstg-button-unselect', function(e) {\n e.preventDefault();\n\n if (false === that.areAllTablesChecked) {\n cache.get('#wpstg_select_tables_cloning .wpstg-db-table').prop('selected', 'selected');\n cache.get('.wpstg-button-unselect').text('Unselect All');\n cache.get('.wpstg-db-table-checkboxes').prop('checked', true);\n that.areAllTablesChecked = true;\n } else {\n cache.get('#wpstg_select_tables_cloning .wpstg-db-table').prop('selected', false);\n cache.get('.wpstg-button-unselect').text('Select All');\n cache.get('.wpstg-db-table-checkboxes').prop('checked', false);\n that.areAllTablesChecked = false;\n }\n })\n\n /**\n * Select tables with certain tbl prefix | NEW\n * @param obj e\n * @returns {undefined}\n */\n /**\n .on('click', '.wpstg-button-select', function(e) {\n e.preventDefault();\n $('#wpstg_select_tables_cloning .wpstg-db-table').each(function() {\n let regex = '^' + wpstg.tblprefix;\n if (wpstg.isMultisite === '1' && !$('#wpstg_network_clone').is(':checked')) {\n regex += '([^0-9])_*';\n }\n\n if ($(this).attr('name').match(regex)) {\n $(this).prop('selected', 'selected');\n } else {\n $(this).prop('selected', false);\n }\n });\n })\n\n // Expand Directories\n .on('click', '.wpstg-expand-dirs', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n\n $this.siblings('.wpstg-subdir').slideToggle();\n })\n // When a directory checkbox is Selected\n .on('change', 'input.wpstg-check-dir', function() {\n const $directory = $(this).parent('.wpstg-dir');\n\n if (this.checked) {\n $directory.parents('.wpstg-dir').children('.wpstg-check-dir').prop('checked', true);\n $directory.find('.wpstg-expand-dirs').removeClass('disabled');\n $directory.find('.wpstg-subdir .wpstg-check-dir').prop('checked', true);\n } else {\n $directory.find('.wpstg-dir .wpstg-check-dir').prop('checked', false);\n $directory.find('.wpstg-expand-dirs, .wpstg-check-subdirs').addClass('disabled');\n $directory.find('.wpstg-check-subdirs').data('action', 'check').text('check');\n }\n })\n // When a directory name is Selected\n .on('change', 'href.wpstg-check-dir', function() {\n const $directory = $(this).parent('.wpstg-dir');\n\n if (this.checked) {\n $directory.parents('.wpstg-dir').children('.wpstg-check-dir').prop('checked', true);\n $directory.find('.wpstg-expand-dirs').removeClass('disabled');\n $directory.find('.wpstg-subdir .wpstg-check-dir').prop('checked', true);\n } else {\n $directory.find('.wpstg-dir .wpstg-check-dir').prop('checked', false);\n $directory.find('.wpstg-expand-dirs, .wpstg-check-subdirs').addClass('disabled');\n $directory.find('.wpstg-check-subdirs').data('action', 'check').text('check');\n }\n })\n */\n // Check the max length of the clone name and if the clone name already exists\n .on('keyup', '#wpstg-new-clone-id', function() {\n // Hide previous errors\n document.getElementById('wpstg-error-details').style.display = 'none';\n\n // This request was already sent, clear it up!\n if ('number' === typeof (timer)) {\n clearInterval(timer);\n }\n\n // Early bail if site name is empty\n if (this.value === undefined || this.value === '') {\n cache.get('#wpstg-new-clone-id').removeClass('wpstg-error-input');\n cache.get('#wpstg-start-cloning').removeAttr('disabled');\n cache.get('#wpstg-clone-id-error').text('').hide();\n return;\n }\n\n // Convert the site name to directory name (slugify the site name to create directory name)\n const cloneDirectoryName = WPStagingCommon.slugify(this.value);\n\n timer = setTimeout(\n function() {\n ajax(\n {\n action: 'wpstg_check_clone',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n directoryName: cloneDirectoryName,\n },\n function(response) {\n if (response.status === 'success') {\n cache.get('#wpstg-new-clone-id').removeClass('wpstg-error-input');\n cache.get('#wpstg-start-cloning').removeAttr('disabled');\n cache.get('#wpstg-clone-id-error').text('').hide();\n } else {\n cache.get('#wpstg-new-clone-id').addClass('wpstg-error-input');\n cache.get('#wpstg-start-cloning').prop('disabled', true);\n cache.get('#wpstg-clone-id-error').text(response.message).show();\n }\n },\n );\n },\n 500,\n );\n })\n // Restart cloning process\n .on('click', '#wpstg-start-cloning', function() {\n resetErrors();\n that.isCancelled = false;\n that.getLogs = false;\n that.progressBar = 0;\n })\n .on('input', '#wpstg-new-clone-id', function() {\n if ($('#wpstg-clone-directory').length < 1) {\n return;\n }\n\n const slug = WPStagingCommon.slugify(this.value).substring(0, 16);\n const $targetDir = $('#wpstg-use-target-dir');\n const $targetUri = $('#wpstg-use-target-hostname');\n let path = $targetDir.data('base-path');\n let uri = $targetUri.data('base-uri');\n\n if (path) {\n path = path.replace(/\\/+$/g, '') + '/' + slug + '/';\n }\n\n if (uri) {\n uri = uri.replace(/\\/+$/g, '') + '/' + slug;\n }\n\n\n $('.wpstg-use-target-dir--value').text(path);\n $('.wpstg-use-target-hostname--value').text(uri);\n\n $targetDir.attr('data-path', path);\n $targetUri.attr('data-uri', uri);\n $('#wpstg_clone_dir').attr('placeholder', path);\n $('#wpstg_clone_hostname').attr('placeholder', uri);\n })\n .on('input', '#wpstg_clone_hostname', function() {\n if ($(this).val() === '' || validateTargetHost()) {\n $('#wpstg_clone_hostname_error').remove();\n return;\n }\n if (!validateTargetHost() && !$('#wpstg_clone_hostname_error').length) {\n $('#wpstg-clone-directory tr:last-of-type').after('<tr><td> </td><td><p id=\"wpstg_clone_hostname_error\" style=\"color: red;\"> Invalid host name. Please provide it in a format like http://example.com</p></td></tr>');\n }\n })\n ;\n\n cloneActions();\n };\n\n /* @returns {boolean} */\n var validateTargetHost = function() {\n const the_domain = $('#wpstg_clone_hostname').val();\n\n if (the_domain === '') {\n return true;\n }\n\n const reg = /^http(s)?:\\/\\/.*$/;\n if (reg.test(the_domain) === false) {\n return false;\n }\n return true;\n };\n\n /**\n * Clone actions\n */\n var cloneActions = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n\n $workFlow\n // Cancel cloning\n .on('click', '#wpstg-cancel-cloning', function() {\n if (!confirm('Are you sure you want to cancel cloning process?')) {\n return false;\n }\n\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n $this.prop('disabled', true);\n\n that.isCancelled = true;\n that.progressBar = 0;\n\n $('#wpstg-processing-status').text('Please wait...this can take up a while.');\n $('.wpstg-loader, #wpstg-show-log-button').hide();\n\n $this.parent().append(ajaxSpinner);\n\n cancelCloning();\n })\n // Resume cloning\n .on('click', '#wpstg-resume-cloning', function() {\n resetErrors();\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n\n that.isCancelled = false;\n\n $('#wpstg-processing-status').text('Try to resume cloning process...');\n $('#wpstg-error-details').hide();\n $('.wpstg-loader').show();\n\n $this.parent().append(ajaxSpinner);\n\n that.startCloning();\n })\n // Cancel update cloning\n .on('click', '#wpstg-cancel-cloning-update', function() {\n resetErrors();\n\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n $this.prop('disabled', true);\n\n that.isCancelled = true;\n\n $('#wpstg-cloning-result').text('Please wait...this can take up a while.');\n $('.wpstg-loader, #wpstg-show-log-button').hide();\n\n $this.parent().append(ajaxSpinner);\n\n cancelCloningUpdate();\n })\n // Restart cloning\n .on('click', '#wpstg-restart-cloning', function() {\n resetErrors();\n\n const $this = $(this);\n\n $('#wpstg-try-again, #wpstg-home-link').hide();\n $this.prop('disabled', true);\n\n that.isCancelled = true;\n\n $('#wpstg-cloning-result').text('Please wait...this can take up a while.');\n $('.wpstg-loader, #wpstg-show-log-button').hide();\n\n $this.parent().append(ajaxSpinner);\n\n restart();\n })\n // Delete clone - confirmation\n .on('click', '.wpstg-remove-clone[data-clone]', function(e) {\n resetErrors();\n e.preventDefault();\n\n const $existingClones = cache.get('#wpstg-existing-clones');\n\n $workFlow.removeClass('active');\n\n cache.get('.wpstg-loader').show();\n\n ajax(\n {\n action: 'wpstg_confirm_delete_clone',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n clone: $(this).data('clone'),\n },\n function(response) {\n cache.get('#wpstg-removing-clone').html(response);\n\n $existingClones.children('img').remove();\n\n cache.get('.wpstg-loader').hide();\n\n $('html, body').animate({\n // This logic is meant to be a \"scrollBottom\"\n scrollTop: $('#wpstg-remove-clone').offset().top - $(window).height() +\n $('#wpstg-remove-clone').height() + 50,\n }, 100);\n },\n 'HTML',\n );\n })\n // Delete clone - confirmed\n .on('click', '#wpstg-remove-clone', function(e) {\n resetErrors();\n e.preventDefault();\n\n cache.get('#wpstg-removing-clone').addClass('loading');\n\n cache.get('.wpstg-loader').show();\n\n deleteClone($(this).data('clone'));\n })\n // Cancel deleting clone\n .on('click', '#wpstg-cancel-removing', function(e) {\n e.preventDefault();\n $('.wpstg-clone').removeClass('active');\n cache.get('#wpstg-removing-clone').html('');\n })\n // Update\n .on('click', '.wpstg-execute-clone', function(e) {\n e.preventDefault();\n\n const clone = $(this).data('clone');\n\n $workFlow.addClass('loading');\n that.cloneExcludeFilters = null;\n ajax(\n {\n action: 'wpstg_scanning',\n clone: clone,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response.length < 1) {\n showError(\n 'Something went wrong! Error: No response. Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.',\n );\n }\n\n const jsonResponse = tryParseJson(response);\n if (jsonResponse !== false && jsonResponse.success === false) {\n $workFlow.removeClass('loading');\n showErrorModal(jsonResponse);\n\n return;\n }\n\n $workFlow.removeClass('loading').html(response);\n // register check disk space function for clone update process.\n checkDiskSpace();\n that.directoryNavigator = new WpstgDirectoryNavigation('#wpstg-directories-listing', '#wpstg-workflow', wpstg, that.notyf);\n that.tableSelector = new WpstgTableSelection('#wpstg-scanning-db', '#wpstg-workflow', '#wpstg_network_clone', wpstg, that.notyf);\n that.cloneExcludeFilters = new WpstgExcludeFilters();\n that.switchStep(2);\n },\n 'HTML',\n );\n })\n // Reset Clone\n .on('click', '.wpstg-reset-clone', function(e) {\n e.preventDefault();\n const clone = $(this).data('clone');\n const resetModal = new WpstgResetModal(clone);\n resetModal.setNetworkClone($(this).data('network') === 'yes');\n const promise = resetModal.showModal();\n that.areAllTablesChecked = true;\n\n promise.then((result) => {\n if (result.value) {\n const dirNavigator = resetModal.getDirectoryNavigator();\n const tableSelector = resetModal.getTableSelector();\n const exclFilters = resetModal.getExcludeFilters().getExcludeFilters();\n\n let includedTables = '';\n let excludedTables = '';\n let selectedTablesWithoutPrefix = '';\n let allTablesExcluded = false;\n\n if (tableSelector !== null) {\n includedTables = tableSelector.getIncludedTables();\n excludedTables = tableSelector.getExcludedTables();\n selectedTablesWithoutPrefix = tableSelector.getSelectedTablesWithoutPrefix();\n }\n\n if (includedTables.length > excludedTables.length) {\n includedTables = '';\n } else if (excludedTables.length > includedTables.length) {\n excludedTables = '';\n allTablesExcluded = includedTables === '';\n }\n\n resetClone(clone, {\n includedTables: includedTables,\n excludedTables: excludedTables,\n allTablesExcluded: allTablesExcluded,\n selectedTablesWithoutPrefix: selectedTablesWithoutPrefix,\n excludeSizeRules: encodeURIComponent(exclFilters.sizes),\n excludeGlobRules: encodeURIComponent(exclFilters.globs),\n excludedDirectories: dirNavigator.getExcludedDirectories(),\n extraDirectories: dirNavigator.getExtraDirectoriesRootOnly(),\n });\n }\n });\n\n return;\n });\n };\n\n /**\n * Ajax Requests\n * @param Object data\n * @param Function callback\n * @param string dataType\n * @param bool showErrors\n * @param int tryCount\n * @param float incrementRatio\n */\n var ajax = function(data, callback, dataType, showErrors, tryCount, incrementRatio = null) {\n if ('undefined' === typeof (dataType)) {\n dataType = 'json';\n }\n\n if (false !== showErrors) {\n showErrors = true;\n }\n\n tryCount = 'undefined' === typeof (tryCount) ? 0 : tryCount;\n\n const retryLimit = 5;\n\n let retryTimeout = 10000 * tryCount;\n\n incrementRatio = parseInt(incrementRatio);\n if (!isNaN(incrementRatio)) {\n retryTimeout *= incrementRatio;\n }\n\n $.ajax({\n url: ajaxurl + '?action=wpstg_processing&_=' + (Date.now() / 1000),\n type: 'POST',\n dataType: dataType,\n cache: false,\n data: data,\n error: function(xhr, textStatus, errorThrown) {\n // try again after 10 seconds\n tryCount++;\n if (tryCount <= retryLimit) {\n console.log('RETRYING ' + tryCount + '/' + retryLimit);\n setTimeout(function() {\n ajax(data, callback, dataType, showErrors, tryCount, incrementRatio);\n return;\n }, retryTimeout);\n } else {\n console.log('RETRYING LIMIT');\n const errorCode = 'undefined' === typeof (xhr.status) ? 'Unknown' : xhr.status;\n showError(\n 'Fatal Error: ' + errorCode + ' Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.',\n );\n }\n },\n success: function(data) {\n if ('function' === typeof (callback)) {\n callback(data);\n }\n },\n statusCode: {\n 404: function() {\n if (tryCount >= retryLimit) {\n showError('Error 404 - Can\\'t find ajax request URL! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 500: function() {\n if (tryCount >= retryLimit) {\n showError('Fatal Error 500 - Internal server error while processing the request! Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.');\n }\n },\n 504: function() {\n if (tryCount > retryLimit) {\n showError('Error 504 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 502: function() {\n if (tryCount >= retryLimit) {\n showError('Error 502 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 503: function() {\n if (tryCount >= retryLimit) {\n showError('Error 503 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 429: function() {\n if (tryCount >= retryLimit) {\n showError('Error 429 - It looks like your server is rate limiting ajax requests. Please try to resume after a minute. If this still not works try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report and contact us.\\n\\ ');\n }\n },\n 403: function() {\n if (tryCount >= retryLimit) {\n showError('Refresh page or login again! The process should be finished successfully. \\n\\ ');\n }\n },\n },\n });\n };\n\n /**\n * Next / Previous Step Clicks to Navigate Through Staging Job\n */\n const stepButtons = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n\n $workFlow\n // Next Button\n .on('click', '.wpstg-next-step-link', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n const isScan = false;\n\n if ($('#wpstg_clone_hostname').length && !validateTargetHost()) {\n $('#wpstg_clone_hostname').focus();\n return false;\n }\n\n if ($this.data('action') === 'wpstg_update' || $this.data('action') === 'wpstg_reset') {\n // Update / Reset Clone - confirmed\n let onlyUpdateMessage = '';\n if ($this.data('action') === 'wpstg_update') {\n onlyUpdateMessage = ' \\n\\nExclude all tables and folders you do not want to overwrite, first! \\n\\nDo not cancel the updating process! This can break your staging site. \\n\\n\\Create a backup of your staging website before you proceed.';\n }\n\n if (!confirm('STOP! This will overwrite your staging site with all selected data from the production site! This should be used only if you want to clone again your production site. Are you sure you want to do this?' + onlyUpdateMessage)) {\n return false;\n }\n }\n\n // Button is disabled\n if ($this.attr('disabled')) {\n return false;\n }\n\n if ($this.data('action') === 'wpstg_cloning') {\n // Verify External Database If Checked and Not Skipped\n if ($('#wpstg-ext-db').is(':checked')) {\n verifyExternalDatabase($this, $workFlow);\n return;\n }\n }\n\n proceedCloning($this, $workFlow);\n })\n // Previous Button\n .on('click', '.wpstg-prev-step-link', function(e) {\n e.preventDefault();\n cache.get('.wpstg-loader').removeClass('wpstg-finished');\n cache.get('.wpstg-loader').hide();\n loadOverview();\n });\n };\n\n /**\n * Get Included (Checked) Database Tables\n * @return {Array}\n */\n const getIncludedTables = function() {\n const includedTables = [];\n\n $('#wpstg_select_tables_cloning option:selected').each(function() {\n includedTables.push(this.value);\n });\n\n return includedTables;\n };\n\n /**\n * Get Excluded (Unchecked) Database Tables\n * Not used anymore!\n * @return {Array}\n */\n const getExcludedTables = function() {\n const excludedTables = [];\n\n $('.wpstg-db-table input:not(:checked)').each(function() {\n excludedTables.push(this.name);\n });\n\n return excludedTables;\n };\n\n /**\n * Verify External Database for Cloning\n */\n var verifyExternalDatabase = function($this, workflow) {\n cache.get('.wpstg-loader').show();\n ajax(\n {\n action: 'wpstg_database_verification',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n databaseUser: cache.get('#wpstg_db_username').val(),\n databasePassword: cache.get('#wpstg_db_password').val(),\n databaseServer: cache.get('#wpstg_db_server').val(),\n databaseDatabase: cache.get('#wpstg_db_database').val(),\n },\n function(response) {\n // Undefined Error\n if (false === response) {\n showError(\n 'Something went wrong! Error: No response.' +\n 'Please try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n cache.get('.wpstg-loader').hide();\n return;\n }\n\n // Throw Error\n if ('undefined' === typeof (response.success)) {\n showError(\n 'Something went wrong! Error: Invalid response.' +\n 'Please try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n cache.get('.wpstg-loader').hide();\n return;\n }\n\n if (response.success) {\n cache.get('.wpstg-loader').hide();\n proceedCloning($this, workflow);\n return;\n }\n\n if (response.error_type === 'comparison') {\n cache.get('.wpstg-loader').hide();\n let render = '<table class=\"wpstg-db-comparison-table\"><thead><tr><th>Property</th><th>Production DB</th><th>Staging DB</th><th>Status</th></tr></thead><tbody>';\n response.checks.forEach((x) => {\n let icon = '<span class=\"wpstg-css-tick\"></span>';\n if (x.production !== x.staging) {\n icon = '<span class=\"wpstg-css-cross\"></span>';\n }\n render += '<tr><td>' + x.name + '</td><td>' + x.production + '</td><td>' + x.staging + '</td><td>' + icon + '</td></tr>';\n });\n render += '</tbody></table><p>Note: Some MySQL/MariaDB properties do not match. You may proceed but the staging site may not work as expected.</p>';\n WPStagingCommon.getSwalModal(true, {\n popup: 'wpstg-swal-popup wpstg-db-comparison-modal centered-modal',\n }).fire({\n title: 'Different Database Properties',\n icon: 'warning',\n html: render,\n width: '650px',\n focusConfirm: false,\n confirmButtonText: 'Proceed',\n showCancelButton: true,\n }).then(function(result) {\n if (result.value) {\n proceedCloning($this, workflow);\n }\n });\n return;\n }\n\n WPStagingCommon.getSwalModal(true).fire({\n title: 'Different Database Properties',\n icon: 'error',\n html: response.message,\n focusConfirm: true,\n confirmButtonText: 'Ok',\n showCancelButton: false,\n });\n cache.get('.wpstg-loader').hide();\n },\n 'json',\n false,\n );\n };\n\n /**\n * Get Cloning Step Data\n */\n const getCloningData = function() {\n if ('wpstg_cloning' !== that.data.action && 'wpstg_update' !== that.data.action && 'wpstg_reset' !== that.data.action) {\n return;\n }\n\n that.data.cloneID = new Date().getTime().toString();\n if ('wpstg_update' === that.data.action) {\n that.data.cloneID = $('#wpstg-new-clone-id').data('clone');\n }\n\n that.data.cloneName = $('#wpstg-new-clone-id').val() || that.data.cloneID;\n\n if (that.directoryNavigator !== null) {\n that.data.excludedDirectories = encodeURIComponent(that.directoryNavigator.getExcludedDirectories());\n that.data.extraDirectories = encodeURIComponent(that.directoryNavigator.getExtraDirectoriesRootOnly());\n }\n\n that.data.excludeGlobRules = '';\n that.data.excludeSizeRules = '';\n if (that.cloneExcludeFilters instanceof WpstgExcludeFilters) {\n const rules = that.cloneExcludeFilters.getExcludeFilters();\n that.data.excludeGlobRules = encodeURIComponent(rules.globs);\n that.data.excludeSizeRules = encodeURIComponent(rules.sizes);\n }\n\n that.data.includedTables = '';\n that.data.excludedTables = '';\n that.data.allTablesExcluded = false;\n\n if (that.tableSelector !== null) {\n that.data.includedTables = that.tableSelector.getIncludedTables();\n that.data.excludedTables = that.tableSelector.getExcludedTables();\n that.data.selectedTablesWithoutPrefix = that.tableSelector.getSelectedTablesWithoutPrefix();\n }\n\n if (that.data.includedTables.length > that.data.excludedTables.length) {\n that.data.includedTables = '';\n } else if (that.data.excludedTables.length > that.data.includedTables.length) {\n that.data.excludedTables = '';\n that.data.allTablesExcluded = that.data.includedTables === '';\n }\n\n that.data.databaseServer = $('#wpstg_db_server').val();\n that.data.databaseUser = $('#wpstg_db_username').val();\n that.data.databasePassword = $('#wpstg_db_password').val();\n that.data.databaseDatabase = $('#wpstg_db_database').val();\n that.data.databasePrefix = $('#wpstg_db_prefix').val();\n const cloneDir = $('#wpstg_clone_dir').val();\n that.data.cloneDir = encodeURIComponent($.trim(cloneDir));\n that.data.cloneHostname = $('#wpstg_clone_hostname').val();\n that.data.emailsAllowed = $('#wpstg_allow_emails').is(':checked');\n that.data.networkClone = $('#wpstg_network_clone').is(':checked');\n that.data.uploadsSymlinked = $('#wpstg_symlink_upload').is(':checked');\n that.data.cleanPluginsThemes = $('#wpstg-clean-plugins-themes').is(':checked');\n that.data.cleanUploadsDir = $('#wpstg-clean-uploads').is(':checked');\n };\n\n var proceedCloning = function($this, workflow) {\n // Add loading overlay\n workflow.addClass('loading');\n\n // Prepare data\n that.data = {\n action: $this.data('action'),\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n };\n\n // Cloning data\n getCloningData();\n\n sendCloningAjax(workflow);\n };\n\n var sendCloningAjax = function(workflow) {\n // Send ajax request\n ajax(\n that.data,\n function(response) {\n // Undefined Error\n if (false === response) {\n showError(\n 'Something went wrong!<br/><br/> Go to WP Staging > Settings and lower \\'File Copy Limit\\' and \\'DB Query Limit\\'. Also set \\'CPU Load Priority to low \\'' +\n 'and try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n }\n\n\n if (response.length < 1) {\n showError(\n 'Something went wrong! No response. Go to WP Staging > Settings and lower \\'File Copy Limit\\' and \\'DB Query Limit\\'. Also set \\'CPU Load Priority to low \\'' +\n 'and try again. If that does not help, ' +\n '<a href=\\'https://wp-staging.com/support/\\' target=\\'_blank\\'>open a support ticket</a> ',\n );\n }\n\n const jsonResponse = tryParseJson(response);\n if (jsonResponse !== false && jsonResponse.success === false) {\n workflow.removeClass('loading');\n showErrorModal(jsonResponse);\n\n return;\n }\n\n // Styling of elements\n workflow.removeClass('loading').html(response);\n that.cloneExcludeFilters = null;\n if (that.data.action === 'wpstg_scanning') {\n that.areAllTablesChecked = true;\n that.directoryNavigator = new WpstgDirectoryNavigation('#wpstg-directories-listing', '#wpstg-workflow', wpstg, that.notyf);\n that.tableSelector = new WpstgTableSelection('#wpstg-scanning-db', '#wpstg-workflow', '#wpstg_network_clone', wpstg, that.notyf);\n that.switchStep(2);\n that.cloneExcludeFilters = new WpstgExcludeFilters();\n } else if (that.data.action === 'wpstg_cloning' || that.data.action === 'wpstg_update' || that.data.action === 'wpstg_reset') {\n that.switchStep(3);\n }\n\n // Start cloning\n that.startCloning();\n },\n 'HTML',\n );\n };\n\n var showErrorModal = function(response) {\n const errorModal = new WpstgModal('wpstg_modal_error', wpstg);\n errorModal.show(Object.assign({\n title: 'Error',\n icon: 'error',\n html: wpstg.i18n['somethingWentWrong'] + (response.message !== undefined ? ('<br/>' + response.message) : ''),\n width: '500px',\n confirmButtonText: 'Ok',\n showCancelButton: false,\n customClass: {\n confirmButton: 'wpstg--btn--confirm wpstg-blue-primary wpstg-button wpstg-link-btn',\n cancelButton: 'wpstg--btn--cancel wpstg-blue-primary wpstg-link-btn',\n actions: 'wpstg--modal--actions',\n popup: 'wpstg-swal-popup centered-modal',\n },\n buttonsStyling: false,\n reverseButtons: true,\n }, response.swalOptions), {\n type: response.type,\n });\n };\n\n const tryParseJson = function(json) {\n // early bail if not string\n if (!json) {\n return false;\n }\n\n try {\n const object = JSON.parse(json);\n if (object && typeof object === 'object') {\n return object;\n }\n } catch (e) {\n // do nothing on catch\n }\n\n return false;\n };\n\n var resetClone = function(clone, excludeOptions) {\n that.data = {\n action: 'wpstg_reset',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n cloneID: clone,\n };\n\n that.data = {...that.data, ...excludeOptions};\n\n const $workFlow = cache.get('#wpstg-workflow');\n sendCloningAjax($workFlow);\n };\n\n /**\n * Loads Overview (first step) of Staging Job\n */\n var loadOverview = function() {\n const $workFlow = cache.get('#wpstg-workflow');\n\n $workFlow.addClass('loading');\n\n ajax(\n {\n action: 'wpstg_overview',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response.length < 1) {\n showError(\n 'Something went wrong! No response. Please try the <a href=\\'https://wp-staging.com/docs/wp-staging-settings-for-small-servers/\\' target=\\'_blank\\'>WP Staging Small Server Settings</a> or submit an error report.',\n );\n }\n\n const $currentStep = cache.get('.wpstg-current-step');\n\n // Styling of elements\n $workFlow.removeClass('loading').html(response);\n },\n 'HTML',\n );\n\n that.switchStep(1);\n cache.get('.wpstg-step3-cloning').show();\n cache.get('.wpstg-step3-pushing').hide();\n };\n\n /**\n * Load Tabs\n */\n const tabs = function() {\n cache.get('#wpstg-workflow').on('click', '.wpstg-tab-header', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n const $section = cache.get($this.data('id'));\n\n $this.toggleClass('expand');\n\n $section.slideToggle();\n\n const tabTriangle = $this.find('.wpstg-tab-triangle');\n\n if ($this.hasClass('expand')) {\n tabTriangle.removeClass('wpstg-no-icon');\n tabTriangle.text('');\n tabTriangle.addClass('wpstg-rotate-90');\n } else {\n tabTriangle.removeClass('wpstg-rotate-90');\n }\n });\n };\n\n /**\n * Delete Clone\n * @param {String} clone\n */\n var deleteClone = function(clone) {\n const deleteDir = $('#deleteDirectory:checked').data('deletepath');\n\n ajax(\n {\n action: 'wpstg_delete_clone',\n clone: clone,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n excludedTables: getExcludedTables(),\n deleteDir: deleteDir,\n },\n function(response) {\n if (response) {\n showAjaxFatalError(response);\n\n // Finished\n if ('undefined' !== typeof response.delete && (response.delete === 'finished' || response.delete === 'unfinished')) {\n cache.get('#wpstg-removing-clone').removeClass('loading').html('');\n\n if (response.delete === 'finished' && response.error === undefined) {\n $('.wpstg-clone[data-clone-id=\"' + clone + '\"]').remove();\n }\n\n // No staging site message is also of type/class .wpstg-class but hidden\n // We have just excluded that from search when counting no of clones\n if ($('#wpstg-existing-clones .wpstg-clone').length < 1) {\n cache.get('#wpstg-existing-clones').find('h3').text('');\n cache.get('#wpstg-no-staging-site-results').show();\n }\n\n cache.get('.wpstg-loader').hide();\n return;\n }\n }\n // continue\n if (true !== response) {\n deleteClone(clone);\n return;\n }\n },\n );\n };\n\n /**\n * Cancel Cloning Process\n */\n var cancelCloning = function() {\n that.timer('stop');\n\n\n if (true === that.isFinished) {\n return true;\n }\n\n ajax(\n {\n action: 'wpstg_cancel_clone',\n clone: that.data.cloneID,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response && 'undefined' !== typeof (response.delete) && response.delete === 'finished') {\n cache.get('.wpstg-loader').hide();\n // Load overview\n loadOverview();\n return;\n }\n\n if (true !== response) {\n // continue\n cancelCloning();\n return;\n }\n\n // Load overview\n loadOverview();\n },\n );\n };\n\n /**\n * Cancel Cloning Process\n */\n var cancelCloningUpdate = function() {\n if (true === that.isFinished) {\n return true;\n }\n\n ajax(\n {\n action: 'wpstg_cancel_update',\n clone: that.data.cloneID,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response && 'undefined' !== typeof (response.delete) && response.delete === 'finished') {\n // Load overview\n loadOverview();\n return;\n }\n\n if (true !== response) {\n // continue\n cancelCloningUpdate();\n return;\n }\n\n // Load overview\n loadOverview();\n },\n );\n };\n\n /**\n * Cancel Cloning Process\n */\n var restart = function() {\n if (true === that.isFinished) {\n return true;\n }\n\n ajax(\n {\n action: 'wpstg_restart',\n // clone: that.data.cloneID,\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n },\n function(response) {\n if (response && 'undefined' !== typeof (response.delete) && response.delete === 'finished') {\n // Load overview\n loadOverview();\n return;\n }\n\n if (true !== response) {\n // continue\n cancelCloningUpdate();\n return;\n }\n\n // Load overview\n loadOverview();\n },\n );\n };\n\n /**\n * Scroll the window log to bottom\n * @return void\n */\n const logscroll = function() {\n const $div = cache.get('.wpstg-log-details');\n if ('undefined' !== typeof ($div[0])) {\n $div.scrollTop($div[0].scrollHeight);\n }\n };\n\n /**\n * Append the log to the logging window\n * @param string log\n * @return void\n */\n const getLogs = function(log) {\n if (log != null && 'undefined' !== typeof (log)) {\n if (log.constructor === Array) {\n $.each(log, function(index, value) {\n if (value === null) {\n return;\n }\n if (value.type === 'ERROR') {\n cache.get('.wpstg-log-details').append('<span class=\"wpstg--red\">[' + value.type + ']</span>-' + '[' + value.date + '] ' + value.message + '</br>');\n } else {\n cache.get('.wpstg-log-details').append('[' + value.type + ']-' + '[' + value.date + '] ' + value.message + '</br>');\n }\n });\n } else {\n cache.get('.wpstg-log-details').append('[' + log.type + ']-' + '[' + log.date + '] ' + log.message + '</br>');\n }\n }\n logscroll();\n };\n\n /**\n * Check diskspace\n * @return string json\n */\n var checkDiskSpace = function() {\n cache.get('#wpstg-check-space').on('click', function(e) {\n cache.get('.wpstg-loader').show();\n const excludedDirectories = encodeURIComponent(that.directoryNavigator.getExcludedDirectories());\n const extraDirectories = encodeURIComponent(that.directoryNavigator.getExtraDirectoriesRootOnly());\n\n ajax(\n {\n action: 'wpstg_check_disk_space',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n excludedDirectories: excludedDirectories,\n extraDirectories: extraDirectories,\n },\n function(response) {\n if (false === response) {\n cache.get('#wpstg-clone-id-error').text('Can not detect required disk space').show();\n cache.get('.wpstg-loader').hide();\n return;\n }\n\n // Show required disk space\n cache.get('#wpstg-clone-id-error').html(\n 'Estimated necessary disk space: ' + response.requiredSpace +\n (response.errorMessage !== null ? ('<br>' + response.errorMessage) : '') +\n '<br> <span style=\"color:#444;\">Before you proceed ensure your account has enough free disk space to hold the entire instance of the production site. You can check the available space from your hosting account (cPanel or similar).</span>').show();\n cache.get('.wpstg-loader').hide();\n },\n 'json',\n false,\n );\n });\n };\n\n /**\n * Show or hide animated loading icon\n * @param isLoading bool\n */\n const isLoading = function(isLoading) {\n if (!isLoading || isLoading === false) {\n cache.get('.wpstg-loader').hide();\n } else {\n cache.get('.wpstg-loader').show();\n }\n };\n\n /**\n * Count up processing execution time\n * @param string status\n * @return html\n */\n that.timer = function(status) {\n if (status === 'stop') {\n const time = that.time;\n that.time = 1;\n clearInterval(that.executionTime);\n return that.convertSeconds(time);\n }\n\n\n that.executionTime = setInterval(function() {\n if (null !== document.getElementById('wpstg-processing-timer')) {\n document.getElementById('wpstg-processing-timer').innerHTML = 'Elapsed Time: ' + that.convertSeconds(that.time);\n }\n that.time++;\n if (status === 'stop') {\n that.time = 1;\n clearInterval(that.executionTime);\n }\n }, 1000);\n };\n\n /**\n * Convert seconds to hourly format\n * @param int seconds\n * @return string\n */\n that.convertSeconds = function(seconds) {\n const date = new Date(null);\n date.setSeconds(seconds); // specify value for SECONDS here\n return date.toISOString().substr(11, 8);\n };\n\n /**\n * Start Cloning Process\n * @type {Function}\n */\n that.startCloning = (function() {\n resetErrors();\n\n // Register function for checking disk space\n checkDiskSpace();\n\n if ('wpstg_cloning' !== that.data.action && 'wpstg_update' !== that.data.action && 'wpstg_reset' !== that.data.action) {\n return;\n }\n\n that.isCancelled = false;\n\n // Start the process\n start();\n\n // Functions\n // Start\n function start() {\n cache.get('.wpstg-loader').show();\n cache.get('#wpstg-cancel-cloning').text('Cancel');\n cache.get('#wpstg-resume-cloning').hide();\n cache.get('#wpstg-error-details').hide();\n\n\n // Clone Database\n setTimeout(function() {\n // cloneDatabase();\n window.addEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n processing();\n }, wpstg.delayReq);\n\n that.timer('start');\n }\n\n\n /**\n * Start ajax processing\n * @return string\n */\n var processing = function() {\n if (true === that.isCancelled) {\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n return false;\n }\n\n isLoading(true);\n\n let excludedDirectories = '';\n let extraDirectories = '';\n if (that.directoryNavigator !== null) {\n excludedDirectories = that.directoryNavigator.getExcludedDirectories();\n extraDirectories = that.directoryNavigator.getExtraDirectoriesRootOnly();\n }\n\n // Show logging window\n cache.get('.wpstg-log-details').show();\n\n WPStaging.ajax(\n {\n action: 'wpstg_processing',\n accessToken: wpstg.accessToken,\n nonce: wpstg.nonce,\n excludedTables: getExcludedTables(),\n excludedDirectories: encodeURIComponent(excludedDirectories),\n extraDirectories: encodeURIComponent(extraDirectories),\n },\n function(response) {\n showAjaxFatalError(response);\n\n // Add Log messages\n if ('undefined' !== typeof (response.last_msg) && response.last_msg) {\n getLogs(response.last_msg);\n }\n // Continue processing\n if (false === response.status) {\n progressBar(response);\n\n setTimeout(function() {\n cache.get('.wpstg-loader').show();\n processing();\n }, wpstg.delayReq);\n } else if (true === response.status && 'finished' !== response.status) {\n cache.get('#wpstg-error-details').hide();\n cache.get('#wpstg-error-wrapper').hide();\n progressBar(response, true);\n processing();\n } else if ('finished' === response.status || ('undefined' !== typeof (response.job_done) && response.job_done)) {\n window.removeEventListener('beforeunload', WPStaging.warnIfClosingDuringProcess);\n finish(response);\n }\n ;\n },\n 'json',\n false,\n );\n };\n\n // Finish\n function finish(response) {\n if (true === that.getLogs) {\n getLogs();\n }\n\n progressBar(response);\n\n // Add Log\n if ('undefined' !== typeof (response.last_msg)) {\n getLogs(response.last_msg);\n }\n\n cache.get('.wpstg-loader').hide();\n cache.get('#wpstg-processing-header').html('Processing Complete');\n $('#wpstg-processing-status').text('Succesfully finished');\n\n cache.get('#wpstg_staging_name').html(that.data.cloneID);\n cache.get('#wpstg-finished-result').show();\n cache.get('#wpstg-cancel-cloning').hide();\n cache.get('#wpstg-resume-cloning').hide();\n cache.get('#wpstg-cancel-cloning-update').prop('disabled', true);\n\n const $link1 = cache.get('#wpstg-clone-url-1');\n const $link = cache.get('#wpstg-clone-url');\n $link1.attr('href', response.url);\n $link1.html(response.url);\n $link.attr('href', response.url);\n\n cache.get('#wpstg-remove-clone').data('clone', that.data.cloneID);\n\n // Finished\n that.isFinished = true;\n that.timer('stop');\n\n\n cache.get('.wpstg-loader').hide();\n cache.get('#wpstg-processing-header').html('Processing Complete');\n\n // show alert\n let msg = wpstg.i18n.cloneResetComplete;\n if (that.data.action === 'wpstg_update') {\n msg = wpstg.i18n.cloneUpdateComplete;\n }\n\n if (that.data.action === 'wpstg_update' || that.data.action === 'wpstg_reset') {\n cache.get('#wpstg-cancel-cloning-update').hide();\n cache.get('.wpstg-prev-step-link').show();\n\n WPStagingCommon.getSwalModal(true, {\n confirmButton: 'wpstg--btn--confirm wpstg-green-button wpstg-button wpstg-link-btn wpstg-100-width',\n }).fire({\n title: '',\n icon: 'success',\n html: msg,\n width: '500px',\n focusConfirm: true,\n });\n }\n\n return false;\n }\n\n /**\n * Add percentage progress bar\n * @param object response\n * @return {Boolean}\n */\n var progressBar = function(response, restart) {\n if ('undefined' === typeof (response.percentage)) {\n return false;\n }\n\n if (response.job === 'database') {\n cache.get('#wpstg-progress-db').width(response.percentage * 0.2 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 1 of 4 Cloning Database Tables...');\n }\n\n if (response.job === 'SearchReplace') {\n cache.get('#wpstg-progress-db').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-db').html('1. Database');\n // Assumption: All previous steps are done.\n // This avoids bugs where some steps are skipped and the progress bar is incomplete as a result\n cache.get('#wpstg-progress-db').width('20%');\n\n cache.get('#wpstg-progress-sr').width(response.percentage * 0.1 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 2 of 4 Preparing Database Data...');\n }\n\n if (response.job === 'directories') {\n cache.get('#wpstg-progress-sr').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-sr').html('2. Data');\n cache.get('#wpstg-progress-sr').width('10%');\n\n cache.get('#wpstg-progress-dirs').width(response.percentage * 0.1 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 3 of 4 Getting files...');\n }\n if (response.job === 'files') {\n cache.get('#wpstg-progress-dirs').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-dirs').html('3. Files');\n cache.get('#wpstg-progress-dirs').width('10%');\n\n cache.get('#wpstg-progress-files').width(response.percentage * 0.6 + '%').html(response.percentage + '%');\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Step 4 of 4 Copy files...');\n }\n if (response.job === 'finish') {\n cache.get('#wpstg-progress-files').css('background-color', '#3bc36b');\n cache.get('#wpstg-progress-files').html('4. Copy Files');\n cache.get('#wpstg-progress-files').width('60%');\n\n cache.get('#wpstg-processing-status').html(response.percentage.toFixed(0) + '%' + ' - Cloning Process Finished');\n }\n };\n });\n\n that.switchStep = function(step) {\n cache.get('.wpstg-current-step')\n .removeClass('wpstg-current-step');\n cache.get('.wpstg-step' + step)\n .addClass('wpstg-current-step');\n };\n\n /**\n * Initiation\n * @type {Function}\n */\n that.init = (function() {\n loadOverview();\n elements();\n stepButtons();\n tabs();\n WPStagingCommon.listenTooltip();\n new WpstgMainMenu();\n new WpstgCloneStaging();\n new WpstgCloningAdvanceSettings();\n that.notyf = new Notyf({\n duration: 10000,\n position: {\n x: 'center',\n y: 'bottom',\n },\n dismissible: true,\n types: [\n {\n type: 'warning',\n background: 'orange',\n icon: false,\n },\n ],\n });\n });\n\n /**\n * Ajax call\n * @type {ajax}\n */\n that.ajax = ajax;\n that.showError = showError;\n that.getLogs = getLogs;\n that.loadOverview = loadOverview;\n\n return that;\n})(jQuery);\n\njQuery(document).ready(function() {\n WPStaging.init();\n // This is necessary to make WPStaging var accessibile in WP Staging PRO js script\n window.WPStaging = WPStaging;\n});\n\n/**\n * Report Issue modal\n */\njQuery(document).ready(function($) {\n $('body').on('click', '#wpstg-report-issue-button', function(e) {\n console.log('REPORT');\n $('.wpstg--tab--active .wpstg-report-issue-form').toggleClass('wpstg-report-show');\n e.preventDefault();\n });\n\n $('body').on('click', '#wpstg-backups-report-issue-button', function(e) {\n $('.wpstg--tab--active .wpstg-report-issue-form').toggleClass('wpstg-report-show');\n e.preventDefault();\n });\n\n $('body').on('click', '#wpstg-report-cancel', function(e) {\n $('.wpstg--tab--active .wpstg-report-issue-form').removeClass('wpstg-report-show');\n e.preventDefault();\n });\n\n $('body').on('click', '.wpstg--tab--active #wpstg-report-submit', function(e) {\n const self = $(this);\n sendIssueReport(self, 'false');\n e.preventDefault();\n });\n\n /*\n * Close Success Modal\n */\n\n $('body').on('click', '#wpstg-success-button', function(e) {\n e.preventDefault();\n $('.wpstg-report-issue-form').removeClass('wpstg-report-show');\n });\n\n function sendIssueReport(button, forceSend = 'false') {\n const spinner = button.next();\n const email = $('.wpstg--tab--active .wpstg-report-email').val();\n const hosting_provider = $('.wpstg--tab--active .wpstg-report-hosting-provider').val();\n const message = $('.wpstg--tab--active .wpstg-report-description').val();\n const syslog = $('.wpstg--tab--active .wpstg-report-syslog').is(':checked');\n const terms = $('.wpstg--tab--active .wpstg-report-terms').is(':checked');\n\n button.attr('disabled', true);\n spinner.css('visibility', 'visible');\n\n $.ajax({\n url: ajaxurl,\n type: 'POST',\n dataType: 'json',\n async: true,\n data: {\n 'action': 'wpstg_send_report',\n 'accessToken': wpstg.accessToken,\n 'nonce': wpstg.nonce,\n 'wpstg_email': email,\n 'wpstg_provider': hosting_provider,\n 'wpstg_message': message,\n 'wpstg_syslog': +syslog,\n 'wpstg_terms': +terms,\n 'wpstg_force_send': forceSend,\n },\n }).done(function(data) {\n button.attr('disabled', false);\n spinner.css('visibility', 'hidden');\n\n if (data.errors.length > 0) {\n $('.wpstg--tab--active .wpstg-report-issue-form .wpstg-message').remove();\n\n let errorMessage = $('<div />').addClass('wpstg-message wpstg-error-message');\n $.each(data.errors, function(key, value) {\n if (value.status === 'already_submitted') {\n errorMessage = '';\n // TODO: remove default custom classes\n WPStagingCommon.getSwalModal(true, {\n container: 'wpstg-issue-resubmit-confirmation',\n }).fire({\n title: '',\n icon: 'warning',\n html: value.message,\n showCancelButton: true,\n focusConfirm: false,\n confirmButtonText: 'Yes',\n cancelButtonText: 'No',\n }).then((result) => {\n if (result.isConfirmed) {\n sendIssueReport(button, 'true');\n }\n });\n } else {\n errorMessage.append('<p>' + value + '</p>');\n }\n });\n\n $('.wpstg--tab--active .wpstg-report-issue-form').prepend(errorMessage);\n } else {\n const successMessage = $('<div />').addClass('wpstg-message wpstg-success-message');\n successMessage.append('<p>Thanks for submitting your request! You should receive an auto reply mail with your ticket ID immediately for confirmation!<br><br>If you do not get that mail please contact us directly at <strong>support@wp-staging.com</strong></p>');\n\n $('.wpstg--tab--active .wpstg-report-issue-form').html(successMessage);\n $('.wpstg--tab--active .wpstg-success-message').append('<div style=\"float:right;margin-top:10px;\"><a id=\"wpstg-success-button\" href=\"#\" class=\"wpstg--red\">[X] CLOSE</a></div>');\n\n // Hide message\n setTimeout(function() {\n $('.wpstg--tab--active .wpstg-report-issue-form').removeClass('wpstg-report-active');\n }, 2000);\n }\n });\n }\n\n // Open/close actions drop down menu\n $(document).on('click', '.wpstg-dropdown>.wpstg-dropdown-toggler', function(e) {\n e.preventDefault();\n $(e.target).next('.wpstg-dropdown-menu').toggleClass('shown');\n\n $(e.target).find('.wpstg-caret').toggleClass('wpstg-caret-up');\n });\n\n $(document).on('click', '.wpstg-caret', function(e) {\n e.preventDefault();\n\n const toggler = $(e.target).closest('.wpstg-dropdown-toggler');\n\n if (toggler) {\n toggler.trigger('click');\n }\n });\n\n // Close action drop down menu if clicked anywhere outside\n document.addEventListener('click', function(event) {\n const isClickInside = event.target.closest('.wpstg-dropdown-toggler');\n if (!isClickInside) {\n const dropDown = document.getElementsByClassName('wpstg-dropdown-menu');\n for (let i = 0; i < dropDown.length; i++) {\n dropDown[i].classList.remove('shown');\n }\n $('.wpstg-caret').removeClass('wpstg-caret-up');\n }\n });\n\n // \"Event info\" for backup errors\n window.addEventListener('finishedProcessWithError', function(customEvent) {\n $.ajax({\n url: ajaxurl,\n type: 'POST',\n dataType: 'json',\n data: {\n 'action': 'wpstg_job_error',\n 'accessToken': wpstg.accessToken,\n 'nonce': wpstg.nonce,\n 'error_message': customEvent.detail.error,\n 'job_id': WPStagingCommon.getJobId(),\n },\n });\n });\n});\n"],"names":["closest","Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","s","el","this","call","parentElement","parentNode","nodeType","element","selector","qs","document","querySelector","all","querySelectorAll","addEvent","parent","evt","handler","addEventListener","event","target","slideDown","duration","style","display","overflow","height","offsetHeight","transitionProperty","transitionDuration","setTimeout","window","removeProperty","slideUp","handleDisplayDependencies","id","hiddenClass","getAttribute","container","showIfChecked","showIfUnchecked","checked","length","classList","remove","add","handleToggleElement","elements","toggle","handleCopyPaste","navigator","clipboard","writeText","value","handleCopyToClipboard","WpstgCloneStaging","pageWrapperId","wpstgObject","wpstg","pageWrapper","dom","enableButtonId","enableAction","notyf","Notyf","position","x","y","dismissible","types","type","background","icon","init","addEvents","_this","sendRequest","action","fetch","ajaxUrl","method","credentials","body","URLSearchParams","accessToken","nonce","headers","then","response","ok","json","Promise","reject","data","success","location","reload","message","_this2","error","i18n","console","warn","WpstgDirectoryNavigation","directoryListingSelector","workflowSelector","directoryListingContainer","workflow","dirCheckboxSelector","dirExpandSelector","unselectAllDirsSelector","selectDefaultDirsSelector","fetchChildrenAction","currentCheckboxElement","currentParentDiv","currentLoader","existingExcludes","excludedDirectories","isDefaultSelected","preventDefault","log","getExcludedDirectories","toggleDirExpand","unselectAll","selectDefault","toggleDirectoryNavigation","updateDirectorySelection","parseExcludes","previousSibling","dirPath","isChecked","forceDefault","setAttribute","dirContainer","createElement","innerHTML","JSON","parse","directoryListing","appendChild","alert","forEach","_this3","isParentExcluded","push","exclude","isScanned","join","settings","directorySeparator","path","isParentAlreadyExcluded","dir","startsWith","getExtraDirectoriesRootOnly","extraDirectories","extraDirectoriesTextArea","extraCustomDirectories","split","concat","map","substr","slice","scanned","cbElement","subDirectories","sibling","nextElementSibling","result","parElem","i","children","WpstgTableSelection","databaseTableSectionSelector","networkCloneSelector","databaseTableSection","networkCloneCheckbox","isAllTablesChecked","isMultisite","isNetworkClone","setNetworkClone","selectDefaultTables","toggleTableSelection","getRegexPattern","pattern","tblprefix","isNetwork","undefined","options","regexPattern","option","match","selected","getSelectedTablesWithoutPrefix","selectedTablesWithoutPrefix","getIncludedTables","includedTables","getExcludedTables","excludedTables","WpstgExcludeFilters","excludeFilterContainerSelector","excludeContainer","excludeTableBody","addFileSizeExclude","addFileExtExclude","addFileNameExclude","addDirNameExclude","clearExcludes","removeExclude","addExcludeRuleRow","templateName","excludeRowTemplate","excludeRow","content","cloneNode","e","removeChild","trim","getExcludeFilters","globExcludes","sizeExcludes","sizeCompares","sizeSizes","sizeByte","Object","entries","key","sizeInput","ext","cleanStringForGlob","fileNamesPos","fileNames","fileInput","fileName","cleanStringForGlobExactMatches","dirNamesPos","dirNames","dirInput","dirName","filter","onlyUnique","index","self","indexOf","replace","WpstgModal","confirmAction","show","swalOptions","additionalParams","callback","wpstgSwal","fire","triggerConfirmAction","assign","onOver","onOut","pX","pY","mouseOver","focused","h","state","timer","sensitivity","interval","timeout","handleFocus","tracker","clientX","clientY","compare","clearTimeout","Math","abs","dispatchOver","removeEventListener","onMouseOver","dispatchOut","delay","onMouseOut","onFocus","onBlur","removeFocus","opt","focusOptionChanged","$","WPStagingCommon","continueErrorHandle","cache","get","inArray","refresh","setJobId","jobId","localStorage","setItem","getJobId","getItem","listenTooltip","wpstgHoverIntent","visibility","isEmpty","obj","prop","hasOwnProperty","getSwalModal","isContentCentered","customClasses","defaultCustomClasses","confirmButton","cancelButton","actions","popup","customClass","buttonsStyling","reverseButtons","showClass","mixin","showSuccessModal","htmlContent","showConfirmButton","showCancelButton","cancelButtonText","title","html","showWarningModal","showErrorModal","getSwalContainer","getContainer","closeSwalModal","close","getDataFromWordPressResponse","Error","Array","shift","isLoading","hide","slugify","url","toString","toLowerCase","normalize","showAjaxFatalError","prependMessage","appendMessage","showError","WPStaging","warnIfClosingDuringProcess","handleFetchErrors","status","statusText","css","text","removeClass","resetErrors","ajax","dataType","showErrors","tryCount","incrementRatio","errorCallback","retryLimit","retryTimeout","parseInt","isNaN","ajaxurl","Date","now","xhr","textStatus","errorThrown","errorCode","statusCode","jQuery","WpstgResetModal","cloneID","fetchExcludeSettingsAction","modalErrorAction","resetButtonClass","resetModalContainerClass","resetTabSelector","directoryNavigator","excludeFilters","tableSelector","resetModalContainer","toggleContent","contentId","tabTriangle","isCollapsed","contains","transform","showModal","swalPromise","loadModal","fetchCloneExcludes","getAjaxLoader","width","focusConfirm","confirmButtonText","resetClone","clone","job","modal","renderError","getDirectoryNavigator","getTableSelector","wpstgIcon","WpstgCloningAdvanceSettings","baseContainerSelector","baseContainer","checkBoxSettingTogglerSelector","toggleSettings","WpstgMainMenu","activeTabClass","mainMenu","$this","targetElements","menuItems","menuItem","targetElement","dispatchEvent","Event","ajaxSpinner","that","isCancelled","isFinished","getLogs","time","executionTime","progressBar","cloneExcludeFilters","areAllTablesChecked","returnValue","validateTargetHost","the_domain","val","test","cloneActions","$workFlow","on","confirm","append","cancelCloning","startCloning","cancelCloningUpdate","restart","$existingClones","animate","scrollTop","offset","top","addClass","deleteClone","jsonResponse","tryParseJson","checkDiskSpace","switchStep","resetModal","promise","dirNavigator","exclFilters","allTablesExcluded","excludeSizeRules","encodeURIComponent","sizes","excludeGlobRules","globs","each","name","verifyExternalDatabase","databaseUser","databasePassword","databaseServer","databaseDatabase","proceedCloning","error_type","render","checks","production","staging","getTime","cloneName","rules","databasePrefix","cloneDir","cloneHostname","emailsAllowed","is","networkClone","uploadsSymlinked","cleanPluginsThemes","cleanUploadsDir","getCloningData","sendCloningAjax","object","excludeOptions","loadOverview","deleteDir","find","$div","constructor","date","scrollHeight","requiredSpace","errorMessage","clearInterval","convertSeconds","setInterval","getElementById","seconds","setSeconds","toISOString","processing","delayReq","last_msg","job_done","$link1","$link","attr","msg","cloneResetComplete","cloneUpdateComplete","finish","percentage","toFixed","step","urlSpinner","devicePixelRatio","removeAttr","cloneDirectoryName","directoryName","slug","substring","$targetDir","$targetUri","uri","after","focus","onlyUpdateMessage","stepButtons","$section","toggleClass","slideToggle","hasClass","ready","sendIssueReport","button","forceSend","spinner","next","email","hosting_provider","syslog","terms","async","done","errors","isConfirmed","prepend","successMessage","toggler","trigger","dropDown","getElementsByClassName","customEvent","detail"],"mappings":"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"}
|
constantsFree.php
CHANGED
@@ -2,10 +2,10 @@
|
|
2 |
|
3 |
// WP STAGING version number
|
4 |
if (!defined('WPSTG_VERSION')) {
|
5 |
-
define('WPSTG_VERSION', '2.9.
|
6 |
}
|
7 |
|
8 |
// Compatible up to WordPress Version
|
9 |
if (!defined('WPSTG_COMPATIBLE')) {
|
10 |
-
define('WPSTG_COMPATIBLE', '6.0.
|
11 |
}
|
2 |
|
3 |
// WP STAGING version number
|
4 |
if (!defined('WPSTG_VERSION')) {
|
5 |
+
define('WPSTG_VERSION', '2.9.17');
|
6 |
}
|
7 |
|
8 |
// Compatible up to WordPress Version
|
9 |
if (!defined('WPSTG_COMPATIBLE')) {
|
10 |
+
define('WPSTG_COMPATIBLE', '6.0.1');
|
11 |
}
|
opcacheBootstrap.php
CHANGED
@@ -45,7 +45,7 @@ if (!$canInvalidate) {
|
|
45 |
*
|
46 |
* We use the "Version" from the headers of the main file of the plugin to compare.
|
47 |
*/
|
48 |
-
$runtimeVersionDifferentFromBuildVersion = get_file_data($pluginFilePath, ['Version' => 'Version'])['Version'] !== '2.9.
|
49 |
$lastCheckHappenedAfterInterval = current_time('timestamp') > (int)get_site_transient('wpstg.bootstrap.opcache.lastCleared') + 5 * MINUTE_IN_SECONDS;
|
50 |
|
51 |
$shouldClearOpCache = apply_filters('wpstg.bootstrap.opcache.shouldClear', $runtimeVersionDifferentFromBuildVersion && $lastCheckHappenedAfterInterval);
|
45 |
*
|
46 |
* We use the "Version" from the headers of the main file of the plugin to compare.
|
47 |
*/
|
48 |
+
$runtimeVersionDifferentFromBuildVersion = get_file_data($pluginFilePath, ['Version' => 'Version'])['Version'] !== '2.9.17';
|
49 |
$lastCheckHappenedAfterInterval = current_time('timestamp') > (int)get_site_transient('wpstg.bootstrap.opcache.lastCleared') + 5 * MINUTE_IN_SECONDS;
|
50 |
|
51 |
$shouldClearOpCache = apply_filters('wpstg.bootstrap.opcache.shouldClear', $runtimeVersionDifferentFromBuildVersion && $lastCheckHappenedAfterInterval);
|
readme.txt
CHANGED
@@ -9,7 +9,7 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
|
9 |
Tags: backup, backup plugin, database backup, wordpress backup, migrate, backup wordpress, backups
|
10 |
Requires at least: 3.6+
|
11 |
Tested up to: 6.0
|
12 |
-
Stable tag: 2.9.
|
13 |
Requires PHP: 5.6
|
14 |
|
15 |
Backup & Duplicator Plugin - Clone, backup, move, duplicate & migrate websites to staging, backup, and development sites for authorized users only.
|
@@ -69,7 +69,7 @@ The backup & cloning features below are Premium. You need WP STAGING | PRO to us
|
|
69 |
* Backup of WordPress multisites
|
70 |
* Backup to Google Drive
|
71 |
* Backup to Amazon S3
|
72 |
-
* Backup to (s)FTP
|
73 |
* Backup to Dropbox (Released soon)
|
74 |
* Specify custom backup folder destination for backup cloud storage providers
|
75 |
* Priority Support for backup & cloning or if something does not work as expected for you.
|
@@ -259,6 +259,12 @@ please open a [support request](https://wp-staging.com/support/ "Support Request
|
|
259 |
|
260 |
== Changelog ==
|
261 |
|
|
|
|
|
|
|
|
|
|
|
|
|
262 |
= 2.9.16 =
|
263 |
* Fix: On some servers, autoloader tries to load Composer\InstalledVersions although this doesn't exist. We fix this by only loading classes that exist #1801
|
264 |
* Enh: Some shared hosting servers like DreamHost doesn't allow sending large data through URL which resulted in interval server error 500 when fetching the backup list. We changed the way of sending data now through request body which allow listing backups on such shared hosting servers #1788
|
@@ -527,67 +533,13 @@ please open a [support request](https://wp-staging.com/support/ "Support Request
|
|
527 |
* Fix: Skip scanning the root directory if all other directories are are unselected #1256
|
528 |
* Dev: fix the version of Selenium containers to 3.141.59-20210713 to avoid issues with broken latest version #1234
|
529 |
|
530 |
-
= 2.8.6 =
|
531 |
-
* New: Support WordPress 5.8
|
532 |
-
* New: Show notice if uploads dir is outside WP Root #1138
|
533 |
-
* Enh: Refactor our wp_login action hook to work with custom calls to this action with different parameter count than the one in WordPress Core #1223
|
534 |
-
* Enh: Also show disabled permalink message in disabled items notice on the staging site and show a page builder (DIVI, Elementor etc) not working help link in wpstg page footer #1150
|
535 |
-
* Enh: Decouple clone name and clone ID for better usage #1158
|
536 |
-
* Enh: Show issue notice if backups is created on version >= 4.0.2 #1198
|
537 |
-
* Enh: Remove deprecated hooks call #1209
|
538 |
-
* Fix: Fix staging site when site has freemius script #1112
|
539 |
-
* Fix: Prefix 'wpstg' to sweetalerts Swal to avoid conflict with its other versions #1125
|
540 |
-
* Fix: Set default values for wpstg settings on plugin activate event if wpstg settings not already set #1135
|
541 |
-
* Fix: Fix the problem when unable to access the staging site because production site have different siteurl or home url and either one of them is having www. prefix #1136
|
542 |
-
* Fix: Restore a backup with VIEWs or TABLEs if there are special MySQL SQL statements such as DEFINER #1139
|
543 |
-
* Fix: Fix issue where graphical tab triangle was inconsistent by using css based tab triangle #1148
|
544 |
-
* Fix: Reduce time to query INFORMATION_SCHEMA table on some shared hosts from ~10s to one millisecond #1154
|
545 |
-
* Fix: Check available free disk space on large disks on 32-bit PHP #1179
|
546 |
-
* Fix: Fix a bug where a PHP memory_limit of -1 (Unlimited) would be interpreted as 64MB, now it's interpreted as 512MB #1178
|
547 |
-
* Fix: Remove usages of `abstract static` methods that would violate `strict` PHP checks #1185
|
548 |
-
* Fix: Cloning a site resets the settings to the default ones #1183
|
549 |
-
* Fix: Fix Clone RESET and Clone DELETE when unable to delete file due to permission error #1196
|
550 |
-
* Fix: Fix an issue when canceling a push confirm redirects to empty page #1206
|
551 |
-
* Fix: Add missing back button and hide cancel button after clone UPDATE and clone RESET #1207
|
552 |
-
* Fix: Fix Error in JS console related to registering of main-menu in page where it was not available #1205
|
553 |
-
* Dev: Add wrapper methods for deprecated hooks functions to support WordPress < 4.6 #1209
|
554 |
-
|
555 |
-
= 2.8.5 =
|
556 |
-
* Enh: Preview of the new backup & migration feature in WP STAGING | PRO
|
557 |
-
* Enh: Replace CSS based hover with pure js hoverintent for tooltips #1106
|
558 |
-
* Enh: Cleanup logs older than 7 days automatically #1116
|
559 |
-
* Enh: Update the version to check in Outdated WP Staging Hooks notice #1118
|
560 |
-
* Enh: Schedule the uploads backup to be deleted after one week if that option was selected during push #980
|
561 |
-
* Enh: Allow copying of only that symlink whose source is a directory #979
|
562 |
-
* Enh: Show notice only to user who can manage_options if wp_options table is missing primary key #1009
|
563 |
-
* Enh: Delete Optimizer Plugin on WP Staging plugins deactivate instead of uninstall #1096
|
564 |
-
* Fix: Fixed conflict with Rank Math Seo PRO when Rank Math Seo PRO is activated network wide in multisites #1111
|
565 |
-
* Fix: Make Scan::hasFreeDiskSpace() return other info even if disk_free_space is unavailable #1093
|
566 |
-
* Fix: Replace the deprecated of calling a non-static method in daily version check hooks #1092
|
567 |
-
* Fix: Try catch all instance of directory iterators #1101
|
568 |
-
* Fix: Handle error properly for Filesystem::delete() method #974
|
569 |
-
* Fix: Remove loading wpstg scripts as ESM to allow loading them as asynchronous #1007
|
570 |
-
* Fix: Properly handle exception while cleaning themes and plugins bak and tmp directories #1017
|
571 |
-
* Fix: Delete the clone even if in any case a corrupted delete job cache file existed for delete job #1033
|
572 |
-
* Fix: No cloning/pushing logs were written to file. Now fixed. #1040
|
573 |
-
* Fix: Wrap wp_doing_ajax in a adapter and use that adapter to call it to make it usable in WP < 4.7 #1047
|
574 |
-
* Fix: Fix typo and wrap up text in i18n for src/Backend/views/clone/ajax/start.php #1051
|
575 |
-
* Fix: Fix missing clone options warning during scanning process for old clones for UPDATE and RESET #1058
|
576 |
-
* Fix: Make isExcludedDirectories condition works for relative directories path too #1054
|
577 |
-
* Fix: Set donation link to redirect to WP Staging pricing page #1080
|
578 |
-
* Dev: Add a shortcut to allow to use the DI container as a Service Locator easier under some circumstances #1039
|
579 |
-
* Dev: Add trait to allow for easier use of the `uopz` extension in tests #1053
|
580 |
-
* Dev: Replace const related tests logic with UOPZ for better readability and control #1079
|
581 |
-
|
582 |
WP STAGING Backup & Cloning | Full changelog:
|
583 |
[https://wp-staging.com/wp-staging-changelog](https://wp-staging.com/wp-staging-changelog)
|
584 |
|
585 |
== Upgrade Notice ==
|
586 |
|
587 |
-
= 2.9.
|
588 |
-
*
|
589 |
-
*
|
590 |
-
*
|
591 |
-
* Fix:
|
592 |
-
* Fix: Check/Uncheck of the plugins and themes checkbox in the PUSH UI didn't affect the children checkboxes. This issue is fixed and children checkboxes are properly toggled #1797
|
593 |
-
* Fix: If all tables were excluded during PUSH, it was treated as if all tables were selected. Now tables selection is properly handled during the PUSH #1797
|
9 |
Tags: backup, backup plugin, database backup, wordpress backup, migrate, backup wordpress, backups
|
10 |
Requires at least: 3.6+
|
11 |
Tested up to: 6.0
|
12 |
+
Stable tag: 2.9.17
|
13 |
Requires PHP: 5.6
|
14 |
|
15 |
Backup & Duplicator Plugin - Clone, backup, move, duplicate & migrate websites to staging, backup, and development sites for authorized users only.
|
69 |
* Backup of WordPress multisites
|
70 |
* Backup to Google Drive
|
71 |
* Backup to Amazon S3
|
72 |
+
* Backup to (s)FTP
|
73 |
* Backup to Dropbox (Released soon)
|
74 |
* Specify custom backup folder destination for backup cloud storage providers
|
75 |
* Priority Support for backup & cloning or if something does not work as expected for you.
|
259 |
|
260 |
== Changelog ==
|
261 |
|
262 |
+
= 2.9.17 =
|
263 |
+
* New: Support up to WordPress 6.0.1
|
264 |
+
* Fix: Important update! Deselecting all tables does not lead to exclusion of tables as expected, but leads to selection of all tables. Thus all tables are copied and possibly overwritten instead of deselected. Applies to new cloning, UPDATE and RESET of a staging page. That can lead to data loss in the staging site. An update is strongly recommended!. #1814
|
265 |
+
* Fix: Can not upload backup file to google drive if the google api returns incorrect value for available storage size (negative value). This sometimes happens for Google workspace accounts and does not affect all users. #1799
|
266 |
+
* Fix: Plugin wps-hide-login could not be excluded during cloning process, preventing users from log in to the staging site #1812
|
267 |
+
|
268 |
= 2.9.16 =
|
269 |
* Fix: On some servers, autoloader tries to load Composer\InstalledVersions although this doesn't exist. We fix this by only loading classes that exist #1801
|
270 |
* Enh: Some shared hosting servers like DreamHost doesn't allow sending large data through URL which resulted in interval server error 500 when fetching the backup list. We changed the way of sending data now through request body which allow listing backups on such shared hosting servers #1788
|
533 |
* Fix: Skip scanning the root directory if all other directories are are unselected #1256
|
534 |
* Dev: fix the version of Selenium containers to 3.141.59-20210713 to avoid issues with broken latest version #1234
|
535 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
536 |
WP STAGING Backup & Cloning | Full changelog:
|
537 |
[https://wp-staging.com/wp-staging-changelog](https://wp-staging.com/wp-staging-changelog)
|
538 |
|
539 |
== Upgrade Notice ==
|
540 |
|
541 |
+
= 2.9.17 =
|
542 |
+
* New: Support up to WordPress 6.0.1
|
543 |
+
* Fix: Important update! Deselecting all tables does not lead to exclusion of tables as expected, but leads to selection of all tables. Thus all tables are copied and possibly overwritten instead of deselected. Applies to new cloning, UPDATE and RESET of a staging page. That can lead to data loss in the staging site. An update is strongly recommended!. #1814
|
544 |
+
* Fix: Can not upload backup file to google drive if the google api returns incorrect value for available storage size (negative value). This sometimes happens for Google workspace accounts and does not affect all users. #1799
|
545 |
+
* Fix: Plugin wps-hide-login could not be excluded during cloning process, preventing users from log in to the staging site #1812
|
|
|
|
wp-staging.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin Name: Backup Duplicator & Migration - WP STAGING
|
5 |
* Plugin URI: https://wordpress.org/plugins/wp-staging
|
6 |
* Description: Backup & Duplicator Plugin - Clone, backup, move, duplicate & migrate websites to staging, backup, and development sites for authorized users only.
|
7 |
-
* Version: 2.9.
|
8 |
* Requires at least: 3.6+
|
9 |
* Requires PHP: 5.6
|
10 |
* Author: WP-STAGING, WPStagingBackup
|
4 |
* Plugin Name: Backup Duplicator & Migration - WP STAGING
|
5 |
* Plugin URI: https://wordpress.org/plugins/wp-staging
|
6 |
* Description: Backup & Duplicator Plugin - Clone, backup, move, duplicate & migrate websites to staging, backup, and development sites for authorized users only.
|
7 |
+
* Version: 2.9.17
|
8 |
* Requires at least: 3.6+
|
9 |
* Requires PHP: 5.6
|
10 |
* Author: WP-STAGING, WPStagingBackup
|