PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.2
Elementor Website Builder – more than just a page builder v4.3.2
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 4.1.0-beta2 4.1.0-dev2 All 455 releases
← All changes | assets/js/packages/editor-widget-creation/editor-widget-creation.js +227 -420 4.2.4 → 4.3.2 View file →
@@ -1,430 +1,237 @@
1 -/******/ (function() { // webpackBootstrap
2 -/******/ "use strict";
3 -/******/ var __webpack_modules__ = ({
1 +(function(_elementor_editor, react, _elementor_editor_mcp, _elementor_editor_ui, _elementor_events, _elementor_icons, _elementor_ui, _wordpress_i18n) {
4 2
5 -/***/ "./packages/packages/core/editor-widget-creation/src/components/create-widget.tsx":
6 -/*!****************************************************************************************!*\
7 - !*** ./packages/packages/core/editor-widget-creation/src/components/create-widget.tsx ***!
8 - \****************************************************************************************/
9 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3 +//#region \0rolldown/runtime.js
4 + var __create = Object.create;
5 + var __defProp = Object.defineProperty;
6 + var __name = (target, value) => __defProp(target, "name", {
7 + value,
8 + configurable: true
9 + });
10 + var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11 + var __getOwnPropNames = Object.getOwnPropertyNames;
12 + var __getProtoOf = Object.getPrototypeOf;
13 + var __hasOwnProp = Object.prototype.hasOwnProperty;
14 + var __exportAll = (all, no_symbols) => {
15 + let target = {};
16 + for (var name in all) {
17 + __defProp(target, name, {
18 + get: all[name],
19 + enumerable: true
20 + });
21 + }
22 + if (!no_symbols) {
23 + __defProp(target, Symbol.toStringTag, { value: "Module" });
24 + }
25 + return target;
26 + };
27 + var __copyProps = (to, from, except, desc) => {
28 + if (from && typeof from === "object" || typeof from === "function") {
29 + for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
30 + key = keys[i];
31 + if (!__hasOwnProp.call(to, key) && key !== except) {
32 + __defProp(to, key, {
33 + get: ((k) => from[k]).bind(null, key),
34 + enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
35 + });
36 + }
37 + }
38 + }
39 + return to;
40 + };
41 + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
42 + value: mod,
43 + enumerable: true
44 + }) : target, mod));
10 45
11 -__webpack_require__.r(__webpack_exports__);
12 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13 -/* harmony export */ CreateWidget: function() { return /* binding */ CreateWidget; }
14 -/* harmony export */ });
15 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
16 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
17 -/* harmony import */ var _elementor_editor_mcp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-mcp */ "@elementor/editor-mcp");
18 -/* harmony import */ var _elementor_editor_mcp__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_mcp__WEBPACK_IMPORTED_MODULE_1__);
19 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
20 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__);
21 -/* harmony import */ var _elementor_events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/events */ "@elementor/events");
22 -/* harmony import */ var _elementor_events__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_events__WEBPACK_IMPORTED_MODULE_3__);
23 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
24 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_4__);
25 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
26 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__);
27 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
28 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__);
29 -/* harmony import */ var _interpolate_links__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../interpolate-links */ "./packages/packages/core/editor-widget-creation/src/interpolate-links.tsx");
46 +//#endregion
47 +react = __toESM(react);
30 48
49 +//#region packages/packages/core/editor-widget-creation/src/interpolate-links.tsx
50 + var LINK_PLACEHOLDER_PATTERN = /\{\{(\w+)}}/g;
51 + var interpolateLinks = (text, links) => {
52 + return text.split(LINK_PLACEHOLDER_PATTERN).map((part, i) => {
53 + const link = links[part];
54 + if (!link) return part;
55 + return /* @__PURE__ */ react.createElement(_elementor_ui.Link, {
56 + key: i,
57 + sx: { px: .5 },
58 + href: link.href,
59 + target: "_blank",
60 + rel: "noopener noreferrer"
61 + }, link.label);
62 + });
63 + };
31 64
65 +//#endregion
66 +//#region packages/packages/core/editor-widget-creation/src/components/create-widget.tsx
67 + var CREATE_WIDGET_EVENT = "elementor/editor/create-widget";
68 + var ANGIE_MODAL_PROMOTION_IMAGE_URL = "https://assets.elementor.com/packages/v1/images/angie-top-bar-promotion-modal-0926.png";
69 + var ANGIE_CTA_CLICKED_EVENT = "ai_widget_cta_clicked";
70 + var ANGIE_INSTALL_STARTED_EVENT = "angie_install_started";
71 + var ANGIE_INSTALL_COMPLETED_EVENT = "angie_install_completed";
72 + var ANGIE_INSTALL_ABANDONED_EVENT = "angie_install_abandoned";
73 + function CreateWidgetModal({ prompt, entryPoint, onClose }) {
74 + const [installState, setInstallState] = (0, react.useState)("idle");
75 + const [agreedToTerms, setAgreedToTerms] = (0, react.useState)(false);
76 + const handleClose = () => {
77 + if (installState === "installing") return;
78 + (0, _elementor_events.trackEvent)({
79 + eventName: ANGIE_INSTALL_ABANDONED_EVENT,
80 + abandon_step: installState === "error" ? "install_error" : "install_modal",
81 + trigger_source: entryPoint
82 + });
83 + onClose();
84 + };
85 + const handleInstall = async () => {
86 + setInstallState("installing");
87 + (0, _elementor_events.trackEvent)({
88 + eventName: ANGIE_INSTALL_STARTED_EVENT,
89 + trigger_source: entryPoint
90 + });
91 + const [result] = await Promise.all([(0, _elementor_editor_mcp.installAngiePlugin)(), (0, _elementor_editor_mcp.saveAngieConsent)()]);
92 + if (!result.success) {
93 + setInstallState("error");
94 + return;
95 + }
96 + (0, _elementor_events.trackEvent)({
97 + eventName: ANGIE_INSTALL_COMPLETED_EVENT,
98 + trigger_source: entryPoint
99 + });
100 + (0, _elementor_editor_mcp.redirectToAppAdmin)(prompt);
101 + };
102 + const handleFallbackInstall = () => {
103 + (0, _elementor_editor_mcp.redirectToInstallation)(prompt);
104 + };
105 + return /* @__PURE__ */ react.createElement(_elementor_editor_ui.ThemeProvider, null, /* @__PURE__ */ react.createElement(_elementor_ui.Dialog, {
106 + fullWidth: true,
107 + maxWidth: "md",
108 + open: true,
109 + onClose: handleClose
110 + }, /* @__PURE__ */ react.createElement(_elementor_ui.IconButton, {
111 + "aria-label": (0, _wordpress_i18n.__)("Close", "elementor"),
112 + onClick: handleClose,
113 + sx: {
114 + position: "absolute",
115 + right: 8,
116 + top: 8,
117 + zIndex: 1
118 + }
119 + }, /* @__PURE__ */ react.createElement(_elementor_icons.XIcon, null)), /* @__PURE__ */ react.createElement(_elementor_ui.DialogContent, { sx: {
120 + p: 0,
121 + overflow: "hidden"
122 + } }, /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
123 + direction: "row",
124 + sx: { height: 400 }
125 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Image, {
126 + sx: {
127 + height: "100%",
128 + aspectRatio: "1 / 1",
129 + objectFit: "cover",
130 + objectPosition: "right center"
131 + },
132 + src: ANGIE_MODAL_PROMOTION_IMAGE_URL
133 + }), /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
134 + justifyContent: "space-between",
135 + p: 4
136 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
137 + gap: 2.5,
138 + justifyContent: "center",
139 + sx: {
140 + flex: 1,
141 + paddingInlineEnd: 2.5
142 + }
143 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
144 + variant: "h4",
145 + fontWeight: 600,
146 + color: "text.secondary"
147 + }, installState === "error" ? (0, _wordpress_i18n.__)("Installation failed", "elementor") : /* @__PURE__ */ react.createElement(react.Fragment, null, (0, _wordpress_i18n.__)("Pages, layouts,", "elementor"), /* @__PURE__ */ react.createElement("br", null), (0, _wordpress_i18n.__)("widgets and more", "elementor"))), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
148 + variant: "body2",
149 + fontWeight: 500
150 + }, installState === "error" ? (0, _wordpress_i18n.__)("We couldn't install Angie automatically. Click below to install it manually.", "elementor") : (0, _wordpress_i18n.__)("Ask Angie to build you full pages, custom widgets, snippets, and code directly in Elementor. Install and activate Angie once on this site to start building.", "elementor")), installState !== "error" && /* @__PURE__ */ react.createElement(_elementor_ui.FormControlLabel, {
151 + control: /* @__PURE__ */ react.createElement(_elementor_ui.Checkbox, {
152 + size: "small",
153 + checked: agreedToTerms,
154 + onChange: (_e, checked) => setAgreedToTerms(checked)
155 + }),
156 + label: /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
157 + variant: "body2",
158 + color: "text.secondary"
159 + }, interpolateLinks((0, _wordpress_i18n.sprintf)((0, _wordpress_i18n.__)("By installing, you agree to our %1$s & %2$s.", "elementor"), "{{terms}}", "{{privacy}}"), {
160 + terms: {
161 + label: (0, _wordpress_i18n.__)("Terms", "elementor"),
162 + href: "https://elementor.com/terms/angie-terms-conditions/"
163 + },
164 + privacy: {
165 + label: (0, _wordpress_i18n.__)("Privacy Policy", "elementor"),
166 + href: "https://elementor.com/about/privacy/"
167 + }
168 + }))
169 + })), /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
170 + direction: "row",
171 + justifyContent: "flex-end"
172 + }, installState === "error" ? /* @__PURE__ */ react.createElement(_elementor_ui.Button, {
173 + variant: "contained",
174 + color: "accent",
175 + onClick: handleFallbackInstall
176 + }, (0, _wordpress_i18n.__)("Install Manually", "elementor")) : /* @__PURE__ */ react.createElement(_elementor_ui.Button, {
177 + variant: "contained",
178 + color: "accent",
179 + onClick: handleInstall,
180 + disabled: installState === "installing" || !agreedToTerms,
181 + startIcon: installState === "installing" ? /* @__PURE__ */ react.createElement(_elementor_ui.CircularProgress, {
182 + size: 18,
183 + color: "inherit"
184 + }) : void 0
185 + }, installState === "installing" ? (0, _wordpress_i18n.__)("Installing…", "elementor") : (0, _wordpress_i18n.__)("Install and activate", "elementor"))))))));
186 + }
187 + function CreateWidget() {
188 + const [modalData, setModalData] = (0, react.useState)(null);
189 + (0, react.useEffect)(() => {
190 + const handleShow = (event) => {
191 + const customEvent = event;
192 + const hasAngieInstalled = (0, _elementor_editor_mcp.isAngieAvailable)();
193 + (0, _elementor_events.trackEvent)({
194 + eventName: ANGIE_CTA_CLICKED_EVENT,
195 + entry_point: customEvent.detail.entry_point,
196 + has_angie_installed: hasAngieInstalled
197 + });
198 + if (hasAngieInstalled) {
199 + (0, _elementor_editor_mcp.sendPromptToAngie)(customEvent.detail?.prompt);
200 + return;
201 + }
202 + setModalData(customEvent.detail);
203 + };
204 + window.addEventListener(CREATE_WIDGET_EVENT, handleShow);
205 + return () => {
206 + window.removeEventListener(CREATE_WIDGET_EVENT, handleShow);
207 + };
208 + }, []);
209 + if (!modalData) return null;
210 + return /* @__PURE__ */ react.createElement(CreateWidgetModal, {
211 + prompt: modalData.prompt,
212 + entryPoint: modalData.entry_point,
213 + onClose: () => setModalData(null)
214 + });
215 + }
32 216
217 +//#endregion
218 +//#region packages/packages/core/editor-widget-creation/src/init.ts
219 + function init() {
220 + (0, _elementor_editor.injectIntoTop)({
221 + id: "create-widget",
222 + component: CreateWidget
223 + });
224 + }
33 225
226 +//#endregion
227 +//#region packages/packages/core/editor-widget-creation/src/index.ts
228 + var src_exports = /* @__PURE__ */ __exportAll({ init: () => init });
34 229
230 +//#endregion
231 +//#region \0elementor-package-library-entry
232 + (window.elementorV2 = window.elementorV2 || {}).editorWidgetCreation = src_exports;
35 233
36 -
37 -
38 -
39 -const CREATE_WIDGET_EVENT = 'elementor/editor/create-widget';
40 -const ANGIE_MODAL_PROMOTION_IMAGE_URL = 'https://assets.elementor.com/packages/v1/images/angie-modal-promotion.png';
41 -const ANGIE_CTA_CLICKED_EVENT = 'ai_widget_cta_clicked';
42 -const ANGIE_INSTALL_STARTED_EVENT = 'angie_install_started';
43 -const ANGIE_INSTALL_COMPLETED_EVENT = 'angie_install_completed';
44 -const ANGIE_INSTALL_ABANDONED_EVENT = 'angie_install_abandoned';
45 -function CreateWidgetModal({
46 - prompt,
47 - entryPoint,
48 - onClose
49 -}) {
50 - const [installState, setInstallState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('idle');
51 - const [agreedToTerms, setAgreedToTerms] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
52 - const handleClose = () => {
53 - if (installState === 'installing') {
54 - return;
55 - }
56 - (0,_elementor_events__WEBPACK_IMPORTED_MODULE_3__.trackEvent)({
57 - eventName: ANGIE_INSTALL_ABANDONED_EVENT,
58 - abandon_step: installState === 'error' ? 'install_error' : 'install_modal',
59 - trigger_source: entryPoint
60 - });
61 - onClose();
62 - };
63 - const handleInstall = async () => {
64 - setInstallState('installing');
65 - (0,_elementor_events__WEBPACK_IMPORTED_MODULE_3__.trackEvent)({
66 - eventName: ANGIE_INSTALL_STARTED_EVENT,
67 - trigger_source: entryPoint
68 - });
69 - const [result] = await Promise.all([(0,_elementor_editor_mcp__WEBPACK_IMPORTED_MODULE_1__.installAngiePlugin)(), (0,_elementor_editor_mcp__WEBPACK_IMPORTED_MODULE_1__.saveAngieConsent)()]);
70 - if (!result.success) {
71 - setInstallState('error');
72 - return;
73 - }
74 - (0,_elementor_events__WEBPACK_IMPORTED_MODULE_3__.trackEvent)({
75 - eventName: ANGIE_INSTALL_COMPLETED_EVENT,
76 - trigger_source: entryPoint
77 - });
78 - (0,_elementor_editor_mcp__WEBPACK_IMPORTED_MODULE_1__.redirectToAppAdmin)(prompt);
79 - };
80 - const handleFallbackInstall = () => {
81 - (0,_elementor_editor_mcp__WEBPACK_IMPORTED_MODULE_1__.redirectToInstallation)(prompt);
82 - };
83 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__.ThemeProvider, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.Dialog, {
84 - fullWidth: true,
85 - maxWidth: "md",
86 - open: true,
87 - onClose: handleClose
88 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.IconButton, {
89 - "aria-label": (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__.__)('Close', 'elementor'),
90 - onClick: handleClose,
91 - sx: {
92 - position: 'absolute',
93 - right: 8,
94 - top: 8,
95 - zIndex: 1
96 - }
97 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_4__.XIcon, null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.DialogContent, {
98 - sx: {
99 - p: 0,
100 - overflow: 'hidden'
101 - }
102 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.Stack, {
103 - direction: "row",
104 - sx: {
105 - height: 400
106 - }
107 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.Image, {
108 - sx: {
109 - height: '100%',
110 - aspectRatio: '1 / 1',
111 - objectFit: 'cover',
112 - objectPosition: 'right center'
113 - },
114 - src: ANGIE_MODAL_PROMOTION_IMAGE_URL
115 - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.Stack, {
116 - justifyContent: "space-between",
117 - p: 4
118 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.Stack, {
119 - gap: 2.5,
120 - justifyContent: "center",
121 - sx: {
122 - flex: 1,
123 - paddingInlineEnd: 2.5
124 - }
125 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.Typography, {
126 - variant: "h4",
127 - fontWeight: 600,
128 - color: "text.secondary"
129 - }, installState === 'error' ? (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__.__)('Installation failed', 'elementor') : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__.__)('Create custom widgets with Angie', 'elementor')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.Typography, {
130 - variant: "body2"
131 - }, installState === 'error' ? (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__.__)("We couldn't install Angie automatically. Click below to install it manually.", 'elementor') : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__.__)('Build custom widgets, sections, and code using simple instructions. Install once to start building directly from the editor.', 'elementor')), installState !== 'error' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.FormControlLabel, {
132 - control: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.Checkbox, {
133 - size: "small",
134 - checked: agreedToTerms,
135 - onChange: (_e, checked) => setAgreedToTerms(checked)
136 - }),
137 - label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.Typography, {
138 - variant: "body2",
139 - color: "text.secondary"
140 - }, (0,_interpolate_links__WEBPACK_IMPORTED_MODULE_7__.interpolateLinks)((0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__.sprintf)(
141 - // translators: %1$s is the Terms link, %2$s is the Privacy Policy link.
142 - (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__.__)('I agree to the %1$s & %2$s.', 'elementor'), '{{terms}}', '{{privacy}}'), {
143 - terms: {
144 - label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__.__)('Terms', 'elementor'),
145 - href: 'https://elementor.com/terms/angie-terms-conditions/'
146 - },
147 - privacy: {
148 - label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__.__)('Privacy Policy', 'elementor'),
149 - href: 'https://elementor.com/about/privacy/'
150 - }
151 - }))
152 - })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.Stack, {
153 - direction: "row",
154 - justifyContent: "flex-end"
155 - }, installState === 'error' ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.Button, {
156 - variant: "contained",
157 - color: "accent",
158 - onClick: handleFallbackInstall
159 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__.__)('Install Manually', 'elementor')) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.Button, {
160 - variant: "contained",
161 - color: "accent",
162 - onClick: handleInstall,
163 - disabled: installState === 'installing' || !agreedToTerms,
164 - startIcon: installState === 'installing' ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_5__.CircularProgress, {
165 - size: 18,
166 - color: "inherit"
167 - }) : undefined
168 - }, installState === 'installing' ? (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__.__)('Installing…', 'elementor') : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_6__.__)('Install & Activate', 'elementor'))))))));
169 -}
170 -function CreateWidget() {
171 - const [modalData, setModalData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
172 - (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
173 - const handleShow = event => {
174 - const customEvent = event;
175 - const hasAngieInstalled = (0,_elementor_editor_mcp__WEBPACK_IMPORTED_MODULE_1__.isAngieAvailable)();
176 - (0,_elementor_events__WEBPACK_IMPORTED_MODULE_3__.trackEvent)({
177 - eventName: ANGIE_CTA_CLICKED_EVENT,
178 - entry_point: customEvent.detail.entry_point,
179 - has_angie_installed: hasAngieInstalled
180 - });
181 - if (hasAngieInstalled) {
182 - (0,_elementor_editor_mcp__WEBPACK_IMPORTED_MODULE_1__.sendPromptToAngie)(customEvent.detail?.prompt);
183 - return;
184 - }
185 - setModalData(customEvent.detail);
186 - };
187 - window.addEventListener(CREATE_WIDGET_EVENT, handleShow);
188 - return () => {
189 - window.removeEventListener(CREATE_WIDGET_EVENT, handleShow);
190 - };
191 - }, []);
192 - if (!modalData) {
193 - return null;
194 - }
195 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(CreateWidgetModal, {
196 - prompt: modalData.prompt,
197 - entryPoint: modalData.entry_point,
198 - onClose: () => setModalData(null)
199 - });
200 -}
201 -
202 -/***/ }),
203 -
204 -/***/ "./packages/packages/core/editor-widget-creation/src/init.ts":
205 -/*!*******************************************************************!*\
206 - !*** ./packages/packages/core/editor-widget-creation/src/init.ts ***!
207 - \*******************************************************************/
208 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
209 -
210 -__webpack_require__.r(__webpack_exports__);
211 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
212 -/* harmony export */ init: function() { return /* binding */ init; }
213 -/* harmony export */ });
214 -/* harmony import */ var _elementor_editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor */ "@elementor/editor");
215 -/* harmony import */ var _elementor_editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor__WEBPACK_IMPORTED_MODULE_0__);
216 -/* harmony import */ var _components_create_widget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/create-widget */ "./packages/packages/core/editor-widget-creation/src/components/create-widget.tsx");
217 -
218 -
219 -function init() {
220 - (0,_elementor_editor__WEBPACK_IMPORTED_MODULE_0__.injectIntoTop)({
221 - id: 'create-widget',
222 - component: _components_create_widget__WEBPACK_IMPORTED_MODULE_1__.CreateWidget
223 - });
224 -}
225 -
226 -/***/ }),
227 -
228 -/***/ "./packages/packages/core/editor-widget-creation/src/interpolate-links.tsx":
229 -/*!*********************************************************************************!*\
230 - !*** ./packages/packages/core/editor-widget-creation/src/interpolate-links.tsx ***!
231 - \*********************************************************************************/
232 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
233 -
234 -__webpack_require__.r(__webpack_exports__);
235 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
236 -/* harmony export */ interpolateLinks: function() { return /* binding */ interpolateLinks; }
237 -/* harmony export */ });
238 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
239 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
240 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
241 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_1__);
242 -
243 -
244 -const LINK_PLACEHOLDER_PATTERN = /\{\{(\w+)}}/g;
245 -const interpolateLinks = (text, links) => {
246 - return text.split(LINK_PLACEHOLDER_PATTERN).map((part, i) => {
247 - const link = links[part];
248 - if (!link) {
249 - return part;
250 - }
251 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_1__.Link, {
252 - key: i,
253 - sx: {
254 - px: 0.5
255 - },
256 - href: link.href,
257 - target: "_blank",
258 - rel: "noopener noreferrer"
259 - }, link.label);
260 - });
261 -};
262 -
263 -/***/ }),
264 -
265 -/***/ "@elementor/editor":
266 -/*!*****************************************!*\
267 - !*** external ["elementorV2","editor"] ***!
268 - \*****************************************/
269 -/***/ (function(module) {
270 -
271 -module.exports = window["elementorV2"]["editor"];
272 -
273 -/***/ }),
274 -
275 -/***/ "@elementor/editor-mcp":
276 -/*!********************************************!*\
277 - !*** external ["elementorV2","editorMcp"] ***!
278 - \********************************************/
279 -/***/ (function(module) {
280 -
281 -module.exports = window["elementorV2"]["editorMcp"];
282 -
283 -/***/ }),
284 -
285 -/***/ "@elementor/editor-ui":
286 -/*!*******************************************!*\
287 - !*** external ["elementorV2","editorUi"] ***!
288 - \*******************************************/
289 -/***/ (function(module) {
290 -
291 -module.exports = window["elementorV2"]["editorUi"];
292 -
293 -/***/ }),
294 -
295 -/***/ "@elementor/events":
296 -/*!*****************************************!*\
297 - !*** external ["elementorV2","events"] ***!
298 - \*****************************************/
299 -/***/ (function(module) {
300 -
301 -module.exports = window["elementorV2"]["events"];
302 -
303 -/***/ }),
304 -
305 -/***/ "@elementor/icons":
306 -/*!****************************************!*\
307 - !*** external ["elementorV2","icons"] ***!
308 - \****************************************/
309 -/***/ (function(module) {
310 -
311 -module.exports = window["elementorV2"]["icons"];
312 -
313 -/***/ }),
314 -
315 -/***/ "@elementor/ui":
316 -/*!*************************************!*\
317 - !*** external ["elementorV2","ui"] ***!
318 - \*************************************/
319 -/***/ (function(module) {
320 -
321 -module.exports = window["elementorV2"]["ui"];
322 -
323 -/***/ }),
324 -
325 -/***/ "@wordpress/i18n":
326 -/*!******************************!*\
327 - !*** external ["wp","i18n"] ***!
328 - \******************************/
329 -/***/ (function(module) {
330 -
331 -module.exports = window["wp"]["i18n"];
332 -
333 -/***/ }),
334 -
335 -/***/ "react":
336 -/*!**************************!*\
337 - !*** external ["React"] ***!
338 - \**************************/
339 -/***/ (function(module) {
340 -
341 -module.exports = window["React"];
342 -
343 -/***/ })
344 -
345 -/******/ });
346 -/************************************************************************/
347 -/******/ // The module cache
348 -/******/ var __webpack_module_cache__ = {};
349 -/******/
350 -/******/ // The require function
351 -/******/ function __webpack_require__(moduleId) {
352 -/******/ // Check if module is in cache
353 -/******/ var cachedModule = __webpack_module_cache__[moduleId];
354 -/******/ if (cachedModule !== undefined) {
355 -/******/ return cachedModule.exports;
356 -/******/ }
357 -/******/ // Create a new module (and put it into the cache)
358 -/******/ var module = __webpack_module_cache__[moduleId] = {
359 -/******/ // no module.id needed
360 -/******/ // no module.loaded needed
361 -/******/ exports: {}
362 -/******/ };
363 -/******/
364 -/******/ // Execute the module function
365 -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
366 -/******/
367 -/******/ // Return the exports of the module
368 -/******/ return module.exports;
369 -/******/ }
370 -/******/
371 -/************************************************************************/
372 -/******/ /* webpack/runtime/compat get default export */
373 -/******/ !function() {
374 -/******/ // getDefaultExport function for compatibility with non-harmony modules
375 -/******/ __webpack_require__.n = function(module) {
376 -/******/ var getter = module && module.__esModule ?
377 -/******/ function() { return module['default']; } :
378 -/******/ function() { return module; };
379 -/******/ __webpack_require__.d(getter, { a: getter });
380 -/******/ return getter;
381 -/******/ };
382 -/******/ }();
383 -/******/
384 -/******/ /* webpack/runtime/define property getters */
385 -/******/ !function() {
386 -/******/ // define getter functions for harmony exports
387 -/******/ __webpack_require__.d = function(exports, definition) {
388 -/******/ for(var key in definition) {
389 -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
390 -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
391 -/******/ }
392 -/******/ }
393 -/******/ };
394 -/******/ }();
395 -/******/
396 -/******/ /* webpack/runtime/hasOwnProperty shorthand */
397 -/******/ !function() {
398 -/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
399 -/******/ }();
400 -/******/
401 -/******/ /* webpack/runtime/make namespace object */
402 -/******/ !function() {
403 -/******/ // define __esModule on exports
404 -/******/ __webpack_require__.r = function(exports) {
405 -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
406 -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
407 -/******/ }
408 -/******/ Object.defineProperty(exports, '__esModule', { value: true });
409 -/******/ };
410 -/******/ }();
411 -/******/
412 -/************************************************************************/
413 -var __webpack_exports__ = {};
414 -// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
415 -!function() {
416 -/*!********************************************************************!*\
417 - !*** ./packages/packages/core/editor-widget-creation/src/index.ts ***!
418 - \********************************************************************/
419 -__webpack_require__.r(__webpack_exports__);
420 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
421 -/* harmony export */ init: function() { return /* reexport safe */ _init__WEBPACK_IMPORTED_MODULE_0__.init; }
422 -/* harmony export */ });
423 -/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./init */ "./packages/packages/core/editor-widget-creation/src/init.ts");
424 -
425 -}();
426 -(window.elementorV2 = window.elementorV2 || {}).editorWidgetCreation = __webpack_exports__;
427 -/******/ })()
428 -;
234 +//#endregion
235 +})(elementorV2.editor, React, elementorV2.editorMcp, elementorV2.editorUi, elementorV2.events, elementorV2.icons, elementorV2.ui, wp.i18n);
429 236 window.elementorV2.editorWidgetCreation?.init?.();
430 237 //# sourceMappingURL=editor-widget-creation.js.map