PluginProbe
Elementor Website Builder – more than just a page builder / 3.26.1
Elementor Website Builder – more than just a page builder v3.26.1
4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 All 457 releases
elementor / assets / js / onboarding.120a44527e5a7209a8e4.bundle.js

onboarding.120a44527e5a7209a8e4.bundle.js in Elementor Website Builder – more than just a page builder 3.26.1, at assets/js/onboarding.120a44527e5a7209a8e4.bundle.js

2,693 lines 128.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*! elementor - v3.26.0 - 19-12-2024 */
2 "use strict";
3 (self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["onboarding"],{
4
5 /***/ "../app/assets/js/molecules/elementor-loading.js":
6 /*!*******************************************************!*\
7 !*** ../app/assets/js/molecules/elementor-loading.js ***!
8 \*******************************************************/
9 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
10
11 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
12 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
13
14
15 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
16 Object.defineProperty(exports, "__esModule", ({
17 value: true
18 }));
19 exports["default"] = ElementorLoading;
20 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
21 function ElementorLoading(props) {
22 return /*#__PURE__*/_react.default.createElement("div", {
23 className: "elementor-loading"
24 }, /*#__PURE__*/_react.default.createElement("div", {
25 className: "elementor-loader-wrapper"
26 }, /*#__PURE__*/_react.default.createElement("div", {
27 className: "elementor-loader"
28 }, /*#__PURE__*/_react.default.createElement("div", {
29 className: "elementor-loader-boxes"
30 }, /*#__PURE__*/_react.default.createElement("div", {
31 className: "elementor-loader-box"
32 }), /*#__PURE__*/_react.default.createElement("div", {
33 className: "elementor-loader-box"
34 }), /*#__PURE__*/_react.default.createElement("div", {
35 className: "elementor-loader-box"
36 }), /*#__PURE__*/_react.default.createElement("div", {
37 className: "elementor-loader-box"
38 }))), /*#__PURE__*/_react.default.createElement("div", {
39 className: "elementor-loading-title"
40 }, props.loadingText)));
41 }
42 ElementorLoading.propTypes = {
43 loadingText: PropTypes.string
44 };
45 ElementorLoading.defaultProps = {
46 loadingText: __('Loading', 'elementor')
47 };
48
49 /***/ }),
50
51 /***/ "../app/assets/js/ui/popover-dialog/popover-dialog.js":
52 /*!************************************************************!*\
53 !*** ../app/assets/js/ui/popover-dialog/popover-dialog.js ***!
54 \************************************************************/
55 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
56
57 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
58
59
60 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
61 Object.defineProperty(exports, "__esModule", ({
62 value: true
63 }));
64 exports["default"] = PopoverDialog;
65 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
66 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
67 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
68 function PopoverDialog(props) {
69 var targetRef = props.targetRef,
70 offsetTop = props.offsetTop,
71 offsetLeft = props.offsetLeft,
72 wrapperClass = props.wrapperClass,
73 trigger = props.trigger,
74 hideAfter = props.hideAfter,
75 popoverRef = (0, _react.useCallback)(function (popoverEl) {
76 var target = targetRef === null || targetRef === void 0 ? void 0 : targetRef.current;
77
78 // If the target or the popover element does not exist on the page anymore after a re-render, do nothing.
79 if (!target || !popoverEl) {
80 return;
81 }
82
83 /**
84 * Show Popover
85 */
86 var showPopover = function showPopover() {
87 popoverEl.style.display = 'block';
88 popoverEl.setAttribute('aria-expanded', true);
89 var targetRect = target.getBoundingClientRect(),
90 popoverRect = popoverEl.getBoundingClientRect(),
91 widthDifference = popoverRect.width - targetRect.width;
92 popoverEl.style.top = targetRect.bottom + offsetTop + 'px';
93 popoverEl.style.left = targetRect.left - widthDifference / 2 - offsetLeft + 'px';
94
95 // 16px to compensate for the arrow width.
96 popoverEl.style.setProperty('--popover-arrow-offset-end', (popoverRect.width - 16) / 2 + 'px');
97 };
98
99 /**
100 * Hide Popover
101 */
102 var hidePopover = function hidePopover() {
103 popoverEl.style.display = 'none';
104 popoverEl.setAttribute('aria-expanded', false);
105 };
106
107 /**
108 * Handle the Popover's hover functionality
109 */
110 var handlePopoverHover = function handlePopoverHover() {
111 var hideOnMouseOut = true,
112 timeOut = null;
113
114 // Show popover on hover of the target
115 target.addEventListener('mouseover', function () {
116 hideOnMouseOut = true;
117 showPopover();
118 });
119
120 // Hide popover when not overing over the target or the popover itself
121 target.addEventListener('mouseleave', function () {
122 timeOut = setTimeout(function () {
123 if (hideOnMouseOut) {
124 if ('block' === popoverEl.style.display) {
125 hidePopover();
126 }
127 }
128 }, hideAfter);
129 });
130
131 // Don't hide the popover if the user is still hovering over it.
132 popoverEl.addEventListener('mouseover', function () {
133 hideOnMouseOut = false;
134 if (timeOut) {
135 clearTimeout(timeOut);
136 timeOut = null;
137 }
138 });
139
140 // Once the user stops hovering over the popover, hide it.
141 popoverEl.addEventListener('mouseleave', function () {
142 timeOut = setTimeout(function () {
143 if (hideOnMouseOut) {
144 if ('block' === popoverEl.style.display) {
145 hidePopover();
146 }
147 }
148 }, hideAfter);
149 hideOnMouseOut = true;
150 });
151 };
152
153 /**
154 * Handle the Popover's click functionality
155 */
156 var handlePopoverClick = function handlePopoverClick() {
157 var popoverIsActive = false;
158 target.addEventListener('click', function (e) {
159 e.preventDefault();
160 e.stopPropagation();
161 if (popoverIsActive) {
162 hidePopover();
163 popoverIsActive = false;
164 } else {
165 showPopover();
166 popoverIsActive = true;
167 }
168 });
169
170 // Make sure the popover doesn't close when it is clicked on.
171 popoverEl.addEventListener('click', function (e) {
172 e.stopPropagation();
173 });
174
175 // Hide the popover when clicking outside of it.
176 document.body.addEventListener('click', function () {
177 if (popoverIsActive) {
178 hidePopover();
179 popoverIsActive = false;
180 }
181 });
182 };
183 if ('hover' === trigger) {
184 handlePopoverHover();
185 } else if ('click' === trigger) {
186 handlePopoverClick();
187 }
188 }, [targetRef]);
189 var wrapperClasses = 'e-app__popover';
190 if (wrapperClass) {
191 wrapperClasses += ' ' + wrapperClass;
192 }
193 return /*#__PURE__*/_react.default.createElement("div", {
194 className: wrapperClasses,
195 ref: popoverRef
196 }, props.children);
197 }
198 PopoverDialog.propTypes = {
199 targetRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
200 current: PropTypes.any
201 })]).isRequired,
202 trigger: PropTypes.string,
203 direction: PropTypes.string,
204 offsetTop: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
205 offsetLeft: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
206 wrapperClass: PropTypes.string,
207 children: PropTypes.any,
208 hideAfter: PropTypes.number
209 };
210 PopoverDialog.defaultProps = {
211 direction: 'bottom',
212 trigger: 'hover',
213 offsetTop: 10,
214 offsetLeft: 0,
215 hideAfter: 300
216 };
217
218 /***/ }),
219
220 /***/ "../app/modules/onboarding/assets/js/app.js":
221 /*!**************************************************!*\
222 !*** ../app/modules/onboarding/assets/js/app.js ***!
223 \**************************************************/
224 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
225
226
227
228 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
229 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
230 Object.defineProperty(exports, "__esModule", ({
231 value: true
232 }));
233 exports["default"] = App;
234 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
235 var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
236 var _router2 = _interopRequireDefault(__webpack_require__(/*! @elementor/router */ "@elementor/router"));
237 var _context = __webpack_require__(/*! ./context/context */ "../app/modules/onboarding/assets/js/context/context.js");
238 var _account = _interopRequireDefault(__webpack_require__(/*! ./pages/account */ "../app/modules/onboarding/assets/js/pages/account.js"));
239 var _helloTheme = _interopRequireDefault(__webpack_require__(/*! ./pages/hello-theme */ "../app/modules/onboarding/assets/js/pages/hello-theme.js"));
240 var _siteName = _interopRequireDefault(__webpack_require__(/*! ./pages/site-name */ "../app/modules/onboarding/assets/js/pages/site-name.js"));
241 var _siteLogo = _interopRequireDefault(__webpack_require__(/*! ./pages/site-logo */ "../app/modules/onboarding/assets/js/pages/site-logo.js"));
242 var _goodToGo = _interopRequireDefault(__webpack_require__(/*! ./pages/good-to-go */ "../app/modules/onboarding/assets/js/pages/good-to-go.js"));
243 var _uploadAndInstallPro = _interopRequireDefault(__webpack_require__(/*! ./pages/upload-and-install-pro */ "../app/modules/onboarding/assets/js/pages/upload-and-install-pro.js"));
244 var _chooseFeatures = _interopRequireDefault(__webpack_require__(/*! ./pages/choose-features */ "../app/modules/onboarding/assets/js/pages/choose-features.js"));
245 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
246 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
247 function App() {
248 // Send an AJAX request to update the database option which makes sure the Onboarding process only runs once,
249 // for new Elementor sites.
250 (0, _react.useEffect)(function () {
251 // This is to prevent dark theme in onboarding app from the frontend and not backend
252 var darkThemeClassName = 'eps-theme-dark';
253 var hasDarkMode = document.body.classList.contains(darkThemeClassName);
254 if (hasDarkMode) {
255 document.body.classList.remove(darkThemeClassName);
256 }
257 if (!elementorAppConfig.onboarding.onboardingAlreadyRan) {
258 var formData = new FormData();
259 formData.append('_nonce', elementorCommon.config.ajax.nonce);
260 formData.append('action', 'elementor_update_onboarding_option');
261 fetch(elementorCommon.config.ajax.url, {
262 method: 'POST',
263 body: formData
264 });
265 }
266 elementorAppConfig.return_url = elementorAppConfig.admin_url;
267 return function () {
268 if (hasDarkMode) {
269 document.body.classList.add(darkThemeClassName);
270 }
271 };
272 }, []);
273 return /*#__PURE__*/_react.default.createElement(_context.ContextProvider, null, /*#__PURE__*/_react.default.createElement(_router.LocationProvider, {
274 history: _router2.default.appHistory
275 }, /*#__PURE__*/_react.default.createElement(_router.Router, null, /*#__PURE__*/_react.default.createElement(_account.default, {
276 default: true
277 }), /*#__PURE__*/_react.default.createElement(_helloTheme.default, {
278 path: "hello"
279 }), /*#__PURE__*/_react.default.createElement(_chooseFeatures.default, {
280 path: "chooseFeatures"
281 }), /*#__PURE__*/_react.default.createElement(_siteName.default, {
282 path: "siteName"
283 }), /*#__PURE__*/_react.default.createElement(_siteLogo.default, {
284 path: "siteLogo"
285 }), /*#__PURE__*/_react.default.createElement(_goodToGo.default, {
286 path: "goodToGo"
287 }), /*#__PURE__*/_react.default.createElement(_uploadAndInstallPro.default, {
288 path: "uploadAndInstallPro"
289 }))));
290 }
291
292 /***/ }),
293
294 /***/ "../app/modules/onboarding/assets/js/components/button.js":
295 /*!****************************************************************!*\
296 !*** ../app/modules/onboarding/assets/js/components/button.js ***!
297 \****************************************************************/
298 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
299
300 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
301
302
303 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
304 Object.defineProperty(exports, "__esModule", ({
305 value: true
306 }));
307 exports["default"] = Button;
308 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
309 function Button(props) {
310 var buttonSettings = props.buttonSettings,
311 type = props.type;
312 var buttonClasses = 'e-onboarding__button';
313 if (type) {
314 buttonClasses += " e-onboarding__button-".concat(type);
315 }
316 if (buttonSettings.className) {
317 buttonSettings.className += ' ' + buttonClasses;
318 } else {
319 buttonSettings.className = buttonClasses;
320 }
321 if (buttonSettings.href) {
322 return /*#__PURE__*/_react.default.createElement("a", buttonSettings, buttonSettings.text);
323 }
324 return /*#__PURE__*/_react.default.createElement("div", buttonSettings, buttonSettings.text);
325 }
326 Button.propTypes = {
327 buttonSettings: PropTypes.object.isRequired,
328 type: PropTypes.string
329 };
330
331 /***/ }),
332
333 /***/ "../app/modules/onboarding/assets/js/components/card.js":
334 /*!**************************************************************!*\
335 !*** ../app/modules/onboarding/assets/js/components/card.js ***!
336 \**************************************************************/
337 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
338
339 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
340
341
342 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
343 Object.defineProperty(exports, "__esModule", ({
344 value: true
345 }));
346 exports["default"] = Card;
347 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
348 function Card(_ref) {
349 var image = _ref.image,
350 imageAlt = _ref.imageAlt,
351 text = _ref.text,
352 link = _ref.link,
353 name = _ref.name,
354 clickAction = _ref.clickAction;
355 var onClick = function onClick() {
356 elementorCommon.events.dispatchEvent({
357 event: 'starting canvas click',
358 version: '',
359 details: {
360 placement: elementorAppConfig.onboarding.eventPlacement,
361 selection: name
362 }
363 });
364 if (clickAction) {
365 clickAction();
366 }
367 };
368 return /*#__PURE__*/_react.default.createElement("a", {
369 target: "_self",
370 className: "e-onboarding__card",
371 href: link,
372 onClick: onClick
373 }, /*#__PURE__*/_react.default.createElement("img", {
374 className: "e-onboarding__card-image",
375 src: image,
376 alt: imageAlt
377 }), /*#__PURE__*/_react.default.createElement("div", {
378 className: "e-onboarding__card-text"
379 }, text));
380 }
381 Card.propTypes = {
382 image: PropTypes.string.isRequired,
383 imageAlt: PropTypes.string.isRequired,
384 text: PropTypes.string.isRequired,
385 link: PropTypes.string.isRequired,
386 name: PropTypes.string.isRequired,
387 clickAction: PropTypes.func
388 };
389
390 /***/ }),
391
392 /***/ "../app/modules/onboarding/assets/js/components/checklist-item.js":
393 /*!************************************************************************!*\
394 !*** ../app/modules/onboarding/assets/js/components/checklist-item.js ***!
395 \************************************************************************/
396 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
397
398 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
399
400
401 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
402 Object.defineProperty(exports, "__esModule", ({
403 value: true
404 }));
405 exports["default"] = ChecklistItem;
406 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
407 function ChecklistItem(props) {
408 return /*#__PURE__*/_react.default.createElement("li", {
409 className: "e-onboarding__checklist-item"
410 }, /*#__PURE__*/_react.default.createElement("i", {
411 className: "eicon-check-circle"
412 }), props.children);
413 }
414 ChecklistItem.propTypes = {
415 children: PropTypes.string
416 };
417
418 /***/ }),
419
420 /***/ "../app/modules/onboarding/assets/js/components/checklist.js":
421 /*!*******************************************************************!*\
422 !*** ../app/modules/onboarding/assets/js/components/checklist.js ***!
423 \*******************************************************************/
424 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
425
426 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
427
428
429 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
430 Object.defineProperty(exports, "__esModule", ({
431 value: true
432 }));
433 exports["default"] = Checklist;
434 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
435 function Checklist(props) {
436 return /*#__PURE__*/_react.default.createElement("ul", {
437 className: "e-onboarding__checklist"
438 }, props.children);
439 }
440 Checklist.propTypes = {
441 children: PropTypes.any.isRequired
442 };
443
444 /***/ }),
445
446 /***/ "../app/modules/onboarding/assets/js/components/go-pro-popover.js":
447 /*!************************************************************************!*\
448 !*** ../app/modules/onboarding/assets/js/components/go-pro-popover.js ***!
449 \************************************************************************/
450 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
451
452 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
453 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
454
455
456 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
457 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
458 Object.defineProperty(exports, "__esModule", ({
459 value: true
460 }));
461 exports["default"] = GoProPopover;
462 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
463 var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
464 var _popoverDialog = _interopRequireDefault(__webpack_require__(/*! elementor-app/ui/popover-dialog/popover-dialog */ "../app/assets/js/ui/popover-dialog/popover-dialog.js"));
465 var _checklist = _interopRequireDefault(__webpack_require__(/*! ./checklist */ "../app/modules/onboarding/assets/js/components/checklist.js"));
466 var _checklistItem = _interopRequireDefault(__webpack_require__(/*! ./checklist-item */ "../app/modules/onboarding/assets/js/components/checklist-item.js"));
467 var _button = _interopRequireDefault(__webpack_require__(/*! ./button */ "../app/modules/onboarding/assets/js/components/button.js"));
468 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
469 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
470 function GoProPopover(props) {
471 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
472 state = _useContext.state,
473 updateState = _useContext.updateState;
474
475 // Handle the Pro Upload popup window.
476 var alreadyHaveProButtonRef = (0, _react.useCallback)(function (alreadyHaveProButton) {
477 if (!alreadyHaveProButton) {
478 return;
479 }
480 alreadyHaveProButton.addEventListener('click', function (event) {
481 event.preventDefault();
482 elementorCommon.events.dispatchEvent({
483 event: 'already have pro',
484 version: '',
485 details: {
486 placement: elementorAppConfig.onboarding.eventPlacement,
487 step: state.currentStep
488 }
489 });
490
491 // Open the Pro Upload screen in a popup.
492 window.open(alreadyHaveProButton.href + '&mode=popup', 'elementorUploadPro', "toolbar=no, menubar=no, width=728, height=531, top=100, left=100");
493
494 // Run the callback for when the upload succeeds.
495 elementorCommon.elements.$body.on('elementor/upload-and-install-pro/success', function () {
496 updateState({
497 hasPro: true,
498 proNotice: {
499 type: 'success',
500 icon: 'eicon-check-circle-o',
501 message: __('Elementor Pro has been successfully installed.', 'elementor')
502 }
503 });
504 });
505 });
506 }, []);
507
508 // The buttonsConfig prop is an array of objects. To find the 'Upgrade Now' button, we need to iterate over the object.
509 var goProButton = props.buttonsConfig.find(function (button) {
510 return 'go-pro' === button.id;
511 }),
512 getElProButton = {
513 text: elementorAppConfig.onboarding.experiment ? __('Upgrade now', 'elementor') : __('Upgrade Now', 'elementor'),
514 className: 'e-onboarding__go-pro-cta',
515 target: '_blank',
516 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,
517 tabIndex: 0,
518 onClick: function onClick() {
519 elementorCommon.events.dispatchEvent({
520 event: 'get elementor pro',
521 version: '',
522 details: {
523 placement: elementorAppConfig.onboarding.eventPlacement,
524 step: state.currentStep
525 }
526 });
527 }
528 };
529 return /*#__PURE__*/_react.default.createElement(_popoverDialog.default, {
530 targetRef: goProButton.elRef,
531 wrapperClass: "e-onboarding__go-pro"
532 }, /*#__PURE__*/_react.default.createElement("div", {
533 className: "e-onboarding__go-pro-content"
534 }, /*#__PURE__*/_react.default.createElement("h2", {
535 className: "e-onboarding__go-pro-title"
536 }, __('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", {
537 className: "e-onboarding__go-pro-paragraph"
538 }, __('And so much more!', 'elementor')), /*#__PURE__*/_react.default.createElement("div", {
539 className: "e-onboarding__go-pro-paragraph"
540 }, /*#__PURE__*/_react.default.createElement(_button.default, {
541 buttonSettings: getElProButton
542 })), /*#__PURE__*/_react.default.createElement("div", {
543 className: "e-onboarding__go-pro-paragraph"
544 }, /*#__PURE__*/_react.default.createElement("a", {
545 tabIndex: "0",
546 className: "e-onboarding__go-pro-already-have",
547 ref: alreadyHaveProButtonRef,
548 href: elementorAppConfig.onboarding.urls.uploadPro,
549 rel: "opener"
550 }, __('Already have Elementor Pro?', 'elementor')))));
551 }
552 GoProPopover.propTypes = {
553 buttonsConfig: PropTypes.array.isRequired
554 };
555
556 /***/ }),
557
558 /***/ "../app/modules/onboarding/assets/js/components/layout/footer-buttons.js":
559 /*!*******************************************************************************!*\
560 !*** ../app/modules/onboarding/assets/js/components/layout/footer-buttons.js ***!
561 \*******************************************************************************/
562 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
563
564 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
565
566
567 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
568 Object.defineProperty(exports, "__esModule", ({
569 value: true
570 }));
571 exports["default"] = FooterButtons;
572 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
573 var _grid = _interopRequireDefault(__webpack_require__(/*! elementor-app/ui/grid/grid */ "../app/assets/js/ui/grid/grid.js"));
574 var _button = _interopRequireDefault(__webpack_require__(/*! ../button */ "../app/modules/onboarding/assets/js/components/button.js"));
575 var _skipButton = _interopRequireDefault(__webpack_require__(/*! ../skip-button */ "../app/modules/onboarding/assets/js/components/skip-button.js"));
576 function FooterButtons(_ref) {
577 var actionButton = _ref.actionButton,
578 skipButton = _ref.skipButton,
579 className = _ref.className;
580 var classNames = 'e-onboarding__footer';
581 if (className) {
582 classNames += ' ' + className;
583 }
584 return /*#__PURE__*/_react.default.createElement(_grid.default, {
585 container: true,
586 alignItems: "center",
587 justify: "space-between",
588 className: classNames
589 }, actionButton && /*#__PURE__*/_react.default.createElement(_button.default, {
590 buttonSettings: actionButton,
591 type: "action"
592 }), skipButton && /*#__PURE__*/_react.default.createElement(_skipButton.default, {
593 button: skipButton
594 }));
595 }
596 FooterButtons.propTypes = {
597 actionButton: PropTypes.object,
598 skipButton: PropTypes.object,
599 className: PropTypes.string
600 };
601
602 /***/ }),
603
604 /***/ "../app/modules/onboarding/assets/js/components/layout/header.js":
605 /*!***********************************************************************!*\
606 !*** ../app/modules/onboarding/assets/js/components/layout/header.js ***!
607 \***********************************************************************/
608 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
609
610 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
611 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
612
613
614 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
615 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
616 Object.defineProperty(exports, "__esModule", ({
617 value: true
618 }));
619 exports["default"] = Header;
620 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
621 var _context = __webpack_require__(/*! ../../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
622 var _grid = _interopRequireDefault(__webpack_require__(/*! elementor-app/ui/grid/grid */ "../app/assets/js/ui/grid/grid.js"));
623 var _goProPopover = _interopRequireDefault(__webpack_require__(/*! ../go-pro-popover */ "../app/modules/onboarding/assets/js/components/go-pro-popover.js"));
624 var _headerButtons = _interopRequireDefault(__webpack_require__(/*! elementor-app/layout/header-buttons */ "../app/assets/js/layout/header-buttons.js"));
625 var _usePageTitle = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-page-title */ "../app/assets/js/hooks/use-page-title.js"));
626 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
627 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
628 function Header(props) {
629 (0, _usePageTitle.default)({
630 title: props.title
631 });
632 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
633 state = _useContext.state;
634 var onClose = function onClose() {
635 elementorCommon.events.dispatchEvent({
636 event: 'close modal',
637 version: '',
638 details: {
639 placement: elementorAppConfig.onboarding.eventPlacement,
640 step: state.currentStep
641 }
642 });
643 window.top.location = elementorAppConfig.admin_url;
644 };
645 return /*#__PURE__*/_react.default.createElement(_grid.default, {
646 container: true,
647 alignItems: "center",
648 justify: "space-between",
649 className: "eps-app__header e-onboarding__header"
650 }, /*#__PURE__*/_react.default.createElement("div", {
651 className: "eps-app__logo-title-wrapper e-onboarding__header-logo"
652 }, /*#__PURE__*/_react.default.createElement("i", {
653 className: "eps-app__logo eicon-elementor"
654 }), /*#__PURE__*/_react.default.createElement("img", {
655 src: elementorCommon.config.urls.assets + 'images/logo-platform.svg',
656 alt: __('Elementor Logo', 'elementor')
657 })), /*#__PURE__*/_react.default.createElement(_headerButtons.default, {
658 buttons: props.buttons,
659 onClose: onClose
660 }), !state.hasPro && /*#__PURE__*/_react.default.createElement(_goProPopover.default, {
661 buttonsConfig: props.buttons
662 }));
663 }
664 Header.propTypes = {
665 title: PropTypes.string,
666 buttons: PropTypes.arrayOf(PropTypes.object)
667 };
668 Header.defaultProps = {
669 buttons: []
670 };
671
672 /***/ }),
673
674 /***/ "../app/modules/onboarding/assets/js/components/layout/layout.js":
675 /*!***********************************************************************!*\
676 !*** ../app/modules/onboarding/assets/js/components/layout/layout.js ***!
677 \***********************************************************************/
678 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
679
680 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
681 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
682
683
684 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
685 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
686 Object.defineProperty(exports, "__esModule", ({
687 value: true
688 }));
689 exports["default"] = Layout;
690 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
691 var _context = __webpack_require__(/*! ../../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
692 var _header = _interopRequireDefault(__webpack_require__(/*! ./header */ "../app/modules/onboarding/assets/js/components/layout/header.js"));
693 var _progressBar = _interopRequireDefault(__webpack_require__(/*! ../progress-bar/progress-bar */ "../app/modules/onboarding/assets/js/components/progress-bar/progress-bar.js"));
694 var _content = _interopRequireDefault(__webpack_require__(/*! ../../../../../../assets/js/layout/content */ "../app/assets/js/layout/content.js"));
695 var _connect = _interopRequireDefault(__webpack_require__(/*! ../../utils/connect */ "../app/modules/onboarding/assets/js/utils/connect.js"));
696 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
697 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
698 function Layout(props) {
699 (0, _react.useEffect)(function () {
700 // Send modal load event for current step.
701 elementorCommon.events.dispatchEvent({
702 event: 'modal load',
703 version: '',
704 details: {
705 placement: elementorAppConfig.onboarding.eventPlacement,
706 step: props.pageId,
707 user_state: elementorCommon.config.library_connect.is_connected ? 'logged' : 'anon'
708 }
709 });
710 updateState({
711 currentStep: props.pageId,
712 nextStep: props.nextStep || '',
713 proNotice: null
714 });
715 }, [props.pageId]);
716 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
717 state = _useContext.state,
718 updateState = _useContext.updateState,
719 headerButtons = [],
720 goProButtonRef = (0, _react.useRef)(),
721 createAccountButton = {
722 id: 'create-account',
723 text: __('Create Account', 'elementor'),
724 hideText: false,
725 elRef: (0, _react.useRef)(),
726 url: elementorAppConfig.onboarding.urls.signUp + elementorAppConfig.onboarding.utms.connectTopBar,
727 target: '_blank',
728 rel: 'opener',
729 onClick: function onClick() {
730 elementorCommon.events.dispatchEvent({
731 event: 'create account',
732 version: '',
733 details: {
734 placement: elementorAppConfig.onboarding.eventPlacement,
735 step: state.currentStep,
736 source: 'header'
737 }
738 });
739 }
740 };
741 if (state.isLibraryConnected) {
742 headerButtons.push({
743 id: 'my-elementor',
744 text: __('My Elementor', 'elementor'),
745 hideText: false,
746 icon: 'eicon-user-circle-o',
747 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,
748 target: '_blank',
749 onClick: function onClick() {
750 elementorCommon.events.dispatchEvent({
751 event: 'my elementor click',
752 version: '',
753 details: {
754 placement: elementorAppConfig.onboarding.eventPlacement,
755 step: state.currentStep,
756 source: 'header'
757 }
758 });
759 }
760 });
761 } else {
762 headerButtons.push(createAccountButton);
763 }
764 if (!state.hasPro) {
765 headerButtons.push({
766 id: 'go-pro',
767 text: __('Upgrade', 'elementor'),
768 hideText: false,
769 className: 'eps-button__go-pro-btn',
770 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,
771 target: '_blank',
772 elRef: goProButtonRef,
773 onClick: function onClick() {
774 elementorCommon.events.dispatchEvent({
775 event: 'go pro',
776 version: '',
777 details: {
778 placement: elementorAppConfig.onboarding.eventPlacement,
779 step: state.currentStep
780 }
781 });
782 }
783 });
784 }
785 return /*#__PURE__*/_react.default.createElement("div", {
786 className: "eps-app__lightbox"
787 }, /*#__PURE__*/_react.default.createElement("div", {
788 className: "eps-app e-onboarding"
789 }, !state.isLibraryConnected && /*#__PURE__*/_react.default.createElement(_connect.default, {
790 buttonRef: createAccountButton.elRef
791 }), /*#__PURE__*/_react.default.createElement(_header.default, {
792 title: __('Getting Started', 'elementor'),
793 buttons: headerButtons
794 }), /*#__PURE__*/_react.default.createElement("div", {
795 className: 'eps-app__main e-onboarding__page-' + props.pageId
796 }, /*#__PURE__*/_react.default.createElement(_content.default, {
797 className: "e-onboarding__content"
798 }, /*#__PURE__*/_react.default.createElement(_progressBar.default, null), props.children))));
799 }
800 Layout.propTypes = {
801 pageId: PropTypes.string.isRequired,
802 nextStep: PropTypes.string,
803 className: PropTypes.string,
804 children: PropTypes.any.isRequired
805 };
806
807 /***/ }),
808
809 /***/ "../app/modules/onboarding/assets/js/components/layout/page-content-layout.js":
810 /*!************************************************************************************!*\
811 !*** ../app/modules/onboarding/assets/js/components/layout/page-content-layout.js ***!
812 \************************************************************************************/
813 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
814
815 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
816
817
818 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
819 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
820 Object.defineProperty(exports, "__esModule", ({
821 value: true
822 }));
823 exports["default"] = PageContentLayout;
824 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
825 var _context = __webpack_require__(/*! ../../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
826 var _grid = _interopRequireDefault(__webpack_require__(/*! elementor-app/ui/grid/grid */ "../app/assets/js/ui/grid/grid.js"));
827 var _notice = _interopRequireDefault(__webpack_require__(/*! ../notice */ "../app/modules/onboarding/assets/js/components/notice.js"));
828 var _footerButtons = _interopRequireDefault(__webpack_require__(/*! ./footer-buttons */ "../app/modules/onboarding/assets/js/components/layout/footer-buttons.js"));
829 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
830 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
831 function PageContentLayout(props) {
832 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
833 state = _useContext.state;
834 var printNotices = function printNotices() {
835 return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.noticeState && /*#__PURE__*/_react.default.createElement(_notice.default, {
836 noticeState: props.noticeState
837 }), state.proNotice && /*#__PURE__*/_react.default.createElement(_notice.default, {
838 noticeState: state.proNotice
839 }));
840 };
841 return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_grid.default, {
842 container: true,
843 alignItems: "center",
844 justify: "space-between",
845 className: "e-onboarding__page-content"
846 }, /*#__PURE__*/_react.default.createElement("div", {
847 className: "e-onboarding__page-content-start"
848 }, /*#__PURE__*/_react.default.createElement("h1", {
849 className: "e-onboarding__page-content-section-title"
850 }, 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", {
851 className: "e-onboarding__page-content-section-text"
852 }, props.children)), /*#__PURE__*/_react.default.createElement("div", {
853 className: "e-onboarding__page-content-end"
854 }, /*#__PURE__*/_react.default.createElement("img", {
855 src: props.image,
856 alt: "Information"
857 }))), props.noticeState && /*#__PURE__*/_react.default.createElement("div", {
858 className: "e-onboarding__notice-container"
859 }, props.noticeState || state.proNotice ? printNotices() : /*#__PURE__*/_react.default.createElement("div", {
860 className: "e-onboarding__notice-empty-spacer"
861 })), /*#__PURE__*/_react.default.createElement(_footerButtons.default, {
862 actionButton: props.actionButton,
863 skipButton: props.skipButton
864 }));
865 }
866 PageContentLayout.propTypes = {
867 title: PropTypes.string,
868 secondLineTitle: PropTypes.string,
869 children: PropTypes.any,
870 image: PropTypes.string,
871 actionButton: PropTypes.object,
872 skipButton: PropTypes.object,
873 noticeState: PropTypes.any
874 };
875
876 /***/ }),
877
878 /***/ "../app/modules/onboarding/assets/js/components/message.js":
879 /*!*****************************************************************!*\
880 !*** ../app/modules/onboarding/assets/js/components/message.js ***!
881 \*****************************************************************/
882 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
883
884 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
885 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
886
887
888 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
889 Object.defineProperty(exports, "__esModule", ({
890 value: true
891 }));
892 exports["default"] = Message;
893 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
894 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
895 function Message(_ref) {
896 var tier = _ref.tier;
897 /* Translators: %s: Plan name */
898 var translatedString = __('Based on the features you chose, we recommend the %s plan, or higher', 'elementor');
899 var _translatedString$spl = translatedString.split('%s'),
900 _translatedString$spl2 = (0, _slicedToArray2.default)(_translatedString$spl, 2),
901 messageFirstPart = _translatedString$spl2[0],
902 messageSecondPart = _translatedString$spl2[1];
903 return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, messageFirstPart, /*#__PURE__*/_react.default.createElement("strong", null, tier), messageSecondPart);
904 }
905 Message.propTypes = {
906 tier: PropTypes.string.isRequired
907 };
908
909 /***/ }),
910
911 /***/ "../app/modules/onboarding/assets/js/components/notice.js":
912 /*!****************************************************************!*\
913 !*** ../app/modules/onboarding/assets/js/components/notice.js ***!
914 \****************************************************************/
915 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
916
917 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
918
919
920 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
921 Object.defineProperty(exports, "__esModule", ({
922 value: true
923 }));
924 exports["default"] = Notice;
925 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
926 function Notice(props) {
927 return /*#__PURE__*/_react.default.createElement("div", {
928 className: "e-onboarding__notice e-onboarding__notice--".concat(props.noticeState.type)
929 }, /*#__PURE__*/_react.default.createElement("i", {
930 className: props.noticeState.icon
931 }), /*#__PURE__*/_react.default.createElement("span", {
932 className: "e-onboarding__notice-text"
933 }, props.noticeState.message));
934 }
935 Notice.propTypes = {
936 noticeState: PropTypes.object
937 };
938
939 /***/ }),
940
941 /***/ "../app/modules/onboarding/assets/js/components/progress-bar/progress-bar-item.js":
942 /*!****************************************************************************************!*\
943 !*** ../app/modules/onboarding/assets/js/components/progress-bar/progress-bar-item.js ***!
944 \****************************************************************************************/
945 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
946
947 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
948
949
950 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
951 Object.defineProperty(exports, "__esModule", ({
952 value: true
953 }));
954 exports["default"] = ProgressBarItem;
955 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
956 var _context = __webpack_require__(/*! ../../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
957 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
958 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
959 function ProgressBarItem(props) {
960 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
961 state = _useContext.state,
962 stepCompleted = 'completed' === state.steps[props.id],
963 stepSkipped = 'skipped' === state.steps[props.id];
964 var itemClasses = 'e-onboarding__progress-bar-item';
965 if (props.id === state.currentStep) {
966 itemClasses += ' e-onboarding__progress-bar-item--active';
967 } else if (stepCompleted) {
968 itemClasses += ' e-onboarding__progress-bar-item--completed';
969 } else if (stepSkipped) {
970 itemClasses += ' e-onboarding__progress-bar-item--skipped';
971 }
972 return (
973 /*#__PURE__*/
974 // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
975 _react.default.createElement("div", {
976 onClick: props.onClick,
977 className: itemClasses
978 }, /*#__PURE__*/_react.default.createElement("div", {
979 className: "e-onboarding__progress-bar-item-icon"
980 }, stepCompleted ? /*#__PURE__*/_react.default.createElement("i", {
981 className: "eicon-check"
982 }) : props.index + 1), props.title)
983 );
984 }
985 ProgressBarItem.propTypes = {
986 index: PropTypes.number.isRequired,
987 id: PropTypes.string.isRequired,
988 title: PropTypes.string.isRequired,
989 route: PropTypes.string,
990 onClick: PropTypes.func
991 };
992
993 /***/ }),
994
995 /***/ "../app/modules/onboarding/assets/js/components/progress-bar/progress-bar.js":
996 /*!***********************************************************************************!*\
997 !*** ../app/modules/onboarding/assets/js/components/progress-bar/progress-bar.js ***!
998 \***********************************************************************************/
999 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1000
1001 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
1002
1003
1004 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1005 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
1006 Object.defineProperty(exports, "__esModule", ({
1007 value: true
1008 }));
1009 exports["default"] = ProgressBar;
1010 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
1011 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
1012 var _context = __webpack_require__(/*! ../../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
1013 var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
1014 var _progressBarItem = _interopRequireDefault(__webpack_require__(/*! ./progress-bar-item */ "../app/modules/onboarding/assets/js/components/progress-bar/progress-bar-item.js"));
1015 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
1016 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
1017 function ProgressBar() {
1018 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
1019 state = _useContext.state,
1020 navigate = (0, _router.useNavigate)(),
1021 progressBarItemsConfig = [{
1022 id: 'account',
1023 title: __('Elementor Account', 'elementor'),
1024 route: 'account'
1025 }];
1026
1027 // If hello theme is already activated when onboarding starts, don't show this step in the onboarding.
1028 if (!elementorAppConfig.onboarding.helloActivated) {
1029 progressBarItemsConfig.push({
1030 id: 'hello',
1031 title: __('Hello Theme', 'elementor'),
1032 route: 'hello'
1033 });
1034 }
1035 if (elementorAppConfig.onboarding.experiment) {
1036 progressBarItemsConfig.push({
1037 id: 'chooseFeatures',
1038 title: __('Choose Features', 'elementor'),
1039 route: 'chooseFeatures'
1040 });
1041 } else {
1042 progressBarItemsConfig.push({
1043 id: 'siteName',
1044 title: __('Site Name', 'elementor'),
1045 route: 'site-name'
1046 }, {
1047 id: 'siteLogo',
1048 title: __('Site Logo', 'elementor'),
1049 route: 'site-logo'
1050 });
1051 }
1052 progressBarItemsConfig.push({
1053 id: 'goodToGo',
1054 title: __('Good to Go', 'elementor'),
1055 route: 'good-to-go'
1056 });
1057 var progressBarItems = progressBarItemsConfig.map(function (itemConfig, index) {
1058 itemConfig.index = index;
1059 if (state.steps[itemConfig.id]) {
1060 itemConfig.onClick = function () {
1061 elementorCommon.events.dispatchEvent({
1062 event: 'step click',
1063 version: '',
1064 details: {
1065 placement: elementorAppConfig.onboarding.eventPlacement,
1066 step: state.currentStep,
1067 next_step: itemConfig.id
1068 }
1069 });
1070 navigate('/onboarding/' + itemConfig.id);
1071 };
1072 }
1073 return /*#__PURE__*/_react.default.createElement(_progressBarItem.default, (0, _extends2.default)({
1074 key: itemConfig.id
1075 }, itemConfig));
1076 });
1077 return /*#__PURE__*/_react.default.createElement("div", {
1078 className: "e-onboarding__progress-bar"
1079 }, progressBarItems);
1080 }
1081
1082 /***/ }),
1083
1084 /***/ "../app/modules/onboarding/assets/js/components/skip-button.js":
1085 /*!*********************************************************************!*\
1086 !*** ../app/modules/onboarding/assets/js/components/skip-button.js ***!
1087 \*********************************************************************/
1088 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1089
1090 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
1091
1092
1093 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1094 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
1095 Object.defineProperty(exports, "__esModule", ({
1096 value: true
1097 }));
1098 exports["default"] = SkipButton;
1099 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
1100 var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
1101 var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
1102 var _button = _interopRequireDefault(__webpack_require__(/*! ./button */ "../app/modules/onboarding/assets/js/components/button.js"));
1103 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
1104 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
1105 function SkipButton(props) {
1106 var button = props.button,
1107 className = props.className,
1108 _useContext = (0, _react.useContext)(_context.OnboardingContext),
1109 state = _useContext.state,
1110 updateState = _useContext.updateState,
1111 navigate = (0, _router.useNavigate)(),
1112 skipStep = function skipStep() {
1113 var mutatedState = JSON.parse(JSON.stringify(state));
1114 mutatedState.steps[state.currentStep] = 'skipped';
1115 updateState(mutatedState);
1116 if (state.nextStep) {
1117 navigate('onboarding/' + state.nextStep);
1118 }
1119 },
1120 action = button.action || skipStep;
1121
1122 // Make sure the 'action' prop doesn't get printed on the button markup which causes an error.
1123 delete button.action;
1124
1125 // If the button is a link, no onClick functionality should be added.
1126 button.onClick = function () {
1127 elementorCommon.events.dispatchEvent({
1128 event: 'skip',
1129 version: '',
1130 details: {
1131 placement: elementorAppConfig.onboarding.eventPlacement,
1132 step: state.currentStep
1133 }
1134 });
1135 if (!button.href) {
1136 action();
1137 }
1138 };
1139 return /*#__PURE__*/_react.default.createElement(_button.default, {
1140 buttonSettings: button,
1141 className: className,
1142 type: "skip"
1143 });
1144 }
1145 SkipButton.propTypes = {
1146 button: PropTypes.object.isRequired,
1147 className: PropTypes.string
1148 };
1149
1150 /***/ }),
1151
1152 /***/ "../app/modules/onboarding/assets/js/context/context.js":
1153 /*!**************************************************************!*\
1154 !*** ../app/modules/onboarding/assets/js/context/context.js ***!
1155 \**************************************************************/
1156 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1157
1158 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
1159
1160
1161 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1162 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
1163 Object.defineProperty(exports, "__esModule", ({
1164 value: true
1165 }));
1166 exports.ContextProvider = ContextProvider;
1167 exports.OnboardingContext = void 0;
1168 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
1169 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
1170 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
1171 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
1172 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
1173 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; }
1174 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; }
1175 var OnboardingContext = exports.OnboardingContext = (0, _react.createContext)({});
1176 function ContextProvider(props) {
1177 var onboardingConfig = elementorAppConfig.onboarding,
1178 initialState = {
1179 // eslint-disable-next-line camelcase
1180 hasPro: elementorAppConfig.hasPro,
1181 isLibraryConnected: onboardingConfig.isLibraryConnected,
1182 isHelloThemeInstalled: onboardingConfig.helloInstalled,
1183 isHelloThemeActivated: onboardingConfig.helloActivated,
1184 siteName: onboardingConfig.siteName,
1185 siteLogo: onboardingConfig.siteLogo,
1186 proNotice: '',
1187 currentStep: '',
1188 nextStep: '',
1189 steps: {
1190 account: false,
1191 hello: false,
1192 chooseFeatures: false,
1193 siteName: false,
1194 siteLogo: false,
1195 goodToGo: false
1196 }
1197 },
1198 _useState = (0, _react.useState)(initialState),
1199 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
1200 state = _useState2[0],
1201 setState = _useState2[1],
1202 updateState = (0, _react.useCallback)(function (newState) {
1203 setState(function (prev) {
1204 return _objectSpread(_objectSpread({}, prev), newState);
1205 });
1206 }, [setState]),
1207 getStateObjectToUpdate = function getStateObjectToUpdate(stateObject, mainChangedPropertyKey, subChangedPropertyKey, subChangedPropertyValue) {
1208 var mutatedStateCopy = JSON.parse(JSON.stringify(stateObject));
1209 mutatedStateCopy[mainChangedPropertyKey][subChangedPropertyKey] = subChangedPropertyValue;
1210 return mutatedStateCopy;
1211 };
1212 return /*#__PURE__*/_react.default.createElement(OnboardingContext.Provider, {
1213 value: {
1214 state: state,
1215 setState: setState,
1216 updateState: updateState,
1217 getStateObjectToUpdate: getStateObjectToUpdate
1218 }
1219 }, props.children);
1220 }
1221 ContextProvider.propTypes = {
1222 children: PropTypes.any
1223 };
1224
1225 /***/ }),
1226
1227 /***/ "../app/modules/onboarding/assets/js/pages/account.js":
1228 /*!************************************************************!*\
1229 !*** ../app/modules/onboarding/assets/js/pages/account.js ***!
1230 \************************************************************/
1231 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1232
1233 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
1234
1235
1236 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1237 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
1238 Object.defineProperty(exports, "__esModule", ({
1239 value: true
1240 }));
1241 exports["default"] = Account;
1242 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
1243 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
1244 var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
1245 var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
1246 var _connect = _interopRequireDefault(__webpack_require__(/*! ../utils/connect */ "../app/modules/onboarding/assets/js/utils/connect.js"));
1247 var _layout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/layout */ "../app/modules/onboarding/assets/js/components/layout/layout.js"));
1248 var _pageContentLayout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/page-content-layout */ "../app/modules/onboarding/assets/js/components/layout/page-content-layout.js"));
1249 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
1250 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
1251 function Account() {
1252 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
1253 state = _useContext.state,
1254 updateState = _useContext.updateState,
1255 getStateObjectToUpdate = _useContext.getStateObjectToUpdate,
1256 _useState = (0, _react.useState)(null),
1257 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
1258 noticeState = _useState2[0],
1259 setNoticeState = _useState2[1],
1260 nextStep = getNextStep(),
1261 navigate = (0, _router.useNavigate)(),
1262 pageId = 'account',
1263 actionButtonRef = (0, _react.useRef)(),
1264 alreadyHaveAccountLinkRef = (0, _react.useRef)();
1265 var skipButton;
1266 if ('completed' !== state.steps[pageId]) {
1267 skipButton = {
1268 text: __('Skip', 'elementor')
1269 };
1270 }
1271 var pageTexts = {};
1272 if (state.isLibraryConnected) {
1273 pageTexts = {
1274 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')),
1275 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')]
1276 };
1277 } else {
1278 pageTexts = elementorAppConfig.onboarding.experiment ? {
1279 firstLine: __('Once you connect your Elementor account, you can choose from dozens of professional templates and manage your site with the My Elementor dashboard.', 'elementor'),
1280 listItems: []
1281 } : {
1282 firstLine: __('To get the most out of Elementor, we’ll connect your account.', 'elementor') + ' ' + __('Then you can:', 'elementor'),
1283 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')]
1284 };
1285 }
1286
1287 // If the user is not connected, the on-click action is handled by the <Connect> component, so there is no onclick
1288 // property.
1289 var actionButton = {
1290 role: 'button'
1291 };
1292 if (state.isLibraryConnected) {
1293 actionButton.text = __('Let’s do it', 'elementor');
1294 actionButton.onClick = function () {
1295 elementorCommon.events.dispatchEvent({
1296 event: 'next',
1297 version: '',
1298 details: {
1299 placement: elementorAppConfig.onboarding.eventPlacement,
1300 step: state.currentStep
1301 }
1302 });
1303 updateState(getStateObjectToUpdate(state, 'steps', pageId, 'completed'));
1304 navigate('onboarding/' + nextStep);
1305 };
1306 } else {
1307 actionButton.text = __('Create my account', 'elementor');
1308 actionButton.href = elementorAppConfig.onboarding.urls.signUp + elementorAppConfig.onboarding.utms.connectCta;
1309 actionButton.ref = actionButtonRef;
1310 actionButton.onClick = function () {
1311 elementorCommon.events.dispatchEvent({
1312 event: 'create account',
1313 version: '',
1314 details: {
1315 placement: elementorAppConfig.onboarding.eventPlacement,
1316 source: 'cta'
1317 }
1318 });
1319 };
1320 }
1321 var connectSuccessCallback = function connectSuccessCallback(data) {
1322 var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
1323 stateToUpdate.isLibraryConnected = true;
1324 elementorCommon.config.library_connect.is_connected = true;
1325 elementorCommon.config.library_connect.current_access_level = data.kits_access_level || data.access_level || 0;
1326 elementorCommon.config.library_connect.current_access_tier = data.access_tier;
1327 updateState(stateToUpdate);
1328 elementorCommon.events.dispatchEvent({
1329 event: 'indication prompt',
1330 version: '',
1331 details: {
1332 placement: elementorAppConfig.onboarding.eventPlacement,
1333 step: state.currentStep,
1334 action_state: 'success',
1335 action: 'connect account'
1336 }
1337 });
1338 setNoticeState({
1339 type: 'success',
1340 icon: 'eicon-check-circle-o',
1341 message: 'Alrighty - your account is connected.'
1342 });
1343 navigate('onboarding/' + nextStep);
1344 };
1345 function getNextStep() {
1346 if (!state.isHelloThemeActivated) {
1347 return 'hello';
1348 }
1349 return elementorAppConfig.onboarding.experiment ? 'chooseFeatures' : 'siteName';
1350 }
1351 var connectFailureCallback = function connectFailureCallback() {
1352 elementorCommon.events.dispatchEvent({
1353 event: 'indication prompt',
1354 version: '',
1355 details: {
1356 placement: elementorAppConfig.onboarding.eventPlacement,
1357 step: state.currentStep,
1358 action_state: 'failure',
1359 action: 'connect account'
1360 }
1361 });
1362 setNoticeState({
1363 type: 'error',
1364 icon: 'eicon-warning',
1365 message: __('Oops, the connection failed. Try again.', 'elementor')
1366 });
1367 navigate('onboarding/' + nextStep);
1368 };
1369 return /*#__PURE__*/_react.default.createElement(_layout.default, {
1370 pageId: pageId,
1371 nextStep: nextStep
1372 }, /*#__PURE__*/_react.default.createElement(_pageContentLayout.default, {
1373 image: elementorCommon.config.urls.assets + 'images/app/onboarding/Illustration_Account.svg',
1374 title: elementorAppConfig.onboarding.experiment ? __('You\'re here!', 'elementor') : __('You\'re here! Let\'s set things up.', 'elementor'),
1375 secondLineTitle: elementorAppConfig.onboarding.experiment ? __(' Let\'s get connected.', 'elementor') : '',
1376 actionButton: actionButton,
1377 skipButton: skipButton,
1378 noticeState: noticeState
1379 }, actionButton.ref && !state.isLibraryConnected && /*#__PURE__*/_react.default.createElement(_connect.default, {
1380 buttonRef: actionButton.ref,
1381 successCallback: function successCallback(data) {
1382 return connectSuccessCallback(data);
1383 },
1384 errorCallback: connectFailureCallback
1385 }), /*#__PURE__*/_react.default.createElement("span", null, pageTexts.firstLine), /*#__PURE__*/_react.default.createElement("ul", null, pageTexts.listItems.map(function (listItem, index) {
1386 return /*#__PURE__*/_react.default.createElement("li", {
1387 key: 'listItem' + index
1388 }, listItem);
1389 }))), !state.isLibraryConnected && /*#__PURE__*/_react.default.createElement("div", {
1390 className: "e-onboarding__footnote"
1391 }, /*#__PURE__*/_react.default.createElement("p", null, __('Already have one?', 'elementor') + ' ', /*#__PURE__*/_react.default.createElement("a", {
1392 ref: alreadyHaveAccountLinkRef,
1393 href: elementorAppConfig.onboarding.urls.connect + elementorAppConfig.onboarding.utms.connectCtaLink,
1394 onClick: function onClick() {
1395 elementorCommon.events.dispatchEvent({
1396 event: 'connect account',
1397 version: '',
1398 details: {
1399 placement: elementorAppConfig.onboarding.eventPlacement
1400 }
1401 });
1402 }
1403 }, __('Connect your account', 'elementor'))), /*#__PURE__*/_react.default.createElement(_connect.default, {
1404 buttonRef: alreadyHaveAccountLinkRef,
1405 successCallback: connectSuccessCallback,
1406 errorCallback: connectFailureCallback
1407 })));
1408 }
1409
1410 /***/ }),
1411
1412 /***/ "../app/modules/onboarding/assets/js/pages/choose-features.js":
1413 /*!********************************************************************!*\
1414 !*** ../app/modules/onboarding/assets/js/pages/choose-features.js ***!
1415 \********************************************************************/
1416 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1417
1418 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
1419
1420
1421 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1422 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
1423 Object.defineProperty(exports, "__esModule", ({
1424 value: true
1425 }));
1426 exports["default"] = ChooseFeatures;
1427 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
1428 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
1429 var _useAjax2 = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-ajax */ "../app/assets/js/hooks/use-ajax.js"));
1430 var _message = _interopRequireDefault(__webpack_require__(/*! ../components/message */ "../app/modules/onboarding/assets/js/components/message.js"));
1431 var _utils = __webpack_require__(/*! ../utils/utils */ "../app/modules/onboarding/assets/js/utils/utils.js");
1432 var _layout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/layout */ "../app/modules/onboarding/assets/js/components/layout/layout.js"));
1433 var _pageContentLayout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/page-content-layout */ "../app/modules/onboarding/assets/js/components/layout/page-content-layout.js"));
1434 var _useButtonAction2 = _interopRequireDefault(__webpack_require__(/*! ../utils/use-button-action */ "../app/modules/onboarding/assets/js/utils/use-button-action.js"));
1435 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
1436 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
1437 function ChooseFeatures() {
1438 var _useAjax = (0, _useAjax2.default)(),
1439 setAjax = _useAjax.setAjax,
1440 tiers = {
1441 advanced: __('Advanced', 'elementor'),
1442 essential: __('Essential', 'elementor')
1443 },
1444 _useState = (0, _react.useState)({
1445 essential: [],
1446 advanced: []
1447 }),
1448 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
1449 selectedFeatures = _useState2[0],
1450 setSelectedFeatures = _useState2[1],
1451 _useState3 = (0, _react.useState)(tiers.essential),
1452 _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
1453 tierName = _useState4[0],
1454 setTierName = _useState4[1],
1455 pageId = 'chooseFeatures',
1456 nextStep = 'goodToGo',
1457 _useButtonAction = (0, _useButtonAction2.default)(pageId, nextStep),
1458 state = _useButtonAction.state,
1459 handleAction = _useButtonAction.handleAction,
1460 actionButton = {
1461 text: __('Upgrade Now', 'elementor'),
1462 href: elementorAppConfig.onboarding.urls.upgrade,
1463 target: '_blank',
1464 onClick: function onClick() {
1465 elementorCommon.events.dispatchEvent({
1466 event: 'next',
1467 version: '',
1468 details: {
1469 placement: elementorAppConfig.onboarding.eventPlacement,
1470 step: state.currentStep
1471 }
1472 });
1473 setAjax({
1474 data: {
1475 action: 'elementor_save_onboarding_features',
1476 data: JSON.stringify({
1477 features: selectedFeatures
1478 })
1479 }
1480 });
1481 handleAction('completed');
1482 }
1483 };
1484 var skipButton;
1485 if ('completed' !== state.steps[pageId]) {
1486 skipButton = {
1487 text: __('Skip', 'elementor'),
1488 action: function action() {
1489 setAjax({
1490 data: {
1491 action: 'elementor_save_onboarding_features',
1492 data: JSON.stringify({
1493 features: selectedFeatures
1494 })
1495 }
1496 });
1497 handleAction('skipped');
1498 }
1499 };
1500 }
1501 if (!isFeatureSelected(selectedFeatures)) {
1502 actionButton.className = 'e-onboarding__button--disabled';
1503 }
1504 (0, _react.useEffect)(function () {
1505 if (selectedFeatures.advanced.length > 0) {
1506 setTierName(tiers.advanced);
1507 } else {
1508 setTierName(tiers.essential);
1509 }
1510 }, [selectedFeatures]);
1511 function isFeatureSelected(features) {
1512 return !!features.advanced.length || !!features.essential.length;
1513 }
1514 return /*#__PURE__*/_react.default.createElement(_layout.default, {
1515 pageId: pageId,
1516 nextStep: nextStep
1517 }, /*#__PURE__*/_react.default.createElement(_pageContentLayout.default, {
1518 image: elementorCommon.config.urls.assets + 'images/app/onboarding/Illustration_Setup.svg',
1519 title: __('Elevate your website with additional Pro features.', 'elementor'),
1520 actionButton: actionButton,
1521 skipButton: skipButton
1522 }, /*#__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", {
1523 className: "e-onboarding__choose-features-section"
1524 }, _utils.options.map(function (option, index) {
1525 var itemId = "".concat(option.plan, "-").concat(index);
1526 return /*#__PURE__*/_react.default.createElement("label", {
1527 key: itemId,
1528 className: "e-onboarding__choose-features-section__label",
1529 htmlFor: itemId
1530 }, /*#__PURE__*/_react.default.createElement("input", {
1531 className: "e-onboarding__choose-features-section__checkbox",
1532 type: "checkbox",
1533 onChange: function onChange(event) {
1534 return (0, _utils.setSelectedFeatureList)({
1535 checked: event.currentTarget.checked,
1536 id: event.target.value,
1537 text: option.text,
1538 selectedFeatures: selectedFeatures,
1539 setSelectedFeatures: setSelectedFeatures
1540 });
1541 },
1542 id: itemId,
1543 value: itemId
1544 }), option.text);
1545 })), /*#__PURE__*/_react.default.createElement("p", {
1546 className: "e-onboarding__choose-features-section__message"
1547 }, isFeatureSelected(selectedFeatures) && /*#__PURE__*/_react.default.createElement(_message.default, {
1548 tier: tierName
1549 }))));
1550 }
1551
1552 /***/ }),
1553
1554 /***/ "../app/modules/onboarding/assets/js/pages/good-to-go.js":
1555 /*!***************************************************************!*\
1556 !*** ../app/modules/onboarding/assets/js/pages/good-to-go.js ***!
1557 \***************************************************************/
1558 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1559
1560 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
1561
1562
1563 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1564 Object.defineProperty(exports, "__esModule", ({
1565 value: true
1566 }));
1567 exports["default"] = GoodToGo;
1568 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
1569 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
1570 var _grid = _interopRequireDefault(__webpack_require__(/*! elementor-app/ui/grid/grid */ "../app/assets/js/ui/grid/grid.js"));
1571 var _layout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/layout */ "../app/modules/onboarding/assets/js/components/layout/layout.js"));
1572 var _card = _interopRequireDefault(__webpack_require__(/*! ../components/card */ "../app/modules/onboarding/assets/js/components/card.js"));
1573 var _footerButtons = _interopRequireDefault(__webpack_require__(/*! ../components/layout/footer-buttons */ "../app/modules/onboarding/assets/js/components/layout/footer-buttons.js"));
1574 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; }
1575 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; }
1576 function GoodToGo() {
1577 var pageId = 'goodToGo',
1578 skipButton = {
1579 text: __('Skip', 'elementor'),
1580 href: elementorAppConfig.onboarding.urls.createNewPage
1581 },
1582 kitLibraryLink = elementorAppConfig.onboarding.urls.kitLibrary + '&referrer=onboarding';
1583 return /*#__PURE__*/_react.default.createElement(_layout.default, {
1584 pageId: pageId
1585 }, /*#__PURE__*/_react.default.createElement("h1", {
1586 className: "e-onboarding__page-content-section-title"
1587 }, elementorAppConfig.onboarding.experiment ? __('Welcome aboard! What\'s next?', 'elementor') : __('That\'s a wrap! What\'s next?', 'elementor')), /*#__PURE__*/_react.default.createElement("div", {
1588 className: "e-onboarding__page-content-section-text"
1589 }, __('There are two ways to get started with Elementor:', 'elementor')), /*#__PURE__*/_react.default.createElement(_grid.default, {
1590 container: true,
1591 alignItems: "center",
1592 justify: "space-between",
1593 className: "e-onboarding__cards-grid e-onboarding__page-content"
1594 }, /*#__PURE__*/_react.default.createElement(_card.default, {
1595 name: "blank",
1596 image: elementorCommon.config.urls.assets + 'images/app/onboarding/Blank_Canvas.svg',
1597 imageAlt: __('Click here to create a new page and open it in Elementor Editor', 'elementor'),
1598 text: __('Edit a blank canvas with the Elementor Editor', 'elementor'),
1599 link: elementorAppConfig.onboarding.urls.createNewPage
1600 }), /*#__PURE__*/_react.default.createElement(_card.default, {
1601 name: "template",
1602 image: elementorCommon.config.urls.assets + 'images/app/onboarding/Library.svg',
1603 imageAlt: __('Click here to go to Elementor\'s Kit Library', 'elementor'),
1604 text: __('Choose a professionally-designed template or import your own', 'elementor'),
1605 link: kitLibraryLink,
1606 clickAction: function clickAction() {
1607 // The location is reloaded to make sure the Kit Library's state is re-created.
1608 location.href = kitLibraryLink;
1609 location.reload();
1610 }
1611 })), /*#__PURE__*/_react.default.createElement(_footerButtons.default, {
1612 skipButton: _objectSpread(_objectSpread({}, skipButton), {}, {
1613 target: '_self'
1614 }),
1615 className: "e-onboarding__good-to-go-footer"
1616 }));
1617 }
1618
1619 /***/ }),
1620
1621 /***/ "../app/modules/onboarding/assets/js/pages/hello-theme.js":
1622 /*!****************************************************************!*\
1623 !*** ../app/modules/onboarding/assets/js/pages/hello-theme.js ***!
1624 \****************************************************************/
1625 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1626
1627 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
1628
1629
1630 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1631 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
1632 Object.defineProperty(exports, "__esModule", ({
1633 value: true
1634 }));
1635 exports["default"] = HelloTheme;
1636 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
1637 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
1638 var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
1639 var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
1640 var _useAjax2 = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-ajax */ "../app/assets/js/hooks/use-ajax.js"));
1641 var _layout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/layout */ "../app/modules/onboarding/assets/js/components/layout/layout.js"));
1642 var _pageContentLayout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/page-content-layout */ "../app/modules/onboarding/assets/js/components/layout/page-content-layout.js"));
1643 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
1644 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
1645 /* eslint-disable @wordpress/i18n-ellipsis */
1646
1647 function HelloTheme() {
1648 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
1649 state = _useContext.state,
1650 updateState = _useContext.updateState,
1651 getStateObjectToUpdate = _useContext.getStateObjectToUpdate,
1652 _useAjax = (0, _useAjax2.default)(),
1653 activateHelloThemeAjaxState = _useAjax.ajaxState,
1654 setActivateHelloThemeAjaxState = _useAjax.setAjax,
1655 _useState = (0, _react.useState)(false),
1656 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
1657 helloInstalledInOnboarding = _useState2[0],
1658 setHelloInstalledInOnboarding = _useState2[1],
1659 _useState3 = (0, _react.useState)(false),
1660 _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
1661 isInstalling = _useState4[0],
1662 setIsInstalling = _useState4[1],
1663 noticeStateSuccess = {
1664 type: 'success',
1665 icon: 'eicon-check-circle-o',
1666 message: __('Your site’s got Hello theme. High-five!', 'elementor')
1667 },
1668 _useState5 = (0, _react.useState)(state.isHelloThemeActivated ? noticeStateSuccess : null),
1669 _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
1670 noticeState = _useState6[0],
1671 setNoticeState = _useState6[1],
1672 _useState7 = (0, _react.useState)([]),
1673 _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
1674 activeTimeouts = _useState8[0],
1675 setActiveTimeouts = _useState8[1],
1676 continueWithHelloThemeText = state.isHelloThemeActivated ? __('Next', 'elementor') : __('Continue with Hello Theme', 'elementor'),
1677 _useState9 = (0, _react.useState)(continueWithHelloThemeText),
1678 _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
1679 actionButtonText = _useState10[0],
1680 setActionButtonText = _useState10[1],
1681 navigate = (0, _router.useNavigate)(),
1682 pageId = 'hello',
1683 nextStep = elementorAppConfig.onboarding.experiment ? 'chooseFeatures' : 'siteName',
1684 goToNextScreen = function goToNextScreen() {
1685 return navigate('onboarding/' + nextStep);
1686 };
1687
1688 /**
1689 * Setup
1690 *
1691 * If Hello Theme is already activated when onboarding starts, This screen is unneeded and is marked as 'completed'
1692 * and skipped.
1693 */
1694 (0, _react.useEffect)(function () {
1695 if (!helloInstalledInOnboarding && state.isHelloThemeActivated) {
1696 var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
1697 updateState(stateToUpdate);
1698 goToNextScreen();
1699 }
1700 }, []);
1701 var resetScreenContent = function resetScreenContent() {
1702 // Clear any active timeouts for changing the action button text during installation.
1703 activeTimeouts.forEach(function (timeoutID) {
1704 return clearTimeout(timeoutID);
1705 });
1706 setActiveTimeouts([]);
1707 setIsInstalling(false);
1708 setActionButtonText(continueWithHelloThemeText);
1709 };
1710
1711 /**
1712 * Callbacks
1713 */
1714 var onHelloThemeActivationSuccess = (0, _react.useCallback)(function () {
1715 setIsInstalling(false);
1716 elementorCommon.events.dispatchEvent({
1717 event: 'indication prompt',
1718 version: '',
1719 details: {
1720 placement: elementorAppConfig.onboarding.eventPlacement,
1721 step: state.currentStep,
1722 action_state: 'success',
1723 action: 'hello theme activation'
1724 }
1725 });
1726 setNoticeState(noticeStateSuccess);
1727 setActionButtonText(__('Next', 'elementor'));
1728 var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
1729 stateToUpdate.isHelloThemeActivated = true;
1730 updateState(stateToUpdate);
1731 setHelloInstalledInOnboarding(true);
1732 goToNextScreen();
1733 }, []);
1734 var onErrorInstallHelloTheme = function onErrorInstallHelloTheme() {
1735 elementorCommon.events.dispatchEvent({
1736 event: 'indication prompt',
1737 version: '',
1738 details: {
1739 placement: elementorAppConfig.onboarding.eventPlacement,
1740 step: state.currentStep,
1741 action_state: 'failure',
1742 action: 'hello theme install'
1743 }
1744 });
1745 setNoticeState({
1746 type: 'error',
1747 icon: 'eicon-warning',
1748 message: __('There was a problem installing Hello Theme.', 'elementor')
1749 });
1750 resetScreenContent();
1751 };
1752 var activateHelloTheme = function activateHelloTheme() {
1753 setIsInstalling(true);
1754 updateState({
1755 isHelloThemeInstalled: true
1756 });
1757 setActivateHelloThemeAjaxState({
1758 data: {
1759 action: 'elementor_activate_hello_theme'
1760 }
1761 });
1762 };
1763 var installHelloTheme = function installHelloTheme() {
1764 if (!isInstalling) {
1765 setIsInstalling(true);
1766 }
1767 wp.updates.ajax('install-theme', {
1768 slug: 'hello-elementor',
1769 success: function success() {
1770 return activateHelloTheme();
1771 },
1772 error: function error() {
1773 return onErrorInstallHelloTheme();
1774 }
1775 });
1776 };
1777 var sendNextButtonEvent = function sendNextButtonEvent() {
1778 elementorCommon.events.dispatchEvent({
1779 event: 'next',
1780 version: '',
1781 details: {
1782 placement: elementorAppConfig.onboarding.eventPlacement,
1783 step: state.currentStep
1784 }
1785 });
1786 };
1787
1788 /**
1789 * Action Button
1790 */
1791 var actionButton = {
1792 text: actionButtonText,
1793 role: 'button'
1794 };
1795 if (isInstalling) {
1796 actionButton.className = 'e-onboarding__button--processing';
1797 }
1798 if (state.isHelloThemeActivated) {
1799 actionButton.onClick = function () {
1800 sendNextButtonEvent();
1801 goToNextScreen();
1802 };
1803 } else {
1804 actionButton.onClick = function () {
1805 sendNextButtonEvent();
1806 if (state.isHelloThemeInstalled && !state.isHelloThemeActivated) {
1807 activateHelloTheme();
1808 } else if (!state.isHelloThemeInstalled) {
1809 installHelloTheme();
1810 } else {
1811 goToNextScreen();
1812 }
1813 };
1814 }
1815
1816 /**
1817 * Skip Button
1818 */
1819 var skipButton;
1820 if ('completed' !== state.steps[pageId]) {
1821 skipButton = {
1822 text: __('Skip', 'elementor')
1823 };
1824 }
1825
1826 /**
1827 * Set timeouts for updating the 'Next' button text if the Hello Theme installation is taking too long.
1828 */
1829 (0, _react.useEffect)(function () {
1830 if (isInstalling) {
1831 setActionButtonText(/*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("i", {
1832 className: "eicon-loading eicon-animation-spin",
1833 "aria-hidden": "true"
1834 })));
1835 }
1836 var actionTextTimeouts = [];
1837 var timeout4 = setTimeout(function () {
1838 if (!isInstalling) {
1839 return;
1840 }
1841 setActionButtonText(/*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("i", {
1842 className: "eicon-loading eicon-animation-spin",
1843 "aria-hidden": "true"
1844 }), /*#__PURE__*/_react.default.createElement("span", {
1845 className: "e-onboarding__action-button-text"
1846 }, __('Hold on, this can take a minute...', 'elementor'))));
1847 }, 4000);
1848 actionTextTimeouts.push(timeout4);
1849 var timeout30 = setTimeout(function () {
1850 if (!isInstalling) {
1851 return;
1852 }
1853 setActionButtonText(/*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("i", {
1854 className: "eicon-loading eicon-animation-spin",
1855 "aria-hidden": "true"
1856 }), /*#__PURE__*/_react.default.createElement("span", {
1857 className: "e-onboarding__action-button-text"
1858 }, __('Okay, now we\'re really close...', 'elementor'))));
1859 }, 30000);
1860 actionTextTimeouts.push(timeout30);
1861 setActiveTimeouts(actionTextTimeouts);
1862 }, [isInstalling]);
1863 (0, _react.useEffect)(function () {
1864 if ('initial' !== activateHelloThemeAjaxState.status) {
1865 var _activateHelloThemeAj;
1866 if ('success' === activateHelloThemeAjaxState.status && (_activateHelloThemeAj = activateHelloThemeAjaxState.response) !== null && _activateHelloThemeAj !== void 0 && _activateHelloThemeAj.helloThemeActivated) {
1867 onHelloThemeActivationSuccess();
1868 } else if ('error' === activateHelloThemeAjaxState.status) {
1869 elementorCommon.events.dispatchEvent({
1870 event: 'indication prompt',
1871 version: '',
1872 details: {
1873 placement: elementorAppConfig.onboarding.eventPlacement,
1874 step: state.currentStep,
1875 action_state: 'failure',
1876 action: 'hello theme activation'
1877 }
1878 });
1879 setNoticeState({
1880 type: 'error',
1881 icon: 'eicon-warning',
1882 message: __('There was a problem activating Hello Theme.', 'elementor')
1883 });
1884
1885 // Clear any active timeouts for changing the action button text during installation.
1886 resetScreenContent();
1887 }
1888 }
1889 }, [activateHelloThemeAjaxState.status]);
1890 return /*#__PURE__*/_react.default.createElement(_layout.default, {
1891 pageId: pageId,
1892 nextStep: nextStep
1893 }, /*#__PURE__*/_react.default.createElement(_pageContentLayout.default, {
1894 image: elementorCommon.config.urls.assets + 'images/app/onboarding/Illustration_Hello.svg',
1895 title: __('Every site starts with a theme.', 'elementor'),
1896 actionButton: actionButton,
1897 skipButton: skipButton,
1898 noticeState: noticeState
1899 }, /*#__PURE__*/_react.default.createElement("p", null, __('Hello is Elementor\'s official blank canvas theme optimized to build your website exactly the way you want.', 'elementor')), !elementorAppConfig.onboarding.experiment && /*#__PURE__*/_react.default.createElement("p", null, __('Here\'s why:', 'elementor')), /*#__PURE__*/_react.default.createElement("ul", {
1900 className: "e-onboarding__feature-list"
1901 }, /*#__PURE__*/_react.default.createElement("li", null, __('Light-weight and fast loading', 'elementor')), /*#__PURE__*/_react.default.createElement("li", null, __('Great for SEO', 'elementor')), /*#__PURE__*/_react.default.createElement("li", null, __('Already being used by 1M+ web creators', 'elementor')))), /*#__PURE__*/_react.default.createElement("div", {
1902 className: "e-onboarding__footnote"
1903 }, '* ' + __('You can switch your theme later on', 'elementor')));
1904 }
1905
1906 /***/ }),
1907
1908 /***/ "../app/modules/onboarding/assets/js/pages/site-logo.js":
1909 /*!**************************************************************!*\
1910 !*** ../app/modules/onboarding/assets/js/pages/site-logo.js ***!
1911 \**************************************************************/
1912 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1913
1914 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
1915
1916
1917 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1918 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
1919 Object.defineProperty(exports, "__esModule", ({
1920 value: true
1921 }));
1922 exports["default"] = SiteLogo;
1923 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
1924 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
1925 var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
1926 var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
1927 var _useAjax3 = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-ajax */ "../app/assets/js/hooks/use-ajax.js"));
1928 var _dropZone = _interopRequireDefault(__webpack_require__(/*! elementor-app/organisms/drop-zone */ "../app/assets/js/organisms/drop-zone.js"));
1929 var _unfilteredFilesDialog = _interopRequireDefault(__webpack_require__(/*! elementor-app/organisms/unfiltered-files-dialog */ "../app/assets/js/organisms/unfiltered-files-dialog.js"));
1930 var _layout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/layout */ "../app/modules/onboarding/assets/js/components/layout/layout.js"));
1931 var _pageContentLayout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/page-content-layout */ "../app/modules/onboarding/assets/js/components/layout/page-content-layout.js"));
1932 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
1933 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
1934 /* eslint-disable jsx-a11y/no-static-element-interactions */
1935 /* eslint-disable jsx-a11y/click-events-have-key-events */
1936
1937 function SiteLogo() {
1938 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
1939 state = _useContext.state,
1940 updateState = _useContext.updateState,
1941 getStateObjectToUpdate = _useContext.getStateObjectToUpdate,
1942 _useState = (0, _react.useState)(state.siteLogo.id ? state.siteLogo : null),
1943 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
1944 file = _useState2[0],
1945 setFile = _useState2[1],
1946 _useState3 = (0, _react.useState)(false),
1947 _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
1948 isUploading = _useState4[0],
1949 setIsUploading = _useState4[1],
1950 _useState5 = (0, _react.useState)(false),
1951 _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
1952 showUnfilteredFilesDialog = _useState6[0],
1953 setShowUnfilteredFilesDialog = _useState6[1],
1954 _useState7 = (0, _react.useState)(),
1955 _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
1956 fileSource = _useState8[0],
1957 setFileSource = _useState8[1],
1958 _useState9 = (0, _react.useState)(null),
1959 _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
1960 noticeState = _useState10[0],
1961 setNoticeState = _useState10[1],
1962 _useAjax = (0, _useAjax3.default)(),
1963 updateLogoAjaxState = _useAjax.ajaxState,
1964 setUpdateLogoAjax = _useAjax.setAjax,
1965 _useAjax2 = (0, _useAjax3.default)(),
1966 uploadImageAjaxState = _useAjax2.ajaxState,
1967 setUploadImageAjax = _useAjax2.setAjax,
1968 pageId = 'siteLogo',
1969 nextStep = 'goodToGo',
1970 navigate = (0, _router.useNavigate)(),
1971 actionButton = {
1972 role: 'button',
1973 onClick: function onClick() {
1974 elementorCommon.events.dispatchEvent({
1975 event: 'next',
1976 version: '',
1977 details: {
1978 placement: elementorAppConfig.onboarding.eventPlacement,
1979 step: state.currentStep
1980 }
1981 });
1982 if (file.id) {
1983 if (file.id !== state.siteLogo.id) {
1984 updateSiteLogo();
1985 } else {
1986 // If the currently displayed logo is already set as the site logo, just go to the next screen.
1987 var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
1988 updateState(stateToUpdate);
1989 navigate('onboarding/' + nextStep);
1990 }
1991 }
1992 }
1993 };
1994 var skipButton;
1995 if ('completed' !== state.steps[pageId]) {
1996 skipButton = {
1997 text: __('Skip', 'elementor')
1998 };
1999 }
2000 if (isUploading) {
2001 actionButton.text = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("i", {
2002 className: "eicon-loading eicon-animation-spin",
2003 "aria-hidden": "true"
2004 }));
2005 } else {
2006 actionButton.text = __('Next', 'elementor');
2007 }
2008 if (!file) {
2009 actionButton.className = 'e-onboarding__button--disabled';
2010 }
2011 var updateSiteLogo = (0, _react.useCallback)(function () {
2012 setIsUploading(true);
2013 setUpdateLogoAjax({
2014 data: {
2015 action: 'elementor_update_site_logo',
2016 data: JSON.stringify({
2017 attachmentId: file.id
2018 })
2019 }
2020 });
2021 }, [file]);
2022 var uploadSiteLogo = function uploadSiteLogo(fileToUpload) {
2023 setIsUploading(true);
2024 setUploadImageAjax({
2025 data: {
2026 action: 'elementor_upload_site_logo',
2027 fileToUpload: fileToUpload
2028 }
2029 });
2030 };
2031 var dismissUnfilteredFilesCallback = function dismissUnfilteredFilesCallback() {
2032 setIsUploading(false);
2033 setFile(null);
2034 setShowUnfilteredFilesDialog(false);
2035 };
2036 var _onFileSelect = function onFileSelect(selectedFile) {
2037 setFileSource('drop');
2038 if ('image/svg+xml' === selectedFile.type && !elementorAppConfig.onboarding.isUnfilteredFilesEnabled) {
2039 setFile(selectedFile);
2040 setIsUploading(true);
2041 setShowUnfilteredFilesDialog(true);
2042 } else {
2043 setFile(selectedFile);
2044 setNoticeState(null);
2045 uploadSiteLogo(selectedFile);
2046 }
2047 };
2048 var onImageRemoveClick = function onImageRemoveClick() {
2049 elementorCommon.events.dispatchEvent({
2050 event: 'remove selected logo',
2051 version: '',
2052 details: {
2053 placement: elementorAppConfig.onboarding.eventPlacement
2054 }
2055 });
2056 setFile(null);
2057 };
2058
2059 /**
2060 * Ajax Callbacks
2061 */
2062 // Run the callback for the new image upload AJAX request.
2063 (0, _react.useEffect)(function () {
2064 if ('initial' !== uploadImageAjaxState.status) {
2065 var _uploadImageAjaxState;
2066 if ('success' === uploadImageAjaxState.status && (_uploadImageAjaxState = uploadImageAjaxState.response) !== null && _uploadImageAjaxState !== void 0 && (_uploadImageAjaxState = _uploadImageAjaxState.imageAttachment) !== null && _uploadImageAjaxState !== void 0 && _uploadImageAjaxState.id) {
2067 elementorCommon.events.dispatchEvent({
2068 event: 'logo image uploaded',
2069 version: '',
2070 details: {
2071 placement: elementorAppConfig.onboarding.eventPlacement,
2072 source: fileSource
2073 }
2074 });
2075 setIsUploading(false);
2076 setFile(uploadImageAjaxState.response.imageAttachment);
2077 if (noticeState) {
2078 setNoticeState(null);
2079 }
2080 } else if ('error' === uploadImageAjaxState.status) {
2081 setIsUploading(false);
2082 setFile(null);
2083 elementorCommon.events.dispatchEvent({
2084 event: 'indication prompt',
2085 version: '',
2086 details: {
2087 placement: elementorAppConfig.onboarding.eventPlacement,
2088 action_state: 'failure',
2089 action: 'logo image upload'
2090 }
2091 });
2092 setNoticeState({
2093 type: 'error',
2094 icon: 'eicon-warning',
2095 message: 'That didn\'t work. Try uploading your file again.'
2096 });
2097 }
2098 }
2099 }, [uploadImageAjaxState.status]);
2100
2101 // Run the callback for the site logo update AJAX request.
2102 (0, _react.useEffect)(function () {
2103 if ('initial' !== updateLogoAjaxState.status) {
2104 var _updateLogoAjaxState$;
2105 if ('success' === updateLogoAjaxState.status && (_updateLogoAjaxState$ = updateLogoAjaxState.response) !== null && _updateLogoAjaxState$ !== void 0 && _updateLogoAjaxState$.siteLogoUpdated) {
2106 elementorCommon.events.dispatchEvent({
2107 event: 'logo image updated',
2108 version: '',
2109 details: {
2110 placement: elementorAppConfig.onboarding.eventPlacement,
2111 source: fileSource
2112 }
2113 });
2114 setIsUploading(false);
2115 if (noticeState) {
2116 setNoticeState(null);
2117 }
2118 var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
2119 stateToUpdate.siteLogo = {
2120 id: file.id,
2121 url: file.url
2122 };
2123 updateState(stateToUpdate);
2124 navigate('onboarding/' + nextStep);
2125 } else if ('error' === updateLogoAjaxState.status) {
2126 setIsUploading(false);
2127 elementorCommon.events.dispatchEvent({
2128 event: 'indication prompt',
2129 version: '',
2130 details: {
2131 placement: elementorAppConfig.onboarding.eventPlacement,
2132 step: state.currentStep,
2133 action_state: 'failure',
2134 action: 'update site logo'
2135 }
2136 });
2137 setNoticeState({
2138 type: 'error',
2139 icon: 'eicon-warning',
2140 message: 'That didn\'t work. Try uploading your file again.'
2141 });
2142 }
2143 }
2144 }, [updateLogoAjaxState.status]);
2145 return /*#__PURE__*/_react.default.createElement(_layout.default, {
2146 pageId: pageId,
2147 nextStep: nextStep
2148 }, /*#__PURE__*/_react.default.createElement(_pageContentLayout.default, {
2149 image: elementorCommon.config.urls.assets + 'images/app/onboarding/Illustration_Setup.svg',
2150 title: __('Have a logo? Add it here.', 'elementor'),
2151 actionButton: actionButton,
2152 skipButton: skipButton,
2153 noticeState: noticeState
2154 }, /*#__PURE__*/_react.default.createElement("span", null, __('Otherwise, you can skip this and add one later.', 'elementor')), file && !showUnfilteredFilesDialog ? /*#__PURE__*/_react.default.createElement("div", {
2155 className: 'e-onboarding__logo-container' + (isUploading ? ' e-onboarding__is-uploading' : '')
2156 }, /*#__PURE__*/_react.default.createElement("div", {
2157 className: "e-onboarding__logo-remove",
2158 onClick: function onClick() {
2159 return onImageRemoveClick();
2160 }
2161 }, /*#__PURE__*/_react.default.createElement("i", {
2162 className: "eicon-trash-o"
2163 })), /*#__PURE__*/_react.default.createElement("img", {
2164 src: file.url,
2165 alt: __('Potential Site Logo', 'elementor')
2166 })) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropZone.default, {
2167 className: "e-onboarding__drop-zone",
2168 heading: __('Drop image here', 'elementor'),
2169 secondaryText: __('or', 'elementor'),
2170 buttonText: __('Open Media Library', 'elementor'),
2171 buttonVariant: "outlined",
2172 buttonColor: "cta",
2173 icon: '',
2174 type: "wp-media",
2175 filetypes: ['jpg', 'jpeg', 'png', 'svg'],
2176 onFileSelect: function onFileSelect(selectedFile) {
2177 return _onFileSelect(selectedFile);
2178 },
2179 onWpMediaSelect: function onWpMediaSelect(frame) {
2180 // Get media attachment details from the frame state
2181 var attachment = frame.state().get('selection').first().toJSON();
2182 setFileSource('browse');
2183 setFile(attachment);
2184 setNoticeState(null);
2185 },
2186 onButtonClick: function onButtonClick() {
2187 elementorCommon.events.dispatchEvent({
2188 event: 'browse file click',
2189 version: '',
2190 details: {
2191 placement: elementorAppConfig.onboarding.eventPlacement,
2192 step: state.currentStep
2193 }
2194 });
2195 }
2196 // TODO: DEAL WITH ERROR
2197 ,
2198 onError: function onError(error) {
2199 if ('file_not_allowed' === error.id) {
2200 elementorCommon.events.dispatchEvent({
2201 event: 'indication prompt',
2202 version: '',
2203 details: {
2204 placement: elementorAppConfig.onboarding.eventPlacement,
2205 step: state.currentStep,
2206 action_state: 'failure',
2207 action: 'logo upload format'
2208 }
2209 });
2210 setNoticeState({
2211 type: 'error',
2212 icon: 'eicon-warning',
2213 message: __('This file type is not supported. Try a different type of file', 'elementor')
2214 });
2215 }
2216 }
2217 })), /*#__PURE__*/_react.default.createElement(_unfilteredFilesDialog.default, {
2218 show: showUnfilteredFilesDialog,
2219 setShow: setShowUnfilteredFilesDialog,
2220 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'),
2221 errorModalText: __('There was a problem with enabling SVG uploads. Try again, or use another image format.', 'elementor'),
2222 onReady: function onReady() {
2223 setShowUnfilteredFilesDialog(false);
2224 elementorAppConfig.onboarding.isUnfilteredFilesEnabled = true;
2225 uploadSiteLogo(file);
2226 },
2227 onDismiss: function onDismiss() {
2228 return dismissUnfilteredFilesCallback();
2229 },
2230 onCancel: function onCancel() {
2231 return dismissUnfilteredFilesCallback();
2232 }
2233 })));
2234 }
2235
2236 /***/ }),
2237
2238 /***/ "../app/modules/onboarding/assets/js/pages/site-name.js":
2239 /*!**************************************************************!*\
2240 !*** ../app/modules/onboarding/assets/js/pages/site-name.js ***!
2241 \**************************************************************/
2242 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2243
2244 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
2245
2246
2247 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2248 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
2249 Object.defineProperty(exports, "__esModule", ({
2250 value: true
2251 }));
2252 exports["default"] = SiteName;
2253 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
2254 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
2255 var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
2256 var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
2257 var _useAjax2 = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-ajax */ "../app/assets/js/hooks/use-ajax.js"));
2258 var _layout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/layout */ "../app/modules/onboarding/assets/js/components/layout/layout.js"));
2259 var _pageContentLayout = _interopRequireDefault(__webpack_require__(/*! ../components/layout/page-content-layout */ "../app/modules/onboarding/assets/js/components/layout/page-content-layout.js"));
2260 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
2261 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
2262 function SiteName() {
2263 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
2264 state = _useContext.state,
2265 updateState = _useContext.updateState,
2266 getStateObjectToUpdate = _useContext.getStateObjectToUpdate,
2267 _useAjax = (0, _useAjax2.default)(),
2268 ajaxState = _useAjax.ajaxState,
2269 setAjax = _useAjax.setAjax,
2270 _useState = (0, _react.useState)(null),
2271 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
2272 noticeState = _useState2[0],
2273 setNoticeState = _useState2[1],
2274 _useState3 = (0, _react.useState)(state.siteName),
2275 _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
2276 siteNameInputValue = _useState4[0],
2277 setSiteNameInputValue = _useState4[1],
2278 pageId = 'siteName',
2279 nextStep = 'siteLogo',
2280 navigate = (0, _router.useNavigate)(),
2281 nameInputRef = (0, _react.useRef)(),
2282 actionButton = {
2283 text: __('Next', 'elementor'),
2284 onClick: function onClick() {
2285 elementorCommon.events.dispatchEvent({
2286 event: 'next',
2287 version: '',
2288 details: {
2289 placement: elementorAppConfig.onboarding.eventPlacement,
2290 step: state.currentStep
2291 }
2292 });
2293
2294 // Only run the site name update AJAX if the new name is different than the existing one and it isn't empty.
2295 if (nameInputRef.current.value !== state.siteName && '' !== nameInputRef.current.value) {
2296 setAjax({
2297 data: {
2298 action: 'elementor_update_site_name',
2299 data: JSON.stringify({
2300 siteName: nameInputRef.current.value
2301 })
2302 }
2303 });
2304 } else if (nameInputRef.current.value === state.siteName) {
2305 var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
2306 updateState(stateToUpdate);
2307 navigate('onboarding/' + nextStep);
2308 } else {
2309 var _stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'skipped');
2310 updateState(_stateToUpdate);
2311 navigate('onboarding/' + nextStep);
2312 }
2313 }
2314 };
2315 var skipButton;
2316 if ('completed' !== state.steps[pageId]) {
2317 skipButton = {
2318 text: __('Skip', 'elementor')
2319 };
2320 }
2321 if (!siteNameInputValue) {
2322 actionButton.className = 'e-onboarding__button--disabled';
2323 }
2324
2325 // Run the callback for the site name update AJAX request.
2326 (0, _react.useEffect)(function () {
2327 if ('initial' !== ajaxState.status) {
2328 var _ajaxState$response;
2329 if ('success' === ajaxState.status && (_ajaxState$response = ajaxState.response) !== null && _ajaxState$response !== void 0 && _ajaxState$response.siteNameUpdated) {
2330 var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, 'completed');
2331 stateToUpdate.siteName = nameInputRef.current.value;
2332 updateState(stateToUpdate);
2333 navigate('onboarding/' + nextStep);
2334 } else if ('error' === ajaxState.status) {
2335 elementorCommon.events.dispatchEvent({
2336 event: 'indication prompt',
2337 version: '',
2338 details: {
2339 placement: elementorAppConfig.onboarding.eventPlacement,
2340 step: state.currentStep,
2341 action_state: 'failure',
2342 action: 'site name update'
2343 }
2344 });
2345 setNoticeState({
2346 type: 'error',
2347 icon: 'eicon-warning',
2348 message: __('Sorry, the name wasn\'t saved. Try again, or skip for now.', 'elementor')
2349 });
2350 }
2351 }
2352 }, [ajaxState.status]);
2353 return /*#__PURE__*/_react.default.createElement(_layout.default, {
2354 pageId: pageId,
2355 nextStep: nextStep
2356 }, /*#__PURE__*/_react.default.createElement(_pageContentLayout.default, {
2357 image: elementorCommon.config.urls.assets + 'images/app/onboarding/Illustration_Setup.svg',
2358 title: __('Now, let\'s give your site a name.', 'elementor'),
2359 actionButton: actionButton,
2360 skipButton: skipButton,
2361 noticeState: noticeState
2362 }, /*#__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", {
2363 className: "e-onboarding__text-input e-onboarding__site-name-input",
2364 type: "text",
2365 placeholder: "e.g. Eric's Space Shuttles",
2366 defaultValue: state.siteName || '',
2367 ref: nameInputRef,
2368 onChange: function onChange(event) {
2369 return setSiteNameInputValue(event.target.value);
2370 }
2371 })));
2372 }
2373
2374 /***/ }),
2375
2376 /***/ "../app/modules/onboarding/assets/js/pages/upload-and-install-pro.js":
2377 /*!***************************************************************************!*\
2378 !*** ../app/modules/onboarding/assets/js/pages/upload-and-install-pro.js ***!
2379 \***************************************************************************/
2380 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2381
2382 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
2383
2384
2385 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2386 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
2387 Object.defineProperty(exports, "__esModule", ({
2388 value: true
2389 }));
2390 exports["default"] = UploadAndInstallPro;
2391 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
2392 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
2393 var _useAjax2 = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-ajax */ "../app/assets/js/hooks/use-ajax.js"));
2394 var _usePageTitle = _interopRequireDefault(__webpack_require__(/*! elementor-app/hooks/use-page-title */ "../app/assets/js/hooks/use-page-title.js"));
2395 var _content = _interopRequireDefault(__webpack_require__(/*! ../../../../../assets/js/layout/content */ "../app/assets/js/layout/content.js"));
2396 var _dropZone = _interopRequireDefault(__webpack_require__(/*! ../../../../../assets/js/organisms/drop-zone */ "../app/assets/js/organisms/drop-zone.js"));
2397 var _notice = _interopRequireDefault(__webpack_require__(/*! ../components/notice */ "../app/modules/onboarding/assets/js/components/notice.js"));
2398 var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
2399 var _elementorLoading = _interopRequireDefault(__webpack_require__(/*! elementor-app/molecules/elementor-loading */ "../app/assets/js/molecules/elementor-loading.js"));
2400 function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
2401 function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
2402 function UploadAndInstallPro() {
2403 (0, _usePageTitle.default)({
2404 title: __('Upload and Install Elementor Pro', 'elementor')
2405 });
2406 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
2407 state = _useContext.state,
2408 _useAjax = (0, _useAjax2.default)(),
2409 installProZipAjaxState = _useAjax.ajaxState,
2410 setInstallProZipAjaxState = _useAjax.setAjax,
2411 _useState = (0, _react.useState)(null),
2412 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
2413 noticeState = _useState2[0],
2414 setNoticeState = _useState2[1],
2415 _useState3 = (0, _react.useState)(false),
2416 _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
2417 isLoading = _useState4[0],
2418 setIsLoading = _useState4[1],
2419 _useState5 = (0, _react.useState)(),
2420 _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
2421 fileSource = _useState6[0],
2422 setFileSource = _useState6[1];
2423 var uploadProZip = (0, _react.useCallback)(function (file) {
2424 setIsLoading(true);
2425 setInstallProZipAjaxState({
2426 data: {
2427 action: 'elementor_upload_and_install_pro',
2428 fileToUpload: file
2429 }
2430 });
2431 }, []);
2432 var setErrorNotice = function setErrorNotice() {
2433 var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2434 var step = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'upload';
2435 var errorMessage = (error === null || error === void 0 ? void 0 : error.message) || 'That didn\'t work. Try uploading your file again.';
2436 elementorCommon.events.dispatchEvent({
2437 event: 'indication prompt',
2438 version: '',
2439 details: {
2440 placement: elementorAppConfig.onboarding.eventPlacement,
2441 step: state.currentStep,
2442 action_state: 'failure',
2443 action: step + ' pro',
2444 source: fileSource
2445 }
2446 });
2447 setNoticeState({
2448 type: 'error',
2449 icon: 'eicon-warning',
2450 message: errorMessage
2451 });
2452 };
2453
2454 /**
2455 * Ajax Callbacks
2456 */
2457 // Run the callback that runs when the Pro Upload Ajax returns a response.
2458 (0, _react.useEffect)(function () {
2459 if ('initial' !== installProZipAjaxState.status) {
2460 var _installProZipAjaxSta;
2461 setIsLoading(false);
2462 if ('success' === installProZipAjaxState.status && (_installProZipAjaxSta = installProZipAjaxState.response) !== null && _installProZipAjaxSta !== void 0 && _installProZipAjaxSta.elementorProInstalled) {
2463 elementorCommon.events.dispatchEvent({
2464 event: 'pro uploaded',
2465 version: '',
2466 details: {
2467 placement: elementorAppConfig.onboarding.eventPlacement,
2468 step: state.currentStep,
2469 source: fileSource
2470 }
2471 });
2472 if (opener && opener !== window) {
2473 opener.jQuery('body').trigger('elementor/upload-and-install-pro/success');
2474 window.close();
2475 opener.focus();
2476 }
2477 } else if ('error' === installProZipAjaxState.status) {
2478 setErrorNotice('install');
2479 }
2480 }
2481 }, [installProZipAjaxState.status]);
2482 var onProUploadHelpLinkClick = function onProUploadHelpLinkClick() {
2483 elementorCommon.events.dispatchEvent({
2484 event: 'pro plugin upload help',
2485 version: '',
2486 details: {
2487 placement: elementorAppConfig.onboarding.eventPlacement,
2488 step: state.currentStep
2489 }
2490 });
2491 };
2492 if (isLoading) {
2493 return /*#__PURE__*/_react.default.createElement(_elementorLoading.default, {
2494 loadingText: __('Uploading', 'elementor')
2495 });
2496 }
2497 return /*#__PURE__*/_react.default.createElement("div", {
2498 className: "eps-app e-onboarding__upload-pro"
2499 }, /*#__PURE__*/_react.default.createElement(_content.default, null, /*#__PURE__*/_react.default.createElement(_dropZone.default, {
2500 className: "e-onboarding__upload-pro-drop-zone",
2501 onFileSelect: function onFileSelect(file, event, source) {
2502 setFileSource(source);
2503 uploadProZip(file);
2504 },
2505 onError: function onError(error) {
2506 return setErrorNotice(error, 'upload');
2507 },
2508 filetypes: ['zip'],
2509 buttonColor: "cta",
2510 buttonVariant: "contained",
2511 heading: __('Import your Elementor Pro plugin file', 'elementor'),
2512 text: __('Drag & Drop your .zip file here', 'elementor'),
2513 secondaryText: __('or', 'elementor'),
2514 buttonText: __('Browse', 'elementor')
2515 }), noticeState && /*#__PURE__*/_react.default.createElement(_notice.default, {
2516 noticeState: noticeState
2517 }), /*#__PURE__*/_react.default.createElement("div", {
2518 className: "e-onboarding__upload-pro-get-file"
2519 }, __('Don\'t know where to get the file from?', 'elementor') + ' ', /*#__PURE__*/_react.default.createElement("a", {
2520 onClick: function onClick() {
2521 return onProUploadHelpLinkClick();
2522 },
2523 href: 'https://my.elementor.com/subscriptions/' + elementorAppConfig.onboarding.utms.downloadPro,
2524 target: "_blank"
2525 }, __('Click here', 'elementor')))));
2526 }
2527
2528 /***/ }),
2529
2530 /***/ "../app/modules/onboarding/assets/js/utils/connect.js":
2531 /*!************************************************************!*\
2532 !*** ../app/modules/onboarding/assets/js/utils/connect.js ***!
2533 \************************************************************/
2534 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2535
2536 /* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
2537
2538
2539 Object.defineProperty(exports, "__esModule", ({
2540 value: true
2541 }));
2542 exports["default"] = Connect;
2543 var _react = __webpack_require__(/*! react */ "react");
2544 var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
2545 function Connect(props) {
2546 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
2547 state = _useContext.state,
2548 updateState = _useContext.updateState,
2549 getStateObjectToUpdate = _useContext.getStateObjectToUpdate;
2550 var connectSuccessCallback = function connectSuccessCallback(data) {
2551 var stateToUpdate = getStateObjectToUpdate(state, 'steps', 'account', 'completed');
2552 elementorCommon.config.library_connect.is_connected = true;
2553 elementorCommon.config.library_connect.current_access_level = data.kits_access_level || data.access_level || 0;
2554 elementorCommon.config.library_connect.current_access_tier = data.access_tier;
2555 stateToUpdate.isLibraryConnected = true;
2556 updateState(stateToUpdate);
2557 };
2558 (0, _react.useEffect)(function () {
2559 jQuery(props.buttonRef.current).elementorConnect({
2560 success: function success(data) {
2561 return props.successCallback ? props.successCallback(data) : connectSuccessCallback(data);
2562 },
2563 error: function error() {
2564 if (props.errorCallback) {
2565 props.errorCallback();
2566 }
2567 },
2568 popup: {
2569 width: 726,
2570 height: 534
2571 }
2572 });
2573 }, []);
2574 return null;
2575 }
2576 Connect.propTypes = {
2577 buttonRef: PropTypes.object.isRequired,
2578 successCallback: PropTypes.func,
2579 errorCallback: PropTypes.func
2580 };
2581
2582 /***/ }),
2583
2584 /***/ "../app/modules/onboarding/assets/js/utils/use-button-action.js":
2585 /*!**********************************************************************!*\
2586 !*** ../app/modules/onboarding/assets/js/utils/use-button-action.js ***!
2587 \**********************************************************************/
2588 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2589
2590
2591
2592 Object.defineProperty(exports, "__esModule", ({
2593 value: true
2594 }));
2595 exports["default"] = useButtonAction;
2596 var _react = __webpack_require__(/*! react */ "react");
2597 var _context = __webpack_require__(/*! ../context/context */ "../app/modules/onboarding/assets/js/context/context.js");
2598 var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");
2599 function useButtonAction(pageId, nextPage) {
2600 var _useContext = (0, _react.useContext)(_context.OnboardingContext),
2601 state = _useContext.state,
2602 updateState = _useContext.updateState,
2603 getStateObjectToUpdate = _useContext.getStateObjectToUpdate;
2604 var navigate = (0, _router.useNavigate)();
2605 var handleAction = function handleAction(action) {
2606 var stateToUpdate = getStateObjectToUpdate(state, 'steps', pageId, action);
2607 updateState(stateToUpdate);
2608 navigate('onboarding/' + nextPage);
2609 };
2610 return {
2611 state: state,
2612 handleAction: handleAction
2613 };
2614 }
2615
2616 /***/ }),
2617
2618 /***/ "../app/modules/onboarding/assets/js/utils/utils.js":
2619 /*!**********************************************************!*\
2620 !*** ../app/modules/onboarding/assets/js/utils/utils.js ***!
2621 \**********************************************************/
2622 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2623
2624 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
2625
2626
2627 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2628 Object.defineProperty(exports, "__esModule", ({
2629 value: true
2630 }));
2631 exports.setSelectedFeatureList = exports.options = void 0;
2632 var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"));
2633 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
2634 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; }
2635 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; }
2636 /**
2637 * Checkboxes data.
2638 */
2639 var options = exports.options = [{
2640 plan: 'essential',
2641 text: __('Templates & Theme Builder', 'elementor')
2642 }, {
2643 plan: 'advanced',
2644 text: __('WooCommerce Builder', 'elementor')
2645 }, {
2646 plan: 'essential',
2647 text: __('Lead Collection & Form Builder', 'elementor')
2648 }, {
2649 plan: 'essential',
2650 text: __('Dynamic Content', 'elementor')
2651 }, {
2652 plan: 'advanced',
2653 text: __('Popup Builder', 'elementor')
2654 }, {
2655 plan: 'advanced',
2656 text: __('Custom Code & CSS', 'elementor')
2657 }, {
2658 plan: 'essential',
2659 text: __('Motion Effects & Animations', 'elementor')
2660 }, {
2661 plan: 'advanced',
2662 text: __('Notes & Collaboration', 'elementor')
2663 }];
2664
2665 /**
2666 * Set the selected feature list.
2667 * @param {Object} param0
2668 * @param {boolean} param0.checked
2669 * @param {string} param0.id
2670 * @param {string} param0.text
2671 * @param {Object} param0.selectedFeatures
2672 * @param {Function} param0.setSelectedFeatures
2673 */
2674 var setSelectedFeatureList = exports.setSelectedFeatureList = function setSelectedFeatureList(_ref) {
2675 var checked = _ref.checked,
2676 id = _ref.id,
2677 text = _ref.text,
2678 selectedFeatures = _ref.selectedFeatures,
2679 setSelectedFeatures = _ref.setSelectedFeatures;
2680 var tier = id.split('-')[0];
2681 if (checked) {
2682 setSelectedFeatures(_objectSpread(_objectSpread({}, selectedFeatures), {}, (0, _defineProperty2.default)({}, tier, [].concat((0, _toConsumableArray2.default)(selectedFeatures[tier]), [text]))));
2683 } else {
2684 setSelectedFeatures(_objectSpread(_objectSpread({}, selectedFeatures), {}, (0, _defineProperty2.default)({}, tier, selectedFeatures[tier].filter(function (item) {
2685 return item !== text;
2686 }))));
2687 }
2688 };
2689
2690 /***/ })
2691
2692 }]);
2693 //# sourceMappingURL=onboarding.120a44527e5a7209a8e4.bundle.js.map