????JFIF??x?x????'
| Server IP : 104.21.30.238 / Your IP : 216.73.216.87 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/./self/cwd/wp-content/plugins/elementor/assets/js/ |
Upload File : |
/*! elementor - v3.32.0 - 21-10-2025 */
"use strict";
(self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["onboarding"],{
/***/ "../app/modules/onboarding/assets/js/app.js":
/*!**************************************************!*\
!*** ../app/modules/onboarding/assets/js/app.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = App;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
var _router2 = _interopRequireDefault(__webpack_require__(/*! @elementor/router */ "@elementor/router"));
var _context = __webpack_require__(/*! ./context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _account = _interopRequireDefault(__webpack_require__(/*! ./pages/account */ "../app/modules/onboarding/assets/js/pages/account.js"));
var _helloTheme = _interopRequireDefault(__webpack_require__(/*! ./pages/hello-theme */ "../app/modules/onboarding/assets/js/pages/hello-theme.js"));
var _siteName = _interopRequireDefault(__webpack_require__(/*! ./pages/site-name */ "../app/modules/onboarding/assets/js/pages/site-name.js"));
var _siteLogo = _interopRequireDefault(__webpack_require__(/*! ./pages/site-logo */ "../app/modules/onboarding/assets/js/pages/site-logo.js"));
var _goodToGo = _interopRequireDefault(__webpack_require__(/*! ./pages/good-to-go */ "../app/modules/onboarding/assets/js/pages/good-to-go.js"));
var _uploadAndInstallPro = _interopRequireDefault(__webpack_require__(/*! ./pages/upload-and-install-pro */ "../app/modules/onboarding/assets/js/pages/upload-and-install-pro.js"));
var _chooseFeatures = _interopRequireDefault(__webpack_require__(/*! ./pages/choose-features */ "../app/modules/onboarding/assets/js/pages/choose-features.js"));
var _onboardingEventTracking = __webpack_require__(/*! ./utils/onboarding-event-tracking */ "../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function App() {
// Send an AJAX request to update the database option which makes sure the Onboarding process only runs once,
// for new Elementor sites.
(0, _react.useEffect)(function () {
var _elementorAppConfig;
_onboardingEventTracking.OnboardingEventTracking.initiateCoreOnboarding();
// This is to prevent dark theme in onboarding app from the frontend and not backend
var darkThemeClassName = 'eps-theme-dark';
var hasDarkMode = document.body.classList.contains(darkThemeClassName);
if (hasDarkMode) {
document.body.classList.remove(darkThemeClassName);
}
if (!((_elementorAppConfig = elementorAppConfig) !== null && _elementorAppConfig !== void 0 && (_elementorAppConfig = _elementorAppConfig.onboarding) !== null && _elementorAppConfig !== void 0 && _elementorAppConfig.onboardingAlreadyRan)) {
var formData = new FormData();
formData.append('_nonce', elementorCommon.config.ajax.nonce);
formData.append('action', 'elementor_update_onboarding_option');
fetch(elementorCommon.config.ajax.url, {
method: 'POST',
body: formData
});
}
elementorAppConfig.return_url = elementorAppConfig.admin_url;
return function () {
if (hasDarkMode) {
document.body.classList.add(darkThemeClassName);
}
};
}, []);
return /*#__PURE__*/_react.default.createElement(_context.ContextProvider, null, /*#__PURE__*/_react.default.createElement(_router.LocationProvider, {
history: _router2.default.appHistory
}, /*#__PURE__*/_react.default.createElement(_router.Router, null, /*#__PURE__*/_react.default.createElement(_account.default, {
default: true
}), /*#__PURE__*/_react.default.createElement(_helloTheme.default, {
path: "hello"
}), /*#__PURE__*/_react.default.createElement(_chooseFeatures.default, {
path: "chooseFeatures"
}), /*#__PURE__*/_react.default.createElement(_siteName.default, {
path: "siteName"
}), /*#__PURE__*/_react.default.createElement(_siteLogo.default, {
path: "siteLogo"
}), /*#__PURE__*/_react.default.createElement(_goodToGo.default, {
path: "goodToGo"
}), /*#__PURE__*/_react.default.createElement(_uploadAndInstallPro.default, {
path: "uploadAndInstallPro"
}))));
}
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/button.js":
/*!****************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/button.js ***!
\****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = Button;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"));
var _excluded = ["elRef"];
function Button(props) {
var buttonSettings = props.buttonSettings,
type = props.type;
var buttonClasses = 'e-onboarding__button';
if (type) {
buttonClasses += " e-onboarding__button-".concat(type);
}
if (buttonSettings.className) {
buttonSettings.className += ' ' + buttonClasses;
} else {
buttonSettings.className = buttonClasses;
}
var elRef = buttonSettings.elRef,
buttonProps = (0, _objectWithoutProperties2.default)(buttonSettings, _excluded);
if (buttonSettings.href) {
return /*#__PURE__*/_react.default.createElement("a", (0, _extends2.default)({
ref: elRef
}, buttonProps), buttonSettings.text);
}
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
ref: elRef
}, buttonProps), buttonSettings.text);
}
Button.propTypes = {
buttonSettings: PropTypes.object.isRequired,
type: PropTypes.string
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/card.js":
/*!**************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/card.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = Card;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
function Card(_ref) {
var image = _ref.image,
imageAlt = _ref.imageAlt,
text = _ref.text,
link = _ref.link,
name = _ref.name,
clickAction = _ref.clickAction,
_ref$target = _ref.target,
target = _ref$target === void 0 ? '_self' : _ref$target;
var onClick = function onClick() {
elementorCommon.events.dispatchEvent({
event: 'starting canvas click',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
selection: name
}
});
if (clickAction) {
clickAction();
}
};
return /*#__PURE__*/_react.default.createElement("a", {
target: target,
className: "e-onboarding__card",
href: link,
onClick: onClick
}, /*#__PURE__*/_react.default.createElement("img", {
className: "e-onboarding__card-image",
src: image,
alt: imageAlt
}), /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__card-text"
}, text));
}
Card.propTypes = {
image: PropTypes.string.isRequired,
imageAlt: PropTypes.string.isRequired,
text: PropTypes.string.isRequired,
link: PropTypes.string.isRequired,
name: PropTypes.string.isRequired,
clickAction: PropTypes.func,
target: PropTypes.string
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/checklist-item.js":
/*!************************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/checklist-item.js ***!
\************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = ChecklistItem;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
function ChecklistItem(props) {
return /*#__PURE__*/_react.default.createElement("li", {
className: "e-onboarding__checklist-item"
}, /*#__PURE__*/_react.default.createElement("i", {
className: "eicon-check-circle"
}), props.children);
}
ChecklistItem.propTypes = {
children: PropTypes.string
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/checklist.js":
/*!*******************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/checklist.js ***!
\*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = Checklist;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
function Checklist(props) {
return /*#__PURE__*/_react.default.createElement("ul", {
className: "e-onboarding__checklist"
}, props.children);
}
Checklist.propTypes = {
children: PropTypes.any.isRequired
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/go-pro-popover.js":
/*!************************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/go-pro-popover.js ***!
\************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = GoProPopover;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _popoverDialog = _interopRequireDefault(__webpack_require__(/*! elementor-app/ui/popover-dialog/popover-dialog */ "../app/assets/js/ui/popover-dialog/popover-dialog.js"));
var _checklist = _interopRequireDefault(__webpack_require__(/*! ./checklist */ "../app/modules/onboarding/assets/js/components/checklist.js"));
var _checklistItem = _interopRequireDefault(__webpack_require__(/*! ./checklist-item */ "../app/modules/onboarding/assets/js/components/checklist-item.js"));
var _button = _interopRequireDefault(__webpack_require__(/*! ./button */ "../app/modules/onboarding/assets/js/components/button.js"));
var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
var _onboardingEventTracking = __webpack_require__(/*! ../utils/onboarding-event-tracking */ "../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function GoProPopover(props) {
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state,
updateState = _useContext.updateState;
var upgradeButtonRef = (0, _react.useRef)(null);
// Handle the Pro Upload popup window.
var alreadyHaveProButtonRef = (0, _react.useCallback)(function (alreadyHaveProButton) {
if (!alreadyHaveProButton) {
return;
}
if (!state.currentStep || '' === state.currentStep) {
return;
}
var existingHandler = alreadyHaveProButton._elementorProHandler;
if (existingHandler) {
alreadyHaveProButton.removeEventListener('click', existingHandler);
}
var clickHandler = function clickHandler(event) {
event.preventDefault();
if (!state.currentStep || '' === state.currentStep) {
return;
}
var stepNumber = _onboardingEventTracking.OnboardingEventTracking.getStepNumber(state.currentStep);
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(stepNumber, 'upgrade_already_pro');
_onboardingEventTracking.OnboardingEventTracking.cancelDelayedNoClickEvent();
if (stepNumber) {
_onboardingEventTracking.OnboardingEventTracking.sendTopUpgrade(stepNumber, 'already_pro_user');
}
elementorCommon.events.dispatchEvent({
event: 'already have pro',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep
}
});
// Open the Pro Upload screen in a popup.
window.open(alreadyHaveProButton.href + '&mode=popup', 'elementorUploadPro', "toolbar=no, menubar=no, width=728, height=531, top=100, left=100");
// Run the callback for when the upload succeeds.
elementorCommon.elements.$body.on('elementor/upload-and-install-pro/success', function () {
updateState({
hasPro: true,
proNotice: {
color: 'success',
children: __('Pro is now active! You can continue.', 'elementor')
}
});
});
};
alreadyHaveProButton._elementorProHandler = clickHandler;
alreadyHaveProButton.addEventListener('click', clickHandler);
}, [state.currentStep, updateState]);
var getElProButton = {
text: elementorAppConfig.onboarding.experiment ? __('Upgrade now', 'elementor') : __('Upgrade Now', 'elementor'),
className: 'e-onboarding__go-pro-cta',
target: '_blank',
href: 'https://elementor.com/pro/?utm_source=onboarding-wizard&utm_campaign=gopro&utm_medium=wp-dash&utm_content=top-bar-dropdown&utm_term=' + elementorAppConfig.onboarding.onboardingVersion,
tabIndex: 0,
elRef: function elRef(buttonElement) {
if (!buttonElement) {
return;
}
upgradeButtonRef.current = buttonElement;
},
onClick: function onClick() {
if (!state.currentStep || '' === state.currentStep) {
return;
}
var stepNumber = _onboardingEventTracking.OnboardingEventTracking.getStepNumber(state.currentStep);
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(stepNumber, 'upgrade_now');
_onboardingEventTracking.OnboardingEventTracking.cancelDelayedNoClickEvent();
if (stepNumber) {
_onboardingEventTracking.OnboardingEventTracking.sendTopUpgrade(stepNumber, 'on_tooltip');
}
elementorCommon.events.dispatchEvent({
event: 'get elementor pro',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep
}
});
}
};
var targetRef = props.goProButtonRef || upgradeButtonRef;
return /*#__PURE__*/_react.default.createElement(_popoverDialog.default, {
targetRef: targetRef,
wrapperClass: "e-onboarding__go-pro"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__go-pro-content"
}, /*#__PURE__*/_react.default.createElement("h2", {
className: "e-onboarding__go-pro-title"
}, __('Ready to Get Elementor Pro?', 'elementor')), /*#__PURE__*/_react.default.createElement(_checklist.default, null, /*#__PURE__*/_react.default.createElement(_checklistItem.default, null, __('90+ Basic & Pro widgets', 'elementor')), /*#__PURE__*/_react.default.createElement(_checklistItem.default, null, __('300+ Basic & Pro templates', 'elementor')), /*#__PURE__*/_react.default.createElement(_checklistItem.default, null, __('Premium Support', 'elementor'))), /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__go-pro-paragraph"
}, __('And so much more!', 'elementor')), /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__go-pro-paragraph"
}, /*#__PURE__*/_react.default.createElement(_button.default, {
buttonSettings: getElProButton
})), /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__go-pro-paragraph"
}, /*#__PURE__*/_react.default.createElement("a", {
tabIndex: "0",
className: "e-onboarding__go-pro-already-have",
ref: alreadyHaveProButtonRef,
href: elementorAppConfig.onboarding.urls.uploadPro,
rel: "opener"
}, __('Already have Elementor Pro?', 'elementor')))));
}
GoProPopover.propTypes = {
buttonsConfig: _propTypes.default.array.isRequired,
goProButtonRef: _propTypes.default.object
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/layout/footer-buttons.js":
/*!*******************************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/layout/footer-buttons.js ***!
\*******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = FooterButtons;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _grid = _interopRequireDefault(__webpack_require__(/*! elementor-app/ui/grid/grid */ "../app/assets/js/ui/grid/grid.js"));
var _button = _interopRequireDefault(__webpack_require__(/*! ../button */ "../app/modules/onboarding/assets/js/components/button.js"));
var _skipButton = _interopRequireDefault(__webpack_require__(/*! ../skip-button */ "../app/modules/onboarding/assets/js/components/skip-button.js"));
function FooterButtons(_ref) {
var actionButton = _ref.actionButton,
skipButton = _ref.skipButton,
className = _ref.className;
var classNames = 'e-onboarding__footer';
if (className) {
classNames += ' ' + className;
}
return /*#__PURE__*/_react.default.createElement(_grid.default, {
container: true,
alignItems: "center",
justify: "space-between",
className: classNames
}, actionButton && /*#__PURE__*/_react.default.createElement(_button.default, {
buttonSettings: actionButton,
type: "action"
}), skipButton && /*#__PURE__*/_react.default.createElement(_skipButton.default, {
button: skipButton
}));
}
FooterButtons.propTypes = {
actionButton: PropTypes.object,
skipButton: PropTypes.object,
className: PropTypes.string
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/layout/header.js":
/*!***********************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/layout/header.js ***!
\***********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = Header;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
var _context = __webpack_require__(/*! ../../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _grid = _interopRequireDefault(__webpack_require__(/*! elementor-app/ui/grid/grid */ "../app/assets/js/ui/grid/grid.js"));
var _goProPopover = _interopRequireDefault(__webpack_require__(/*! ../go-pro-popover */ "../app/modules/onboarding/assets/js/components/go-pro-popover.js"));
var _headerButtons = _interopRequireDefault(__webpack_require__(/*! elementor-app/layout/header-buttons */ "../app/assets/js/layout/header-buttons.js"));
var _usePageTitle = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-page-title */ "../app/assets/js/hooks/use-page-title.js"));
var _onboardingEventTracking = __webpack_require__(/*! ../../utils/onboarding-event-tracking */ "../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function Header(props) {
(0, _usePageTitle.default)({
title: props.title
});
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state;
var trackXButtonExit = function trackXButtonExit() {
var stepNumber = _onboardingEventTracking.OnboardingEventTracking.getStepNumber(state.currentStep);
_onboardingEventTracking.OnboardingEventTracking.sendExitButtonEvent(stepNumber || state.currentStep);
};
var onClose = function onClose() {
trackXButtonExit();
elementorCommon.events.dispatchEvent({
event: 'close modal',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep
}
});
setTimeout(function () {
window.top.location = elementorAppConfig.admin_url;
}, 100);
};
return /*#__PURE__*/_react.default.createElement(_grid.default, {
container: true,
alignItems: "center",
justify: "space-between",
className: "eps-app__header e-onboarding__header"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "eps-app__logo-title-wrapper e-onboarding__header-logo"
}, /*#__PURE__*/_react.default.createElement("i", {
className: "eps-app__logo eicon-elementor"
}), /*#__PURE__*/_react.default.createElement("img", {
src: elementorCommon.config.urls.assets + 'images/logo-platform.svg',
alt: __('Elementor Logo', 'elementor')
})), /*#__PURE__*/_react.default.createElement(_headerButtons.default, {
buttons: props.buttons,
onClose: onClose
}), !state.hasPro && /*#__PURE__*/_react.default.createElement(_goProPopover.default, {
buttonsConfig: props.buttons,
goProButtonRef: props.goProButtonRef
}));
}
Header.propTypes = {
title: _propTypes.default.string,
buttons: _propTypes.default.arrayOf(_propTypes.default.object),
goProButtonRef: _propTypes.default.object
};
Header.defaultProps = {
buttons: []
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/layout/layout.js":
/*!***********************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/layout/layout.js ***!
\***********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = Layout;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
var _context = __webpack_require__(/*! ../../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _header = _interopRequireDefault(__webpack_require__(/*! ./header */ "../app/modules/onboarding/assets/js/components/layout/header.js"));
var _progressBar = _interopRequireDefault(__webpack_require__(/*! ../progress-bar/progress-bar */ "../app/modules/onboarding/assets/js/components/progress-bar/progress-bar.js"));
var _content = _interopRequireDefault(__webpack_require__(/*! ../../../../../../assets/js/layout/content */ "../app/assets/js/layout/content.js"));
var _connect = _interopRequireDefault(__webpack_require__(/*! ../../utils/connect */ "../app/modules/onboarding/assets/js/utils/connect.js"));
var _onboardingEventTracking = __webpack_require__(/*! ../../utils/onboarding-event-tracking */ "../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function getCurrentStepForTracking(pageId, currentStep) {
return pageId || currentStep || 'account';
}
function shouldResetupButtonTracking(buttonRef, pageId, currentStep) {
if (!buttonRef) {
return false;
}
var currentStepForTracking = getCurrentStepForTracking(pageId, currentStep);
var currentTrackedStep = buttonRef.dataset.onboardingStep;
return currentTrackedStep !== currentStepForTracking;
}
function Layout(props) {
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state,
updateState = _useContext.updateState;
var stepNumber = (0, _react.useMemo)(function () {
return _onboardingEventTracking.OnboardingEventTracking.getStepNumber(props.pageId);
}, [props.pageId]);
var goProButtonRef = (0, _react.useRef)();
var setupTopbarUpgradeTracking = (0, _react.useCallback)(function (buttonElement) {
if (!buttonElement) {
return;
}
var currentStep = getCurrentStepForTracking(props.pageId, state.currentStep);
goProButtonRef.current = buttonElement;
return _onboardingEventTracking.OnboardingEventTracking.setupSingleUpgradeButton(buttonElement, currentStep);
}, [state.currentStep, props.pageId]);
var handleTopbarConnectSuccess = (0, _react.useCallback)(function () {
updateState({
isLibraryConnected: true
});
}, [updateState]);
(0, _react.useEffect)(function () {
// Send modal load event for current step.
elementorCommon.events.dispatchEvent({
event: 'modal load',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: props.pageId,
user_state: elementorCommon.config.library_connect.is_connected ? 'logged' : 'anon'
}
});
if (goProButtonRef.current) {
setupTopbarUpgradeTracking(goProButtonRef.current);
}
updateState({
currentStep: props.pageId,
nextStep: props.nextStep || '',
proNotice: null
});
}, [setupTopbarUpgradeTracking, stepNumber, props.pageId, props.nextStep, updateState]);
(0, _react.useEffect)(function () {
if (shouldResetupButtonTracking(goProButtonRef.current, props.pageId, state.currentStep)) {
setupTopbarUpgradeTracking(goProButtonRef.current);
}
}, [state.currentStep, props.pageId, setupTopbarUpgradeTracking]);
var headerButtons = [],
createAccountButton = {
id: 'create-account',
text: __('Create Account', 'elementor'),
hideText: false,
elRef: (0, _react.useRef)(),
url: elementorAppConfig.onboarding.urls.signUp + elementorAppConfig.onboarding.utms.connectTopBar,
target: '_blank',
rel: 'opener',
onClick: function onClick() {
_onboardingEventTracking.OnboardingEventTracking.sendEventOrStore('CREATE_MY_ACCOUNT', {
currentStep: stepNumber,
createAccountClicked: 'topbar'
});
elementorCommon.events.dispatchEvent({
event: 'create account',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
source: 'header'
}
});
}
};
if (state.isLibraryConnected) {
headerButtons.push({
id: 'my-elementor',
text: __('My Elementor', 'elementor'),
hideText: false,
icon: 'eicon-user-circle-o',
url: 'https://my.elementor.com/websites/?utm_source=onboarding-wizard&utm_medium=wp-dash&utm_campaign=my-account&utm_content=top-bar&utm_term=' + elementorAppConfig.onboarding.onboardingVersion,
target: '_blank',
onClick: function onClick() {
elementorCommon.events.dispatchEvent({
event: 'my elementor click',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
source: 'header'
}
});
}
});
} else {
headerButtons.push(createAccountButton);
}
if (!state.hasPro) {
headerButtons.push({
id: 'go-pro',
text: __('Upgrade', 'elementor'),
hideText: false,
className: 'eps-button__go-pro-btn',
url: 'https://elementor.com/pro/?utm_source=onboarding-wizard&utm_campaign=gopro&utm_medium=wp-dash&utm_content=top-bar&utm_term=' + elementorAppConfig.onboarding.onboardingVersion,
target: '_blank',
elRef: setupTopbarUpgradeTracking,
onClick: function onClick() {
var currentStep = getCurrentStepForTracking(props.pageId, state.currentStep);
var currentStepNumber = _onboardingEventTracking.OnboardingEventTracking.getStepNumber(currentStep);
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(currentStepNumber, 'upgrade_topbar');
elementorCommon.events.dispatchEvent({
event: 'go pro',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: currentStep
}
});
}
});
}
return /*#__PURE__*/_react.default.createElement("div", {
className: "eps-app__lightbox"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "eps-app e-onboarding"
}, !state.isLibraryConnected && /*#__PURE__*/_react.default.createElement(_connect.default, {
buttonRef: createAccountButton.elRef,
successCallback: handleTopbarConnectSuccess
}), /*#__PURE__*/_react.default.createElement(_header.default, {
title: __('Getting Started', 'elementor'),
buttons: headerButtons,
goProButtonRef: goProButtonRef
}), /*#__PURE__*/_react.default.createElement("div", {
className: 'eps-app__main e-onboarding__page-' + props.pageId
}, /*#__PURE__*/_react.default.createElement(_content.default, {
className: "e-onboarding__content"
}, /*#__PURE__*/_react.default.createElement(_progressBar.default, null), props.children))));
}
Layout.propTypes = {
pageId: _propTypes.default.string.isRequired,
nextStep: _propTypes.default.string,
className: _propTypes.default.string,
children: _propTypes.default.any.isRequired
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/layout/page-content-layout.js":
/*!************************************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/layout/page-content-layout.js ***!
\************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = PageContentLayout;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _context = __webpack_require__(/*! ../../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _grid = _interopRequireDefault(__webpack_require__(/*! elementor-app/ui/grid/grid */ "../app/assets/js/ui/grid/grid.js"));
var _notice = _interopRequireDefault(__webpack_require__(/*! ../notice */ "../app/modules/onboarding/assets/js/components/notice.js"));
var _footerButtons = _interopRequireDefault(__webpack_require__(/*! ./footer-buttons */ "../app/modules/onboarding/assets/js/components/layout/footer-buttons.js"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function PageContentLayout(props) {
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state;
var printNotices = function printNotices() {
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.noticeState && /*#__PURE__*/_react.default.createElement(_notice.default, {
noticeState: props.noticeState
}), state.proNotice && /*#__PURE__*/_react.default.createElement(_notice.default, {
noticeState: state.proNotice
}));
};
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_grid.default, {
container: true,
alignItems: "center",
justify: "space-between",
className: "e-onboarding__page-content"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__page-content-start"
}, /*#__PURE__*/_react.default.createElement("h1", {
className: "e-onboarding__page-content-section-title"
}, props.title, props.secondLineTitle && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("br", null), props.secondLineTitle)), /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__page-content-section-text"
}, props.children)), /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__page-content-end"
}, /*#__PURE__*/_react.default.createElement("img", {
src: props.image,
alt: "Information"
}))), props.noticeState && /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__notice-container"
}, props.noticeState || state.proNotice ? printNotices() : /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__notice-empty-spacer"
})), /*#__PURE__*/_react.default.createElement(_footerButtons.default, {
actionButton: props.actionButton,
skipButton: props.skipButton
}));
}
PageContentLayout.propTypes = {
title: PropTypes.string,
secondLineTitle: PropTypes.string,
children: PropTypes.any,
image: PropTypes.string,
actionButton: PropTypes.object,
skipButton: PropTypes.object,
noticeState: PropTypes.any
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/message.js":
/*!*****************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/message.js ***!
\*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = Message;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
function Message(_ref) {
var tier = _ref.tier;
/* Translators: %s: Plan name */
var translatedString = __('Based on the features you chose, we recommend the %s plan, or higher', 'elementor');
var _translatedString$spl = translatedString.split('%s'),
_translatedString$spl2 = (0, _slicedToArray2.default)(_translatedString$spl, 2),
messageFirstPart = _translatedString$spl2[0],
messageSecondPart = _translatedString$spl2[1];
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, messageFirstPart, /*#__PURE__*/_react.default.createElement("strong", null, tier), messageSecondPart);
}
Message.propTypes = {
tier: PropTypes.string.isRequired
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/notice.js":
/*!****************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/notice.js ***!
\****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = Notice;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
function Notice(props) {
return /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__notice e-onboarding__notice--".concat(props.noticeState.type)
}, /*#__PURE__*/_react.default.createElement("i", {
className: props.noticeState.icon
}), /*#__PURE__*/_react.default.createElement("span", {
className: "e-onboarding__notice-text"
}, props.noticeState.message));
}
Notice.propTypes = {
noticeState: PropTypes.object
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/progress-bar/progress-bar-item.js":
/*!****************************************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/progress-bar/progress-bar-item.js ***!
\****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = ProgressBarItem;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _context = __webpack_require__(/*! ../../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function ProgressBarItem(props) {
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state,
stepCompleted = 'completed' === state.steps[props.id],
stepSkipped = 'skipped' === state.steps[props.id];
var itemClasses = 'e-onboarding__progress-bar-item';
if (props.id === state.currentStep) {
itemClasses += ' e-onboarding__progress-bar-item--active';
} else if (stepCompleted) {
itemClasses += ' e-onboarding__progress-bar-item--completed';
} else if (stepSkipped) {
itemClasses += ' e-onboarding__progress-bar-item--skipped';
}
return (
/*#__PURE__*/
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
_react.default.createElement("div", {
onClick: props.onClick,
className: itemClasses
}, /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__progress-bar-item-icon"
}, stepCompleted ? /*#__PURE__*/_react.default.createElement("i", {
className: "eicon-check"
}) : props.index + 1), props.title)
);
}
ProgressBarItem.propTypes = {
index: PropTypes.number.isRequired,
id: PropTypes.string.isRequired,
title: PropTypes.string.isRequired,
route: PropTypes.string,
onClick: PropTypes.func
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/progress-bar/progress-bar.js":
/*!***********************************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/progress-bar/progress-bar.js ***!
\***********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = ProgressBar;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _context = __webpack_require__(/*! ../../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
var _progressBarItem = _interopRequireDefault(__webpack_require__(/*! ./progress-bar-item */ "../app/modules/onboarding/assets/js/components/progress-bar/progress-bar-item.js"));
var _onboardingEventTracking = __webpack_require__(/*! ../../utils/onboarding-event-tracking */ "../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function ProgressBar() {
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state,
navigate = (0, _router.useNavigate)(),
progressBarItemsConfig = [{
id: 'account',
title: __('Elementor Account', 'elementor'),
route: 'account'
}];
// If hello theme is already activated when onboarding starts, don't show this step in the onboarding.
if (!elementorAppConfig.onboarding.helloActivated) {
progressBarItemsConfig.push({
id: 'hello',
title: __('Hello Biz Theme', 'elementor'),
route: 'hello'
});
}
if (elementorAppConfig.onboarding.experiment) {
progressBarItemsConfig.push({
id: 'chooseFeatures',
title: __('Choose Features', 'elementor'),
route: 'chooseFeatures'
});
} else {
progressBarItemsConfig.push({
id: 'siteName',
title: __('Site Name', 'elementor'),
route: 'site-name'
}, {
id: 'siteLogo',
title: __('Site Logo', 'elementor'),
route: 'site-logo'
});
}
progressBarItemsConfig.push({
id: 'goodToGo',
title: __('Good to Go', 'elementor'),
route: 'good-to-go'
});
var progressBarItems = progressBarItemsConfig.map(function (itemConfig, index) {
itemConfig.index = index;
if (state.steps[itemConfig.id]) {
itemConfig.onClick = function () {
var currentStepNumber = _onboardingEventTracking.OnboardingEventTracking.getStepNumber(state.currentStep);
var nextStepNumber = _onboardingEventTracking.OnboardingEventTracking.getStepNumber(itemConfig.id);
if (4 === currentStepNumber) {
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(4, 'stepper_clicks', {
from_step: currentStepNumber,
to_step: nextStepNumber
});
_onboardingEventTracking.OnboardingEventTracking.sendStepEndState(4);
}
elementorCommon.events.dispatchEvent({
event: 'step click',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
next_step: itemConfig.id
}
});
navigate('/onboarding/' + itemConfig.id);
};
}
return /*#__PURE__*/_react.default.createElement(_progressBarItem.default, (0, _extends2.default)({
key: itemConfig.id
}, itemConfig));
});
return /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__progress-bar"
}, progressBarItems);
}
/***/ }),
/***/ "../app/modules/onboarding/assets/js/components/skip-button.js":
/*!*********************************************************************!*\
!*** ../app/modules/onboarding/assets/js/components/skip-button.js ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = SkipButton;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
var _button = _interopRequireDefault(__webpack_require__(/*! ./button */ "../app/modules/onboarding/assets/js/components/button.js"));
var _onboardingEventTracking = __webpack_require__(/*! ../utils/onboarding-event-tracking */ "../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function SkipButton(props) {
var button = props.button,
className = props.className,
_useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state,
updateState = _useContext.updateState,
navigate = (0, _router.useNavigate)(),
skipStep = function skipStep() {
var mutatedState = JSON.parse(JSON.stringify(state));
mutatedState.steps[state.currentStep] = 'skipped';
updateState(mutatedState);
if (state.nextStep) {
navigate('onboarding/' + state.nextStep);
}
},
action = button.action || skipStep;
// Make sure the 'action' prop doesn't get printed on the button markup which causes an error.
delete button.action;
// Handle both href and non-href skip buttons properly
button.onClick = function (event) {
var stepNumber = _onboardingEventTracking.OnboardingEventTracking.getStepNumber(state.currentStep);
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(stepNumber, 'skipped');
_onboardingEventTracking.OnboardingEventTracking.sendStepEndState(stepNumber);
_onboardingEventTracking.OnboardingEventTracking.sendEventOrStore('SKIP', {
currentStep: stepNumber
});
if (4 === stepNumber) {
_onboardingEventTracking.OnboardingEventTracking.storeExitEventForLater('step4_skip_button', stepNumber);
}
elementorCommon.events.dispatchEvent({
event: 'skip',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep
}
});
if (button.href) {
event.preventDefault();
setTimeout(function () {
window.location.href = button.href;
}, 100);
} else {
action();
}
};
return /*#__PURE__*/_react.default.createElement(_button.default, {
buttonSettings: button,
className: className,
type: "skip"
});
}
SkipButton.propTypes = {
button: PropTypes.object.isRequired,
className: PropTypes.string
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/context/context.js":
/*!**************************************************************!*\
!*** ../app/modules/onboarding/assets/js/context/context.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports.ContextProvider = ContextProvider;
exports.OnboardingContext = void 0;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var OnboardingContext = exports.OnboardingContext = (0, _react.createContext)({});
function ContextProvider(props) {
var onboardingConfig = elementorAppConfig.onboarding,
initialState = {
// eslint-disable-next-line camelcase
hasPro: elementorAppConfig.hasPro,
isLibraryConnected: onboardingConfig.isLibraryConnected,
isHelloThemeInstalled: onboardingConfig.helloInstalled,
isHelloThemeActivated: onboardingConfig.helloActivated,
siteName: onboardingConfig.siteName,
siteLogo: onboardingConfig.siteLogo,
proNotice: '',
currentStep: '',
nextStep: '',
steps: {
account: false,
hello: false,
chooseFeatures: false,
siteName: false,
siteLogo: false,
goodToGo: false
}
},
_useState = (0, _react.useState)(initialState),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
state = _useState2[0],
setState = _useState2[1],
updateState = (0, _react.useCallback)(function (newState) {
setState(function (prev) {
return _objectSpread(_objectSpread({}, prev), newState);
});
}, [setState]),
getStateObjectToUpdate = function getStateObjectToUpdate(stateObject, mainChangedPropertyKey, subChangedPropertyKey, subChangedPropertyValue) {
var mutatedStateCopy = JSON.parse(JSON.stringify(stateObject));
mutatedStateCopy[mainChangedPropertyKey][subChangedPropertyKey] = subChangedPropertyValue;
return mutatedStateCopy;
};
return /*#__PURE__*/_react.default.createElement(OnboardingContext.Provider, {
value: {
state: state,
setState: setState,
updateState: updateState,
getStateObjectToUpdate: getStateObjectToUpdate
}
}, props.children);
}
ContextProvider.propTypes = {
children: PropTypes.any
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/pages/account.js":
/*!************************************************************!*\
!*** ../app/modules/onboarding/assets/js/pages/account.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = Account;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _connect = _interopRequireDefault(__webpack_require__(/*! ../utils/connect */ "../app/modules/onboarding/assets/js/utils/connect.js"));
var _layout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/layout */ "../app/modules/onboarding/assets/js/components/layout/layout.js"));
var _pageContentLayout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/page-content-layout */ "../app/modules/onboarding/assets/js/components/layout/page-content-layout.js"));
var _utils = __webpack_require__(/*! ../utils/utils */ "../app/modules/onboarding/assets/js/utils/utils.js");
var _onboardingEventTracking = __webpack_require__(/*! ../utils/onboarding-event-tracking */ "../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function Account() {
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state,
updateState = _useContext.updateState,
getStateObjectToUpdate = _useContext.getStateObjectToUpdate,
_useState = (0, _react.useState)(null),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
noticeState = _useState2[0],
setNoticeState = _useState2[1],
nextStep = getNextStep(),
navigate = (0, _router.useNavigate)(),
pageId = 'account',
actionButtonRef = (0, _react.useRef)(),
alreadyHaveAccountLinkRef = (0, _react.useRef)();
(0, _react.useEffect)(function () {
if (!state.isLibraryConnected) {
var _elementorCommon$even;
(0, _utils.safeDispatchEvent)('view_account_setup', {
location: 'plugin_onboarding',
trigger: ((_elementorCommon$even = elementorCommon.eventsManager) === null || _elementorCommon$even === void 0 || (_elementorCommon$even = _elementorCommon$even.config) === null || _elementorCommon$even === void 0 || (_elementorCommon$even = _elementorCommon$even.triggers) === null || _elementorCommon$even === void 0 ? void 0 : _elementorCommon$even.pageLoaded) || 'page_loaded',
step_number: 1,
step_name: 'account_setup',
is_library_connected: (state === null || state === void 0 ? void 0 : state.isLibraryConnected) || false
});
}
_onboardingEventTracking.OnboardingEventTracking.setupAllUpgradeButtons(state.currentStep);
_onboardingEventTracking.OnboardingEventTracking.onStepLoad(1);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
var skipButton;
if ('completed' !== state.steps[pageId]) {
skipButton = {
text: __('Skip setup', 'elementor'),
action: function action() {
var _elementorCommon$even2;
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(1, 'skip');
_onboardingEventTracking.OnboardingEventTracking.sendEventOrStore('SKIP', {
currentStep: 1
});
_onboardingEventTracking.OnboardingEventTracking.sendStepEndState(1);
(0, _utils.safeDispatchEvent)('skip_setup', {
location: 'plugin_onboarding',
trigger: ((_elementorCommon$even2 = elementorCommon.eventsManager) === null || _elementorCommon$even2 === void 0 || (_elementorCommon$even2 = _elementorCommon$even2.config) === null || _elementorCommon$even2 === void 0 || (_elementorCommon$even2 = _elementorCommon$even2.triggers) === null || _elementorCommon$even2 === void 0 ? void 0 : _elementorCommon$even2.click) || 'click',
step_number: 1,
step_name: 'account_setup'
});
updateState(getStateObjectToUpdate(state, 'steps', pageId, 'skipped'));
navigate('onboarding/' + nextStep);
}
};
}
var pageTexts = {};
if (state.isLibraryConnected) {
pageTexts = {
firstLine: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, __('To get the most out of Elementor, we\'ll help you take your', 'elementor'), " ", /*#__PURE__*/_react.default.createElement("br", null), " ", __('first steps:', 'elementor')),
listItems: elementorAppConfig.onboarding.experiment ? [__('Set your site\'s theme', 'elementor'), __('Choose additional features', 'elementor'), __('Choose how to start creating', 'elementor')] : [__('Set your site\'s theme', 'elementor'), __('Give your site a name & logo', 'elementor'), __('Choose how to start creating', 'elementor')]
};
} else {
pageTexts = elementorAppConfig.onboarding.experiment ? {
firstLine: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, __('To get the most of Elementor, we\'ll connect your account.', 'elementor'), " ", /*#__PURE__*/_react.default.createElement("br", null), " ", __('Then you can:', 'elementor')),
listItems: [__('Access dozens of professionally designed templates', 'elementor'), __('Manage all your sites from the My Elementor dashboard', 'elementor'), __('Unlock tools that streamline your workflow and site setup', 'elementor')]
} : {
firstLine: __('To get the most out of Elementor, we’ll connect your account.', 'elementor') + ' ' + __('Then you can:', 'elementor'),
listItems: [__('Choose from countless professional templates', 'elementor'), __('Manage your site with our handy dashboard', 'elementor'), __('Take part in the community forum, share & grow together', 'elementor')]
};
}
// If the user is not connected, the on-click action is handled by the <Connect> component, so there is no onclick
// property.
var actionButton = {
role: 'button'
};
if (state.isLibraryConnected) {
actionButton.text = __('Let’s do it', 'elementor');
actionButton.onClick = function () {
elementorCommon.events.dispatchEvent({
event: 'next',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep
}
});
updateState(getStateObjectToUpdate(state, 'steps', pageId, 'completed'));
navigate('onboarding/' + nextStep);
};
} else {
actionButton.text = __('Start setup', 'elementor');
actionButton.href = elementorAppConfig.onboarding.urls.signUp + elementorAppConfig.onboarding.utms.connectCta;
actionButton.ref = actionButtonRef;
actionButton.onClick = function () {
var _elementorCommon$even3;
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(1, 'create');
_onboardingEventTracking.OnboardingEventTracking.sendEventOrStore('CREATE_MY_ACCOUNT', {
currentStep: 1,
createAccountClicked: 'main_cta'
});
(0, _utils.safeDispatchEvent)('new_account_connect', {
location: 'plugin_onboarding',
trigger: ((_elementorCommon$even3 = elementorCommon.eventsManager) === null || _elementorCommon$even3 === void 0 || (_elementorCommon$even3 = _elementorCommon$even3.config) === null || _elementorCommon$even3 === void 0 || (_elementorCommon$even3 = _elementorCommon$even3.triggers) === null || _elementorCommon$even3 === void 0 ? void 0 : _elementorCommon$even3.click) || 'click',
step_number: 1,
step_name: 'account_setup',
button_text: 'Start setup'
});
};
}
var connectSuccessCallback = function connectSuccessCallback() {
var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
stateToUpdate.isLibraryConnected = true;
updateState(stateToUpdate);
elementorCommon.events.dispatchEvent({
event: 'indication prompt',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
action_state: 'success',
action: 'connect account'
}
});
setNoticeState({
type: 'success',
icon: 'eicon-check-circle-o',
message: 'Alrighty - your account is connected.'
});
_onboardingEventTracking.OnboardingEventTracking.sendStepEndState(1);
navigate('onboarding/' + nextStep);
};
function getNextStep() {
if (!state.isHelloThemeActivated) {
return 'hello';
}
return elementorAppConfig.onboarding.experiment ? 'chooseFeatures' : 'siteName';
}
var connectFailureCallback = function connectFailureCallback() {
elementorCommon.events.dispatchEvent({
event: 'indication prompt',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
action_state: 'failure',
action: 'connect account'
}
});
_onboardingEventTracking.OnboardingEventTracking.sendConnectionFailureEvents();
setNoticeState({
type: 'error',
icon: 'eicon-warning',
message: __('Oops, the connection failed. Try again.', 'elementor')
});
navigate('onboarding/' + nextStep);
};
return /*#__PURE__*/_react.default.createElement(_layout.default, {
pageId: pageId,
nextStep: nextStep
}, /*#__PURE__*/_react.default.createElement(_pageContentLayout.default, {
image: elementorCommon.config.urls.assets + 'images/app/onboarding/Illustration_Account.svg',
title: elementorAppConfig.onboarding.experiment ? __('You\'re here!', 'elementor') : __('You\'re here! Let\'s set things up.', 'elementor'),
secondLineTitle: elementorAppConfig.onboarding.experiment ? __(' Let\'s get connected.', 'elementor') : '',
actionButton: actionButton,
skipButton: skipButton,
noticeState: noticeState
}, actionButton.ref && !state.isLibraryConnected && /*#__PURE__*/_react.default.createElement(_connect.default, {
buttonRef: actionButton.ref,
successCallback: function successCallback(event, data) {
return connectSuccessCallback(event, data);
},
errorCallback: connectFailureCallback
}), /*#__PURE__*/_react.default.createElement("span", null, pageTexts.firstLine), /*#__PURE__*/_react.default.createElement("ul", null, pageTexts.listItems.map(function (listItem, index) {
return /*#__PURE__*/_react.default.createElement("li", {
key: 'listItem' + index
}, listItem);
}))), !state.isLibraryConnected && /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__footnote"
}, /*#__PURE__*/_react.default.createElement("p", null, __('Already have an account?', 'elementor') + ' ', /*#__PURE__*/_react.default.createElement("a", {
ref: alreadyHaveAccountLinkRef,
href: elementorAppConfig.onboarding.urls.connect + elementorAppConfig.onboarding.utms.connectCtaLink,
onClick: function onClick() {
var _elementorCommon$even4;
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(1, 'connect');
_onboardingEventTracking.OnboardingEventTracking.sendEventOrStore('STEP1_CLICKED_CONNECT', {
currentStep: state.currentStep
});
(0, _utils.safeDispatchEvent)('existing_account_connect', {
location: 'plugin_onboarding',
trigger: ((_elementorCommon$even4 = elementorCommon.eventsManager) === null || _elementorCommon$even4 === void 0 || (_elementorCommon$even4 = _elementorCommon$even4.config) === null || _elementorCommon$even4 === void 0 || (_elementorCommon$even4 = _elementorCommon$even4.triggers) === null || _elementorCommon$even4 === void 0 ? void 0 : _elementorCommon$even4.click) || 'click',
step_number: 1,
step_name: 'account_setup',
button_text: 'Click here to connect'
});
}
}, __('Click here to connect', 'elementor'))), /*#__PURE__*/_react.default.createElement(_connect.default, {
buttonRef: alreadyHaveAccountLinkRef,
successCallback: connectSuccessCallback,
errorCallback: connectFailureCallback
})));
}
/***/ }),
/***/ "../app/modules/onboarding/assets/js/pages/choose-features.js":
/*!********************************************************************!*\
!*** ../app/modules/onboarding/assets/js/pages/choose-features.js ***!
\********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = ChooseFeatures;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
var _useAjax2 = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-ajax */ "../app/assets/js/hooks/use-ajax.js"));
var _message = _interopRequireDefault(__webpack_require__(/*! ../components/message */ "../app/modules/onboarding/assets/js/components/message.js"));
var _utils = __webpack_require__(/*! ../utils/utils */ "../app/modules/onboarding/assets/js/utils/utils.js");
var _layout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/layout */ "../app/modules/onboarding/assets/js/components/layout/layout.js"));
var _pageContentLayout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/page-content-layout */ "../app/modules/onboarding/assets/js/components/layout/page-content-layout.js"));
var _useButtonAction2 = _interopRequireDefault(__webpack_require__(/*! ../utils/use-button-action */ "../app/modules/onboarding/assets/js/utils/use-button-action.js"));
var _onboardingEventTracking = __webpack_require__(/*! ../utils/onboarding-event-tracking */ "../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function ChooseFeatures() {
var _useAjax = (0, _useAjax2.default)(),
setAjax = _useAjax.setAjax,
tiers = {
advanced: __('Advanced', 'elementor'),
essential: __('Essential', 'elementor')
},
_useState = (0, _react.useState)({
essential: [],
advanced: []
}),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
selectedFeatures = _useState2[0],
setSelectedFeatures = _useState2[1],
_useState3 = (0, _react.useState)(tiers.essential),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
tierName = _useState4[0],
setTierName = _useState4[1],
pageId = 'chooseFeatures',
nextStep = 'goodToGo',
_useButtonAction = (0, _useButtonAction2.default)(pageId, nextStep),
state = _useButtonAction.state,
handleAction = _useButtonAction.handleAction,
actionButton = {
text: __('Upgrade Now', 'elementor'),
href: elementorAppConfig.onboarding.urls.upgrade,
target: '_blank',
onClick: function onClick() {
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(3, 'pro_features_checked', {
features: _onboardingEventTracking.OnboardingEventTracking.extractSelectedFeatureKeys(selectedFeatures)
});
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(3, 'upgrade_now', {
pro_features_checked: _onboardingEventTracking.OnboardingEventTracking.extractSelectedFeatureKeys(selectedFeatures)
});
elementorCommon.events.dispatchEvent({
event: 'next',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep
}
});
_onboardingEventTracking.OnboardingEventTracking.sendUpgradeNowStep3(selectedFeatures, state.currentStep);
_onboardingEventTracking.OnboardingEventTracking.sendStepEndState(3);
setAjax({
data: {
action: 'elementor_save_onboarding_features',
data: JSON.stringify({
features: selectedFeatures
})
}
});
handleAction('completed');
}
};
var skipButton;
if ('completed' !== state.steps[pageId]) {
skipButton = {
text: __('Skip', 'elementor'),
action: function action() {
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(3, 'pro_features_checked', {
features: _onboardingEventTracking.OnboardingEventTracking.extractSelectedFeatureKeys(selectedFeatures)
});
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(3, 'skipped');
setAjax({
data: {
action: 'elementor_save_onboarding_features',
data: JSON.stringify({
features: selectedFeatures
})
}
});
handleAction('skipped');
}
};
}
if (!isFeatureSelected(selectedFeatures)) {
actionButton.className = 'e-onboarding__button--disabled';
}
(0, _react.useEffect)(function () {
if (selectedFeatures.advanced.length > 0) {
setTierName(tiers.advanced);
} else {
setTierName(tiers.essential);
}
}, [selectedFeatures, tiers.advanced, tiers.essential]);
(0, _react.useEffect)(function () {
_onboardingEventTracking.OnboardingEventTracking.setupAllUpgradeButtons(state.currentStep);
_onboardingEventTracking.OnboardingEventTracking.onStepLoad(3);
}, [state.currentStep]);
function isFeatureSelected(features) {
return !!features.advanced.length || !!features.essential.length;
}
return /*#__PURE__*/_react.default.createElement(_layout.default, {
pageId: pageId,
nextStep: nextStep
}, /*#__PURE__*/_react.default.createElement(_pageContentLayout.default, {
image: elementorCommon.config.urls.assets + 'images/app/onboarding/Illustration_Setup.svg',
title: __('Elevate your website with additional Pro features.', 'elementor'),
actionButton: actionButton,
skipButton: skipButton
}, /*#__PURE__*/_react.default.createElement("p", null, __('Which Elementor Pro features do you need to bring your creative vision to life?', 'elementor')), /*#__PURE__*/_react.default.createElement("form", {
className: "e-onboarding__choose-features-section"
}, _utils.options.map(function (option, index) {
var itemId = "".concat(option.plan, "-").concat(index);
return /*#__PURE__*/_react.default.createElement("label", {
key: itemId,
className: "e-onboarding__choose-features-section__label",
htmlFor: itemId
}, /*#__PURE__*/_react.default.createElement("input", {
className: "e-onboarding__choose-features-section__checkbox",
type: "checkbox",
onChange: function onChange(event) {
return (0, _utils.setSelectedFeatureList)({
checked: event.currentTarget.checked,
id: event.target.value,
text: option.text,
selectedFeatures: selectedFeatures,
setSelectedFeatures: setSelectedFeatures
});
},
id: itemId,
value: itemId
}), option.text);
})), /*#__PURE__*/_react.default.createElement("p", {
className: "e-onboarding__choose-features-section__message"
}, isFeatureSelected(selectedFeatures) && /*#__PURE__*/_react.default.createElement(_message.default, {
tier: tierName
}))));
}
/***/ }),
/***/ "../app/modules/onboarding/assets/js/pages/good-to-go.js":
/*!***************************************************************!*\
!*** ../app/modules/onboarding/assets/js/pages/good-to-go.js ***!
\***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = GoodToGo;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
var _grid = _interopRequireDefault(__webpack_require__(/*! elementor-app/ui/grid/grid */ "../app/assets/js/ui/grid/grid.js"));
var _layout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/layout */ "../app/modules/onboarding/assets/js/components/layout/layout.js"));
var _card = _interopRequireDefault(__webpack_require__(/*! ../components/card */ "../app/modules/onboarding/assets/js/components/card.js"));
var _footerButtons = _interopRequireDefault(__webpack_require__(/*! ../components/layout/footer-buttons */ "../app/modules/onboarding/assets/js/components/layout/footer-buttons.js"));
var _onboardingEventTracking = __webpack_require__(/*! ../utils/onboarding-event-tracking */ "../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function GoodToGo() {
var pageId = 'goodToGo',
skipButton = {
text: __('Skip', 'elementor'),
href: elementorAppConfig.onboarding.urls.createNewPage
},
kitLibraryLink = elementorAppConfig.onboarding.urls.kitLibrary + '&referrer=onboarding';
(0, _react.useEffect)(function () {
_onboardingEventTracking.OnboardingEventTracking.checkAndSendReturnToStep4();
_onboardingEventTracking.OnboardingEventTracking.onStepLoad(4);
}, []);
return /*#__PURE__*/_react.default.createElement(_layout.default, {
pageId: pageId
}, /*#__PURE__*/_react.default.createElement("h1", {
className: "e-onboarding__page-content-section-title"
}, elementorAppConfig.onboarding.experiment ? __('Welcome aboard! What\'s next?', 'elementor') : __('That\'s a wrap! What\'s next?', 'elementor')), /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__page-content-section-text"
}, __('There are three ways to get started with Elementor:', 'elementor')), /*#__PURE__*/_react.default.createElement(_grid.default, {
container: true,
alignItems: "center",
justify: "space-between",
className: "e-onboarding__cards-grid e-onboarding__page-content"
}, /*#__PURE__*/_react.default.createElement(_card.default, {
name: "blank",
image: elementorCommon.config.urls.assets + 'images/app/onboarding/Blank_Canvas.svg',
imageAlt: __('Click here to create a new page and open it in Elementor Editor', 'elementor'),
text: __('Edit a blank canvas with the Elementor Editor', 'elementor'),
link: elementorAppConfig.onboarding.urls.createNewPage,
clickAction: function clickAction() {
_onboardingEventTracking.OnboardingEventTracking.handleSiteStarterChoice('blank_canvas');
}
}), /*#__PURE__*/_react.default.createElement(_card.default, {
name: "template",
image: elementorCommon.config.urls.assets + 'images/app/onboarding/Library.svg',
imageAlt: __('Click here to go to Elementor\'s Website Templates', 'elementor'),
text: __('Choose a professionally-designed template or import your own', 'elementor'),
link: kitLibraryLink,
clickAction: function clickAction() {
_onboardingEventTracking.OnboardingEventTracking.handleSiteStarterChoice('kit_library');
// The location is reloaded to make sure the Kit Library's state is re-created.
location.href = kitLibraryLink;
location.reload();
}
}), /*#__PURE__*/_react.default.createElement(_card.default, {
name: "site-planner",
image: elementorCommon.config.urls.assets + 'images/app/onboarding/Site_Planner.svg',
imageAlt: __('Click here to go to Elementor\'s Site Planner', 'elementor'),
text: __('Create a professional site in minutes using AI', 'elementor'),
link: elementorAppConfig.onboarding.urls.sitePlanner,
target: "_blank",
clickAction: function clickAction() {
_onboardingEventTracking.OnboardingEventTracking.handleSiteStarterChoice('site_planner');
}
})), /*#__PURE__*/_react.default.createElement(_footerButtons.default, {
skipButton: _objectSpread(_objectSpread({}, skipButton), {}, {
target: '_self'
}),
className: "e-onboarding__good-to-go-footer"
}));
}
/***/ }),
/***/ "../app/modules/onboarding/assets/js/pages/hello-theme.js":
/*!****************************************************************!*\
!*** ../app/modules/onboarding/assets/js/pages/hello-theme.js ***!
\****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = HelloTheme;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
var _useAjax2 = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-ajax */ "../app/assets/js/hooks/use-ajax.js"));
var _layout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/layout */ "../app/modules/onboarding/assets/js/components/layout/layout.js"));
var _pageContentLayout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/page-content-layout */ "../app/modules/onboarding/assets/js/components/layout/page-content-layout.js"));
var _onboardingEventTracking = __webpack_require__(/*! ../utils/onboarding-event-tracking */ "../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
/* eslint-disable @wordpress/i18n-ellipsis */
function HelloTheme() {
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state,
updateState = _useContext.updateState,
getStateObjectToUpdate = _useContext.getStateObjectToUpdate,
_useAjax = (0, _useAjax2.default)(),
activateHelloThemeAjaxState = _useAjax.ajaxState,
setActivateHelloThemeAjaxState = _useAjax.setAjax,
_useState = (0, _react.useState)(false),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
helloInstalledInOnboarding = _useState2[0],
setHelloInstalledInOnboarding = _useState2[1],
_useState3 = (0, _react.useState)(false),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
isInstalling = _useState4[0],
setIsInstalling = _useState4[1],
noticeStateSuccess = {
type: 'success',
icon: 'eicon-check-circle-o',
message: __('Your site’s got Hello theme. High-five!', 'elementor')
},
_useState5 = (0, _react.useState)(state.isHelloThemeActivated ? noticeStateSuccess : null),
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
noticeState = _useState6[0],
setNoticeState = _useState6[1],
_useState7 = (0, _react.useState)([]),
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
activeTimeouts = _useState8[0],
setActiveTimeouts = _useState8[1],
continueWithHelloThemeText = state.isHelloThemeActivated ? __('Next', 'elementor') : __('Continue with Hello Biz Theme', 'elementor'),
_useState9 = (0, _react.useState)(continueWithHelloThemeText),
_useState0 = (0, _slicedToArray2.default)(_useState9, 2),
actionButtonText = _useState0[0],
setActionButtonText = _useState0[1],
navigate = (0, _router.useNavigate)(),
pageId = 'hello',
nextStep = elementorAppConfig.onboarding.experiment ? 'chooseFeatures' : 'siteName',
goToNextScreen = function goToNextScreen() {
return navigate('onboarding/' + nextStep);
};
/**
* Setup
*
* If Hello Theme is already activated when onboarding starts, This screen is unneeded and is marked as 'completed'
* and skipped.
*/
(0, _react.useEffect)(function () {
if (!helloInstalledInOnboarding && state.isHelloThemeActivated) {
var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
updateState(stateToUpdate);
goToNextScreen();
}
_onboardingEventTracking.OnboardingEventTracking.setupAllUpgradeButtons(state.currentStep);
_onboardingEventTracking.OnboardingEventTracking.onStepLoad(2);
}, []);
var resetScreenContent = function resetScreenContent() {
// Clear any active timeouts for changing the action button text during installation.
activeTimeouts.forEach(function (timeoutID) {
return clearTimeout(timeoutID);
});
setActiveTimeouts([]);
setIsInstalling(false);
setActionButtonText(continueWithHelloThemeText);
};
/**
* Callbacks
*/
var onHelloThemeActivationSuccess = (0, _react.useCallback)(function () {
setIsInstalling(false);
elementorCommon.events.dispatchEvent({
event: 'indication prompt',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
action_state: 'success',
action: 'hello theme activation'
}
});
setNoticeState(noticeStateSuccess);
setActionButtonText(__('Next', 'elementor'));
var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
stateToUpdate.isHelloThemeActivated = true;
updateState(stateToUpdate);
setHelloInstalledInOnboarding(true);
_onboardingEventTracking.OnboardingEventTracking.sendStepEndState(2);
goToNextScreen();
}, []);
var onErrorInstallHelloTheme = function onErrorInstallHelloTheme() {
elementorCommon.events.dispatchEvent({
event: 'indication prompt',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
action_state: 'failure',
action: 'hello theme install'
}
});
setNoticeState({
type: 'error',
icon: 'eicon-warning',
message: __('There was a problem installing Hello Biz Theme.', 'elementor')
});
resetScreenContent();
};
var activateHelloTheme = function activateHelloTheme() {
setIsInstalling(true);
updateState({
isHelloThemeInstalled: true
});
setActivateHelloThemeAjaxState({
data: {
action: 'elementor_activate_hello_theme'
}
});
};
var installHelloTheme = function installHelloTheme() {
if (!isInstalling) {
setIsInstalling(true);
}
wp.updates.ajax('install-theme', {
slug: 'hello-biz',
success: function success() {
return activateHelloTheme();
},
error: function error() {
return onErrorInstallHelloTheme();
}
});
};
var sendNextButtonEvent = function sendNextButtonEvent() {
elementorCommon.events.dispatchEvent({
event: 'next',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep
}
});
};
/**
* Action Button
*/
var actionButton = {
text: actionButtonText,
role: 'button'
};
if (isInstalling) {
actionButton.className = 'e-onboarding__button--processing';
}
if (state.isHelloThemeActivated) {
actionButton.onClick = function () {
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(2, 'continue_hello_biz');
sendNextButtonEvent();
_onboardingEventTracking.OnboardingEventTracking.sendStepEndState(2);
goToNextScreen();
};
} else {
actionButton.onClick = function () {
_onboardingEventTracking.OnboardingEventTracking.trackStepAction(2, 'continue_hello_biz');
_onboardingEventTracking.OnboardingEventTracking.sendHelloBizContinue(state.currentStep);
sendNextButtonEvent();
if (state.isHelloThemeInstalled && !state.isHelloThemeActivated) {
activateHelloTheme();
} else if (!state.isHelloThemeInstalled) {
installHelloTheme();
} else {
_onboardingEventTracking.OnboardingEventTracking.sendStepEndState(2);
goToNextScreen();
}
};
}
/**
* Skip Button
*/
var skipButton = {};
if (isInstalling) {
skipButton.className = 'e-onboarding__button-skip--disabled';
}
if ('completed' !== state.steps[pageId]) {
skipButton.text = __('Skip', 'elementor');
}
/**
* Set timeouts for updating the 'Next' button text if the Hello Theme installation is taking too long.
*/
(0, _react.useEffect)(function () {
if (isInstalling) {
setActionButtonText(/*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("i", {
className: "eicon-loading eicon-animation-spin",
"aria-hidden": "true"
})));
}
var actionTextTimeouts = [];
var timeout4 = setTimeout(function () {
if (!isInstalling) {
return;
}
setActionButtonText(/*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("i", {
className: "eicon-loading eicon-animation-spin",
"aria-hidden": "true"
}), /*#__PURE__*/_react.default.createElement("span", {
className: "e-onboarding__action-button-text"
}, __('Hold on, this can take a minute...', 'elementor'))));
}, 4000);
actionTextTimeouts.push(timeout4);
var timeout30 = setTimeout(function () {
if (!isInstalling) {
return;
}
setActionButtonText(/*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("i", {
className: "eicon-loading eicon-animation-spin",
"aria-hidden": "true"
}), /*#__PURE__*/_react.default.createElement("span", {
className: "e-onboarding__action-button-text"
}, __('Okay, now we\'re really close...', 'elementor'))));
}, 30000);
actionTextTimeouts.push(timeout30);
setActiveTimeouts(actionTextTimeouts);
}, [isInstalling]);
(0, _react.useEffect)(function () {
if ('initial' !== activateHelloThemeAjaxState.status) {
var _activateHelloThemeAj;
if ('success' === activateHelloThemeAjaxState.status && (_activateHelloThemeAj = activateHelloThemeAjaxState.response) !== null && _activateHelloThemeAj !== void 0 && _activateHelloThemeAj.helloThemeActivated) {
onHelloThemeActivationSuccess();
} else if ('error' === activateHelloThemeAjaxState.status) {
elementorCommon.events.dispatchEvent({
event: 'indication prompt',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
action_state: 'failure',
action: 'hello theme activation'
}
});
setNoticeState({
type: 'error',
icon: 'eicon-warning',
message: __('There was a problem activating Hello Biz Theme.', 'elementor')
});
// Clear any active timeouts for changing the action button text during installation.
resetScreenContent();
}
}
}, [activateHelloThemeAjaxState.status]);
return /*#__PURE__*/_react.default.createElement(_layout.default, {
pageId: pageId,
nextStep: nextStep
}, /*#__PURE__*/_react.default.createElement(_pageContentLayout.default, {
image: elementorCommon.config.urls.assets + 'images/app/onboarding/Illustration_Hello_Biz.svg',
title: __('Every site starts with a theme.', 'elementor'),
actionButton: actionButton,
skipButton: skipButton,
noticeState: noticeState
}, /*#__PURE__*/_react.default.createElement("p", null, __('Hello Biz by Elementor helps you launch your professional business website - fast.', 'elementor')), !elementorAppConfig.onboarding.experiment && /*#__PURE__*/_react.default.createElement("p", null, __('Here\'s why:', 'elementor')), /*#__PURE__*/_react.default.createElement("ul", {
className: "e-onboarding__feature-list"
}, /*#__PURE__*/_react.default.createElement("li", null, __('Get online faster', 'elementor')), /*#__PURE__*/_react.default.createElement("li", null, __('Lightweight and fast loading', 'elementor')), /*#__PURE__*/_react.default.createElement("li", null, __('Great for SEO', 'elementor')))), /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__footnote"
}, '* ' + __('You can switch your theme later on', 'elementor')));
}
/***/ }),
/***/ "../app/modules/onboarding/assets/js/pages/site-logo.js":
/*!**************************************************************!*\
!*** ../app/modules/onboarding/assets/js/pages/site-logo.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = SiteLogo;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
var _useAjax3 = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-ajax */ "../app/assets/js/hooks/use-ajax.js"));
var _dropZone = _interopRequireDefault(__webpack_require__(/*! elementor-app/organisms/drop-zone */ "../app/assets/js/organisms/drop-zone.js"));
var _unfilteredFilesDialog = _interopRequireDefault(__webpack_require__(/*! elementor-app/organisms/unfiltered-files-dialog */ "../app/assets/js/organisms/unfiltered-files-dialog.js"));
var _layout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/layout */ "../app/modules/onboarding/assets/js/components/layout/layout.js"));
var _pageContentLayout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/page-content-layout */ "../app/modules/onboarding/assets/js/components/layout/page-content-layout.js"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
/* eslint-disable jsx-a11y/no-static-element-interactions */
/* eslint-disable jsx-a11y/click-events-have-key-events */
function SiteLogo() {
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state,
updateState = _useContext.updateState,
getStateObjectToUpdate = _useContext.getStateObjectToUpdate,
_useState = (0, _react.useState)(state.siteLogo.id ? state.siteLogo : null),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
file = _useState2[0],
setFile = _useState2[1],
_useState3 = (0, _react.useState)(false),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
isUploading = _useState4[0],
setIsUploading = _useState4[1],
_useState5 = (0, _react.useState)(false),
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
showUnfilteredFilesDialog = _useState6[0],
setShowUnfilteredFilesDialog = _useState6[1],
_useState7 = (0, _react.useState)(),
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
fileSource = _useState8[0],
setFileSource = _useState8[1],
_useState9 = (0, _react.useState)(null),
_useState0 = (0, _slicedToArray2.default)(_useState9, 2),
noticeState = _useState0[0],
setNoticeState = _useState0[1],
_useAjax = (0, _useAjax3.default)(),
updateLogoAjaxState = _useAjax.ajaxState,
setUpdateLogoAjax = _useAjax.setAjax,
_useAjax2 = (0, _useAjax3.default)(),
uploadImageAjaxState = _useAjax2.ajaxState,
setUploadImageAjax = _useAjax2.setAjax,
pageId = 'siteLogo',
nextStep = 'goodToGo',
navigate = (0, _router.useNavigate)(),
actionButton = {
role: 'button',
onClick: function onClick() {
elementorCommon.events.dispatchEvent({
event: 'next',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep
}
});
if (file.id) {
if (file.id !== state.siteLogo.id) {
updateSiteLogo();
} else {
// If the currently displayed logo is already set as the site logo, just go to the next screen.
var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
updateState(stateToUpdate);
navigate('onboarding/' + nextStep);
}
}
}
};
var skipButton;
if ('completed' !== state.steps[pageId]) {
skipButton = {
text: __('Skip', 'elementor')
};
}
if (isUploading) {
actionButton.text = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("i", {
className: "eicon-loading eicon-animation-spin",
"aria-hidden": "true"
}));
} else {
actionButton.text = __('Next', 'elementor');
}
if (!file) {
actionButton.className = 'e-onboarding__button--disabled';
}
var updateSiteLogo = (0, _react.useCallback)(function () {
setIsUploading(true);
setUpdateLogoAjax({
data: {
action: 'elementor_update_site_logo',
data: JSON.stringify({
attachmentId: file.id
})
}
});
}, [file]);
var uploadSiteLogo = function uploadSiteLogo(fileToUpload) {
setIsUploading(true);
setUploadImageAjax({
data: {
action: 'elementor_upload_site_logo',
fileToUpload: fileToUpload
}
});
};
var dismissUnfilteredFilesCallback = function dismissUnfilteredFilesCallback() {
setIsUploading(false);
setFile(null);
setShowUnfilteredFilesDialog(false);
};
var _onFileSelect = function onFileSelect(selectedFile) {
setFileSource('drop');
if ('image/svg+xml' === selectedFile.type && !elementorAppConfig.onboarding.isUnfilteredFilesEnabled) {
setFile(selectedFile);
setIsUploading(true);
setShowUnfilteredFilesDialog(true);
} else {
setFile(selectedFile);
setNoticeState(null);
uploadSiteLogo(selectedFile);
}
};
var onImageRemoveClick = function onImageRemoveClick() {
elementorCommon.events.dispatchEvent({
event: 'remove selected logo',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement
}
});
setFile(null);
};
/**
* Ajax Callbacks
*/
// Run the callback for the new image upload AJAX request.
(0, _react.useEffect)(function () {
if ('initial' !== uploadImageAjaxState.status) {
var _uploadImageAjaxState;
if ('success' === uploadImageAjaxState.status && (_uploadImageAjaxState = uploadImageAjaxState.response) !== null && _uploadImageAjaxState !== void 0 && (_uploadImageAjaxState = _uploadImageAjaxState.imageAttachment) !== null && _uploadImageAjaxState !== void 0 && _uploadImageAjaxState.id) {
elementorCommon.events.dispatchEvent({
event: 'logo image uploaded',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
source: fileSource
}
});
setIsUploading(false);
setFile(uploadImageAjaxState.response.imageAttachment);
if (noticeState) {
setNoticeState(null);
}
} else if ('error' === uploadImageAjaxState.status) {
setIsUploading(false);
setFile(null);
elementorCommon.events.dispatchEvent({
event: 'indication prompt',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
action_state: 'failure',
action: 'logo image upload'
}
});
setNoticeState({
type: 'error',
icon: 'eicon-warning',
message: 'That didn\'t work. Try uploading your file again.'
});
}
}
}, [uploadImageAjaxState.status]);
// Run the callback for the site logo update AJAX request.
(0, _react.useEffect)(function () {
if ('initial' !== updateLogoAjaxState.status) {
var _updateLogoAjaxState$;
if ('success' === updateLogoAjaxState.status && (_updateLogoAjaxState$ = updateLogoAjaxState.response) !== null && _updateLogoAjaxState$ !== void 0 && _updateLogoAjaxState$.siteLogoUpdated) {
elementorCommon.events.dispatchEvent({
event: 'logo image updated',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
source: fileSource
}
});
setIsUploading(false);
if (noticeState) {
setNoticeState(null);
}
var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
stateToUpdate.siteLogo = {
id: file.id,
url: file.url
};
updateState(stateToUpdate);
navigate('onboarding/' + nextStep);
} else if ('error' === updateLogoAjaxState.status) {
setIsUploading(false);
elementorCommon.events.dispatchEvent({
event: 'indication prompt',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
action_state: 'failure',
action: 'update site logo'
}
});
setNoticeState({
type: 'error',
icon: 'eicon-warning',
message: 'That didn\'t work. Try uploading your file again.'
});
}
}
}, [updateLogoAjaxState.status]);
return /*#__PURE__*/_react.default.createElement(_layout.default, {
pageId: pageId,
nextStep: nextStep
}, /*#__PURE__*/_react.default.createElement(_pageContentLayout.default, {
image: elementorCommon.config.urls.assets + 'images/app/onboarding/Illustration_Setup.svg',
title: __('Have a logo? Add it here.', 'elementor'),
actionButton: actionButton,
skipButton: skipButton,
noticeState: noticeState
}, /*#__PURE__*/_react.default.createElement("span", null, __('Otherwise, you can skip this and add one later.', 'elementor')), file && !showUnfilteredFilesDialog ? /*#__PURE__*/_react.default.createElement("div", {
className: 'e-onboarding__logo-container' + (isUploading ? ' e-onboarding__is-uploading' : '')
}, /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__logo-remove",
onClick: function onClick() {
return onImageRemoveClick();
}
}, /*#__PURE__*/_react.default.createElement("i", {
className: "eicon-trash-o"
})), /*#__PURE__*/_react.default.createElement("img", {
src: file.url,
alt: __('Potential Site Logo', 'elementor')
})) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropZone.default, {
className: "e-onboarding__drop-zone",
heading: __('Drop image here', 'elementor'),
secondaryText: __('or', 'elementor'),
buttonText: __('Open Media Library', 'elementor'),
buttonVariant: "outlined",
buttonColor: "cta",
icon: '',
type: "wp-media",
filetypes: ['jpg', 'jpeg', 'png', 'svg'],
onFileSelect: function onFileSelect(selectedFile) {
return _onFileSelect(selectedFile);
},
onWpMediaSelect: function onWpMediaSelect(frame) {
// Get media attachment details from the frame state
var attachment = frame.state().get('selection').first().toJSON();
setFileSource('browse');
setFile(attachment);
setNoticeState(null);
},
onButtonClick: function onButtonClick() {
elementorCommon.events.dispatchEvent({
event: 'browse file click',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep
}
});
}
// TODO: DEAL WITH ERROR
,
onError: function onError(error) {
if ('file_not_allowed' === error.id) {
elementorCommon.events.dispatchEvent({
event: 'indication prompt',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
action_state: 'failure',
action: 'logo upload format'
}
});
setNoticeState({
type: 'error',
icon: 'eicon-warning',
message: __('This file type is not supported. Try a different type of file', 'elementor')
});
}
}
})), /*#__PURE__*/_react.default.createElement(_unfilteredFilesDialog.default, {
show: showUnfilteredFilesDialog,
setShow: setShowUnfilteredFilesDialog,
confirmModalText: __('This allows Elementor to scan your SVGs for malicious content. If you do not wish to allow this, use a different image format.', 'elementor'),
errorModalText: __('There was a problem with enabling SVG uploads. Try again, or use another image format.', 'elementor'),
onReady: function onReady() {
setShowUnfilteredFilesDialog(false);
elementorAppConfig.onboarding.isUnfilteredFilesEnabled = true;
uploadSiteLogo(file);
},
onDismiss: function onDismiss() {
return dismissUnfilteredFilesCallback();
},
onCancel: function onCancel() {
return dismissUnfilteredFilesCallback();
}
})));
}
/***/ }),
/***/ "../app/modules/onboarding/assets/js/pages/site-name.js":
/*!**************************************************************!*\
!*** ../app/modules/onboarding/assets/js/pages/site-name.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = SiteName;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
var _useAjax2 = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-ajax */ "../app/assets/js/hooks/use-ajax.js"));
var _layout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/layout */ "../app/modules/onboarding/assets/js/components/layout/layout.js"));
var _pageContentLayout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/page-content-layout */ "../app/modules/onboarding/assets/js/components/layout/page-content-layout.js"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function SiteName() {
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state,
updateState = _useContext.updateState,
getStateObjectToUpdate = _useContext.getStateObjectToUpdate,
_useAjax = (0, _useAjax2.default)(),
ajaxState = _useAjax.ajaxState,
setAjax = _useAjax.setAjax,
_useState = (0, _react.useState)(null),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
noticeState = _useState2[0],
setNoticeState = _useState2[1],
_useState3 = (0, _react.useState)(state.siteName),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
siteNameInputValue = _useState4[0],
setSiteNameInputValue = _useState4[1],
pageId = 'siteName',
nextStep = 'siteLogo',
navigate = (0, _router.useNavigate)(),
nameInputRef = (0, _react.useRef)(),
actionButton = {
text: __('Next', 'elementor'),
onClick: function onClick() {
elementorCommon.events.dispatchEvent({
event: 'next',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep
}
});
// Only run the site name update AJAX if the new name is different than the existing one and it isn't empty.
if (nameInputRef.current.value !== state.siteName && '' !== nameInputRef.current.value) {
setAjax({
data: {
action: 'elementor_update_site_name',
data: JSON.stringify({
siteName: nameInputRef.current.value
})
}
});
} else if (nameInputRef.current.value === state.siteName) {
var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
updateState(stateToUpdate);
navigate('onboarding/' + nextStep);
} else {
var _stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'skipped');
updateState(_stateToUpdate);
navigate('onboarding/' + nextStep);
}
}
};
var skipButton;
if ('completed' !== state.steps[pageId]) {
skipButton = {
text: __('Skip', 'elementor')
};
}
if (!siteNameInputValue) {
actionButton.className = 'e-onboarding__button--disabled';
}
// Run the callback for the site name update AJAX request.
(0, _react.useEffect)(function () {
if ('initial' !== ajaxState.status) {
var _ajaxState$response;
if ('success' === ajaxState.status && (_ajaxState$response = ajaxState.response) !== null && _ajaxState$response !== void 0 && _ajaxState$response.siteNameUpdated) {
var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
stateToUpdate.siteName = nameInputRef.current.value;
updateState(stateToUpdate);
navigate('onboarding/' + nextStep);
} else if ('error' === ajaxState.status) {
elementorCommon.events.dispatchEvent({
event: 'indication prompt',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
action_state: 'failure',
action: 'site name update'
}
});
setNoticeState({
type: 'error',
icon: 'eicon-warning',
message: __('Sorry, the name wasn\'t saved. Try again, or skip for now.', 'elementor')
});
}
}
}, [ajaxState.status]);
return /*#__PURE__*/_react.default.createElement(_layout.default, {
pageId: pageId,
nextStep: nextStep
}, /*#__PURE__*/_react.default.createElement(_pageContentLayout.default, {
image: elementorCommon.config.urls.assets + 'images/app/onboarding/Illustration_Setup.svg',
title: __('Now, let\'s give your site a name.', 'elementor'),
actionButton: actionButton,
skipButton: skipButton,
noticeState: noticeState
}, /*#__PURE__*/_react.default.createElement("p", null, __('This is what your site is called on the WP dashboard, and can be changed later from the general settings - it\'s not your website\'s URL.', 'elementor')), /*#__PURE__*/_react.default.createElement("input", {
className: "e-onboarding__text-input e-onboarding__site-name-input",
type: "text",
placeholder: "e.g. Eric's Space Shuttles",
defaultValue: state.siteName || '',
ref: nameInputRef,
onChange: function onChange(event) {
return setSiteNameInputValue(event.target.value);
}
})));
}
/***/ }),
/***/ "../app/modules/onboarding/assets/js/pages/upload-and-install-pro.js":
/*!***************************************************************************!*\
!*** ../app/modules/onboarding/assets/js/pages/upload-and-install-pro.js ***!
\***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = UploadAndInstallPro;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
var _useAjax2 = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-ajax */ "../app/assets/js/hooks/use-ajax.js"));
var _usePageTitle = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-page-title */ "../app/assets/js/hooks/use-page-title.js"));
var _content = _interopRequireDefault(__webpack_require__(/*! ../../../../../assets/js/layout/content */ "../app/assets/js/layout/content.js"));
var _dropZone = _interopRequireDefault(__webpack_require__(/*! ../../../../../assets/js/organisms/drop-zone */ "../app/assets/js/organisms/drop-zone.js"));
var _notice = _interopRequireDefault(__webpack_require__(/*! ../components/notice */ "../app/modules/onboarding/assets/js/components/notice.js"));
var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _elementorLoading = _interopRequireDefault(__webpack_require__(/*! elementor-app/molecules/elementor-loading */ "../app/assets/js/molecules/elementor-loading.js"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function UploadAndInstallPro() {
(0, _usePageTitle.default)({
title: __('Upload and Install Elementor Pro', 'elementor')
});
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state,
_useAjax = (0, _useAjax2.default)(),
installProZipAjaxState = _useAjax.ajaxState,
setInstallProZipAjaxState = _useAjax.setAjax,
_useState = (0, _react.useState)(null),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
noticeState = _useState2[0],
setNoticeState = _useState2[1],
_useState3 = (0, _react.useState)(false),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
isLoading = _useState4[0],
setIsLoading = _useState4[1],
_useState5 = (0, _react.useState)(),
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
fileSource = _useState6[0],
setFileSource = _useState6[1];
var uploadProZip = (0, _react.useCallback)(function (file) {
setIsLoading(true);
setInstallProZipAjaxState({
data: {
action: 'elementor_upload_and_install_pro',
fileToUpload: file
}
});
}, []);
var setErrorNotice = function setErrorNotice() {
var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
var step = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'upload';
var errorMessage = (error === null || error === void 0 ? void 0 : error.message) || 'That didn\'t work. Try uploading your file again.';
elementorCommon.events.dispatchEvent({
event: 'indication prompt',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
action_state: 'failure',
action: step + ' pro',
source: fileSource
}
});
setNoticeState({
type: 'error',
icon: 'eicon-warning',
message: errorMessage
});
};
/**
* Ajax Callbacks
*/
// Run the callback that runs when the Pro Upload Ajax returns a response.
(0, _react.useEffect)(function () {
if ('initial' !== installProZipAjaxState.status) {
var _installProZipAjaxSta;
setIsLoading(false);
if ('success' === installProZipAjaxState.status && (_installProZipAjaxSta = installProZipAjaxState.response) !== null && _installProZipAjaxSta !== void 0 && _installProZipAjaxSta.elementorProInstalled) {
elementorCommon.events.dispatchEvent({
event: 'pro uploaded',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep,
source: fileSource
}
});
if (opener && opener !== window) {
opener.jQuery('body').trigger('elementor/upload-and-install-pro/success');
window.close();
opener.focus();
}
} else if ('error' === installProZipAjaxState.status) {
setErrorNotice('install');
}
}
}, [installProZipAjaxState.status]);
var onProUploadHelpLinkClick = function onProUploadHelpLinkClick() {
elementorCommon.events.dispatchEvent({
event: 'pro plugin upload help',
version: '',
details: {
placement: elementorAppConfig.onboarding.eventPlacement,
step: state.currentStep
}
});
};
if (isLoading) {
return /*#__PURE__*/_react.default.createElement(_elementorLoading.default, {
loadingText: __('Uploading', 'elementor')
});
}
return /*#__PURE__*/_react.default.createElement("div", {
className: "eps-app e-onboarding__upload-pro"
}, /*#__PURE__*/_react.default.createElement(_content.default, null, /*#__PURE__*/_react.default.createElement(_dropZone.default, {
className: "e-onboarding__upload-pro-drop-zone",
onFileSelect: function onFileSelect(file, event, source) {
setFileSource(source);
uploadProZip(file);
},
onError: function onError(error) {
return setErrorNotice(error, 'upload');
},
filetypes: ['zip'],
buttonColor: "cta",
buttonVariant: "contained",
heading: __('Import your Elementor Pro plugin file', 'elementor'),
text: __('Drag & Drop your .zip file here', 'elementor'),
secondaryText: __('or', 'elementor'),
buttonText: __('Browse', 'elementor')
}), noticeState && /*#__PURE__*/_react.default.createElement(_notice.default, {
noticeState: noticeState
}), /*#__PURE__*/_react.default.createElement("div", {
className: "e-onboarding__upload-pro-get-file"
}, __('Don\'t know where to get the file from?', 'elementor') + ' ', /*#__PURE__*/_react.default.createElement("a", {
onClick: function onClick() {
return onProUploadHelpLinkClick();
},
href: 'https://my.elementor.com/subscriptions/' + elementorAppConfig.onboarding.utms.downloadPro,
target: "_blank"
}, __('Click here', 'elementor')))));
}
/***/ }),
/***/ "../app/modules/onboarding/assets/js/utils/connect.js":
/*!************************************************************!*\
!*** ../app/modules/onboarding/assets/js/utils/connect.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = Connect;
var _react = __webpack_require__(/*! react */ "react");
var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _onboardingEventTracking = __webpack_require__(/*! ./onboarding-event-tracking */ "../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js");
function Connect(props) {
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state,
updateState = _useContext.updateState,
getStateObjectToUpdate = _useContext.getStateObjectToUpdate;
var buttonRef = props.buttonRef,
successCallback = props.successCallback,
errorCallback = props.errorCallback;
var handleCoreConnectionLogic = (0, _react.useCallback)(function (event, data) {
var isTrackingOptedInConnect = data.tracking_opted_in && elementorCommon.config.editor_events;
_onboardingEventTracking.OnboardingEventTracking.updateLibraryConnectConfig(data);
if (isTrackingOptedInConnect) {
elementorCommon.config.editor_events.can_send_events = true;
_onboardingEventTracking.OnboardingEventTracking.sendConnectionSuccessEvents(data);
}
}, []);
var defaultConnectSuccessCallback = (0, _react.useCallback)(function () {
var stateToUpdate = getStateObjectToUpdate(state, 'steps', 'account', 'completed');
stateToUpdate.isLibraryConnected = true;
updateState(stateToUpdate);
}, [state, getStateObjectToUpdate, updateState]);
(0, _react.useEffect)(function () {
jQuery(buttonRef.current).elementorConnect({
success: function success(event, data) {
handleCoreConnectionLogic(event, data);
if (successCallback) {
successCallback(event, data);
} else {
defaultConnectSuccessCallback();
}
},
error: function error() {
if (errorCallback) {
errorCallback();
}
},
popup: {
width: 726,
height: 534
}
});
}, [buttonRef, successCallback, errorCallback, handleCoreConnectionLogic, defaultConnectSuccessCallback]);
return null;
}
Connect.propTypes = {
buttonRef: PropTypes.object.isRequired,
successCallback: PropTypes.func,
errorCallback: PropTypes.func
};
/***/ }),
/***/ "../app/modules/onboarding/assets/js/utils/modules/onboarding-tracker.js":
/*!*******************************************************************************!*\
!*** ../app/modules/onboarding/assets/js/utils/modules/onboarding-tracker.js ***!
\*******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
Object.defineProperty(exports, "ONBOARDING_STEP_NAMES", ({
enumerable: true,
get: function get() {
return _eventDispatcher.ONBOARDING_STEP_NAMES;
}
}));
Object.defineProperty(exports, "ONBOARDING_STORAGE_KEYS", ({
enumerable: true,
get: function get() {
return _storageManager.ONBOARDING_STORAGE_KEYS;
}
}));
exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
var _eventsConfig = _interopRequireDefault(__webpack_require__(/*! ../../../../../../../core/common/modules/events-manager/assets/js/events-config */ "../core/common/modules/events-manager/assets/js/events-config.js"));
var _storageManager = _interopRequireWildcard(__webpack_require__(/*! ./storage-manager.js */ "../app/modules/onboarding/assets/js/utils/modules/storage-manager.js"));
var _eventDispatcher = _interopRequireWildcard(__webpack_require__(/*! ./event-dispatcher.js */ "../app/modules/onboarding/assets/js/utils/modules/event-dispatcher.js"));
var _timingManager = _interopRequireDefault(__webpack_require__(/*! ./timing-manager.js */ "../app/modules/onboarding/assets/js/utils/modules/timing-manager.js"));
var _postOnboardingTracker = _interopRequireDefault(__webpack_require__(/*! ./post-onboarding-tracker.js */ "../app/modules/onboarding/assets/js/utils/modules/post-onboarding-tracker.js"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var OnboardingTracker = /*#__PURE__*/function () {
function OnboardingTracker() {
(0, _classCallCheck2.default)(this, OnboardingTracker);
this.initializeEventConfigs();
this.initializeEventListeners();
}
return (0, _createClass2.default)(OnboardingTracker, [{
key: "initializeEventConfigs",
value: function initializeEventConfigs() {
this.EVENT_CONFIGS = {
SKIP: {
eventName: _eventDispatcher.ONBOARDING_EVENTS_MAP.SKIP,
storageKey: _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_SKIP,
basePayload: {
location: 'plugin_onboarding',
trigger: 'skip_clicked'
},
payloadBuilder: function payloadBuilder(eventData) {
return {
action_step: eventData.currentStep,
skip_timestamp: eventData.timestamp
};
}
},
TOP_UPGRADE: {
eventName: _eventDispatcher.ONBOARDING_EVENTS_MAP.TOP_UPGRADE,
storageKey: _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE,
isArray: true,
basePayload: {
location: 'plugin_onboarding',
trigger: 'upgrade_interaction'
},
payloadBuilder: function payloadBuilder(eventData) {
return {
action_step: eventData.currentStep,
upgrade_clicked: eventData.upgradeClicked
};
}
},
CREATE_MY_ACCOUNT: {
eventName: _eventDispatcher.ONBOARDING_EVENTS_MAP.CREATE_MY_ACCOUNT,
storageKey: _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_CREATE_MY_ACCOUNT,
basePayload: {
location: 'plugin_onboarding',
trigger: 'upgrade_interaction'
},
payloadBuilder: function payloadBuilder(eventData) {
return {
action_step: eventData.currentStep,
create_account_clicked: eventData.createAccountClicked
};
}
},
CREATE_ACCOUNT_STATUS: {
eventName: _eventDispatcher.ONBOARDING_EVENTS_MAP.CREATE_ACCOUNT_STATUS,
storageKey: _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_CREATE_ACCOUNT_STATUS,
basePayload: {
location: 'plugin_onboarding',
trigger: 'create_flow_returns_status'
},
payloadBuilder: function payloadBuilder(eventData) {
return {
onboarding_create_account_status: eventData.status
};
}
},
CONNECT_STATUS: {
eventName: _eventDispatcher.ONBOARDING_EVENTS_MAP.CONNECT_STATUS,
storageKey: _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_CONNECT_STATUS,
basePayload: {
location: 'plugin_onboarding',
trigger: 'connect_flow_returns_status'
},
payloadBuilder: function payloadBuilder(eventData) {
return {
onboarding_connect_status: eventData.status,
tracking_opted_in: eventData.trackingOptedIn,
user_tier: eventData.userTier
};
},
stepOverride: 1,
stepNameOverride: _eventDispatcher.ONBOARDING_STEP_NAMES.CONNECT
},
STEP1_CLICKED_CONNECT: {
eventName: _eventDispatcher.ONBOARDING_EVENTS_MAP.STEP1_CLICKED_CONNECT,
storageKey: _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_STEP1_CLICKED_CONNECT,
basePayload: {
location: 'plugin_onboarding',
trigger: _eventsConfig.default.triggers.click
},
payloadBuilder: function payloadBuilder() {
return {};
},
stepOverride: 1,
stepNameOverride: _eventDispatcher.ONBOARDING_STEP_NAMES.CONNECT
},
STEP1_END_STATE: {
eventName: _eventDispatcher.ONBOARDING_EVENTS_MAP.STEP1_END_STATE,
storageKey: _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_STEP1_END_STATE,
isRawPayload: true,
payloadBuilder: function payloadBuilder(eventData) {
return eventData;
}
},
EXIT_BUTTON: {
eventName: _eventDispatcher.ONBOARDING_EVENTS_MAP.EXIT_BUTTON,
storageKey: _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_EXIT_BUTTON,
basePayload: {
location: 'plugin_onboarding',
trigger: 'exit_button_clicked'
},
payloadBuilder: function payloadBuilder(eventData) {
return {
action_step: eventData.currentStep
};
}
}
};
}
}, {
key: "initializeEventListeners",
value: function initializeEventListeners() {
var _this = this;
if ('undefined' === typeof document) {
return;
}
document.addEventListener('click', function (event) {
var cardGridElement = event.target.closest('.e-onboarding__cards-grid');
if (cardGridElement) {
_this.handleStep4CardClick(event);
}
}, true);
this.setupUrlChangeDetection();
}
}, {
key: "setupUrlChangeDetection",
value: function setupUrlChangeDetection() {
var _this2 = this;
var lastUrl = window.location.href;
var urlChangeDetector = function urlChangeDetector() {
var currentUrl = window.location.href;
if (currentUrl !== lastUrl) {
var isStep4 = currentUrl.includes('goodToGo') || currentUrl.includes('step4') || currentUrl.includes('site_starter');
if (isStep4) {
setTimeout(function () {
_timingManager.default.trackStepStartTime(4);
_this2.checkAndSendReturnToStep4();
}, 100);
}
lastUrl = currentUrl;
}
};
setInterval(urlChangeDetector, 500);
window.addEventListener('popstate', function () {
setTimeout(urlChangeDetector, 100);
});
}
}, {
key: "dispatchEvent",
value: function dispatchEvent(eventName, payload) {
return _eventDispatcher.default.dispatch(eventName, payload);
}
}, {
key: "sendEventOrStore",
value: function sendEventOrStore(eventType, eventData) {
if ('TOP_UPGRADE' === eventType && 'no_click' !== eventData.upgradeClicked) {
var stepNumber = this.getStepNumber(eventData.currentStep);
this.markUpgradeClickSent(stepNumber);
}
if (_eventDispatcher.default.canSendEvents()) {
return this.sendEventDirect(eventType, eventData);
}
this.storeEventForLater(eventType, eventData);
}
}, {
key: "sendEventDirect",
value: function sendEventDirect(eventType, eventData) {
var config = this.EVENT_CONFIGS[eventType];
if (!config) {
return;
}
if (config.isRawPayload) {
return this.dispatchEvent(config.eventName, eventData);
}
var stepNumber = config.stepOverride || this.getStepNumber(eventData.currentStep);
var stepName = config.stepNameOverride || this.getStepName(stepNumber);
var eventPayload = _eventDispatcher.default.createStepEventPayload(stepNumber, stepName, _objectSpread(_objectSpread({}, config.basePayload), config.payloadBuilder(eventData)));
return this.dispatchEvent(config.eventName, eventPayload);
}
}, {
key: "storeEventForLater",
value: function storeEventForLater(eventType, eventData) {
var config = this.EVENT_CONFIGS[eventType];
if (!config) {
return;
}
var dataWithTimestamp = _objectSpread(_objectSpread({}, eventData), {}, {
timestamp: _timingManager.default.getCurrentTime()
});
if (config.isArray) {
var existingEvents = _storageManager.default.getArray(config.storageKey);
existingEvents.push(dataWithTimestamp);
_storageManager.default.setObject(config.storageKey, existingEvents);
} else {
_storageManager.default.setObject(config.storageKey, dataWithTimestamp);
}
}
}, {
key: "sendStoredEvent",
value: function sendStoredEvent(eventType) {
var _this3 = this;
var config = this.EVENT_CONFIGS[eventType];
if (!config) {
return;
}
var storedData = config.isArray ? _storageManager.default.getArray(config.storageKey) : _storageManager.default.getObject(config.storageKey);
if (!storedData || config.isArray && 0 === storedData.length) {
return;
}
var processEvent = function processEvent(eventData) {
if (config.isRawPayload) {
_this3.dispatchEvent(config.eventName, eventData);
return;
}
var stepNumber = config.stepOverride || _this3.getStepNumber(eventData.currentStep);
var stepName = config.stepNameOverride || _this3.getStepName(stepNumber);
var eventPayload = _eventDispatcher.default.createStepEventPayload(stepNumber, stepName, _objectSpread(_objectSpread({}, config.basePayload), config.payloadBuilder(eventData)));
_this3.dispatchEvent(config.eventName, eventPayload);
};
if (config.isArray) {
storedData.forEach(processEvent);
} else {
processEvent(storedData);
}
_storageManager.default.remove(config.storageKey);
}
}, {
key: "updateLibraryConnectConfig",
value: function updateLibraryConnectConfig(data) {
if (!elementorCommon.config.library_connect) {
return;
}
elementorCommon.config.library_connect.is_connected = true;
elementorCommon.config.library_connect.current_access_level = data.kits_access_level || data.access_level || 0;
elementorCommon.config.library_connect.current_access_tier = data.access_tier;
elementorCommon.config.library_connect.plan_type = data.plan_type;
elementorCommon.config.library_connect.user_id = data.user_id || null;
}
}, {
key: "sendUpgradeNowStep3",
value: function sendUpgradeNowStep3(selectedFeatures, currentStep) {
var proFeaturesChecked = this.extractSelectedFeatureKeys(selectedFeatures);
return _eventDispatcher.default.dispatchStepEvent(_eventDispatcher.ONBOARDING_EVENTS_MAP.UPGRADE_NOW_S3, currentStep, _eventDispatcher.ONBOARDING_STEP_NAMES.PRO_FEATURES, {
location: 'plugin_onboarding',
trigger: _eventsConfig.default.triggers.click,
pro_features_checked: proFeaturesChecked
});
}
}, {
key: "extractSelectedFeatureKeys",
value: function extractSelectedFeatureKeys(selectedFeatures) {
if (!selectedFeatures || !Array.isArray(selectedFeatures)) {
return [];
}
return selectedFeatures.filter(function (feature) {
return feature && feature.is_checked;
}).map(function (feature) {
return feature.key;
}).filter(function (key) {
return key;
});
}
}, {
key: "sendHelloBizContinue",
value: function sendHelloBizContinue(stepNumber) {
if (_eventDispatcher.default.canSendEvents()) {
return _eventDispatcher.default.dispatchStepEvent(_eventDispatcher.ONBOARDING_EVENTS_MAP.HELLO_BIZ_CONTINUE, stepNumber, _eventDispatcher.ONBOARDING_STEP_NAMES.HELLO_BIZ, {
location: 'plugin_onboarding',
trigger: _eventsConfig.default.triggers.click
});
}
}
}, {
key: "sendTopUpgrade",
value: function sendTopUpgrade(currentStep, upgradeClicked) {
return this.sendEventOrStore('TOP_UPGRADE', {
currentStep: currentStep,
upgradeClicked: upgradeClicked
});
}
}, {
key: "cancelDelayedNoClickEvent",
value: function cancelDelayedNoClickEvent() {
_storageManager.default.remove(_storageManager.ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE_NO_CLICK);
}
}, {
key: "initiateCoreOnboarding",
value: function initiateCoreOnboarding() {
_timingManager.default.clearStaleSessionData();
_timingManager.default.initializeOnboardingStartTime();
}
}, {
key: "sendCoreOnboardingInitiated",
value: function sendCoreOnboardingInitiated() {
var startTime = _timingManager.default.initializeOnboardingStartTime();
var currentTime = _timingManager.default.getCurrentTime();
var totalOnboardingTime = Math.round((currentTime - startTime) / 1000);
var eventData = _timingManager.default.addTimingToEventData({
location: 'plugin_onboarding',
trigger: 'core_onboarding_initiated',
step_number: 1,
step_name: _eventDispatcher.ONBOARDING_STEP_NAMES.ONBOARDING_START,
onboarding_start_time: startTime,
total_onboarding_time_seconds: totalOnboardingTime
});
this.dispatchEvent(_eventDispatcher.ONBOARDING_EVENTS_MAP.CORE_ONBOARDING, eventData);
_storageManager.default.remove(_storageManager.ONBOARDING_STORAGE_KEYS.INITIATED);
}
}, {
key: "storeSiteStarterChoice",
value: function storeSiteStarterChoice(siteStarter) {
var choiceData = {
site_starter: siteStarter,
timestamp: _timingManager.default.getCurrentTime(),
return_event_sent: false
};
_storageManager.default.setObject(_storageManager.ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE, choiceData);
}
}, {
key: "checkAndSendReturnToStep4",
value: function checkAndSendReturnToStep4() {
var choiceData = _storageManager.default.getObject(_storageManager.ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE);
if (!choiceData) {
return;
}
if (!choiceData.return_event_sent) {
var returnEventPayload = _eventDispatcher.default.createStepEventPayload(4, _eventDispatcher.ONBOARDING_STEP_NAMES.SITE_STARTER, {
location: 'plugin_onboarding',
trigger: 'user_returns_to_onboarding',
return_to_onboarding: choiceData.site_starter,
original_choice_timestamp: choiceData.timestamp
});
this.dispatchEvent(_eventDispatcher.ONBOARDING_EVENTS_MAP.STEP4_RETURN_STEP4, returnEventPayload);
choiceData.return_event_sent = true;
_storageManager.default.setObject(_storageManager.ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE, choiceData);
}
}
}, {
key: "handleSiteStarterChoice",
value: function handleSiteStarterChoice(siteStarter) {
_timingManager.default.trackStepStartTime(4);
this.storeSiteStarterChoice(siteStarter);
this.trackStepAction(4, 'site_starter', {
source_type: siteStarter
});
this.sendStepEndState(4);
}
}, {
key: "storeExitEventForLater",
value: function storeExitEventForLater(exitType, currentStep) {
var exitData = {
exitType: exitType,
currentStep: currentStep,
timestamp: _timingManager.default.getCurrentTime()
};
_storageManager.default.setObject(_storageManager.ONBOARDING_STORAGE_KEYS.PENDING_EXIT, exitData);
}
}, {
key: "checkAndSendEditorLoadedFromOnboarding",
value: function checkAndSendEditorLoadedFromOnboarding() {
return _postOnboardingTracker.default.checkAndSendEditorLoadedFromOnboarding();
}
}, {
key: "sendExitButtonEvent",
value: function sendExitButtonEvent(currentStep) {
var stepNumber = this.getStepNumber(currentStep);
this.trackStepAction(stepNumber, 'exit_button');
this.sendStepEndState(stepNumber);
return this.sendEventOrStore('EXIT_BUTTON', {
currentStep: currentStep
});
}
}, {
key: "trackStepAction",
value: function trackStepAction(stepNumber, action) {
var additionalData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var stepConfig = this.getStepConfig(stepNumber);
if (stepConfig) {
this.trackStepActionInternal(stepNumber, action, stepConfig.storageKey, additionalData);
}
}
}, {
key: "sendStepEndState",
value: function sendStepEndState(stepNumber) {
var stepConfig = this.getStepConfig(stepNumber);
if (stepConfig) {
this.sendStepEndStateInternal(stepNumber, stepConfig.storageKey, stepConfig.eventName, stepConfig.stepName, stepConfig.endStateProperty);
}
}
}, {
key: "trackStepActionInternal",
value: function trackStepActionInternal(stepNumber, action, storageKey) {
var additionalData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
// Always store the action, regardless of global timing availability
var existingActions = _storageManager.default.getArray(storageKey);
var actionData = _objectSpread({
action: action,
timestamp: _timingManager.default.getCurrentTime()
}, additionalData);
existingActions.push(actionData);
_storageManager.default.setObject(storageKey, existingActions);
}
}, {
key: "sendStepEndStateInternal",
value: function sendStepEndStateInternal(stepNumber, storageKey, eventName, stepName, endStateProperty) {
var actions = _storageManager.default.getArray(storageKey);
if (0 === actions.length) {
return;
}
var eventData = _eventDispatcher.default.createStepEventPayload(stepNumber, stepName, {
location: 'plugin_onboarding',
trigger: 'user_redirects_out_of_step'
});
eventData = _timingManager.default.addTimingToEventData(eventData, stepNumber);
var filteredActions = actions.filter(function (action) {
return 'upgrade_hover' !== action.action && 'upgrade_topbar' !== action.action && 'upgrade_now' !== action.action && 'upgrade_already_pro' !== action.action;
});
eventData[endStateProperty] = filteredActions;
if (_eventDispatcher.default.canSendEvents()) {
this.sendHoverEventsFromStepActions(actions, stepNumber);
this.dispatchEvent(eventName, eventData);
_storageManager.default.remove(storageKey);
_timingManager.default.clearStepStartTime(stepNumber);
} else if (1 === stepNumber) {
this.storeStep1EndStateForLater(eventData, storageKey);
} else {
this.sendHoverEventsFromStepActions(actions, stepNumber);
this.dispatchEvent(eventName, eventData);
_storageManager.default.remove(storageKey);
_timingManager.default.clearStepStartTime(stepNumber);
}
}
}, {
key: "getStepNumber",
value: function getStepNumber(pageId) {
if (this.isNumericPageId(pageId)) {
return pageId;
}
if (this.isStringNumericPageId(pageId)) {
return this.convertStringToNumber(pageId);
}
return this.mapPageIdToStepNumber(pageId);
}
}, {
key: "isNumericPageId",
value: function isNumericPageId(pageId) {
return 'number' === typeof pageId;
}
}, {
key: "isStringNumericPageId",
value: function isStringNumericPageId(pageId) {
return 'string' === typeof pageId && !isNaN(pageId);
}
}, {
key: "convertStringToNumber",
value: function convertStringToNumber(pageId) {
return parseInt(pageId, 10);
}
}, {
key: "mapPageIdToStepNumber",
value: function mapPageIdToStepNumber(pageId) {
var stepMappings = this.getStepMappings();
var mappedStep = stepMappings[pageId];
return mappedStep || null;
}
}, {
key: "getStepMappings",
value: function getStepMappings() {
return {
account: 1,
connect: 1,
hello: 2,
hello_biz: 2,
chooseFeatures: 3,
pro_features: 3,
site_starter: 4,
goodToGo: 4,
siteName: 5,
siteLogo: 6
};
}
}, {
key: "getStepName",
value: function getStepName(stepNumber) {
var stepNames = {
1: _eventDispatcher.ONBOARDING_STEP_NAMES.CONNECT,
2: _eventDispatcher.ONBOARDING_STEP_NAMES.HELLO_BIZ,
3: _eventDispatcher.ONBOARDING_STEP_NAMES.PRO_FEATURES,
4: _eventDispatcher.ONBOARDING_STEP_NAMES.SITE_STARTER,
5: _eventDispatcher.ONBOARDING_STEP_NAMES.SITE_NAME,
6: _eventDispatcher.ONBOARDING_STEP_NAMES.SITE_LOGO
};
return stepNames[stepNumber] || 'unknown';
}
}, {
key: "getStepConfig",
value: function getStepConfig(stepNumber) {
var stepConfigs = {
1: {
storageKey: _storageManager.ONBOARDING_STORAGE_KEYS.STEP1_ACTIONS,
eventName: _eventDispatcher.ONBOARDING_EVENTS_MAP.STEP1_END_STATE,
stepName: _eventDispatcher.ONBOARDING_STEP_NAMES.CONNECT,
endStateProperty: 'step1_actions'
},
2: {
storageKey: _storageManager.ONBOARDING_STORAGE_KEYS.STEP2_ACTIONS,
eventName: _eventDispatcher.ONBOARDING_EVENTS_MAP.STEP2_END_STATE,
stepName: _eventDispatcher.ONBOARDING_STEP_NAMES.HELLO_BIZ,
endStateProperty: 'step2_actions'
},
3: {
storageKey: _storageManager.ONBOARDING_STORAGE_KEYS.STEP3_ACTIONS,
eventName: _eventDispatcher.ONBOARDING_EVENTS_MAP.STEP3_END_STATE,
stepName: _eventDispatcher.ONBOARDING_STEP_NAMES.PRO_FEATURES,
endStateProperty: 'step3_actions'
},
4: {
storageKey: _storageManager.ONBOARDING_STORAGE_KEYS.STEP4_ACTIONS,
eventName: _eventDispatcher.ONBOARDING_EVENTS_MAP.STEP4_END_STATE,
stepName: _eventDispatcher.ONBOARDING_STEP_NAMES.SITE_STARTER,
endStateProperty: 'step4_actions'
}
};
return stepConfigs[stepNumber] || null;
}
}, {
key: "sendConnectionSuccessEvents",
value: function sendConnectionSuccessEvents(data) {
this.sendCoreOnboardingInitiated();
this.sendAppropriateStatusEvent('success', data);
this.sendAllStoredEvents();
}
}, {
key: "sendConnectionFailureEvents",
value: function sendConnectionFailureEvents() {
this.sendAppropriateStatusEvent('fail');
}
}, {
key: "sendAppropriateStatusEvent",
value: function sendAppropriateStatusEvent(status) {
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
var hasCreateAccountAction = _storageManager.default.exists(_storageManager.ONBOARDING_STORAGE_KEYS.PENDING_CREATE_MY_ACCOUNT);
var hasConnectAction = _storageManager.default.exists(_storageManager.ONBOARDING_STORAGE_KEYS.PENDING_STEP1_CLICKED_CONNECT);
if (hasCreateAccountAction) {
this.sendEventDirect('CREATE_ACCOUNT_STATUS', {
status: status,
currentStep: 1
});
} else if (hasConnectAction) {
if (data) {
this.sendEventDirect('CONNECT_STATUS', {
status: status,
trackingOptedIn: data.tracking_opted_in,
userTier: data.access_tier
});
} else {
this.sendEventDirect('CONNECT_STATUS', {
status: status,
trackingOptedIn: false,
userTier: null
});
}
} else if (data) {
this.sendEventDirect('CONNECT_STATUS', {
status: status,
trackingOptedIn: data.tracking_opted_in,
userTier: data.access_tier
});
} else {
this.sendEventDirect('CONNECT_STATUS', {
status: status,
trackingOptedIn: false,
userTier: null
});
}
}
}, {
key: "sendAllStoredEvents",
value: function sendAllStoredEvents() {
this.sendStoredEvent('SKIP');
this.sendStoredEvent('TOP_UPGRADE');
this.sendStoredEvent('CREATE_MY_ACCOUNT');
this.sendStoredEvent('CREATE_ACCOUNT_STATUS');
this.sendStoredEvent('CONNECT_STATUS');
this.sendStoredEvent('STEP1_CLICKED_CONNECT');
this.sendStoredEvent('STEP1_END_STATE');
this.sendStoredEvent('EXIT_BUTTON');
}
}, {
key: "handleStep4CardClick",
value: function handleStep4CardClick() {
var hasPreviousClick = _storageManager.default.exists(_storageManager.ONBOARDING_STORAGE_KEYS.STEP4_HAS_PREVIOUS_CLICK);
if (hasPreviousClick) {
this.checkAndSendReturnToStep4();
} else {
_storageManager.default.setString(_storageManager.ONBOARDING_STORAGE_KEYS.STEP4_HAS_PREVIOUS_CLICK, 'true');
}
}
}, {
key: "setupAllUpgradeButtons",
value: function setupAllUpgradeButtons(currentStep) {
var _this4 = this;
var upgradeButtons = document.querySelectorAll('.elementor-button[href*="upgrade"], .e-btn[href*="upgrade"], .eps-button[href*="upgrade"]');
upgradeButtons.forEach(function (button) {
_this4.setupSingleUpgradeButton(button, currentStep);
});
return upgradeButtons.length;
}
}, {
key: "setupSingleUpgradeButton",
value: function setupSingleUpgradeButton(buttonElement, currentStep) {
var _this5 = this;
if (!this.isValidButtonElement(buttonElement)) {
return null;
}
this.cleanupButtonTracking(buttonElement);
if (this.isButtonAlreadyTrackedForStep(buttonElement, currentStep)) {
return null;
}
this.markButtonAsTracked(buttonElement, currentStep);
var eventHandlers = this.createUpgradeButtonEventHandlers(buttonElement, currentStep);
this.attachEventHandlersToButton(buttonElement, eventHandlers);
return function () {
_this5.cleanupButtonTracking(buttonElement);
};
}
}, {
key: "isValidButtonElement",
value: function isValidButtonElement(buttonElement) {
return !!buttonElement;
}
}, {
key: "isButtonAlreadyTrackedForStep",
value: function isButtonAlreadyTrackedForStep(buttonElement, currentStep) {
var existingStep = buttonElement.dataset.onboardingStep;
return buttonElement.dataset.onboardingTracked && existingStep === currentStep;
}
}, {
key: "markButtonAsTracked",
value: function markButtonAsTracked(buttonElement, currentStep) {
buttonElement.dataset.onboardingTracked = 'true';
buttonElement.dataset.onboardingStep = currentStep;
}
}, {
key: "createUpgradeButtonEventHandlers",
value: function createUpgradeButtonEventHandlers(buttonElement, currentStep) {
var _this6 = this;
var hasClicked = false;
var hasHovered = false;
var handleMouseEnter = function handleMouseEnter() {
if (!hasHovered) {
hasHovered = true;
_this6.trackUpgradeHoverAction(currentStep, buttonElement);
}
};
var handleMouseLeave = function handleMouseLeave() {};
var handleClick = function handleClick() {
if (_this6.preventDuplicateClick(hasClicked)) {
return;
}
hasClicked = true;
_this6.sendUpgradeClickEvent(buttonElement, currentStep);
};
return {
handleMouseEnter: handleMouseEnter,
handleMouseLeave: handleMouseLeave,
handleClick: handleClick
};
}
}, {
key: "preventDuplicateClick",
value: function preventDuplicateClick(hasClicked) {
return hasClicked;
}
}, {
key: "sendUpgradeClickEvent",
value: function sendUpgradeClickEvent(buttonElement, currentStep) {
var upgradeClickedValue = this.determineUpgradeClickedValue(buttonElement);
this.sendEventOrStore('TOP_UPGRADE', {
currentStep: currentStep,
upgradeClicked: upgradeClickedValue
});
}
}, {
key: "trackUpgradeHoverAction",
value: function trackUpgradeHoverAction(currentStep, buttonElement) {
var stepNumber = this.getStepNumber(currentStep);
if (!stepNumber) {
return;
}
var upgradeHoverValue = this.determineUpgradeClickedValue(buttonElement);
this.trackStepAction(stepNumber, 'upgrade_hover', {
upgrade_hovered: upgradeHoverValue,
hover_timestamp: _timingManager.default.getCurrentTime()
});
}
}, {
key: "sendHoverEventsFromStepActions",
value: function sendHoverEventsFromStepActions(actions, stepNumber) {
var _this7 = this;
var hoverActions = actions.filter(function (action) {
return 'upgrade_hover' === action.action;
});
if (0 === hoverActions.length) {
return;
}
var hasUpgradeClickInActions = actions.some(function (action) {
return 'upgrade_topbar' === action.action || 'upgrade_tooltip' === action.action || 'upgrade_now' === action.action || 'upgrade_already_pro' === action.action;
});
var hasStoredClickEvent = this.hasExistingUpgradeClickEvent(stepNumber);
var hasClickBeenSent = this.hasUpgradeClickBeenSent(stepNumber);
if (hasUpgradeClickInActions || hasStoredClickEvent || hasClickBeenSent) {
return;
}
hoverActions.forEach(function (hoverAction) {
_this7.sendEventOrStore('TOP_UPGRADE', {
currentStep: stepNumber,
upgradeClicked: 'no_click',
upgradeHovered: hoverAction.upgrade_hovered,
hoverTimestamp: hoverAction.hover_timestamp
});
});
}
}, {
key: "markUpgradeClickSent",
value: function markUpgradeClickSent(stepNumber) {
if (!this.sentUpgradeClicks) {
this.sentUpgradeClicks = new Set();
}
this.sentUpgradeClicks.add(stepNumber);
}
}, {
key: "hasUpgradeClickBeenSent",
value: function hasUpgradeClickBeenSent(stepNumber) {
return this.sentUpgradeClicks && this.sentUpgradeClicks.has(stepNumber);
}
}, {
key: "hasExistingUpgradeClickEvent",
value: function hasExistingUpgradeClickEvent(stepNumber) {
var _this8 = this;
var config = this.EVENT_CONFIGS.TOP_UPGRADE;
var storedEvents = _storageManager.default.getArray(config.storageKey);
return storedEvents.some(function (event) {
var eventStepNumber = _this8.getStepNumber(event.currentStep);
return eventStepNumber === stepNumber && event.upgradeClicked && 'no_click' !== event.upgradeClicked;
});
}
}, {
key: "attachEventHandlersToButton",
value: function attachEventHandlersToButton(buttonElement, eventHandlers) {
var handleMouseEnter = eventHandlers.handleMouseEnter,
handleMouseLeave = eventHandlers.handleMouseLeave,
handleClick = eventHandlers.handleClick;
buttonElement._onboardingHandlers = {
mouseenter: handleMouseEnter,
mouseleave: handleMouseLeave,
click: handleClick
};
buttonElement.addEventListener('mouseenter', handleMouseEnter);
buttonElement.addEventListener('mouseleave', handleMouseLeave);
buttonElement.addEventListener('click', handleClick);
}
}, {
key: "cleanupButtonTracking",
value: function cleanupButtonTracking(buttonElement) {
if (!buttonElement) {
return;
}
this.removeExistingEventHandlers(buttonElement);
this.clearTrackingDataAttributes(buttonElement);
}
}, {
key: "removeExistingEventHandlers",
value: function removeExistingEventHandlers(buttonElement) {
if (buttonElement._onboardingHandlers) {
var handlers = buttonElement._onboardingHandlers;
buttonElement.removeEventListener('mouseenter', handlers.mouseenter);
buttonElement.removeEventListener('mouseleave', handlers.mouseleave);
buttonElement.removeEventListener('click', handlers.click);
delete buttonElement._onboardingHandlers;
}
}
}, {
key: "clearTrackingDataAttributes",
value: function clearTrackingDataAttributes(buttonElement) {
delete buttonElement.dataset.onboardingTracked;
delete buttonElement.dataset.onboardingStep;
}
}, {
key: "determineUpgradeClickedValue",
value: function determineUpgradeClickedValue(buttonElement) {
var _elementorCommon$conf, _elementorCommon$conf2;
if ((_elementorCommon$conf = elementorCommon.config.library_connect) !== null && _elementorCommon$conf !== void 0 && _elementorCommon$conf.is_connected && 'pro' === ((_elementorCommon$conf2 = elementorCommon.config.library_connect) === null || _elementorCommon$conf2 === void 0 ? void 0 : _elementorCommon$conf2.current_access_tier)) {
return 'already_pro_user';
}
if (buttonElement.closest('.e-app__popover') || buttonElement.closest('.elementor-tooltip') || buttonElement.closest('.e-onboarding__go-pro-content')) {
return 'on_tooltip';
}
if (buttonElement.closest('.eps-app__header')) {
return 'on_topbar';
}
return 'on_topbar';
}
}, {
key: "trackExitAndSendEndState",
value: function trackExitAndSendEndState(currentStep) {
this.trackStepAction(currentStep, 'exit');
this.sendStepEndState(currentStep);
}
}, {
key: "storeStep1EndStateForLater",
value: function storeStep1EndStateForLater(eventData, storageKey) {
this.storeEventForLater('STEP1_END_STATE', eventData);
_storageManager.default.remove(storageKey);
}
}, {
key: "onStepLoad",
value: function onStepLoad(currentStep) {
_timingManager.default.trackStepStartTime(this.getStepNumber(currentStep));
if (2 === this.getStepNumber(currentStep) || 'hello' === currentStep || 'hello_biz' === currentStep) {
this.sendStoredStep1EventsOnStep2();
}
if (4 === this.getStepNumber(currentStep) || 'goodToGo' === currentStep) {
this.checkAndSendReturnToStep4();
}
}
}, {
key: "sendStoredStep1EventsOnStep2",
value: function sendStoredStep1EventsOnStep2() {
this.sendStoredEvent('STEP1_CLICKED_CONNECT');
var step1Actions = _storageManager.default.getArray(_storageManager.ONBOARDING_STORAGE_KEYS.STEP1_ACTIONS);
if (step1Actions.length > 0) {
this.sendHoverEventsFromStepActions(step1Actions, 1);
}
this.sendStoredEvent('STEP1_END_STATE');
}
}, {
key: "setupPostOnboardingClickTracking",
value: function setupPostOnboardingClickTracking() {
return _postOnboardingTracker.default.setupPostOnboardingClickTracking();
}
}, {
key: "cleanupPostOnboardingTracking",
value: function cleanupPostOnboardingTracking() {
return _postOnboardingTracker.default.cleanupPostOnboardingTracking();
}
}, {
key: "clearAllOnboardingStorage",
value: function clearAllOnboardingStorage() {
return _postOnboardingTracker.default.clearAllOnboardingStorage();
}
}]);
}();
var onboardingTracker = new OnboardingTracker();
var _default = exports["default"] = onboardingTracker;
/***/ }),
/***/ "../app/modules/onboarding/assets/js/utils/modules/timing-manager.js":
/*!***************************************************************************!*\
!*** ../app/modules/onboarding/assets/js/utils/modules/timing-manager.js ***!
\***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports.addTimingToEventData = addTimingToEventData;
exports.calculateStepTimeSpent = calculateStepTimeSpent;
exports.calculateTotalTimeSpent = calculateTotalTimeSpent;
exports.clearStaleSessionData = clearStaleSessionData;
exports.clearStepStartTime = clearStepStartTime;
exports.createTimeSpentData = createTimeSpentData;
exports["default"] = void 0;
exports.formatTimeForEvent = formatTimeForEvent;
exports.getCurrentTime = getCurrentTime;
exports.getOnboardingStartTime = getOnboardingStartTime;
exports.hasOnboardingStarted = hasOnboardingStarted;
exports.initializeOnboardingStartTime = initializeOnboardingStartTime;
exports.isWithinTimeThreshold = isWithinTimeThreshold;
exports.trackStepStartTime = trackStepStartTime;
var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
var _storageManager = _interopRequireWildcard(__webpack_require__(/*! ./storage-manager.js */ "../app/modules/onboarding/assets/js/utils/modules/storage-manager.js"));
var StorageManager = _storageManager;
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function getCurrentTime() {
return Date.now();
}
function initializeOnboardingStartTime() {
var startTime = getCurrentTime();
StorageManager.setNumber(_storageManager.ONBOARDING_STORAGE_KEYS.START_TIME, startTime);
StorageManager.setString(_storageManager.ONBOARDING_STORAGE_KEYS.INITIATED, 'true');
return startTime;
}
function getOnboardingStartTime() {
return StorageManager.getNumber(_storageManager.ONBOARDING_STORAGE_KEYS.START_TIME);
}
function hasOnboardingStarted() {
return StorageManager.exists(_storageManager.ONBOARDING_STORAGE_KEYS.START_TIME);
}
function trackStepStartTime(stepNumber) {
var existingStartTime = StorageManager.getStepStartTime(stepNumber);
if (existingStartTime) {
return existingStartTime;
}
var currentTime = getCurrentTime();
StorageManager.setStepStartTime(stepNumber, currentTime);
return currentTime;
}
function calculateStepTimeSpent(stepNumber) {
var stepStartTime = StorageManager.getStepStartTime(stepNumber);
if (!stepStartTime) {
return null;
}
var currentTime = getCurrentTime();
var stepTimeSpent = Math.round((currentTime - stepStartTime) / 1000);
return stepTimeSpent;
}
function clearStepStartTime(stepNumber) {
StorageManager.clearStepStartTime(stepNumber);
}
function calculateTotalTimeSpent() {
var startTime = getOnboardingStartTime();
if (!startTime) {
return null;
}
var currentTime = getCurrentTime();
var timeSpent = Math.round((currentTime - startTime) / 1000);
return {
startTime: startTime,
currentTime: currentTime,
timeSpent: timeSpent
};
}
function formatTimeForEvent(timeInSeconds) {
if (null === timeInSeconds || timeInSeconds === undefined) {
return null;
}
return "".concat(timeInSeconds, "s");
}
function createTimeSpentData() {
var stepNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
var totalTimeData = calculateTotalTimeSpent();
var result = {};
if (totalTimeData) {
result.time_spent = formatTimeForEvent(totalTimeData.timeSpent);
result.total_onboarding_time_seconds = totalTimeData.timeSpent;
result.onboarding_start_time = totalTimeData.startTime;
}
if (stepNumber) {
var stepTimeSpent = calculateStepTimeSpent(stepNumber);
if (stepTimeSpent !== null) {
result.step_time_spent = formatTimeForEvent(stepTimeSpent);
}
}
return Object.keys(result).length > 0 ? result : null;
}
function addTimingToEventData(eventData) {
var stepNumber = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
var timingData = createTimeSpentData(stepNumber);
if (timingData) {
return _objectSpread(_objectSpread({}, eventData), timingData);
}
return eventData;
}
function clearStaleSessionData() {
var recentStepStartTimes = [];
var currentTime = getCurrentTime();
var recentStepStartTimeThresholdMs = 5000;
[_storageManager.ONBOARDING_STORAGE_KEYS.STEP1_START_TIME, _storageManager.ONBOARDING_STORAGE_KEYS.STEP2_START_TIME, _storageManager.ONBOARDING_STORAGE_KEYS.STEP3_START_TIME, _storageManager.ONBOARDING_STORAGE_KEYS.STEP4_START_TIME].forEach(function (key) {
var value = StorageManager.getString(key);
if (value) {
var timestamp = parseInt(value, 10);
var age = currentTime - timestamp;
if (age < recentStepStartTimeThresholdMs) {
recentStepStartTimes.push(key);
}
}
});
var keysToRemove = [_storageManager.ONBOARDING_STORAGE_KEYS.START_TIME, _storageManager.ONBOARDING_STORAGE_KEYS.INITIATED, _storageManager.ONBOARDING_STORAGE_KEYS.STEP1_ACTIONS, _storageManager.ONBOARDING_STORAGE_KEYS.STEP2_ACTIONS, _storageManager.ONBOARDING_STORAGE_KEYS.STEP3_ACTIONS, _storageManager.ONBOARDING_STORAGE_KEYS.STEP4_ACTIONS, _storageManager.ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE, _storageManager.ONBOARDING_STORAGE_KEYS.STEP4_HAS_PREVIOUS_CLICK, _storageManager.ONBOARDING_STORAGE_KEYS.EDITOR_LOAD_TRACKED, _storageManager.ONBOARDING_STORAGE_KEYS.POST_ONBOARDING_CLICK_COUNT, _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_SKIP, _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_CONNECT_STATUS, _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_CREATE_ACCOUNT_STATUS, _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_CREATE_MY_ACCOUNT, _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE, _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE_NO_CLICK, _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_STEP1_CLICKED_CONNECT, _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_STEP1_END_STATE, _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_EXIT_BUTTON, _storageManager.ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE_MOUSEOVER];
keysToRemove.forEach(function (key) {
if (!recentStepStartTimes.includes(key)) {
StorageManager.remove(key);
}
});
[_storageManager.ONBOARDING_STORAGE_KEYS.STEP1_START_TIME, _storageManager.ONBOARDING_STORAGE_KEYS.STEP2_START_TIME, _storageManager.ONBOARDING_STORAGE_KEYS.STEP3_START_TIME, _storageManager.ONBOARDING_STORAGE_KEYS.STEP4_START_TIME].forEach(function (key) {
if (!recentStepStartTimes.includes(key)) {
StorageManager.remove(key);
}
});
}
function isWithinTimeThreshold(timestamp) {
var thresholdMs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5000;
var currentTime = getCurrentTime();
return currentTime - timestamp < thresholdMs;
}
var TimingManager = {
getCurrentTime: getCurrentTime,
initializeOnboardingStartTime: initializeOnboardingStartTime,
getOnboardingStartTime: getOnboardingStartTime,
hasOnboardingStarted: hasOnboardingStarted,
trackStepStartTime: trackStepStartTime,
calculateStepTimeSpent: calculateStepTimeSpent,
clearStepStartTime: clearStepStartTime,
calculateTotalTimeSpent: calculateTotalTimeSpent,
formatTimeForEvent: formatTimeForEvent,
createTimeSpentData: createTimeSpentData,
addTimingToEventData: addTimingToEventData,
clearStaleSessionData: clearStaleSessionData,
isWithinTimeThreshold: isWithinTimeThreshold
};
var _default = exports["default"] = TimingManager;
/***/ }),
/***/ "../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js":
/*!******************************************************************************!*\
!*** ../app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js ***!
\******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
Object.defineProperty(exports, "ONBOARDING_STEP_NAMES", ({
enumerable: true,
get: function get() {
return _onboardingTracker.ONBOARDING_STEP_NAMES;
}
}));
Object.defineProperty(exports, "ONBOARDING_STORAGE_KEYS", ({
enumerable: true,
get: function get() {
return _onboardingTracker.ONBOARDING_STORAGE_KEYS;
}
}));
exports.OnboardingEventTracking = void 0;
var _onboardingTracker = _interopRequireWildcard(__webpack_require__(/*! ./modules/onboarding-tracker.js */ "../app/modules/onboarding/assets/js/utils/modules/onboarding-tracker.js"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
var OnboardingEventTracking = exports.OnboardingEventTracking = _onboardingTracker.default;
/***/ }),
/***/ "../app/modules/onboarding/assets/js/utils/use-button-action.js":
/*!**********************************************************************!*\
!*** ../app/modules/onboarding/assets/js/utils/use-button-action.js ***!
\**********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = useButtonAction;
var _react = __webpack_require__(/*! react */ "react");
var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
function useButtonAction(pageId, nextPage) {
var _useContext = (0, _react.useContext)(_context.OnboardingContext),
state = _useContext.state,
updateState = _useContext.updateState,
getStateObjectToUpdate = _useContext.getStateObjectToUpdate;
var navigate = (0, _router.useNavigate)();
var handleAction = function handleAction(action) {
var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, action);
updateState(stateToUpdate);
navigate('onboarding/' + nextPage);
};
return {
state: state,
handleAction: handleAction
};
}
/***/ }),
/***/ "../app/modules/onboarding/assets/js/utils/utils.js":
/*!**********************************************************!*\
!*** ../app/modules/onboarding/assets/js/utils/utils.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports.setSelectedFeatureList = exports.safeDispatchEvent = exports.options = void 0;
var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"));
var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
/**
* Checkboxes data.
*/
var options = exports.options = [{
plan: 'essential',
text: __('Templates & Theme Builder', 'elementor')
}, {
plan: 'advanced',
text: __('WooCommerce Builder', 'elementor')
}, {
plan: 'essential',
text: __('Lead Collection & Form Builder', 'elementor')
}, {
plan: 'essential',
text: __('Dynamic Content', 'elementor')
}, {
plan: 'advanced',
text: __('Popup Builder', 'elementor')
}, {
plan: 'advanced',
text: __('Custom Code & CSS', 'elementor')
}, {
plan: 'essential',
text: __('Motion Effects & Animations', 'elementor')
}, {
plan: 'advanced',
text: __('Notes & Collaboration', 'elementor')
}];
/**
* Set the selected feature list.
* @param {Object} param0
* @param {boolean} param0.checked
* @param {string} param0.id
* @param {string} param0.text
* @param {Object} param0.selectedFeatures
* @param {Function} param0.setSelectedFeatures
*/
var setSelectedFeatureList = exports.setSelectedFeatureList = function setSelectedFeatureList(_ref) {
var checked = _ref.checked,
id = _ref.id,
text = _ref.text,
selectedFeatures = _ref.selectedFeatures,
setSelectedFeatures = _ref.setSelectedFeatures;
var tier = id.split('-')[0];
if (checked) {
setSelectedFeatures(_objectSpread(_objectSpread({}, selectedFeatures), {}, (0, _defineProperty2.default)({}, tier, [].concat((0, _toConsumableArray2.default)(selectedFeatures[tier]), [text]))));
} else {
setSelectedFeatures(_objectSpread(_objectSpread({}, selectedFeatures), {}, (0, _defineProperty2.default)({}, tier, selectedFeatures[tier].filter(function (item) {
return item !== text;
}))));
}
};
var safeDispatchEvent = exports.safeDispatchEvent = function safeDispatchEvent(eventName, eventData) {
try {
var _elementorCommon, _elementorCommon$disp;
(_elementorCommon = elementorCommon) === null || _elementorCommon === void 0 || (_elementorCommon = _elementorCommon.eventsManager) === null || _elementorCommon === void 0 || (_elementorCommon$disp = _elementorCommon.dispatchEvent) === null || _elementorCommon$disp === void 0 || _elementorCommon$disp.call(_elementorCommon, eventName, eventData);
} catch (error) {
// Silently fail - don't let tracking break the user experience
}
};
/***/ })
}]);
//# sourceMappingURL=onboarding.50bce36b17131b8d21b7.bundle.js.map