PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.1
Elementor Website Builder – more than just a page builder v4.3.1
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 4.0.8 All 454 releases
elementor / assets / js / packages / editor-widget-creation / editor-widget-creation.js

editor-widget-creation.js in Elementor Website Builder – more than just a page builder 4.3.1, at assets/js/packages/editor-widget-creation/editor-widget-creation.js

237 lines 9.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function(_elementor_editor, react, _elementor_editor_mcp, _elementor_editor_ui, _elementor_events, _elementor_icons, _elementor_ui, _wordpress_i18n) {
2
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));
45
46 //#endregion
47 react = __toESM(react);
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 };
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 }
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 }
225
226 //#endregion
227 //#region packages/packages/core/editor-widget-creation/src/index.ts
228 var src_exports = /* @__PURE__ */ __exportAll({ init: () => init });
229
230 //#endregion
231 //#region \0elementor-package-library-entry
232 (window.elementorV2 = window.elementorV2 || {}).editorWidgetCreation = src_exports;
233
234 //#endregion
235 })(elementorV2.editor, React, elementorV2.editorMcp, elementorV2.editorUi, elementorV2.events, elementorV2.icons, elementorV2.ui, wp.i18n);
236 window.elementorV2.editorWidgetCreation?.init?.();
237 //# sourceMappingURL=editor-widget-creation.js.map