PluginProbe
Elementor Website Builder – more than just a page builder / 3.35.7
Elementor Website Builder – more than just a page builder v3.35.7
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 4.1.0-beta1 4.1.0-dev1 All 452 releases
elementor / assets / js / ai-layout.js

ai-layout.js in Elementor Website Builder – more than just a page builder 3.35.7, at assets/js/ai-layout.js

11,608 lines 522.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /******/ (() => { // webpackBootstrap
2 /******/ var __webpack_modules__ = ({
3
4 /***/ "../assets/dev/js/editor/utils/editor-one-events.js":
5 /*!**********************************************************!*\
6 !*** ../assets/dev/js/editor/utils/editor-one-events.js ***!
7 \**********************************************************/
8 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9
10 "use strict";
11
12
13 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
14 Object.defineProperty(exports, "__esModule", ({
15 value: true
16 }));
17 exports["default"] = exports.createDebouncedWidgetPanelSearch = exports.createDebouncedFinderSearch = exports.EditorOneEventManager = void 0;
18 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
19 var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
20 var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
21 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; }
22 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; }
23 var EditorOneEventManager = exports.EditorOneEventManager = /*#__PURE__*/function () {
24 function EditorOneEventManager() {
25 (0, _classCallCheck2.default)(this, EditorOneEventManager);
26 }
27 return (0, _createClass2.default)(EditorOneEventManager, null, [{
28 key: "getEventsManager",
29 value: function getEventsManager() {
30 var _elementorCommon;
31 return (_elementorCommon = elementorCommon) === null || _elementorCommon === void 0 ? void 0 : _elementorCommon.eventsManager;
32 }
33 }, {
34 key: "getConfig",
35 value: function getConfig() {
36 var _this$getEventsManage;
37 return (_this$getEventsManage = this.getEventsManager()) === null || _this$getEventsManage === void 0 ? void 0 : _this$getEventsManage.config;
38 }
39 }, {
40 key: "canSendEvents",
41 value: function canSendEvents() {
42 var _elementorCommon2;
43 return ((_elementorCommon2 = elementorCommon) === null || _elementorCommon2 === void 0 || (_elementorCommon2 = _elementorCommon2.config) === null || _elementorCommon2 === void 0 || (_elementorCommon2 = _elementorCommon2.editor_events) === null || _elementorCommon2 === void 0 ? void 0 : _elementorCommon2.can_send_events) || false;
44 }
45 }, {
46 key: "isEventsManagerAvailable",
47 value: function isEventsManagerAvailable() {
48 var eventsManager = this.getEventsManager();
49 return eventsManager && 'function' === typeof eventsManager.dispatchEvent;
50 }
51 }, {
52 key: "dispatchEvent",
53 value: function dispatchEvent(eventName, payload) {
54 if (!this.isEventsManagerAvailable() || !this.canSendEvents()) {
55 return false;
56 }
57 try {
58 return this.getEventsManager().dispatchEvent(eventName, payload);
59 } catch (error) {
60 return false;
61 }
62 }
63 }, {
64 key: "toLowerSnake",
65 value: function toLowerSnake(value) {
66 if (!value || 'string' !== typeof value) {
67 return value;
68 }
69 return value.replace(/\s+/g, '_').toLowerCase();
70 }
71 }, {
72 key: "decodeHtmlEntities",
73 value: function decodeHtmlEntities(text) {
74 if (!text || 'string' !== typeof text) {
75 return text;
76 }
77 var doc = new DOMParser().parseFromString(text, 'text/html');
78 return doc.body.textContent || text;
79 }
80 }, {
81 key: "isInEditorContext",
82 value: function isInEditorContext() {
83 var _window$elementor;
84 return 'undefined' !== typeof window.elementor && !!((_window$elementor = window.elementor) !== null && _window$elementor !== void 0 && _window$elementor.documents);
85 }
86 }, {
87 key: "getFinderContext",
88 value: function getFinderContext() {
89 var _config$appTypes, _config$appTypes2, _config$locations, _config$locations2;
90 var config = this.getConfig();
91 var isEditor = this.isInEditorContext();
92 return {
93 windowName: isEditor ? config === null || config === void 0 || (_config$appTypes = config.appTypes) === null || _config$appTypes === void 0 ? void 0 : _config$appTypes.editor : config === null || config === void 0 || (_config$appTypes2 = config.appTypes) === null || _config$appTypes2 === void 0 ? void 0 : _config$appTypes2.wpAdmin,
94 targetLocation: this.toLowerSnake(isEditor ? config === null || config === void 0 || (_config$locations = config.locations) === null || _config$locations === void 0 ? void 0 : _config$locations.topBar : config === null || config === void 0 || (_config$locations2 = config.locations) === null || _config$locations2 === void 0 ? void 0 : _config$locations2.sidebar)
95 };
96 }
97 }, {
98 key: "createBasePayload",
99 value: function createBasePayload() {
100 var _config$appTypes$edit, _config$appTypes3, _config$appTypes$edit2, _config$appTypes4;
101 var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
102 var config = this.getConfig();
103 return _objectSpread({
104 app_type: (_config$appTypes$edit = config === null || config === void 0 || (_config$appTypes3 = config.appTypes) === null || _config$appTypes3 === void 0 ? void 0 : _config$appTypes3.editor) !== null && _config$appTypes$edit !== void 0 ? _config$appTypes$edit : 'editor',
105 window_name: (_config$appTypes$edit2 = config === null || config === void 0 || (_config$appTypes4 = config.appTypes) === null || _config$appTypes4 === void 0 ? void 0 : _config$appTypes4.editor) !== null && _config$appTypes$edit2 !== void 0 ? _config$appTypes$edit2 : 'editor'
106 }, overrides);
107 }
108 }, {
109 key: "sendTopBarPublishDropdown",
110 value: function sendTopBarPublishDropdown(targetName) {
111 var _config$names, _config$triggers, _config$targetTypes, _config$interactionRe, _config$locations3, _config$secondaryLoca, _config$targetTypes2;
112 var config = this.getConfig();
113 return this.dispatchEvent(config === null || config === void 0 || (_config$names = config.names) === null || _config$names === void 0 || (_config$names = _config$names.editorOne) === null || _config$names === void 0 ? void 0 : _config$names.topBarPublishDropdown, this.createBasePayload({
114 interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers = config.triggers) === null || _config$triggers === void 0 ? void 0 : _config$triggers.click),
115 target_type: config === null || config === void 0 || (_config$targetTypes = config.targetTypes) === null || _config$targetTypes === void 0 ? void 0 : _config$targetTypes.dropdownItem,
116 target_name: targetName,
117 interaction_result: config === null || config === void 0 || (_config$interactionRe = config.interactionResults) === null || _config$interactionRe === void 0 ? void 0 : _config$interactionRe.actionSelected,
118 target_location: this.toLowerSnake(config === null || config === void 0 || (_config$locations3 = config.locations) === null || _config$locations3 === void 0 ? void 0 : _config$locations3.topBar),
119 location_l1: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca = config.secondaryLocations) === null || _config$secondaryLoca === void 0 ? void 0 : _config$secondaryLoca.publishDropdown),
120 location_l2: config === null || config === void 0 || (_config$targetTypes2 = config.targetTypes) === null || _config$targetTypes2 === void 0 ? void 0 : _config$targetTypes2.dropdownItem,
121 interaction_description: 'User selected an action from the publish dropdown'
122 }));
123 }
124 }, {
125 key: "sendTopBarPageList",
126 value: function sendTopBarPageList(targetName) {
127 var _config$names2, _config$triggers2, _config$targetTypes3, _config$interactionRe2, _config$interactionRe3, _config$locations4, _config$secondaryLoca2, _config$targetTypes4;
128 var isCreate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
129 var config = this.getConfig();
130 return this.dispatchEvent(config === null || config === void 0 || (_config$names2 = config.names) === null || _config$names2 === void 0 || (_config$names2 = _config$names2.editorOne) === null || _config$names2 === void 0 ? void 0 : _config$names2.topBarPageList, this.createBasePayload({
131 interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers2 = config.triggers) === null || _config$triggers2 === void 0 ? void 0 : _config$triggers2.click),
132 target_type: config === null || config === void 0 || (_config$targetTypes3 = config.targetTypes) === null || _config$targetTypes3 === void 0 ? void 0 : _config$targetTypes3.dropdownItem,
133 target_name: targetName,
134 interaction_result: isCreate ? config === null || config === void 0 || (_config$interactionRe2 = config.interactionResults) === null || _config$interactionRe2 === void 0 ? void 0 : _config$interactionRe2.create : config === null || config === void 0 || (_config$interactionRe3 = config.interactionResults) === null || _config$interactionRe3 === void 0 ? void 0 : _config$interactionRe3.navigate,
135 target_location: this.toLowerSnake(config === null || config === void 0 || (_config$locations4 = config.locations) === null || _config$locations4 === void 0 ? void 0 : _config$locations4.topBar),
136 location_l1: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca2 = config.secondaryLocations) === null || _config$secondaryLoca2 === void 0 ? void 0 : _config$secondaryLoca2.pageListDropdown),
137 location_l2: config === null || config === void 0 || (_config$targetTypes4 = config.targetTypes) === null || _config$targetTypes4 === void 0 ? void 0 : _config$targetTypes4.dropdownItem,
138 interaction_description: 'User selected an action from the page list dropdown'
139 }));
140 }
141 }, {
142 key: "sendSiteSettingsSession",
143 value: function sendSiteSettingsSession(_ref) {
144 var _config$names3, _config$triggers3, _config$interactionRe4, _config$locations5, _config$secondaryLoca3;
145 var targetType = _ref.targetType,
146 _ref$visitedItems = _ref.visitedItems,
147 visitedItems = _ref$visitedItems === void 0 ? [] : _ref$visitedItems,
148 _ref$savedItems = _ref.savedItems,
149 savedItems = _ref$savedItems === void 0 ? [] : _ref$savedItems,
150 state = _ref.state;
151 var config = this.getConfig();
152 return this.dispatchEvent(config === null || config === void 0 || (_config$names3 = config.names) === null || _config$names3 === void 0 || (_config$names3 = _config$names3.editorOne) === null || _config$names3 === void 0 ? void 0 : _config$names3.siteSettingsSession, this.createBasePayload({
153 interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers3 = config.triggers) === null || _config$triggers3 === void 0 ? void 0 : _config$triggers3.click),
154 target_type: targetType,
155 target_name: 'site_settings',
156 interaction_result: config === null || config === void 0 || (_config$interactionRe4 = config.interactionResults) === null || _config$interactionRe4 === void 0 ? void 0 : _config$interactionRe4.sessionEnd,
157 target_location: this.toLowerSnake(config === null || config === void 0 || (_config$locations5 = config.locations) === null || _config$locations5 === void 0 ? void 0 : _config$locations5.leftPanel),
158 location_l1: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca3 = config.secondaryLocations) === null || _config$secondaryLoca3 === void 0 ? void 0 : _config$secondaryLoca3.siteSettings),
159 interaction_description: 'Records areas visited as part of the site setting session',
160 metadata: {
161 visited_items: visitedItems,
162 saved_items: savedItems
163 },
164 state: state
165 }));
166 }
167 }, {
168 key: "sendELibraryNav",
169 value: function sendELibraryNav(tabName) {
170 var _config$names4, _config$triggers4, _config$targetTypes5, _config$interactionRe5, _config$locations6, _config$secondaryLoca4;
171 var config = this.getConfig();
172 return this.dispatchEvent(config === null || config === void 0 || (_config$names4 = config.names) === null || _config$names4 === void 0 || (_config$names4 = _config$names4.editorOne) === null || _config$names4 === void 0 ? void 0 : _config$names4.eLibraryNav, this.createBasePayload({
173 interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers4 = config.triggers) === null || _config$triggers4 === void 0 ? void 0 : _config$triggers4.tabSelect),
174 target_type: config === null || config === void 0 || (_config$targetTypes5 = config.targetTypes) === null || _config$targetTypes5 === void 0 ? void 0 : _config$targetTypes5.tab,
175 target_name: this.toLowerSnake(tabName),
176 interaction_result: config === null || config === void 0 || (_config$interactionRe5 = config.interactionResults) === null || _config$interactionRe5 === void 0 ? void 0 : _config$interactionRe5.tabChanged,
177 target_location: this.toLowerSnake(config === null || config === void 0 || (_config$locations6 = config.locations) === null || _config$locations6 === void 0 ? void 0 : _config$locations6.elementorLibrary),
178 location_l1: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca4 = config.secondaryLocations) === null || _config$secondaryLoca4 === void 0 ? void 0 : _config$secondaryLoca4.libraryTabs),
179 interaction_description: 'User navigates within elementor library'
180 }));
181 }
182 }, {
183 key: "sendELibraryInsert",
184 value: function sendELibraryInsert(_ref2) {
185 var _config$triggers5, _config$targetTypes6, _config$interactionRe6, _config$locations7, _config$secondaryLoca5, _config$names5;
186 var assetId = _ref2.assetId,
187 assetName = _ref2.assetName,
188 libraryType = _ref2.libraryType,
189 _ref2$proRequired = _ref2.proRequired,
190 proRequired = _ref2$proRequired === void 0 ? false : _ref2$proRequired;
191 var config = this.getConfig();
192 var payload = this.createBasePayload({
193 interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers5 = config.triggers) === null || _config$triggers5 === void 0 ? void 0 : _config$triggers5.insert),
194 target_type: config === null || config === void 0 || (_config$targetTypes6 = config.targetTypes) === null || _config$targetTypes6 === void 0 ? void 0 : _config$targetTypes6.button,
195 target_name: String(assetId),
196 interaction_result: config === null || config === void 0 || (_config$interactionRe6 = config.interactionResults) === null || _config$interactionRe6 === void 0 ? void 0 : _config$interactionRe6.assetInserted,
197 target_location: this.toLowerSnake(config === null || config === void 0 || (_config$locations7 = config.locations) === null || _config$locations7 === void 0 ? void 0 : _config$locations7.elementorLibrary),
198 location_l1: this.toLowerSnake(libraryType),
199 location_l2: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca5 = config.secondaryLocations) === null || _config$secondaryLoca5 === void 0 ? void 0 : _config$secondaryLoca5.assetCard),
200 interaction_description: 'User inserts block/pages from elementor library',
201 metadata: {
202 template_id: String(assetId),
203 template_name: this.decodeHtmlEntities(assetName) || ''
204 }
205 });
206 if (proRequired) {
207 payload.state = 'pro_plan_required';
208 }
209 return this.dispatchEvent(config === null || config === void 0 || (_config$names5 = config.names) === null || _config$names5 === void 0 || (_config$names5 = _config$names5.editorOne) === null || _config$names5 === void 0 ? void 0 : _config$names5.eLibraryInsert, payload);
210 }
211 }, {
212 key: "sendELibraryFavorite",
213 value: function sendELibraryFavorite(_ref3) {
214 var _config$triggers6, _config$targetTypes7, _config$interactionRe7, _config$locations8, _config$secondaryLoca6, _config$names6;
215 var assetId = _ref3.assetId,
216 assetName = _ref3.assetName,
217 libraryType = _ref3.libraryType,
218 isFavorite = _ref3.isFavorite,
219 _ref3$proRequired = _ref3.proRequired,
220 proRequired = _ref3$proRequired === void 0 ? false : _ref3$proRequired;
221 var config = this.getConfig();
222 var payload = this.createBasePayload({
223 interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers6 = config.triggers) === null || _config$triggers6 === void 0 ? void 0 : _config$triggers6.click),
224 target_type: config === null || config === void 0 || (_config$targetTypes7 = config.targetTypes) === null || _config$targetTypes7 === void 0 ? void 0 : _config$targetTypes7.toggle,
225 target_name: String(assetId),
226 interaction_result: config === null || config === void 0 || (_config$interactionRe7 = config.interactionResults) === null || _config$interactionRe7 === void 0 ? void 0 : _config$interactionRe7.assetFavorite,
227 target_value: Boolean(isFavorite),
228 target_location: this.toLowerSnake(config === null || config === void 0 || (_config$locations8 = config.locations) === null || _config$locations8 === void 0 ? void 0 : _config$locations8.elementorLibrary),
229 location_l1: this.toLowerSnake(libraryType),
230 location_l2: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca6 = config.secondaryLocations) === null || _config$secondaryLoca6 === void 0 ? void 0 : _config$secondaryLoca6.assetCard),
231 interaction_description: 'User favorite block/pages from elementor library',
232 metadata: {
233 template_id: String(assetId),
234 template_name: this.decodeHtmlEntities(assetName) || ''
235 }
236 });
237 if (proRequired) {
238 payload.state = 'pro_plan_required';
239 }
240 return this.dispatchEvent(config === null || config === void 0 || (_config$names6 = config.names) === null || _config$names6 === void 0 || (_config$names6 = _config$names6.editorOne) === null || _config$names6 === void 0 ? void 0 : _config$names6.eLibraryFavorite, payload);
241 }
242 }, {
243 key: "sendELibraryGenerateAi",
244 value: function sendELibraryGenerateAi(_ref4) {
245 var _config$names7, _config$triggers7, _config$targetTypes8, _config$interactionRe8, _config$locations9, _config$secondaryLoca7;
246 var assetId = _ref4.assetId,
247 assetName = _ref4.assetName,
248 libraryType = _ref4.libraryType;
249 var config = this.getConfig();
250 return this.dispatchEvent(config === null || config === void 0 || (_config$names7 = config.names) === null || _config$names7 === void 0 || (_config$names7 = _config$names7.editorOne) === null || _config$names7 === void 0 ? void 0 : _config$names7.eLibraryGenerateAi, this.createBasePayload({
251 interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers7 = config.triggers) === null || _config$triggers7 === void 0 ? void 0 : _config$triggers7.click),
252 target_type: config === null || config === void 0 || (_config$targetTypes8 = config.targetTypes) === null || _config$targetTypes8 === void 0 ? void 0 : _config$targetTypes8.button,
253 target_name: String(assetId),
254 interaction_result: config === null || config === void 0 || (_config$interactionRe8 = config.interactionResults) === null || _config$interactionRe8 === void 0 ? void 0 : _config$interactionRe8.aiGenerate,
255 target_location: this.toLowerSnake(config === null || config === void 0 || (_config$locations9 = config.locations) === null || _config$locations9 === void 0 ? void 0 : _config$locations9.elementorLibrary),
256 location_l1: this.toLowerSnake(libraryType),
257 location_l2: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca7 = config.secondaryLocations) === null || _config$secondaryLoca7 === void 0 ? void 0 : _config$secondaryLoca7.assetCard),
258 interaction_description: 'User generated block/page based on a library asset',
259 metadata: {
260 template_id: String(assetId),
261 template_name: this.decodeHtmlEntities(assetName) || ''
262 }
263 }));
264 }
265 }, {
266 key: "sendFinderSearchInput",
267 value: function sendFinderSearchInput(_ref5) {
268 var _config$triggers8, _config$targetTypes9, _config$interactionRe9, _config$interactionRe0, _config$secondaryLoca8, _config$names8;
269 var resultsCount = _ref5.resultsCount,
270 _ref5$searchTerm = _ref5.searchTerm,
271 searchTerm = _ref5$searchTerm === void 0 ? null : _ref5$searchTerm;
272 var config = this.getConfig();
273 var hasResults = resultsCount > 0;
274 var finderContext = this.getFinderContext();
275 var payload = this.createBasePayload({
276 window_name: finderContext.windowName,
277 interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers8 = config.triggers) === null || _config$triggers8 === void 0 ? void 0 : _config$triggers8.typing),
278 target_type: config === null || config === void 0 || (_config$targetTypes9 = config.targetTypes) === null || _config$targetTypes9 === void 0 ? void 0 : _config$targetTypes9.searchInput,
279 target_name: 'finder',
280 interaction_result: hasResults ? config === null || config === void 0 || (_config$interactionRe9 = config.interactionResults) === null || _config$interactionRe9 === void 0 ? void 0 : _config$interactionRe9.resultsUpdated : config === null || config === void 0 || (_config$interactionRe0 = config.interactionResults) === null || _config$interactionRe0 === void 0 ? void 0 : _config$interactionRe0.noResults,
281 target_location: finderContext.targetLocation,
282 location_l1: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca8 = config.secondaryLocations) === null || _config$secondaryLoca8 === void 0 ? void 0 : _config$secondaryLoca8.finder),
283 interaction_description: 'Finder search input, follows debounce behavior',
284 metadata: {
285 results_count: resultsCount
286 }
287 });
288 if (!hasResults && searchTerm) {
289 payload.metadata.search_term = searchTerm;
290 }
291 return this.dispatchEvent(config === null || config === void 0 || (_config$names8 = config.names) === null || _config$names8 === void 0 || (_config$names8 = _config$names8.editorOne) === null || _config$names8 === void 0 ? void 0 : _config$names8.finderSearchInput, payload);
292 }
293 }, {
294 key: "sendFinderResultSelect",
295 value: function sendFinderResultSelect(choice) {
296 var _config$names9, _config$triggers9, _config$targetTypes0, _config$interactionRe1, _config$secondaryLoca9, _config$secondaryLoca0;
297 var config = this.getConfig();
298 var finderContext = this.getFinderContext();
299 return this.dispatchEvent(config === null || config === void 0 || (_config$names9 = config.names) === null || _config$names9 === void 0 || (_config$names9 = _config$names9.editorOne) === null || _config$names9 === void 0 ? void 0 : _config$names9.finderResultSelect, this.createBasePayload({
300 window_name: finderContext.windowName,
301 interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers9 = config.triggers) === null || _config$triggers9 === void 0 ? void 0 : _config$triggers9.click),
302 target_type: config === null || config === void 0 || (_config$targetTypes0 = config.targetTypes) === null || _config$targetTypes0 === void 0 ? void 0 : _config$targetTypes0.searchResult,
303 target_name: choice,
304 interaction_result: config === null || config === void 0 || (_config$interactionRe1 = config.interactionResults) === null || _config$interactionRe1 === void 0 ? void 0 : _config$interactionRe1.selected,
305 target_location: finderContext.targetLocation,
306 location_l1: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca9 = config.secondaryLocations) === null || _config$secondaryLoca9 === void 0 ? void 0 : _config$secondaryLoca9.finder),
307 location_l2: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca0 = config.secondaryLocations) === null || _config$secondaryLoca0 === void 0 ? void 0 : _config$secondaryLoca0.finderResults),
308 interaction_description: 'Finder search results was selected'
309 }));
310 }
311 }, {
312 key: "sendCanvasEmptyBoxAction",
313 value: function sendCanvasEmptyBoxAction(_ref6) {
314 var _config$triggers0, _config$targetTypes1, _config$interactionRe10, _config$locations0, _config$secondaryLoca1, _config$names0;
315 var targetName = _ref6.targetName,
316 _ref6$metadata = _ref6.metadata,
317 metadata = _ref6$metadata === void 0 ? {} : _ref6$metadata,
318 _ref6$containerCreate = _ref6.containerCreated,
319 containerCreated = _ref6$containerCreate === void 0 ? null : _ref6$containerCreate;
320 var config = this.getConfig();
321 var payload = this.createBasePayload({
322 interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers0 = config.triggers) === null || _config$triggers0 === void 0 ? void 0 : _config$triggers0.click),
323 target_type: config === null || config === void 0 || (_config$targetTypes1 = config.targetTypes) === null || _config$targetTypes1 === void 0 ? void 0 : _config$targetTypes1.buttons,
324 target_name: targetName,
325 interaction_result: config === null || config === void 0 || (_config$interactionRe10 = config.interactionResults) === null || _config$interactionRe10 === void 0 ? void 0 : _config$interactionRe10.selected,
326 target_location: this.toLowerSnake(config === null || config === void 0 || (_config$locations0 = config.locations) === null || _config$locations0 === void 0 ? void 0 : _config$locations0.canvas),
327 location_l1: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca1 = config.secondaryLocations) === null || _config$secondaryLoca1 === void 0 ? void 0 : _config$secondaryLoca1.emptyBox),
328 interaction_description: 'Empty box on canvas actions'
329 });
330 if (Object.keys(metadata).length > 0) {
331 payload.metadata = metadata;
332 }
333 if (containerCreated !== null) {
334 payload.state = containerCreated;
335 }
336 return this.dispatchEvent(config === null || config === void 0 || (_config$names0 = config.names) === null || _config$names0 === void 0 || (_config$names0 = _config$names0.editorOne) === null || _config$names0 === void 0 ? void 0 : _config$names0.canvasEmptyBoxAction, payload);
337 }
338 }, {
339 key: "sendWidgetPanelSearch",
340 value: function sendWidgetPanelSearch(_ref7) {
341 var _config$triggers1, _config$targetTypes10, _config$interactionRe11, _config$interactionRe12, _config$locations1, _config$locations10, _config$secondaryLoca10, _config$names1;
342 var resultsCount = _ref7.resultsCount,
343 _ref7$userInput = _ref7.userInput,
344 userInput = _ref7$userInput === void 0 ? null : _ref7$userInput;
345 var config = this.getConfig();
346 var hasResults = resultsCount > 0;
347 var payload = this.createBasePayload({
348 interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers1 = config.triggers) === null || _config$triggers1 === void 0 ? void 0 : _config$triggers1.typing),
349 target_type: config === null || config === void 0 || (_config$targetTypes10 = config.targetTypes) === null || _config$targetTypes10 === void 0 ? void 0 : _config$targetTypes10.searchWidget,
350 target_name: 'search_widget',
351 interaction_result: hasResults ? config === null || config === void 0 || (_config$interactionRe11 = config.interactionResults) === null || _config$interactionRe11 === void 0 ? void 0 : _config$interactionRe11.resultsUpdated : config === null || config === void 0 || (_config$interactionRe12 = config.interactionResults) === null || _config$interactionRe12 === void 0 ? void 0 : _config$interactionRe12.noResults,
352 target_location: this.toLowerSnake(config === null || config === void 0 || (_config$locations1 = config.locations) === null || _config$locations1 === void 0 ? void 0 : _config$locations1.leftPanel),
353 location_l1: this.toLowerSnake(config === null || config === void 0 || (_config$locations10 = config.locations) === null || _config$locations10 === void 0 ? void 0 : _config$locations10.widgetPanel),
354 location_l2: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca10 = config.secondaryLocations) === null || _config$secondaryLoca10 === void 0 ? void 0 : _config$secondaryLoca10.searchBar),
355 interaction_description: 'Widget search input, follows debounce behavior'
356 });
357 if (!hasResults && userInput) {
358 payload.metadata = {
359 user_input: userInput
360 };
361 }
362 return this.dispatchEvent(config === null || config === void 0 || (_config$names1 = config.names) === null || _config$names1 === void 0 || (_config$names1 = _config$names1.editorOne) === null || _config$names1 === void 0 ? void 0 : _config$names1.widgetPanelSearch, payload);
363 }
364 }]);
365 }();
366 var createDebouncedFinderSearch = exports.createDebouncedFinderSearch = function createDebouncedFinderSearch() {
367 var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 300;
368 return _.debounce(function (resultsCount, searchTerm) {
369 EditorOneEventManager.sendFinderSearchInput({
370 resultsCount: resultsCount,
371 searchTerm: searchTerm
372 });
373 }, delay);
374 };
375 var createDebouncedWidgetPanelSearch = exports.createDebouncedWidgetPanelSearch = function createDebouncedWidgetPanelSearch() {
376 var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2000;
377 return _.debounce(function (resultsCount, userInput) {
378 EditorOneEventManager.sendWidgetPanelSearch({
379 resultsCount: resultsCount,
380 userInput: userInput
381 });
382 }, delay);
383 };
384 var _default = exports["default"] = EditorOneEventManager;
385
386 /***/ }),
387
388 /***/ "../assets/dev/js/utils/react.js":
389 /*!***************************************!*\
390 !*** ../assets/dev/js/utils/react.js ***!
391 \***************************************/
392 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
393
394 "use strict";
395
396
397 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
398 Object.defineProperty(exports, "__esModule", ({
399 value: true
400 }));
401 exports["default"] = void 0;
402 var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
403 var ReactDOM = _interopRequireWildcard(__webpack_require__(/*! react-dom */ "react-dom"));
404 var _client = __webpack_require__(/*! react-dom/client */ "../node_modules/react-dom/client.js");
405 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
406 /**
407 * Support conditional rendering of a React App to the DOM, based on the React version.
408 * We use `createRoot` when available, but fallback to `ReactDOM.render` for older versions.
409 *
410 * @param { React.ReactElement } app The app to render.
411 * @param { HTMLElement } domElement The DOM element to render the app into.
412 *
413 * @return {{ unmount: () => void }} The unmount function.
414 */
415 function render(app, domElement) {
416 var unmountFunction;
417 try {
418 var root = (0, _client.createRoot)(domElement);
419 root.render(app);
420 unmountFunction = function unmountFunction() {
421 root.unmount();
422 };
423 } catch (e) {
424 // eslint-disable-next-line react/no-deprecated
425 ReactDOM.render(app, domElement);
426 unmountFunction = function unmountFunction() {
427 // eslint-disable-next-line react/no-deprecated
428 ReactDOM.unmountComponentAtNode(domElement);
429 };
430 }
431 return {
432 unmount: unmountFunction
433 };
434 }
435 var _default = exports["default"] = {
436 render: render
437 };
438
439 /***/ }),
440
441 /***/ "../modules/ai/assets/js/editor/ai-layout-behavior.js":
442 /*!************************************************************!*\
443 !*** ../modules/ai/assets/js/editor/ai-layout-behavior.js ***!
444 \************************************************************/
445 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
446
447 "use strict";
448
449
450 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
451 Object.defineProperty(exports, "__esModule", ({
452 value: true
453 }));
454 exports["default"] = void 0;
455 var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
456 var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
457 var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"));
458 var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"));
459 var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"));
460 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
461 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
462 var _editorIntegration = __webpack_require__(/*! ./utils/editor-integration */ "../modules/ai/assets/js/editor/utils/editor-integration.js");
463 var _config = __webpack_require__(/*! ./pages/form-layout/context/config */ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js");
464 var _editorOneEvents = __webpack_require__(/*! elementor-editor-utils/editor-one-events */ "../assets/dev/js/editor/utils/editor-one-events.js");
465 function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
466 function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
467 var AiLayoutBehavior = exports["default"] = /*#__PURE__*/function (_Marionette$Behavior) {
468 function AiLayoutBehavior() {
469 var _this;
470 (0, _classCallCheck2.default)(this, AiLayoutBehavior);
471 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
472 args[_key] = arguments[_key];
473 }
474 _this = _callSuper(this, AiLayoutBehavior, [].concat(args));
475 (0, _defineProperty2.default)(_this, "previewContainer", null);
476 return _this;
477 }
478 (0, _inherits2.default)(AiLayoutBehavior, _Marionette$Behavior);
479 return (0, _createClass2.default)(AiLayoutBehavior, [{
480 key: "ui",
481 value: function ui() {
482 return {
483 aiButton: '.e-ai-layout-button',
484 addTemplateButton: '.elementor-add-template-button'
485 };
486 }
487 }, {
488 key: "events",
489 value: function events() {
490 return {
491 'click @ui.aiButton': 'onAiButtonClick'
492 };
493 }
494 }, {
495 key: "onAiButtonClick",
496 value: function onAiButtonClick(e) {
497 e.stopPropagation();
498 _editorOneEvents.EditorOneEventManager.sendCanvasEmptyBoxAction({
499 targetName: 'generate_with_ai'
500 });
501 window.elementorAiCurrentContext = this.getOption('context');
502 (0, _editorIntegration.renderLayoutApp)({
503 parentContainer: elementor.getPreviewContainer(),
504 mode: _config.MODE_LAYOUT,
505 at: this.view.getOption('at'),
506 onInsert: this.onInsert.bind(this),
507 onRenderApp: function onRenderApp(args) {
508 args.previewContainer.init();
509 },
510 onGenerate: function onGenerate(args) {
511 args.previewContainer.reset();
512 }
513 });
514 }
515 }, {
516 key: "hideDropArea",
517 value: function hideDropArea() {
518 this.view.onCloseButtonClick();
519 }
520 }, {
521 key: "onInsert",
522 value: function onInsert(template) {
523 this.hideDropArea();
524 (0, _editorIntegration.importToEditor)({
525 parentContainer: elementor.getPreviewContainer(),
526 at: this.view.getOption('at'),
527 template: template,
528 historyTitle: (0, _i18n.__)('AI Layout', 'elementor')
529 });
530 }
531 }, {
532 key: "onRender",
533 value: function onRender() {
534 var $button = jQuery('<button>', {
535 type: 'button',
536 class: 'e-ai-layout-button elementor-add-section-area-button e-button-primary',
537 title: (0, _i18n.__)('Build with AI', 'elementor'),
538 'aria-label': (0, _i18n.__)('Build with AI', 'elementor')
539 });
540 $button.html("\n\t\t\t<div class=\"e-ai-layout-button--sparkle\"></div>\n\t\t\t<div class=\"e-ai-layout-button--sparkle\"></div>\n\t\t\t<div class=\"e-ai-layout-button--sparkle\"></div>\n\t\t\t<div class=\"e-ai-layout-button--sparkle\"></div>\n\t\t\t<div class=\"e-ai-layout-button--sparkle\"></div>\n\t\t\t<div class=\"e-ai-layout-button--sparkle\"></div>\n\t\t\t<div class=\"e-ai-layout-button--sparkle\"></div>\n\t\t\t<i class=\"eicon-ai\" aria-hidden=\"true\"></i>\n\t\t");
541 this.ui.addTemplateButton.after($button);
542 }
543 }]);
544 }(Marionette.Behavior);
545
546 /***/ }),
547
548 /***/ "../modules/ai/assets/js/editor/api/index.js":
549 /*!***************************************************!*\
550 !*** ../modules/ai/assets/js/editor/api/index.js ***!
551 \***************************************************/
552 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
553
554 "use strict";
555
556
557 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
558 Object.defineProperty(exports, "__esModule", ({
559 value: true
560 }));
561 exports.uploadImage = exports.toggleFavoriteHistoryItem = exports.setStatusFeedback = exports.setGetStarted = exports.getUserInformation = exports.getTextToImageGeneration = exports.getRemoteFrontendConfig = exports.getRemoteConfig = exports.getProductImageUnification = exports.getLayoutPromptEnhanced = exports.getImageToImageUpscale = exports.getImageToImageReplaceBackground = exports.getImageToImageRemoveText = exports.getImageToImageRemoveBackground = exports.getImageToImageOutPainting = exports.getImageToImageMaskGeneration = exports.getImageToImageMaskCleanup = exports.getImageToImageIsolateObjects = exports.getImageToImageGeneration = exports.getImagePromptEnhanced = exports.getHistory = exports.getFeaturedImage = exports.getExcerpt = exports.getEditText = exports.getCustomCode = exports.getCustomCSS = exports.getCompletionText = exports.getAnimation = exports.generateLayout = exports.deleteHistoryItem = void 0;
562 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
563 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; }
564 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; }
565 var request = function request(endpoint) {
566 var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
567 var immediately = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
568 var signal = arguments.length > 3 ? arguments[3] : undefined;
569 if (Object.keys(data).length) {
570 if (window.elementorAiCurrentContext) {
571 data.context = window.elementorAiCurrentContext;
572 } else {
573 data.context = window.elementorWpAiCurrentContext;
574 }
575 }
576 return new Promise(function (resolve, reject) {
577 var ajaxData = elementorCommon.ajax.addRequest(endpoint, {
578 success: resolve,
579 error: reject,
580 data: data,
581 unique_id: data.unique_id
582 }, immediately);
583 if (signal && ajaxData.jqXhr) {
584 signal.addEventListener('abort', ajaxData.jqXhr.abort);
585 }
586 });
587 };
588 var getUserInformation = exports.getUserInformation = function getUserInformation(immediately) {
589 return request('ai_get_user_information', undefined, immediately);
590 };
591 var getRemoteConfig = exports.getRemoteConfig = function getRemoteConfig() {
592 return request('ai_get_remote_config');
593 };
594 var getRemoteFrontendConfig = exports.getRemoteFrontendConfig = function getRemoteFrontendConfig(payload, immediately) {
595 return request('ai_get_remote_frontend_config', {
596 payload: payload
597 }, immediately);
598 };
599 var getCompletionText = exports.getCompletionText = function getCompletionText(payload) {
600 return request('ai_get_completion_text', {
601 payload: payload
602 });
603 };
604 var getExcerpt = exports.getExcerpt = function getExcerpt(payload) {
605 return request('ai_get_excerpt', {
606 payload: payload
607 });
608 };
609 var getFeaturedImage = exports.getFeaturedImage = function getFeaturedImage(payload) {
610 return request('ai_get_featured_image', {
611 payload: payload
612 });
613 };
614 var getEditText = exports.getEditText = function getEditText(payload) {
615 return request('ai_get_edit_text', {
616 payload: payload
617 });
618 };
619 var getCustomCode = exports.getCustomCode = function getCustomCode(payload) {
620 return request('ai_get_custom_code', {
621 payload: payload
622 });
623 };
624 var getCustomCSS = exports.getCustomCSS = function getCustomCSS(payload) {
625 return request('ai_get_custom_css', {
626 payload: payload
627 });
628 };
629 var setGetStarted = exports.setGetStarted = function setGetStarted() {
630 return request('ai_set_get_started');
631 };
632 var setStatusFeedback = exports.setStatusFeedback = function setStatusFeedback(responseId) {
633 return request('ai_set_status_feedback', {
634 response_id: responseId
635 }, true);
636 };
637 var getTextToImageGeneration = exports.getTextToImageGeneration = function getTextToImageGeneration(payload) {
638 return request('ai_get_text_to_image', {
639 payload: payload
640 });
641 };
642 var getImageToImageGeneration = exports.getImageToImageGeneration = function getImageToImageGeneration(payload) {
643 return request('ai_get_image_to_image', {
644 payload: payload
645 });
646 };
647 var getImageToImageMaskCleanup = exports.getImageToImageMaskCleanup = function getImageToImageMaskCleanup(payload) {
648 return request('ai_get_image_to_image_mask_cleanup', {
649 payload: payload
650 });
651 };
652 var getImageToImageMaskGeneration = exports.getImageToImageMaskGeneration = function getImageToImageMaskGeneration(payload) {
653 return request('ai_get_image_to_image_mask', {
654 payload: payload
655 });
656 };
657 var getImageToImageOutPainting = exports.getImageToImageOutPainting = function getImageToImageOutPainting(payload) {
658 return request('ai_get_image_to_image_outpainting', {
659 payload: payload
660 });
661 };
662 var getImageToImageUpscale = exports.getImageToImageUpscale = function getImageToImageUpscale(payload) {
663 return request('ai_get_image_to_image_upscale', {
664 payload: payload
665 });
666 };
667 var getImageToImageRemoveBackground = exports.getImageToImageRemoveBackground = function getImageToImageRemoveBackground(payload) {
668 return request('ai_get_image_to_image_remove_background', {
669 payload: payload
670 });
671 };
672 var getImageToImageIsolateObjects = exports.getImageToImageIsolateObjects = function getImageToImageIsolateObjects(payload) {
673 return request('ai_get_image_to_image_isolate_objects', {
674 payload: payload
675 });
676 };
677 var getImageToImageReplaceBackground = exports.getImageToImageReplaceBackground = function getImageToImageReplaceBackground(payload) {
678 return request('ai_get_image_to_image_replace_background', {
679 payload: payload
680 });
681 };
682 var getImageToImageRemoveText = exports.getImageToImageRemoveText = function getImageToImageRemoveText(image) {
683 return request('ai_get_image_to_image_remove_text', {
684 image: image
685 });
686 };
687 var getImagePromptEnhanced = exports.getImagePromptEnhanced = function getImagePromptEnhanced(prompt) {
688 return request('ai_get_image_prompt_enhancer', {
689 prompt: prompt
690 });
691 };
692 var getProductImageUnification = exports.getProductImageUnification = function getProductImageUnification(payload, immediately) {
693 return request('ai_get_product_image_unification', {
694 payload: payload
695 }, immediately);
696 };
697 var getAnimation = exports.getAnimation = function getAnimation(payload) {
698 return request('ai_get_animation', {
699 payload: payload
700 });
701 };
702 var uploadImage = exports.uploadImage = function uploadImage(image) {
703 return request('ai_upload_image', _objectSpread(_objectSpread({}, image), {}, {
704 editor_post_id: image.image.editor_post_id,
705 unique_id: image.image.unique_id
706 }));
707 };
708
709 /**
710 * @typedef {Object} AttachmentPropType - See ./types/attachment.js
711 * @typedef {Object} requestBody
712 * @property {string} prompt - Prompt to generate the layout from.
713 * @property {0|1|2} [variationType] - Type of the layout to generate (actually it's a position).
714 * @property {string[]} [prevGeneratedIds] - Previously generated ids for exclusion on regeneration.
715 * @property {AttachmentPropType[]} [attachments] - Attachments to use for the generation. currently only `json` type is supported - a container JSON to generate variations from.
716 */
717
718 /**
719 * @param {requestBody} requestBody
720 * @param {AbortSignal} [signal]
721 */
722 var generateLayout = exports.generateLayout = function generateLayout(requestBody, signal) {
723 return request('ai_generate_layout', requestBody, true, signal);
724 };
725 var getLayoutPromptEnhanced = exports.getLayoutPromptEnhanced = function getLayoutPromptEnhanced(prompt, enhanceType) {
726 return request('ai_get_layout_prompt_enhancer', {
727 prompt: prompt,
728 enhance_type: enhanceType
729 });
730 };
731 var getHistory = exports.getHistory = function getHistory(type, page, limit) {
732 return request('ai_get_history', {
733 type: type,
734 page: page,
735 limit: limit
736 });
737 };
738 var deleteHistoryItem = exports.deleteHistoryItem = function deleteHistoryItem(id) {
739 return request('ai_delete_history_item', {
740 id: id
741 });
742 };
743 var toggleFavoriteHistoryItem = exports.toggleFavoriteHistoryItem = function toggleFavoriteHistoryItem(id) {
744 return request('ai_toggle_favorite_history_item', {
745 id: id
746 });
747 };
748
749 /***/ }),
750
751 /***/ "../modules/ai/assets/js/editor/components/alert-dialog.js":
752 /*!*****************************************************************!*\
753 !*** ../modules/ai/assets/js/editor/components/alert-dialog.js ***!
754 \*****************************************************************/
755 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
756
757 "use strict";
758
759
760 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
761 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
762 Object.defineProperty(exports, "__esModule", ({
763 value: true
764 }));
765 exports.AlertDialog = void 0;
766 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
767 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
768 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
769 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
770 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
771 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
772 var AlertDialog = exports.AlertDialog = function AlertDialog(props) {
773 var _useState = (0, _react.useState)(true),
774 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
775 isShown = _useState2[0],
776 setIsShown = _useState2[1];
777 if (!isShown) {
778 return null;
779 }
780 return /*#__PURE__*/_react.default.createElement(_ui.Dialog, {
781 open: true,
782 maxWidth: "lg"
783 }, /*#__PURE__*/_react.default.createElement(_ui.DialogContent, {
784 sx: {
785 padding: 0
786 }
787 }, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
788 sx: {
789 textAlign: 'center',
790 padding: 3
791 }
792 }, props.message), /*#__PURE__*/_react.default.createElement(_ui.Stack, {
793 alignItems: "center",
794 spacing: 2,
795 marginBottom: 2
796 }, /*#__PURE__*/_react.default.createElement(_ui.Button, {
797 variant: "contained",
798 type: "button",
799 color: "primary",
800 onClick: function onClick() {
801 var _props$onClose;
802 setIsShown(false);
803 (_props$onClose = props.onClose) === null || _props$onClose === void 0 || _props$onClose.call(props);
804 }
805 }, (0, _i18n.__)('Close', 'elementor')))));
806 };
807 AlertDialog.propTypes = {
808 message: _propTypes.default.string.isRequired,
809 onClose: _propTypes.default.func
810 };
811
812 /***/ }),
813
814 /***/ "../modules/ai/assets/js/editor/components/dialog-header.js":
815 /*!******************************************************************!*\
816 !*** ../modules/ai/assets/js/editor/components/dialog-header.js ***!
817 \******************************************************************/
818 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
819
820 "use strict";
821
822
823 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
824 Object.defineProperty(exports, "__esModule", ({
825 value: true
826 }));
827 exports["default"] = void 0;
828 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
829 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
830 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
831 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
832 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
833 var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
834 var ElementorLogo = function ElementorLogo(props) {
835 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({
836 viewBox: "0 0 32 32"
837 }, props), /*#__PURE__*/_react.default.createElement("path", {
838 fillRule: "evenodd",
839 clipRule: "evenodd",
840 d: "M2.69648 24.8891C0.938383 22.2579 0 19.1645 0 16C0 11.7566 1.68571 7.68687 4.68629 4.68629C7.68687 1.68571 11.7566 0 16 0C19.1645 0 22.2579 0.938383 24.8891 2.69648C27.5203 4.45459 29.5711 6.95344 30.7821 9.87706C31.9931 12.8007 32.3099 16.0177 31.6926 19.1214C31.0752 22.2251 29.5514 25.0761 27.3137 27.3137C25.0761 29.5514 22.2251 31.0752 19.1214 31.6926C16.0177 32.3099 12.8007 31.9931 9.87706 30.7821C6.95344 29.5711 4.45459 27.5203 2.69648 24.8891ZM12.0006 9.33281H9.33437V22.6665H12.0006V9.33281ZM22.6657 9.33281H14.6669V11.9991H22.6657V9.33281ZM22.6657 14.6654H14.6669V17.3316H22.6657V14.6654ZM22.6657 20.0003H14.6669V22.6665H22.6657V20.0003Z"
841 }));
842 };
843 var StyledElementorLogo = (0, _ui.styled)(ElementorLogo)(function (_ref) {
844 var theme = _ref.theme;
845 return {
846 width: theme.spacing(3),
847 height: theme.spacing(3),
848 '& path': {
849 fill: theme.palette.text.primary
850 }
851 };
852 });
853 var DialogHeader = function DialogHeader(props) {
854 var hideAiBetaLogo = props.hideAiBetaLogo,
855 onClose = props.onClose,
856 children = props.children;
857 return /*#__PURE__*/_react.default.createElement(_ui.AppBar, {
858 sx: {
859 fontWeight: 'normal'
860 },
861 color: "transparent",
862 position: "relative"
863 }, /*#__PURE__*/_react.default.createElement(_ui.Toolbar, {
864 variant: "dense"
865 }, !hideAiBetaLogo && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(StyledElementorLogo, {
866 sx: {
867 mr: 1
868 }
869 }), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
870 component: "span",
871 variant: "subtitle2",
872 sx: {
873 fontWeight: 'bold',
874 textTransform: 'uppercase'
875 }
876 }, (0, _i18n.__)('AI', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Chip, {
877 label: (0, _i18n.__)('Beta', 'elementor'),
878 color: "default",
879 size: "small",
880 sx: {
881 ml: 1
882 }
883 })), /*#__PURE__*/_react.default.createElement(_ui.Stack, {
884 direction: "row",
885 spacing: 1,
886 alignItems: "center",
887 sx: {
888 ml: hideAiBetaLogo ? 0 : 'auto'
889 }
890 }, children, /*#__PURE__*/_react.default.createElement(_ui.IconButton, {
891 size: "small",
892 "aria-label": "close",
893 onClick: onClose,
894 sx: {
895 '&.MuiButtonBase-root': {
896 mr: -1
897 }
898 }
899 }, /*#__PURE__*/_react.default.createElement(_icons.XIcon, null)))));
900 };
901 DialogHeader.propTypes = {
902 onClose: _propTypes.default.func.isRequired,
903 hideAiBetaLogo: _propTypes.default.bool,
904 children: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.node), _propTypes.default.node])
905 };
906 var _default = exports["default"] = DialogHeader;
907
908 /***/ }),
909
910 /***/ "../modules/ai/assets/js/editor/components/loader.js":
911 /*!***********************************************************!*\
912 !*** ../modules/ai/assets/js/editor/components/loader.js ***!
913 \***********************************************************/
914 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
915
916 "use strict";
917
918
919 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
920 Object.defineProperty(exports, "__esModule", ({
921 value: true
922 }));
923 exports["default"] = void 0;
924 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
925 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
926 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
927 var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"));
928 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
929 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
930 var _excluded = ["sx", "BoxProps"];
931 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; }
932 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; }
933 var Loader = function Loader(_ref) {
934 var _ref$sx = _ref.sx,
935 sx = _ref$sx === void 0 ? {} : _ref$sx,
936 _ref$BoxProps = _ref.BoxProps,
937 BoxProps = _ref$BoxProps === void 0 ? {} : _ref$BoxProps,
938 props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
939 return /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({
940 width: "100%",
941 display: "flex",
942 alignItems: "center"
943 }, BoxProps, {
944 sx: _objectSpread({
945 px: 1.5,
946 minHeight: function minHeight(theme) {
947 return theme.spacing(5);
948 }
949 }, BoxProps.sx || {})
950 }), /*#__PURE__*/_react.default.createElement(_ui.LinearProgress, (0, _extends2.default)({
951 color: "secondary"
952 }, props, {
953 sx: _objectSpread({
954 width: '100%'
955 }, sx)
956 })));
957 };
958 Loader.propTypes = {
959 sx: _propTypes.default.object,
960 BoxProps: _propTypes.default.object
961 };
962 var _default = exports["default"] = Loader;
963
964 /***/ }),
965
966 /***/ "../modules/ai/assets/js/editor/components/prompt-dialog.js":
967 /*!******************************************************************!*\
968 !*** ../modules/ai/assets/js/editor/components/prompt-dialog.js ***!
969 \******************************************************************/
970 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
971
972 "use strict";
973
974
975 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
976 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
977 Object.defineProperty(exports, "__esModule", ({
978 value: true
979 }));
980 exports["default"] = void 0;
981 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
982 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
983 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
984 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
985 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
986 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
987 var _reactDraggable = _interopRequireDefault(__webpack_require__(/*! react-draggable */ "../node_modules/react-draggable/build/cjs/cjs.js"));
988 var _dialogHeader = _interopRequireDefault(__webpack_require__(/*! ./dialog-header */ "../modules/ai/assets/js/editor/components/dialog-header.js"));
989 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
990 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; }
991 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; }
992 var DraggablePaper = function DraggablePaper(props) {
993 var _useState = (0, _react.useState)({
994 x: 0,
995 y: 0
996 }),
997 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
998 position = _useState2[0],
999 setPosition = _useState2[1];
1000 var paperRef = (0, _react.useRef)(null);
1001 var timeout = (0, _react.useRef)(null);
1002 var onDrag = function onDrag(_e, _ref) {
1003 var x = _ref.x,
1004 y = _ref.y;
1005 return setPosition({
1006 x: x,
1007 y: y
1008 });
1009 };
1010 var handlePositionBoundaries = function handlePositionBoundaries() {
1011 clearTimeout(timeout.current);
1012
1013 // Ensuring the dialog header, which is used as the dialog dragging handle, does not exceed the screen.
1014 timeout.current = setTimeout(function () {
1015 var _paperRef$current;
1016 var dialogTop = (_paperRef$current = paperRef.current) === null || _paperRef$current === void 0 ? void 0 : _paperRef$current.getBoundingClientRect().top;
1017 if (dialogTop < 0) {
1018 setPosition(function (prev) {
1019 return _objectSpread(_objectSpread({}, prev), {}, {
1020 y: prev.y - dialogTop
1021 });
1022 });
1023 }
1024 }, 50);
1025 };
1026 (0, _react.useEffect)(function () {
1027 var resizeObserver = new ResizeObserver(handlePositionBoundaries);
1028 resizeObserver.observe(paperRef.current);
1029 return function () {
1030 resizeObserver.disconnect();
1031 };
1032 }, []);
1033 return /*#__PURE__*/_react.default.createElement(_reactDraggable.default, {
1034 position: position,
1035 onDrag: onDrag,
1036 handle: ".MuiAppBar-root",
1037 cancel: '[class*="MuiDialogContent-root"]',
1038 bounds: "parent"
1039 }, /*#__PURE__*/_react.default.createElement(_ui.Paper, (0, _extends2.default)({}, props, {
1040 ref: paperRef
1041 })));
1042 };
1043 var PromptDialog = function PromptDialog(props) {
1044 return /*#__PURE__*/_react.default.createElement(_ui.Dialog, (0, _extends2.default)({
1045 scroll: "paper",
1046 open: true,
1047 fullWidth: true,
1048 hideBackdrop: true,
1049 PaperComponent: DraggablePaper,
1050 disableScrollLock: true,
1051 sx: {
1052 '& .MuiDialog-container': {
1053 alignItems: 'flex-start',
1054 mt: '18vh'
1055 }
1056 },
1057 PaperProps: {
1058 sx: {
1059 m: 0,
1060 maxHeight: '76vh'
1061 }
1062 }
1063 }, props), props.children);
1064 };
1065 PromptDialog.propTypes = {
1066 onClose: _propTypes.default.func.isRequired,
1067 children: _propTypes.default.node,
1068 maxWidth: _propTypes.default.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false])
1069 };
1070 PromptDialog.Header = _dialogHeader.default;
1071 PromptDialog.Content = _ui.DialogContent;
1072 var _default = exports["default"] = PromptDialog;
1073
1074 /***/ }),
1075
1076 /***/ "../modules/ai/assets/js/editor/components/prompt-error-message.js":
1077 /*!*************************************************************************!*\
1078 !*** ../modules/ai/assets/js/editor/components/prompt-error-message.js ***!
1079 \*************************************************************************/
1080 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1081
1082 "use strict";
1083 /* provided dependency */ var sprintf = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["sprintf"];
1084
1085
1086 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1087 Object.defineProperty(exports, "__esModule", ({
1088 value: true
1089 }));
1090 exports["default"] = void 0;
1091 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
1092 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
1093 var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"));
1094 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1095 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
1096 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
1097 var _excluded = ["error", "onRetry", "actionPosition"];
1098 var PromptErrorMessage = function PromptErrorMessage(_ref) {
1099 var error = _ref.error,
1100 _ref$onRetry = _ref.onRetry,
1101 onRetry = _ref$onRetry === void 0 ? function () {} : _ref$onRetry,
1102 _ref$actionPosition = _ref.actionPosition,
1103 actionPosition = _ref$actionPosition === void 0 ? 'default' : _ref$actionPosition,
1104 props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
1105 function getQuotaReachedTrailMessage(featureName) {
1106 if (!featureName) {
1107 return {
1108 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('It\'s time to upgrade.', 'elementor')),
1109 description: (0, _i18n.__)('Enjoy the free trial? Upgrade now for unlimited access to built-in image, text and custom code generators.', 'elementor'),
1110 buttonText: (0, _i18n.__)('Upgrade', 'elementor'),
1111 buttonAction: function buttonAction() {
1112 return window.open('https://go.elementor.com/ai-popup-purchase-limit-reached/', '_blank');
1113 }
1114 };
1115 }
1116 return {
1117 // Translators: %s is the feature name.
1118 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, sprintf((0, _i18n.__)('You\'ve used all AI credits for %s.', 'elementor'), featureName.toLowerCase())),
1119 description: (0, _i18n.__)('Upgrade now to keep using this feature. You still have credits for other AI features (Text, Code, Images, Containers, etc.)', 'elementor'),
1120 buttonText: (0, _i18n.__)('Upgrade now', 'elementor'),
1121 buttonAction: function buttonAction() {
1122 return window.open('https://go.elementor.com/ai-popup-purchase-limit-reached/', '_blank');
1123 }
1124 };
1125 }
1126 function getErrorMessage() {
1127 var _error$extra_data;
1128 var errMsg = error.message || error;
1129 var featureName = (_error$extra_data = error.extra_data) === null || _error$extra_data === void 0 ? void 0 : _error$extra_data.featureName;
1130 var messages = {
1131 default: {
1132 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('There was a glitch.', 'elementor')),
1133 description: (0, _i18n.__)('Wait a moment and give it another go, or try tweaking the prompt.', 'elementor'),
1134 buttonText: (0, _i18n.__)('Try again', 'elementor'),
1135 buttonAction: onRetry
1136 },
1137 service_outage_internal: {
1138 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('There was a glitch.', 'elementor')),
1139 description: (0, _i18n.__)('Wait a moment and give it another go.', 'elementor'),
1140 buttonText: (0, _i18n.__)('Try again', 'elementor'),
1141 buttonAction: onRetry
1142 },
1143 invalid_connect_data: {
1144 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('There was a glitch.', 'elementor')),
1145 description: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (0, _i18n.__)('Try exiting Elementor and sign in again.', 'elementor'), ' ', /*#__PURE__*/_react.default.createElement("a", {
1146 href: "https://elementor.com/help/disconnecting-reconnecting-your-elementor-account/",
1147 target: "_blank",
1148 rel: "noreferrer"
1149 }, (0, _i18n.__)('Show me how', 'elementor'))),
1150 buttonText: (0, _i18n.__)('Reconnect', 'elementor'),
1151 buttonAction: function buttonAction() {
1152 return window.open(window.ElementorAiConfig.connect_url);
1153 }
1154 },
1155 not_connected: {
1156 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('You aren\'t connected to Elementor AI.', 'elementor')),
1157 description: (0, _i18n.__)('Elementor AI is just a few clicks away. Connect your account to instantly create texts and custom code.', 'elementor'),
1158 buttonText: (0, _i18n.__)('Connect', 'elementor'),
1159 buttonAction: function buttonAction() {
1160 return window.open(window.ElementorAiConfig.connect_url);
1161 }
1162 },
1163 quota_reached_trail: getQuotaReachedTrailMessage(featureName),
1164 quota_reached_subscription: {
1165 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('Looks like you\'re out of credits.', 'elementor')),
1166 description: (0, _i18n.__)('Ready to take it to the next level?', 'elementor'),
1167 buttonText: (0, _i18n.__)('Upgrade now', 'elementor'),
1168 buttonAction: function buttonAction() {
1169 return window.open('https://go.elementor.com/ai-popup-purchase-limit-reached/', '_blank');
1170 }
1171 },
1172 rate_limit_network: {
1173 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('Whoa! Slow down there.', 'elementor')),
1174 description: (0, _i18n.__)('We can’t process that many requests so fast. Try again in 15 minutes.', 'elementor')
1175 },
1176 invalid_prompts: {
1177 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('We were unable to generate that prompt.', 'elementor')),
1178 description: (0, _i18n.__)('Seems like the prompt contains words that could generate harmful content. Write a different prompt to continue.', 'elementor')
1179 },
1180 service_unavailable: {
1181 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('There was a glitch.', 'elementor')),
1182 description: (0, _i18n.__)('Wait a moment and give it another go, or try tweaking the prompt.', 'elementor'),
1183 buttonText: (0, _i18n.__)('Try again', 'elementor'),
1184 buttonAction: onRetry
1185 },
1186 request_timeout_error: {
1187 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('There was a glitch.', 'elementor')),
1188 description: (0, _i18n.__)('Wait a moment and give it another go, or try tweaking the prompt.', 'elementor'),
1189 buttonText: (0, _i18n.__)('Try again', 'elementor'),
1190 buttonAction: onRetry
1191 },
1192 invalid_token: {
1193 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('Try again', 'elementor')),
1194 description: (0, _i18n.__)('Try exiting Elementor and sign in again.', 'elementor'),
1195 buttonText: (0, _i18n.__)('Reconnect', 'elementor'),
1196 buttonAction: onRetry
1197 },
1198 file_too_large: {
1199 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('The file is too large.', 'elementor')),
1200 description: (0, _i18n.__)('Please upload a file that is less than 4MB.', 'elementor')
1201 },
1202 image_resolution_maximum_exceeded: {
1203 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('The image resolution exceeds the maximum allowed size.', 'elementor')),
1204 description: (0, _i18n.__)('Please upload a file with dimensions less than 2048x2048 pixels.', 'elementor')
1205 },
1206 external_service_unavailable: {
1207 text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('Temporary external service issue', 'elementor')),
1208 description: (0, _i18n.__)('It seems that one of our partner services is temporarily unavailable. Please try again in a few minutes.', 'elementor'),
1209 buttonText: (0, _i18n.__)('Try Again', 'elementor'),
1210 buttonAction: onRetry
1211 }
1212 };
1213 return messages[errMsg] || messages.default;
1214 }
1215 var message = getErrorMessage();
1216 var action = (message === null || message === void 0 ? void 0 : message.buttonText) && /*#__PURE__*/_react.default.createElement(_ui.Button, {
1217 color: "inherit",
1218 size: "small",
1219 variant: "outlined",
1220 onClick: message.buttonAction
1221 }, message.buttonText);
1222 return /*#__PURE__*/_react.default.createElement(_ui.Alert, (0, _extends2.default)({
1223 severity: message.severity || 'error',
1224 action: 'default' === actionPosition && action
1225 }, props), message.text, message.description, 'bottom' === actionPosition && /*#__PURE__*/_react.default.createElement(_ui.Box, {
1226 sx: {
1227 mt: 1
1228 }
1229 }, action));
1230 };
1231 PromptErrorMessage.propTypes = {
1232 error: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.string]),
1233 onRetry: _propTypes.default.func,
1234 actionPosition: _propTypes.default.oneOf(['default', 'bottom'])
1235 };
1236 var _default = exports["default"] = PromptErrorMessage;
1237
1238 /***/ }),
1239
1240 /***/ "../modules/ai/assets/js/editor/components/prompt-library-link.js":
1241 /*!************************************************************************!*\
1242 !*** ../modules/ai/assets/js/editor/components/prompt-library-link.js ***!
1243 \************************************************************************/
1244 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1245
1246 "use strict";
1247
1248
1249 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1250 Object.defineProperty(exports, "__esModule", ({
1251 value: true
1252 }));
1253 exports["default"] = void 0;
1254 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
1255 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1256 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
1257 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
1258 var PromptLibraryLink = function PromptLibraryLink(props) {
1259 return /*#__PURE__*/_react.default.createElement(_ui.Typography, {
1260 variant: "body2",
1261 color: "text.secondary"
1262 }, (0, _i18n.__)('For more suggestions, explore our'), ' ', /*#__PURE__*/_react.default.createElement(_ui.Link, {
1263 href: props.libraryLink,
1264 className: "elementor-clickable",
1265 target: "_blank"
1266 }, (0, _i18n.__)('prompt library')));
1267 };
1268 PromptLibraryLink.propTypes = {
1269 libraryLink: _propTypes.default.string
1270 };
1271 var _default = exports["default"] = PromptLibraryLink;
1272
1273 /***/ }),
1274
1275 /***/ "../modules/ai/assets/js/editor/components/upgrade-chip.js":
1276 /*!*****************************************************************!*\
1277 !*** ../modules/ai/assets/js/editor/components/upgrade-chip.js ***!
1278 \*****************************************************************/
1279 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1280
1281 "use strict";
1282
1283
1284 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1285 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
1286 Object.defineProperty(exports, "__esModule", ({
1287 value: true
1288 }));
1289 exports["default"] = void 0;
1290 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
1291 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
1292 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1293 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
1294 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
1295 var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
1296 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
1297 var popoverId = 'e-ai-upgrade-popover';
1298 var StyledContent = (0, _ui.styled)(_ui.Paper)(function (_ref) {
1299 var theme = _ref.theme;
1300 return {
1301 position: 'relative',
1302 '[data-popper-placement="top"] &': {
1303 marginBottom: theme.spacing(2.5)
1304 },
1305 '[data-popper-placement="bottom"] &': {
1306 marginTop: theme.spacing(2.5)
1307 },
1308 padding: theme.spacing(3),
1309 boxShadow: theme.shadows[4],
1310 zIndex: '9999'
1311 };
1312 });
1313 var StyledArrow = (0, _ui.styled)(_ui.Box)(function (_ref2) {
1314 var theme = _ref2.theme;
1315 return {
1316 width: theme.spacing(5),
1317 height: theme.spacing(2.5),
1318 position: 'absolute',
1319 overflow: 'hidden',
1320 // Override Popper inline styles.
1321 left: '50% !important',
1322 transform: 'translateX(-50%) rotate(var(--rotate, 0deg)) !important',
1323 '[data-popper-placement="top"] &': {
1324 top: '100%'
1325 },
1326 '[data-popper-placement="bottom"] &': {
1327 '--rotate': '180deg',
1328 top: "calc(".concat(theme.spacing(2.5), " * -1)")
1329 },
1330 '&::after': {
1331 backgroundColor: theme.palette.background.paper,
1332 content: '""',
1333 display: 'block',
1334 position: 'absolute',
1335 width: theme.spacing(2.5),
1336 height: theme.spacing(2.5),
1337 top: 0,
1338 left: '50%',
1339 transform: 'translateX(-50%) translateY(-50%) rotate(45deg)',
1340 boxShadow: '1px 1px 5px 0px rgba(0, 0, 0, 0.2)',
1341 backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))'
1342 }
1343 };
1344 });
1345 var upgradeBullets = [(0, _i18n.__)('Get spot-on suggestions from AI Copilot and AI Context with appropriate designs, layouts, and content for your business.', 'elementor'), (0, _i18n.__)('Generate professional texts about any topic, in any tone.', 'elementor'), (0, _i18n.__)('Effortlessly create or enhance stunning images and bring your ideas to life.', 'elementor'), (0, _i18n.__)('Unleash infinite possibilities with the custom code generator.', 'elementor'), (0, _i18n.__)('Access 30-days of AI History with the AI Starter plan and 90-days with the Power plan.', 'elementor')];
1346 var Chip = (0, _ui.styled)(_ui.Chip)(function () {
1347 return {
1348 '& .MuiChip-label': {
1349 lineHeight: 1.5
1350 },
1351 '& .MuiSvgIcon-root.MuiChip-icon': {
1352 fontSize: '1.25rem'
1353 }
1354 };
1355 });
1356 var UpgradeChip = function UpgradeChip(_ref3) {
1357 var _ref3$hasSubscription = _ref3.hasSubscription,
1358 hasSubscription = _ref3$hasSubscription === void 0 ? false : _ref3$hasSubscription,
1359 _ref3$usagePercentage = _ref3.usagePercentage,
1360 usagePercentage = _ref3$usagePercentage === void 0 ? 0 : _ref3$usagePercentage;
1361 var _useState = (0, _react.useState)(false),
1362 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
1363 isPopoverOpen = _useState2[0],
1364 setIsPopoverOpen = _useState2[1];
1365 var anchorEl = (0, _react.useRef)(null);
1366 var arrowEl = (0, _react.useRef)(null);
1367 var showPopover = function showPopover() {
1368 return setIsPopoverOpen(true);
1369 };
1370 var hidePopover = function hidePopover() {
1371 return setIsPopoverOpen(false);
1372 };
1373 var actionUrl = 'https://go.elementor.com/ai-popup-purchase-dropdown/';
1374 if (hasSubscription) {
1375 actionUrl = usagePercentage >= 100 ? 'https://go.elementor.com/ai-popup-upgrade-limit-reached/' : 'https://go.elementor.com/ai-popup-upgrade-limit-reached-80-percent/';
1376 }
1377 var actionLabel = hasSubscription ? (0, _i18n.__)('Upgrade Elementor AI', 'elementor') : (0, _i18n.__)('Get Elementor AI', 'elementor');
1378 return /*#__PURE__*/_react.default.createElement(_ui.Box, {
1379 component: "span",
1380 "aria-owns": isPopoverOpen ? popoverId : undefined,
1381 "aria-haspopup": "true",
1382 onMouseEnter: showPopover,
1383 onMouseLeave: hidePopover,
1384 ref: anchorEl,
1385 display: "flex",
1386 alignItems: "center"
1387 }, /*#__PURE__*/_react.default.createElement(Chip, {
1388 color: "promotion",
1389 label: (0, _i18n.__)('Upgrade', 'elementor'),
1390 icon: /*#__PURE__*/_react.default.createElement(_icons.AIIcon, null),
1391 size: "small"
1392 }), /*#__PURE__*/_react.default.createElement(_ui.Popper, {
1393 open: isPopoverOpen,
1394 anchorEl: anchorEl.current,
1395 sx: {
1396 zIndex: '170001',
1397 maxWidth: 300
1398 },
1399 modifiers: [{
1400 name: 'arrow',
1401 enabled: true,
1402 options: {
1403 element: arrowEl.current
1404 }
1405 }]
1406 }, /*#__PURE__*/_react.default.createElement(StyledContent, null, /*#__PURE__*/_react.default.createElement(StyledArrow, {
1407 ref: arrowEl
1408 }), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
1409 variant: "h5",
1410 color: "text.primary"
1411 }, (0, _i18n.__)('Unlimited access to Elementor AI', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.List, {
1412 sx: {
1413 mb: 1
1414 }
1415 }, upgradeBullets.map(function (bullet, index) {
1416 return /*#__PURE__*/_react.default.createElement(_ui.ListItem, {
1417 key: index,
1418 disableGutters: true,
1419 sx: {
1420 alignItems: 'flex-start'
1421 }
1422 }, /*#__PURE__*/_react.default.createElement(_ui.ListItemIcon, null, /*#__PURE__*/_react.default.createElement(_icons.CheckedCircleIcon, null)), /*#__PURE__*/_react.default.createElement(_ui.ListItemText, {
1423 sx: {
1424 m: 0
1425 }
1426 }, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
1427 variant: "body2"
1428 }, bullet)));
1429 })), /*#__PURE__*/_react.default.createElement(_ui.Button, {
1430 variant: "contained",
1431 color: "promotion",
1432 size: "small",
1433 href: actionUrl,
1434 target: "_blank",
1435 startIcon: /*#__PURE__*/_react.default.createElement(_icons.AIIcon, null),
1436 sx: {
1437 '&:hover': {
1438 color: 'promotion.contrastText'
1439 }
1440 }
1441 }, actionLabel))));
1442 };
1443 var _default = exports["default"] = UpgradeChip;
1444 UpgradeChip.propTypes = {
1445 hasSubscription: _propTypes.default.bool,
1446 usagePercentage: _propTypes.default.number
1447 };
1448
1449 /***/ }),
1450
1451 /***/ "../modules/ai/assets/js/editor/components/voice-promotion-alert.js":
1452 /*!**************************************************************************!*\
1453 !*** ../modules/ai/assets/js/editor/components/voice-promotion-alert.js ***!
1454 \**************************************************************************/
1455 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1456
1457 "use strict";
1458
1459
1460 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1461 Object.defineProperty(exports, "__esModule", ({
1462 value: true
1463 }));
1464 exports["default"] = exports.VoicePromotionAlert = void 0;
1465 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
1466 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
1467 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1468 var _bulbIcon = _interopRequireDefault(__webpack_require__(/*! ../icons/bulb-icon */ "../modules/ai/assets/js/editor/icons/bulb-icon.js"));
1469 var _useIntroduction2 = _interopRequireDefault(__webpack_require__(/*! ../hooks/use-introduction */ "../modules/ai/assets/js/editor/hooks/use-introduction.js"));
1470 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
1471 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
1472 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; }
1473 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; }
1474 var VoicePromotionAlert = exports.VoicePromotionAlert = function VoicePromotionAlert(props) {
1475 var _useIntroduction = (0, _useIntroduction2.default)(props.introductionKey),
1476 isViewed = _useIntroduction.isViewed,
1477 markAsViewed = _useIntroduction.markAsViewed;
1478 if (isViewed) {
1479 return null;
1480 }
1481 return /*#__PURE__*/_react.default.createElement(_ui.Box, {
1482 sx: _objectSpread({
1483 mt: 2
1484 }, props.sx),
1485 alignItems: "top"
1486 }, /*#__PURE__*/_react.default.createElement(_ui.Alert, {
1487 severity: "info",
1488 variant: "standard",
1489 icon: /*#__PURE__*/_react.default.createElement(_bulbIcon.default, {
1490 sx: {
1491 alignSelf: 'flex-start'
1492 }
1493 }),
1494 onClose: markAsViewed
1495 }, (0, _i18n.__)('Get improved results from AI by adding personal context.', 'elementor'), /*#__PURE__*/_react.default.createElement(_ui.Link, {
1496 onClick: function onClick() {
1497 return $e.route('panel/global/menu');
1498 },
1499 className: "elementor-clickable",
1500 style: {
1501 textDecoration: 'none'
1502 },
1503 color: "info.main",
1504 href: "#"
1505 }, (0, _i18n.__)('Let’s do it', 'elementor'))));
1506 };
1507 VoicePromotionAlert.propTypes = {
1508 sx: _propTypes.default.object,
1509 introductionKey: _propTypes.default.string
1510 };
1511 var _default = exports["default"] = VoicePromotionAlert;
1512
1513 /***/ }),
1514
1515 /***/ "../modules/ai/assets/js/editor/components/wizard-dialog.js":
1516 /*!******************************************************************!*\
1517 !*** ../modules/ai/assets/js/editor/components/wizard-dialog.js ***!
1518 \******************************************************************/
1519 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1520
1521 "use strict";
1522
1523
1524 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1525 Object.defineProperty(exports, "__esModule", ({
1526 value: true
1527 }));
1528 exports["default"] = void 0;
1529 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
1530 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
1531 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
1532 var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"));
1533 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1534 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
1535 var _dialogHeader = _interopRequireDefault(__webpack_require__(/*! ./dialog-header */ "../modules/ai/assets/js/editor/components/dialog-header.js"));
1536 var _excluded = ["sx"];
1537 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; }
1538 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; }
1539 var WizardDialog = function WizardDialog(props) {
1540 return /*#__PURE__*/_react.default.createElement(_ui.Dialog, {
1541 open: true,
1542 onClose: props.onClose,
1543 fullWidth: true,
1544 hideBackdrop: true,
1545 maxWidth: "lg",
1546 PaperProps: {
1547 sx: {
1548 height: '88vh'
1549 }
1550 },
1551 sx: {
1552 zIndex: 9999
1553 }
1554 }, props.children);
1555 };
1556 WizardDialog.propTypes = {
1557 onClose: _propTypes.default.func.isRequired,
1558 children: _propTypes.default.node.isRequired
1559 };
1560 var WizardDialogContent = function WizardDialogContent(_ref) {
1561 var _ref$sx = _ref.sx,
1562 sx = _ref$sx === void 0 ? {} : _ref$sx,
1563 props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
1564 return /*#__PURE__*/_react.default.createElement(_ui.DialogContent, (0, _extends2.default)({}, props, {
1565 sx: _objectSpread({
1566 display: 'flex',
1567 flexDirection: 'column',
1568 justifyContent: 'center'
1569 }, sx)
1570 }));
1571 };
1572 WizardDialogContent.propTypes = {
1573 sx: _propTypes.default.object
1574 };
1575 WizardDialog.Header = _dialogHeader.default;
1576 WizardDialog.Content = WizardDialogContent;
1577 var _default = exports["default"] = WizardDialog;
1578
1579 /***/ }),
1580
1581 /***/ "../modules/ai/assets/js/editor/context/requests-ids.js":
1582 /*!**************************************************************!*\
1583 !*** ../modules/ai/assets/js/editor/context/requests-ids.js ***!
1584 \**************************************************************/
1585 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1586
1587 "use strict";
1588
1589
1590 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1591 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
1592 Object.defineProperty(exports, "__esModule", ({
1593 value: true
1594 }));
1595 exports["default"] = exports.RequestIdsProvider = void 0;
1596 exports.generateIds = generateIds;
1597 exports.useRequestIds = exports.getUniqueId = void 0;
1598 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
1599 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
1600 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
1601 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
1602 var Context = (0, _react.createContext)({});
1603 var useRequestIds = exports.useRequestIds = function useRequestIds() {
1604 var context = (0, _react.useContext)(Context);
1605 if (!context) {
1606 throw new Error('useRequestIds must be used within a RequestIdsProvider');
1607 }
1608 return context;
1609 };
1610 var getUniqueId = exports.getUniqueId = function getUniqueId(prefix) {
1611 return prefix + '-' + Math.random().toString(16).substr(2, 7);
1612 };
1613 window.EDITOR_SESSION_ID = window.EDITOR_SESSION_ID || getUniqueId('editor-session');
1614 function generateIds(template) {
1615 var _template$elements;
1616 template.id = getUniqueId().toString();
1617 if ((_template$elements = template.elements) !== null && _template$elements !== void 0 && _template$elements.length) {
1618 template.elements.map(function (child) {
1619 return generateIds(child);
1620 });
1621 }
1622 return template;
1623 }
1624 var RequestIdsProvider = exports.RequestIdsProvider = function RequestIdsProvider(props) {
1625 var editorSessionId = (0, _react.useRef)(window.EDITOR_SESSION_ID);
1626 var sessionId = (0, _react.useRef)('');
1627 var generateId = (0, _react.useRef)('');
1628 var batchId = (0, _react.useRef)('');
1629 var requestId = (0, _react.useRef)('');
1630 sessionId.current = getUniqueId('session');
1631 var setGenerate = function setGenerate() {
1632 generateId.current = getUniqueId('generate');
1633 return generateId;
1634 };
1635 var setBatch = function setBatch() {
1636 batchId.current = getUniqueId('batch');
1637 return batchId;
1638 };
1639 var setRequest = function setRequest() {
1640 requestId.current = getUniqueId('request');
1641 return requestId;
1642 };
1643 var _useState = (0, _react.useState)(0),
1644 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
1645 usagePercentage = _useState2[0],
1646 setUsagePercentage = _useState2[1];
1647 var updateUsagePercentage = function updateUsagePercentage(newPercentage) {
1648 setUsagePercentage(newPercentage);
1649 };
1650 return /*#__PURE__*/_react.default.createElement(Context.Provider, {
1651 value: {
1652 editorSessionId: editorSessionId,
1653 sessionId: sessionId,
1654 generateId: generateId,
1655 batchId: batchId,
1656 requestId: requestId,
1657 setGenerate: setGenerate,
1658 setBatch: setBatch,
1659 setRequest: setRequest,
1660 usagePercentage: usagePercentage,
1661 updateUsagePercentage: updateUsagePercentage
1662 }
1663 }, props.children);
1664 };
1665 RequestIdsProvider.propTypes = {
1666 children: _propTypes.default.node.isRequired
1667 };
1668 var _default = exports["default"] = Context;
1669
1670 /***/ }),
1671
1672 /***/ "../modules/ai/assets/js/editor/hooks/use-introduction.js":
1673 /*!****************************************************************!*\
1674 !*** ../modules/ai/assets/js/editor/hooks/use-introduction.js ***!
1675 \****************************************************************/
1676 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1677
1678 "use strict";
1679
1680
1681 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1682 Object.defineProperty(exports, "__esModule", ({
1683 value: true
1684 }));
1685 exports["default"] = useIntroduction;
1686 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
1687 var _react = __webpack_require__(/*! react */ "react");
1688 function useIntroduction(key) {
1689 var _window$elementor$con, _window$elementorAdmi, _globalConfig$introdu;
1690 var globalConfig = window.elementor ? (_window$elementor$con = window.elementor.config) === null || _window$elementor$con === void 0 ? void 0 : _window$elementor$con.user : (_window$elementorAdmi = window.elementorAdmin) === null || _window$elementorAdmi === void 0 || (_window$elementorAdmi = _window$elementorAdmi.config) === null || _window$elementorAdmi === void 0 ? void 0 : _window$elementorAdmi.user;
1691 var _useState = (0, _react.useState)(!!(globalConfig !== null && globalConfig !== void 0 && (_globalConfig$introdu = globalConfig.introduction) !== null && _globalConfig$introdu !== void 0 && _globalConfig$introdu[key])),
1692 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
1693 isViewed = _useState2[0],
1694 setIsViewed = _useState2[1];
1695 function markAsViewed() {
1696 if (!key) {
1697 return Promise.reject();
1698 }
1699 return new Promise(function (resolve, reject) {
1700 if (isViewed) {
1701 reject();
1702 }
1703 setIsViewed(true);
1704 elementorCommon.ajax.addRequest('introduction_viewed', {
1705 data: {
1706 introductionKey: key
1707 },
1708 error: function error() {
1709 setIsViewed(false);
1710 reject();
1711 },
1712 success: function success() {
1713 setIsViewed(true);
1714 if (globalConfig !== null && globalConfig !== void 0 && globalConfig.introduction) {
1715 globalConfig.introduction[key] = true;
1716 }
1717 resolve();
1718 }
1719 });
1720 });
1721 }
1722 return {
1723 isViewed: isViewed,
1724 markAsViewed: markAsViewed
1725 };
1726 }
1727
1728 /***/ }),
1729
1730 /***/ "../modules/ai/assets/js/editor/hooks/use-prompt-enhancer.js":
1731 /*!*******************************************************************!*\
1732 !*** ../modules/ai/assets/js/editor/hooks/use-prompt-enhancer.js ***!
1733 \*******************************************************************/
1734 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1735
1736 "use strict";
1737
1738
1739 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1740 Object.defineProperty(exports, "__esModule", ({
1741 value: true
1742 }));
1743 exports["default"] = void 0;
1744 var _api = __webpack_require__(/*! ../api */ "../modules/ai/assets/js/editor/api/index.js");
1745 var _usePrompt2 = _interopRequireDefault(__webpack_require__(/*! ./use-prompt */ "../modules/ai/assets/js/editor/hooks/use-prompt.js"));
1746 var _config = __webpack_require__(/*! ../pages/form-layout/context/config */ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js");
1747 var enhancePromptMap = new Map([['media', _api.getImagePromptEnhanced], ['layout', _api.getLayoutPromptEnhanced]]);
1748 var getResult = function getResult(prompt, type, enhanceType) {
1749 if (!enhancePromptMap.has(type)) {
1750 throw new Error("Invalid prompt type: ".concat(type));
1751 }
1752 return enhancePromptMap.get(type)(prompt, enhanceType);
1753 };
1754
1755 /**
1756 * Hook to enhance a prompt.
1757 *
1758 * @param {string} prompt
1759 * @param {'media' | 'layout'} type
1760 * @return {{enhancedPrompt: string | undefined, isEnhancing: boolean, enhance: (function(...[*]): Promise)}}
1761 */
1762 var usePromptEnhancer = function usePromptEnhancer(prompt, type) {
1763 var _useConfig = (0, _config.useConfig)(),
1764 mode = _useConfig.mode;
1765 var _usePrompt = (0, _usePrompt2.default)(function () {
1766 return getResult(prompt, type, mode);
1767 }, prompt),
1768 enhancedData = _usePrompt.data,
1769 isEnhancing = _usePrompt.isLoading,
1770 enhance = _usePrompt.send;
1771 return {
1772 enhance: enhance,
1773 isEnhancing: isEnhancing,
1774 enhancedPrompt: enhancedData === null || enhancedData === void 0 ? void 0 : enhancedData.result
1775 };
1776 };
1777 var _default = exports["default"] = usePromptEnhancer;
1778
1779 /***/ }),
1780
1781 /***/ "../modules/ai/assets/js/editor/hooks/use-prompt.js":
1782 /*!**********************************************************!*\
1783 !*** ../modules/ai/assets/js/editor/hooks/use-prompt.js ***!
1784 \**********************************************************/
1785 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1786
1787 "use strict";
1788
1789
1790 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1791 Object.defineProperty(exports, "__esModule", ({
1792 value: true
1793 }));
1794 exports["default"] = void 0;
1795 var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js"));
1796 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
1797 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
1798 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
1799 var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"));
1800 var _react = __webpack_require__(/*! react */ "react");
1801 var _api = __webpack_require__(/*! ../api */ "../modules/ai/assets/js/editor/api/index.js");
1802 var _requestsIds = __webpack_require__(/*! ../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js");
1803 var _excluded = ["text", "response_id", "usage", "images"];
1804 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; }
1805 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; }
1806 var normalizeResponse = function normalizeResponse(_ref) {
1807 var text = _ref.text,
1808 responseId = _ref.response_id,
1809 usage = _ref.usage,
1810 images = _ref.images,
1811 optional = (0, _objectWithoutProperties2.default)(_ref, _excluded);
1812 var creditsData = usage ? usage.quota - usage.usedQuota : 0;
1813 var credits = Math.max(creditsData, 0);
1814 var result = text || images;
1815 var normalized = {
1816 result: result,
1817 responseId: responseId,
1818 credits: credits,
1819 usagePercentage: usage === null || usage === void 0 ? void 0 : usage.usagePercentage
1820 };
1821 if (optional.base_template_id) {
1822 normalized.baseTemplateId = optional.base_template_id;
1823 }
1824 normalized.type = optional.template_type;
1825 return normalized;
1826 };
1827 var usePrompt = function usePrompt(fetchData, initialState) {
1828 var _useState = (0, _react.useState)(false),
1829 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
1830 isLoading = _useState2[0],
1831 setIsLoading = _useState2[1];
1832 var _useState3 = (0, _react.useState)(''),
1833 _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
1834 error = _useState4[0],
1835 setError = _useState4[1];
1836 var _useState5 = (0, _react.useState)(initialState),
1837 _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
1838 data = _useState6[0],
1839 setData = _useState6[1];
1840 var _useRequestIds = (0, _requestsIds.useRequestIds)(),
1841 updateUsagePercentage = _useRequestIds.updateUsagePercentage,
1842 usagePercentage = _useRequestIds.usagePercentage;
1843 var send = (0, _react.useRef)(/*#__PURE__*/function () {
1844 var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(payload) {
1845 return _regenerator.default.wrap(function (_context) {
1846 while (1) switch (_context.prev = _context.next) {
1847 case 0:
1848 return _context.abrupt("return", payload);
1849 case 1:
1850 case "end":
1851 return _context.stop();
1852 }
1853 }, _callee);
1854 }));
1855 return function (_x) {
1856 return _ref2.apply(this, arguments);
1857 };
1858 }());
1859 var sendUsageData = (0, _react.useRef)(function () {});
1860 (0, _react.useEffect)(function () {
1861 var newUsageValue = data === null || data === void 0 ? void 0 : data.usagePercentage;
1862 if (newUsageValue && newUsageValue !== usagePercentage) {
1863 updateUsagePercentage(newUsageValue);
1864 }
1865 }, [data, usagePercentage, updateUsagePercentage]);
1866 var _useRequestIds2 = (0, _requestsIds.useRequestIds)(),
1867 setRequest = _useRequestIds2.setRequest,
1868 editorSessionId = _useRequestIds2.editorSessionId,
1869 sessionId = _useRequestIds2.sessionId,
1870 generateId = _useRequestIds2.generateId,
1871 batchId = _useRequestIds2.batchId;
1872 send.current = (0, _react.useCallback)(/*#__PURE__*/function () {
1873 var _ref3 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(payload) {
1874 return _regenerator.default.wrap(function (_context2) {
1875 while (1) switch (_context2.prev = _context2.next) {
1876 case 0:
1877 return _context2.abrupt("return", new Promise(function (resolve, reject) {
1878 setError('');
1879 setIsLoading(true);
1880 var requestId = setRequest();
1881 var requestIds = {
1882 editorSessionId: editorSessionId.current,
1883 sessionId: sessionId.current,
1884 generateId: generateId.current,
1885 batchId: batchId.current,
1886 requestId: requestId.current
1887 };
1888 payload = _objectSpread(_objectSpread({}, payload), {}, {
1889 requestIds: requestIds
1890 });
1891 fetchData(payload).then(function (result) {
1892 var normalizedData = normalizeResponse(result);
1893 setData(normalizedData);
1894 resolve(normalizedData);
1895 }).catch(function (err) {
1896 var finalError = (err === null || err === void 0 ? void 0 : err.responseText) || err;
1897 setError(finalError);
1898 reject(finalError);
1899 }).finally(function () {
1900 return setIsLoading(false);
1901 });
1902 }));
1903 case 1:
1904 case "end":
1905 return _context2.stop();
1906 }
1907 }, _callee2);
1908 }));
1909 return function (_x2) {
1910 return _ref3.apply(this, arguments);
1911 };
1912 }(), [batchId, editorSessionId, fetchData, generateId, sessionId, setRequest]);
1913 sendUsageData.current = (0, _react.useCallback)(function () {
1914 var usageData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : data;
1915 return usageData.responseId && (0, _api.setStatusFeedback)(usageData.responseId);
1916 }, [data]);
1917 var reset = function reset() {
1918 setData(function (_ref4) {
1919 var credits = _ref4.credits;
1920 return {
1921 credits: credits,
1922 result: '',
1923 responseId: ''
1924 };
1925 });
1926 setError('');
1927 setIsLoading(false);
1928 };
1929 var setResult = function setResult(result) {
1930 var responseId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1931 var updatedResult = _objectSpread({}, data);
1932 updatedResult.result = result;
1933 if (responseId) {
1934 updatedResult.responseId = responseId;
1935 }
1936 setData(updatedResult);
1937 };
1938 return {
1939 isLoading: isLoading,
1940 error: error,
1941 data: data,
1942 setResult: setResult,
1943 reset: reset,
1944 send: send.current,
1945 sendUsageData: sendUsageData.current
1946 };
1947 };
1948 var _default = exports["default"] = usePrompt;
1949
1950 /***/ }),
1951
1952 /***/ "../modules/ai/assets/js/editor/hooks/use-timeout.js":
1953 /*!***********************************************************!*\
1954 !*** ../modules/ai/assets/js/editor/hooks/use-timeout.js ***!
1955 \***********************************************************/
1956 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1957
1958 "use strict";
1959
1960
1961 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1962 Object.defineProperty(exports, "__esModule", ({
1963 value: true
1964 }));
1965 exports.useTimeout = void 0;
1966 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
1967 var _react = __webpack_require__(/*! react */ "react");
1968 var useTimeout = exports.useTimeout = function useTimeout(delay) {
1969 var _useState = (0, _react.useState)(false),
1970 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
1971 isTimeout = _useState2[0],
1972 setIsTimeout = _useState2[1];
1973 var timeoutIdRef = (0, _react.useRef)(null);
1974 var turnOffTimeout = function turnOffTimeout() {
1975 clearTimeout(timeoutIdRef.current);
1976 setIsTimeout(false);
1977 };
1978 (0, _react.useEffect)(function () {
1979 timeoutIdRef.current = setTimeout(function () {
1980 setIsTimeout(true);
1981 }, delay);
1982 return function () {
1983 clearTimeout(timeoutIdRef.current);
1984 };
1985 }, [delay]);
1986 return [isTimeout, turnOffTimeout];
1987 };
1988
1989 /***/ }),
1990
1991 /***/ "../modules/ai/assets/js/editor/hooks/use-user-info.js":
1992 /*!*************************************************************!*\
1993 !*** ../modules/ai/assets/js/editor/hooks/use-user-info.js ***!
1994 \*************************************************************/
1995 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1996
1997 "use strict";
1998
1999
2000 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2001 Object.defineProperty(exports, "__esModule", ({
2002 value: true
2003 }));
2004 exports["default"] = void 0;
2005 var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js"));
2006 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
2007 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
2008 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
2009 var _react = __webpack_require__(/*! react */ "react");
2010 var _api = __webpack_require__(/*! ../api */ "../modules/ai/assets/js/editor/api/index.js");
2011 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
2012 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; }
2013 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; }
2014 var useUserInfo = function useUserInfo() {
2015 var immediately = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
2016 var _useState = (0, _react.useState)(false),
2017 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
2018 isLoaded = _useState2[0],
2019 setIsLoaded = _useState2[1];
2020 var _useState3 = (0, _react.useState)(false),
2021 _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
2022 isLoading = _useState4[0],
2023 setIsLoading = _useState4[1];
2024 var _useState5 = (0, _react.useState)({
2025 is_connected: false,
2026 is_get_started: false,
2027 connect_url: '',
2028 usage: {
2029 hasAiSubscription: false,
2030 quota: 0,
2031 usedQuota: 0
2032 }
2033 }),
2034 _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
2035 userInfo = _useState6[0],
2036 setUserInfo = _useState6[1];
2037 var credits = userInfo.usage.quota - userInfo.usage.usedQuota;
2038 var usagePercentage = userInfo.usage.quota ? userInfo.usage.usedQuota / userInfo.usage.quota * 100 : 0;
2039 var fetchData = /*#__PURE__*/function () {
2040 var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
2041 var userInfoResult;
2042 return _regenerator.default.wrap(function (_context) {
2043 while (1) switch (_context.prev = _context.next) {
2044 case 0:
2045 setIsLoading(true);
2046 _context.next = 1;
2047 return (0, _api.getUserInformation)(immediately);
2048 case 1:
2049 userInfoResult = _context.sent;
2050 setUserInfo(function (prevState) {
2051 return _objectSpread(_objectSpread({}, prevState), userInfoResult);
2052 });
2053 setIsLoaded(true);
2054 setIsLoading(false);
2055 case 2:
2056 case "end":
2057 return _context.stop();
2058 }
2059 }, _callee);
2060 }));
2061 return function fetchData() {
2062 return _ref.apply(this, arguments);
2063 };
2064 }();
2065 if (!isLoaded && !isLoading) {
2066 fetchData();
2067 }
2068 return {
2069 isLoading: isLoading,
2070 isLoaded: isLoaded,
2071 isConnected: userInfo.is_connected,
2072 isGetStarted: userInfo.is_get_started,
2073 connectUrl: userInfo.connect_url,
2074 builderUrl: userInfo.usage.builderUrl,
2075 hasSubscription: userInfo.usage.hasAiSubscription,
2076 credits: credits < 0 ? 0 : credits,
2077 usagePercentage: Math.round(usagePercentage),
2078 fetchData: fetchData
2079 };
2080 };
2081 useUserInfo.propTypes = {
2082 immediately: _propTypes.default.bool
2083 };
2084 var _default = exports["default"] = useUserInfo;
2085
2086 /***/ }),
2087
2088 /***/ "../modules/ai/assets/js/editor/icons/arrow-left-icon.js":
2089 /*!***************************************************************!*\
2090 !*** ../modules/ai/assets/js/editor/icons/arrow-left-icon.js ***!
2091 \***************************************************************/
2092 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2093
2094 "use strict";
2095
2096
2097 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2098 Object.defineProperty(exports, "__esModule", ({
2099 value: true
2100 }));
2101 exports["default"] = void 0;
2102 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2103 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2104 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2105 var ArrowLeftIcon = _react.default.forwardRef(function (props, ref) {
2106 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({
2107 viewBox: "0 0 24 24"
2108 }, props, {
2109 ref: ref
2110 }), /*#__PURE__*/_react.default.createElement("path", {
2111 fillRule: "evenodd",
2112 clipRule: "evenodd",
2113 d: "M9.53033 7.46967C9.82322 7.76256 9.82322 8.23744 9.53033 8.53033L6.81066 11.25H19C19.4142 11.25 19.75 11.5858 19.75 12C19.75 12.4142 19.4142 12.75 19 12.75H6.81066L9.53033 15.4697C9.82322 15.7626 9.82322 16.2374 9.53033 16.5303C9.23744 16.8232 8.76256 16.8232 8.46967 16.5303L4.46967 12.5303C4.17678 12.2374 4.17678 11.7626 4.46967 11.4697L8.46967 7.46967C8.76256 7.17678 9.23744 7.17678 9.53033 7.46967Z"
2114 }));
2115 });
2116 var _default = exports["default"] = ArrowLeftIcon;
2117
2118 /***/ }),
2119
2120 /***/ "../modules/ai/assets/js/editor/icons/bulb-icon.js":
2121 /*!*********************************************************!*\
2122 !*** ../modules/ai/assets/js/editor/icons/bulb-icon.js ***!
2123 \*********************************************************/
2124 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2125
2126 "use strict";
2127
2128
2129 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2130 Object.defineProperty(exports, "__esModule", ({
2131 value: true
2132 }));
2133 exports["default"] = void 0;
2134 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2135 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2136 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2137 var BulbIcon = _react.default.forwardRef(function (props, ref) {
2138 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({}, props, {
2139 ref: ref
2140 }), /*#__PURE__*/_react.default.createElement("svg", {
2141 width: "22",
2142 height: "22",
2143 viewBox: "0 0 22 22",
2144 fill: "none",
2145 xmlns: "http://www.w3.org/2000/svg"
2146 }, /*#__PURE__*/_react.default.createElement("g", {
2147 clipPath: "url(#clip0_10743_8902)"
2148 }, /*#__PURE__*/_react.default.createElement("path", {
2149 d: "M2.75 10.0833H3.66667M11 2.75V3.66667M18.3333 10.0833H19.25M5.13333 5.13333L5.775 5.775M16.8667 5.13333L16.225 5.775",
2150 stroke: "#2563EB",
2151 strokeWidth: "1.5",
2152 strokeLinecap: "round",
2153 strokeLinejoin: "round"
2154 }), /*#__PURE__*/_react.default.createElement("path", {
2155 d: "M9.16675 16.041C8.70841 15.1243 6.91205 13.2842 6.62523 12.366C6.3384 11.4477 6.34775 10.4626 6.65195 9.54997C6.95615 8.63738 7.53978 7.84362 8.32016 7.28116C9.10054 6.71869 10.0381 6.41602 11.0001 6.41602C11.962 6.41602 12.8996 6.71869 13.68 7.28116C14.4604 7.84362 15.044 8.63738 15.3482 9.54997C15.6524 10.4626 15.6618 11.4477 15.3749 12.366C15.0881 13.2842 13.2917 15.1243 12.8334 16.041C12.8334 16.041 12.7597 17.3762 12.8334 17.8743C12.8334 18.3606 12.6403 18.8269 12.2964 19.1707C11.9526 19.5145 11.4863 19.7077 11.0001 19.7077C10.5139 19.7077 10.0475 19.5145 9.70372 19.1707C9.3599 18.8269 9.16675 18.3606 9.16675 17.8743C9.2405 17.3762 9.16675 16.041 9.16675 16.041Z",
2156 stroke: "#2563EB",
2157 strokeWidth: "1.5",
2158 strokeLinecap: "round",
2159 strokeLinejoin: "round"
2160 }), /*#__PURE__*/_react.default.createElement("path", {
2161 d: "M10.0833 16.5H11.9166",
2162 stroke: "#2563EB",
2163 strokeWidth: "1.5",
2164 strokeLinecap: "round",
2165 strokeLinejoin: "round"
2166 })), /*#__PURE__*/_react.default.createElement("defs", null, /*#__PURE__*/_react.default.createElement("clipPath", {
2167 id: "clip0_10743_8902"
2168 }, /*#__PURE__*/_react.default.createElement("rect", {
2169 width: "22",
2170 height: "22",
2171 fill: "white"
2172 })))));
2173 });
2174 var _default = exports["default"] = BulbIcon;
2175
2176 /***/ }),
2177
2178 /***/ "../modules/ai/assets/js/editor/icons/copy-page-icon.js":
2179 /*!**************************************************************!*\
2180 !*** ../modules/ai/assets/js/editor/icons/copy-page-icon.js ***!
2181 \**************************************************************/
2182 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2183
2184 "use strict";
2185
2186
2187 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2188 Object.defineProperty(exports, "__esModule", ({
2189 value: true
2190 }));
2191 exports["default"] = void 0;
2192 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2193 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2194 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2195 var CopyPageIcon = _react.default.forwardRef(function (props, ref) {
2196 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({
2197 viewBox: "0 0 24 24"
2198 }, props, {
2199 ref: ref
2200 }), /*#__PURE__*/_react.default.createElement("path", {
2201 fillRule: "evenodd",
2202 clipRule: "evenodd",
2203 d: "M16.6667 0.208496C17.0534 0.208496 17.4244 0.362142 17.6979 0.635632C17.9714 0.909123 18.125 1.28006 18.125 1.66683V11.6668C18.125 12.0536 17.9714 12.4245 17.6979 12.698C17.4244 12.9715 17.0534 13.1252 16.6667 13.1252H14.7917V16.6668C14.7917 17.0536 14.638 17.4245 14.3645 17.698C14.091 17.9715 13.7201 18.1252 13.3333 18.1252H3.33333C2.94656 18.1252 2.57563 17.9715 2.30214 17.698C2.02865 17.4245 1.875 17.0536 1.875 16.6668V6.66683C1.875 6.28005 2.02865 5.90912 2.30214 5.63563C2.57563 5.36214 2.94656 5.2085 3.33333 5.2085H5.20833V1.66683C5.20833 1.28005 5.36198 0.909122 5.63547 0.635632C5.90896 0.362142 6.27989 0.208496 6.66667 0.208496H16.6667ZM6.66667 1.4585C6.61141 1.4585 6.55842 1.48045 6.51935 1.51952C6.48028 1.55859 6.45833 1.61158 6.45833 1.66683V3.54183H8.54167V1.4585H6.66667ZM3.125 9.79183V16.6668C3.125 16.7221 3.14695 16.7751 3.18602 16.8141C3.22509 16.8532 3.27808 16.8752 3.33333 16.8752H13.3333C13.3886 16.8752 13.4416 16.8532 13.4806 16.8141C13.5197 16.7751 13.5417 16.7221 13.5417 16.6668V13.1252H6.66667C6.27989 13.1252 5.90896 12.9715 5.63547 12.698C5.36198 12.4245 5.20833 12.0536 5.20833 11.6668V9.79183H3.125ZM5.20833 8.54183H3.125V6.66683C3.125 6.61158 3.14695 6.55859 3.18602 6.51952C3.22509 6.48045 3.27808 6.4585 3.33333 6.4585H5.20833V8.54183ZM6.45833 11.6668C6.45833 11.7221 6.48028 11.7751 6.51935 11.8141C6.55842 11.8532 6.61141 11.8752 6.66667 11.8752H16.6667C16.7219 11.8752 16.7749 11.8532 16.814 11.8141C16.853 11.7751 16.875 11.7221 16.875 11.6668V4.79183H6.45833V11.6668ZM9.79167 1.4585V3.54183H16.875V1.66683C16.875 1.61157 16.853 1.55858 16.814 1.51952C16.7749 1.48045 16.7219 1.4585 16.6667 1.4585H9.79167Z"
2204 }));
2205 });
2206 var _default = exports["default"] = CopyPageIcon;
2207
2208 /***/ }),
2209
2210 /***/ "../modules/ai/assets/js/editor/icons/edit-icon.js":
2211 /*!*********************************************************!*\
2212 !*** ../modules/ai/assets/js/editor/icons/edit-icon.js ***!
2213 \*********************************************************/
2214 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2215
2216 "use strict";
2217
2218
2219 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2220 Object.defineProperty(exports, "__esModule", ({
2221 value: true
2222 }));
2223 exports["default"] = void 0;
2224 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2225 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2226 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2227 var EditIcon = _react.default.forwardRef(function (props, ref) {
2228 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({
2229 viewBox: "0 0 24 24"
2230 }, props, {
2231 ref: ref
2232 }), /*#__PURE__*/_react.default.createElement("path", {
2233 fillRule: "evenodd",
2234 clipRule: "evenodd",
2235 d: "M13.9697 4.96967C14.6408 4.29858 15.5509 3.92157 16.5 3.92157C17.4491 3.92157 18.3592 4.29858 19.0303 4.96967C19.7014 5.64075 20.0784 6.55094 20.0784 7.5C20.0784 8.44905 19.7014 9.35924 19.0303 10.0303L8.53033 20.5303C8.38968 20.671 8.19891 20.75 8 20.75H4C3.58579 20.75 3.25 20.4142 3.25 20V16C3.25 15.8011 3.32902 15.6103 3.46967 15.4697L13.9697 4.96967ZM16.5 5.42157C15.9488 5.42157 15.4201 5.64055 15.0303 6.03033L4.75 16.3107V19.25H7.68934L17.9697 8.96967C18.3595 8.57989 18.5784 8.05123 18.5784 7.5C18.5784 6.94876 18.3595 6.42011 17.9697 6.03033C17.5799 5.64055 17.0512 5.42157 16.5 5.42157Z"
2236 }), /*#__PURE__*/_react.default.createElement("path", {
2237 fillRule: "evenodd",
2238 clipRule: "evenodd",
2239 d: "M12.9697 5.96967C13.2626 5.67677 13.7374 5.67677 14.0303 5.96967L18.0303 9.96967C18.3232 10.2626 18.3232 10.7374 18.0303 11.0303C17.7374 11.3232 17.2626 11.3232 16.9697 11.0303L12.9697 7.03033C12.6768 6.73743 12.6768 6.26256 12.9697 5.96967Z"
2240 }));
2241 });
2242 var _default = exports["default"] = EditIcon;
2243
2244 /***/ }),
2245
2246 /***/ "../modules/ai/assets/js/editor/icons/expand-diagonal-icon.js":
2247 /*!********************************************************************!*\
2248 !*** ../modules/ai/assets/js/editor/icons/expand-diagonal-icon.js ***!
2249 \********************************************************************/
2250 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2251
2252 "use strict";
2253
2254
2255 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2256 Object.defineProperty(exports, "__esModule", ({
2257 value: true
2258 }));
2259 exports["default"] = void 0;
2260 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2261 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2262 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2263 var ExpandDiagonalIcon = _react.default.forwardRef(function (props, ref) {
2264 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({
2265 viewBox: "0 0 24 24"
2266 }, props, {
2267 ref: ref
2268 }), /*#__PURE__*/_react.default.createElement("path", {
2269 fillRule: "evenodd",
2270 clipRule: "evenodd",
2271 d: "M4 3.25H8C8.41421 3.25 8.75 3.58579 8.75 4C8.75 4.41421 8.41421 4.75 8 4.75H5.81066L10.5303 9.46967C10.8232 9.76256 10.8232 10.2374 10.5303 10.5303C10.2374 10.8232 9.76256 10.8232 9.46967 10.5303L4.75 5.81066V8C4.75 8.41421 4.41421 8.75 4 8.75C3.58579 8.75 3.25 8.41421 3.25 8V4C3.25 3.58579 3.58579 3.25 4 3.25ZM13.4697 13.4697C13.7626 13.1768 14.2374 13.1768 14.5303 13.4697L19.25 18.1893V16C19.25 15.5858 19.5858 15.25 20 15.25C20.4142 15.25 20.75 15.5858 20.75 16V20C20.75 20.4142 20.4142 20.75 20 20.75H16C15.5858 20.75 15.25 20.4142 15.25 20C15.25 19.5858 15.5858 19.25 16 19.25H18.1893L13.4697 14.5303C13.1768 14.2374 13.1768 13.7626 13.4697 13.4697Z"
2272 }));
2273 });
2274 var _default = exports["default"] = ExpandDiagonalIcon;
2275
2276 /***/ }),
2277
2278 /***/ "../modules/ai/assets/js/editor/icons/lock-icon.js":
2279 /*!*********************************************************!*\
2280 !*** ../modules/ai/assets/js/editor/icons/lock-icon.js ***!
2281 \*********************************************************/
2282 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2283
2284 "use strict";
2285
2286
2287 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2288 Object.defineProperty(exports, "__esModule", ({
2289 value: true
2290 }));
2291 exports["default"] = void 0;
2292 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2293 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2294 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2295 var LockIcon = _react.default.forwardRef(function (props, ref) {
2296 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({
2297 viewBox: "0 0 24 24"
2298 }, props, {
2299 ref: ref
2300 }), /*#__PURE__*/_react.default.createElement("path", {
2301 fillRule: "evenodd",
2302 clipRule: "evenodd",
2303 d: "M7.8125 11.9996C7.29473 11.9996 6.875 12.4473 6.875 12.9996V18.9996C6.875 19.5519 7.29473 19.9996 7.8125 19.9996H17.1875C17.7053 19.9996 18.125 19.5519 18.125 18.9996V12.9996C18.125 12.4473 17.7053 11.9996 17.1875 11.9996H7.8125ZM5 12.9996C5 11.3428 6.2592 9.99963 7.8125 9.99963H17.1875C18.7408 9.99963 20 11.3428 20 12.9996V18.9996C20 20.6565 18.7408 21.9996 17.1875 21.9996H7.8125C6.2592 21.9996 5 20.6565 5 18.9996V12.9996Z"
2304 }), /*#__PURE__*/_react.default.createElement("path", {
2305 fillRule: "evenodd",
2306 clipRule: "evenodd",
2307 d: "M12.5 3.90527C11.7044 3.90527 10.9413 4.22134 10.3787 4.78395C9.81607 5.34656 9.5 6.10962 9.5 6.90527V10.9053C9.5 11.4576 9.05228 11.9053 8.5 11.9053C7.94772 11.9053 7.5 11.4576 7.5 10.9053V6.90527C7.5 5.57919 8.02678 4.30742 8.96447 3.36974C9.90215 2.43206 11.1739 1.90527 12.5 1.90527C13.8261 1.90527 15.0979 2.43206 16.0355 3.36974C16.9732 4.30742 17.5 5.57919 17.5 6.90527V10.9053C17.5 11.4576 17.0523 11.9053 16.5 11.9053C15.9477 11.9053 15.5 11.4576 15.5 10.9053V6.90527C15.5 6.10962 15.1839 5.34656 14.6213 4.78395C14.0587 4.22134 13.2956 3.90527 12.5 3.90527Z"
2308 }), /*#__PURE__*/_react.default.createElement("path", {
2309 d: "M6 12H19V20H6V12Z"
2310 }));
2311 });
2312 var _default = exports["default"] = LockIcon;
2313
2314 /***/ }),
2315
2316 /***/ "../modules/ai/assets/js/editor/icons/minimize-diagonal-icon.js":
2317 /*!**********************************************************************!*\
2318 !*** ../modules/ai/assets/js/editor/icons/minimize-diagonal-icon.js ***!
2319 \**********************************************************************/
2320 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2321
2322 "use strict";
2323
2324
2325 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2326 Object.defineProperty(exports, "__esModule", ({
2327 value: true
2328 }));
2329 exports["default"] = void 0;
2330 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2331 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2332 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2333 var MinimizeDiagonalIcon = _react.default.forwardRef(function (props, ref) {
2334 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({
2335 viewBox: "0 0 24 24"
2336 }, props, {
2337 ref: ref
2338 }), /*#__PURE__*/_react.default.createElement("path", {
2339 fillRule: "evenodd",
2340 clipRule: "evenodd",
2341 d: "M3.46967 3.46967C3.76256 3.17678 4.23744 3.17678 4.53033 3.46967L9.25 8.18934V6C9.25 5.58579 9.58579 5.25 10 5.25C10.4142 5.25 10.75 5.58579 10.75 6V10C10.75 10.4142 10.4142 10.75 10 10.75H6C5.58579 10.75 5.25 10.4142 5.25 10C5.25 9.58579 5.58579 9.25 6 9.25H8.18934L3.46967 4.53033C3.17678 4.23744 3.17678 3.76256 3.46967 3.46967ZM14 13.25H18C18.4142 13.25 18.75 13.5858 18.75 14C18.75 14.4142 18.4142 14.75 18 14.75H15.8107L20.5303 19.4697C20.8232 19.7626 20.8232 20.2374 20.5303 20.5303C20.2374 20.8232 19.7626 20.8232 19.4697 20.5303L14.75 15.8107V18C14.75 18.4142 14.4142 18.75 14 18.75C13.5858 18.75 13.25 18.4142 13.25 18V14C13.25 13.5858 13.5858 13.25 14 13.25Z"
2342 }));
2343 });
2344 var _default = exports["default"] = MinimizeDiagonalIcon;
2345
2346 /***/ }),
2347
2348 /***/ "../modules/ai/assets/js/editor/icons/plus-circle-icon.js":
2349 /*!****************************************************************!*\
2350 !*** ../modules/ai/assets/js/editor/icons/plus-circle-icon.js ***!
2351 \****************************************************************/
2352 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2353
2354 "use strict";
2355
2356
2357 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2358 Object.defineProperty(exports, "__esModule", ({
2359 value: true
2360 }));
2361 exports["default"] = void 0;
2362 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2363 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2364 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2365 var PlusCircleIcon = _react.default.forwardRef(function (props, ref) {
2366 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({
2367 viewBox: "0 0 24 24"
2368 }, props, {
2369 ref: ref
2370 }), /*#__PURE__*/_react.default.createElement("path", {
2371 d: "M12 2.69231C6.8595 2.69231 2.69231 6.8595 2.69231 12C2.69231 17.1405 6.8595 21.3077 12 21.3077C17.1405 21.3077 21.3077 17.1405 21.3077 12C21.3077 6.8595 17.1405 2.69231 12 2.69231ZM1 12C1 5.92487 5.92487 1 12 1C18.0751 1 23 5.92487 23 12C23 18.0751 18.0751 23 12 23C5.92487 23 1 18.0751 1 12ZM12 7.76923C12.4673 7.76923 12.8462 8.14807 12.8462 8.61538V11.1538H15.3846C15.8519 11.1538 16.2308 11.5327 16.2308 12C16.2308 12.4673 15.8519 12.8462 15.3846 12.8462H12.8462V15.3846C12.8462 15.8519 12.4673 16.2308 12 16.2308C11.5327 16.2308 11.1538 15.8519 11.1538 15.3846V12.8462H8.61538C8.14807 12.8462 7.76923 12.4673 7.76923 12C7.76923 11.5327 8.14807 11.1538 8.61538 11.1538H11.1538V8.61538C11.1538 8.14807 11.5327 7.76923 12 7.76923Z"
2372 }));
2373 });
2374 var _default = exports["default"] = PlusCircleIcon;
2375
2376 /***/ }),
2377
2378 /***/ "../modules/ai/assets/js/editor/icons/refresh-icon.js":
2379 /*!************************************************************!*\
2380 !*** ../modules/ai/assets/js/editor/icons/refresh-icon.js ***!
2381 \************************************************************/
2382 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2383
2384 "use strict";
2385
2386
2387 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2388 Object.defineProperty(exports, "__esModule", ({
2389 value: true
2390 }));
2391 exports["default"] = void 0;
2392 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2393 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2394 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2395 var RefreshIcon = _react.default.forwardRef(function (props, ref) {
2396 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({
2397 viewBox: "0 0 24 24"
2398 }, props, {
2399 ref: ref
2400 }), /*#__PURE__*/_react.default.createElement("path", {
2401 fillRule: "evenodd",
2402 clipRule: "evenodd",
2403 d: "M7.55012 4.45178C9.23098 3.48072 11.1845 3.08925 13.1097 3.33767C15.035 3.58609 16.8251 4.46061 18.2045 5.82653C19.5838 7.19245 20.4757 8.97399 20.743 10.8967C20.8 11.307 20.5136 11.6858 20.1033 11.7428C19.6931 11.7998 19.3142 11.5135 19.2572 11.1032C19.0353 9.50635 18.2945 8.02677 17.149 6.89236C16.0035 5.75795 14.5167 5.03165 12.9178 4.82534C11.3189 4.61902 9.69644 4.94414 8.30047 5.75061C7.24361 6.36117 6.36093 7.22198 5.72541 8.24995H8.00009C8.41431 8.24995 8.75009 8.58574 8.75009 8.99995C8.75009 9.41417 8.41431 9.74995 8.00009 9.74995H4.51686C4.5055 9.75021 4.49412 9.75021 4.48272 9.74995H4.00009C3.58588 9.74995 3.25009 9.41417 3.25009 8.99995V4.99995C3.25009 4.58574 3.58588 4.24995 4.00009 4.24995C4.41431 4.24995 4.75009 4.58574 4.75009 4.99995V7.00691C5.48358 5.96916 6.43655 5.0951 7.55012 4.45178Z"
2404 }), /*#__PURE__*/_react.default.createElement("path", {
2405 fillRule: "evenodd",
2406 clipRule: "evenodd",
2407 d: "M3.89686 12.2571C4.30713 12.2001 4.68594 12.4864 4.74295 12.8967C4.96487 14.4936 5.70565 15.9731 6.85119 17.1075C7.99673 18.242 9.48347 18.9683 11.0824 19.1746C12.6813 19.3809 14.3037 19.0558 15.6997 18.2493C16.7566 17.6387 17.6393 16.7779 18.2748 15.75H16.0001C15.5859 15.75 15.2501 15.4142 15.2501 15C15.2501 14.5857 15.5859 14.25 16.0001 14.25H19.4833C19.4947 14.2497 19.5061 14.2497 19.5175 14.25H20.0001C20.4143 14.25 20.7501 14.5857 20.7501 15V19C20.7501 19.4142 20.4143 19.75 20.0001 19.75C19.5859 19.75 19.2501 19.4142 19.2501 19V16.993C18.5166 18.0307 17.5636 18.9048 16.4501 19.5481C14.7692 20.5192 12.8157 20.9107 10.8904 20.6622C8.9652 20.4138 7.17504 19.5393 5.79572 18.1734C4.4164 16.8074 3.52443 15.0259 3.25723 13.1032C3.20022 12.6929 3.48658 12.3141 3.89686 12.2571Z"
2408 }));
2409 });
2410 var _default = exports["default"] = RefreshIcon;
2411
2412 /***/ }),
2413
2414 /***/ "../modules/ai/assets/js/editor/icons/wand-icon.js":
2415 /*!*********************************************************!*\
2416 !*** ../modules/ai/assets/js/editor/icons/wand-icon.js ***!
2417 \*********************************************************/
2418 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2419
2420 "use strict";
2421
2422
2423 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2424 Object.defineProperty(exports, "__esModule", ({
2425 value: true
2426 }));
2427 exports["default"] = void 0;
2428 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2429 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2430 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2431 var WandIcon = _react.default.forwardRef(function (props, ref) {
2432 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({
2433 viewBox: "0 0 24 24"
2434 }, props, {
2435 ref: ref
2436 }), /*#__PURE__*/_react.default.createElement("path", {
2437 fillRule: "evenodd",
2438 clipRule: "evenodd",
2439 d: "M9 2.25C9.41421 2.25 9.75 2.58579 9.75 3C9.75 3.33152 9.8817 3.64946 10.1161 3.88388C10.3505 4.1183 10.6685 4.25 11 4.25C11.4142 4.25 11.75 4.58579 11.75 5C11.75 5.41421 11.4142 5.75 11 5.75C10.6685 5.75 10.3505 5.8817 10.1161 6.11612C9.8817 6.35054 9.75 6.66848 9.75 7C9.75 7.41421 9.41421 7.75 9 7.75C8.58579 7.75 8.25 7.41421 8.25 7C8.25 6.66848 8.1183 6.35054 7.88388 6.11612C7.64946 5.8817 7.33152 5.75 7 5.75C6.58579 5.75 6.25 5.41421 6.25 5C6.25 4.58579 6.58579 4.25 7 4.25C7.33152 4.25 7.64946 4.1183 7.88388 3.88388C8.1183 3.64946 8.25 3.33152 8.25 3C8.25 2.58579 8.58579 2.25 9 2.25ZM9 4.88746C8.98182 4.90673 8.96333 4.92576 8.94454 4.94454C8.92576 4.96333 8.90673 4.98182 8.88746 5C8.90673 5.01818 8.92576 5.03667 8.94454 5.05546C8.96333 5.07424 8.98182 5.09327 9 5.11254C9.01818 5.09327 9.03667 5.07424 9.05546 5.05546C9.07424 5.03667 9.09327 5.01818 9.11254 5C9.09327 4.98182 9.07424 4.96333 9.05546 4.94454C9.03667 4.92576 9.01818 4.90673 9 4.88746Z"
2440 }), /*#__PURE__*/_react.default.createElement("path", {
2441 fillRule: "evenodd",
2442 clipRule: "evenodd",
2443 d: "M18.5303 2.46967C18.2374 2.17678 17.7626 2.17678 17.4697 2.46967L2.46967 17.4697C2.17678 17.7626 2.17678 18.2374 2.46967 18.5303L5.46967 21.5303C5.76256 21.8232 6.23744 21.8232 6.53033 21.5303L21.5303 6.53033C21.8232 6.23744 21.8232 5.76256 21.5303 5.46967L18.5303 2.46967ZM18 7.93934L19.9393 6L18 4.06066L16.0607 6L18 7.93934ZM15 7.06066L16.9393 9L6 19.9393L4.06066 18L15 7.06066Z"
2444 }), /*#__PURE__*/_react.default.createElement("path", {
2445 fillRule: "evenodd",
2446 clipRule: "evenodd",
2447 d: "M19.75 13C19.75 12.5858 19.4142 12.25 19 12.25C18.5858 12.25 18.25 12.5858 18.25 13C18.25 13.3315 18.1183 13.6495 17.8839 13.8839C17.6495 14.1183 17.3315 14.25 17 14.25C16.5858 14.25 16.25 14.5858 16.25 15C16.25 15.4142 16.5858 15.75 17 15.75C17.3315 15.75 17.6495 15.8817 17.8839 16.1161C18.1183 16.3505 18.25 16.6685 18.25 17C18.25 17.4142 18.5858 17.75 19 17.75C19.4142 17.75 19.75 17.4142 19.75 17C19.75 16.6685 19.8817 16.3505 20.1161 16.1161C20.3505 15.8817 20.6685 15.75 21 15.75C21.4142 15.75 21.75 15.4142 21.75 15C21.75 14.5858 21.4142 14.25 21 14.25C20.6685 14.25 20.3505 14.1183 20.1161 13.8839C19.8817 13.6495 19.75 13.3315 19.75 13ZM18.9445 14.9445C18.9633 14.9258 18.9818 14.9067 19 14.8875C19.0182 14.9067 19.0367 14.9258 19.0555 14.9445C19.0742 14.9633 19.0933 14.9818 19.1125 15C19.0933 15.0182 19.0742 15.0367 19.0555 15.0555C19.0367 15.0742 19.0182 15.0933 19 15.1125C18.9818 15.0933 18.9633 15.0742 18.9445 15.0555C18.9258 15.0367 18.9067 15.0182 18.8875 15C18.9067 14.9818 18.9258 14.9633 18.9445 14.9445Z"
2448 }));
2449 });
2450 var _default = exports["default"] = WandIcon;
2451
2452 /***/ }),
2453
2454 /***/ "../modules/ai/assets/js/editor/icons/website-icon.js":
2455 /*!************************************************************!*\
2456 !*** ../modules/ai/assets/js/editor/icons/website-icon.js ***!
2457 \************************************************************/
2458 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2459
2460 "use strict";
2461
2462
2463 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2464 Object.defineProperty(exports, "__esModule", ({
2465 value: true
2466 }));
2467 exports["default"] = void 0;
2468 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2469 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2470 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2471 var WebsiteIcon = _react.default.forwardRef(function (props, ref) {
2472 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({
2473 viewBox: "0 0 24 24"
2474 }, props, {
2475 ref: ref
2476 }), /*#__PURE__*/_react.default.createElement("path", {
2477 fillRule: "evenodd",
2478 clipRule: "evenodd",
2479 d: "M4.16707 3.95837C4.11182 3.95837 4.05883 3.98032 4.01976 4.01939C3.98069 4.05846 3.95874 4.11145 3.95874 4.16671V6.04171H6.04207V3.95837H4.16707ZM4.16707 2.70837C3.7803 2.70837 3.40937 2.86202 3.13588 3.13551C2.86239 3.409 2.70874 3.77993 2.70874 4.16671V15.8334C2.70874 16.2201 2.86239 16.5911 3.13588 16.8646C3.40937 17.1381 3.7803 17.2917 4.16707 17.2917H15.8337C16.2205 17.2917 16.5914 17.1381 16.8649 16.8646C17.1384 16.5911 17.2921 16.2201 17.2921 15.8334V4.16671C17.2921 3.77993 17.1384 3.409 16.8649 3.13551C16.5914 2.86202 16.2205 2.70837 15.8337 2.70837H4.16707ZM7.29207 3.95837V6.04171H16.0421V4.16671C16.0421 4.11145 16.0201 4.05846 15.9811 4.01939C15.942 3.98032 15.889 3.95837 15.8337 3.95837H7.29207ZM16.0421 7.29171H3.95874V15.8334C3.95874 15.8886 3.98069 15.9416 4.01976 15.9807C4.05883 16.0198 4.11182 16.0417 4.16707 16.0417H15.8337C15.889 16.0417 15.942 16.0198 15.9811 15.9807C16.0201 15.9416 16.0421 15.8886 16.0421 15.8334V7.29171Z"
2480 }));
2481 });
2482 var _default = exports["default"] = WebsiteIcon;
2483
2484 /***/ }),
2485
2486 /***/ "../modules/ai/assets/js/editor/icons/x-circle-icon.js":
2487 /*!*************************************************************!*\
2488 !*** ../modules/ai/assets/js/editor/icons/x-circle-icon.js ***!
2489 \*************************************************************/
2490 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2491
2492 "use strict";
2493
2494
2495 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2496 Object.defineProperty(exports, "__esModule", ({
2497 value: true
2498 }));
2499 exports["default"] = void 0;
2500 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2501 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2502 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2503 var XCircleIcon = _react.default.forwardRef(function (props, ref) {
2504 return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({
2505 viewBox: "0 0 24 24"
2506 }, props, {
2507 ref: ref
2508 }), /*#__PURE__*/_react.default.createElement("path", {
2509 d: "M12 2.69231C6.8595 2.69231 2.69231 6.8595 2.69231 12C2.69231 17.1405 6.8595 21.3077 12 21.3077C17.1405 21.3077 21.3077 17.1405 21.3077 12C21.3077 6.8595 17.1405 2.69231 12 2.69231ZM1 12C1 5.92487 5.92487 1 12 1C18.0751 1 23 5.92487 23 12C23 18.0751 18.0751 23 12 23C5.92487 23 1 18.0751 1 12ZM9.14527 9.14527C9.47571 8.81483 10.0115 8.81483 10.3419 9.14527L12 10.8034L13.6581 9.14527C13.9885 8.81483 14.5243 8.81483 14.8547 9.14527C15.1852 9.47571 15.1852 10.0115 14.8547 10.3419L13.1966 12L14.8547 13.6581C15.1852 13.9885 15.1852 14.5243 14.8547 14.8547C14.5243 15.1852 13.9885 15.1852 13.6581 14.8547L12 13.1966L10.3419 14.8547C10.0115 15.1852 9.47571 15.1852 9.14527 14.8547C8.81483 14.5243 8.81483 13.9885 9.14527 13.6581L10.8034 12L9.14527 10.3419C8.81483 10.0115 8.81483 9.47571 9.14527 9.14527Z"
2510 }));
2511 });
2512 var _default = exports["default"] = XCircleIcon;
2513
2514 /***/ }),
2515
2516 /***/ "../modules/ai/assets/js/editor/integration/library/apply-template-for-ai-behavior.js":
2517 /*!********************************************************************************************!*\
2518 !*** ../modules/ai/assets/js/editor/integration/library/apply-template-for-ai-behavior.js ***!
2519 \********************************************************************************************/
2520 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2521
2522 "use strict";
2523
2524
2525 var _require = __webpack_require__(/*! ../../utils/editor-integration */ "../modules/ai/assets/js/editor/utils/editor-integration.js"),
2526 renderLayoutApp = _require.renderLayoutApp,
2527 importToEditor = _require.importToEditor;
2528 var _require2 = __webpack_require__(/*! ../../pages/form-layout/context/config */ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js"),
2529 MODE_VARIATION = _require2.MODE_VARIATION;
2530 var _require3 = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"),
2531 __ = _require3.__;
2532 var _require4 = __webpack_require__(/*! ../../pages/form-layout/components/attachments */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments.js"),
2533 ATTACHMENT_TYPE_JSON = _require4.ATTACHMENT_TYPE_JSON,
2534 ELEMENTOR_LIBRARY_SOURCE = _require4.ELEMENTOR_LIBRARY_SOURCE;
2535 var _require5 = __webpack_require__(/*! elementor-editor-utils/editor-one-events */ "../assets/dev/js/editor/utils/editor-one-events.js"),
2536 EditorOneEventManager = _require5.EditorOneEventManager;
2537 var ApplyTemplateForAiBehavior;
2538 ApplyTemplateForAiBehavior = Marionette.Behavior.extend({
2539 ui: {
2540 applyButton: '.elementor-template-library-template-apply-ai',
2541 generateVariation: '.elementor-template-library-template-generate-variation'
2542 },
2543 events: {
2544 'click @ui.applyButton': 'onApplyButtonClick',
2545 'click @ui.generateVariation': 'onGenerateVariationClick'
2546 },
2547 trackAiGenerate: function trackAiGenerate(model) {
2548 EditorOneEventManager.sendELibraryGenerateAi({
2549 assetId: model.get('template_id'),
2550 assetName: model.get('title'),
2551 libraryType: model.get('type') || model.get('source')
2552 });
2553 },
2554 onGenerateVariationClick: function onGenerateVariationClick() {
2555 var _libraryComponent$man;
2556 var args = {
2557 model: this.view.model
2558 };
2559 this.trackAiGenerate(this.view.model);
2560 var libraryComponent = $e.components.get('library');
2561 var at = (_libraryComponent$man = libraryComponent.manager.modalConfig) === null || _libraryComponent$man === void 0 || (_libraryComponent$man = _libraryComponent$man.importOptions) === null || _libraryComponent$man === void 0 ? void 0 : _libraryComponent$man.at;
2562 libraryComponent.downloadTemplate(args, function (data) {
2563 var model = args.model;
2564 var attachment = {
2565 type: ATTACHMENT_TYPE_JSON,
2566 previewHTML: "<img src=\"".concat(model.get('thumbnail'), "\" />"),
2567 content: data.content[0],
2568 label: "".concat(model.get('template_id'), " - ").concat(model.get('title')),
2569 source: ELEMENTOR_LIBRARY_SOURCE
2570 };
2571 renderLayoutApp({
2572 parentContainer: elementor.getPreviewContainer(),
2573 mode: MODE_VARIATION,
2574 at: at,
2575 attachments: [attachment],
2576 onInsert: function onInsert(template) {
2577 importToEditor({
2578 parentContainer: elementor.getPreviewContainer(),
2579 at: at,
2580 template: template,
2581 historyTitle: __('AI Variation from library', 'elementor')
2582 });
2583 }
2584 });
2585 $e.run('library/close');
2586 });
2587 },
2588 onApplyButtonClick: function onApplyButtonClick() {
2589 var args = {
2590 model: this.view.model
2591 };
2592 this.trackAiGenerate(this.view.model);
2593 this.ui.applyButton.addClass('elementor-disabled');
2594 var activeSource = args.model.get('source');
2595
2596 /**
2597 * Filter template source.
2598 *
2599 * @param bool isRemote - If `true` the source is a remote source.
2600 * @param string activeSource - The current template source.
2601 */
2602 var isRemote = elementor.hooks.applyFilters('templates/source/is-remote', 'remote' === activeSource, activeSource);
2603 if (isRemote && !elementor.config.library_connect.is_connected) {
2604 $e.route('library/connect', args);
2605 return;
2606 }
2607 $e.run('library/generate-ai-variation', args);
2608 }
2609 });
2610 module.exports = ApplyTemplateForAiBehavior;
2611
2612 /***/ }),
2613
2614 /***/ "../modules/ai/assets/js/editor/layout-app-wrapper.js":
2615 /*!************************************************************!*\
2616 !*** ../modules/ai/assets/js/editor/layout-app-wrapper.js ***!
2617 \************************************************************/
2618 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2619
2620 "use strict";
2621
2622
2623 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2624 Object.defineProperty(exports, "__esModule", ({
2625 value: true
2626 }));
2627 exports["default"] = void 0;
2628 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2629 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2630 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
2631 var LayoutAppWrapper = function LayoutAppWrapper(props) {
2632 return /*#__PURE__*/_react.default.createElement(_ui.DirectionProvider, {
2633 rtl: props.isRTL
2634 }, /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, {
2635 colorScheme: props.colorScheme
2636 }, props.children));
2637 };
2638 LayoutAppWrapper.propTypes = {
2639 children: _propTypes.default.node,
2640 isRTL: _propTypes.default.bool,
2641 colorScheme: _propTypes.default.oneOf(['auto', 'light', 'dark'])
2642 };
2643 var _default = exports["default"] = LayoutAppWrapper;
2644
2645 /***/ }),
2646
2647 /***/ "../modules/ai/assets/js/editor/layout-app.js":
2648 /*!****************************************************!*\
2649 !*** ../modules/ai/assets/js/editor/layout-app.js ***!
2650 \****************************************************/
2651 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2652
2653 "use strict";
2654
2655
2656 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2657 Object.defineProperty(exports, "__esModule", ({
2658 value: true
2659 }));
2660 exports["default"] = void 0;
2661 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2662 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
2663 var _layoutContent = _interopRequireDefault(__webpack_require__(/*! ./layout-content */ "../modules/ai/assets/js/editor/layout-content.js"));
2664 var _attachment = __webpack_require__(/*! ./types/attachment */ "../modules/ai/assets/js/editor/types/attachment.js");
2665 var _config = __webpack_require__(/*! ./pages/form-layout/context/config */ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js");
2666 var _remoteConfig = __webpack_require__(/*! ./pages/form-layout/context/remote-config */ "../modules/ai/assets/js/editor/pages/form-layout/context/remote-config.js");
2667 var _requestsIds = __webpack_require__(/*! ./context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js");
2668 var LayoutApp = function LayoutApp(props) {
2669 return /*#__PURE__*/_react.default.createElement(_remoteConfig.RemoteConfigProvider, {
2670 onError: props.onClose
2671 }, /*#__PURE__*/_react.default.createElement(_requestsIds.RequestIdsProvider, null, /*#__PURE__*/_react.default.createElement(_config.ConfigProvider, {
2672 mode: props.mode,
2673 attachmentsTypes: props.attachmentsTypes,
2674 onClose: props.onClose,
2675 onConnect: props.onConnect,
2676 onData: props.onData,
2677 onInsert: props.onInsert,
2678 onSelect: props.onSelect,
2679 onGenerate: props.onGenerate,
2680 currentContext: props.currentContext,
2681 hasPro: props.hasPro
2682 }, /*#__PURE__*/_react.default.createElement(_layoutContent.default, {
2683 attachments: props.attachments
2684 }))));
2685 };
2686 LayoutApp.propTypes = {
2687 mode: _propTypes.default.oneOf(_config.LAYOUT_APP_MODES).isRequired,
2688 attachmentsTypes: _attachment.AttachmentsTypesPropType,
2689 attachments: _propTypes.default.arrayOf(_attachment.AttachmentPropType),
2690 onClose: _propTypes.default.func.isRequired,
2691 onConnect: _propTypes.default.func.isRequired,
2692 onData: _propTypes.default.func.isRequired,
2693 onInsert: _propTypes.default.func.isRequired,
2694 onSelect: _propTypes.default.func.isRequired,
2695 onGenerate: _propTypes.default.func.isRequired,
2696 currentContext: _propTypes.default.object,
2697 hasPro: _propTypes.default.bool
2698 };
2699 var _default = exports["default"] = LayoutApp;
2700
2701 /***/ }),
2702
2703 /***/ "../modules/ai/assets/js/editor/layout-content.js":
2704 /*!********************************************************!*\
2705 !*** ../modules/ai/assets/js/editor/layout-content.js ***!
2706 \********************************************************/
2707 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2708
2709 "use strict";
2710
2711
2712 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2713 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
2714 Object.defineProperty(exports, "__esModule", ({
2715 value: true
2716 }));
2717 exports["default"] = void 0;
2718 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
2719 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
2720 var _connect = _interopRequireDefault(__webpack_require__(/*! ./pages/connect */ "../modules/ai/assets/js/editor/pages/connect/index.js"));
2721 var _formLayout = _interopRequireDefault(__webpack_require__(/*! ./pages/form-layout */ "../modules/ai/assets/js/editor/pages/form-layout/index.js"));
2722 var _getStarted = _interopRequireDefault(__webpack_require__(/*! ./pages/get-started */ "../modules/ai/assets/js/editor/pages/get-started/index.js"));
2723 var _loader = _interopRequireDefault(__webpack_require__(/*! ./components/loader */ "../modules/ai/assets/js/editor/components/loader.js"));
2724 var _upgradeChip = _interopRequireDefault(__webpack_require__(/*! ./components/upgrade-chip */ "../modules/ai/assets/js/editor/components/upgrade-chip.js"));
2725 var _useUserInfo2 = _interopRequireDefault(__webpack_require__(/*! ./hooks/use-user-info */ "../modules/ai/assets/js/editor/hooks/use-user-info.js"));
2726 var _wizardDialog = _interopRequireDefault(__webpack_require__(/*! ./components/wizard-dialog */ "../modules/ai/assets/js/editor/components/wizard-dialog.js"));
2727 var _layoutDialog = _interopRequireDefault(__webpack_require__(/*! ./pages/form-layout/components/layout-dialog */ "../modules/ai/assets/js/editor/pages/form-layout/components/layout-dialog.js"));
2728 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
2729 var _attachment = __webpack_require__(/*! ./types/attachment */ "../modules/ai/assets/js/editor/types/attachment.js");
2730 var _config = __webpack_require__(/*! ./pages/form-layout/context/config */ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js");
2731 var _requestsIds = __webpack_require__(/*! ./context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js");
2732 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
2733 var LayoutContent = function LayoutContent(props) {
2734 var _useUserInfo = (0, _useUserInfo2.default)(),
2735 isLoading = _useUserInfo.isLoading,
2736 isConnected = _useUserInfo.isConnected,
2737 isGetStarted = _useUserInfo.isGetStarted,
2738 connectUrl = _useUserInfo.connectUrl,
2739 fetchData = _useUserInfo.fetchData,
2740 hasSubscription = _useUserInfo.hasSubscription,
2741 initialUsagePercentage = _useUserInfo.usagePercentage;
2742 var _useConfig = (0, _config.useConfig)(),
2743 onClose = _useConfig.onClose,
2744 onConnect = _useConfig.onConnect;
2745 var _useRequestIds = (0, _requestsIds.useRequestIds)(),
2746 updateUsagePercentage = _useRequestIds.updateUsagePercentage,
2747 usagePercentage = _useRequestIds.usagePercentage;
2748 var _useState = (0, _react.useState)(false),
2749 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
2750 isInitUsageDone = _useState2[0],
2751 setIsInitUsageDone = _useState2[1];
2752 (0, _react.useEffect)(function () {
2753 if (!isInitUsageDone && !isLoading && (initialUsagePercentage || 0 === initialUsagePercentage)) {
2754 updateUsagePercentage(initialUsagePercentage);
2755 setIsInitUsageDone(true);
2756 }
2757 }, [isLoading, initialUsagePercentage, isInitUsageDone, updateUsagePercentage]);
2758 if (isLoading || !isInitUsageDone) {
2759 return /*#__PURE__*/_react.default.createElement(_layoutDialog.default, {
2760 onClose: onClose
2761 }, /*#__PURE__*/_react.default.createElement(_layoutDialog.default.Header, {
2762 onClose: onClose
2763 }), /*#__PURE__*/_react.default.createElement(_layoutDialog.default.Content, {
2764 dividers: true
2765 }, /*#__PURE__*/_react.default.createElement(_loader.default, {
2766 BoxProps: {
2767 sx: {
2768 px: 3
2769 }
2770 }
2771 })));
2772 }
2773 if (!isConnected) {
2774 return /*#__PURE__*/_react.default.createElement(_wizardDialog.default, {
2775 onClose: onClose
2776 }, /*#__PURE__*/_react.default.createElement(_layoutDialog.default, {
2777 onClose: onClose
2778 }), /*#__PURE__*/_react.default.createElement(_wizardDialog.default.Content, {
2779 dividers: true
2780 }, /*#__PURE__*/_react.default.createElement(_connect.default, {
2781 connectUrl: connectUrl,
2782 onSuccess: function onSuccess(data) {
2783 onConnect(data);
2784 fetchData();
2785 }
2786 })));
2787 }
2788 if (!isGetStarted) {
2789 return /*#__PURE__*/_react.default.createElement(_wizardDialog.default, {
2790 onClose: onClose
2791 }, /*#__PURE__*/_react.default.createElement(_layoutDialog.default, {
2792 onClose: onClose
2793 }), /*#__PURE__*/_react.default.createElement(_wizardDialog.default.Content, {
2794 dividers: true
2795 }, /*#__PURE__*/_react.default.createElement(_getStarted.default, {
2796 onSuccess: fetchData
2797 })));
2798 }
2799 var showUpgradeChip = !hasSubscription || 80 <= usagePercentage;
2800 return /*#__PURE__*/_react.default.createElement(_formLayout.default, {
2801 attachments: props.attachments,
2802 DialogHeaderProps: {
2803 children: showUpgradeChip && /*#__PURE__*/_react.default.createElement(_upgradeChip.default, {
2804 hasSubscription: hasSubscription,
2805 usagePercentage: usagePercentage
2806 })
2807 }
2808 });
2809 };
2810 LayoutContent.propTypes = {
2811 attachments: _propTypes.default.arrayOf(_attachment.AttachmentPropType)
2812 };
2813 var _default = exports["default"] = LayoutContent;
2814
2815 /***/ }),
2816
2817 /***/ "../modules/ai/assets/js/editor/pages/connect/index.js":
2818 /*!*************************************************************!*\
2819 !*** ../modules/ai/assets/js/editor/pages/connect/index.js ***!
2820 \*************************************************************/
2821 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2822
2823 "use strict";
2824
2825
2826 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2827 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
2828 Object.defineProperty(exports, "__esModule", ({
2829 value: true
2830 }));
2831 exports["default"] = void 0;
2832 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
2833 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2834 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
2835 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
2836 var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
2837 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
2838 var Connect = function Connect(_ref) {
2839 var connectUrl = _ref.connectUrl,
2840 onSuccess = _ref.onSuccess;
2841 var approveButtonRef = (0, _react.useRef)();
2842 (0, _react.useEffect)(function () {
2843 // On local dev (as a standalone app), the connect lib is not loaded.
2844 if (!jQuery.fn.elementorConnect) {
2845 return;
2846 }
2847 jQuery(approveButtonRef.current).elementorConnect({
2848 success: function success(_, data) {
2849 return onSuccess(data);
2850 },
2851 error: function error() {
2852 throw new Error('Elementor AI: Failed to connect.');
2853 }
2854 });
2855 }, []);
2856 return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
2857 alignItems: "center",
2858 gap: 2
2859 }, /*#__PURE__*/_react.default.createElement(_icons.AIIcon, {
2860 sx: {
2861 color: 'text.primary',
2862 fontSize: '60px',
2863 mb: 1
2864 }
2865 }), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
2866 variant: "h4",
2867 sx: {
2868 color: 'text.primary'
2869 }
2870 }, (0, _i18n.__)('Step into the future with Elementor AI', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
2871 variant: "body2"
2872 }, (0, _i18n.__)('Create smarter with AI text and code generators built right into the editor.', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
2873 variant: "caption",
2874 sx: {
2875 maxWidth: 520,
2876 textAlign: 'center'
2877 }
2878 }, (0, _i18n.__)('By clicking "Connect", I approve the ', 'elementor'), /*#__PURE__*/_react.default.createElement(_ui.Link, {
2879 href: "https://go.elementor.com/ai-terms/",
2880 target: "_blank",
2881 color: "info.main"
2882 }, (0, _i18n.__)('Terms of Service', 'elementor')), ' & ', /*#__PURE__*/_react.default.createElement(_ui.Link, {
2883 href: "https://go.elementor.com/ai-privacy-policy/",
2884 target: "_blank",
2885 color: "info.main"
2886 }, (0, _i18n.__)('Privacy Policy', 'elementor')), (0, _i18n.__)(' of the Elementor AI service.', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Button, {
2887 ref: approveButtonRef,
2888 href: connectUrl,
2889 variant: "contained",
2890 sx: {
2891 mt: 1,
2892 '&:hover': {
2893 color: 'primary.contrastText'
2894 }
2895 }
2896 }, (0, _i18n.__)('Connect', 'elementor')));
2897 };
2898 Connect.propTypes = {
2899 connectUrl: _propTypes.default.string.isRequired,
2900 onSuccess: _propTypes.default.func.isRequired
2901 };
2902 var _default = exports["default"] = Connect;
2903
2904 /***/ }),
2905
2906 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments.js":
2907 /*!**********************************************************************************!*\
2908 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/attachments.js ***!
2909 \**********************************************************************************/
2910 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2911
2912 "use strict";
2913
2914
2915 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2916 Object.defineProperty(exports, "__esModule", ({
2917 value: true
2918 }));
2919 exports["default"] = exports.USER_VARIATION_SOURCE = exports.USER_URL_SOURCE = exports.MENU_TYPE_LIBRARY = exports.ELEMENTOR_LIBRARY_SOURCE = exports.ATTACHMENT_TYPE_URL = exports.ATTACHMENT_TYPE_JSON = void 0;
2920 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2921 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
2922 var _menu = __webpack_require__(/*! ./attachments/menu */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/menu.js");
2923 var _thumbnailJson = _interopRequireDefault(__webpack_require__(/*! ./attachments/thumbnail-json */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/thumbnail-json.js"));
2924 var _thumbnailUrl = _interopRequireDefault(__webpack_require__(/*! ./attachments/thumbnail-url */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/thumbnail-url.js"));
2925 var _websiteIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/website-icon */ "../modules/ai/assets/js/editor/icons/website-icon.js"));
2926 var _copyPageIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/copy-page-icon */ "../modules/ai/assets/js/editor/icons/copy-page-icon.js"));
2927 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
2928 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
2929 var _attachment = __webpack_require__(/*! ../../../types/attachment */ "../modules/ai/assets/js/editor/types/attachment.js");
2930 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
2931 var ATTACHMENT_TYPE_JSON = exports.ATTACHMENT_TYPE_JSON = 'json';
2932 var ATTACHMENT_TYPE_URL = exports.ATTACHMENT_TYPE_URL = 'url';
2933 var MENU_TYPE_LIBRARY = exports.MENU_TYPE_LIBRARY = 'library';
2934 var USER_VARIATION_SOURCE = exports.USER_VARIATION_SOURCE = 'user-variation';
2935 var ELEMENTOR_LIBRARY_SOURCE = exports.ELEMENTOR_LIBRARY_SOURCE = 'elementor-library';
2936 var USER_URL_SOURCE = exports.USER_URL_SOURCE = 'user-url';
2937 var Attachments = function Attachments(props) {
2938 if (!props.attachments.length) {
2939 return /*#__PURE__*/_react.default.createElement(_menu.Menu, {
2940 disabled: props.disabled,
2941 onAttach: props.onAttach,
2942 items: [{
2943 title: (0, _i18n.__)('Reference a website', 'elementor'),
2944 icon: _websiteIcon.default,
2945 type: ATTACHMENT_TYPE_URL
2946 }, {
2947 title: (0, _i18n.__)('Create variations from Template Library', 'elementor'),
2948 icon: _copyPageIcon.default,
2949 type: MENU_TYPE_LIBRARY
2950 }]
2951 });
2952 }
2953 return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
2954 direction: "row",
2955 spacing: 1
2956 }, props.attachments.map(function (attachment, index) {
2957 switch (attachment.type) {
2958 case ATTACHMENT_TYPE_JSON:
2959 return /*#__PURE__*/_react.default.createElement(_thumbnailJson.default, (0, _extends2.default)({
2960 key: index
2961 }, props));
2962 case ATTACHMENT_TYPE_URL:
2963 return /*#__PURE__*/_react.default.createElement(_thumbnailUrl.default, (0, _extends2.default)({
2964 key: index
2965 }, props));
2966 default:
2967 return null;
2968 }
2969 }));
2970 };
2971 Attachments.propTypes = {
2972 attachments: _propTypes.default.arrayOf(_attachment.AttachmentPropType).isRequired,
2973 onAttach: _propTypes.default.func.isRequired,
2974 onDetach: _propTypes.default.func,
2975 disabled: _propTypes.default.bool
2976 };
2977 var _default = exports["default"] = Attachments;
2978
2979 /***/ }),
2980
2981 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/attach-dialog.js":
2982 /*!************************************************************************************************!*\
2983 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/attachments/attach-dialog.js ***!
2984 \************************************************************************************************/
2985 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2986
2987 "use strict";
2988
2989
2990 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2991 Object.defineProperty(exports, "__esModule", ({
2992 value: true
2993 }));
2994 exports["default"] = exports.AttachDialog = void 0;
2995 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
2996 var _urlDialog = __webpack_require__(/*! ./url-dialog */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/url-dialog.js");
2997 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
2998 var _libraryDialog = __webpack_require__(/*! ./library-dialog */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/library-dialog.js");
2999 var _attachments = __webpack_require__(/*! ../attachments */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments.js");
3000 var AttachDialog = exports.AttachDialog = function AttachDialog(props) {
3001 var type = props.type;
3002 var url = props.url;
3003 switch (type) {
3004 case _attachments.ATTACHMENT_TYPE_URL:
3005 return /*#__PURE__*/_react.default.createElement(_urlDialog.UrlDialog, {
3006 url: url,
3007 onAttach: props.onAttach,
3008 onClose: props.onClose
3009 });
3010 case _attachments.MENU_TYPE_LIBRARY:
3011 return /*#__PURE__*/_react.default.createElement(_libraryDialog.LibraryDialog, {
3012 onAttach: props.onAttach,
3013 onClose: props.onClose
3014 });
3015 }
3016 return null;
3017 };
3018 AttachDialog.propTypes = {
3019 type: _propTypes.default.string,
3020 onAttach: _propTypes.default.func,
3021 onClose: _propTypes.default.func,
3022 url: _propTypes.default.string
3023 };
3024 var _default = exports["default"] = AttachDialog;
3025
3026 /***/ }),
3027
3028 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/library-dialog.js":
3029 /*!*************************************************************************************************!*\
3030 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/attachments/library-dialog.js ***!
3031 \*************************************************************************************************/
3032 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3033
3034 "use strict";
3035
3036
3037 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
3038 Object.defineProperty(exports, "__esModule", ({
3039 value: true
3040 }));
3041 exports.LibraryDialog = void 0;
3042 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
3043 var _react = __webpack_require__(/*! react */ "react");
3044 var _attachments = __webpack_require__(/*! ../attachments */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments.js");
3045 var LibraryDialog = exports.LibraryDialog = function LibraryDialog(props) {
3046 var isApplyingTemplate = (0, _react.useRef)(false);
3047 (0, _react.useEffect)(function () {
3048 var onLibraryHide = function onLibraryHide() {
3049 if (isApplyingTemplate.current) {
3050 return;
3051 }
3052 props.onClose();
3053 };
3054 $e.components.get('library').layout.getModal().on('hide', onLibraryHide);
3055 return function () {
3056 $e.components.get('library').layout.getModal().off('hide', onLibraryHide);
3057 };
3058 }, [props]);
3059 (0, _react.useEffect)(function () {
3060 var onMessage = function onMessage(event) {
3061 var _event$data = event.data,
3062 type = _event$data.type,
3063 json = _event$data.json,
3064 html = _event$data.html,
3065 label = _event$data.label,
3066 source = _event$data.source;
3067 switch (type) {
3068 case 'library/attach:start':
3069 isApplyingTemplate.current = true;
3070 break;
3071 case 'library/attach':
3072 props.onAttach([{
3073 type: _attachments.ATTACHMENT_TYPE_JSON,
3074 previewHTML: html,
3075 content: json,
3076 label: label,
3077 source: source
3078 }]);
3079 isApplyingTemplate.current = false;
3080 props.onClose();
3081 break;
3082 }
3083 };
3084 window.addEventListener('message', onMessage);
3085 return function () {
3086 window.removeEventListener('message', onMessage);
3087 };
3088 });
3089 $e.run('library/open', {
3090 toDefault: true,
3091 mode: 'ai-attachment'
3092 });
3093 isApplyingTemplate.current = false;
3094 return null;
3095 };
3096 LibraryDialog.propTypes = {
3097 onAttach: _propTypes.default.func.isRequired,
3098 onClose: _propTypes.default.func.isRequired
3099 };
3100
3101 /***/ }),
3102
3103 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/menu.js":
3104 /*!***************************************************************************************!*\
3105 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/attachments/menu.js ***!
3106 \***************************************************************************************/
3107 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3108
3109 "use strict";
3110
3111
3112 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
3113 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
3114 Object.defineProperty(exports, "__esModule", ({
3115 value: true
3116 }));
3117 exports.Menu = void 0;
3118 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
3119 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
3120 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
3121 var _xCircleIcon = _interopRequireDefault(__webpack_require__(/*! ../../../../icons/x-circle-icon */ "../modules/ai/assets/js/editor/icons/x-circle-icon.js"));
3122 var _plusCircleIcon = _interopRequireDefault(__webpack_require__(/*! ../../../../icons/plus-circle-icon */ "../modules/ai/assets/js/editor/icons/plus-circle-icon.js"));
3123 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
3124 var _attachDialog = __webpack_require__(/*! ./attach-dialog */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/attach-dialog.js");
3125 var _useIntroduction2 = _interopRequireDefault(__webpack_require__(/*! ../../../../hooks/use-introduction */ "../modules/ai/assets/js/editor/hooks/use-introduction.js"));
3126 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
3127 var Menu = exports.Menu = function Menu(props) {
3128 var _useState = (0, _react.useState)(false),
3129 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
3130 isOpen = _useState2[0],
3131 setIsOpen = _useState2[1];
3132 var _useState3 = (0, _react.useState)(null),
3133 _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
3134 selectedType = _useState4[0],
3135 setSelectedType = _useState4[1];
3136 var _useTheme = (0, _ui.useTheme)(),
3137 direction = _useTheme.direction;
3138 var anchorRef = (0, _react.useRef)(null);
3139 var _useIntroduction = (0, _useIntroduction2.default)('e-ai-attachment-badge'),
3140 isViewed = _useIntroduction.isViewed,
3141 markAsViewed = _useIntroduction.markAsViewed;
3142 return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.IconButton, {
3143 size: "small",
3144 ref: anchorRef,
3145 disabled: props.disabled,
3146 onClick: function onClick() {
3147 setIsOpen(true);
3148 if (!isViewed) {
3149 markAsViewed();
3150 }
3151 },
3152 color: "secondary"
3153 }, function () {
3154 if (isOpen) {
3155 return /*#__PURE__*/_react.default.createElement(_xCircleIcon.default, {
3156 fontSize: "small"
3157 });
3158 } else if (isViewed) {
3159 return /*#__PURE__*/_react.default.createElement(_plusCircleIcon.default, {
3160 fontSize: "small"
3161 });
3162 }
3163 return /*#__PURE__*/_react.default.createElement(_ui.Badge, {
3164 color: "primary",
3165 badgeContent: " ",
3166 variant: "dot"
3167 }, /*#__PURE__*/_react.default.createElement(_plusCircleIcon.default, {
3168 fontSize: "small"
3169 }));
3170 }()), /*#__PURE__*/_react.default.createElement(_ui.Popover, {
3171 open: isOpen,
3172 anchorEl: anchorRef.current,
3173 onClose: function onClose() {
3174 return setIsOpen(false);
3175 },
3176 anchorOrigin: {
3177 vertical: 'bottom',
3178 horizontal: 'rtl' === direction ? 'right' : 'left'
3179 },
3180 transformOrigin: {
3181 vertical: 'top',
3182 horizontal: 'rtl' === direction ? 'right' : 'left'
3183 }
3184 }, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
3185 sx: {
3186 width: 440
3187 }
3188 }, props.items.map(function (item) {
3189 var IconComponent = item.icon;
3190 return /*#__PURE__*/_react.default.createElement(_ui.MenuItem, {
3191 key: item.type,
3192 onClick: function onClick() {
3193 setSelectedType(item.type);
3194 setIsOpen(false);
3195 }
3196 }, /*#__PURE__*/_react.default.createElement(_ui.ListItemIcon, null, /*#__PURE__*/_react.default.createElement(IconComponent, null)), item.title);
3197 }))), /*#__PURE__*/_react.default.createElement(_attachDialog.AttachDialog, {
3198 type: selectedType,
3199 onAttach: props.onAttach,
3200 onClose: function onClose() {
3201 setIsOpen(false);
3202 setSelectedType(null);
3203 }
3204 }));
3205 };
3206 Menu.propTypes = {
3207 items: _propTypes.default.arrayOf(_propTypes.default.shape({
3208 title: _propTypes.default.string.isRequired,
3209 type: _propTypes.default.string.isRequired,
3210 icon: _propTypes.default.elementType
3211 })).isRequired,
3212 onAttach: _propTypes.default.func.isRequired,
3213 disabled: _propTypes.default.bool
3214 };
3215
3216 /***/ }),
3217
3218 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/prompt-power-notice.js":
3219 /*!******************************************************************************************************!*\
3220 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/attachments/prompt-power-notice.js ***!
3221 \******************************************************************************************************/
3222 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3223
3224 "use strict";
3225
3226
3227 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
3228 Object.defineProperty(exports, "__esModule", ({
3229 value: true
3230 }));
3231 exports.PromptPowerNotice = void 0;
3232 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
3233 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
3234 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
3235 var _useIntroduction2 = _interopRequireDefault(__webpack_require__(/*! ../../../../hooks/use-introduction */ "../modules/ai/assets/js/editor/hooks/use-introduction.js"));
3236 var PromptPowerNotice = exports.PromptPowerNotice = function PromptPowerNotice() {
3237 var _useIntroduction = (0, _useIntroduction2.default)('e-ai-builder-attachments-power'),
3238 isViewed = _useIntroduction.isViewed,
3239 markAsViewed = _useIntroduction.markAsViewed;
3240 if (isViewed) {
3241 return null;
3242 }
3243 return /*#__PURE__*/_react.default.createElement(_ui.Box, {
3244 sx: {
3245 pt: 2,
3246 px: 2,
3247 pb: 0
3248 }
3249 }, /*#__PURE__*/_react.default.createElement(_ui.Alert, {
3250 severity: "info",
3251 onClose: function onClose() {
3252 return markAsViewed();
3253 }
3254 }, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
3255 variant: "body2",
3256 display: "inline-block",
3257 sx: {
3258 paddingInlineEnd: 1
3259 }
3260 }, (0, _i18n.__)('You’ve got the power.', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
3261 variant: "body2",
3262 display: "inline-block"
3263 }, (0, _i18n.__)('Craft your prompt to affect content, images and/or colors - whichever you decide.', 'elementor'))));
3264 };
3265
3266 /***/ }),
3267
3268 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/thumbnail-json.js":
3269 /*!*************************************************************************************************!*\
3270 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/attachments/thumbnail-json.js ***!
3271 \*************************************************************************************************/
3272 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3273
3274 "use strict";
3275
3276
3277 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
3278 Object.defineProperty(exports, "__esModule", ({
3279 value: true
3280 }));
3281 exports["default"] = exports.ThumbnailJson = void 0;
3282 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
3283 var _thumbnail = __webpack_require__(/*! ./thumbnail */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/thumbnail.js");
3284 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
3285 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
3286 var _attachment = __webpack_require__(/*! ../../../../types/attachment */ "../modules/ai/assets/js/editor/types/attachment.js");
3287 var ThumbnailJson = exports.ThumbnailJson = function ThumbnailJson(props) {
3288 var _props$attachments;
3289 var attachment = (_props$attachments = props.attachments) === null || _props$attachments === void 0 ? void 0 : _props$attachments.find(function (item) {
3290 return 'json' === item.type;
3291 });
3292 if (!attachment) {
3293 return null;
3294 }
3295 if (!attachment.previewHTML) {
3296 return /*#__PURE__*/_react.default.createElement(_ui.Skeleton, {
3297 animation: "wave",
3298 variant: "rounded",
3299 width: 60,
3300 height: 60
3301 });
3302 }
3303 return /*#__PURE__*/_react.default.createElement(_thumbnail.Thumbnail, {
3304 html: attachment.previewHTML,
3305 disabled: props.disabled
3306 });
3307 };
3308 ThumbnailJson.propTypes = {
3309 attachments: _propTypes.default.arrayOf(_attachment.AttachmentPropType).isRequired,
3310 disabled: _propTypes.default.bool
3311 };
3312 var _default = exports["default"] = ThumbnailJson;
3313
3314 /***/ }),
3315
3316 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/thumbnail-url.js":
3317 /*!************************************************************************************************!*\
3318 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/attachments/thumbnail-url.js ***!
3319 \************************************************************************************************/
3320 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3321
3322 "use strict";
3323
3324
3325 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
3326 Object.defineProperty(exports, "__esModule", ({
3327 value: true
3328 }));
3329 exports["default"] = exports.ThumbnailUrl = void 0;
3330 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
3331 var _thumbnail = __webpack_require__(/*! ./thumbnail */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/thumbnail.js");
3332 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
3333 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
3334 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
3335 var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
3336 var _attachment = __webpack_require__(/*! ../../../../types/attachment */ "../modules/ai/assets/js/editor/types/attachment.js");
3337 var ThumbnailUrl = exports.ThumbnailUrl = function ThumbnailUrl(props) {
3338 var _props$attachments;
3339 var attachment = (_props$attachments = props.attachments) === null || _props$attachments === void 0 ? void 0 : _props$attachments.find(function (item) {
3340 return 'url' === item.type;
3341 });
3342 if (!attachment) {
3343 return null;
3344 }
3345 return /*#__PURE__*/_react.default.createElement(_ui.Box, {
3346 sx: {
3347 position: 'relative',
3348 '&:hover::before': {
3349 content: '""',
3350 position: 'absolute',
3351 userSelect: 'none',
3352 inset: 0,
3353 backgroundColor: 'rgba(0,0,0,0.6)',
3354 borderRadius: 1,
3355 zIndex: 1
3356 },
3357 '&:hover .remove-attachment': {
3358 display: 'flex'
3359 }
3360 }
3361 }, /*#__PURE__*/_react.default.createElement(_ui.IconButton, {
3362 className: "remove-attachment",
3363 size: "small",
3364 "aria-label": (0, _i18n.__)('Remove', 'elementor'),
3365 disabled: props.disabled,
3366 onClick: function onClick(event) {
3367 event.stopPropagation();
3368 props.onDetach();
3369 },
3370 sx: {
3371 display: 'none',
3372 position: 'absolute',
3373 insetInlineEnd: 4,
3374 insetBlockStart: 4,
3375 backgroundColor: 'secondary.main',
3376 zIndex: 1,
3377 borderRadius: 1,
3378 p: '3px',
3379 '&:hover': {
3380 backgroundColor: 'secondary.dark'
3381 }
3382 }
3383 }, /*#__PURE__*/_react.default.createElement(_icons.TrashIcon, {
3384 sx: {
3385 fontSize: '1.125rem',
3386 color: 'common.white'
3387 }
3388 })), /*#__PURE__*/_react.default.createElement(_thumbnail.Thumbnail, {
3389 disabled: props.disabled,
3390 html: attachment.previewHTML
3391 }));
3392 };
3393 ThumbnailUrl.propTypes = {
3394 attachments: _propTypes.default.arrayOf(_attachment.AttachmentPropType).isRequired,
3395 disabled: _propTypes.default.bool,
3396 onDetach: _propTypes.default.func
3397 };
3398 var _default = exports["default"] = ThumbnailUrl;
3399
3400 /***/ }),
3401
3402 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/thumbnail.js":
3403 /*!********************************************************************************************!*\
3404 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/attachments/thumbnail.js ***!
3405 \********************************************************************************************/
3406 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3407
3408 "use strict";
3409
3410
3411 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
3412 Object.defineProperty(exports, "__esModule", ({
3413 value: true
3414 }));
3415 exports.Thumbnail = exports.THUMBNAIL_SIZE = void 0;
3416 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
3417 var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/taggedTemplateLiteral */ "../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js"));
3418 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
3419 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
3420 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
3421 var _templateObject;
3422 var THUMBNAIL_SIZE = exports.THUMBNAIL_SIZE = 64;
3423 var StyledBody = (0, _ui.styled)('body')(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n\thtml, body {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\toverflow: hidden;\n\t}\n\n\tbody > * {\n\t\twidth: 100% !important;\n\t}\n\n\tbody > img {\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t}\n\n\tbody:has(> img) {\n\t\theight: ", "px\n\t}\n"])), THUMBNAIL_SIZE);
3424 var Thumbnail = exports.Thumbnail = function Thumbnail(props) {
3425 var _props$html$match, _props$html$match2;
3426 var dataWidth = (_props$html$match = props.html.match('data-width="(?<width>\\d+)"')) === null || _props$html$match === void 0 || (_props$html$match = _props$html$match.groups) === null || _props$html$match === void 0 ? void 0 : _props$html$match.width;
3427 var dataHeight = (_props$html$match2 = props.html.match('data-height="(?<height>\\d+)"')) === null || _props$html$match2 === void 0 || (_props$html$match2 = _props$html$match2.groups) === null || _props$html$match2 === void 0 ? void 0 : _props$html$match2.height;
3428 var width = dataWidth ? parseInt(dataWidth) : THUMBNAIL_SIZE;
3429 var height = dataHeight ? parseInt(dataHeight) : THUMBNAIL_SIZE;
3430 var scaleFactor = Math.min(height, width);
3431 var scale = THUMBNAIL_SIZE / scaleFactor;
3432
3433 // Center the preview
3434 var top = height > width ? (THUMBNAIL_SIZE - THUMBNAIL_SIZE * (height / width)) / 2 : 0;
3435 var left = width > height ? (THUMBNAIL_SIZE - THUMBNAIL_SIZE * (width / height)) / 2 : 0;
3436 return /*#__PURE__*/_react.default.createElement(_ui.Box, {
3437 dir: "ltr",
3438 sx: {
3439 position: 'relative',
3440 cursor: 'default',
3441 overflow: 'hidden',
3442 border: '1px solid',
3443 borderColor: 'grey.300',
3444 borderRadius: 1,
3445 boxSizing: 'border-box',
3446 width: THUMBNAIL_SIZE,
3447 height: THUMBNAIL_SIZE,
3448 opacity: props.disabled ? 0.5 : 1
3449 }
3450 }, /*#__PURE__*/_react.default.createElement("iframe", {
3451 title: (0, _i18n.__)('Preview', 'elementor'),
3452 sandbox: "",
3453 srcDoc: "<style>" + StyledBody.componentStyle.rules.join('') + "</style>" + props.html,
3454 style: {
3455 border: 'none',
3456 overflow: 'hidden',
3457 width: width,
3458 height: height,
3459 transform: "scale(".concat(scale, ")"),
3460 transformOrigin: "".concat(left, "px ").concat(top, "px")
3461 }
3462 }));
3463 };
3464 Thumbnail.propTypes = {
3465 html: _propTypes.default.string.isRequired,
3466 disabled: _propTypes.default.bool
3467 };
3468
3469 /***/ }),
3470
3471 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/url-dialog.js":
3472 /*!*********************************************************************************************!*\
3473 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/attachments/url-dialog.js ***!
3474 \*********************************************************************************************/
3475 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3476
3477 "use strict";
3478
3479
3480 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
3481 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
3482 Object.defineProperty(exports, "__esModule", ({
3483 value: true
3484 }));
3485 exports.UrlDialog = void 0;
3486 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
3487 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
3488 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
3489 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
3490 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
3491 var _alertDialog = __webpack_require__(/*! ../../../../components/alert-dialog */ "../modules/ai/assets/js/editor/components/alert-dialog.js");
3492 var _useTimeout3 = __webpack_require__(/*! ../../../../hooks/use-timeout */ "../modules/ai/assets/js/editor/hooks/use-timeout.js");
3493 var _attachments = __webpack_require__(/*! ../attachments */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments.js");
3494 var _remoteConfig = __webpack_require__(/*! ../../context/remote-config */ "../modules/ai/assets/js/editor/pages/form-layout/context/remote-config.js");
3495 var _useUserInfo2 = _interopRequireDefault(__webpack_require__(/*! ../../../../hooks/use-user-info */ "../modules/ai/assets/js/editor/hooks/use-user-info.js"));
3496 var _requestsIds = __webpack_require__(/*! ../../../../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js");
3497 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
3498 var UrlDialog = exports.UrlDialog = function UrlDialog(props) {
3499 var _useTimeout = (0, _useTimeout3.useTimeout)(10000),
3500 _useTimeout2 = (0, _slicedToArray2.default)(_useTimeout, 2),
3501 isTimeout = _useTimeout2[0],
3502 turnOffTimeout = _useTimeout2[1];
3503 var _useUserInfo = (0, _useUserInfo2.default)(),
3504 isLoading = _useUserInfo.isLoading,
3505 initialUsagePercentage = _useUserInfo.usagePercentage;
3506 var _useRequestIds = (0, _requestsIds.useRequestIds)(),
3507 updateUsagePercentage = _useRequestIds.updateUsagePercentage;
3508 var _useState = (0, _react.useState)(false),
3509 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
3510 isInitUsageDone = _useState2[0],
3511 setIsInitUsageDone = _useState2[1];
3512 var _useRemoteConfig = (0, _remoteConfig.useRemoteConfig)(),
3513 remoteConfig = _useRemoteConfig.remoteConfig;
3514 var builderUrl = remoteConfig[_remoteConfig.CONFIG_KEYS.WEB_BASED_BUILDER_URL];
3515 var urlObject = builderUrl ? new URL(builderUrl) : {};
3516 var iframeOrigin = urlObject.origin;
3517 var isOpen = (0, _react.useRef)(false);
3518 (0, _react.useEffect)(function () {
3519 if (!isInitUsageDone && !isLoading && (initialUsagePercentage || 0 === initialUsagePercentage)) {
3520 updateUsagePercentage(initialUsagePercentage);
3521 setIsInitUsageDone(true);
3522 }
3523 }, [isLoading, initialUsagePercentage, isInitUsageDone, updateUsagePercentage]);
3524 (0, _react.useEffect)(function () {
3525 if (!isOpen.current) {
3526 try {
3527 window.$e.run('ai-integration/open-choose-element', {
3528 url: props.url
3529 });
3530 isOpen.current = true;
3531 } catch (error) {
3532 // eslint-disable-next-line no-console
3533 console.error(error);
3534 }
3535 }
3536 }, [isOpen.current]);
3537 (0, _react.useEffect)(function () {
3538 var onMessage = function onMessage(event) {
3539 if (event.origin !== iframeOrigin) {
3540 return;
3541 }
3542 var _event$data = event.data,
3543 type = _event$data.type,
3544 html = _event$data.html,
3545 url = _event$data.url;
3546 switch (type) {
3547 case 'element-selector/close':
3548 isOpen.current = false;
3549 props.onClose();
3550 break;
3551 case 'element-selector/loaded':
3552 turnOffTimeout();
3553 isOpen.current = true;
3554 break;
3555 case 'element-selector/attach':
3556 props.onAttach([{
3557 type: 'url',
3558 previewHTML: html,
3559 content: html,
3560 label: url ? new URL(url).href : '',
3561 source: _attachments.USER_URL_SOURCE
3562 }]);
3563 break;
3564 }
3565 };
3566 window.addEventListener('message', onMessage);
3567 return function () {
3568 window.removeEventListener('message', onMessage);
3569 };
3570 }, [iframeOrigin, props, turnOffTimeout]);
3571 return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !isOpen.current && !isTimeout && /*#__PURE__*/_react.default.createElement(_ui.Dialog, {
3572 open: true,
3573 maxWidth: "lg"
3574 }, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
3575 sx: {
3576 textAlign: 'center',
3577 padding: 3
3578 }
3579 }, (0, _i18n.__)('Loading...', 'elementor'))), isTimeout && /*#__PURE__*/_react.default.createElement(_alertDialog.AlertDialog, {
3580 message: (0, _i18n.__)('The app is not responding. Please try again later. (#408)', 'elementor'),
3581 onClose: props.onClose
3582 }));
3583 };
3584 UrlDialog.propTypes = {
3585 onAttach: _propTypes.default.func.isRequired,
3586 onClose: _propTypes.default.func.isRequired,
3587 url: _propTypes.default.string
3588 };
3589
3590 /***/ }),
3591
3592 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/layout-dialog.js":
3593 /*!************************************************************************************!*\
3594 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/layout-dialog.js ***!
3595 \************************************************************************************/
3596 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3597
3598 "use strict";
3599
3600
3601 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
3602 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
3603 Object.defineProperty(exports, "__esModule", ({
3604 value: true
3605 }));
3606 exports["default"] = void 0;
3607 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
3608 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
3609 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
3610 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
3611 var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"));
3612 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
3613 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
3614 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
3615 var _promptDialog = _interopRequireDefault(__webpack_require__(/*! ../../../components/prompt-dialog */ "../modules/ai/assets/js/editor/components/prompt-dialog.js"));
3616 var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
3617 var _excluded = ["sx", "PaperProps"];
3618 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
3619 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; }
3620 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; }
3621 var StyledDialog = (0, _ui.styled)(_promptDialog.default)(function () {
3622 return {
3623 '& .MuiDialog-container': {
3624 marginTop: 0,
3625 alignItems: 'flex-end',
3626 paddingBottom: '16vh'
3627 },
3628 '& .MuiPaper-root': {
3629 margin: 0,
3630 maxHeight: '80vh'
3631 }
3632 };
3633 });
3634 var DialogHeader = function DialogHeader(_ref) {
3635 var onClose = _ref.onClose,
3636 children = _ref.children;
3637 return /*#__PURE__*/_react.default.createElement(_ui.AppBar, {
3638 sx: {
3639 fontWeight: 'normal'
3640 },
3641 color: "transparent",
3642 position: "relative"
3643 }, /*#__PURE__*/_react.default.createElement(_ui.Toolbar, {
3644 variant: "dense"
3645 }, /*#__PURE__*/_react.default.createElement(_icons.AIIcon, {
3646 sx: {
3647 mr: 1
3648 }
3649 }), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
3650 component: "span",
3651 variant: "subtitle2",
3652 sx: {
3653 fontWeight: 'bold',
3654 textTransform: 'uppercase'
3655 }
3656 }, (0, _i18n.__)('AI', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Chip, {
3657 label: (0, _i18n.__)('Beta', 'elementor'),
3658 color: "default",
3659 size: "small",
3660 sx: {
3661 ml: 1
3662 }
3663 }), /*#__PURE__*/_react.default.createElement(_ui.Stack, {
3664 direction: "row",
3665 spacing: 1,
3666 alignItems: "center",
3667 sx: {
3668 ml: 'auto'
3669 }
3670 }, children, /*#__PURE__*/_react.default.createElement(_ui.IconButton, {
3671 size: "small",
3672 "aria-label": "close",
3673 onClick: onClose,
3674 sx: {
3675 '&.MuiButtonBase-root': {
3676 mr: -1
3677 }
3678 }
3679 }, /*#__PURE__*/_react.default.createElement(_icons.XIcon, null)))));
3680 };
3681 DialogHeader.propTypes = {
3682 children: _propTypes.default.node,
3683 onClose: _propTypes.default.func.isRequired
3684 };
3685 var StyledDialogContent = (0, _ui.styled)(_promptDialog.default.Content)(function () {
3686 return {
3687 '&.MuiDialogContent-root': {
3688 padding: 0
3689 }
3690 };
3691 });
3692 var LayoutDialog = function LayoutDialog(_ref2) {
3693 var _ref2$sx = _ref2.sx,
3694 sx = _ref2$sx === void 0 ? {} : _ref2$sx,
3695 _ref2$PaperProps = _ref2.PaperProps,
3696 PaperProps = _ref2$PaperProps === void 0 ? {} : _ref2$PaperProps,
3697 props = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
3698 var _useState = (0, _react.useState)({
3699 pointerEvents: 'none'
3700 }),
3701 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
3702 sxStyle = _useState2[0],
3703 setSxStyle = _useState2[1];
3704 var timeoutRef = (0, _react.useRef)(null);
3705
3706 /**
3707 * The PromptDialog is using disableScrollLock in order to allow scrolling the page when the Dialog is opened.
3708 * When using the react-draggable library inside the editor, the background page scroll is not working smoothly.
3709 * Therefore, we need to delay the pointerEvents: none, which allowing to scroll the page content.
3710 */
3711 return /*#__PURE__*/_react.default.createElement(StyledDialog, (0, _extends2.default)({
3712 maxWidth: "md",
3713 PaperProps: _objectSpread({
3714 sx: {
3715 pointerEvents: 'auto'
3716 },
3717 onMouseEnter: function onMouseEnter() {
3718 clearTimeout(timeoutRef.current);
3719 setSxStyle({
3720 pointerEvents: 'all'
3721 });
3722 },
3723 onMouseLeave: function onMouseLeave() {
3724 clearTimeout(timeoutRef.current);
3725 timeoutRef.current = setTimeout(function () {
3726 setSxStyle({
3727 pointerEvents: 'none'
3728 });
3729 }, 200);
3730 }
3731 }, PaperProps)
3732 }, props, {
3733 sx: _objectSpread(_objectSpread({}, sxStyle), sx)
3734 }));
3735 };
3736 LayoutDialog.propTypes = {
3737 sx: _propTypes.default.object,
3738 PaperProps: _propTypes.default.object
3739 };
3740 LayoutDialog.Header = DialogHeader;
3741 LayoutDialog.Content = StyledDialogContent;
3742 var _default = exports["default"] = LayoutDialog;
3743
3744 /***/ }),
3745
3746 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/pro-template-indicator.js":
3747 /*!*********************************************************************************************!*\
3748 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/pro-template-indicator.js ***!
3749 \*********************************************************************************************/
3750 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3751
3752 "use strict";
3753
3754
3755 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
3756 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
3757 Object.defineProperty(exports, "__esModule", ({
3758 value: true
3759 }));
3760 exports.ProTemplateIndicator = void 0;
3761 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
3762 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
3763 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
3764 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
3765 var _lockIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/lock-icon */ "../modules/ai/assets/js/editor/icons/lock-icon.js"));
3766 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
3767 var popoverId = 'e-pro-upgrade-popover';
3768 var StyledContent = (0, _ui.styled)(_ui.Paper)(function (_ref) {
3769 var theme = _ref.theme;
3770 return {
3771 position: 'relative',
3772 padding: theme.spacing(3),
3773 boxShadow: theme.shadows[4],
3774 zIndex: '9999'
3775 };
3776 });
3777 var StyledArrow = (0, _ui.styled)(_ui.Box)(function (_ref2) {
3778 var theme = _ref2.theme;
3779 return {
3780 position: 'absolute',
3781 width: theme.spacing(5),
3782 height: theme.spacing(5),
3783 overflow: 'hidden',
3784 // Override Popper inline styles.
3785 left: '100% !important',
3786 transform: 'translateX(-50%) translateY(-50%) rotate(var(--rotate, 0deg)) !important',
3787 '&::after': {
3788 backgroundColor: theme.palette.background.paper,
3789 content: '""',
3790 display: 'block',
3791 position: 'absolute',
3792 width: theme.spacing(2.5),
3793 height: theme.spacing(2.5),
3794 top: '50%',
3795 left: '50%',
3796 transform: 'translateX(-50%) translateY(-50%) rotate(45deg)',
3797 boxShadow: '5px -5px 5px 0px rgba(0, 0, 0, 0.2)',
3798 backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))'
3799 }
3800 };
3801 });
3802 var ProTemplateIndicator = exports.ProTemplateIndicator = function ProTemplateIndicator() {
3803 var actionUrl = 'https://go.elementor.com/go-pro-ai/';
3804 var actionLabel = (0, _i18n.__)('Go Pro', 'elementor');
3805 var _useState = (0, _react.useState)(false),
3806 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
3807 isPopoverOpen = _useState2[0],
3808 setIsPopoverOpen = _useState2[1];
3809 var anchorEl = (0, _react.useRef)(null);
3810 var arrowEl = (0, _react.useRef)(null);
3811 var showPopover = function showPopover() {
3812 return setIsPopoverOpen(true);
3813 };
3814 var hidePopover = function hidePopover() {
3815 return setIsPopoverOpen(false);
3816 };
3817 return /*#__PURE__*/_react.default.createElement(_ui.Box, {
3818 flexDirection: "row-reverse",
3819 component: "span",
3820 display: "flex",
3821 onMouseLeave: hidePopover,
3822 alignItems: "center"
3823 }, /*#__PURE__*/_react.default.createElement(_ui.IconButton, {
3824 ref: anchorEl,
3825 onMouseEnter: showPopover,
3826 onClick: function onClick(e) {
3827 return e.stopPropagation();
3828 } /* Do nothing */,
3829 "aria-owns": isPopoverOpen ? popoverId : undefined,
3830 "aria-haspopup": "true",
3831 sx: {
3832 m: 1,
3833 '&:hover': {
3834 backgroundColor: 'action.selected'
3835 }
3836 }
3837 }, /*#__PURE__*/_react.default.createElement(_lockIcon.default, {
3838 sx: {
3839 color: 'text.primary'
3840 }
3841 })), /*#__PURE__*/_react.default.createElement(_ui.Popper, {
3842 open: isPopoverOpen,
3843 popperOptions: {
3844 placement: 'left-start',
3845 modifiers: [{
3846 name: 'arrow',
3847 enabled: true,
3848 options: {
3849 element: arrowEl.current,
3850 padding: 5
3851 }
3852 }, {
3853 name: 'offset',
3854 options: {
3855 offset: [0, 10]
3856 }
3857 }]
3858 },
3859 anchorEl: anchorEl.current,
3860 sx: {
3861 zIndex: '9999',
3862 maxWidth: 300
3863 }
3864 }, /*#__PURE__*/_react.default.createElement(StyledContent, null, /*#__PURE__*/_react.default.createElement(StyledArrow, {
3865 ref: arrowEl
3866 }), /*#__PURE__*/_react.default.createElement(_ui.Stack, {
3867 alignItems: "start",
3868 spacing: 2
3869 }, /*#__PURE__*/_react.default.createElement(_ui.Chip, {
3870 color: "promotion",
3871 variant: "outlined",
3872 size: "small",
3873 label: (0, _i18n.__)('Pro', 'elementor'),
3874 icon: /*#__PURE__*/_react.default.createElement(_lockIcon.default, null)
3875 }), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
3876 variant: "body2"
3877 }, (0, _i18n.__)("This result includes an Elementor Pro widget that's not available with your current plan. Upgrade to use all the widgets in this result.", 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Button, {
3878 variant: "contained",
3879 color: "promotion",
3880 size: "small",
3881 href: actionUrl,
3882 target: "_blank",
3883 sx: {
3884 alignSelf: 'flex-end'
3885 }
3886 }, actionLabel)))));
3887 };
3888
3889 /***/ }),
3890
3891 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/prompt-autocomplete.js":
3892 /*!******************************************************************************************!*\
3893 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/prompt-autocomplete.js ***!
3894 \******************************************************************************************/
3895 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3896
3897 "use strict";
3898
3899
3900 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
3901 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
3902 Object.defineProperty(exports, "__esModule", ({
3903 value: true
3904 }));
3905 exports["default"] = void 0;
3906 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
3907 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
3908 var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"));
3909 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
3910 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
3911 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
3912 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
3913 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
3914 var _promptLibraryLink = _interopRequireDefault(__webpack_require__(/*! ../../../components/prompt-library-link */ "../modules/ai/assets/js/editor/components/prompt-library-link.js"));
3915 var _config = __webpack_require__(/*! ../context/config */ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js");
3916 var _excluded = ["onSubmit"];
3917 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
3918 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; }
3919 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; }
3920 var TextInput = (0, _react.forwardRef)(function (props, ref) {
3921 return /*#__PURE__*/_react.default.createElement(_ui.TextField
3922 // eslint-disable-next-line jsx-a11y/no-autofocus
3923 , (0, _extends2.default)({
3924 autoFocus: true,
3925 multiline: true,
3926 size: "small",
3927 maxRows: 3,
3928 color: "secondary",
3929 variant: "standard"
3930 }, props, {
3931 inputRef: ref,
3932 InputProps: _objectSpread(_objectSpread({}, props.InputProps), {}, {
3933 type: 'search',
3934 sx: {
3935 pt: 0
3936 }
3937 })
3938 }));
3939 });
3940 TextInput.propTypes = {
3941 InputProps: _propTypes.default.object
3942 };
3943 var PaperComponent = function PaperComponent(props) {
3944 var _useConfig = (0, _config.useConfig)(),
3945 mode = _useConfig.mode;
3946 var libraryLink = _config.MODE_VARIATION === mode ? 'https://go.elementor.com/ai-prompt-library-variations/' : 'https://go.elementor.com/ai-prompt-library-containers/';
3947 return /*#__PURE__*/_react.default.createElement(_ui.Paper, (0, _extends2.default)({}, props, {
3948 elevation: 8,
3949 sx: {
3950 borderRadius: 2
3951 }
3952 }), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
3953 component: _ui.Box,
3954 color: function color(theme) {
3955 return theme.palette.text.tertiary;
3956 },
3957 variant: "caption",
3958 paddingX: 2,
3959 paddingY: 1
3960 }, (0, _i18n.__)('Suggested Prompts', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Divider, null), props.children, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
3961 sx: {
3962 m: 2
3963 }
3964 }, /*#__PURE__*/_react.default.createElement(_promptLibraryLink.default, {
3965 libraryLink: libraryLink
3966 })));
3967 };
3968 PaperComponent.propTypes = {
3969 children: _propTypes.default.node
3970 };
3971 var PromptAutocomplete = function PromptAutocomplete(_ref) {
3972 var onSubmit = _ref.onSubmit,
3973 props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
3974 var _useState = (0, _react.useState)(false),
3975 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
3976 showSuggestions = _useState2[0],
3977 setShowSuggestions = _useState2[1];
3978 var theme = (0, _ui.useTheme)();
3979 var itemHeight = parseInt(theme.spacing(4));
3980 var maxItems = 5;
3981 return /*#__PURE__*/_react.default.createElement(_ui.Autocomplete, (0, _extends2.default)({
3982 PaperComponent: PaperComponent,
3983 ListboxProps: {
3984 sx: {
3985 maxHeight: maxItems * itemHeight
3986 }
3987 },
3988 renderOption: function renderOption(optionProps, option) {
3989 return /*#__PURE__*/_react.default.createElement(_ui.Typography, (0, _extends2.default)({}, optionProps, {
3990 title: option.text,
3991 noWrap: true,
3992 variant: "body2",
3993 component: _ui.Box,
3994 sx: {
3995 '&.MuiAutocomplete-option': {
3996 display: 'block',
3997 minHeight: itemHeight
3998 }
3999 }
4000 }), option.text);
4001 },
4002 freeSolo: true,
4003 fullWidth: true,
4004 disableClearable: true,
4005 open: showSuggestions,
4006 onClose: function onClose(e) {
4007 var _e$relatedTarget;
4008 return setShowSuggestions('A' === ((_e$relatedTarget = e.relatedTarget) === null || _e$relatedTarget === void 0 ? void 0 : _e$relatedTarget.tagName));
4009 },
4010 onKeyDown: function onKeyDown(e) {
4011 if ('Enter' === e.key && !e.shiftKey && !showSuggestions) {
4012 onSubmit(e);
4013 } else if ('/' === e.key && '' === e.target.value) {
4014 e.preventDefault();
4015 setShowSuggestions(true);
4016 }
4017 }
4018 }, props));
4019 };
4020 PromptAutocomplete.propTypes = {
4021 onSubmit: _propTypes.default.func.isRequired
4022 };
4023 PromptAutocomplete.TextInput = TextInput;
4024 var _default = exports["default"] = PromptAutocomplete;
4025
4026 /***/ }),
4027
4028 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/prompt-form.js":
4029 /*!**********************************************************************************!*\
4030 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/prompt-form.js ***!
4031 \**********************************************************************************/
4032 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4033
4034 "use strict";
4035
4036
4037 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
4038 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
4039 Object.defineProperty(exports, "__esModule", ({
4040 value: true
4041 }));
4042 exports["default"] = void 0;
4043 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
4044 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
4045 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
4046 var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"));
4047 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
4048 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
4049 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
4050 var _promptAutocomplete = _interopRequireDefault(__webpack_require__(/*! ./prompt-autocomplete */ "../modules/ai/assets/js/editor/pages/form-layout/components/prompt-autocomplete.js"));
4051 var _enhanceButton = _interopRequireDefault(__webpack_require__(/*! ../../form-media/components/enhance-button */ "../modules/ai/assets/js/editor/pages/form-media/components/enhance-button.js"));
4052 var _generateSubmit = _interopRequireDefault(__webpack_require__(/*! ../../form-media/components/generate-submit */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-submit.js"));
4053 var _arrowLeftIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/arrow-left-icon */ "../modules/ai/assets/js/editor/icons/arrow-left-icon.js"));
4054 var _editIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/edit-icon */ "../modules/ai/assets/js/editor/icons/edit-icon.js"));
4055 var _usePromptEnhancer2 = _interopRequireDefault(__webpack_require__(/*! ../../../hooks/use-prompt-enhancer */ "../modules/ai/assets/js/editor/hooks/use-prompt-enhancer.js"));
4056 var _attachments = _interopRequireDefault(__webpack_require__(/*! ./attachments */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments.js"));
4057 var _config = __webpack_require__(/*! ../context/config */ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js");
4058 var _attachment = __webpack_require__(/*! ../../../types/attachment */ "../modules/ai/assets/js/editor/types/attachment.js");
4059 var _excluded = ["tooltip"];
4060 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
4061 var PROMPT_SUGGESTIONS = Object.freeze([
4062 // Translators: [Topic] is a placeholder for the user - please translate it as well
4063 {
4064 text: (0, _i18n.__)('Hero section on [topic] with heading, text, buttons on the right, and an image on the left', 'elementor.com')
4065 },
4066 // Translators: [Topic] is a placeholder for the user - please translate it as well
4067 {
4068 text: (0, _i18n.__)('About Us section on [topic] with heading, text, and big image below', 'elementor.com')
4069 }, {
4070 text: (0, _i18n.__)('Team section with four image boxes showcasing team members', 'elementor.com')
4071 },
4072 // Translators: [Topic] is a placeholder for the user - please translate it as well
4073 {
4074 text: (0, _i18n.__)('FAQ section with a toggle widget showcasing FAQs about [topic]', 'elementor.com')
4075 }, {
4076 text: (0, _i18n.__)('Gallery section with a carousel displaying three images at once', 'elementor.com')
4077 },
4078 // Translators: [Topic] is a placeholder for the user - please translate it as well
4079 {
4080 text: (0, _i18n.__)('Contact section with a form for [topic]', 'elementor.com')
4081 }, {
4082 text: (0, _i18n.__)('Client section featuring companies\' logos', 'elementor.com')
4083 },
4084 // Translators: [Topic] is a placeholder for the user - please translate it as well
4085 {
4086 text: (0, _i18n.__)('Testimonial section with testimonials, each featuring a star rating and an image', 'elementor.com')
4087 },
4088 // Translators: [Topic] is a placeholder for the user - please translate it as well
4089 {
4090 text: (0, _i18n.__)('Service section about [topic], showcasing four services with buttons', 'elementor.com')
4091 },
4092 // Translators: [Topic] is a placeholder for the user - please translate it as well
4093 {
4094 text: (0, _i18n.__)('Stats section with counters displaying data about [topic]', 'elementor.com')
4095 }, {
4096 text: (0, _i18n.__)('Quote section with colored background, featuring a centered quote', 'elementor.com')
4097 },
4098 // Translators: [Topic] is a placeholder for the user - please translate it as well
4099 {
4100 text: (0, _i18n.__)('Pricing section for [topic] with a pricing list', 'elementor.com')
4101 },
4102 // Translators: [Topic] is a placeholder for the user - please translate it as well
4103 {
4104 text: (0, _i18n.__)('Subscribe section featuring a simple email form, inviting users to stay informed on [topic]', 'elementor.com')
4105 }]);
4106 var IconButtonWithTooltip = function IconButtonWithTooltip(_ref) {
4107 var tooltip = _ref.tooltip,
4108 props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
4109 return /*#__PURE__*/_react.default.createElement(_ui.Tooltip, {
4110 title: tooltip
4111 }, /*#__PURE__*/_react.default.createElement(_ui.Box, {
4112 component: "span",
4113 sx: {
4114 cursor: props.disabled ? 'default' : 'pointer'
4115 }
4116 }, /*#__PURE__*/_react.default.createElement(_ui.IconButton, props)));
4117 };
4118 IconButtonWithTooltip.propTypes = {
4119 tooltip: _propTypes.default.string,
4120 disabled: _propTypes.default.bool
4121 };
4122 var BackButton = function BackButton(props) {
4123 return /*#__PURE__*/_react.default.createElement(IconButtonWithTooltip, (0, _extends2.default)({
4124 size: "small",
4125 color: "secondary",
4126 tooltip: (0, _i18n.__)('Back to results', 'elementor')
4127 }, props), /*#__PURE__*/_react.default.createElement(_arrowLeftIcon.default, null));
4128 };
4129 var EditButton = function EditButton(props) {
4130 return /*#__PURE__*/_react.default.createElement(IconButtonWithTooltip, (0, _extends2.default)({
4131 size: "small",
4132 color: "primary",
4133 tooltip: (0, _i18n.__)('Edit prompt', 'elementor')
4134 }, props), /*#__PURE__*/_react.default.createElement(_editIcon.default, null));
4135 };
4136 var GenerateButton = function GenerateButton(props) {
4137 return /*#__PURE__*/_react.default.createElement(_generateSubmit.default, (0, _extends2.default)({
4138 size: "small",
4139 fullWidth: false
4140 }, props), (0, _i18n.__)('Generate', 'elementor'));
4141 };
4142 var PromptForm = (0, _react.forwardRef)(function (_ref2, ref) {
4143 var _attachments$;
4144 var attachments = _ref2.attachments,
4145 isActive = _ref2.isActive,
4146 isLoading = _ref2.isLoading,
4147 _ref2$showActions = _ref2.showActions,
4148 showActions = _ref2$showActions === void 0 ? false : _ref2$showActions,
4149 onAttach = _ref2.onAttach,
4150 onDetach = _ref2.onDetach,
4151 _onSubmit = _ref2.onSubmit,
4152 onBack = _ref2.onBack,
4153 onEdit = _ref2.onEdit,
4154 _ref2$shouldResetProm = _ref2.shouldResetPrompt,
4155 shouldResetPrompt = _ref2$shouldResetProm === void 0 ? false : _ref2$shouldResetProm;
4156 var _useState = (0, _react.useState)(''),
4157 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
4158 prompt = _useState2[0],
4159 setPrompt = _useState2[1];
4160 (0, _react.useEffect)(function () {
4161 if (shouldResetPrompt) {
4162 setPrompt('');
4163 }
4164 }, [shouldResetPrompt]);
4165 var _usePromptEnhancer = (0, _usePromptEnhancer2.default)(prompt, 'layout'),
4166 isEnhancing = _usePromptEnhancer.isEnhancing,
4167 enhance = _usePromptEnhancer.enhance;
4168 var previousPrompt = (0, _react.useRef)('');
4169 var _useConfig = (0, _config.useConfig)(),
4170 attachmentsTypes = _useConfig.attachmentsTypes;
4171 var isInputDisabled = isLoading || isEnhancing || !isActive;
4172 var isInputEmpty = '' === prompt && !attachments.length;
4173 var isGenerateDisabled = isInputDisabled || isInputEmpty;
4174 var attachmentsType = ((_attachments$ = attachments[0]) === null || _attachments$ === void 0 ? void 0 : _attachments$.type) || '';
4175 var attachmentsConfig = attachmentsTypes[attachmentsType];
4176 var promptSuggestions = (attachmentsConfig === null || attachmentsConfig === void 0 ? void 0 : attachmentsConfig.promptSuggestions) || PROMPT_SUGGESTIONS;
4177 var promptPlaceholder = (attachmentsConfig === null || attachmentsConfig === void 0 ? void 0 : attachmentsConfig.promptPlaceholder) || (0, _i18n.__)("Press '/' for suggested prompts or describe the layout you want to create", 'elementor');
4178 var handleBack = function handleBack() {
4179 setPrompt(previousPrompt.current);
4180 onBack();
4181 };
4182 var handleEdit = function handleEdit() {
4183 previousPrompt.current = prompt;
4184 onEdit();
4185 };
4186 return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
4187 component: "form",
4188 onSubmit: function onSubmit(e) {
4189 return _onSubmit(e, prompt);
4190 },
4191 direction: "row",
4192 sx: {
4193 p: 3
4194 },
4195 alignItems: "start",
4196 gap: 1
4197 }, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
4198 direction: "row",
4199 alignItems: "start",
4200 flexGrow: 1,
4201 spacing: 2
4202 }, showActions && (isActive ? /*#__PURE__*/_react.default.createElement(BackButton, {
4203 disabled: isLoading || isEnhancing,
4204 onClick: handleBack
4205 }) : /*#__PURE__*/_react.default.createElement(EditButton, {
4206 disabled: isLoading,
4207 onClick: handleEdit
4208 })), /*#__PURE__*/_react.default.createElement(_attachments.default, {
4209 attachments: attachments,
4210 onAttach: onAttach,
4211 onDetach: onDetach,
4212 disabled: isInputDisabled
4213 }), /*#__PURE__*/_react.default.createElement(_promptAutocomplete.default, {
4214 value: prompt,
4215 disabled: isInputDisabled,
4216 onSubmit: function onSubmit(e) {
4217 return _onSubmit(e, prompt);
4218 },
4219 options: promptSuggestions,
4220 onChange: function onChange(_, selectedValue) {
4221 return setPrompt(selectedValue.text + ' ');
4222 },
4223 renderInput: function renderInput(params) {
4224 return /*#__PURE__*/_react.default.createElement(_promptAutocomplete.default.TextInput, (0, _extends2.default)({}, params, {
4225 ref: ref,
4226 onChange: function onChange(e) {
4227 return setPrompt(e.target.value);
4228 },
4229 placeholder: promptPlaceholder
4230 }));
4231 }
4232 })), /*#__PURE__*/_react.default.createElement(_enhanceButton.default, {
4233 size: "small",
4234 disabled: isGenerateDisabled || '' === prompt,
4235 isLoading: isEnhancing,
4236 onClick: function onClick() {
4237 return enhance().then(function (_ref3) {
4238 var result = _ref3.result;
4239 return setPrompt(result);
4240 });
4241 }
4242 }), /*#__PURE__*/_react.default.createElement(GenerateButton, {
4243 disabled: isGenerateDisabled
4244 }));
4245 });
4246 PromptForm.propTypes = {
4247 isActive: _propTypes.default.bool,
4248 onAttach: _propTypes.default.func,
4249 onDetach: _propTypes.default.func,
4250 isLoading: _propTypes.default.bool,
4251 showActions: _propTypes.default.bool,
4252 onSubmit: _propTypes.default.func.isRequired,
4253 onBack: _propTypes.default.func.isRequired,
4254 onEdit: _propTypes.default.func.isRequired,
4255 attachments: _propTypes.default.arrayOf(_attachment.AttachmentPropType),
4256 shouldResetPrompt: _propTypes.default.bool
4257 };
4258 var _default = exports["default"] = PromptForm;
4259
4260 /***/ }),
4261
4262 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/screenshot-container.js":
4263 /*!*******************************************************************************************!*\
4264 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/screenshot-container.js ***!
4265 \*******************************************************************************************/
4266 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4267
4268 "use strict";
4269
4270
4271 Object.defineProperty(exports, "__esModule", ({
4272 value: true
4273 }));
4274 exports["default"] = void 0;
4275 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
4276 var ScreenshotContainer = (0, _ui.styled)(_ui.Box, {
4277 shouldForwardProp: function shouldForwardProp(prop) {
4278 return prop !== 'outlineOffset';
4279 }
4280 })(function (_ref) {
4281 var theme = _ref.theme,
4282 selected = _ref.selected,
4283 height = _ref.height,
4284 disabled = _ref.disabled,
4285 _ref$outlineOffset = _ref.outlineOffset,
4286 outlineOffset = _ref$outlineOffset === void 0 ? '0px' : _ref$outlineOffset;
4287 var outlineColor = selected ? theme.palette.text.primary : theme.palette.text.disabled;
4288 var outline = "2px solid ".concat(outlineColor);
4289 return {
4290 height: height,
4291 cursor: disabled ? 'default' : 'pointer',
4292 overflow: 'hidden',
4293 boxSizing: 'border-box',
4294 backgroundPosition: 'top center',
4295 backgroundSize: '100% auto',
4296 backgroundRepeat: 'no-repeat',
4297 backgroundColor: theme.palette.common.white,
4298 borderRadius: theme.shape.borderRadius * 0.5,
4299 outlineOffset: outlineOffset,
4300 outline: outline,
4301 opacity: disabled ? '0.4' : '1',
4302 transition: "all 50ms linear",
4303 '&:hover': disabled ? {} : {
4304 outlineColor: theme.palette.text.primary
4305 }
4306 };
4307 });
4308 var _default = exports["default"] = ScreenshotContainer;
4309
4310 /***/ }),
4311
4312 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/screenshot-unavailable.js":
4313 /*!*********************************************************************************************!*\
4314 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/screenshot-unavailable.js ***!
4315 \*********************************************************************************************/
4316 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4317
4318 "use strict";
4319
4320
4321 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
4322 Object.defineProperty(exports, "__esModule", ({
4323 value: true
4324 }));
4325 exports["default"] = ScreenshotUnavailable;
4326 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
4327 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
4328 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
4329 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
4330 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
4331 var _screenshotContainer = _interopRequireDefault(__webpack_require__(/*! ./screenshot-container */ "../modules/ai/assets/js/editor/pages/form-layout/components/screenshot-container.js"));
4332 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; }
4333 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; }
4334 function ScreenshotUnavailable(props) {
4335 return /*#__PURE__*/_react.default.createElement(_screenshotContainer.default, (0, _extends2.default)({}, props, {
4336 sx: _objectSpread(_objectSpread({}, props.sx || {}), {}, {
4337 display: 'flex',
4338 alignItems: 'center',
4339 justifyContent: 'center',
4340 backgroundColor: 'background.paper',
4341 color: 'text.tertiary',
4342 fontStyle: 'italic',
4343 fontSize: '12px',
4344 paddingInline: 12,
4345 textAlign: 'center',
4346 lineHeight: 1.5
4347 })
4348 }), (0, _i18n.__)('Preview unavailable', 'elementor'));
4349 }
4350 ScreenshotUnavailable.propTypes = {
4351 sx: _propTypes.default.object
4352 };
4353
4354 /***/ }),
4355
4356 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/screenshot.js":
4357 /*!*********************************************************************************!*\
4358 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/screenshot.js ***!
4359 \*********************************************************************************/
4360 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4361
4362 "use strict";
4363
4364
4365 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
4366 Object.defineProperty(exports, "__esModule", ({
4367 value: true
4368 }));
4369 exports["default"] = void 0;
4370 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
4371 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
4372 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
4373 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
4374 var _screenshotContainer = _interopRequireDefault(__webpack_require__(/*! ./screenshot-container */ "../modules/ai/assets/js/editor/pages/form-layout/components/screenshot-container.js"));
4375 var _screenshotUnavailable = _interopRequireDefault(__webpack_require__(/*! ./screenshot-unavailable */ "../modules/ai/assets/js/editor/pages/form-layout/components/screenshot-unavailable.js"));
4376 var _templateBadge = _interopRequireDefault(__webpack_require__(/*! ./template-badge */ "../modules/ai/assets/js/editor/pages/form-layout/components/template-badge.js"));
4377 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; }
4378 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; }
4379 var SCREENSHOT_HEIGHT = '138px';
4380 var Screenshot = function Screenshot(_ref) {
4381 var url = _ref.url,
4382 type = _ref.type,
4383 _ref$isLoading = _ref.isLoading,
4384 isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
4385 _ref$isSelected = _ref.isSelected,
4386 isSelected = _ref$isSelected === void 0 ? false : _ref$isSelected,
4387 isPlaceholder = _ref.isPlaceholder,
4388 disabled = _ref.disabled,
4389 onClick = _ref.onClick,
4390 _ref$sx = _ref.sx,
4391 sx = _ref$sx === void 0 ? {} : _ref$sx,
4392 outlineOffset = _ref.outlineOffset;
4393 if (isPlaceholder) {
4394 return /*#__PURE__*/_react.default.createElement(_ui.Box, {
4395 sx: _objectSpread({
4396 height: SCREENSHOT_HEIGHT
4397 }, sx)
4398 });
4399 }
4400 if (isLoading) {
4401 return /*#__PURE__*/_react.default.createElement(_ui.Skeleton, {
4402 width: "100%",
4403 animation: "wave",
4404 variant: "rounded",
4405 height: SCREENSHOT_HEIGHT,
4406 sx: sx
4407 });
4408 }
4409 if (!url) {
4410 return /*#__PURE__*/_react.default.createElement(_screenshotUnavailable.default, {
4411 selected: isSelected,
4412 disabled: disabled,
4413 sx: sx,
4414 onClick: onClick,
4415 height: SCREENSHOT_HEIGHT,
4416 outlineOffset: outlineOffset
4417 });
4418 }
4419 return /*#__PURE__*/_react.default.createElement(_screenshotContainer.default, {
4420 selected: isSelected,
4421 disabled: disabled,
4422 sx: _objectSpread({
4423 backgroundImage: "url('".concat(url, "')")
4424 }, sx),
4425 onClick: onClick,
4426 height: SCREENSHOT_HEIGHT,
4427 outlineOffset: outlineOffset
4428 }, /*#__PURE__*/_react.default.createElement(_templateBadge.default, {
4429 type: type
4430 }));
4431 };
4432 Screenshot.propTypes = {
4433 isSelected: _propTypes.default.bool,
4434 isLoading: _propTypes.default.bool,
4435 isPlaceholder: _propTypes.default.bool,
4436 disabled: _propTypes.default.bool,
4437 onClick: _propTypes.default.func.isRequired,
4438 url: _propTypes.default.string,
4439 type: _propTypes.default.string,
4440 sx: _propTypes.default.object,
4441 outlineOffset: _propTypes.default.string
4442 };
4443 var _default = exports["default"] = Screenshot;
4444
4445 /***/ }),
4446
4447 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/template-badge.js":
4448 /*!*************************************************************************************!*\
4449 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/template-badge.js ***!
4450 \*************************************************************************************/
4451 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4452
4453 "use strict";
4454
4455
4456 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
4457 Object.defineProperty(exports, "__esModule", ({
4458 value: true
4459 }));
4460 exports["default"] = void 0;
4461 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
4462 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
4463 var _config = __webpack_require__(/*! ../context/config */ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js");
4464 var _proTemplateIndicator = __webpack_require__(/*! ./pro-template-indicator */ "../modules/ai/assets/js/editor/pages/form-layout/components/pro-template-indicator.js");
4465 var TemplateBadge = function TemplateBadge(props) {
4466 var _useConfig = (0, _config.useConfig)(),
4467 hasPro = _useConfig.hasPro;
4468 if ('Pro' === props.type && !hasPro) {
4469 return /*#__PURE__*/_react.default.createElement(_proTemplateIndicator.ProTemplateIndicator, null);
4470 }
4471 return null;
4472 };
4473 var _default = exports["default"] = TemplateBadge;
4474 TemplateBadge.propTypes = {
4475 type: _propTypes.default.string
4476 };
4477
4478 /***/ }),
4479
4480 /***/ "../modules/ai/assets/js/editor/pages/form-layout/components/unsaved-changes-alert.js":
4481 /*!********************************************************************************************!*\
4482 !*** ../modules/ai/assets/js/editor/pages/form-layout/components/unsaved-changes-alert.js ***!
4483 \********************************************************************************************/
4484 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4485
4486 "use strict";
4487
4488
4489 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
4490 Object.defineProperty(exports, "__esModule", ({
4491 value: true
4492 }));
4493 exports["default"] = void 0;
4494 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
4495 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
4496 var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"));
4497 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
4498 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
4499 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
4500 var _excluded = ["onClose", "onCancel", "title", "text"];
4501 var UnsavedChangesAlert = function UnsavedChangesAlert(_ref) {
4502 var onClose = _ref.onClose,
4503 onCancel = _ref.onCancel,
4504 title = _ref.title,
4505 text = _ref.text,
4506 props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
4507 return /*#__PURE__*/_react.default.createElement(_ui.Dialog, (0, _extends2.default)({
4508 "aria-labelledby": "unsaved-changes-alert-title",
4509 "aria-describedby": "unsaved-changes-alert-description"
4510 }, props), /*#__PURE__*/_react.default.createElement(_ui.DialogTitle, {
4511 id: "unsaved-changes-alert-title"
4512 }, title), /*#__PURE__*/_react.default.createElement(_ui.DialogContent, null, /*#__PURE__*/_react.default.createElement(_ui.DialogContentText, {
4513 id: "unsaved-changes-alert-description"
4514 }, text)), /*#__PURE__*/_react.default.createElement(_ui.DialogActions, null, /*#__PURE__*/_react.default.createElement(_ui.Button, {
4515 onClick: onCancel,
4516 color: "secondary"
4517 }, (0, _i18n.__)('Cancel', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Button, {
4518 onClick: onClose,
4519 color: "error",
4520 variant: "contained"
4521 }, (0, _i18n.__)('Yes, leave', 'elementor'))));
4522 };
4523 UnsavedChangesAlert.propTypes = {
4524 title: _propTypes.default.string,
4525 text: _propTypes.default.string,
4526 onCancel: _propTypes.default.func,
4527 onClose: _propTypes.default.func
4528 };
4529 var _default = exports["default"] = UnsavedChangesAlert;
4530
4531 /***/ }),
4532
4533 /***/ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js":
4534 /*!**************************************************************************!*\
4535 !*** ../modules/ai/assets/js/editor/pages/form-layout/context/config.js ***!
4536 \**************************************************************************/
4537 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4538
4539 "use strict";
4540
4541
4542 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
4543 Object.defineProperty(exports, "__esModule", ({
4544 value: true
4545 }));
4546 exports.useConfig = exports["default"] = exports.MODE_VARIATION = exports.MODE_LAYOUT = exports.LAYOUT_APP_MODES = exports.ConfigProvider = void 0;
4547 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
4548 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
4549 var MODE_LAYOUT = exports.MODE_LAYOUT = 'layout';
4550 var MODE_VARIATION = exports.MODE_VARIATION = 'variation';
4551 var LAYOUT_APP_MODES = exports.LAYOUT_APP_MODES = [MODE_LAYOUT, MODE_VARIATION];
4552 var ConfigContext = _react.default.createContext({});
4553 var useConfig = exports.useConfig = function useConfig() {
4554 return _react.default.useContext(ConfigContext);
4555 };
4556 var ConfigProvider = exports.ConfigProvider = function ConfigProvider(props) {
4557 return /*#__PURE__*/_react.default.createElement(ConfigContext.Provider, {
4558 value: {
4559 mode: props.mode,
4560 attachmentsTypes: props.attachmentsTypes,
4561 onClose: props.onClose,
4562 onConnect: props.onConnect,
4563 onData: props.onData,
4564 onInsert: props.onInsert,
4565 onSelect: props.onSelect,
4566 onGenerate: props.onGenerate,
4567 currentContext: props.currentContext,
4568 hasPro: props.hasPro
4569 }
4570 }, props.children);
4571 };
4572 ConfigProvider.propTypes = {
4573 mode: _propTypes.default.oneOf(LAYOUT_APP_MODES).isRequired,
4574 children: _propTypes.default.node.isRequired,
4575 attachmentsTypes: _propTypes.default.object.isRequired,
4576 onClose: _propTypes.default.func.isRequired,
4577 onConnect: _propTypes.default.func.isRequired,
4578 onData: _propTypes.default.func.isRequired,
4579 onInsert: _propTypes.default.func.isRequired,
4580 onSelect: _propTypes.default.func.isRequired,
4581 onGenerate: _propTypes.default.func.isRequired,
4582 currentContext: _propTypes.default.object,
4583 hasPro: _propTypes.default.bool
4584 };
4585 var _default = exports["default"] = ConfigContext;
4586
4587 /***/ }),
4588
4589 /***/ "../modules/ai/assets/js/editor/pages/form-layout/context/remote-config.js":
4590 /*!*********************************************************************************!*\
4591 !*** ../modules/ai/assets/js/editor/pages/form-layout/context/remote-config.js ***!
4592 \*********************************************************************************/
4593 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4594
4595 "use strict";
4596
4597
4598 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
4599 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
4600 Object.defineProperty(exports, "__esModule", ({
4601 value: true
4602 }));
4603 exports.useRemoteConfig = exports.RemoteConfigProvider = exports.CONFIG_KEYS = void 0;
4604 var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js"));
4605 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
4606 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
4607 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
4608 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
4609 var _api = __webpack_require__(/*! ../../../api */ "../modules/ai/assets/js/editor/api/index.js");
4610 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
4611 var RemoteConfigContext = _react.default.createContext({});
4612 var useRemoteConfig = exports.useRemoteConfig = function useRemoteConfig() {
4613 return _react.default.useContext(RemoteConfigContext);
4614 };
4615 var CONFIG_KEYS = exports.CONFIG_KEYS = {
4616 WEB_BASED_BUILDER_URL: 'webBasedBuilderUrl',
4617 AUTH_TOKEN: 'jwt'
4618 };
4619 var RemoteConfigProvider = exports.RemoteConfigProvider = function RemoteConfigProvider(props) {
4620 var _useState = (0, _react.useState)(false),
4621 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
4622 isLoading = _useState2[0],
4623 setIsLoading = _useState2[1];
4624 var _useState3 = (0, _react.useState)(false),
4625 _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
4626 isLoaded = _useState4[0],
4627 setIsLoaded = _useState4[1];
4628 var _useState5 = (0, _react.useState)(false),
4629 _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
4630 isError = _useState6[0],
4631 setIsError = _useState6[1];
4632 var _useState7 = (0, _react.useState)({}),
4633 _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
4634 remoteConfig = _useState8[0],
4635 setRemoteConfig = _useState8[1];
4636 var fetchData = /*#__PURE__*/function () {
4637 var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
4638 var result, _t;
4639 return _regenerator.default.wrap(function (_context) {
4640 while (1) switch (_context.prev = _context.next) {
4641 case 0:
4642 setIsLoading(true);
4643 setIsError(false);
4644 _context.prev = 1;
4645 _context.next = 2;
4646 return (0, _api.getRemoteConfig)().finally(function () {
4647 setIsLoaded(true);
4648 setIsLoading(false);
4649 });
4650 case 2:
4651 result = _context.sent;
4652 if (result.config) {
4653 _context.next = 3;
4654 break;
4655 }
4656 throw new Error('Invalid remote config');
4657 case 3:
4658 setRemoteConfig(result.config);
4659 _context.next = 5;
4660 break;
4661 case 4:
4662 _context.prev = 4;
4663 _t = _context["catch"](1);
4664 setIsError(true);
4665 setIsLoaded(true);
4666 setIsLoading(false);
4667 case 5:
4668 case "end":
4669 return _context.stop();
4670 }
4671 }, _callee, null, [[1, 4]]);
4672 }));
4673 return function fetchData() {
4674 return _ref.apply(this, arguments);
4675 };
4676 }();
4677 (0, _react.useEffect)(function () {
4678 window.addEventListener('elementor/connect/success', fetchData);
4679 return function () {
4680 window.removeEventListener('elementor/connect/success', fetchData);
4681 };
4682 }, []);
4683 if (!isLoaded && !isLoading) {
4684 fetchData();
4685 }
4686 return /*#__PURE__*/_react.default.createElement(RemoteConfigContext.Provider, {
4687 value: {
4688 isLoading: isLoading,
4689 isLoaded: isLoaded,
4690 isError: isError,
4691 remoteConfig: remoteConfig
4692 }
4693 }, props.children);
4694 };
4695 RemoteConfigProvider.propTypes = {
4696 children: _propTypes.default.node.isRequired,
4697 onError: _propTypes.default.func.isRequired
4698 };
4699
4700 /***/ }),
4701
4702 /***/ "../modules/ai/assets/js/editor/pages/form-layout/hooks/use-layout-prompt.js":
4703 /*!***********************************************************************************!*\
4704 !*** ../modules/ai/assets/js/editor/pages/form-layout/hooks/use-layout-prompt.js ***!
4705 \***********************************************************************************/
4706 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4707
4708 "use strict";
4709
4710
4711 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
4712 Object.defineProperty(exports, "__esModule", ({
4713 value: true
4714 }));
4715 exports["default"] = void 0;
4716 var _api = __webpack_require__(/*! ../../../api */ "../modules/ai/assets/js/editor/api/index.js");
4717 var _usePrompt = _interopRequireDefault(__webpack_require__(/*! ../../../hooks/use-prompt */ "../modules/ai/assets/js/editor/hooks/use-prompt.js"));
4718 var useLayoutPrompt = function useLayoutPrompt(type, initialValue) {
4719 return (0, _usePrompt.default)(function (requestBody, signal) {
4720 requestBody.variationType = type;
4721 return (0, _api.generateLayout)(requestBody, signal);
4722 }, initialValue);
4723 };
4724 var _default = exports["default"] = useLayoutPrompt;
4725
4726 /***/ }),
4727
4728 /***/ "../modules/ai/assets/js/editor/pages/form-layout/hooks/use-screenshot.js":
4729 /*!********************************************************************************!*\
4730 !*** ../modules/ai/assets/js/editor/pages/form-layout/hooks/use-screenshot.js ***!
4731 \********************************************************************************/
4732 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4733
4734 "use strict";
4735
4736
4737 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
4738 Object.defineProperty(exports, "__esModule", ({
4739 value: true
4740 }));
4741 exports["default"] = void 0;
4742 var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js"));
4743 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
4744 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
4745 var _react = __webpack_require__(/*! react */ "react");
4746 var _useLayoutPrompt = _interopRequireDefault(__webpack_require__(/*! ./use-layout-prompt */ "../modules/ai/assets/js/editor/pages/form-layout/hooks/use-layout-prompt.js"));
4747 var ERROR_INITIAL_VALUE = '';
4748 var useScreenshot = function useScreenshot(type, onData) {
4749 var _useState = (0, _react.useState)(ERROR_INITIAL_VALUE),
4750 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
4751 error = _useState2[0],
4752 setError = _useState2[1];
4753 var _useState3 = (0, _react.useState)(false),
4754 _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
4755 isLoading = _useState4[0],
4756 setIsLoading = _useState4[1];
4757 var layoutData = (0, _useLayoutPrompt.default)(type, null);
4758 var generate = function generate(requestBody, signal) {
4759 setIsLoading(true);
4760 setError(ERROR_INITIAL_VALUE);
4761 return layoutData.send(requestBody, signal).then(/*#__PURE__*/function () {
4762 var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(data) {
4763 var createdScreenshot;
4764 return _regenerator.default.wrap(function (_context) {
4765 while (1) switch (_context.prev = _context.next) {
4766 case 0:
4767 _context.next = 1;
4768 return onData(data.result);
4769 case 1:
4770 createdScreenshot = _context.sent;
4771 createdScreenshot.sendUsageData = function () {
4772 return layoutData.sendUsageData(data);
4773 };
4774 createdScreenshot.baseTemplateId = data.baseTemplateId;
4775 createdScreenshot.type = data.type;
4776 return _context.abrupt("return", createdScreenshot);
4777 case 2:
4778 case "end":
4779 return _context.stop();
4780 }
4781 }, _callee);
4782 }));
4783 return function (_x) {
4784 return _ref.apply(this, arguments);
4785 };
4786 }()).catch(function (err) {
4787 setError(err.extra_data ? err : err.message || err);
4788 throw err;
4789 }).finally(function () {
4790 return setIsLoading(false);
4791 });
4792 };
4793 return {
4794 generate: generate,
4795 error: error,
4796 isLoading: isLoading
4797 };
4798 };
4799 var _default = exports["default"] = useScreenshot;
4800
4801 /***/ }),
4802
4803 /***/ "../modules/ai/assets/js/editor/pages/form-layout/hooks/use-screenshots.js":
4804 /*!*********************************************************************************!*\
4805 !*** ../modules/ai/assets/js/editor/pages/form-layout/hooks/use-screenshots.js ***!
4806 \*********************************************************************************/
4807 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4808
4809 "use strict";
4810
4811
4812 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
4813 Object.defineProperty(exports, "__esModule", ({
4814 value: true
4815 }));
4816 exports["default"] = void 0;
4817 var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js"));
4818 var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"));
4819 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
4820 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
4821 var _react = __webpack_require__(/*! react */ "react");
4822 var _useScreenshot = _interopRequireDefault(__webpack_require__(/*! ./use-screenshot */ "../modules/ai/assets/js/editor/pages/form-layout/hooks/use-screenshot.js"));
4823 var _config = __webpack_require__(/*! ../context/config */ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js");
4824 var _requestsIds = __webpack_require__(/*! ../../../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js");
4825 var PENDING_VALUE = {
4826 isPending: true
4827 };
4828 var useScreenshots = function useScreenshots(_ref) {
4829 var onData = _ref.onData;
4830 var _useState = (0, _react.useState)([]),
4831 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
4832 screenshots = _useState2[0],
4833 setScreenshots = _useState2[1];
4834
4835 /**
4836 * The ids for each request are:
4837 * - editorSessionId: a unique id for each editor opening
4838 * - sessionId: a unique id for each session. (open the AI builder)
4839 * - generateId: a unique id for each generate request. (prompt change)
4840 * - batchId: a unique id for each batch of generate requests. (generate, regenerate)
4841 * - requestId: a unique id for each generate request.
4842 */
4843
4844 var _useConfig = (0, _config.useConfig)(),
4845 currentContext = _useConfig.currentContext;
4846 var _useRequestIds = (0, _requestsIds.useRequestIds)(),
4847 editorSessionId = _useRequestIds.editorSessionId,
4848 sessionId = _useRequestIds.sessionId,
4849 setRequest = _useRequestIds.setRequest,
4850 setBatch = _useRequestIds.setBatch,
4851 setGenerate = _useRequestIds.setGenerate;
4852 var generateIdRef = (0, _react.useRef)('');
4853 var batchId = setBatch();
4854 var screenshotsData = [(0, _useScreenshot.default)(0, onData), (0, _useScreenshot.default)(1, onData), (0, _useScreenshot.default)(2, onData)];
4855 var screenshotsGroupCount = screenshotsData.length;
4856 var error = screenshotsData.every(function (s) {
4857 return s === null || s === void 0 ? void 0 : s.error;
4858 }) ? screenshotsData[0].error : '';
4859 var isLoading = screenshotsData.some(function (s) {
4860 return s === null || s === void 0 ? void 0 : s.isLoading;
4861 });
4862 var abortController = (0, _react.useRef)(null);
4863 var abort = function abort() {
4864 var _abortController$curr;
4865 return (_abortController$curr = abortController.current) === null || _abortController$curr === void 0 ? void 0 : _abortController$curr.abort();
4866 };
4867 var createScreenshots = /*#__PURE__*/function () {
4868 var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(prompt, attachments) {
4869 var onGenerate, onError, promises, results, isAllFailed;
4870 return _regenerator.default.wrap(function (_context) {
4871 while (1) switch (_context.prev = _context.next) {
4872 case 0:
4873 abortController.current = new AbortController();
4874 onGenerate = function onGenerate(screenshot) {
4875 setScreenshots(function (prev) {
4876 var updatedData = (0, _toConsumableArray2.default)(prev);
4877 var pendingIndex = updatedData.indexOf(PENDING_VALUE);
4878 updatedData[pendingIndex] = screenshot;
4879 return updatedData;
4880 });
4881 return true;
4882 };
4883 onError = function onError() {
4884 setScreenshots(function (prev) {
4885 var updatedData = (0, _toConsumableArray2.default)(prev);
4886 var pendingIndex = updatedData.lastIndexOf(PENDING_VALUE);
4887 updatedData[pendingIndex] = {
4888 isError: true
4889 };
4890 return updatedData;
4891 });
4892 return false;
4893 };
4894 promises = screenshotsData.map(function (_ref3) {
4895 var generate = _ref3.generate;
4896 var prevGeneratedIds = screenshots.map(function (screenshot) {
4897 return screenshot.baseTemplateId || '';
4898 });
4899 var requestBody = {
4900 prompt: prompt,
4901 prevGeneratedIds: prevGeneratedIds,
4902 currentContext: currentContext,
4903 ids: {
4904 editorSessionId: editorSessionId.current,
4905 sessionId: sessionId.current,
4906 generateId: generateIdRef.current,
4907 batchId: batchId.current,
4908 requestId: setRequest().current
4909 },
4910 attachments: attachments.map(function (_ref4) {
4911 var type = _ref4.type,
4912 content = _ref4.content,
4913 label = _ref4.label,
4914 source = _ref4.source;
4915 // Send only the data that is needed for the generation.
4916 return {
4917 type: type,
4918 content: content,
4919 label: label,
4920 source: source
4921 };
4922 })
4923 };
4924 return generate(requestBody, abortController.current.signal).then(onGenerate).catch(onError);
4925 });
4926 _context.next = 1;
4927 return Promise.all(promises);
4928 case 1:
4929 results = _context.sent;
4930 isAllFailed = results.every(function (value) {
4931 return false === value;
4932 });
4933 if (isAllFailed) {
4934 setScreenshots(function (prev) {
4935 var updatedData = (0, _toConsumableArray2.default)(prev);
4936 updatedData.splice(screenshotsGroupCount * -1);
4937 return updatedData;
4938 });
4939 }
4940 case 2:
4941 case "end":
4942 return _context.stop();
4943 }
4944 }, _callee);
4945 }));
4946 return function createScreenshots(_x, _x2) {
4947 return _ref2.apply(this, arguments);
4948 };
4949 }();
4950 var generate = function generate(prompt, attachments) {
4951 var placeholders = Array(screenshotsGroupCount).fill(PENDING_VALUE);
4952 generateIdRef.current = setGenerate().current;
4953 setScreenshots(placeholders);
4954 createScreenshots(prompt, attachments);
4955 };
4956 var regenerate = function regenerate(prompt, attachments) {
4957 var placeholders = Array(screenshotsGroupCount).fill(PENDING_VALUE);
4958 setScreenshots(function (prev) {
4959 return [].concat((0, _toConsumableArray2.default)(prev), (0, _toConsumableArray2.default)(placeholders));
4960 });
4961 createScreenshots(prompt, attachments);
4962 };
4963 return {
4964 generate: generate,
4965 regenerate: regenerate,
4966 screenshots: screenshots,
4967 isLoading: isLoading,
4968 error: error,
4969 abort: abort
4970 };
4971 };
4972 var _default = exports["default"] = useScreenshots;
4973
4974 /***/ }),
4975
4976 /***/ "../modules/ai/assets/js/editor/pages/form-layout/hooks/use-slider.js":
4977 /*!****************************************************************************!*\
4978 !*** ../modules/ai/assets/js/editor/pages/form-layout/hooks/use-slider.js ***!
4979 \****************************************************************************/
4980 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4981
4982 "use strict";
4983
4984
4985 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
4986 Object.defineProperty(exports, "__esModule", ({
4987 value: true
4988 }));
4989 exports["default"] = exports.SCREENSHOTS_PER_PAGE = exports.MAX_PAGES = void 0;
4990 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
4991 var _react = __webpack_require__(/*! react */ "react");
4992 var SCREENSHOTS_PER_PAGE = exports.SCREENSHOTS_PER_PAGE = 3;
4993 var MAX_PAGES = exports.MAX_PAGES = 5;
4994 var useSlider = function useSlider() {
4995 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
4996 _ref$slidesCount = _ref.slidesCount,
4997 slidesCount = _ref$slidesCount === void 0 ? 0 : _ref$slidesCount,
4998 _ref$slidesPerPage = _ref.slidesPerPage,
4999 slidesPerPage = _ref$slidesPerPage === void 0 ? SCREENSHOTS_PER_PAGE : _ref$slidesPerPage,
5000 _ref$gapPercentage = _ref.gapPercentage,
5001 gapPercentage = _ref$gapPercentage === void 0 ? 2 : _ref$gapPercentage;
5002 var _useState = (0, _react.useState)(1),
5003 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
5004 currentPage = _useState2[0],
5005 setCurrentPage = _useState2[1];
5006 var gapsCount = slidesPerPage - 1;
5007 var slideWidthPercentage = (100 - gapPercentage * gapsCount) / slidesPerPage;
5008 var offsetXPercentage = (slideWidthPercentage + gapPercentage) * slidesPerPage * (currentPage - 1) * -1;
5009 var pagesCount = Math.ceil(slidesCount / slidesPerPage);
5010 (0, _react.useEffect)(function () {
5011 // In cases when the slidesCount value was reduced, we need to navigate to the last page.
5012 if (currentPage > 1 && currentPage > pagesCount) {
5013 setCurrentPage(pagesCount);
5014 }
5015 }, [pagesCount]);
5016 return {
5017 currentPage: currentPage,
5018 setCurrentPage: setCurrentPage,
5019 pagesCount: pagesCount,
5020 slidesPerPage: slidesPerPage,
5021 gapPercentage: gapPercentage,
5022 offsetXPercentage: offsetXPercentage,
5023 slideWidthPercentage: slideWidthPercentage
5024 };
5025 };
5026 var _default = exports["default"] = useSlider;
5027
5028 /***/ }),
5029
5030 /***/ "../modules/ai/assets/js/editor/pages/form-layout/index.js":
5031 /*!*****************************************************************!*\
5032 !*** ../modules/ai/assets/js/editor/pages/form-layout/index.js ***!
5033 \*****************************************************************/
5034 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5035
5036 "use strict";
5037
5038
5039 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
5040 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
5041 Object.defineProperty(exports, "__esModule", ({
5042 value: true
5043 }));
5044 exports["default"] = void 0;
5045 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
5046 var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"));
5047 var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"));
5048 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
5049 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
5050 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
5051 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
5052 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
5053 var _promptErrorMessage = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-error-message */ "../modules/ai/assets/js/editor/components/prompt-error-message.js"));
5054 var _unsavedChangesAlert = _interopRequireDefault(__webpack_require__(/*! ./components/unsaved-changes-alert */ "../modules/ai/assets/js/editor/pages/form-layout/components/unsaved-changes-alert.js"));
5055 var _layoutDialog = _interopRequireDefault(__webpack_require__(/*! ./components/layout-dialog */ "../modules/ai/assets/js/editor/pages/form-layout/components/layout-dialog.js"));
5056 var _promptForm = _interopRequireDefault(__webpack_require__(/*! ./components/prompt-form */ "../modules/ai/assets/js/editor/pages/form-layout/components/prompt-form.js"));
5057 var _refreshIcon = _interopRequireDefault(__webpack_require__(/*! ../../icons/refresh-icon */ "../modules/ai/assets/js/editor/icons/refresh-icon.js"));
5058 var _screenshot = _interopRequireDefault(__webpack_require__(/*! ./components/screenshot */ "../modules/ai/assets/js/editor/pages/form-layout/components/screenshot.js"));
5059 var _useScreenshots2 = _interopRequireDefault(__webpack_require__(/*! ./hooks/use-screenshots */ "../modules/ai/assets/js/editor/pages/form-layout/hooks/use-screenshots.js"));
5060 var _useSlider2 = _interopRequireWildcard(__webpack_require__(/*! ./hooks/use-slider */ "../modules/ai/assets/js/editor/pages/form-layout/hooks/use-slider.js"));
5061 var _minimizeDiagonalIcon = _interopRequireDefault(__webpack_require__(/*! ../../icons/minimize-diagonal-icon */ "../modules/ai/assets/js/editor/icons/minimize-diagonal-icon.js"));
5062 var _expandDiagonalIcon = _interopRequireDefault(__webpack_require__(/*! ../../icons/expand-diagonal-icon */ "../modules/ai/assets/js/editor/icons/expand-diagonal-icon.js"));
5063 var _config = __webpack_require__(/*! ./context/config */ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js");
5064 var _attachment = __webpack_require__(/*! ../../types/attachment */ "../modules/ai/assets/js/editor/types/attachment.js");
5065 var _promptPowerNotice = __webpack_require__(/*! ./components/attachments/prompt-power-notice */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/prompt-power-notice.js");
5066 var _attachments = __webpack_require__(/*! ./components/attachments */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments.js");
5067 var _attachDialog = _interopRequireDefault(__webpack_require__(/*! ./components/attachments/attach-dialog */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments/attach-dialog.js"));
5068 var _isURL = _interopRequireDefault(__webpack_require__(/*! validator/lib/isURL */ "../node_modules/validator/lib/isURL.js"));
5069 var _voicePromotionAlert = __webpack_require__(/*! ../../components/voice-promotion-alert */ "../modules/ai/assets/js/editor/components/voice-promotion-alert.js");
5070 var _excluded = ["children"];
5071 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
5072 var DirectionalMinimizeDiagonalIcon = (0, _ui.withDirection)(_minimizeDiagonalIcon.default);
5073 var DirectionalExpandDiagonalIcon = (0, _ui.withDirection)(_expandDiagonalIcon.default);
5074
5075 /**
5076 * @typedef {Object} Attachment
5077 * @property {('json')} type - The type of the attachment, currently only `json` is supported.
5078 * @property {string} previewHTML - HTML content as a string, representing a preview.
5079 * @property {string} content - Actual content of the attachment as a string.
5080 * @property {string} label - Label for the attachment.
5081 */
5082
5083 var RegenerateButton = function RegenerateButton(props) {
5084 return /*#__PURE__*/_react.default.createElement(_ui.Button, (0, _extends2.default)({
5085 size: "small",
5086 color: "secondary",
5087 startIcon: /*#__PURE__*/_react.default.createElement(_refreshIcon.default, null)
5088 }, props), (0, _i18n.__)('Regenerate', 'elementor'));
5089 };
5090 var UseLayoutButton = function UseLayoutButton(props) {
5091 return /*#__PURE__*/_react.default.createElement(_ui.Button, (0, _extends2.default)({
5092 size: "small",
5093 variant: "contained"
5094 }, props), (0, _i18n.__)('Use Layout', 'elementor'));
5095 };
5096 UseLayoutButton.propTypes = {
5097 sx: _propTypes.default.object
5098 };
5099 var isRegenerateButtonDisabled = function isRegenerateButtonDisabled(screenshots, isLoading, isPromptFormActive) {
5100 if (isLoading || isPromptFormActive) {
5101 return true;
5102 }
5103 return screenshots.length >= _useSlider2.SCREENSHOTS_PER_PAGE * _useSlider2.MAX_PAGES;
5104 };
5105 var FormLayout = function FormLayout(_ref) {
5106 var _screenshots$selected, _screenshots$2;
5107 var _ref$DialogHeaderProp = _ref.DialogHeaderProps,
5108 DialogHeaderProps = _ref$DialogHeaderProp === void 0 ? {} : _ref$DialogHeaderProp,
5109 _ref$DialogContentPro = _ref.DialogContentProps,
5110 DialogContentProps = _ref$DialogContentPro === void 0 ? {} : _ref$DialogContentPro,
5111 initialAttachments = _ref.attachments;
5112 var _useConfig = (0, _config.useConfig)(),
5113 attachmentsTypes = _useConfig.attachmentsTypes,
5114 onData = _useConfig.onData,
5115 onInsert = _useConfig.onInsert,
5116 onSelect = _useConfig.onSelect,
5117 onClose = _useConfig.onClose,
5118 onGenerate = _useConfig.onGenerate;
5119 var _useScreenshots = (0, _useScreenshots2.default)({
5120 onData: onData
5121 }),
5122 screenshots = _useScreenshots.screenshots,
5123 generate = _useScreenshots.generate,
5124 regenerate = _useScreenshots.regenerate,
5125 isLoading = _useScreenshots.isLoading,
5126 error = _useScreenshots.error,
5127 abort = _useScreenshots.abort;
5128 var screenshotOutlineOffset = '2px';
5129 var _useSlider = (0, _useSlider2.default)({
5130 slidesCount: screenshots.length
5131 }),
5132 currentPage = _useSlider.currentPage,
5133 setCurrentPage = _useSlider.setCurrentPage,
5134 pagesCount = _useSlider.pagesCount,
5135 gapPercentage = _useSlider.gapPercentage,
5136 slidesPerPage = _useSlider.slidesPerPage,
5137 offsetXPercentage = _useSlider.offsetXPercentage,
5138 slideWidthPercentage = _useSlider.slideWidthPercentage;
5139 var _useState = (0, _react.useState)(-1),
5140 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
5141 selectedScreenshotIndex = _useState2[0],
5142 setSelectedScreenshotIndex = _useState2[1];
5143 var _useState3 = (0, _react.useState)(false),
5144 _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
5145 showUnsavedChangesAlert = _useState4[0],
5146 setShowUnsavedChangesAlert = _useState4[1];
5147 var _useState5 = (0, _react.useState)(true),
5148 _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
5149 isPromptEditable = _useState6[0],
5150 setIsPromptEditable = _useState6[1];
5151 var _useState7 = (0, _react.useState)([]),
5152 _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
5153 attachments = _useState8[0],
5154 setAttachments = _useState8[1];
5155 var _useState9 = (0, _react.useState)(false),
5156 _useState0 = (0, _slicedToArray2.default)(_useState9, 2),
5157 shouldRenderWebApp = _useState0[0],
5158 setShouldRenderWebApp = _useState0[1];
5159 var _useState1 = (0, _react.useState)(false),
5160 _useState10 = (0, _slicedToArray2.default)(_useState1, 2),
5161 isMinimized = _useState10[0],
5162 setIsMinimized = _useState10[1];
5163 var lastRun = (0, _react.useRef)(function () {});
5164 var promptInputRef = (0, _react.useRef)(null);
5165 var selectedTemplate = (_screenshots$selected = screenshots[selectedScreenshotIndex]) === null || _screenshots$selected === void 0 ? void 0 : _screenshots$selected.template;
5166 var dialogContentChildren = DialogContentProps.children,
5167 dialogContentProps = (0, _objectWithoutProperties2.default)(DialogContentProps, _excluded);
5168
5169 // When there are no screenshots the prompt field should be editable.
5170 var shouldFallbackToEditPrompt = !!(error && 0 === screenshots.length);
5171 var isPromptFormActive = isPromptEditable || shouldFallbackToEditPrompt;
5172 var abortAndClose = function abortAndClose() {
5173 abort();
5174 onClose();
5175 };
5176 var onCloseIntent = function onCloseIntent() {
5177 var hasUnsavedChanges = promptInputRef.current.value.trim() !== '' || screenshots.length > 0;
5178 if (hasUnsavedChanges) {
5179 return setShowUnsavedChangesAlert(true);
5180 }
5181 abortAndClose();
5182 };
5183 var handleGenerate = function handleGenerate(event, prompt) {
5184 event.preventDefault();
5185 if ('' === prompt.trim() && 0 === attachments.length) {
5186 return;
5187 }
5188 if ((0, _isURL.default)(prompt)) {
5189 setShouldRenderWebApp(true);
5190 return;
5191 }
5192 onGenerate();
5193 lastRun.current = function () {
5194 setSelectedScreenshotIndex(-1);
5195 generate(prompt, attachments);
5196 };
5197 lastRun.current();
5198 setIsPromptEditable(false);
5199 setCurrentPage(1);
5200 };
5201 var handleRegenerate = function handleRegenerate() {
5202 lastRun.current = function () {
5203 regenerate(promptInputRef.current.value, attachments);
5204 // Changing the current page to the next page number.
5205 setCurrentPage(pagesCount + 1);
5206 };
5207 lastRun.current();
5208 };
5209 var applyTemplate = function applyTemplate() {
5210 onInsert(selectedTemplate);
5211 screenshots[selectedScreenshotIndex].sendUsageData();
5212 abortAndClose();
5213 };
5214 var handleScreenshotClick = function handleScreenshotClick(index, template) {
5215 return function () {
5216 if (isPromptFormActive) {
5217 return;
5218 }
5219 setSelectedScreenshotIndex(index);
5220 onSelect(template);
5221 };
5222 };
5223
5224 /**
5225 * @param {Attachment[]} items
5226 */
5227 var onAttach = function onAttach(items) {
5228 items.forEach(function (item) {
5229 if (!attachmentsTypes[item.type]) {
5230 throw new Error("Invalid attachment type: ".concat(item.type));
5231 }
5232 var typeConfig = attachmentsTypes[item.type];
5233 if (!item.previewHTML && typeConfig.previewGenerator) {
5234 typeConfig.previewGenerator(item.content).then(function (html) {
5235 item.previewHTML = html;
5236 setAttachments(function (prev) {
5237 // Replace the attachment with the updated one.
5238 return prev.map(function (attachment) {
5239 if (attachment.content === item.content) {
5240 return item;
5241 }
5242 return attachment;
5243 });
5244 });
5245 });
5246 }
5247 });
5248 setAttachments(items);
5249 setShouldRenderWebApp(false);
5250 setIsPromptEditable(true);
5251 };
5252 (0, _react.useEffect)(function () {
5253 var _screenshots$;
5254 var isFirstTemplateExist = (_screenshots$ = screenshots[0]) === null || _screenshots$ === void 0 ? void 0 : _screenshots$.template;
5255 if (isFirstTemplateExist) {
5256 onSelect(screenshots[0].template);
5257 setSelectedScreenshotIndex(0);
5258 }
5259 }, [(_screenshots$2 = screenshots[0]) === null || _screenshots$2 === void 0 ? void 0 : _screenshots$2.template]);
5260 (0, _react.useEffect)(function () {
5261 if (initialAttachments !== null && initialAttachments !== void 0 && initialAttachments.length) {
5262 onAttach(initialAttachments);
5263 }
5264 }, []);
5265 return /*#__PURE__*/_react.default.createElement(_layoutDialog.default, {
5266 onClose: onCloseIntent
5267 }, /*#__PURE__*/_react.default.createElement(_layoutDialog.default.Header, (0, _extends2.default)({
5268 onClose: onCloseIntent
5269 }, DialogHeaderProps), DialogHeaderProps.children, /*#__PURE__*/_react.default.createElement(_ui.Tooltip, {
5270 title: isMinimized ? (0, _i18n.__)('Expand', 'elementor') : (0, _i18n.__)('Minimize', 'elementor')
5271 }, /*#__PURE__*/_react.default.createElement(_ui.IconButton, {
5272 size: "small",
5273 "aria-label": "minimize",
5274 onClick: function onClick() {
5275 return setIsMinimized(function (prev) {
5276 return !prev;
5277 });
5278 }
5279 }, isMinimized ? /*#__PURE__*/_react.default.createElement(DirectionalExpandDiagonalIcon, null) : /*#__PURE__*/_react.default.createElement(DirectionalMinimizeDiagonalIcon, null)))), /*#__PURE__*/_react.default.createElement(_layoutDialog.default.Content, (0, _extends2.default)({
5280 dividers: true
5281 }, dialogContentProps), /*#__PURE__*/_react.default.createElement(_ui.Collapse, {
5282 in: !isMinimized
5283 }, dialogContentChildren && /*#__PURE__*/_react.default.createElement(_ui.Box, {
5284 sx: {
5285 pt: 2,
5286 px: 2,
5287 pb: 0
5288 }
5289 }, dialogContentChildren), attachments.length > 0 && /*#__PURE__*/_react.default.createElement(_promptPowerNotice.PromptPowerNotice, null), error && /*#__PURE__*/_react.default.createElement(_ui.Box, {
5290 sx: {
5291 pt: 2,
5292 px: 2,
5293 pb: 0
5294 }
5295 }, /*#__PURE__*/_react.default.createElement(_promptErrorMessage.default, {
5296 error: error,
5297 onRetry: lastRun.current
5298 })), showUnsavedChangesAlert && /*#__PURE__*/_react.default.createElement(_unsavedChangesAlert.default, {
5299 open: showUnsavedChangesAlert,
5300 title: (0, _i18n.__)('Leave Elementor AI?', 'elementor'),
5301 text: (0, _i18n.__)("Your progress will be deleted, and can't be recovered.", 'elementor'),
5302 onClose: abortAndClose,
5303 onCancel: function onCancel() {
5304 return setShowUnsavedChangesAlert(false);
5305 }
5306 }), shouldRenderWebApp && /*#__PURE__*/_react.default.createElement(_attachDialog.default, {
5307 type: _attachments.ATTACHMENT_TYPE_URL,
5308 url: promptInputRef.current.value,
5309 onAttach: onAttach,
5310 onClose: function onClose() {
5311 setShouldRenderWebApp(false);
5312 }
5313 }), /*#__PURE__*/_react.default.createElement(_promptForm.default, {
5314 shouldResetPrompt: shouldRenderWebApp,
5315 ref: promptInputRef,
5316 isActive: isPromptFormActive,
5317 isLoading: isLoading,
5318 showActions: screenshots.length > 0 || isLoading,
5319 attachmentsTypes: attachmentsTypes,
5320 attachments: attachments,
5321 onAttach: onAttach,
5322 onDetach: function onDetach(index) {
5323 setAttachments(function (prev) {
5324 var newAttachments = (0, _toConsumableArray2.default)(prev);
5325 newAttachments.splice(index, 1);
5326 return newAttachments;
5327 });
5328 setIsPromptEditable(true);
5329 },
5330 onSubmit: handleGenerate,
5331 onBack: function onBack() {
5332 return setIsPromptEditable(false);
5333 },
5334 onEdit: function onEdit() {
5335 return setIsPromptEditable(true);
5336 }
5337 }), (screenshots.length > 0 || isLoading) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.Divider, null), /*#__PURE__*/_react.default.createElement(_ui.Box, {
5338 sx: {
5339 p: 1.5
5340 }
5341 }, /*#__PURE__*/_react.default.createElement(_ui.Box, {
5342 sx: {
5343 overflow: 'hidden',
5344 p: 0.5
5345 }
5346 }, /*#__PURE__*/_react.default.createElement(_ui.Box, {
5347 sx: {
5348 display: 'flex',
5349 transition: 'all 0.4s ease',
5350 gap: "".concat(gapPercentage, "%"),
5351 transform: "translateX(".concat(offsetXPercentage, "%)")
5352 }
5353 }, screenshots.map(function (_ref2, index) {
5354 var screenshot = _ref2.screenshot,
5355 type = _ref2.type,
5356 template = _ref2.template,
5357 isError = _ref2.isError,
5358 isPending = _ref2.isPending;
5359 return /*#__PURE__*/_react.default.createElement(_screenshot.default, {
5360 key: index,
5361 url: screenshot,
5362 type: type,
5363 disabled: isPromptFormActive,
5364 isPlaceholder: isError,
5365 isLoading: isPending,
5366 isSelected: selectedScreenshotIndex === index,
5367 onClick: handleScreenshotClick(index, template),
5368 outlineOffset: screenshotOutlineOffset,
5369 sx: {
5370 flex: "0 0 ".concat(slideWidthPercentage, "%")
5371 }
5372 });
5373 }))), /*#__PURE__*/_react.default.createElement(_voicePromotionAlert.VoicePromotionAlert, {
5374 introductionKey: "ai-context-layout-promotion"
5375 })), screenshots.length > 0 && /*#__PURE__*/_react.default.createElement(_ui.Box, {
5376 sx: {
5377 pt: 0,
5378 px: 2,
5379 pb: 2
5380 },
5381 display: "grid",
5382 gridTemplateColumns: "repeat(3, 1fr)",
5383 justifyItems: "center"
5384 }, /*#__PURE__*/_react.default.createElement(RegenerateButton, {
5385 onClick: handleRegenerate,
5386 disabled: isRegenerateButtonDisabled(screenshots, isLoading, isPromptFormActive),
5387 sx: {
5388 justifySelf: 'start'
5389 }
5390 }), screenshots.length > slidesPerPage && /*#__PURE__*/_react.default.createElement(_ui.Pagination, {
5391 page: currentPage,
5392 count: pagesCount,
5393 disabled: isPromptFormActive,
5394 onChange: function onChange(_, page) {
5395 return setCurrentPage(page);
5396 }
5397 }), /*#__PURE__*/_react.default.createElement(UseLayoutButton, {
5398 onClick: applyTemplate,
5399 disabled: isPromptFormActive || -1 === selectedScreenshotIndex,
5400 sx: {
5401 justifySelf: 'end',
5402 gridColumn: 3
5403 }
5404 }))))));
5405 };
5406 FormLayout.propTypes = {
5407 DialogHeaderProps: _propTypes.default.object,
5408 DialogContentProps: _propTypes.default.object,
5409 attachments: _propTypes.default.arrayOf(_attachment.AttachmentPropType)
5410 };
5411 var _default = exports["default"] = FormLayout;
5412
5413 /***/ }),
5414
5415 /***/ "../modules/ai/assets/js/editor/pages/form-media/components/enhance-button.js":
5416 /*!************************************************************************************!*\
5417 !*** ../modules/ai/assets/js/editor/pages/form-media/components/enhance-button.js ***!
5418 \************************************************************************************/
5419 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5420
5421 "use strict";
5422
5423
5424 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
5425 Object.defineProperty(exports, "__esModule", ({
5426 value: true
5427 }));
5428 exports["default"] = void 0;
5429 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
5430 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
5431 var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"));
5432 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
5433 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
5434 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
5435 var _wandIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/wand-icon */ "../modules/ai/assets/js/editor/icons/wand-icon.js"));
5436 var _excluded = ["isLoading"];
5437 var StyledWandIcon = (0, _ui.withDirection)(_wandIcon.default);
5438 var EnhanceButton = function EnhanceButton(_ref) {
5439 var isLoading = _ref.isLoading,
5440 props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
5441 return /*#__PURE__*/_react.default.createElement(_ui.Tooltip, {
5442 title: (0, _i18n.__)('Enhance prompt', 'elementor')
5443 }, /*#__PURE__*/_react.default.createElement(_ui.Box, {
5444 component: "span",
5445 sx: {
5446 cursor: props.disabled ? 'default' : 'pointer'
5447 }
5448 }, /*#__PURE__*/_react.default.createElement(_ui.IconButton, (0, _extends2.default)({
5449 size: "small",
5450 color: "secondary"
5451 }, props), isLoading ? /*#__PURE__*/_react.default.createElement(_ui.CircularProgress, {
5452 color: "secondary",
5453 size: 20
5454 }) : /*#__PURE__*/_react.default.createElement(StyledWandIcon, {
5455 fontSize: "small"
5456 }))));
5457 };
5458 EnhanceButton.propTypes = {
5459 disabled: _propTypes.default.bool,
5460 isLoading: _propTypes.default.bool
5461 };
5462 var _default = exports["default"] = EnhanceButton;
5463
5464 /***/ }),
5465
5466 /***/ "../modules/ai/assets/js/editor/pages/form-media/components/generate-submit.js":
5467 /*!*************************************************************************************!*\
5468 !*** ../modules/ai/assets/js/editor/pages/form-media/components/generate-submit.js ***!
5469 \*************************************************************************************/
5470 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5471
5472 "use strict";
5473
5474
5475 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
5476 Object.defineProperty(exports, "__esModule", ({
5477 value: true
5478 }));
5479 exports["default"] = void 0;
5480 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
5481 var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
5482 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
5483 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
5484 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
5485 var GenerateSubmit = function GenerateSubmit(props) {
5486 return /*#__PURE__*/_react.default.createElement(_ui.Button, (0, _extends2.default)({
5487 fullWidth: true,
5488 size: "medium",
5489 type: "submit",
5490 variant: "contained"
5491 }, props), props.children || (0, _i18n.__)('Generate', 'elementor'));
5492 };
5493 GenerateSubmit.propTypes = {
5494 children: _propTypes.default.node
5495 };
5496 var _default = exports["default"] = GenerateSubmit;
5497
5498 /***/ }),
5499
5500 /***/ "../modules/ai/assets/js/editor/pages/get-started/index.js":
5501 /*!*****************************************************************!*\
5502 !*** ../modules/ai/assets/js/editor/pages/get-started/index.js ***!
5503 \*****************************************************************/
5504 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5505
5506 "use strict";
5507
5508
5509 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
5510 var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
5511 Object.defineProperty(exports, "__esModule", ({
5512 value: true
5513 }));
5514 exports["default"] = void 0;
5515 var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
5516 var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js"));
5517 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
5518 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
5519 var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
5520 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
5521 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
5522 var _api = __webpack_require__(/*! ../../api */ "../modules/ai/assets/js/editor/api/index.js");
5523 var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
5524 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
5525 var GetStarted = function GetStarted(_ref) {
5526 var onSuccess = _ref.onSuccess;
5527 var _useState = (0, _react.useState)(false),
5528 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
5529 isTermsChecked = _useState2[0],
5530 setIsTermsChecked = _useState2[1];
5531 var onGetStartedClick = /*#__PURE__*/function () {
5532 var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
5533 return _regenerator.default.wrap(function (_context) {
5534 while (1) switch (_context.prev = _context.next) {
5535 case 0:
5536 _context.next = 1;
5537 return (0, _api.setGetStarted)();
5538 case 1:
5539 onSuccess();
5540 case 2:
5541 case "end":
5542 return _context.stop();
5543 }
5544 }, _callee);
5545 }));
5546 return function onGetStartedClick() {
5547 return _ref2.apply(this, arguments);
5548 };
5549 }();
5550 return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
5551 alignItems: "center",
5552 gap: 1.5
5553 }, /*#__PURE__*/_react.default.createElement(_icons.AIIcon, {
5554 sx: {
5555 color: 'text.primary',
5556 fontSize: '60px',
5557 mb: 1
5558 }
5559 }), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
5560 variant: "h4",
5561 sx: {
5562 color: 'text.primary'
5563 }
5564 }, (0, _i18n.__)('Step into the future with Elementor AI', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
5565 variant: "body2"
5566 }, (0, _i18n.__)('Create smarter with AI text and code generators built right into the editor.', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Stack, {
5567 direction: "row",
5568 gap: 1.5,
5569 alignItems: "flex-start"
5570 }, /*#__PURE__*/_react.default.createElement(_ui.Checkbox, {
5571 id: "e-ai-terms-approval",
5572 color: "secondary",
5573 checked: isTermsChecked,
5574 onClick: function onClick() {
5575 return setIsTermsChecked(function (prevState) {
5576 return !prevState;
5577 });
5578 }
5579 }), /*#__PURE__*/_react.default.createElement(_ui.Stack, null, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
5580 variant: "caption",
5581 sx: {
5582 maxWidth: 520
5583 },
5584 component: "label",
5585 htmlFor: "e-ai-terms-approval"
5586 }, (0, _i18n.__)('I approve the ', 'elementor'), /*#__PURE__*/_react.default.createElement(_ui.Link, {
5587 href: "https://go.elementor.com/ai-terms/",
5588 target: "_blank",
5589 color: "info.main"
5590 }, (0, _i18n.__)('Terms of Service', 'elementor')), ' & ', /*#__PURE__*/_react.default.createElement(_ui.Link, {
5591 href: "https://go.elementor.com/ai-privacy-policy/",
5592 target: "_blank",
5593 color: "info.main"
5594 }, (0, _i18n.__)('Privacy Policy', 'elementor')), (0, _i18n.__)(' of the Elementor AI service.', 'elementor'), /*#__PURE__*/_react.default.createElement("br", null), (0, _i18n.__)('This includes consenting to the collection and use of data to improve user experience.', 'elementor')))), /*#__PURE__*/_react.default.createElement(_ui.Button, {
5595 disabled: !isTermsChecked,
5596 variant: "contained",
5597 onClick: onGetStartedClick,
5598 sx: {
5599 mt: 1,
5600 '&:hover': {
5601 color: 'primary.contrastText'
5602 }
5603 }
5604 }, (0, _i18n.__)('Get Started', 'elementor')));
5605 };
5606 GetStarted.propTypes = {
5607 onSuccess: _propTypes.default.func.isRequired
5608 };
5609 var _default = exports["default"] = GetStarted;
5610
5611 /***/ }),
5612
5613 /***/ "../modules/ai/assets/js/editor/types/attachment.js":
5614 /*!**********************************************************!*\
5615 !*** ../modules/ai/assets/js/editor/types/attachment.js ***!
5616 \**********************************************************/
5617 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5618
5619 "use strict";
5620
5621
5622 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
5623 Object.defineProperty(exports, "__esModule", ({
5624 value: true
5625 }));
5626 exports.AttachmentsTypesPropType = exports.AttachmentPropType = void 0;
5627 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
5628 var AttachmentPropType = exports.AttachmentPropType = _propTypes.default.shape({
5629 type: _propTypes.default.string,
5630 previewHTML: _propTypes.default.string,
5631 content: _propTypes.default.string,
5632 label: _propTypes.default.string,
5633 source: _propTypes.default.string
5634 });
5635 var AttachmentsTypesPropType = exports.AttachmentsTypesPropType = _propTypes.default.shape({
5636 type: _propTypes.default.shape({
5637 promptPlaceholder: _propTypes.default.string,
5638 promptSuggestions: _propTypes.default.arrayOf(_propTypes.default.shape({
5639 text: _propTypes.default.string.isRequired
5640 })),
5641 previewGenerator: _propTypes.default.func
5642 })
5643 });
5644
5645 /***/ }),
5646
5647 /***/ "../modules/ai/assets/js/editor/utils/editor-integration.js":
5648 /*!******************************************************************!*\
5649 !*** ../modules/ai/assets/js/editor/utils/editor-integration.js ***!
5650 \******************************************************************/
5651 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5652
5653 "use strict";
5654
5655
5656 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
5657 Object.defineProperty(exports, "__esModule", ({
5658 value: true
5659 }));
5660 exports.renderLayoutApp = exports.openPanel = exports.onConnect = exports.importToEditor = exports.getUiConfig = exports.closePanel = exports.WEB_BASED_PROMPTS = exports.VARIATIONS_PROMPTS = void 0;
5661 var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
5662 var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js"));
5663 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
5664 var _react2 = _interopRequireDefault(__webpack_require__(/*! elementor-utils/react */ "../assets/dev/js/utils/react.js"));
5665 var _previewContainer = __webpack_require__(/*! ./preview-container */ "../modules/ai/assets/js/editor/utils/preview-container.js");
5666 var _layoutApp = _interopRequireDefault(__webpack_require__(/*! ../layout-app */ "../modules/ai/assets/js/editor/layout-app.js"));
5667 var _screenshot = __webpack_require__(/*! ./screenshot */ "../modules/ai/assets/js/editor/utils/screenshot.js");
5668 var _history = __webpack_require__(/*! ./history */ "../modules/ai/assets/js/editor/utils/history.js");
5669 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
5670 var _layoutAppWrapper = _interopRequireDefault(__webpack_require__(/*! ../layout-app-wrapper */ "../modules/ai/assets/js/editor/layout-app-wrapper.js"));
5671 var _requestsIds = __webpack_require__(/*! ../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js");
5672 var closePanel = exports.closePanel = function closePanel() {
5673 $e.run('panel/close');
5674 $e.components.get('panel').blockUserInteractions();
5675 };
5676 var openPanel = exports.openPanel = function openPanel() {
5677 $e.run('panel/open');
5678 $e.components.get('panel').unblockUserInteractions();
5679 };
5680 var onConnect = exports.onConnect = function onConnect(data) {
5681 elementorCommon.config.library_connect.is_connected = true;
5682 elementorCommon.config.library_connect.current_access_level = data.kits_access_level || data.access_level || 0;
5683 elementorCommon.config.library_connect.current_access_tier = data.access_tier;
5684 elementorCommon.config.library_connect.plan_type = data.plan_type;
5685 };
5686 var getUiConfig = exports.getUiConfig = function getUiConfig() {
5687 var _elementor, _elementor$getPrefere;
5688 var colorScheme = ((_elementor = elementor) === null || _elementor === void 0 || (_elementor$getPrefere = _elementor.getPreferences) === null || _elementor$getPrefere === void 0 ? void 0 : _elementor$getPrefere.call(_elementor, 'ui_theme')) || 'auto';
5689 var isRTL = elementorCommon.config.isRTL;
5690 return {
5691 colorScheme: colorScheme,
5692 isRTL: isRTL
5693 };
5694 };
5695 var VARIATIONS_PROMPTS = exports.VARIATIONS_PROMPTS = [{
5696 text: (0, _i18n.__)('Minimalist design with bold typography about', 'elementor')
5697 }, {
5698 text: (0, _i18n.__)('Elegant style with serif fonts discussing', 'elementor')
5699 }, {
5700 text: (0, _i18n.__)('Retro vibe with muted colors and classic fonts about', 'elementor')
5701 }, {
5702 text: (0, _i18n.__)('Futuristic design with neon accents about', 'elementor')
5703 }, {
5704 text: (0, _i18n.__)('Professional look with clean lines for', 'elementor')
5705 }, {
5706 text: (0, _i18n.__)('Earthy tones and organic shapes featuring', 'elementor')
5707 }, {
5708 text: (0, _i18n.__)('Luxurious theme with rich colors discussing', 'elementor')
5709 }, {
5710 text: (0, _i18n.__)('Tech-inspired style with modern fonts about', 'elementor')
5711 }, {
5712 text: (0, _i18n.__)('Warm hues with comforting visuals about', 'elementor')
5713 }];
5714 var WEB_BASED_PROMPTS = exports.WEB_BASED_PROMPTS = [{
5715 text: (0, _i18n.__)('Change the content to be about [topic]', 'elementor')
5716 }, {
5717 text: (0, _i18n.__)('Generate lorem ipsum placeholder text for all paragraphs', 'elementor')
5718 }, {
5719 text: (0, _i18n.__)('Revise the content to focus on [topic] and then translate it into Spanish', 'elementor')
5720 }, {
5721 text: (0, _i18n.__)('Shift the focus of the content to [topic] in order to showcase our company\'s mission and values', 'elementor')
5722 }, {
5723 text: (0, _i18n.__)('Alter the content to provide helpful tips related to [topic]', 'elementor')
5724 }, {
5725 text: (0, _i18n.__)('Adjust the content to include FAQs and answers for common inquiries about [topic]', 'elementor')
5726 }];
5727 var PROMPT_PLACEHOLDER = (0, _i18n.__)("Press '/' for suggestions or describe the changes you want to apply (optional)...", 'elementor');
5728 var renderLayoutApp = exports.renderLayoutApp = function renderLayoutApp() {
5729 var _options$onRenderApp;
5730 var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
5731 parentContainer: null,
5732 mode: '',
5733 at: null,
5734 onClose: null,
5735 onGenerate: null,
5736 onInsert: null,
5737 onRenderApp: null,
5738 onSelect: null,
5739 attachments: []
5740 };
5741 closePanel();
5742 var previewContainer = (0, _previewContainer.createPreviewContainer)(options.parentContainer, {
5743 // Create the container at the "drag widget here" area position.
5744 at: options.at
5745 });
5746 var _getUiConfig = getUiConfig(),
5747 colorScheme = _getUiConfig.colorScheme,
5748 isRTL = _getUiConfig.isRTL;
5749 var rootElement = document.createElement('div');
5750 document.body.append(rootElement);
5751 var bodyStyle = window.elementorFrontend.elements.$window[0].getComputedStyle(window.elementorFrontend.elements.$body[0]);
5752 var _ReactUtils$render = _react2.default.render(/*#__PURE__*/_react.default.createElement(_layoutAppWrapper.default, {
5753 isRTL: isRTL,
5754 colorScheme: colorScheme
5755 }, /*#__PURE__*/_react.default.createElement(_layoutApp.default, {
5756 mode: options.mode,
5757 currentContext: {
5758 body: {
5759 backgroundColor: bodyStyle.backgroundColor,
5760 backgroundImage: bodyStyle.backgroundImage
5761 }
5762 },
5763 attachmentsTypes: {
5764 json: {
5765 promptSuggestions: VARIATIONS_PROMPTS,
5766 promptPlaceholder: PROMPT_PLACEHOLDER,
5767 previewGenerator: function () {
5768 var _previewGenerator = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(json) {
5769 var screenshot;
5770 return _regenerator.default.wrap(function (_context) {
5771 while (1) switch (_context.prev = _context.next) {
5772 case 0:
5773 _context.next = 1;
5774 return (0, _screenshot.takeScreenshot)(json);
5775 case 1:
5776 screenshot = _context.sent;
5777 return _context.abrupt("return", "<img src=\"".concat(screenshot, "\" />"));
5778 case 2:
5779 case "end":
5780 return _context.stop();
5781 }
5782 }, _callee);
5783 }));
5784 function previewGenerator(_x) {
5785 return _previewGenerator.apply(this, arguments);
5786 }
5787 return previewGenerator;
5788 }()
5789 },
5790 url: {
5791 promptPlaceholder: PROMPT_PLACEHOLDER,
5792 promptSuggestions: WEB_BASED_PROMPTS
5793 }
5794 },
5795 attachments: options.attachments || [],
5796 onClose: function onClose() {
5797 var _options$onClose;
5798 previewContainer.destroy();
5799 (_options$onClose = options.onClose) === null || _options$onClose === void 0 || _options$onClose.call(options);
5800 unmount();
5801 rootElement.remove();
5802 openPanel();
5803 },
5804 onConnect: onConnect,
5805 onGenerate: function onGenerate() {
5806 var _options$onGenerate;
5807 (_options$onGenerate = options.onGenerate) === null || _options$onGenerate === void 0 || _options$onGenerate.call(options, {
5808 previewContainer: previewContainer
5809 });
5810 },
5811 onData: (/*#__PURE__*/function () {
5812 var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(template) {
5813 var screenshot;
5814 return _regenerator.default.wrap(function (_context2) {
5815 while (1) switch (_context2.prev = _context2.next) {
5816 case 0:
5817 _context2.next = 1;
5818 return (0, _screenshot.takeScreenshot)(template);
5819 case 1:
5820 screenshot = _context2.sent;
5821 return _context2.abrupt("return", {
5822 screenshot: screenshot,
5823 template: template
5824 });
5825 case 2:
5826 case "end":
5827 return _context2.stop();
5828 }
5829 }, _callee2);
5830 }));
5831 return function (_x2) {
5832 return _ref.apply(this, arguments);
5833 };
5834 }()),
5835 onSelect: function onSelect(template) {
5836 var _options$onSelect;
5837 (_options$onSelect = options.onSelect) === null || _options$onSelect === void 0 || _options$onSelect.call(options);
5838 previewContainer.setContent(template);
5839 },
5840 onInsert: options.onInsert,
5841 hasPro: elementor.helpers.hasPro()
5842 })), rootElement),
5843 unmount = _ReactUtils$render.unmount;
5844 (_options$onRenderApp = options.onRenderApp) === null || _options$onRenderApp === void 0 || _options$onRenderApp.call(options, {
5845 previewContainer: previewContainer
5846 });
5847 };
5848 var importToEditor = exports.importToEditor = function importToEditor(_ref2) {
5849 var parentContainer = _ref2.parentContainer,
5850 at = _ref2.at,
5851 template = _ref2.template,
5852 historyTitle = _ref2.historyTitle,
5853 _ref2$replace = _ref2.replace,
5854 replace = _ref2$replace === void 0 ? false : _ref2$replace;
5855 var endHistoryLog = (0, _history.startHistoryLog)({
5856 type: 'import',
5857 title: historyTitle
5858 });
5859 if (replace) {
5860 $e.run('document/elements/delete', {
5861 container: parentContainer.children.at(at)
5862 });
5863 }
5864 $e.run('document/elements/create', {
5865 container: parentContainer,
5866 model: (0, _requestsIds.generateIds)(template),
5867 options: {
5868 at: at,
5869 edit: true
5870 }
5871 });
5872 endHistoryLog();
5873 };
5874
5875 /***/ }),
5876
5877 /***/ "../modules/ai/assets/js/editor/utils/history.js":
5878 /*!*******************************************************!*\
5879 !*** ../modules/ai/assets/js/editor/utils/history.js ***!
5880 \*******************************************************/
5881 /***/ ((__unused_webpack_module, exports) => {
5882
5883 "use strict";
5884
5885
5886 Object.defineProperty(exports, "__esModule", ({
5887 value: true
5888 }));
5889 exports.startHistoryLog = startHistoryLog;
5890 exports.toggleHistory = toggleHistory;
5891 function toggleHistory(isActive) {
5892 elementor.documents.getCurrent().history.setActive(isActive);
5893 }
5894
5895 /**
5896 * @param {Object} options
5897 * @param { 'add' | 'change' | 'disable' | 'duplicate' | 'enable' | 'import' | 'move' | 'paste' | 'paste_style' | 'remove' | 'reset_settings' | 'reset_style' | 'selected' } options.type
5898 * @param { string } options.title
5899 *
5900 * @return {*}
5901 */
5902 function startHistoryLog(_ref) {
5903 var type = _ref.type,
5904 title = _ref.title;
5905 var id = $e.internal('document/history/start-log', {
5906 type: type,
5907 title: title
5908 });
5909 return function () {
5910 return $e.internal('document/history/end-log', {
5911 id: id
5912 });
5913 };
5914 }
5915
5916 /***/ }),
5917
5918 /***/ "../modules/ai/assets/js/editor/utils/preview-container.js":
5919 /*!*****************************************************************!*\
5920 !*** ../modules/ai/assets/js/editor/utils/preview-container.js ***!
5921 \*****************************************************************/
5922 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5923
5924 "use strict";
5925
5926
5927 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
5928 Object.defineProperty(exports, "__esModule", ({
5929 value: true
5930 }));
5931 exports.createPreviewContainer = createPreviewContainer;
5932 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
5933 var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"));
5934 var _history = __webpack_require__(/*! ./history */ "../modules/ai/assets/js/editor/utils/history.js");
5935 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; }
5936 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; }
5937 /**
5938 * @typedef {import('elementor/assets/dev/js/editor/container/container')} Container
5939 */
5940
5941 var PREFIX = 'e-ai-preview-container';
5942 var CLASS_HIDDEN = PREFIX + '--hidden';
5943 var CLASS_IDLE = PREFIX + '--idle';
5944
5945 /**
5946 * @param {Container} parentContainer
5947 * @param {{}} containerOptions
5948 * @return {{init, setContent, reset, destroy}}
5949 */
5950
5951 function createPreviewContainer(parentContainer) {
5952 var containerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
5953 var createdContainers = new Map();
5954 var idleContainer = createIdleContainer(parentContainer, containerOptions);
5955 function init() {
5956 showContainer(idleContainer);
5957 }
5958 function getAllContainers() {
5959 return [].concat((0, _toConsumableArray2.default)(createdContainers.values()), [idleContainer]);
5960 }
5961 function reset() {
5962 deleteContainers((0, _toConsumableArray2.default)(createdContainers.values()));
5963 createdContainers.clear();
5964 showContainer(idleContainer);
5965 }
5966 function setContent(template) {
5967 if (!template) {
5968 return;
5969 }
5970 hideContainers(getAllContainers());
5971 if (!createdContainers.has(template)) {
5972 var newContainer = createContainer(parentContainer, template, containerOptions);
5973 createdContainers.set(template, newContainer);
5974 }
5975 showContainer(createdContainers.get(template));
5976 }
5977 function destroy() {
5978 deleteContainers(getAllContainers());
5979 createdContainers.clear();
5980 }
5981 return {
5982 init: init,
5983 reset: reset,
5984 setContent: setContent,
5985 destroy: destroy
5986 };
5987 }
5988
5989 /**
5990 * @param {Container} parentContainer
5991 * @param {{}} model
5992 * @param {{}} options
5993 * @return {*}
5994 */
5995 function createContainer(parentContainer, model) {
5996 var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
5997 (0, _history.toggleHistory)(false);
5998 var container = $e.run('document/elements/create', {
5999 container: parentContainer,
6000 model: _objectSpread(_objectSpread({}, model), {}, {
6001 id: "".concat(PREFIX, "-").concat(elementorCommon.helpers.getUniqueId().toString())
6002 }),
6003 options: _objectSpread(_objectSpread({}, options), {}, {
6004 edit: false
6005 })
6006 });
6007 (0, _history.toggleHistory)(true);
6008 container.view.$el.addClass(CLASS_HIDDEN);
6009 return container;
6010 }
6011
6012 /**
6013 * @param {Container} parentContainer
6014 * @param {{}} containerOptions
6015 * @return {*}
6016 */
6017 function createIdleContainer(parentContainer) {
6018 var containerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
6019 // Create an empty container that'll be used of UI purposes.
6020 var container = createContainer(parentContainer, {
6021 elType: 'container'
6022 }, containerOptions);
6023 container.view.$el.addClass(CLASS_IDLE);
6024 return container;
6025 }
6026 function hideContainers(containers) {
6027 containers.forEach(function (container) {
6028 container.view.$el.addClass(CLASS_HIDDEN);
6029 });
6030 }
6031 function showContainer(container) {
6032 container.view.$el.removeClass(CLASS_HIDDEN);
6033
6034 // Delay the scroll to avoid UI jumps when toggling between containers.
6035 setTimeout(function () {
6036 container.view.$el[0].scrollIntoView({
6037 behavior: 'smooth',
6038 block: 'start'
6039 });
6040 });
6041 }
6042 function deleteContainers(containers) {
6043 (0, _history.toggleHistory)(false);
6044 $e.run('document/elements/delete', {
6045 containers: containers
6046 });
6047 (0, _history.toggleHistory)(true);
6048 }
6049
6050 /***/ }),
6051
6052 /***/ "../modules/ai/assets/js/editor/utils/screenshot.js":
6053 /*!**********************************************************!*\
6054 !*** ../modules/ai/assets/js/editor/utils/screenshot.js ***!
6055 \**********************************************************/
6056 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
6057
6058 "use strict";
6059
6060
6061 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
6062 Object.defineProperty(exports, "__esModule", ({
6063 value: true
6064 }));
6065 exports.takeScreenshot = void 0;
6066 var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js"));
6067 var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"));
6068 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
6069 var _htmlToImage = __webpack_require__(/*! html-to-image */ "../node_modules/html-to-image/es/index.js");
6070 var _history = __webpack_require__(/*! ./history */ "../modules/ai/assets/js/editor/utils/history.js");
6071 var _requestsIds = __webpack_require__(/*! ../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js");
6072 var takeScreenshot = exports.takeScreenshot = /*#__PURE__*/function () {
6073 var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(template) {
6074 var hiddenWrapper, container, screenshot, _t;
6075 return _regenerator.default.wrap(function (_context) {
6076 while (1) switch (_context.prev = _context.next) {
6077 case 0:
6078 if (template) {
6079 _context.next = 1;
6080 break;
6081 }
6082 return _context.abrupt("return", '');
6083 case 1:
6084 // Disable history so the Editor won't show our hidden container as a user action.
6085 (0, _history.toggleHistory)(false);
6086 hiddenWrapper = createHiddenWrapper();
6087 container = createContainer(template);
6088 wrapContainer(container, hiddenWrapper);
6089 elementor.getPreviewView().$childViewContainer[0].appendChild(hiddenWrapper);
6090
6091 // Wait for the container to render.
6092 _context.next = 2;
6093 return waitForContainer(container.id);
6094 case 2:
6095 if (!template.elements.length) {
6096 _context.next = 3;
6097 break;
6098 }
6099 _context.next = 3;
6100 return Promise.all(template.elements.map(function (child) {
6101 return waitForContainer(child.id);
6102 }));
6103 case 3:
6104 _context.prev = 3;
6105 _context.next = 4;
6106 return screenshotNode(container.view.$el[0]);
6107 case 4:
6108 screenshot = _context.sent;
6109 _context.next = 6;
6110 break;
6111 case 5:
6112 _context.prev = 5;
6113 _t = _context["catch"](3);
6114 // Return an empty image url if the screenshot failed.
6115 screenshot = '';
6116 case 6:
6117 deleteContainer(container);
6118 hiddenWrapper.remove();
6119 (0, _history.toggleHistory)(true);
6120 return _context.abrupt("return", screenshot);
6121 case 7:
6122 case "end":
6123 return _context.stop();
6124 }
6125 }, _callee, null, [[3, 5]]);
6126 }));
6127 return function takeScreenshot(_x) {
6128 return _ref.apply(this, arguments);
6129 };
6130 }();
6131 function screenshotNode(node) {
6132 return toWebp(node, {
6133 quality: 0.01,
6134 // Transparent 1x1 pixel.
6135 imagePlaceholder: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='
6136 });
6137 }
6138 function toWebp(_x2) {
6139 return _toWebp.apply(this, arguments);
6140 }
6141 function _toWebp() {
6142 _toWebp = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(node) {
6143 var _options$quality;
6144 var options,
6145 canvas,
6146 _args3 = arguments;
6147 return _regenerator.default.wrap(function (_context3) {
6148 while (1) switch (_context3.prev = _context3.next) {
6149 case 0:
6150 options = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
6151 _context3.next = 1;
6152 return (0, _htmlToImage.toCanvas)(node, options);
6153 case 1:
6154 canvas = _context3.sent;
6155 return _context3.abrupt("return", canvas.toDataURL('image/webp', (_options$quality = options.quality) !== null && _options$quality !== void 0 ? _options$quality : 1));
6156 case 2:
6157 case "end":
6158 return _context3.stop();
6159 }
6160 }, _callee3);
6161 }));
6162 return _toWebp.apply(this, arguments);
6163 }
6164 function createHiddenWrapper() {
6165 var wrapper = document.createElement('div');
6166 wrapper.style.position = 'fixed';
6167 wrapper.style.opacity = '0';
6168 wrapper.style.inset = '0';
6169 return wrapper;
6170 }
6171 function createContainer(template) {
6172 var model = (0, _requestsIds.generateIds)(template);
6173
6174 // Set a custom ID, so it can be used later on in the backend.
6175 model.id = "e-ai-screenshot-container-".concat(model.id);
6176 return $e.run('document/elements/create', {
6177 container: elementor.getPreviewContainer(),
6178 model: model,
6179 options: {
6180 edit: false
6181 }
6182 });
6183 }
6184 function deleteContainer(container) {
6185 return $e.run('document/elements/delete', {
6186 container: container
6187 });
6188 }
6189 function waitForContainer(id) {
6190 var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5000;
6191 var timeoutPromise = sleep(timeout);
6192 var waitPromise = new Promise(function (resolve) {
6193 elementorFrontend.hooks.addAction('frontend/element_ready/global', /*#__PURE__*/function () {
6194 var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2($element) {
6195 var images;
6196 return _regenerator.default.wrap(function (_context2) {
6197 while (1) switch (_context2.prev = _context2.next) {
6198 case 0:
6199 if (!($element.data('id') === id)) {
6200 _context2.next = 2;
6201 break;
6202 }
6203 images = (0, _toConsumableArray2.default)($element[0].querySelectorAll('img')); // Wait for all images to load.
6204 _context2.next = 1;
6205 return Promise.all(images.map(waitForImage));
6206 case 1:
6207 resolve();
6208 case 2:
6209 case "end":
6210 return _context2.stop();
6211 }
6212 }, _callee2);
6213 }));
6214 return function (_x3) {
6215 return _ref2.apply(this, arguments);
6216 };
6217 }());
6218 });
6219 return Promise.any([timeoutPromise, waitPromise]);
6220 }
6221 function waitForImage(image) {
6222 if (image.complete) {
6223 return Promise.resolve();
6224 }
6225 return new Promise(function (resolve) {
6226 image.addEventListener('load', resolve);
6227 image.addEventListener('error', function () {
6228 // Remove the image to make sure it won't break the screenshot.
6229 image.remove();
6230 resolve();
6231 });
6232 });
6233 }
6234 function sleep(ms) {
6235 return new Promise(function (resolve) {
6236 return setTimeout(resolve, ms);
6237 });
6238 }
6239 function wrapContainer(container, wrapper) {
6240 var el = container.view.$el[0];
6241 el.parentNode.insertBefore(wrapper, el);
6242 wrapper.appendChild(el);
6243 }
6244
6245 /***/ }),
6246
6247 /***/ "../node_modules/@babel/runtime/helpers/OverloadYield.js":
6248 /*!***************************************************************!*\
6249 !*** ../node_modules/@babel/runtime/helpers/OverloadYield.js ***!
6250 \***************************************************************/
6251 /***/ ((module) => {
6252
6253 function _OverloadYield(e, d) {
6254 this.v = e, this.k = d;
6255 }
6256 module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports;
6257
6258 /***/ }),
6259
6260 /***/ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js":
6261 /*!******************************************************************!*\
6262 !*** ../node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***!
6263 \******************************************************************/
6264 /***/ ((module) => {
6265
6266 function _arrayLikeToArray(r, a) {
6267 (null == a || a > r.length) && (a = r.length);
6268 for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
6269 return n;
6270 }
6271 module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
6272
6273 /***/ }),
6274
6275 /***/ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js":
6276 /*!****************************************************************!*\
6277 !*** ../node_modules/@babel/runtime/helpers/arrayWithHoles.js ***!
6278 \****************************************************************/
6279 /***/ ((module) => {
6280
6281 function _arrayWithHoles(r) {
6282 if (Array.isArray(r)) return r;
6283 }
6284 module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
6285
6286 /***/ }),
6287
6288 /***/ "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js":
6289 /*!*******************************************************************!*\
6290 !*** ../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***!
6291 \*******************************************************************/
6292 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6293
6294 var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js");
6295 function _arrayWithoutHoles(r) {
6296 if (Array.isArray(r)) return arrayLikeToArray(r);
6297 }
6298 module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
6299
6300 /***/ }),
6301
6302 /***/ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js":
6303 /*!***********************************************************************!*\
6304 !*** ../node_modules/@babel/runtime/helpers/assertThisInitialized.js ***!
6305 \***********************************************************************/
6306 /***/ ((module) => {
6307
6308 function _assertThisInitialized(e) {
6309 if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
6310 return e;
6311 }
6312 module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports;
6313
6314 /***/ }),
6315
6316 /***/ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js":
6317 /*!******************************************************************!*\
6318 !*** ../node_modules/@babel/runtime/helpers/asyncToGenerator.js ***!
6319 \******************************************************************/
6320 /***/ ((module) => {
6321
6322 function asyncGeneratorStep(n, t, e, r, o, a, c) {
6323 try {
6324 var i = n[a](c),
6325 u = i.value;
6326 } catch (n) {
6327 return void e(n);
6328 }
6329 i.done ? t(u) : Promise.resolve(u).then(r, o);
6330 }
6331 function _asyncToGenerator(n) {
6332 return function () {
6333 var t = this,
6334 e = arguments;
6335 return new Promise(function (r, o) {
6336 var a = n.apply(t, e);
6337 function _next(n) {
6338 asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
6339 }
6340 function _throw(n) {
6341 asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
6342 }
6343 _next(void 0);
6344 });
6345 };
6346 }
6347 module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
6348
6349 /***/ }),
6350
6351 /***/ "../node_modules/@babel/runtime/helpers/classCallCheck.js":
6352 /*!****************************************************************!*\
6353 !*** ../node_modules/@babel/runtime/helpers/classCallCheck.js ***!
6354 \****************************************************************/
6355 /***/ ((module) => {
6356
6357 function _classCallCheck(a, n) {
6358 if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
6359 }
6360 module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;
6361
6362 /***/ }),
6363
6364 /***/ "../node_modules/@babel/runtime/helpers/createClass.js":
6365 /*!*************************************************************!*\
6366 !*** ../node_modules/@babel/runtime/helpers/createClass.js ***!
6367 \*************************************************************/
6368 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6369
6370 var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js");
6371 function _defineProperties(e, r) {
6372 for (var t = 0; t < r.length; t++) {
6373 var o = r[t];
6374 o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);
6375 }
6376 }
6377 function _createClass(e, r, t) {
6378 return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
6379 writable: !1
6380 }), e;
6381 }
6382 module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports;
6383
6384 /***/ }),
6385
6386 /***/ "../node_modules/@babel/runtime/helpers/defineProperty.js":
6387 /*!****************************************************************!*\
6388 !*** ../node_modules/@babel/runtime/helpers/defineProperty.js ***!
6389 \****************************************************************/
6390 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6391
6392 var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js");
6393 function _defineProperty(e, r, t) {
6394 return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
6395 value: t,
6396 enumerable: !0,
6397 configurable: !0,
6398 writable: !0
6399 }) : e[r] = t, e;
6400 }
6401 module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
6402
6403 /***/ }),
6404
6405 /***/ "../node_modules/@babel/runtime/helpers/extends.js":
6406 /*!*********************************************************!*\
6407 !*** ../node_modules/@babel/runtime/helpers/extends.js ***!
6408 \*********************************************************/
6409 /***/ ((module) => {
6410
6411 function _extends() {
6412 return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {
6413 for (var e = 1; e < arguments.length; e++) {
6414 var t = arguments[e];
6415 for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
6416 }
6417 return n;
6418 }, module.exports.__esModule = true, module.exports["default"] = module.exports, _extends.apply(null, arguments);
6419 }
6420 module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports;
6421
6422 /***/ }),
6423
6424 /***/ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js":
6425 /*!****************************************************************!*\
6426 !*** ../node_modules/@babel/runtime/helpers/getPrototypeOf.js ***!
6427 \****************************************************************/
6428 /***/ ((module) => {
6429
6430 function _getPrototypeOf(t) {
6431 return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
6432 return t.__proto__ || Object.getPrototypeOf(t);
6433 }, module.exports.__esModule = true, module.exports["default"] = module.exports, _getPrototypeOf(t);
6434 }
6435 module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
6436
6437 /***/ }),
6438
6439 /***/ "../node_modules/@babel/runtime/helpers/inherits.js":
6440 /*!**********************************************************!*\
6441 !*** ../node_modules/@babel/runtime/helpers/inherits.js ***!
6442 \**********************************************************/
6443 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6444
6445 var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js");
6446 function _inherits(t, e) {
6447 if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
6448 t.prototype = Object.create(e && e.prototype, {
6449 constructor: {
6450 value: t,
6451 writable: !0,
6452 configurable: !0
6453 }
6454 }), Object.defineProperty(t, "prototype", {
6455 writable: !1
6456 }), e && setPrototypeOf(t, e);
6457 }
6458 module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports;
6459
6460 /***/ }),
6461
6462 /***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js":
6463 /*!***********************************************************************!*\
6464 !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
6465 \***********************************************************************/
6466 /***/ ((module) => {
6467
6468 function _interopRequireDefault(e) {
6469 return e && e.__esModule ? e : {
6470 "default": e
6471 };
6472 }
6473 module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
6474
6475 /***/ }),
6476
6477 /***/ "../node_modules/@babel/runtime/helpers/iterableToArray.js":
6478 /*!*****************************************************************!*\
6479 !*** ../node_modules/@babel/runtime/helpers/iterableToArray.js ***!
6480 \*****************************************************************/
6481 /***/ ((module) => {
6482
6483 function _iterableToArray(r) {
6484 if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
6485 }
6486 module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
6487
6488 /***/ }),
6489
6490 /***/ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js":
6491 /*!**********************************************************************!*\
6492 !*** ../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***!
6493 \**********************************************************************/
6494 /***/ ((module) => {
6495
6496 function _iterableToArrayLimit(r, l) {
6497 var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
6498 if (null != t) {
6499 var e,
6500 n,
6501 i,
6502 u,
6503 a = [],
6504 f = !0,
6505 o = !1;
6506 try {
6507 if (i = (t = t.call(r)).next, 0 === l) {
6508 if (Object(t) !== t) return;
6509 f = !1;
6510 } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
6511 } catch (r) {
6512 o = !0, n = r;
6513 } finally {
6514 try {
6515 if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
6516 } finally {
6517 if (o) throw n;
6518 }
6519 }
6520 return a;
6521 }
6522 }
6523 module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports;
6524
6525 /***/ }),
6526
6527 /***/ "../node_modules/@babel/runtime/helpers/nonIterableRest.js":
6528 /*!*****************************************************************!*\
6529 !*** ../node_modules/@babel/runtime/helpers/nonIterableRest.js ***!
6530 \*****************************************************************/
6531 /***/ ((module) => {
6532
6533 function _nonIterableRest() {
6534 throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
6535 }
6536 module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports;
6537
6538 /***/ }),
6539
6540 /***/ "../node_modules/@babel/runtime/helpers/nonIterableSpread.js":
6541 /*!*******************************************************************!*\
6542 !*** ../node_modules/@babel/runtime/helpers/nonIterableSpread.js ***!
6543 \*******************************************************************/
6544 /***/ ((module) => {
6545
6546 function _nonIterableSpread() {
6547 throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
6548 }
6549 module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports;
6550
6551 /***/ }),
6552
6553 /***/ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js":
6554 /*!*************************************************************************!*\
6555 !*** ../node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***!
6556 \*************************************************************************/
6557 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6558
6559 var objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose.js */ "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js");
6560 function _objectWithoutProperties(e, t) {
6561 if (null == e) return {};
6562 var o,
6563 r,
6564 i = objectWithoutPropertiesLoose(e, t);
6565 if (Object.getOwnPropertySymbols) {
6566 var n = Object.getOwnPropertySymbols(e);
6567 for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
6568 }
6569 return i;
6570 }
6571 module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports;
6572
6573 /***/ }),
6574
6575 /***/ "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js":
6576 /*!******************************************************************************!*\
6577 !*** ../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***!
6578 \******************************************************************************/
6579 /***/ ((module) => {
6580
6581 function _objectWithoutPropertiesLoose(r, e) {
6582 if (null == r) return {};
6583 var t = {};
6584 for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
6585 if (-1 !== e.indexOf(n)) continue;
6586 t[n] = r[n];
6587 }
6588 return t;
6589 }
6590 module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
6591
6592 /***/ }),
6593
6594 /***/ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js":
6595 /*!***************************************************************************!*\
6596 !*** ../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***!
6597 \***************************************************************************/
6598 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6599
6600 var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]);
6601 var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js");
6602 function _possibleConstructorReturn(t, e) {
6603 if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;
6604 if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
6605 return assertThisInitialized(t);
6606 }
6607 module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports;
6608
6609 /***/ }),
6610
6611 /***/ "../node_modules/@babel/runtime/helpers/regenerator.js":
6612 /*!*************************************************************!*\
6613 !*** ../node_modules/@babel/runtime/helpers/regenerator.js ***!
6614 \*************************************************************/
6615 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6616
6617 var regeneratorDefine = __webpack_require__(/*! ./regeneratorDefine.js */ "../node_modules/@babel/runtime/helpers/regeneratorDefine.js");
6618 function _regenerator() {
6619 /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
6620 var e,
6621 t,
6622 r = "function" == typeof Symbol ? Symbol : {},
6623 n = r.iterator || "@@iterator",
6624 o = r.toStringTag || "@@toStringTag";
6625 function i(r, n, o, i) {
6626 var c = n && n.prototype instanceof Generator ? n : Generator,
6627 u = Object.create(c.prototype);
6628 return regeneratorDefine(u, "_invoke", function (r, n, o) {
6629 var i,
6630 c,
6631 u,
6632 f = 0,
6633 p = o || [],
6634 y = !1,
6635 G = {
6636 p: 0,
6637 n: 0,
6638 v: e,
6639 a: d,
6640 f: d.bind(e, 4),
6641 d: function d(t, r) {
6642 return i = t, c = 0, u = e, G.n = r, a;
6643 }
6644 };
6645 function d(r, n) {
6646 for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
6647 var o,
6648 i = p[t],
6649 d = G.p,
6650 l = i[2];
6651 r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
6652 }
6653 if (o || r > 1) return a;
6654 throw y = !0, n;
6655 }
6656 return function (o, p, l) {
6657 if (f > 1) throw TypeError("Generator is already running");
6658 for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
6659 i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
6660 try {
6661 if (f = 2, i) {
6662 if (c || (o = "next"), t = i[o]) {
6663 if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
6664 if (!t.done) return t;
6665 u = t.value, c < 2 && (c = 0);
6666 } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
6667 i = e;
6668 } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
6669 } catch (t) {
6670 i = e, c = 1, u = t;
6671 } finally {
6672 f = 1;
6673 }
6674 }
6675 return {
6676 value: t,
6677 done: y
6678 };
6679 };
6680 }(r, o, i), !0), u;
6681 }
6682 var a = {};
6683 function Generator() {}
6684 function GeneratorFunction() {}
6685 function GeneratorFunctionPrototype() {}
6686 t = Object.getPrototypeOf;
6687 var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () {
6688 return this;
6689 }), t),
6690 u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
6691 function f(e) {
6692 return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
6693 }
6694 return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), regeneratorDefine(u), regeneratorDefine(u, o, "Generator"), regeneratorDefine(u, n, function () {
6695 return this;
6696 }), regeneratorDefine(u, "toString", function () {
6697 return "[object Generator]";
6698 }), (module.exports = _regenerator = function _regenerator() {
6699 return {
6700 w: i,
6701 m: f
6702 };
6703 }, module.exports.__esModule = true, module.exports["default"] = module.exports)();
6704 }
6705 module.exports = _regenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
6706
6707 /***/ }),
6708
6709 /***/ "../node_modules/@babel/runtime/helpers/regeneratorAsync.js":
6710 /*!******************************************************************!*\
6711 !*** ../node_modules/@babel/runtime/helpers/regeneratorAsync.js ***!
6712 \******************************************************************/
6713 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6714
6715 var regeneratorAsyncGen = __webpack_require__(/*! ./regeneratorAsyncGen.js */ "../node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js");
6716 function _regeneratorAsync(n, e, r, t, o) {
6717 var a = regeneratorAsyncGen(n, e, r, t, o);
6718 return a.next().then(function (n) {
6719 return n.done ? n.value : a.next();
6720 });
6721 }
6722 module.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports["default"] = module.exports;
6723
6724 /***/ }),
6725
6726 /***/ "../node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js":
6727 /*!*********************************************************************!*\
6728 !*** ../node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js ***!
6729 \*********************************************************************/
6730 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6731
6732 var regenerator = __webpack_require__(/*! ./regenerator.js */ "../node_modules/@babel/runtime/helpers/regenerator.js");
6733 var regeneratorAsyncIterator = __webpack_require__(/*! ./regeneratorAsyncIterator.js */ "../node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js");
6734 function _regeneratorAsyncGen(r, e, t, o, n) {
6735 return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise);
6736 }
6737 module.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports["default"] = module.exports;
6738
6739 /***/ }),
6740
6741 /***/ "../node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js":
6742 /*!**************************************************************************!*\
6743 !*** ../node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js ***!
6744 \**************************************************************************/
6745 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6746
6747 var OverloadYield = __webpack_require__(/*! ./OverloadYield.js */ "../node_modules/@babel/runtime/helpers/OverloadYield.js");
6748 var regeneratorDefine = __webpack_require__(/*! ./regeneratorDefine.js */ "../node_modules/@babel/runtime/helpers/regeneratorDefine.js");
6749 function AsyncIterator(t, e) {
6750 function n(r, o, i, f) {
6751 try {
6752 var c = t[r](o),
6753 u = c.value;
6754 return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) {
6755 n("next", t, i, f);
6756 }, function (t) {
6757 n("throw", t, i, f);
6758 }) : e.resolve(u).then(function (t) {
6759 c.value = t, i(c);
6760 }, function (t) {
6761 return n("throw", t, i, f);
6762 });
6763 } catch (t) {
6764 f(t);
6765 }
6766 }
6767 var r;
6768 this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () {
6769 return this;
6770 })), regeneratorDefine(this, "_invoke", function (t, o, i) {
6771 function f() {
6772 return new e(function (e, r) {
6773 n(t, i, e, r);
6774 });
6775 }
6776 return r = r ? r.then(f, f) : f();
6777 }, !0);
6778 }
6779 module.exports = AsyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports;
6780
6781 /***/ }),
6782
6783 /***/ "../node_modules/@babel/runtime/helpers/regeneratorDefine.js":
6784 /*!*******************************************************************!*\
6785 !*** ../node_modules/@babel/runtime/helpers/regeneratorDefine.js ***!
6786 \*******************************************************************/
6787 /***/ ((module) => {
6788
6789 function _regeneratorDefine(e, r, n, t) {
6790 var i = Object.defineProperty;
6791 try {
6792 i({}, "", {});
6793 } catch (e) {
6794 i = 0;
6795 }
6796 module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) {
6797 function o(r, n) {
6798 _regeneratorDefine(e, r, function (e) {
6799 return this._invoke(r, n, e);
6800 });
6801 }
6802 r ? i ? i(e, r, {
6803 value: n,
6804 enumerable: !t,
6805 configurable: !t,
6806 writable: !t
6807 }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
6808 }, module.exports.__esModule = true, module.exports["default"] = module.exports, _regeneratorDefine(e, r, n, t);
6809 }
6810 module.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports["default"] = module.exports;
6811
6812 /***/ }),
6813
6814 /***/ "../node_modules/@babel/runtime/helpers/regeneratorKeys.js":
6815 /*!*****************************************************************!*\
6816 !*** ../node_modules/@babel/runtime/helpers/regeneratorKeys.js ***!
6817 \*****************************************************************/
6818 /***/ ((module) => {
6819
6820 function _regeneratorKeys(e) {
6821 var n = Object(e),
6822 r = [];
6823 for (var t in n) r.unshift(t);
6824 return function e() {
6825 for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e;
6826 return e.done = !0, e;
6827 };
6828 }
6829 module.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports["default"] = module.exports;
6830
6831 /***/ }),
6832
6833 /***/ "../node_modules/@babel/runtime/helpers/regeneratorRuntime.js":
6834 /*!********************************************************************!*\
6835 !*** ../node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***!
6836 \********************************************************************/
6837 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6838
6839 var OverloadYield = __webpack_require__(/*! ./OverloadYield.js */ "../node_modules/@babel/runtime/helpers/OverloadYield.js");
6840 var regenerator = __webpack_require__(/*! ./regenerator.js */ "../node_modules/@babel/runtime/helpers/regenerator.js");
6841 var regeneratorAsync = __webpack_require__(/*! ./regeneratorAsync.js */ "../node_modules/@babel/runtime/helpers/regeneratorAsync.js");
6842 var regeneratorAsyncGen = __webpack_require__(/*! ./regeneratorAsyncGen.js */ "../node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js");
6843 var regeneratorAsyncIterator = __webpack_require__(/*! ./regeneratorAsyncIterator.js */ "../node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js");
6844 var regeneratorKeys = __webpack_require__(/*! ./regeneratorKeys.js */ "../node_modules/@babel/runtime/helpers/regeneratorKeys.js");
6845 var regeneratorValues = __webpack_require__(/*! ./regeneratorValues.js */ "../node_modules/@babel/runtime/helpers/regeneratorValues.js");
6846 function _regeneratorRuntime() {
6847 "use strict";
6848
6849 var r = regenerator(),
6850 e = r.m(_regeneratorRuntime),
6851 t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;
6852 function n(r) {
6853 var e = "function" == typeof r && r.constructor;
6854 return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name));
6855 }
6856 var o = {
6857 "throw": 1,
6858 "return": 2,
6859 "break": 3,
6860 "continue": 3
6861 };
6862 function a(r) {
6863 var e, t;
6864 return function (n) {
6865 e || (e = {
6866 stop: function stop() {
6867 return t(n.a, 2);
6868 },
6869 "catch": function _catch() {
6870 return n.v;
6871 },
6872 abrupt: function abrupt(r, e) {
6873 return t(n.a, o[r], e);
6874 },
6875 delegateYield: function delegateYield(r, o, a) {
6876 return e.resultName = o, t(n.d, regeneratorValues(r), a);
6877 },
6878 finish: function finish(r) {
6879 return t(n.f, r);
6880 }
6881 }, t = function t(r, _t, o) {
6882 n.p = e.prev, n.n = e.next;
6883 try {
6884 return r(_t, o);
6885 } finally {
6886 e.next = n.n;
6887 }
6888 }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;
6889 try {
6890 return r.call(this, e);
6891 } finally {
6892 n.p = e.prev, n.n = e.next;
6893 }
6894 };
6895 }
6896 return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
6897 return {
6898 wrap: function wrap(e, t, n, o) {
6899 return r.w(a(e), t, n, o && o.reverse());
6900 },
6901 isGeneratorFunction: n,
6902 mark: r.m,
6903 awrap: function awrap(r, e) {
6904 return new OverloadYield(r, e);
6905 },
6906 AsyncIterator: regeneratorAsyncIterator,
6907 async: function async(r, e, t, o, u) {
6908 return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u);
6909 },
6910 keys: regeneratorKeys,
6911 values: regeneratorValues
6912 };
6913 }, module.exports.__esModule = true, module.exports["default"] = module.exports)();
6914 }
6915 module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
6916
6917 /***/ }),
6918
6919 /***/ "../node_modules/@babel/runtime/helpers/regeneratorValues.js":
6920 /*!*******************************************************************!*\
6921 !*** ../node_modules/@babel/runtime/helpers/regeneratorValues.js ***!
6922 \*******************************************************************/
6923 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6924
6925 var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]);
6926 function _regeneratorValues(e) {
6927 if (null != e) {
6928 var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"],
6929 r = 0;
6930 if (t) return t.call(e);
6931 if ("function" == typeof e.next) return e;
6932 if (!isNaN(e.length)) return {
6933 next: function next() {
6934 return e && r >= e.length && (e = void 0), {
6935 value: e && e[r++],
6936 done: !e
6937 };
6938 }
6939 };
6940 }
6941 throw new TypeError(_typeof(e) + " is not iterable");
6942 }
6943 module.exports = _regeneratorValues, module.exports.__esModule = true, module.exports["default"] = module.exports;
6944
6945 /***/ }),
6946
6947 /***/ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js":
6948 /*!****************************************************************!*\
6949 !*** ../node_modules/@babel/runtime/helpers/setPrototypeOf.js ***!
6950 \****************************************************************/
6951 /***/ ((module) => {
6952
6953 function _setPrototypeOf(t, e) {
6954 return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
6955 return t.__proto__ = e, t;
6956 }, module.exports.__esModule = true, module.exports["default"] = module.exports, _setPrototypeOf(t, e);
6957 }
6958 module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
6959
6960 /***/ }),
6961
6962 /***/ "../node_modules/@babel/runtime/helpers/slicedToArray.js":
6963 /*!***************************************************************!*\
6964 !*** ../node_modules/@babel/runtime/helpers/slicedToArray.js ***!
6965 \***************************************************************/
6966 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6967
6968 var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js");
6969 var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js");
6970 var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js");
6971 var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime/helpers/nonIterableRest.js");
6972 function _slicedToArray(r, e) {
6973 return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();
6974 }
6975 module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
6976
6977 /***/ }),
6978
6979 /***/ "../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js":
6980 /*!***********************************************************************!*\
6981 !*** ../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js ***!
6982 \***********************************************************************/
6983 /***/ ((module) => {
6984
6985 function _taggedTemplateLiteral(e, t) {
6986 return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {
6987 raw: {
6988 value: Object.freeze(t)
6989 }
6990 }));
6991 }
6992 module.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports["default"] = module.exports;
6993
6994 /***/ }),
6995
6996 /***/ "../node_modules/@babel/runtime/helpers/toConsumableArray.js":
6997 /*!*******************************************************************!*\
6998 !*** ../node_modules/@babel/runtime/helpers/toConsumableArray.js ***!
6999 \*******************************************************************/
7000 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
7001
7002 var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js");
7003 var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ "../node_modules/@babel/runtime/helpers/iterableToArray.js");
7004 var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js");
7005 var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ "../node_modules/@babel/runtime/helpers/nonIterableSpread.js");
7006 function _toConsumableArray(r) {
7007 return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();
7008 }
7009 module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
7010
7011 /***/ }),
7012
7013 /***/ "../node_modules/@babel/runtime/helpers/toPrimitive.js":
7014 /*!*************************************************************!*\
7015 !*** ../node_modules/@babel/runtime/helpers/toPrimitive.js ***!
7016 \*************************************************************/
7017 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
7018
7019 var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]);
7020 function toPrimitive(t, r) {
7021 if ("object" != _typeof(t) || !t) return t;
7022 var e = t[Symbol.toPrimitive];
7023 if (void 0 !== e) {
7024 var i = e.call(t, r || "default");
7025 if ("object" != _typeof(i)) return i;
7026 throw new TypeError("@@toPrimitive must return a primitive value.");
7027 }
7028 return ("string" === r ? String : Number)(t);
7029 }
7030 module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
7031
7032 /***/ }),
7033
7034 /***/ "../node_modules/@babel/runtime/helpers/toPropertyKey.js":
7035 /*!***************************************************************!*\
7036 !*** ../node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
7037 \***************************************************************/
7038 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
7039
7040 var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]);
7041 var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/toPrimitive.js");
7042 function toPropertyKey(t) {
7043 var i = toPrimitive(t, "string");
7044 return "symbol" == _typeof(i) ? i : i + "";
7045 }
7046 module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
7047
7048 /***/ }),
7049
7050 /***/ "../node_modules/@babel/runtime/helpers/typeof.js":
7051 /*!********************************************************!*\
7052 !*** ../node_modules/@babel/runtime/helpers/typeof.js ***!
7053 \********************************************************/
7054 /***/ ((module) => {
7055
7056 function _typeof(o) {
7057 "@babel/helpers - typeof";
7058
7059 return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
7060 return typeof o;
7061 } : function (o) {
7062 return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
7063 }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
7064 }
7065 module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
7066
7067 /***/ }),
7068
7069 /***/ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js":
7070 /*!****************************************************************************!*\
7071 !*** ../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!
7072 \****************************************************************************/
7073 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
7074
7075 var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js");
7076 function _unsupportedIterableToArray(r, a) {
7077 if (r) {
7078 if ("string" == typeof r) return arrayLikeToArray(r, a);
7079 var t = {}.toString.call(r).slice(8, -1);
7080 return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;
7081 }
7082 }
7083 module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
7084
7085 /***/ }),
7086
7087 /***/ "../node_modules/@babel/runtime/regenerator/index.js":
7088 /*!***********************************************************!*\
7089 !*** ../node_modules/@babel/runtime/regenerator/index.js ***!
7090 \***********************************************************/
7091 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
7092
7093 // TODO(Babel 8): Remove this file.
7094
7095 var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ "../node_modules/@babel/runtime/helpers/regeneratorRuntime.js")();
7096 module.exports = runtime;
7097
7098 // Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
7099 try {
7100 regeneratorRuntime = runtime;
7101 } catch (accidentalStrictMode) {
7102 if (typeof globalThis === "object") {
7103 globalThis.regeneratorRuntime = runtime;
7104 } else {
7105 Function("r", "regeneratorRuntime = r")(runtime);
7106 }
7107 }
7108
7109
7110 /***/ }),
7111
7112 /***/ "../node_modules/html-to-image/es/apply-style.js":
7113 /*!*******************************************************!*\
7114 !*** ../node_modules/html-to-image/es/apply-style.js ***!
7115 \*******************************************************/
7116 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7117
7118 "use strict";
7119 __webpack_require__.r(__webpack_exports__);
7120 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7121 /* harmony export */ applyStyle: () => (/* binding */ applyStyle)
7122 /* harmony export */ });
7123 function applyStyle(node, options) {
7124 const { style } = node;
7125 if (options.backgroundColor) {
7126 style.backgroundColor = options.backgroundColor;
7127 }
7128 if (options.width) {
7129 style.width = `${options.width}px`;
7130 }
7131 if (options.height) {
7132 style.height = `${options.height}px`;
7133 }
7134 const manual = options.style;
7135 if (manual != null) {
7136 Object.keys(manual).forEach((key) => {
7137 style[key] = manual[key];
7138 });
7139 }
7140 return node;
7141 }
7142 //# sourceMappingURL=apply-style.js.map
7143
7144 /***/ }),
7145
7146 /***/ "../node_modules/html-to-image/es/clone-node.js":
7147 /*!******************************************************!*\
7148 !*** ../node_modules/html-to-image/es/clone-node.js ***!
7149 \******************************************************/
7150 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7151
7152 "use strict";
7153 __webpack_require__.r(__webpack_exports__);
7154 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7155 /* harmony export */ cloneNode: () => (/* binding */ cloneNode)
7156 /* harmony export */ });
7157 /* harmony import */ var _clone_pseudos__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./clone-pseudos */ "../node_modules/html-to-image/es/clone-pseudos.js");
7158 /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "../node_modules/html-to-image/es/util.js");
7159 /* harmony import */ var _mimes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mimes */ "../node_modules/html-to-image/es/mimes.js");
7160 /* harmony import */ var _dataurl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dataurl */ "../node_modules/html-to-image/es/dataurl.js");
7161
7162
7163
7164
7165 async function cloneCanvasElement(canvas) {
7166 const dataURL = canvas.toDataURL();
7167 if (dataURL === 'data:,') {
7168 return canvas.cloneNode(false);
7169 }
7170 return (0,_util__WEBPACK_IMPORTED_MODULE_1__.createImage)(dataURL);
7171 }
7172 async function cloneVideoElement(video, options) {
7173 if (video.currentSrc) {
7174 const canvas = document.createElement('canvas');
7175 const ctx = canvas.getContext('2d');
7176 canvas.width = video.clientWidth;
7177 canvas.height = video.clientHeight;
7178 ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
7179 const dataURL = canvas.toDataURL();
7180 return (0,_util__WEBPACK_IMPORTED_MODULE_1__.createImage)(dataURL);
7181 }
7182 const poster = video.poster;
7183 const contentType = (0,_mimes__WEBPACK_IMPORTED_MODULE_2__.getMimeType)(poster);
7184 const dataURL = await (0,_dataurl__WEBPACK_IMPORTED_MODULE_3__.resourceToDataURL)(poster, contentType, options);
7185 return (0,_util__WEBPACK_IMPORTED_MODULE_1__.createImage)(dataURL);
7186 }
7187 async function cloneIFrameElement(iframe, options) {
7188 var _a;
7189 try {
7190 if ((_a = iframe === null || iframe === void 0 ? void 0 : iframe.contentDocument) === null || _a === void 0 ? void 0 : _a.body) {
7191 return (await cloneNode(iframe.contentDocument.body, options, true));
7192 }
7193 }
7194 catch (_b) {
7195 // Failed to clone iframe
7196 }
7197 return iframe.cloneNode(false);
7198 }
7199 async function cloneSingleNode(node, options) {
7200 if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(node, HTMLCanvasElement)) {
7201 return cloneCanvasElement(node);
7202 }
7203 if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(node, HTMLVideoElement)) {
7204 return cloneVideoElement(node, options);
7205 }
7206 if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(node, HTMLIFrameElement)) {
7207 return cloneIFrameElement(node, options);
7208 }
7209 return node.cloneNode(isSVGElement(node));
7210 }
7211 const isSlotElement = (node) => node.tagName != null && node.tagName.toUpperCase() === 'SLOT';
7212 const isSVGElement = (node) => node.tagName != null && node.tagName.toUpperCase() === 'SVG';
7213 async function cloneChildren(nativeNode, clonedNode, options) {
7214 var _a, _b;
7215 if (isSVGElement(clonedNode)) {
7216 return clonedNode;
7217 }
7218 let children = [];
7219 if (isSlotElement(nativeNode) && nativeNode.assignedNodes) {
7220 children = (0,_util__WEBPACK_IMPORTED_MODULE_1__.toArray)(nativeNode.assignedNodes());
7221 }
7222 else if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(nativeNode, HTMLIFrameElement) &&
7223 ((_a = nativeNode.contentDocument) === null || _a === void 0 ? void 0 : _a.body)) {
7224 children = (0,_util__WEBPACK_IMPORTED_MODULE_1__.toArray)(nativeNode.contentDocument.body.childNodes);
7225 }
7226 else {
7227 children = (0,_util__WEBPACK_IMPORTED_MODULE_1__.toArray)(((_b = nativeNode.shadowRoot) !== null && _b !== void 0 ? _b : nativeNode).childNodes);
7228 }
7229 if (children.length === 0 ||
7230 (0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(nativeNode, HTMLVideoElement)) {
7231 return clonedNode;
7232 }
7233 await children.reduce((deferred, child) => deferred
7234 .then(() => cloneNode(child, options))
7235 .then((clonedChild) => {
7236 if (clonedChild) {
7237 clonedNode.appendChild(clonedChild);
7238 }
7239 }), Promise.resolve());
7240 return clonedNode;
7241 }
7242 function cloneCSSStyle(nativeNode, clonedNode, options) {
7243 const targetStyle = clonedNode.style;
7244 if (!targetStyle) {
7245 return;
7246 }
7247 const sourceStyle = window.getComputedStyle(nativeNode);
7248 if (sourceStyle.cssText) {
7249 targetStyle.cssText = sourceStyle.cssText;
7250 targetStyle.transformOrigin = sourceStyle.transformOrigin;
7251 }
7252 else {
7253 (0,_util__WEBPACK_IMPORTED_MODULE_1__.getStyleProperties)(options).forEach((name) => {
7254 let value = sourceStyle.getPropertyValue(name);
7255 if (name === 'font-size' && value.endsWith('px')) {
7256 const reducedFont = Math.floor(parseFloat(value.substring(0, value.length - 2))) - 0.1;
7257 value = `${reducedFont}px`;
7258 }
7259 if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(nativeNode, HTMLIFrameElement) &&
7260 name === 'display' &&
7261 value === 'inline') {
7262 value = 'block';
7263 }
7264 if (name === 'd' && clonedNode.getAttribute('d')) {
7265 value = `path(${clonedNode.getAttribute('d')})`;
7266 }
7267 targetStyle.setProperty(name, value, sourceStyle.getPropertyPriority(name));
7268 });
7269 }
7270 }
7271 function cloneInputValue(nativeNode, clonedNode) {
7272 if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(nativeNode, HTMLTextAreaElement)) {
7273 clonedNode.innerHTML = nativeNode.value;
7274 }
7275 if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(nativeNode, HTMLInputElement)) {
7276 clonedNode.setAttribute('value', nativeNode.value);
7277 }
7278 }
7279 function cloneSelectValue(nativeNode, clonedNode) {
7280 if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(nativeNode, HTMLSelectElement)) {
7281 const clonedSelect = clonedNode;
7282 const selectedOption = Array.from(clonedSelect.children).find((child) => nativeNode.value === child.getAttribute('value'));
7283 if (selectedOption) {
7284 selectedOption.setAttribute('selected', '');
7285 }
7286 }
7287 }
7288 function decorate(nativeNode, clonedNode, options) {
7289 if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(clonedNode, Element)) {
7290 cloneCSSStyle(nativeNode, clonedNode, options);
7291 (0,_clone_pseudos__WEBPACK_IMPORTED_MODULE_0__.clonePseudoElements)(nativeNode, clonedNode, options);
7292 cloneInputValue(nativeNode, clonedNode);
7293 cloneSelectValue(nativeNode, clonedNode);
7294 }
7295 return clonedNode;
7296 }
7297 async function ensureSVGSymbols(clone, options) {
7298 const uses = clone.querySelectorAll ? clone.querySelectorAll('use') : [];
7299 if (uses.length === 0) {
7300 return clone;
7301 }
7302 const processedDefs = {};
7303 for (let i = 0; i < uses.length; i++) {
7304 const use = uses[i];
7305 const id = use.getAttribute('xlink:href');
7306 if (id) {
7307 const exist = clone.querySelector(id);
7308 const definition = document.querySelector(id);
7309 if (!exist && definition && !processedDefs[id]) {
7310 // eslint-disable-next-line no-await-in-loop
7311 processedDefs[id] = (await cloneNode(definition, options, true));
7312 }
7313 }
7314 }
7315 const nodes = Object.values(processedDefs);
7316 if (nodes.length) {
7317 const ns = 'http://www.w3.org/1999/xhtml';
7318 const svg = document.createElementNS(ns, 'svg');
7319 svg.setAttribute('xmlns', ns);
7320 svg.style.position = 'absolute';
7321 svg.style.width = '0';
7322 svg.style.height = '0';
7323 svg.style.overflow = 'hidden';
7324 svg.style.display = 'none';
7325 const defs = document.createElementNS(ns, 'defs');
7326 svg.appendChild(defs);
7327 for (let i = 0; i < nodes.length; i++) {
7328 defs.appendChild(nodes[i]);
7329 }
7330 clone.appendChild(svg);
7331 }
7332 return clone;
7333 }
7334 async function cloneNode(node, options, isRoot) {
7335 if (!isRoot && options.filter && !options.filter(node)) {
7336 return null;
7337 }
7338 return Promise.resolve(node)
7339 .then((clonedNode) => cloneSingleNode(clonedNode, options))
7340 .then((clonedNode) => cloneChildren(node, clonedNode, options))
7341 .then((clonedNode) => decorate(node, clonedNode, options))
7342 .then((clonedNode) => ensureSVGSymbols(clonedNode, options));
7343 }
7344 //# sourceMappingURL=clone-node.js.map
7345
7346 /***/ }),
7347
7348 /***/ "../node_modules/html-to-image/es/clone-pseudos.js":
7349 /*!*********************************************************!*\
7350 !*** ../node_modules/html-to-image/es/clone-pseudos.js ***!
7351 \*********************************************************/
7352 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7353
7354 "use strict";
7355 __webpack_require__.r(__webpack_exports__);
7356 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7357 /* harmony export */ clonePseudoElements: () => (/* binding */ clonePseudoElements)
7358 /* harmony export */ });
7359 /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "../node_modules/html-to-image/es/util.js");
7360
7361 function formatCSSText(style) {
7362 const content = style.getPropertyValue('content');
7363 return `${style.cssText} content: '${content.replace(/'|"/g, '')}';`;
7364 }
7365 function formatCSSProperties(style, options) {
7366 return (0,_util__WEBPACK_IMPORTED_MODULE_0__.getStyleProperties)(options)
7367 .map((name) => {
7368 const value = style.getPropertyValue(name);
7369 const priority = style.getPropertyPriority(name);
7370 return `${name}: ${value}${priority ? ' !important' : ''};`;
7371 })
7372 .join(' ');
7373 }
7374 function getPseudoElementStyle(className, pseudo, style, options) {
7375 const selector = `.${className}:${pseudo}`;
7376 const cssText = style.cssText
7377 ? formatCSSText(style)
7378 : formatCSSProperties(style, options);
7379 return document.createTextNode(`${selector}{${cssText}}`);
7380 }
7381 function clonePseudoElement(nativeNode, clonedNode, pseudo, options) {
7382 const style = window.getComputedStyle(nativeNode, pseudo);
7383 const content = style.getPropertyValue('content');
7384 if (content === '' || content === 'none') {
7385 return;
7386 }
7387 const className = (0,_util__WEBPACK_IMPORTED_MODULE_0__.uuid)();
7388 try {
7389 clonedNode.className = `${clonedNode.className} ${className}`;
7390 }
7391 catch (err) {
7392 return;
7393 }
7394 const styleElement = document.createElement('style');
7395 styleElement.appendChild(getPseudoElementStyle(className, pseudo, style, options));
7396 clonedNode.appendChild(styleElement);
7397 }
7398 function clonePseudoElements(nativeNode, clonedNode, options) {
7399 clonePseudoElement(nativeNode, clonedNode, ':before', options);
7400 clonePseudoElement(nativeNode, clonedNode, ':after', options);
7401 }
7402 //# sourceMappingURL=clone-pseudos.js.map
7403
7404 /***/ }),
7405
7406 /***/ "../node_modules/html-to-image/es/dataurl.js":
7407 /*!***************************************************!*\
7408 !*** ../node_modules/html-to-image/es/dataurl.js ***!
7409 \***************************************************/
7410 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7411
7412 "use strict";
7413 __webpack_require__.r(__webpack_exports__);
7414 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7415 /* harmony export */ fetchAsDataURL: () => (/* binding */ fetchAsDataURL),
7416 /* harmony export */ isDataUrl: () => (/* binding */ isDataUrl),
7417 /* harmony export */ makeDataUrl: () => (/* binding */ makeDataUrl),
7418 /* harmony export */ resourceToDataURL: () => (/* binding */ resourceToDataURL)
7419 /* harmony export */ });
7420 function getContentFromDataUrl(dataURL) {
7421 return dataURL.split(/,/)[1];
7422 }
7423 function isDataUrl(url) {
7424 return url.search(/^(data:)/) !== -1;
7425 }
7426 function makeDataUrl(content, mimeType) {
7427 return `data:${mimeType};base64,${content}`;
7428 }
7429 async function fetchAsDataURL(url, init, process) {
7430 const res = await fetch(url, init);
7431 if (res.status === 404) {
7432 throw new Error(`Resource "${res.url}" not found`);
7433 }
7434 const blob = await res.blob();
7435 return new Promise((resolve, reject) => {
7436 const reader = new FileReader();
7437 reader.onerror = reject;
7438 reader.onloadend = () => {
7439 try {
7440 resolve(process({ res, result: reader.result }));
7441 }
7442 catch (error) {
7443 reject(error);
7444 }
7445 };
7446 reader.readAsDataURL(blob);
7447 });
7448 }
7449 const cache = {};
7450 function getCacheKey(url, contentType, includeQueryParams) {
7451 let key = url.replace(/\?.*/, '');
7452 if (includeQueryParams) {
7453 key = url;
7454 }
7455 // font resource
7456 if (/ttf|otf|eot|woff2?/i.test(key)) {
7457 key = key.replace(/.*\//, '');
7458 }
7459 return contentType ? `[${contentType}]${key}` : key;
7460 }
7461 async function resourceToDataURL(resourceUrl, contentType, options) {
7462 const cacheKey = getCacheKey(resourceUrl, contentType, options.includeQueryParams);
7463 if (cache[cacheKey] != null) {
7464 return cache[cacheKey];
7465 }
7466 // ref: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache
7467 if (options.cacheBust) {
7468 // eslint-disable-next-line no-param-reassign
7469 resourceUrl += (/\?/.test(resourceUrl) ? '&' : '?') + new Date().getTime();
7470 }
7471 let dataURL;
7472 try {
7473 const content = await fetchAsDataURL(resourceUrl, options.fetchRequestInit, ({ res, result }) => {
7474 if (!contentType) {
7475 // eslint-disable-next-line no-param-reassign
7476 contentType = res.headers.get('Content-Type') || '';
7477 }
7478 return getContentFromDataUrl(result);
7479 });
7480 dataURL = makeDataUrl(content, contentType);
7481 }
7482 catch (error) {
7483 dataURL = options.imagePlaceholder || '';
7484 let msg = `Failed to fetch resource: ${resourceUrl}`;
7485 if (error) {
7486 msg = typeof error === 'string' ? error : error.message;
7487 }
7488 if (msg) {
7489 console.warn(msg);
7490 }
7491 }
7492 cache[cacheKey] = dataURL;
7493 return dataURL;
7494 }
7495 //# sourceMappingURL=dataurl.js.map
7496
7497 /***/ }),
7498
7499 /***/ "../node_modules/html-to-image/es/embed-images.js":
7500 /*!********************************************************!*\
7501 !*** ../node_modules/html-to-image/es/embed-images.js ***!
7502 \********************************************************/
7503 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7504
7505 "use strict";
7506 __webpack_require__.r(__webpack_exports__);
7507 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7508 /* harmony export */ embedImages: () => (/* binding */ embedImages)
7509 /* harmony export */ });
7510 /* harmony import */ var _embed_resources__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./embed-resources */ "../node_modules/html-to-image/es/embed-resources.js");
7511 /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "../node_modules/html-to-image/es/util.js");
7512 /* harmony import */ var _dataurl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dataurl */ "../node_modules/html-to-image/es/dataurl.js");
7513 /* harmony import */ var _mimes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mimes */ "../node_modules/html-to-image/es/mimes.js");
7514
7515
7516
7517
7518 async function embedProp(propName, node, options) {
7519 var _a;
7520 const propValue = (_a = node.style) === null || _a === void 0 ? void 0 : _a.getPropertyValue(propName);
7521 if (propValue) {
7522 const cssString = await (0,_embed_resources__WEBPACK_IMPORTED_MODULE_0__.embedResources)(propValue, null, options);
7523 node.style.setProperty(propName, cssString, node.style.getPropertyPriority(propName));
7524 return true;
7525 }
7526 return false;
7527 }
7528 async function embedBackground(clonedNode, options) {
7529 ;
7530 (await embedProp('background', clonedNode, options)) ||
7531 (await embedProp('background-image', clonedNode, options));
7532 (await embedProp('mask', clonedNode, options)) ||
7533 (await embedProp('-webkit-mask', clonedNode, options)) ||
7534 (await embedProp('mask-image', clonedNode, options)) ||
7535 (await embedProp('-webkit-mask-image', clonedNode, options));
7536 }
7537 async function embedImageNode(clonedNode, options) {
7538 const isImageElement = (0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(clonedNode, HTMLImageElement);
7539 if (!(isImageElement && !(0,_dataurl__WEBPACK_IMPORTED_MODULE_2__.isDataUrl)(clonedNode.src)) &&
7540 !((0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(clonedNode, SVGImageElement) &&
7541 !(0,_dataurl__WEBPACK_IMPORTED_MODULE_2__.isDataUrl)(clonedNode.href.baseVal))) {
7542 return;
7543 }
7544 const url = isImageElement ? clonedNode.src : clonedNode.href.baseVal;
7545 const dataURL = await (0,_dataurl__WEBPACK_IMPORTED_MODULE_2__.resourceToDataURL)(url, (0,_mimes__WEBPACK_IMPORTED_MODULE_3__.getMimeType)(url), options);
7546 await new Promise((resolve, reject) => {
7547 clonedNode.onload = resolve;
7548 clonedNode.onerror = options.onImageErrorHandler
7549 ? (...attributes) => {
7550 try {
7551 resolve(options.onImageErrorHandler(...attributes));
7552 }
7553 catch (error) {
7554 reject(error);
7555 }
7556 }
7557 : reject;
7558 const image = clonedNode;
7559 if (image.decode) {
7560 image.decode = resolve;
7561 }
7562 if (image.loading === 'lazy') {
7563 image.loading = 'eager';
7564 }
7565 if (isImageElement) {
7566 clonedNode.srcset = '';
7567 clonedNode.src = dataURL;
7568 }
7569 else {
7570 clonedNode.href.baseVal = dataURL;
7571 }
7572 });
7573 }
7574 async function embedChildren(clonedNode, options) {
7575 const children = (0,_util__WEBPACK_IMPORTED_MODULE_1__.toArray)(clonedNode.childNodes);
7576 const deferreds = children.map((child) => embedImages(child, options));
7577 await Promise.all(deferreds).then(() => clonedNode);
7578 }
7579 async function embedImages(clonedNode, options) {
7580 if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isInstanceOfElement)(clonedNode, Element)) {
7581 await embedBackground(clonedNode, options);
7582 await embedImageNode(clonedNode, options);
7583 await embedChildren(clonedNode, options);
7584 }
7585 }
7586 //# sourceMappingURL=embed-images.js.map
7587
7588 /***/ }),
7589
7590 /***/ "../node_modules/html-to-image/es/embed-resources.js":
7591 /*!***********************************************************!*\
7592 !*** ../node_modules/html-to-image/es/embed-resources.js ***!
7593 \***********************************************************/
7594 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7595
7596 "use strict";
7597 __webpack_require__.r(__webpack_exports__);
7598 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7599 /* harmony export */ embed: () => (/* binding */ embed),
7600 /* harmony export */ embedResources: () => (/* binding */ embedResources),
7601 /* harmony export */ parseURLs: () => (/* binding */ parseURLs),
7602 /* harmony export */ shouldEmbed: () => (/* binding */ shouldEmbed)
7603 /* harmony export */ });
7604 /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "../node_modules/html-to-image/es/util.js");
7605 /* harmony import */ var _mimes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mimes */ "../node_modules/html-to-image/es/mimes.js");
7606 /* harmony import */ var _dataurl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dataurl */ "../node_modules/html-to-image/es/dataurl.js");
7607
7608
7609
7610 const URL_REGEX = /url\((['"]?)([^'"]+?)\1\)/g;
7611 const URL_WITH_FORMAT_REGEX = /url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g;
7612 const FONT_SRC_REGEX = /src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;
7613 function toRegex(url) {
7614 // eslint-disable-next-line no-useless-escape
7615 const escaped = url.replace(/([.*+?^${}()|\[\]\/\\])/g, '\\$1');
7616 return new RegExp(`(url\\(['"]?)(${escaped})(['"]?\\))`, 'g');
7617 }
7618 function parseURLs(cssText) {
7619 const urls = [];
7620 cssText.replace(URL_REGEX, (raw, quotation, url) => {
7621 urls.push(url);
7622 return raw;
7623 });
7624 return urls.filter((url) => !(0,_dataurl__WEBPACK_IMPORTED_MODULE_2__.isDataUrl)(url));
7625 }
7626 async function embed(cssText, resourceURL, baseURL, options, getContentFromUrl) {
7627 try {
7628 const resolvedURL = baseURL ? (0,_util__WEBPACK_IMPORTED_MODULE_0__.resolveUrl)(resourceURL, baseURL) : resourceURL;
7629 const contentType = (0,_mimes__WEBPACK_IMPORTED_MODULE_1__.getMimeType)(resourceURL);
7630 let dataURL;
7631 if (getContentFromUrl) {
7632 const content = await getContentFromUrl(resolvedURL);
7633 dataURL = (0,_dataurl__WEBPACK_IMPORTED_MODULE_2__.makeDataUrl)(content, contentType);
7634 }
7635 else {
7636 dataURL = await (0,_dataurl__WEBPACK_IMPORTED_MODULE_2__.resourceToDataURL)(resolvedURL, contentType, options);
7637 }
7638 return cssText.replace(toRegex(resourceURL), `$1${dataURL}$3`);
7639 }
7640 catch (error) {
7641 // pass
7642 }
7643 return cssText;
7644 }
7645 function filterPreferredFontFormat(str, { preferredFontFormat }) {
7646 return !preferredFontFormat
7647 ? str
7648 : str.replace(FONT_SRC_REGEX, (match) => {
7649 // eslint-disable-next-line no-constant-condition
7650 while (true) {
7651 const [src, , format] = URL_WITH_FORMAT_REGEX.exec(match) || [];
7652 if (!format) {
7653 return '';
7654 }
7655 if (format === preferredFontFormat) {
7656 return `src: ${src};`;
7657 }
7658 }
7659 });
7660 }
7661 function shouldEmbed(url) {
7662 return url.search(URL_REGEX) !== -1;
7663 }
7664 async function embedResources(cssText, baseUrl, options) {
7665 if (!shouldEmbed(cssText)) {
7666 return cssText;
7667 }
7668 const filteredCSSText = filterPreferredFontFormat(cssText, options);
7669 const urls = parseURLs(filteredCSSText);
7670 return urls.reduce((deferred, url) => deferred.then((css) => embed(css, url, baseUrl, options)), Promise.resolve(filteredCSSText));
7671 }
7672 //# sourceMappingURL=embed-resources.js.map
7673
7674 /***/ }),
7675
7676 /***/ "../node_modules/html-to-image/es/embed-webfonts.js":
7677 /*!**********************************************************!*\
7678 !*** ../node_modules/html-to-image/es/embed-webfonts.js ***!
7679 \**********************************************************/
7680 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7681
7682 "use strict";
7683 __webpack_require__.r(__webpack_exports__);
7684 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7685 /* harmony export */ embedWebFonts: () => (/* binding */ embedWebFonts),
7686 /* harmony export */ getWebFontCSS: () => (/* binding */ getWebFontCSS)
7687 /* harmony export */ });
7688 /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "../node_modules/html-to-image/es/util.js");
7689 /* harmony import */ var _dataurl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataurl */ "../node_modules/html-to-image/es/dataurl.js");
7690 /* harmony import */ var _embed_resources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./embed-resources */ "../node_modules/html-to-image/es/embed-resources.js");
7691
7692
7693
7694 const cssFetchCache = {};
7695 async function fetchCSS(url) {
7696 let cache = cssFetchCache[url];
7697 if (cache != null) {
7698 return cache;
7699 }
7700 const res = await fetch(url);
7701 const cssText = await res.text();
7702 cache = { url, cssText };
7703 cssFetchCache[url] = cache;
7704 return cache;
7705 }
7706 async function embedFonts(data, options) {
7707 let cssText = data.cssText;
7708 const regexUrl = /url\(["']?([^"')]+)["']?\)/g;
7709 const fontLocs = cssText.match(/url\([^)]+\)/g) || [];
7710 const loadFonts = fontLocs.map(async (loc) => {
7711 let url = loc.replace(regexUrl, '$1');
7712 if (!url.startsWith('https://')) {
7713 url = new URL(url, data.url).href;
7714 }
7715 return (0,_dataurl__WEBPACK_IMPORTED_MODULE_1__.fetchAsDataURL)(url, options.fetchRequestInit, ({ result }) => {
7716 cssText = cssText.replace(loc, `url(${result})`);
7717 return [loc, result];
7718 });
7719 });
7720 return Promise.all(loadFonts).then(() => cssText);
7721 }
7722 function parseCSS(source) {
7723 if (source == null) {
7724 return [];
7725 }
7726 const result = [];
7727 const commentsRegex = /(\/\*[\s\S]*?\*\/)/gi;
7728 // strip out comments
7729 let cssText = source.replace(commentsRegex, '');
7730 // eslint-disable-next-line prefer-regex-literals
7731 const keyframesRegex = new RegExp('((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})', 'gi');
7732 // eslint-disable-next-line no-constant-condition
7733 while (true) {
7734 const matches = keyframesRegex.exec(cssText);
7735 if (matches === null) {
7736 break;
7737 }
7738 result.push(matches[0]);
7739 }
7740 cssText = cssText.replace(keyframesRegex, '');
7741 const importRegex = /@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi;
7742 // to match css & media queries together
7743 const combinedCSSRegex = '((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]' +
7744 '*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})';
7745 // unified regex
7746 const unifiedRegex = new RegExp(combinedCSSRegex, 'gi');
7747 // eslint-disable-next-line no-constant-condition
7748 while (true) {
7749 let matches = importRegex.exec(cssText);
7750 if (matches === null) {
7751 matches = unifiedRegex.exec(cssText);
7752 if (matches === null) {
7753 break;
7754 }
7755 else {
7756 importRegex.lastIndex = unifiedRegex.lastIndex;
7757 }
7758 }
7759 else {
7760 unifiedRegex.lastIndex = importRegex.lastIndex;
7761 }
7762 result.push(matches[0]);
7763 }
7764 return result;
7765 }
7766 async function getCSSRules(styleSheets, options) {
7767 const ret = [];
7768 const deferreds = [];
7769 // First loop inlines imports
7770 styleSheets.forEach((sheet) => {
7771 if ('cssRules' in sheet) {
7772 try {
7773 (0,_util__WEBPACK_IMPORTED_MODULE_0__.toArray)(sheet.cssRules || []).forEach((item, index) => {
7774 if (item.type === CSSRule.IMPORT_RULE) {
7775 let importIndex = index + 1;
7776 const url = item.href;
7777 const deferred = fetchCSS(url)
7778 .then((metadata) => embedFonts(metadata, options))
7779 .then((cssText) => parseCSS(cssText).forEach((rule) => {
7780 try {
7781 sheet.insertRule(rule, rule.startsWith('@import')
7782 ? (importIndex += 1)
7783 : sheet.cssRules.length);
7784 }
7785 catch (error) {
7786 console.error('Error inserting rule from remote css', {
7787 rule,
7788 error,
7789 });
7790 }
7791 }))
7792 .catch((e) => {
7793 console.error('Error loading remote css', e.toString());
7794 });
7795 deferreds.push(deferred);
7796 }
7797 });
7798 }
7799 catch (e) {
7800 const inline = styleSheets.find((a) => a.href == null) || document.styleSheets[0];
7801 if (sheet.href != null) {
7802 deferreds.push(fetchCSS(sheet.href)
7803 .then((metadata) => embedFonts(metadata, options))
7804 .then((cssText) => parseCSS(cssText).forEach((rule) => {
7805 inline.insertRule(rule, inline.cssRules.length);
7806 }))
7807 .catch((err) => {
7808 console.error('Error loading remote stylesheet', err);
7809 }));
7810 }
7811 console.error('Error inlining remote css file', e);
7812 }
7813 }
7814 });
7815 return Promise.all(deferreds).then(() => {
7816 // Second loop parses rules
7817 styleSheets.forEach((sheet) => {
7818 if ('cssRules' in sheet) {
7819 try {
7820 (0,_util__WEBPACK_IMPORTED_MODULE_0__.toArray)(sheet.cssRules || []).forEach((item) => {
7821 ret.push(item);
7822 });
7823 }
7824 catch (e) {
7825 console.error(`Error while reading CSS rules from ${sheet.href}`, e);
7826 }
7827 }
7828 });
7829 return ret;
7830 });
7831 }
7832 function getWebFontRules(cssRules) {
7833 return cssRules
7834 .filter((rule) => rule.type === CSSRule.FONT_FACE_RULE)
7835 .filter((rule) => (0,_embed_resources__WEBPACK_IMPORTED_MODULE_2__.shouldEmbed)(rule.style.getPropertyValue('src')));
7836 }
7837 async function parseWebFontRules(node, options) {
7838 if (node.ownerDocument == null) {
7839 throw new Error('Provided element is not within a Document');
7840 }
7841 const styleSheets = (0,_util__WEBPACK_IMPORTED_MODULE_0__.toArray)(node.ownerDocument.styleSheets);
7842 const cssRules = await getCSSRules(styleSheets, options);
7843 return getWebFontRules(cssRules);
7844 }
7845 function normalizeFontFamily(font) {
7846 return font.trim().replace(/["']/g, '');
7847 }
7848 function getUsedFonts(node) {
7849 const fonts = new Set();
7850 function traverse(node) {
7851 const fontFamily = node.style.fontFamily || getComputedStyle(node).fontFamily;
7852 fontFamily.split(',').forEach((font) => {
7853 fonts.add(normalizeFontFamily(font));
7854 });
7855 Array.from(node.children).forEach((child) => {
7856 if (child instanceof HTMLElement) {
7857 traverse(child);
7858 }
7859 });
7860 }
7861 traverse(node);
7862 return fonts;
7863 }
7864 async function getWebFontCSS(node, options) {
7865 const rules = await parseWebFontRules(node, options);
7866 const usedFonts = getUsedFonts(node);
7867 const cssTexts = await Promise.all(rules
7868 .filter((rule) => usedFonts.has(normalizeFontFamily(rule.style.fontFamily)))
7869 .map((rule) => {
7870 const baseUrl = rule.parentStyleSheet
7871 ? rule.parentStyleSheet.href
7872 : null;
7873 return (0,_embed_resources__WEBPACK_IMPORTED_MODULE_2__.embedResources)(rule.cssText, baseUrl, options);
7874 }));
7875 return cssTexts.join('\n');
7876 }
7877 async function embedWebFonts(clonedNode, options) {
7878 const cssText = options.fontEmbedCSS != null
7879 ? options.fontEmbedCSS
7880 : options.skipFonts
7881 ? null
7882 : await getWebFontCSS(clonedNode, options);
7883 if (cssText) {
7884 const styleNode = document.createElement('style');
7885 const sytleContent = document.createTextNode(cssText);
7886 styleNode.appendChild(sytleContent);
7887 if (clonedNode.firstChild) {
7888 clonedNode.insertBefore(styleNode, clonedNode.firstChild);
7889 }
7890 else {
7891 clonedNode.appendChild(styleNode);
7892 }
7893 }
7894 }
7895 //# sourceMappingURL=embed-webfonts.js.map
7896
7897 /***/ }),
7898
7899 /***/ "../node_modules/html-to-image/es/index.js":
7900 /*!*************************************************!*\
7901 !*** ../node_modules/html-to-image/es/index.js ***!
7902 \*************************************************/
7903 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7904
7905 "use strict";
7906 __webpack_require__.r(__webpack_exports__);
7907 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7908 /* harmony export */ getFontEmbedCSS: () => (/* binding */ getFontEmbedCSS),
7909 /* harmony export */ toBlob: () => (/* binding */ toBlob),
7910 /* harmony export */ toCanvas: () => (/* binding */ toCanvas),
7911 /* harmony export */ toJpeg: () => (/* binding */ toJpeg),
7912 /* harmony export */ toPixelData: () => (/* binding */ toPixelData),
7913 /* harmony export */ toPng: () => (/* binding */ toPng),
7914 /* harmony export */ toSvg: () => (/* binding */ toSvg)
7915 /* harmony export */ });
7916 /* harmony import */ var _clone_node__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./clone-node */ "../node_modules/html-to-image/es/clone-node.js");
7917 /* harmony import */ var _embed_images__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./embed-images */ "../node_modules/html-to-image/es/embed-images.js");
7918 /* harmony import */ var _apply_style__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./apply-style */ "../node_modules/html-to-image/es/apply-style.js");
7919 /* harmony import */ var _embed_webfonts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./embed-webfonts */ "../node_modules/html-to-image/es/embed-webfonts.js");
7920 /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "../node_modules/html-to-image/es/util.js");
7921
7922
7923
7924
7925
7926 async function toSvg(node, options = {}) {
7927 const { width, height } = (0,_util__WEBPACK_IMPORTED_MODULE_4__.getImageSize)(node, options);
7928 const clonedNode = (await (0,_clone_node__WEBPACK_IMPORTED_MODULE_0__.cloneNode)(node, options, true));
7929 await (0,_embed_webfonts__WEBPACK_IMPORTED_MODULE_3__.embedWebFonts)(clonedNode, options);
7930 await (0,_embed_images__WEBPACK_IMPORTED_MODULE_1__.embedImages)(clonedNode, options);
7931 (0,_apply_style__WEBPACK_IMPORTED_MODULE_2__.applyStyle)(clonedNode, options);
7932 const datauri = await (0,_util__WEBPACK_IMPORTED_MODULE_4__.nodeToDataURL)(clonedNode, width, height);
7933 return datauri;
7934 }
7935 async function toCanvas(node, options = {}) {
7936 const { width, height } = (0,_util__WEBPACK_IMPORTED_MODULE_4__.getImageSize)(node, options);
7937 const svg = await toSvg(node, options);
7938 const img = await (0,_util__WEBPACK_IMPORTED_MODULE_4__.createImage)(svg);
7939 const canvas = document.createElement('canvas');
7940 const context = canvas.getContext('2d');
7941 const ratio = options.pixelRatio || (0,_util__WEBPACK_IMPORTED_MODULE_4__.getPixelRatio)();
7942 const canvasWidth = options.canvasWidth || width;
7943 const canvasHeight = options.canvasHeight || height;
7944 canvas.width = canvasWidth * ratio;
7945 canvas.height = canvasHeight * ratio;
7946 if (!options.skipAutoScale) {
7947 (0,_util__WEBPACK_IMPORTED_MODULE_4__.checkCanvasDimensions)(canvas);
7948 }
7949 canvas.style.width = `${canvasWidth}`;
7950 canvas.style.height = `${canvasHeight}`;
7951 if (options.backgroundColor) {
7952 context.fillStyle = options.backgroundColor;
7953 context.fillRect(0, 0, canvas.width, canvas.height);
7954 }
7955 context.drawImage(img, 0, 0, canvas.width, canvas.height);
7956 return canvas;
7957 }
7958 async function toPixelData(node, options = {}) {
7959 const { width, height } = (0,_util__WEBPACK_IMPORTED_MODULE_4__.getImageSize)(node, options);
7960 const canvas = await toCanvas(node, options);
7961 const ctx = canvas.getContext('2d');
7962 return ctx.getImageData(0, 0, width, height).data;
7963 }
7964 async function toPng(node, options = {}) {
7965 const canvas = await toCanvas(node, options);
7966 return canvas.toDataURL();
7967 }
7968 async function toJpeg(node, options = {}) {
7969 const canvas = await toCanvas(node, options);
7970 return canvas.toDataURL('image/jpeg', options.quality || 1);
7971 }
7972 async function toBlob(node, options = {}) {
7973 const canvas = await toCanvas(node, options);
7974 const blob = await (0,_util__WEBPACK_IMPORTED_MODULE_4__.canvasToBlob)(canvas);
7975 return blob;
7976 }
7977 async function getFontEmbedCSS(node, options = {}) {
7978 return (0,_embed_webfonts__WEBPACK_IMPORTED_MODULE_3__.getWebFontCSS)(node, options);
7979 }
7980 //# sourceMappingURL=index.js.map
7981
7982 /***/ }),
7983
7984 /***/ "../node_modules/html-to-image/es/mimes.js":
7985 /*!*************************************************!*\
7986 !*** ../node_modules/html-to-image/es/mimes.js ***!
7987 \*************************************************/
7988 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7989
7990 "use strict";
7991 __webpack_require__.r(__webpack_exports__);
7992 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7993 /* harmony export */ getMimeType: () => (/* binding */ getMimeType)
7994 /* harmony export */ });
7995 const WOFF = 'application/font-woff';
7996 const JPEG = 'image/jpeg';
7997 const mimes = {
7998 woff: WOFF,
7999 woff2: WOFF,
8000 ttf: 'application/font-truetype',
8001 eot: 'application/vnd.ms-fontobject',
8002 png: 'image/png',
8003 jpg: JPEG,
8004 jpeg: JPEG,
8005 gif: 'image/gif',
8006 tiff: 'image/tiff',
8007 svg: 'image/svg+xml',
8008 webp: 'image/webp',
8009 };
8010 function getExtension(url) {
8011 const match = /\.([^./]*?)$/g.exec(url);
8012 return match ? match[1] : '';
8013 }
8014 function getMimeType(url) {
8015 const extension = getExtension(url).toLowerCase();
8016 return mimes[extension] || '';
8017 }
8018 //# sourceMappingURL=mimes.js.map
8019
8020 /***/ }),
8021
8022 /***/ "../node_modules/html-to-image/es/util.js":
8023 /*!************************************************!*\
8024 !*** ../node_modules/html-to-image/es/util.js ***!
8025 \************************************************/
8026 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8027
8028 "use strict";
8029 __webpack_require__.r(__webpack_exports__);
8030 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8031 /* harmony export */ canvasToBlob: () => (/* binding */ canvasToBlob),
8032 /* harmony export */ checkCanvasDimensions: () => (/* binding */ checkCanvasDimensions),
8033 /* harmony export */ createImage: () => (/* binding */ createImage),
8034 /* harmony export */ delay: () => (/* binding */ delay),
8035 /* harmony export */ getImageSize: () => (/* binding */ getImageSize),
8036 /* harmony export */ getPixelRatio: () => (/* binding */ getPixelRatio),
8037 /* harmony export */ getStyleProperties: () => (/* binding */ getStyleProperties),
8038 /* harmony export */ isInstanceOfElement: () => (/* binding */ isInstanceOfElement),
8039 /* harmony export */ nodeToDataURL: () => (/* binding */ nodeToDataURL),
8040 /* harmony export */ resolveUrl: () => (/* binding */ resolveUrl),
8041 /* harmony export */ svgToDataURL: () => (/* binding */ svgToDataURL),
8042 /* harmony export */ toArray: () => (/* binding */ toArray),
8043 /* harmony export */ uuid: () => (/* binding */ uuid)
8044 /* harmony export */ });
8045 function resolveUrl(url, baseUrl) {
8046 // url is absolute already
8047 if (url.match(/^[a-z]+:\/\//i)) {
8048 return url;
8049 }
8050 // url is absolute already, without protocol
8051 if (url.match(/^\/\//)) {
8052 return window.location.protocol + url;
8053 }
8054 // dataURI, mailto:, tel:, etc.
8055 if (url.match(/^[a-z]+:/i)) {
8056 return url;
8057 }
8058 const doc = document.implementation.createHTMLDocument();
8059 const base = doc.createElement('base');
8060 const a = doc.createElement('a');
8061 doc.head.appendChild(base);
8062 doc.body.appendChild(a);
8063 if (baseUrl) {
8064 base.href = baseUrl;
8065 }
8066 a.href = url;
8067 return a.href;
8068 }
8069 const uuid = (() => {
8070 // generate uuid for className of pseudo elements.
8071 // We should not use GUIDs, otherwise pseudo elements sometimes cannot be captured.
8072 let counter = 0;
8073 // ref: http://stackoverflow.com/a/6248722/2519373
8074 const random = () =>
8075 // eslint-disable-next-line no-bitwise
8076 `0000${((Math.random() * 36 ** 4) << 0).toString(36)}`.slice(-4);
8077 return () => {
8078 counter += 1;
8079 return `u${random()}${counter}`;
8080 };
8081 })();
8082 function delay(ms) {
8083 return (args) => new Promise((resolve) => {
8084 setTimeout(() => resolve(args), ms);
8085 });
8086 }
8087 function toArray(arrayLike) {
8088 const arr = [];
8089 for (let i = 0, l = arrayLike.length; i < l; i++) {
8090 arr.push(arrayLike[i]);
8091 }
8092 return arr;
8093 }
8094 let styleProps = null;
8095 function getStyleProperties(options = {}) {
8096 if (styleProps) {
8097 return styleProps;
8098 }
8099 if (options.includeStyleProperties) {
8100 styleProps = options.includeStyleProperties;
8101 return styleProps;
8102 }
8103 styleProps = toArray(window.getComputedStyle(document.documentElement));
8104 return styleProps;
8105 }
8106 function px(node, styleProperty) {
8107 const win = node.ownerDocument.defaultView || window;
8108 const val = win.getComputedStyle(node).getPropertyValue(styleProperty);
8109 return val ? parseFloat(val.replace('px', '')) : 0;
8110 }
8111 function getNodeWidth(node) {
8112 const leftBorder = px(node, 'border-left-width');
8113 const rightBorder = px(node, 'border-right-width');
8114 return node.clientWidth + leftBorder + rightBorder;
8115 }
8116 function getNodeHeight(node) {
8117 const topBorder = px(node, 'border-top-width');
8118 const bottomBorder = px(node, 'border-bottom-width');
8119 return node.clientHeight + topBorder + bottomBorder;
8120 }
8121 function getImageSize(targetNode, options = {}) {
8122 const width = options.width || getNodeWidth(targetNode);
8123 const height = options.height || getNodeHeight(targetNode);
8124 return { width, height };
8125 }
8126 function getPixelRatio() {
8127 let ratio;
8128 let FINAL_PROCESS;
8129 try {
8130 FINAL_PROCESS = process;
8131 }
8132 catch (e) {
8133 // pass
8134 }
8135 const val = FINAL_PROCESS && FINAL_PROCESS.env
8136 ? FINAL_PROCESS.env.devicePixelRatio
8137 : null;
8138 if (val) {
8139 ratio = parseInt(val, 10);
8140 if (Number.isNaN(ratio)) {
8141 ratio = 1;
8142 }
8143 }
8144 return ratio || window.devicePixelRatio || 1;
8145 }
8146 // @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas#maximum_canvas_size
8147 const canvasDimensionLimit = 16384;
8148 function checkCanvasDimensions(canvas) {
8149 if (canvas.width > canvasDimensionLimit ||
8150 canvas.height > canvasDimensionLimit) {
8151 if (canvas.width > canvasDimensionLimit &&
8152 canvas.height > canvasDimensionLimit) {
8153 if (canvas.width > canvas.height) {
8154 canvas.height *= canvasDimensionLimit / canvas.width;
8155 canvas.width = canvasDimensionLimit;
8156 }
8157 else {
8158 canvas.width *= canvasDimensionLimit / canvas.height;
8159 canvas.height = canvasDimensionLimit;
8160 }
8161 }
8162 else if (canvas.width > canvasDimensionLimit) {
8163 canvas.height *= canvasDimensionLimit / canvas.width;
8164 canvas.width = canvasDimensionLimit;
8165 }
8166 else {
8167 canvas.width *= canvasDimensionLimit / canvas.height;
8168 canvas.height = canvasDimensionLimit;
8169 }
8170 }
8171 }
8172 function canvasToBlob(canvas, options = {}) {
8173 if (canvas.toBlob) {
8174 return new Promise((resolve) => {
8175 canvas.toBlob(resolve, options.type ? options.type : 'image/png', options.quality ? options.quality : 1);
8176 });
8177 }
8178 return new Promise((resolve) => {
8179 const binaryString = window.atob(canvas
8180 .toDataURL(options.type ? options.type : undefined, options.quality ? options.quality : undefined)
8181 .split(',')[1]);
8182 const len = binaryString.length;
8183 const binaryArray = new Uint8Array(len);
8184 for (let i = 0; i < len; i += 1) {
8185 binaryArray[i] = binaryString.charCodeAt(i);
8186 }
8187 resolve(new Blob([binaryArray], {
8188 type: options.type ? options.type : 'image/png',
8189 }));
8190 });
8191 }
8192 function createImage(url) {
8193 return new Promise((resolve, reject) => {
8194 const img = new Image();
8195 img.onload = () => {
8196 img.decode().then(() => {
8197 requestAnimationFrame(() => resolve(img));
8198 });
8199 };
8200 img.onerror = reject;
8201 img.crossOrigin = 'anonymous';
8202 img.decoding = 'async';
8203 img.src = url;
8204 });
8205 }
8206 async function svgToDataURL(svg) {
8207 return Promise.resolve()
8208 .then(() => new XMLSerializer().serializeToString(svg))
8209 .then(encodeURIComponent)
8210 .then((html) => `data:image/svg+xml;charset=utf-8,${html}`);
8211 }
8212 async function nodeToDataURL(node, width, height) {
8213 const xmlns = 'http://www.w3.org/2000/svg';
8214 const svg = document.createElementNS(xmlns, 'svg');
8215 const foreignObject = document.createElementNS(xmlns, 'foreignObject');
8216 svg.setAttribute('width', `${width}`);
8217 svg.setAttribute('height', `${height}`);
8218 svg.setAttribute('viewBox', `0 0 ${width} ${height}`);
8219 foreignObject.setAttribute('width', '100%');
8220 foreignObject.setAttribute('height', '100%');
8221 foreignObject.setAttribute('x', '0');
8222 foreignObject.setAttribute('y', '0');
8223 foreignObject.setAttribute('externalResourcesRequired', 'true');
8224 svg.appendChild(foreignObject);
8225 foreignObject.appendChild(node);
8226 return svgToDataURL(svg);
8227 }
8228 const isInstanceOfElement = (node, instance) => {
8229 if (node instanceof instance)
8230 return true;
8231 const nodePrototype = Object.getPrototypeOf(node);
8232 if (nodePrototype === null)
8233 return false;
8234 return (nodePrototype.constructor.name === instance.name ||
8235 isInstanceOfElement(nodePrototype, instance));
8236 };
8237 //# sourceMappingURL=util.js.map
8238
8239 /***/ }),
8240
8241 /***/ "../node_modules/object-assign/index.js":
8242 /*!**********************************************!*\
8243 !*** ../node_modules/object-assign/index.js ***!
8244 \**********************************************/
8245 /***/ ((module) => {
8246
8247 "use strict";
8248 /*
8249 object-assign
8250 (c) Sindre Sorhus
8251 @license MIT
8252 */
8253
8254
8255 /* eslint-disable no-unused-vars */
8256 var getOwnPropertySymbols = Object.getOwnPropertySymbols;
8257 var hasOwnProperty = Object.prototype.hasOwnProperty;
8258 var propIsEnumerable = Object.prototype.propertyIsEnumerable;
8259
8260 function toObject(val) {
8261 if (val === null || val === undefined) {
8262 throw new TypeError('Object.assign cannot be called with null or undefined');
8263 }
8264
8265 return Object(val);
8266 }
8267
8268 function shouldUseNative() {
8269 try {
8270 if (!Object.assign) {
8271 return false;
8272 }
8273
8274 // Detect buggy property enumeration order in older V8 versions.
8275
8276 // https://bugs.chromium.org/p/v8/issues/detail?id=4118
8277 var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
8278 test1[5] = 'de';
8279 if (Object.getOwnPropertyNames(test1)[0] === '5') {
8280 return false;
8281 }
8282
8283 // https://bugs.chromium.org/p/v8/issues/detail?id=3056
8284 var test2 = {};
8285 for (var i = 0; i < 10; i++) {
8286 test2['_' + String.fromCharCode(i)] = i;
8287 }
8288 var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
8289 return test2[n];
8290 });
8291 if (order2.join('') !== '0123456789') {
8292 return false;
8293 }
8294
8295 // https://bugs.chromium.org/p/v8/issues/detail?id=3056
8296 var test3 = {};
8297 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
8298 test3[letter] = letter;
8299 });
8300 if (Object.keys(Object.assign({}, test3)).join('') !==
8301 'abcdefghijklmnopqrst') {
8302 return false;
8303 }
8304
8305 return true;
8306 } catch (err) {
8307 // We don't expect any of the above to throw, but better to be safe.
8308 return false;
8309 }
8310 }
8311
8312 module.exports = shouldUseNative() ? Object.assign : function (target, source) {
8313 var from;
8314 var to = toObject(target);
8315 var symbols;
8316
8317 for (var s = 1; s < arguments.length; s++) {
8318 from = Object(arguments[s]);
8319
8320 for (var key in from) {
8321 if (hasOwnProperty.call(from, key)) {
8322 to[key] = from[key];
8323 }
8324 }
8325
8326 if (getOwnPropertySymbols) {
8327 symbols = getOwnPropertySymbols(from);
8328 for (var i = 0; i < symbols.length; i++) {
8329 if (propIsEnumerable.call(from, symbols[i])) {
8330 to[symbols[i]] = from[symbols[i]];
8331 }
8332 }
8333 }
8334 }
8335
8336 return to;
8337 };
8338
8339
8340 /***/ }),
8341
8342 /***/ "../node_modules/prop-types/checkPropTypes.js":
8343 /*!****************************************************!*\
8344 !*** ../node_modules/prop-types/checkPropTypes.js ***!
8345 \****************************************************/
8346 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
8347
8348 "use strict";
8349 /**
8350 * Copyright (c) 2013-present, Facebook, Inc.
8351 *
8352 * This source code is licensed under the MIT license found in the
8353 * LICENSE file in the root directory of this source tree.
8354 */
8355
8356
8357
8358 var printWarning = function() {};
8359
8360 if (true) {
8361 var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js");
8362 var loggedTypeFailures = {};
8363 var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js");
8364
8365 printWarning = function(text) {
8366 var message = 'Warning: ' + text;
8367 if (typeof console !== 'undefined') {
8368 console.error(message);
8369 }
8370 try {
8371 // --- Welcome to debugging React ---
8372 // This error was thrown as a convenience so that you can use this stack
8373 // to find the callsite that caused this warning to fire.
8374 throw new Error(message);
8375 } catch (x) { /**/ }
8376 };
8377 }
8378
8379 /**
8380 * Assert that the values match with the type specs.
8381 * Error messages are memorized and will only be shown once.
8382 *
8383 * @param {object} typeSpecs Map of name to a ReactPropType
8384 * @param {object} values Runtime values that need to be type-checked
8385 * @param {string} location e.g. "prop", "context", "child context"
8386 * @param {string} componentName Name of the component for error messages.
8387 * @param {?Function} getStack Returns the component stack.
8388 * @private
8389 */
8390 function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
8391 if (true) {
8392 for (var typeSpecName in typeSpecs) {
8393 if (has(typeSpecs, typeSpecName)) {
8394 var error;
8395 // Prop type validation may throw. In case they do, we don't want to
8396 // fail the render phase where it didn't fail before. So we log it.
8397 // After these have been cleaned up, we'll let them throw.
8398 try {
8399 // This is intentionally an invariant that gets caught. It's the same
8400 // behavior as without this statement except with a better message.
8401 if (typeof typeSpecs[typeSpecName] !== 'function') {
8402 var err = Error(
8403 (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +
8404 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +
8405 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'
8406 );
8407 err.name = 'Invariant Violation';
8408 throw err;
8409 }
8410 error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
8411 } catch (ex) {
8412 error = ex;
8413 }
8414 if (error && !(error instanceof Error)) {
8415 printWarning(
8416 (componentName || 'React class') + ': type specification of ' +
8417 location + ' `' + typeSpecName + '` is invalid; the type checker ' +
8418 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +
8419 'You may have forgotten to pass an argument to the type checker ' +
8420 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +
8421 'shape all require an argument).'
8422 );
8423 }
8424 if (error instanceof Error && !(error.message in loggedTypeFailures)) {
8425 // Only monitor this failure once because there tends to be a lot of the
8426 // same error.
8427 loggedTypeFailures[error.message] = true;
8428
8429 var stack = getStack ? getStack() : '';
8430
8431 printWarning(
8432 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')
8433 );
8434 }
8435 }
8436 }
8437 }
8438 }
8439
8440 /**
8441 * Resets warning cache when testing.
8442 *
8443 * @private
8444 */
8445 checkPropTypes.resetWarningCache = function() {
8446 if (true) {
8447 loggedTypeFailures = {};
8448 }
8449 }
8450
8451 module.exports = checkPropTypes;
8452
8453
8454 /***/ }),
8455
8456 /***/ "../node_modules/prop-types/factoryWithTypeCheckers.js":
8457 /*!*************************************************************!*\
8458 !*** ../node_modules/prop-types/factoryWithTypeCheckers.js ***!
8459 \*************************************************************/
8460 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
8461
8462 "use strict";
8463 /**
8464 * Copyright (c) 2013-present, Facebook, Inc.
8465 *
8466 * This source code is licensed under the MIT license found in the
8467 * LICENSE file in the root directory of this source tree.
8468 */
8469
8470
8471
8472 var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js");
8473 var assign = __webpack_require__(/*! object-assign */ "../node_modules/object-assign/index.js");
8474
8475 var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js");
8476 var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js");
8477 var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "../node_modules/prop-types/checkPropTypes.js");
8478
8479 var printWarning = function() {};
8480
8481 if (true) {
8482 printWarning = function(text) {
8483 var message = 'Warning: ' + text;
8484 if (typeof console !== 'undefined') {
8485 console.error(message);
8486 }
8487 try {
8488 // --- Welcome to debugging React ---
8489 // This error was thrown as a convenience so that you can use this stack
8490 // to find the callsite that caused this warning to fire.
8491 throw new Error(message);
8492 } catch (x) {}
8493 };
8494 }
8495
8496 function emptyFunctionThatReturnsNull() {
8497 return null;
8498 }
8499
8500 module.exports = function(isValidElement, throwOnDirectAccess) {
8501 /* global Symbol */
8502 var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
8503 var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
8504
8505 /**
8506 * Returns the iterator method function contained on the iterable object.
8507 *
8508 * Be sure to invoke the function with the iterable as context:
8509 *
8510 * var iteratorFn = getIteratorFn(myIterable);
8511 * if (iteratorFn) {
8512 * var iterator = iteratorFn.call(myIterable);
8513 * ...
8514 * }
8515 *
8516 * @param {?object} maybeIterable
8517 * @return {?function}
8518 */
8519 function getIteratorFn(maybeIterable) {
8520 var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
8521 if (typeof iteratorFn === 'function') {
8522 return iteratorFn;
8523 }
8524 }
8525
8526 /**
8527 * Collection of methods that allow declaration and validation of props that are
8528 * supplied to React components. Example usage:
8529 *
8530 * var Props = require('ReactPropTypes');
8531 * var MyArticle = React.createClass({
8532 * propTypes: {
8533 * // An optional string prop named "description".
8534 * description: Props.string,
8535 *
8536 * // A required enum prop named "category".
8537 * category: Props.oneOf(['News','Photos']).isRequired,
8538 *
8539 * // A prop named "dialog" that requires an instance of Dialog.
8540 * dialog: Props.instanceOf(Dialog).isRequired
8541 * },
8542 * render: function() { ... }
8543 * });
8544 *
8545 * A more formal specification of how these methods are used:
8546 *
8547 * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
8548 * decl := ReactPropTypes.{type}(.isRequired)?
8549 *
8550 * Each and every declaration produces a function with the same signature. This
8551 * allows the creation of custom validation functions. For example:
8552 *
8553 * var MyLink = React.createClass({
8554 * propTypes: {
8555 * // An optional string or URI prop named "href".
8556 * href: function(props, propName, componentName) {
8557 * var propValue = props[propName];
8558 * if (propValue != null && typeof propValue !== 'string' &&
8559 * !(propValue instanceof URI)) {
8560 * return new Error(
8561 * 'Expected a string or an URI for ' + propName + ' in ' +
8562 * componentName
8563 * );
8564 * }
8565 * }
8566 * },
8567 * render: function() {...}
8568 * });
8569 *
8570 * @internal
8571 */
8572
8573 var ANONYMOUS = '<<anonymous>>';
8574
8575 // Important!
8576 // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
8577 var ReactPropTypes = {
8578 array: createPrimitiveTypeChecker('array'),
8579 bigint: createPrimitiveTypeChecker('bigint'),
8580 bool: createPrimitiveTypeChecker('boolean'),
8581 func: createPrimitiveTypeChecker('function'),
8582 number: createPrimitiveTypeChecker('number'),
8583 object: createPrimitiveTypeChecker('object'),
8584 string: createPrimitiveTypeChecker('string'),
8585 symbol: createPrimitiveTypeChecker('symbol'),
8586
8587 any: createAnyTypeChecker(),
8588 arrayOf: createArrayOfTypeChecker,
8589 element: createElementTypeChecker(),
8590 elementType: createElementTypeTypeChecker(),
8591 instanceOf: createInstanceTypeChecker,
8592 node: createNodeChecker(),
8593 objectOf: createObjectOfTypeChecker,
8594 oneOf: createEnumTypeChecker,
8595 oneOfType: createUnionTypeChecker,
8596 shape: createShapeTypeChecker,
8597 exact: createStrictShapeTypeChecker,
8598 };
8599
8600 /**
8601 * inlined Object.is polyfill to avoid requiring consumers ship their own
8602 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
8603 */
8604 /*eslint-disable no-self-compare*/
8605 function is(x, y) {
8606 // SameValue algorithm
8607 if (x === y) {
8608 // Steps 1-5, 7-10
8609 // Steps 6.b-6.e: +0 != -0
8610 return x !== 0 || 1 / x === 1 / y;
8611 } else {
8612 // Step 6.a: NaN == NaN
8613 return x !== x && y !== y;
8614 }
8615 }
8616 /*eslint-enable no-self-compare*/
8617
8618 /**
8619 * We use an Error-like object for backward compatibility as people may call
8620 * PropTypes directly and inspect their output. However, we don't use real
8621 * Errors anymore. We don't inspect their stack anyway, and creating them
8622 * is prohibitively expensive if they are created too often, such as what
8623 * happens in oneOfType() for any type before the one that matched.
8624 */
8625 function PropTypeError(message, data) {
8626 this.message = message;
8627 this.data = data && typeof data === 'object' ? data: {};
8628 this.stack = '';
8629 }
8630 // Make `instanceof Error` still work for returned errors.
8631 PropTypeError.prototype = Error.prototype;
8632
8633 function createChainableTypeChecker(validate) {
8634 if (true) {
8635 var manualPropTypeCallCache = {};
8636 var manualPropTypeWarningCount = 0;
8637 }
8638 function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
8639 componentName = componentName || ANONYMOUS;
8640 propFullName = propFullName || propName;
8641
8642 if (secret !== ReactPropTypesSecret) {
8643 if (throwOnDirectAccess) {
8644 // New behavior only for users of `prop-types` package
8645 var err = new Error(
8646 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
8647 'Use `PropTypes.checkPropTypes()` to call them. ' +
8648 'Read more at http://fb.me/use-check-prop-types'
8649 );
8650 err.name = 'Invariant Violation';
8651 throw err;
8652 } else if ( true && typeof console !== 'undefined') {
8653 // Old behavior for people using React.PropTypes
8654 var cacheKey = componentName + ':' + propName;
8655 if (
8656 !manualPropTypeCallCache[cacheKey] &&
8657 // Avoid spamming the console because they are often not actionable except for lib authors
8658 manualPropTypeWarningCount < 3
8659 ) {
8660 printWarning(
8661 'You are manually calling a React.PropTypes validation ' +
8662 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +
8663 'and will throw in the standalone `prop-types` package. ' +
8664 'You may be seeing this warning due to a third-party PropTypes ' +
8665 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'
8666 );
8667 manualPropTypeCallCache[cacheKey] = true;
8668 manualPropTypeWarningCount++;
8669 }
8670 }
8671 }
8672 if (props[propName] == null) {
8673 if (isRequired) {
8674 if (props[propName] === null) {
8675 return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
8676 }
8677 return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
8678 }
8679 return null;
8680 } else {
8681 return validate(props, propName, componentName, location, propFullName);
8682 }
8683 }
8684
8685 var chainedCheckType = checkType.bind(null, false);
8686 chainedCheckType.isRequired = checkType.bind(null, true);
8687
8688 return chainedCheckType;
8689 }
8690
8691 function createPrimitiveTypeChecker(expectedType) {
8692 function validate(props, propName, componentName, location, propFullName, secret) {
8693 var propValue = props[propName];
8694 var propType = getPropType(propValue);
8695 if (propType !== expectedType) {
8696 // `propValue` being instance of, say, date/regexp, pass the 'object'
8697 // check, but we can offer a more precise error message here rather than
8698 // 'of type `object`'.
8699 var preciseType = getPreciseType(propValue);
8700
8701 return new PropTypeError(
8702 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),
8703 {expectedType: expectedType}
8704 );
8705 }
8706 return null;
8707 }
8708 return createChainableTypeChecker(validate);
8709 }
8710
8711 function createAnyTypeChecker() {
8712 return createChainableTypeChecker(emptyFunctionThatReturnsNull);
8713 }
8714
8715 function createArrayOfTypeChecker(typeChecker) {
8716 function validate(props, propName, componentName, location, propFullName) {
8717 if (typeof typeChecker !== 'function') {
8718 return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
8719 }
8720 var propValue = props[propName];
8721 if (!Array.isArray(propValue)) {
8722 var propType = getPropType(propValue);
8723 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
8724 }
8725 for (var i = 0; i < propValue.length; i++) {
8726 var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
8727 if (error instanceof Error) {
8728 return error;
8729 }
8730 }
8731 return null;
8732 }
8733 return createChainableTypeChecker(validate);
8734 }
8735
8736 function createElementTypeChecker() {
8737 function validate(props, propName, componentName, location, propFullName) {
8738 var propValue = props[propName];
8739 if (!isValidElement(propValue)) {
8740 var propType = getPropType(propValue);
8741 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
8742 }
8743 return null;
8744 }
8745 return createChainableTypeChecker(validate);
8746 }
8747
8748 function createElementTypeTypeChecker() {
8749 function validate(props, propName, componentName, location, propFullName) {
8750 var propValue = props[propName];
8751 if (!ReactIs.isValidElementType(propValue)) {
8752 var propType = getPropType(propValue);
8753 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
8754 }
8755 return null;
8756 }
8757 return createChainableTypeChecker(validate);
8758 }
8759
8760 function createInstanceTypeChecker(expectedClass) {
8761 function validate(props, propName, componentName, location, propFullName) {
8762 if (!(props[propName] instanceof expectedClass)) {
8763 var expectedClassName = expectedClass.name || ANONYMOUS;
8764 var actualClassName = getClassName(props[propName]);
8765 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
8766 }
8767 return null;
8768 }
8769 return createChainableTypeChecker(validate);
8770 }
8771
8772 function createEnumTypeChecker(expectedValues) {
8773 if (!Array.isArray(expectedValues)) {
8774 if (true) {
8775 if (arguments.length > 1) {
8776 printWarning(
8777 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +
8778 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'
8779 );
8780 } else {
8781 printWarning('Invalid argument supplied to oneOf, expected an array.');
8782 }
8783 }
8784 return emptyFunctionThatReturnsNull;
8785 }
8786
8787 function validate(props, propName, componentName, location, propFullName) {
8788 var propValue = props[propName];
8789 for (var i = 0; i < expectedValues.length; i++) {
8790 if (is(propValue, expectedValues[i])) {
8791 return null;
8792 }
8793 }
8794
8795 var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
8796 var type = getPreciseType(value);
8797 if (type === 'symbol') {
8798 return String(value);
8799 }
8800 return value;
8801 });
8802 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
8803 }
8804 return createChainableTypeChecker(validate);
8805 }
8806
8807 function createObjectOfTypeChecker(typeChecker) {
8808 function validate(props, propName, componentName, location, propFullName) {
8809 if (typeof typeChecker !== 'function') {
8810 return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
8811 }
8812 var propValue = props[propName];
8813 var propType = getPropType(propValue);
8814 if (propType !== 'object') {
8815 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
8816 }
8817 for (var key in propValue) {
8818 if (has(propValue, key)) {
8819 var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
8820 if (error instanceof Error) {
8821 return error;
8822 }
8823 }
8824 }
8825 return null;
8826 }
8827 return createChainableTypeChecker(validate);
8828 }
8829
8830 function createUnionTypeChecker(arrayOfTypeCheckers) {
8831 if (!Array.isArray(arrayOfTypeCheckers)) {
8832 true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0;
8833 return emptyFunctionThatReturnsNull;
8834 }
8835
8836 for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
8837 var checker = arrayOfTypeCheckers[i];
8838 if (typeof checker !== 'function') {
8839 printWarning(
8840 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +
8841 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'
8842 );
8843 return emptyFunctionThatReturnsNull;
8844 }
8845 }
8846
8847 function validate(props, propName, componentName, location, propFullName) {
8848 var expectedTypes = [];
8849 for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
8850 var checker = arrayOfTypeCheckers[i];
8851 var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);
8852 if (checkerResult == null) {
8853 return null;
8854 }
8855 if (checkerResult.data && has(checkerResult.data, 'expectedType')) {
8856 expectedTypes.push(checkerResult.data.expectedType);
8857 }
8858 }
8859 var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';
8860 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));
8861 }
8862 return createChainableTypeChecker(validate);
8863 }
8864
8865 function createNodeChecker() {
8866 function validate(props, propName, componentName, location, propFullName) {
8867 if (!isNode(props[propName])) {
8868 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
8869 }
8870 return null;
8871 }
8872 return createChainableTypeChecker(validate);
8873 }
8874
8875 function invalidValidatorError(componentName, location, propFullName, key, type) {
8876 return new PropTypeError(
8877 (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +
8878 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'
8879 );
8880 }
8881
8882 function createShapeTypeChecker(shapeTypes) {
8883 function validate(props, propName, componentName, location, propFullName) {
8884 var propValue = props[propName];
8885 var propType = getPropType(propValue);
8886 if (propType !== 'object') {
8887 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
8888 }
8889 for (var key in shapeTypes) {
8890 var checker = shapeTypes[key];
8891 if (typeof checker !== 'function') {
8892 return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));
8893 }
8894 var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
8895 if (error) {
8896 return error;
8897 }
8898 }
8899 return null;
8900 }
8901 return createChainableTypeChecker(validate);
8902 }
8903
8904 function createStrictShapeTypeChecker(shapeTypes) {
8905 function validate(props, propName, componentName, location, propFullName) {
8906 var propValue = props[propName];
8907 var propType = getPropType(propValue);
8908 if (propType !== 'object') {
8909 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
8910 }
8911 // We need to check all keys in case some are required but missing from props.
8912 var allKeys = assign({}, props[propName], shapeTypes);
8913 for (var key in allKeys) {
8914 var checker = shapeTypes[key];
8915 if (has(shapeTypes, key) && typeof checker !== 'function') {
8916 return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));
8917 }
8918 if (!checker) {
8919 return new PropTypeError(
8920 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +
8921 '\nBad object: ' + JSON.stringify(props[propName], null, ' ') +
8922 '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')
8923 );
8924 }
8925 var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
8926 if (error) {
8927 return error;
8928 }
8929 }
8930 return null;
8931 }
8932
8933 return createChainableTypeChecker(validate);
8934 }
8935
8936 function isNode(propValue) {
8937 switch (typeof propValue) {
8938 case 'number':
8939 case 'string':
8940 case 'undefined':
8941 return true;
8942 case 'boolean':
8943 return !propValue;
8944 case 'object':
8945 if (Array.isArray(propValue)) {
8946 return propValue.every(isNode);
8947 }
8948 if (propValue === null || isValidElement(propValue)) {
8949 return true;
8950 }
8951
8952 var iteratorFn = getIteratorFn(propValue);
8953 if (iteratorFn) {
8954 var iterator = iteratorFn.call(propValue);
8955 var step;
8956 if (iteratorFn !== propValue.entries) {
8957 while (!(step = iterator.next()).done) {
8958 if (!isNode(step.value)) {
8959 return false;
8960 }
8961 }
8962 } else {
8963 // Iterator will provide entry [k,v] tuples rather than values.
8964 while (!(step = iterator.next()).done) {
8965 var entry = step.value;
8966 if (entry) {
8967 if (!isNode(entry[1])) {
8968 return false;
8969 }
8970 }
8971 }
8972 }
8973 } else {
8974 return false;
8975 }
8976
8977 return true;
8978 default:
8979 return false;
8980 }
8981 }
8982
8983 function isSymbol(propType, propValue) {
8984 // Native Symbol.
8985 if (propType === 'symbol') {
8986 return true;
8987 }
8988
8989 // falsy value can't be a Symbol
8990 if (!propValue) {
8991 return false;
8992 }
8993
8994 // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
8995 if (propValue['@@toStringTag'] === 'Symbol') {
8996 return true;
8997 }
8998
8999 // Fallback for non-spec compliant Symbols which are polyfilled.
9000 if (typeof Symbol === 'function' && propValue instanceof Symbol) {
9001 return true;
9002 }
9003
9004 return false;
9005 }
9006
9007 // Equivalent of `typeof` but with special handling for array and regexp.
9008 function getPropType(propValue) {
9009 var propType = typeof propValue;
9010 if (Array.isArray(propValue)) {
9011 return 'array';
9012 }
9013 if (propValue instanceof RegExp) {
9014 // Old webkits (at least until Android 4.0) return 'function' rather than
9015 // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
9016 // passes PropTypes.object.
9017 return 'object';
9018 }
9019 if (isSymbol(propType, propValue)) {
9020 return 'symbol';
9021 }
9022 return propType;
9023 }
9024
9025 // This handles more types than `getPropType`. Only used for error messages.
9026 // See `createPrimitiveTypeChecker`.
9027 function getPreciseType(propValue) {
9028 if (typeof propValue === 'undefined' || propValue === null) {
9029 return '' + propValue;
9030 }
9031 var propType = getPropType(propValue);
9032 if (propType === 'object') {
9033 if (propValue instanceof Date) {
9034 return 'date';
9035 } else if (propValue instanceof RegExp) {
9036 return 'regexp';
9037 }
9038 }
9039 return propType;
9040 }
9041
9042 // Returns a string that is postfixed to a warning about an invalid type.
9043 // For example, "undefined" or "of type array"
9044 function getPostfixForTypeWarning(value) {
9045 var type = getPreciseType(value);
9046 switch (type) {
9047 case 'array':
9048 case 'object':
9049 return 'an ' + type;
9050 case 'boolean':
9051 case 'date':
9052 case 'regexp':
9053 return 'a ' + type;
9054 default:
9055 return type;
9056 }
9057 }
9058
9059 // Returns class name of the object, if any.
9060 function getClassName(propValue) {
9061 if (!propValue.constructor || !propValue.constructor.name) {
9062 return ANONYMOUS;
9063 }
9064 return propValue.constructor.name;
9065 }
9066
9067 ReactPropTypes.checkPropTypes = checkPropTypes;
9068 ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
9069 ReactPropTypes.PropTypes = ReactPropTypes;
9070
9071 return ReactPropTypes;
9072 };
9073
9074
9075 /***/ }),
9076
9077 /***/ "../node_modules/prop-types/index.js":
9078 /*!*******************************************!*\
9079 !*** ../node_modules/prop-types/index.js ***!
9080 \*******************************************/
9081 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
9082
9083 /**
9084 * Copyright (c) 2013-present, Facebook, Inc.
9085 *
9086 * This source code is licensed under the MIT license found in the
9087 * LICENSE file in the root directory of this source tree.
9088 */
9089
9090 if (true) {
9091 var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js");
9092
9093 // By explicitly using `prop-types` you are opting into new development behavior.
9094 // http://fb.me/prop-types-in-prod
9095 var throwOnDirectAccess = true;
9096 module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "../node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess);
9097 } else // removed by dead control flow
9098 {}
9099
9100
9101 /***/ }),
9102
9103 /***/ "../node_modules/prop-types/lib/ReactPropTypesSecret.js":
9104 /*!**************************************************************!*\
9105 !*** ../node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
9106 \**************************************************************/
9107 /***/ ((module) => {
9108
9109 "use strict";
9110 /**
9111 * Copyright (c) 2013-present, Facebook, Inc.
9112 *
9113 * This source code is licensed under the MIT license found in the
9114 * LICENSE file in the root directory of this source tree.
9115 */
9116
9117
9118
9119 var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
9120
9121 module.exports = ReactPropTypesSecret;
9122
9123
9124 /***/ }),
9125
9126 /***/ "../node_modules/prop-types/lib/has.js":
9127 /*!*********************************************!*\
9128 !*** ../node_modules/prop-types/lib/has.js ***!
9129 \*********************************************/
9130 /***/ ((module) => {
9131
9132 module.exports = Function.call.bind(Object.prototype.hasOwnProperty);
9133
9134
9135 /***/ }),
9136
9137 /***/ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js":
9138 /*!************************************************************************************!*\
9139 !*** ../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js ***!
9140 \************************************************************************************/
9141 /***/ ((__unused_webpack_module, exports) => {
9142
9143 "use strict";
9144 /** @license React v16.13.1
9145 * react-is.development.js
9146 *
9147 * Copyright (c) Facebook, Inc. and its affiliates.
9148 *
9149 * This source code is licensed under the MIT license found in the
9150 * LICENSE file in the root directory of this source tree.
9151 */
9152
9153
9154
9155
9156
9157 if (true) {
9158 (function() {
9159 'use strict';
9160
9161 // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
9162 // nor polyfill, then a plain number is used for performance.
9163 var hasSymbol = typeof Symbol === 'function' && Symbol.for;
9164 var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
9165 var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
9166 var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
9167 var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
9168 var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
9169 var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
9170 var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
9171 // (unstable) APIs that have been removed. Can we remove the symbols?
9172
9173 var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
9174 var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
9175 var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
9176 var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
9177 var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
9178 var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
9179 var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
9180 var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
9181 var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
9182 var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
9183 var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
9184
9185 function isValidElementType(type) {
9186 return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
9187 type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
9188 }
9189
9190 function typeOf(object) {
9191 if (typeof object === 'object' && object !== null) {
9192 var $$typeof = object.$$typeof;
9193
9194 switch ($$typeof) {
9195 case REACT_ELEMENT_TYPE:
9196 var type = object.type;
9197
9198 switch (type) {
9199 case REACT_ASYNC_MODE_TYPE:
9200 case REACT_CONCURRENT_MODE_TYPE:
9201 case REACT_FRAGMENT_TYPE:
9202 case REACT_PROFILER_TYPE:
9203 case REACT_STRICT_MODE_TYPE:
9204 case REACT_SUSPENSE_TYPE:
9205 return type;
9206
9207 default:
9208 var $$typeofType = type && type.$$typeof;
9209
9210 switch ($$typeofType) {
9211 case REACT_CONTEXT_TYPE:
9212 case REACT_FORWARD_REF_TYPE:
9213 case REACT_LAZY_TYPE:
9214 case REACT_MEMO_TYPE:
9215 case REACT_PROVIDER_TYPE:
9216 return $$typeofType;
9217
9218 default:
9219 return $$typeof;
9220 }
9221
9222 }
9223
9224 case REACT_PORTAL_TYPE:
9225 return $$typeof;
9226 }
9227 }
9228
9229 return undefined;
9230 } // AsyncMode is deprecated along with isAsyncMode
9231
9232 var AsyncMode = REACT_ASYNC_MODE_TYPE;
9233 var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
9234 var ContextConsumer = REACT_CONTEXT_TYPE;
9235 var ContextProvider = REACT_PROVIDER_TYPE;
9236 var Element = REACT_ELEMENT_TYPE;
9237 var ForwardRef = REACT_FORWARD_REF_TYPE;
9238 var Fragment = REACT_FRAGMENT_TYPE;
9239 var Lazy = REACT_LAZY_TYPE;
9240 var Memo = REACT_MEMO_TYPE;
9241 var Portal = REACT_PORTAL_TYPE;
9242 var Profiler = REACT_PROFILER_TYPE;
9243 var StrictMode = REACT_STRICT_MODE_TYPE;
9244 var Suspense = REACT_SUSPENSE_TYPE;
9245 var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated
9246
9247 function isAsyncMode(object) {
9248 {
9249 if (!hasWarnedAboutDeprecatedIsAsyncMode) {
9250 hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint
9251
9252 console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
9253 }
9254 }
9255
9256 return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
9257 }
9258 function isConcurrentMode(object) {
9259 return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
9260 }
9261 function isContextConsumer(object) {
9262 return typeOf(object) === REACT_CONTEXT_TYPE;
9263 }
9264 function isContextProvider(object) {
9265 return typeOf(object) === REACT_PROVIDER_TYPE;
9266 }
9267 function isElement(object) {
9268 return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
9269 }
9270 function isForwardRef(object) {
9271 return typeOf(object) === REACT_FORWARD_REF_TYPE;
9272 }
9273 function isFragment(object) {
9274 return typeOf(object) === REACT_FRAGMENT_TYPE;
9275 }
9276 function isLazy(object) {
9277 return typeOf(object) === REACT_LAZY_TYPE;
9278 }
9279 function isMemo(object) {
9280 return typeOf(object) === REACT_MEMO_TYPE;
9281 }
9282 function isPortal(object) {
9283 return typeOf(object) === REACT_PORTAL_TYPE;
9284 }
9285 function isProfiler(object) {
9286 return typeOf(object) === REACT_PROFILER_TYPE;
9287 }
9288 function isStrictMode(object) {
9289 return typeOf(object) === REACT_STRICT_MODE_TYPE;
9290 }
9291 function isSuspense(object) {
9292 return typeOf(object) === REACT_SUSPENSE_TYPE;
9293 }
9294
9295 exports.AsyncMode = AsyncMode;
9296 exports.ConcurrentMode = ConcurrentMode;
9297 exports.ContextConsumer = ContextConsumer;
9298 exports.ContextProvider = ContextProvider;
9299 exports.Element = Element;
9300 exports.ForwardRef = ForwardRef;
9301 exports.Fragment = Fragment;
9302 exports.Lazy = Lazy;
9303 exports.Memo = Memo;
9304 exports.Portal = Portal;
9305 exports.Profiler = Profiler;
9306 exports.StrictMode = StrictMode;
9307 exports.Suspense = Suspense;
9308 exports.isAsyncMode = isAsyncMode;
9309 exports.isConcurrentMode = isConcurrentMode;
9310 exports.isContextConsumer = isContextConsumer;
9311 exports.isContextProvider = isContextProvider;
9312 exports.isElement = isElement;
9313 exports.isForwardRef = isForwardRef;
9314 exports.isFragment = isFragment;
9315 exports.isLazy = isLazy;
9316 exports.isMemo = isMemo;
9317 exports.isPortal = isPortal;
9318 exports.isProfiler = isProfiler;
9319 exports.isStrictMode = isStrictMode;
9320 exports.isSuspense = isSuspense;
9321 exports.isValidElementType = isValidElementType;
9322 exports.typeOf = typeOf;
9323 })();
9324 }
9325
9326
9327 /***/ }),
9328
9329 /***/ "../node_modules/prop-types/node_modules/react-is/index.js":
9330 /*!*****************************************************************!*\
9331 !*** ../node_modules/prop-types/node_modules/react-is/index.js ***!
9332 \*****************************************************************/
9333 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
9334
9335 "use strict";
9336
9337
9338 if (false) // removed by dead control flow
9339 {} else {
9340 module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js");
9341 }
9342
9343
9344 /***/ }),
9345
9346 /***/ "../node_modules/react-dom/client.js":
9347 /*!*******************************************!*\
9348 !*** ../node_modules/react-dom/client.js ***!
9349 \*******************************************/
9350 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9351
9352 "use strict";
9353
9354
9355 var m = __webpack_require__(/*! react-dom */ "react-dom");
9356 if (false) // removed by dead control flow
9357 {} else {
9358 var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
9359 exports.createRoot = function(c, o) {
9360 i.usingClientEntryPoint = true;
9361 try {
9362 return m.createRoot(c, o);
9363 } finally {
9364 i.usingClientEntryPoint = false;
9365 }
9366 };
9367 exports.hydrateRoot = function(c, h, o) {
9368 i.usingClientEntryPoint = true;
9369 try {
9370 return m.hydrateRoot(c, h, o);
9371 } finally {
9372 i.usingClientEntryPoint = false;
9373 }
9374 };
9375 }
9376
9377
9378 /***/ }),
9379
9380 /***/ "../node_modules/react-draggable/build/cjs/Draggable.js":
9381 /*!**************************************************************!*\
9382 !*** ../node_modules/react-draggable/build/cjs/Draggable.js ***!
9383 \**************************************************************/
9384 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9385
9386 "use strict";
9387
9388
9389 Object.defineProperty(exports, "__esModule", ({
9390 value: true
9391 }));
9392 Object.defineProperty(exports, "DraggableCore", ({
9393 enumerable: true,
9394 get: function () {
9395 return _DraggableCore.default;
9396 }
9397 }));
9398 exports["default"] = void 0;
9399 var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
9400 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
9401 var _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ "react-dom"));
9402 var _clsx = __webpack_require__(/*! clsx */ "../node_modules/react-draggable/node_modules/clsx/dist/clsx.js");
9403 var _domFns = __webpack_require__(/*! ./utils/domFns */ "../node_modules/react-draggable/build/cjs/utils/domFns.js");
9404 var _positionFns = __webpack_require__(/*! ./utils/positionFns */ "../node_modules/react-draggable/build/cjs/utils/positionFns.js");
9405 var _shims = __webpack_require__(/*! ./utils/shims */ "../node_modules/react-draggable/build/cjs/utils/shims.js");
9406 var _DraggableCore = _interopRequireDefault(__webpack_require__(/*! ./DraggableCore */ "../node_modules/react-draggable/build/cjs/DraggableCore.js"));
9407 var _log = _interopRequireDefault(__webpack_require__(/*! ./utils/log */ "../node_modules/react-draggable/build/cjs/utils/log.js"));
9408 function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9409 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
9410 function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
9411 function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
9412 function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
9413 function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /*:: import type {ControlPosition, PositionOffsetControlPosition, DraggableCoreProps, DraggableCoreDefaultProps} from './DraggableCore';*/
9414 /*:: import type {Bounds, DraggableEventHandler} from './utils/types';*/
9415 /*:: import type {Element as ReactElement} from 'react';*/
9416 /*:: type DraggableState = {
9417 dragging: boolean,
9418 dragged: boolean,
9419 x: number, y: number,
9420 slackX: number, slackY: number,
9421 isElementSVG: boolean,
9422 prevPropsPosition: ?ControlPosition,
9423 };*/
9424 /*:: export type DraggableDefaultProps = {
9425 ...DraggableCoreDefaultProps,
9426 axis: 'both' | 'x' | 'y' | 'none',
9427 bounds: Bounds | string | false,
9428 defaultClassName: string,
9429 defaultClassNameDragging: string,
9430 defaultClassNameDragged: string,
9431 defaultPosition: ControlPosition,
9432 scale: number,
9433 };*/
9434 /*:: export type DraggableProps = {
9435 ...DraggableCoreProps,
9436 ...DraggableDefaultProps,
9437 positionOffset: PositionOffsetControlPosition,
9438 position: ControlPosition,
9439 };*/
9440 //
9441 // Define <Draggable>
9442 //
9443 class Draggable extends React.Component /*:: <DraggableProps, DraggableState>*/{
9444 // React 16.3+
9445 // Arity (props, state)
9446 static getDerivedStateFromProps(_ref /*:: */, _ref2 /*:: */) /*: ?Partial<DraggableState>*/{
9447 let {
9448 position
9449 } /*: DraggableProps*/ = _ref /*: DraggableProps*/;
9450 let {
9451 prevPropsPosition
9452 } /*: DraggableState*/ = _ref2 /*: DraggableState*/;
9453 // Set x/y if a new position is provided in props that is different than the previous.
9454 if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {
9455 (0, _log.default)('Draggable: getDerivedStateFromProps %j', {
9456 position,
9457 prevPropsPosition
9458 });
9459 return {
9460 x: position.x,
9461 y: position.y,
9462 prevPropsPosition: {
9463 ...position
9464 }
9465 };
9466 }
9467 return null;
9468 }
9469 constructor(props /*: DraggableProps*/) {
9470 super(props);
9471 _defineProperty(this, "onDragStart", (e, coreData) => {
9472 (0, _log.default)('Draggable: onDragStart: %j', coreData);
9473
9474 // Short-circuit if user's callback killed it.
9475 const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData));
9476 // Kills start event on core as well, so move handlers are never bound.
9477 if (shouldStart === false) return false;
9478 this.setState({
9479 dragging: true,
9480 dragged: true
9481 });
9482 });
9483 _defineProperty(this, "onDrag", (e, coreData) => {
9484 if (!this.state.dragging) return false;
9485 (0, _log.default)('Draggable: onDrag: %j', coreData);
9486 const uiData = (0, _positionFns.createDraggableData)(this, coreData);
9487 const newState = {
9488 x: uiData.x,
9489 y: uiData.y,
9490 slackX: 0,
9491 slackY: 0
9492 };
9493
9494 // Keep within bounds.
9495 if (this.props.bounds) {
9496 // Save original x and y.
9497 const {
9498 x,
9499 y
9500 } = newState;
9501
9502 // Add slack to the values used to calculate bound position. This will ensure that if
9503 // we start removing slack, the element won't react to it right away until it's been
9504 // completely removed.
9505 newState.x += this.state.slackX;
9506 newState.y += this.state.slackY;
9507
9508 // Get bound position. This will ceil/floor the x and y within the boundaries.
9509 const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);
9510 newState.x = newStateX;
9511 newState.y = newStateY;
9512
9513 // Recalculate slack by noting how much was shaved by the boundPosition handler.
9514 newState.slackX = this.state.slackX + (x - newState.x);
9515 newState.slackY = this.state.slackY + (y - newState.y);
9516
9517 // Update the event we fire to reflect what really happened after bounds took effect.
9518 uiData.x = newState.x;
9519 uiData.y = newState.y;
9520 uiData.deltaX = newState.x - this.state.x;
9521 uiData.deltaY = newState.y - this.state.y;
9522 }
9523
9524 // Short-circuit if user's callback killed it.
9525 const shouldUpdate = this.props.onDrag(e, uiData);
9526 if (shouldUpdate === false) return false;
9527 this.setState(newState);
9528 });
9529 _defineProperty(this, "onDragStop", (e, coreData) => {
9530 if (!this.state.dragging) return false;
9531
9532 // Short-circuit if user's callback killed it.
9533 const shouldContinue = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));
9534 if (shouldContinue === false) return false;
9535 (0, _log.default)('Draggable: onDragStop: %j', coreData);
9536 const newState /*: Partial<DraggableState>*/ = {
9537 dragging: false,
9538 slackX: 0,
9539 slackY: 0
9540 };
9541
9542 // If this is a controlled component, the result of this operation will be to
9543 // revert back to the old position. We expect a handler on `onDragStop`, at the least.
9544 const controlled = Boolean(this.props.position);
9545 if (controlled) {
9546 const {
9547 x,
9548 y
9549 } = this.props.position;
9550 newState.x = x;
9551 newState.y = y;
9552 }
9553 this.setState(newState);
9554 });
9555 this.state = {
9556 // Whether or not we are currently dragging.
9557 dragging: false,
9558 // Whether or not we have been dragged before.
9559 dragged: false,
9560 // Current transform x and y.
9561 x: props.position ? props.position.x : props.defaultPosition.x,
9562 y: props.position ? props.position.y : props.defaultPosition.y,
9563 prevPropsPosition: {
9564 ...props.position
9565 },
9566 // Used for compensating for out-of-bounds drags
9567 slackX: 0,
9568 slackY: 0,
9569 // Can only determine if SVG after mounting
9570 isElementSVG: false
9571 };
9572 if (props.position && !(props.onDrag || props.onStop)) {
9573 // eslint-disable-next-line no-console
9574 console.warn('A `position` was applied to this <Draggable>, without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');
9575 }
9576 }
9577 componentDidMount() {
9578 // Check to see if the element passed is an instanceof SVGElement
9579 if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {
9580 this.setState({
9581 isElementSVG: true
9582 });
9583 }
9584 }
9585 componentWillUnmount() {
9586 if (this.state.dragging) {
9587 this.setState({
9588 dragging: false
9589 }); // prevents invariant if unmounted while dragging
9590 }
9591 }
9592
9593 // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find
9594 // the underlying DOM node ourselves. See the README for more information.
9595 findDOMNode() /*: ?HTMLElement*/{
9596 return this.props?.nodeRef?.current ?? _reactDom.default.findDOMNode(this);
9597 }
9598 render() /*: ReactElement<any>*/{
9599 const {
9600 axis,
9601 bounds,
9602 children,
9603 defaultPosition,
9604 defaultClassName,
9605 defaultClassNameDragging,
9606 defaultClassNameDragged,
9607 position,
9608 positionOffset,
9609 scale,
9610 ...draggableCoreProps
9611 } = this.props;
9612 let style = {};
9613 let svgTransform = null;
9614
9615 // If this is controlled, we don't want to move it - unless it's dragging.
9616 const controlled = Boolean(position);
9617 const draggable = !controlled || this.state.dragging;
9618 const validPosition = position || defaultPosition;
9619 const transformOpts = {
9620 // Set left if horizontal drag is enabled
9621 x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,
9622 // Set top if vertical drag is enabled
9623 y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y
9624 };
9625
9626 // If this element was SVG, we use the `transform` attribute.
9627 if (this.state.isElementSVG) {
9628 svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);
9629 } else {
9630 // Add a CSS transform to move the element around. This allows us to move the element around
9631 // without worrying about whether or not it is relatively or absolutely positioned.
9632 // If the item you are dragging already has a transform set, wrap it in a <span> so <Draggable>
9633 // has a clean slate.
9634 style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);
9635 }
9636
9637 // Mark with class while dragging
9638 const className = (0, _clsx.clsx)(children.props.className || '', defaultClassName, {
9639 [defaultClassNameDragging]: this.state.dragging,
9640 [defaultClassNameDragged]: this.state.dragged
9641 });
9642
9643 // Reuse the child provided
9644 // This makes it flexible to use whatever element is wanted (div, ul, etc)
9645 return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {
9646 onStart: this.onDragStart,
9647 onDrag: this.onDrag,
9648 onStop: this.onDragStop
9649 }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {
9650 className: className,
9651 style: {
9652 ...children.props.style,
9653 ...style
9654 },
9655 transform: svgTransform
9656 }));
9657 }
9658 }
9659 exports["default"] = Draggable;
9660 _defineProperty(Draggable, "displayName", 'Draggable');
9661 _defineProperty(Draggable, "propTypes", {
9662 // Accepts all props <DraggableCore> accepts.
9663 ..._DraggableCore.default.propTypes,
9664 /**
9665 * `axis` determines which axis the draggable can move.
9666 *
9667 * Note that all callbacks will still return data as normal. This only
9668 * controls flushing to the DOM.
9669 *
9670 * 'both' allows movement horizontally and vertically.
9671 * 'x' limits movement to horizontal axis.
9672 * 'y' limits movement to vertical axis.
9673 * 'none' limits all movement.
9674 *
9675 * Defaults to 'both'.
9676 */
9677 axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),
9678 /**
9679 * `bounds` determines the range of movement available to the element.
9680 * Available values are:
9681 *
9682 * 'parent' restricts movement within the Draggable's parent node.
9683 *
9684 * Alternatively, pass an object with the following properties, all of which are optional:
9685 *
9686 * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}
9687 *
9688 * All values are in px.
9689 *
9690 * Example:
9691 *
9692 * ```jsx
9693 * let App = React.createClass({
9694 * render: function () {
9695 * return (
9696 * <Draggable bounds={{right: 300, bottom: 300}}>
9697 * <div>Content</div>
9698 * </Draggable>
9699 * );
9700 * }
9701 * });
9702 * ```
9703 */
9704 bounds: _propTypes.default.oneOfType([_propTypes.default.shape({
9705 left: _propTypes.default.number,
9706 right: _propTypes.default.number,
9707 top: _propTypes.default.number,
9708 bottom: _propTypes.default.number
9709 }), _propTypes.default.string, _propTypes.default.oneOf([false])]),
9710 defaultClassName: _propTypes.default.string,
9711 defaultClassNameDragging: _propTypes.default.string,
9712 defaultClassNameDragged: _propTypes.default.string,
9713 /**
9714 * `defaultPosition` specifies the x and y that the dragged item should start at
9715 *
9716 * Example:
9717 *
9718 * ```jsx
9719 * let App = React.createClass({
9720 * render: function () {
9721 * return (
9722 * <Draggable defaultPosition={{x: 25, y: 25}}>
9723 * <div>I start with transformX: 25px and transformY: 25px;</div>
9724 * </Draggable>
9725 * );
9726 * }
9727 * });
9728 * ```
9729 */
9730 defaultPosition: _propTypes.default.shape({
9731 x: _propTypes.default.number,
9732 y: _propTypes.default.number
9733 }),
9734 positionOffset: _propTypes.default.shape({
9735 x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
9736 y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])
9737 }),
9738 /**
9739 * `position`, if present, defines the current position of the element.
9740 *
9741 * This is similar to how form elements in React work - if no `position` is supplied, the component
9742 * is uncontrolled.
9743 *
9744 * Example:
9745 *
9746 * ```jsx
9747 * let App = React.createClass({
9748 * render: function () {
9749 * return (
9750 * <Draggable position={{x: 25, y: 25}}>
9751 * <div>I start with transformX: 25px and transformY: 25px;</div>
9752 * </Draggable>
9753 * );
9754 * }
9755 * });
9756 * ```
9757 */
9758 position: _propTypes.default.shape({
9759 x: _propTypes.default.number,
9760 y: _propTypes.default.number
9761 }),
9762 /**
9763 * These properties should be defined on the child, not here.
9764 */
9765 className: _shims.dontSetMe,
9766 style: _shims.dontSetMe,
9767 transform: _shims.dontSetMe
9768 });
9769 _defineProperty(Draggable, "defaultProps", {
9770 ..._DraggableCore.default.defaultProps,
9771 axis: 'both',
9772 bounds: false,
9773 defaultClassName: 'react-draggable',
9774 defaultClassNameDragging: 'react-draggable-dragging',
9775 defaultClassNameDragged: 'react-draggable-dragged',
9776 defaultPosition: {
9777 x: 0,
9778 y: 0
9779 },
9780 scale: 1
9781 });
9782
9783 /***/ }),
9784
9785 /***/ "../node_modules/react-draggable/build/cjs/DraggableCore.js":
9786 /*!******************************************************************!*\
9787 !*** ../node_modules/react-draggable/build/cjs/DraggableCore.js ***!
9788 \******************************************************************/
9789 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9790
9791 "use strict";
9792
9793
9794 Object.defineProperty(exports, "__esModule", ({
9795 value: true
9796 }));
9797 exports["default"] = void 0;
9798 var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
9799 var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
9800 var _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ "react-dom"));
9801 var _domFns = __webpack_require__(/*! ./utils/domFns */ "../node_modules/react-draggable/build/cjs/utils/domFns.js");
9802 var _positionFns = __webpack_require__(/*! ./utils/positionFns */ "../node_modules/react-draggable/build/cjs/utils/positionFns.js");
9803 var _shims = __webpack_require__(/*! ./utils/shims */ "../node_modules/react-draggable/build/cjs/utils/shims.js");
9804 var _log = _interopRequireDefault(__webpack_require__(/*! ./utils/log */ "../node_modules/react-draggable/build/cjs/utils/log.js"));
9805 function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9806 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
9807 function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
9808 function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
9809 function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9810 /*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/
9811 /*:: import type {Element as ReactElement} from 'react';*/
9812 // Simple abstraction for dragging events names.
9813 const eventsFor = {
9814 touch: {
9815 start: 'touchstart',
9816 move: 'touchmove',
9817 stop: 'touchend'
9818 },
9819 mouse: {
9820 start: 'mousedown',
9821 move: 'mousemove',
9822 stop: 'mouseup'
9823 }
9824 };
9825
9826 // Default to mouse events.
9827 let dragEventFor = eventsFor.mouse;
9828 /*:: export type DraggableData = {
9829 node: HTMLElement,
9830 x: number, y: number,
9831 deltaX: number, deltaY: number,
9832 lastX: number, lastY: number,
9833 };*/
9834 /*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/
9835 /*:: export type ControlPosition = {x: number, y: number};*/
9836 /*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/
9837 /*:: export type DraggableCoreDefaultProps = {
9838 allowAnyClick: boolean,
9839 allowMobileScroll: boolean,
9840 disabled: boolean,
9841 enableUserSelectHack: boolean,
9842 onStart: DraggableEventHandler,
9843 onDrag: DraggableEventHandler,
9844 onStop: DraggableEventHandler,
9845 onMouseDown: (e: MouseEvent) => void,
9846 scale: number,
9847 };*/
9848 /*:: export type DraggableCoreProps = {
9849 ...DraggableCoreDefaultProps,
9850 cancel: string,
9851 children: ReactElement<any>,
9852 offsetParent: HTMLElement,
9853 grid: [number, number],
9854 handle: string,
9855 nodeRef?: ?React.ElementRef<any>,
9856 };*/
9857 //
9858 // Define <DraggableCore>.
9859 //
9860 // <DraggableCore> is for advanced usage of <Draggable>. It maintains minimal internal state so it can
9861 // work well with libraries that require more control over the element.
9862 //
9863
9864 class DraggableCore extends React.Component /*:: <DraggableCoreProps>*/{
9865 constructor() {
9866 super(...arguments);
9867 _defineProperty(this, "dragging", false);
9868 // Used while dragging to determine deltas.
9869 _defineProperty(this, "lastX", NaN);
9870 _defineProperty(this, "lastY", NaN);
9871 _defineProperty(this, "touchIdentifier", null);
9872 _defineProperty(this, "mounted", false);
9873 _defineProperty(this, "handleDragStart", e => {
9874 // Make it possible to attach event handlers on top of this one.
9875 this.props.onMouseDown(e);
9876
9877 // Only accept left-clicks.
9878 if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;
9879
9880 // Get nodes. Be sure to grab relative document (could be iframed)
9881 const thisNode = this.findDOMNode();
9882 if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {
9883 throw new Error('<DraggableCore> not mounted on DragStart!');
9884 }
9885 const {
9886 ownerDocument
9887 } = thisNode;
9888
9889 // Short circuit if handle or cancel prop was provided and selector doesn't match.
9890 if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {
9891 return;
9892 }
9893
9894 // Prevent scrolling on mobile devices, like ipad/iphone.
9895 // Important that this is after handle/cancel.
9896 if (e.type === 'touchstart' && !this.props.allowMobileScroll) e.preventDefault();
9897
9898 // Set touch identifier in component state if this is a touch event. This allows us to
9899 // distinguish between individual touches on multitouch screens by identifying which
9900 // touchpoint was set to this element.
9901 const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);
9902 this.touchIdentifier = touchIdentifier;
9903
9904 // Get the current drag point from the event. This is used as the offset.
9905 const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);
9906 if (position == null) return; // not possible but satisfies flow
9907 const {
9908 x,
9909 y
9910 } = position;
9911
9912 // Create an event object with all the data parents need to make a decision here.
9913 const coreEvent = (0, _positionFns.createCoreData)(this, x, y);
9914 (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent);
9915
9916 // Call event handler. If it returns explicit false, cancel.
9917 (0, _log.default)('calling', this.props.onStart);
9918 const shouldUpdate = this.props.onStart(e, coreEvent);
9919 if (shouldUpdate === false || this.mounted === false) return;
9920
9921 // Add a style to the body to disable user-select. This prevents text from
9922 // being selected all over the page.
9923 if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);
9924
9925 // Initiate dragging. Set the current x and y as offsets
9926 // so we know how much we've moved during the drag. This allows us
9927 // to drag elements around even if they have been moved, without issue.
9928 this.dragging = true;
9929 this.lastX = x;
9930 this.lastY = y;
9931
9932 // Add events to the document directly so we catch when the user's mouse/touch moves outside of
9933 // this element. We use different events depending on whether or not we have detected that this
9934 // is a touch-capable device.
9935 (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);
9936 (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);
9937 });
9938 _defineProperty(this, "handleDrag", e => {
9939 // Get the current drag point from the event. This is used as the offset.
9940 const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);
9941 if (position == null) return;
9942 let {
9943 x,
9944 y
9945 } = position;
9946
9947 // Snap to grid if prop has been provided
9948 if (Array.isArray(this.props.grid)) {
9949 let deltaX = x - this.lastX,
9950 deltaY = y - this.lastY;
9951 [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);
9952 if (!deltaX && !deltaY) return; // skip useless drag
9953 x = this.lastX + deltaX, y = this.lastY + deltaY;
9954 }
9955 const coreEvent = (0, _positionFns.createCoreData)(this, x, y);
9956 (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent);
9957
9958 // Call event handler. If it returns explicit false, trigger end.
9959 const shouldUpdate = this.props.onDrag(e, coreEvent);
9960 if (shouldUpdate === false || this.mounted === false) {
9961 try {
9962 // $FlowIgnore
9963 this.handleDragStop(new MouseEvent('mouseup'));
9964 } catch (err) {
9965 // Old browsers
9966 const event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);
9967 // I see why this insanity was deprecated
9968 // $FlowIgnore
9969 event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
9970 this.handleDragStop(event);
9971 }
9972 return;
9973 }
9974 this.lastX = x;
9975 this.lastY = y;
9976 });
9977 _defineProperty(this, "handleDragStop", e => {
9978 if (!this.dragging) return;
9979 const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);
9980 if (position == null) return;
9981 let {
9982 x,
9983 y
9984 } = position;
9985
9986 // Snap to grid if prop has been provided
9987 if (Array.isArray(this.props.grid)) {
9988 let deltaX = x - this.lastX || 0;
9989 let deltaY = y - this.lastY || 0;
9990 [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);
9991 x = this.lastX + deltaX, y = this.lastY + deltaY;
9992 }
9993 const coreEvent = (0, _positionFns.createCoreData)(this, x, y);
9994
9995 // Call event handler
9996 const shouldContinue = this.props.onStop(e, coreEvent);
9997 if (shouldContinue === false || this.mounted === false) return false;
9998 const thisNode = this.findDOMNode();
9999 if (thisNode) {
10000 // Remove user-select hack
10001 if (this.props.enableUserSelectHack) (0, _domFns.scheduleRemoveUserSelectStyles)(thisNode.ownerDocument);
10002 }
10003 (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent);
10004
10005 // Reset the el.
10006 this.dragging = false;
10007 this.lastX = NaN;
10008 this.lastY = NaN;
10009 if (thisNode) {
10010 // Remove event handlers
10011 (0, _log.default)('DraggableCore: Removing handlers');
10012 (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);
10013 (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);
10014 }
10015 });
10016 _defineProperty(this, "onMouseDown", e => {
10017 dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse
10018
10019 return this.handleDragStart(e);
10020 });
10021 _defineProperty(this, "onMouseUp", e => {
10022 dragEventFor = eventsFor.mouse;
10023 return this.handleDragStop(e);
10024 });
10025 // Same as onMouseDown (start drag), but now consider this a touch device.
10026 _defineProperty(this, "onTouchStart", e => {
10027 // We're on a touch device now, so change the event handlers
10028 dragEventFor = eventsFor.touch;
10029 return this.handleDragStart(e);
10030 });
10031 _defineProperty(this, "onTouchEnd", e => {
10032 // We're on a touch device now, so change the event handlers
10033 dragEventFor = eventsFor.touch;
10034 return this.handleDragStop(e);
10035 });
10036 }
10037 componentDidMount() {
10038 this.mounted = true;
10039 // Touch handlers must be added with {passive: false} to be cancelable.
10040 // https://developers.google.com/web/updates/2017/01/scrolling-intervention
10041 const thisNode = this.findDOMNode();
10042 if (thisNode) {
10043 (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {
10044 passive: false
10045 });
10046 }
10047 }
10048 componentWillUnmount() {
10049 this.mounted = false;
10050 // Remove any leftover event handlers. Remove both touch and mouse handlers in case
10051 // some browser quirk caused a touch event to fire during a mouse move, or vice versa.
10052 const thisNode = this.findDOMNode();
10053 if (thisNode) {
10054 const {
10055 ownerDocument
10056 } = thisNode;
10057 (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);
10058 (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);
10059 (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);
10060 (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);
10061 (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {
10062 passive: false
10063 });
10064 if (this.props.enableUserSelectHack) (0, _domFns.scheduleRemoveUserSelectStyles)(ownerDocument);
10065 }
10066 }
10067
10068 // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find
10069 // the underlying DOM node ourselves. See the README for more information.
10070 findDOMNode() /*: ?HTMLElement*/{
10071 return this.props?.nodeRef ? this.props?.nodeRef?.current : _reactDom.default.findDOMNode(this);
10072 }
10073 render() /*: React.Element<any>*/{
10074 // Reuse the child provided
10075 // This makes it flexible to use whatever element is wanted (div, ul, etc)
10076 return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {
10077 // Note: mouseMove handler is attached to document so it will still function
10078 // when the user drags quickly and leaves the bounds of the element.
10079 onMouseDown: this.onMouseDown,
10080 onMouseUp: this.onMouseUp,
10081 // onTouchStart is added on `componentDidMount` so they can be added with
10082 // {passive: false}, which allows it to cancel. See
10083 // https://developers.google.com/web/updates/2017/01/scrolling-intervention
10084 onTouchEnd: this.onTouchEnd
10085 });
10086 }
10087 }
10088 exports["default"] = DraggableCore;
10089 _defineProperty(DraggableCore, "displayName", 'DraggableCore');
10090 _defineProperty(DraggableCore, "propTypes", {
10091 /**
10092 * `allowAnyClick` allows dragging using any mouse button.
10093 * By default, we only accept the left button.
10094 *
10095 * Defaults to `false`.
10096 */
10097 allowAnyClick: _propTypes.default.bool,
10098 /**
10099 * `allowMobileScroll` turns off cancellation of the 'touchstart' event
10100 * on mobile devices. Only enable this if you are having trouble with click
10101 * events. Prefer using 'handle' / 'cancel' instead.
10102 *
10103 * Defaults to `false`.
10104 */
10105 allowMobileScroll: _propTypes.default.bool,
10106 children: _propTypes.default.node.isRequired,
10107 /**
10108 * `disabled`, if true, stops the <Draggable> from dragging. All handlers,
10109 * with the exception of `onMouseDown`, will not fire.
10110 */
10111 disabled: _propTypes.default.bool,
10112 /**
10113 * By default, we add 'user-select:none' attributes to the document body
10114 * to prevent ugly text selection during drag. If this is causing problems
10115 * for your app, set this to `false`.
10116 */
10117 enableUserSelectHack: _propTypes.default.bool,
10118 /**
10119 * `offsetParent`, if set, uses the passed DOM node to compute drag offsets
10120 * instead of using the parent node.
10121 */
10122 offsetParent: function (props /*: DraggableCoreProps*/, propName /*: $Keys<DraggableCoreProps>*/) {
10123 if (props[propName] && props[propName].nodeType !== 1) {
10124 throw new Error('Draggable\'s offsetParent must be a DOM Node.');
10125 }
10126 },
10127 /**
10128 * `grid` specifies the x and y that dragging should snap to.
10129 */
10130 grid: _propTypes.default.arrayOf(_propTypes.default.number),
10131 /**
10132 * `handle` specifies a selector to be used as the handle that initiates drag.
10133 *
10134 * Example:
10135 *
10136 * ```jsx
10137 * let App = React.createClass({
10138 * render: function () {
10139 * return (
10140 * <Draggable handle=".handle">
10141 * <div>
10142 * <div className="handle">Click me to drag</div>
10143 * <div>This is some other content</div>
10144 * </div>
10145 * </Draggable>
10146 * );
10147 * }
10148 * });
10149 * ```
10150 */
10151 handle: _propTypes.default.string,
10152 /**
10153 * `cancel` specifies a selector to be used to prevent drag initialization.
10154 *
10155 * Example:
10156 *
10157 * ```jsx
10158 * let App = React.createClass({
10159 * render: function () {
10160 * return(
10161 * <Draggable cancel=".cancel">
10162 * <div>
10163 * <div className="cancel">You can't drag from here</div>
10164 * <div>Dragging here works fine</div>
10165 * </div>
10166 * </Draggable>
10167 * );
10168 * }
10169 * });
10170 * ```
10171 */
10172 cancel: _propTypes.default.string,
10173 /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.
10174 * Unfortunately, in order for <Draggable> to work properly, we need raw access
10175 * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`
10176 * as in this example:
10177 *
10178 * function MyComponent() {
10179 * const nodeRef = React.useRef(null);
10180 * return (
10181 * <Draggable nodeRef={nodeRef}>
10182 * <div ref={nodeRef}>Example Target</div>
10183 * </Draggable>
10184 * );
10185 * }
10186 *
10187 * This can be used for arbitrarily nested components, so long as the ref ends up
10188 * pointing to the actual child DOM node and not a custom component.
10189 */
10190 nodeRef: _propTypes.default.object,
10191 /**
10192 * Called when dragging starts.
10193 * If this function returns the boolean false, dragging will be canceled.
10194 */
10195 onStart: _propTypes.default.func,
10196 /**
10197 * Called while dragging.
10198 * If this function returns the boolean false, dragging will be canceled.
10199 */
10200 onDrag: _propTypes.default.func,
10201 /**
10202 * Called when dragging stops.
10203 * If this function returns the boolean false, the drag will remain active.
10204 */
10205 onStop: _propTypes.default.func,
10206 /**
10207 * A workaround option which can be passed if onMouseDown needs to be accessed,
10208 * since it'll always be blocked (as there is internal use of onMouseDown)
10209 */
10210 onMouseDown: _propTypes.default.func,
10211 /**
10212 * `scale`, if set, applies scaling while dragging an element
10213 */
10214 scale: _propTypes.default.number,
10215 /**
10216 * These properties should be defined on the child, not here.
10217 */
10218 className: _shims.dontSetMe,
10219 style: _shims.dontSetMe,
10220 transform: _shims.dontSetMe
10221 });
10222 _defineProperty(DraggableCore, "defaultProps", {
10223 allowAnyClick: false,
10224 // by default only accept left click
10225 allowMobileScroll: false,
10226 disabled: false,
10227 enableUserSelectHack: true,
10228 onStart: function () {},
10229 onDrag: function () {},
10230 onStop: function () {},
10231 onMouseDown: function () {},
10232 scale: 1
10233 });
10234
10235 /***/ }),
10236
10237 /***/ "../node_modules/react-draggable/build/cjs/cjs.js":
10238 /*!********************************************************!*\
10239 !*** ../node_modules/react-draggable/build/cjs/cjs.js ***!
10240 \********************************************************/
10241 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
10242
10243 "use strict";
10244
10245
10246 const {
10247 default: Draggable,
10248 DraggableCore
10249 } = __webpack_require__(/*! ./Draggable */ "../node_modules/react-draggable/build/cjs/Draggable.js");
10250
10251 // Previous versions of this lib exported <Draggable> as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.
10252 // See https://github.com/mzabriskie/react-draggable/pull/254
10253 // and https://github.com/mzabriskie/react-draggable/issues/266
10254 module.exports = Draggable;
10255 module.exports["default"] = Draggable;
10256 module.exports.DraggableCore = DraggableCore;
10257
10258 /***/ }),
10259
10260 /***/ "../node_modules/react-draggable/build/cjs/utils/domFns.js":
10261 /*!*****************************************************************!*\
10262 !*** ../node_modules/react-draggable/build/cjs/utils/domFns.js ***!
10263 \*****************************************************************/
10264 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
10265
10266 "use strict";
10267
10268
10269 Object.defineProperty(exports, "__esModule", ({
10270 value: true
10271 }));
10272 exports.addClassName = addClassName;
10273 exports.addEvent = addEvent;
10274 exports.addUserSelectStyles = addUserSelectStyles;
10275 exports.createCSSTransform = createCSSTransform;
10276 exports.createSVGTransform = createSVGTransform;
10277 exports.getTouch = getTouch;
10278 exports.getTouchIdentifier = getTouchIdentifier;
10279 exports.getTranslation = getTranslation;
10280 exports.innerHeight = innerHeight;
10281 exports.innerWidth = innerWidth;
10282 exports.matchesSelector = matchesSelector;
10283 exports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;
10284 exports.offsetXYFromParent = offsetXYFromParent;
10285 exports.outerHeight = outerHeight;
10286 exports.outerWidth = outerWidth;
10287 exports.removeClassName = removeClassName;
10288 exports.removeEvent = removeEvent;
10289 exports.scheduleRemoveUserSelectStyles = scheduleRemoveUserSelectStyles;
10290 var _shims = __webpack_require__(/*! ./shims */ "../node_modules/react-draggable/build/cjs/utils/shims.js");
10291 var _getPrefix = _interopRequireWildcard(__webpack_require__(/*! ./getPrefix */ "../node_modules/react-draggable/build/cjs/utils/getPrefix.js"));
10292 function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10293 /*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/
10294 let matchesSelectorFunc = '';
10295 function matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/{
10296 if (!matchesSelectorFunc) {
10297 matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {
10298 // $FlowIgnore: Doesn't think elements are indexable
10299 return (0, _shims.isFunction)(el[method]);
10300 });
10301 }
10302
10303 // Might not be found entirely (not an Element?) - in that case, bail
10304 // $FlowIgnore: Doesn't think elements are indexable
10305 if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;
10306
10307 // $FlowIgnore: Doesn't think elements are indexable
10308 return el[matchesSelectorFunc](selector);
10309 }
10310
10311 // Works up the tree to the draggable itself attempting to match selector.
10312 function matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/{
10313 let node = el;
10314 do {
10315 if (matchesSelector(node, selector)) return true;
10316 if (node === baseNode) return false;
10317 // $FlowIgnore[incompatible-type]
10318 node = node.parentNode;
10319 } while (node);
10320 return false;
10321 }
10322 function addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{
10323 if (!el) return;
10324 const options = {
10325 capture: true,
10326 ...inputOptions
10327 };
10328 // $FlowIgnore[method-unbinding]
10329 if (el.addEventListener) {
10330 el.addEventListener(event, handler, options);
10331 } else if (el.attachEvent) {
10332 el.attachEvent('on' + event, handler);
10333 } else {
10334 // $FlowIgnore: Doesn't think elements are indexable
10335 el['on' + event] = handler;
10336 }
10337 }
10338 function removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{
10339 if (!el) return;
10340 const options = {
10341 capture: true,
10342 ...inputOptions
10343 };
10344 // $FlowIgnore[method-unbinding]
10345 if (el.removeEventListener) {
10346 el.removeEventListener(event, handler, options);
10347 } else if (el.detachEvent) {
10348 el.detachEvent('on' + event, handler);
10349 } else {
10350 // $FlowIgnore: Doesn't think elements are indexable
10351 el['on' + event] = null;
10352 }
10353 }
10354 function outerHeight(node /*: HTMLElement*/) /*: number*/{
10355 // This is deliberately excluding margin for our calculations, since we are using
10356 // offsetTop which is including margin. See getBoundPosition
10357 let height = node.clientHeight;
10358 const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);
10359 height += (0, _shims.int)(computedStyle.borderTopWidth);
10360 height += (0, _shims.int)(computedStyle.borderBottomWidth);
10361 return height;
10362 }
10363 function outerWidth(node /*: HTMLElement*/) /*: number*/{
10364 // This is deliberately excluding margin for our calculations, since we are using
10365 // offsetLeft which is including margin. See getBoundPosition
10366 let width = node.clientWidth;
10367 const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);
10368 width += (0, _shims.int)(computedStyle.borderLeftWidth);
10369 width += (0, _shims.int)(computedStyle.borderRightWidth);
10370 return width;
10371 }
10372 function innerHeight(node /*: HTMLElement*/) /*: number*/{
10373 let height = node.clientHeight;
10374 const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);
10375 height -= (0, _shims.int)(computedStyle.paddingTop);
10376 height -= (0, _shims.int)(computedStyle.paddingBottom);
10377 return height;
10378 }
10379 function innerWidth(node /*: HTMLElement*/) /*: number*/{
10380 let width = node.clientWidth;
10381 const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);
10382 width -= (0, _shims.int)(computedStyle.paddingLeft);
10383 width -= (0, _shims.int)(computedStyle.paddingRight);
10384 return width;
10385 }
10386 /*:: interface EventWithOffset {
10387 clientX: number, clientY: number
10388 }*/
10389 // Get from offsetParent
10390 function offsetXYFromParent(evt /*: EventWithOffset*/, offsetParent /*: HTMLElement*/, scale /*: number*/) /*: ControlPosition*/{
10391 const isBody = offsetParent === offsetParent.ownerDocument.body;
10392 const offsetParentRect = isBody ? {
10393 left: 0,
10394 top: 0
10395 } : offsetParent.getBoundingClientRect();
10396 const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;
10397 const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;
10398 return {
10399 x,
10400 y
10401 };
10402 }
10403 function createCSSTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: Object*/{
10404 const translation = getTranslation(controlPos, positionOffset, 'px');
10405 return {
10406 [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation
10407 };
10408 }
10409 function createSVGTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: string*/{
10410 const translation = getTranslation(controlPos, positionOffset, '');
10411 return translation;
10412 }
10413 function getTranslation(_ref /*:: */, positionOffset /*: PositionOffsetControlPosition*/, unitSuffix /*: string*/) /*: string*/{
10414 let {
10415 x,
10416 y
10417 } /*: ControlPosition*/ = _ref /*: ControlPosition*/;
10418 let translation = `translate(${x}${unitSuffix},${y}${unitSuffix})`;
10419 if (positionOffset) {
10420 const defaultX = `${typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix}`;
10421 const defaultY = `${typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix}`;
10422 translation = `translate(${defaultX}, ${defaultY})` + translation;
10423 }
10424 return translation;
10425 }
10426 function getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/{
10427 return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);
10428 }
10429 function getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/{
10430 if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;
10431 if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;
10432 }
10433
10434 // User-select Hacks:
10435 //
10436 // Useful for preventing blue highlights all over everything when dragging.
10437
10438 // Note we're passing `document` b/c we could be iframed
10439 function addUserSelectStyles(doc /*: ?Document*/) {
10440 if (!doc) return;
10441 let styleEl = doc.getElementById('react-draggable-style-el');
10442 if (!styleEl) {
10443 styleEl = doc.createElement('style');
10444 styleEl.type = 'text/css';
10445 styleEl.id = 'react-draggable-style-el';
10446 styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n';
10447 styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\n';
10448 doc.getElementsByTagName('head')[0].appendChild(styleEl);
10449 }
10450 if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');
10451 }
10452 function scheduleRemoveUserSelectStyles(doc /*: ?Document*/) {
10453 // Prevent a possible "forced reflow"
10454 if (window.requestAnimationFrame) {
10455 window.requestAnimationFrame(() => {
10456 removeUserSelectStyles(doc);
10457 });
10458 } else {
10459 removeUserSelectStyles(doc);
10460 }
10461 }
10462 function removeUserSelectStyles(doc /*: ?Document*/) {
10463 if (!doc) return;
10464 try {
10465 if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');
10466 // $FlowIgnore: IE
10467 if (doc.selection) {
10468 // $FlowIgnore: IE
10469 doc.selection.empty();
10470 } else {
10471 // Remove selection caused by scroll, unless it's a focused input
10472 // (we use doc.defaultView in case we're in an iframe)
10473 const selection = (doc.defaultView || window).getSelection();
10474 if (selection && selection.type !== 'Caret') {
10475 selection.removeAllRanges();
10476 }
10477 }
10478 } catch (e) {
10479 // probably IE
10480 }
10481 }
10482 function addClassName(el /*: HTMLElement*/, className /*: string*/) {
10483 if (el.classList) {
10484 el.classList.add(className);
10485 } else {
10486 if (!el.className.match(new RegExp(`(?:^|\\s)${className}(?!\\S)`))) {
10487 el.className += ` ${className}`;
10488 }
10489 }
10490 }
10491 function removeClassName(el /*: HTMLElement*/, className /*: string*/) {
10492 if (el.classList) {
10493 el.classList.remove(className);
10494 } else {
10495 el.className = el.className.replace(new RegExp(`(?:^|\\s)${className}(?!\\S)`, 'g'), '');
10496 }
10497 }
10498
10499 /***/ }),
10500
10501 /***/ "../node_modules/react-draggable/build/cjs/utils/getPrefix.js":
10502 /*!********************************************************************!*\
10503 !*** ../node_modules/react-draggable/build/cjs/utils/getPrefix.js ***!
10504 \********************************************************************/
10505 /***/ ((__unused_webpack_module, exports) => {
10506
10507 "use strict";
10508
10509
10510 Object.defineProperty(exports, "__esModule", ({
10511 value: true
10512 }));
10513 exports.browserPrefixToKey = browserPrefixToKey;
10514 exports.browserPrefixToStyle = browserPrefixToStyle;
10515 exports["default"] = void 0;
10516 exports.getPrefix = getPrefix;
10517 const prefixes = ['Moz', 'Webkit', 'O', 'ms'];
10518 function getPrefix() /*: string*/{
10519 let prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';
10520 // Ensure we're running in an environment where there is actually a global
10521 // `window` obj
10522 if (typeof window === 'undefined') return '';
10523
10524 // If we're in a pseudo-browser server-side environment, this access
10525 // path may not exist, so bail out if it doesn't.
10526 const style = window.document?.documentElement?.style;
10527 if (!style) return '';
10528 if (prop in style) return '';
10529 for (let i = 0; i < prefixes.length; i++) {
10530 if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];
10531 }
10532 return '';
10533 }
10534 function browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/{
10535 return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;
10536 }
10537 function browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/{
10538 return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;
10539 }
10540 function kebabToTitleCase(str /*: string*/) /*: string*/{
10541 let out = '';
10542 let shouldCapitalize = true;
10543 for (let i = 0; i < str.length; i++) {
10544 if (shouldCapitalize) {
10545 out += str[i].toUpperCase();
10546 shouldCapitalize = false;
10547 } else if (str[i] === '-') {
10548 shouldCapitalize = true;
10549 } else {
10550 out += str[i];
10551 }
10552 }
10553 return out;
10554 }
10555
10556 // Default export is the prefix itself, like 'Moz', 'Webkit', etc
10557 // Note that you may have to re-test for certain things; for instance, Chrome 50
10558 // can handle unprefixed `transform`, but not unprefixed `user-select`
10559 var _default = exports["default"] = (getPrefix() /*: string*/);
10560
10561 /***/ }),
10562
10563 /***/ "../node_modules/react-draggable/build/cjs/utils/log.js":
10564 /*!**************************************************************!*\
10565 !*** ../node_modules/react-draggable/build/cjs/utils/log.js ***!
10566 \**************************************************************/
10567 /***/ ((__unused_webpack_module, exports) => {
10568
10569 "use strict";
10570
10571
10572 Object.defineProperty(exports, "__esModule", ({
10573 value: true
10574 }));
10575 exports["default"] = log;
10576 /*eslint no-console:0*/
10577 function log() {
10578 if (false) // removed by dead control flow
10579 {}
10580 }
10581
10582 /***/ }),
10583
10584 /***/ "../node_modules/react-draggable/build/cjs/utils/positionFns.js":
10585 /*!**********************************************************************!*\
10586 !*** ../node_modules/react-draggable/build/cjs/utils/positionFns.js ***!
10587 \**********************************************************************/
10588 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
10589
10590 "use strict";
10591
10592
10593 Object.defineProperty(exports, "__esModule", ({
10594 value: true
10595 }));
10596 exports.canDragX = canDragX;
10597 exports.canDragY = canDragY;
10598 exports.createCoreData = createCoreData;
10599 exports.createDraggableData = createDraggableData;
10600 exports.getBoundPosition = getBoundPosition;
10601 exports.getControlPosition = getControlPosition;
10602 exports.snapToGrid = snapToGrid;
10603 var _shims = __webpack_require__(/*! ./shims */ "../node_modules/react-draggable/build/cjs/utils/shims.js");
10604 var _domFns = __webpack_require__(/*! ./domFns */ "../node_modules/react-draggable/build/cjs/utils/domFns.js");
10605 /*:: import type Draggable from '../Draggable';*/
10606 /*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/
10607 /*:: import type DraggableCore from '../DraggableCore';*/
10608 function getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/{
10609 // If no bounds, short-circuit and move on
10610 if (!draggable.props.bounds) return [x, y];
10611
10612 // Clone new bounds
10613 let {
10614 bounds
10615 } = draggable.props;
10616 bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);
10617 const node = findDOMNode(draggable);
10618 if (typeof bounds === 'string') {
10619 const {
10620 ownerDocument
10621 } = node;
10622 const ownerWindow = ownerDocument.defaultView;
10623 let boundNode;
10624 if (bounds === 'parent') {
10625 boundNode = node.parentNode;
10626 } else {
10627 // Flow assigns the wrong return type (Node) for getRootNode(),
10628 // so we cast it to one of the correct types (Element).
10629 // The others are Document and ShadowRoot.
10630 // All three implement querySelector() so it's safe to call.
10631 const rootNode = ((node.getRootNode() /*: any*/) /*: Element*/);
10632 boundNode = rootNode.querySelector(bounds);
10633 }
10634 if (!(boundNode instanceof ownerWindow.HTMLElement)) {
10635 throw new Error('Bounds selector "' + bounds + '" could not find an element.');
10636 }
10637 const boundNodeEl /*: HTMLElement*/ = boundNode; // for Flow, can't seem to refine correctly
10638 const nodeStyle = ownerWindow.getComputedStyle(node);
10639 const boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl);
10640 // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.
10641 bounds = {
10642 left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),
10643 top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),
10644 right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),
10645 bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)
10646 };
10647 }
10648
10649 // Keep x and y below right and bottom limits...
10650 if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);
10651 if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);
10652
10653 // But above left and top limits.
10654 if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);
10655 if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);
10656 return [x, y];
10657 }
10658 function snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/{
10659 const x = Math.round(pendingX / grid[0]) * grid[0];
10660 const y = Math.round(pendingY / grid[1]) * grid[1];
10661 return [x, y];
10662 }
10663 function canDragX(draggable /*: Draggable*/) /*: boolean*/{
10664 return draggable.props.axis === 'both' || draggable.props.axis === 'x';
10665 }
10666 function canDragY(draggable /*: Draggable*/) /*: boolean*/{
10667 return draggable.props.axis === 'both' || draggable.props.axis === 'y';
10668 }
10669
10670 // Get {x, y} positions from event.
10671 function getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/{
10672 const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;
10673 if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch
10674 const node = findDOMNode(draggableCore);
10675 // User can provide an offsetParent if desired.
10676 const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;
10677 return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);
10678 }
10679
10680 // Create an data object exposed by <DraggableCore>'s events
10681 function createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/{
10682 const isStart = !(0, _shims.isNum)(draggable.lastX);
10683 const node = findDOMNode(draggable);
10684 if (isStart) {
10685 // If this is our first move, use the x and y as last coords.
10686 return {
10687 node,
10688 deltaX: 0,
10689 deltaY: 0,
10690 lastX: x,
10691 lastY: y,
10692 x,
10693 y
10694 };
10695 } else {
10696 // Otherwise calculate proper values.
10697 return {
10698 node,
10699 deltaX: x - draggable.lastX,
10700 deltaY: y - draggable.lastY,
10701 lastX: draggable.lastX,
10702 lastY: draggable.lastY,
10703 x,
10704 y
10705 };
10706 }
10707 }
10708
10709 // Create an data exposed by <Draggable>'s events
10710 function createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/{
10711 const scale = draggable.props.scale;
10712 return {
10713 node: coreData.node,
10714 x: draggable.state.x + coreData.deltaX / scale,
10715 y: draggable.state.y + coreData.deltaY / scale,
10716 deltaX: coreData.deltaX / scale,
10717 deltaY: coreData.deltaY / scale,
10718 lastX: draggable.state.x,
10719 lastY: draggable.state.y
10720 };
10721 }
10722
10723 // A lot faster than stringify/parse
10724 function cloneBounds(bounds /*: Bounds*/) /*: Bounds*/{
10725 return {
10726 left: bounds.left,
10727 top: bounds.top,
10728 right: bounds.right,
10729 bottom: bounds.bottom
10730 };
10731 }
10732 function findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/{
10733 const node = draggable.findDOMNode();
10734 if (!node) {
10735 throw new Error('<DraggableCore>: Unmounted during event!');
10736 }
10737 // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME
10738 return node;
10739 }
10740
10741 /***/ }),
10742
10743 /***/ "../node_modules/react-draggable/build/cjs/utils/shims.js":
10744 /*!****************************************************************!*\
10745 !*** ../node_modules/react-draggable/build/cjs/utils/shims.js ***!
10746 \****************************************************************/
10747 /***/ ((__unused_webpack_module, exports) => {
10748
10749 "use strict";
10750
10751
10752 Object.defineProperty(exports, "__esModule", ({
10753 value: true
10754 }));
10755 exports.dontSetMe = dontSetMe;
10756 exports.findInArray = findInArray;
10757 exports.int = int;
10758 exports.isFunction = isFunction;
10759 exports.isNum = isNum;
10760 // @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc
10761 function findInArray(array /*: Array<any> | TouchList*/, callback /*: Function*/) /*: any*/{
10762 for (let i = 0, length = array.length; i < length; i++) {
10763 if (callback.apply(callback, [array[i], i, array])) return array[i];
10764 }
10765 }
10766 function isFunction(func /*: any*/) /*: boolean %checks*/{
10767 // $FlowIgnore[method-unbinding]
10768 return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';
10769 }
10770 function isNum(num /*: any*/) /*: boolean %checks*/{
10771 return typeof num === 'number' && !isNaN(num);
10772 }
10773 function int(a /*: string*/) /*: number*/{
10774 return parseInt(a, 10);
10775 }
10776 function dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) /*: ?Error*/{
10777 if (props[propName]) {
10778 return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);
10779 }
10780 }
10781
10782 /***/ }),
10783
10784 /***/ "../node_modules/react-draggable/node_modules/clsx/dist/clsx.js":
10785 /*!**********************************************************************!*\
10786 !*** ../node_modules/react-draggable/node_modules/clsx/dist/clsx.js ***!
10787 \**********************************************************************/
10788 /***/ ((module) => {
10789
10790 function r(e){var o,t,f="";if("string"==typeof e||"number"==typeof e)f+=e;else if("object"==typeof e)if(Array.isArray(e)){var n=e.length;for(o=0;o<n;o++)e[o]&&(t=r(e[o]))&&(f&&(f+=" "),f+=t)}else for(t in e)e[t]&&(f&&(f+=" "),f+=t);return f}function e(){for(var e,o,t=0,f="",n=arguments.length;t<n;t++)(e=arguments[t])&&(o=r(e))&&(f&&(f+=" "),f+=o);return f}module.exports=e,module.exports.clsx=e;
10791
10792 /***/ }),
10793
10794 /***/ "../node_modules/validator/lib/isFQDN.js":
10795 /*!***********************************************!*\
10796 !*** ../node_modules/validator/lib/isFQDN.js ***!
10797 \***********************************************/
10798 /***/ ((module, exports, __webpack_require__) => {
10799
10800 "use strict";
10801
10802
10803 Object.defineProperty(exports, "__esModule", ({
10804 value: true
10805 }));
10806 exports["default"] = isFQDN;
10807 var _assertString = _interopRequireDefault(__webpack_require__(/*! ./util/assertString */ "../node_modules/validator/lib/util/assertString.js"));
10808 var _merge = _interopRequireDefault(__webpack_require__(/*! ./util/merge */ "../node_modules/validator/lib/util/merge.js"));
10809 function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10810 var default_fqdn_options = {
10811 require_tld: true,
10812 allow_underscores: false,
10813 allow_trailing_dot: false,
10814 allow_numeric_tld: false,
10815 allow_wildcard: false,
10816 ignore_max_length: false
10817 };
10818 function isFQDN(str, options) {
10819 (0, _assertString.default)(str);
10820 options = (0, _merge.default)(options, default_fqdn_options);
10821
10822 /* Remove the optional trailing dot before checking validity */
10823 if (options.allow_trailing_dot && str[str.length - 1] === '.') {
10824 str = str.substring(0, str.length - 1);
10825 }
10826
10827 /* Remove the optional wildcard before checking validity */
10828 if (options.allow_wildcard === true && str.indexOf('*.') === 0) {
10829 str = str.substring(2);
10830 }
10831 var parts = str.split('.');
10832 var tld = parts[parts.length - 1];
10833 if (options.require_tld) {
10834 // disallow fqdns without tld
10835 if (parts.length < 2) {
10836 return false;
10837 }
10838 if (!options.allow_numeric_tld && !/^([a-z\u00A1-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {
10839 return false;
10840 }
10841
10842 // disallow spaces
10843 if (/\s/.test(tld)) {
10844 return false;
10845 }
10846 }
10847
10848 // reject numeric TLDs
10849 if (!options.allow_numeric_tld && /^\d+$/.test(tld)) {
10850 return false;
10851 }
10852 return parts.every(function (part) {
10853 if (part.length > 63 && !options.ignore_max_length) {
10854 return false;
10855 }
10856 if (!/^[a-z_\u00a1-\uffff0-9-]+$/i.test(part)) {
10857 return false;
10858 }
10859
10860 // disallow full-width chars
10861 if (/[\uff01-\uff5e]/.test(part)) {
10862 return false;
10863 }
10864
10865 // disallow parts starting or ending with hyphen
10866 if (/^-|-$/.test(part)) {
10867 return false;
10868 }
10869 if (!options.allow_underscores && /_/.test(part)) {
10870 return false;
10871 }
10872 return true;
10873 });
10874 }
10875 module.exports = exports.default;
10876 module.exports["default"] = exports.default;
10877
10878 /***/ }),
10879
10880 /***/ "../node_modules/validator/lib/isIP.js":
10881 /*!*********************************************!*\
10882 !*** ../node_modules/validator/lib/isIP.js ***!
10883 \*********************************************/
10884 /***/ ((module, exports, __webpack_require__) => {
10885
10886 "use strict";
10887
10888
10889 Object.defineProperty(exports, "__esModule", ({
10890 value: true
10891 }));
10892 exports["default"] = isIP;
10893 var _assertString = _interopRequireDefault(__webpack_require__(/*! ./util/assertString */ "../node_modules/validator/lib/util/assertString.js"));
10894 function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10895 function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
10896 /**
10897 11.3. Examples
10898
10899 The following addresses
10900
10901 fe80::1234 (on the 1st link of the node)
10902 ff02::5678 (on the 5th link of the node)
10903 ff08::9abc (on the 10th organization of the node)
10904
10905 would be represented as follows:
10906
10907 fe80::1234%1
10908 ff02::5678%5
10909 ff08::9abc%10
10910
10911 (Here we assume a natural translation from a zone index to the
10912 <zone_id> part, where the Nth zone of any scope is translated into
10913 "N".)
10914
10915 If we use interface names as <zone_id>, those addresses could also be
10916 represented as follows:
10917
10918 fe80::1234%ne0
10919 ff02::5678%pvc1.3
10920 ff08::9abc%interface10
10921
10922 where the interface "ne0" belongs to the 1st link, "pvc1.3" belongs
10923 to the 5th link, and "interface10" belongs to the 10th organization.
10924 * * */
10925 var IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
10926 var IPv4AddressFormat = "(".concat(IPv4SegmentFormat, "[.]){3}").concat(IPv4SegmentFormat);
10927 var IPv4AddressRegExp = new RegExp("^".concat(IPv4AddressFormat, "$"));
10928 var IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';
10929 var IPv6AddressRegExp = new RegExp('^(' + "(?:".concat(IPv6SegmentFormat, ":){7}(?:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){6}(?:").concat(IPv4AddressFormat, "|:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){5}(?::").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,2}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){4}(?:(:").concat(IPv6SegmentFormat, "){0,1}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,3}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){3}(?:(:").concat(IPv6SegmentFormat, "){0,2}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,4}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){2}(?:(:").concat(IPv6SegmentFormat, "){0,3}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,5}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){1}(?:(:").concat(IPv6SegmentFormat, "){0,4}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,6}|:)|") + "(?::((?::".concat(IPv6SegmentFormat, "){0,5}:").concat(IPv4AddressFormat, "|(?::").concat(IPv6SegmentFormat, "){1,7}|:))") + ')(%[0-9a-zA-Z.]{1,})?$');
10930 function isIP(ipAddress) {
10931 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
10932 (0, _assertString.default)(ipAddress);
10933
10934 // accessing 'arguments' for backwards compatibility: isIP(ipAddress [, version])
10935 // eslint-disable-next-line prefer-rest-params
10936 var version = (_typeof(options) === 'object' ? options.version : arguments[1]) || '';
10937 if (!version) {
10938 return isIP(ipAddress, {
10939 version: 4
10940 }) || isIP(ipAddress, {
10941 version: 6
10942 });
10943 }
10944 if (version.toString() === '4') {
10945 return IPv4AddressRegExp.test(ipAddress);
10946 }
10947 if (version.toString() === '6') {
10948 return IPv6AddressRegExp.test(ipAddress);
10949 }
10950 return false;
10951 }
10952 module.exports = exports.default;
10953 module.exports["default"] = exports.default;
10954
10955 /***/ }),
10956
10957 /***/ "../node_modules/validator/lib/isURL.js":
10958 /*!**********************************************!*\
10959 !*** ../node_modules/validator/lib/isURL.js ***!
10960 \**********************************************/
10961 /***/ ((module, exports, __webpack_require__) => {
10962
10963 "use strict";
10964
10965
10966 Object.defineProperty(exports, "__esModule", ({
10967 value: true
10968 }));
10969 exports["default"] = isURL;
10970 var _assertString = _interopRequireDefault(__webpack_require__(/*! ./util/assertString */ "../node_modules/validator/lib/util/assertString.js"));
10971 var _checkHost = _interopRequireDefault(__webpack_require__(/*! ./util/checkHost */ "../node_modules/validator/lib/util/checkHost.js"));
10972 var _includesString = _interopRequireDefault(__webpack_require__(/*! ./util/includesString */ "../node_modules/validator/lib/util/includesString.js"));
10973 var _isFQDN = _interopRequireDefault(__webpack_require__(/*! ./isFQDN */ "../node_modules/validator/lib/isFQDN.js"));
10974 var _isIP = _interopRequireDefault(__webpack_require__(/*! ./isIP */ "../node_modules/validator/lib/isIP.js"));
10975 var _merge = _interopRequireDefault(__webpack_require__(/*! ./util/merge */ "../node_modules/validator/lib/util/merge.js"));
10976 function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10977 function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
10978 function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10979 function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
10980 function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10981 function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
10982 function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
10983 /*
10984 options for isURL method
10985
10986 protocols - valid protocols can be modified with this option.
10987 require_tld - If set to false isURL will not check if the URL's host includes a top-level domain.
10988 require_protocol - if set to true isURL will return false if protocol is not present in the URL.
10989 require_host - if set to false isURL will not check if host is present in the URL.
10990 require_port - if set to true isURL will check if port is present in the URL.
10991 require_valid_protocol - isURL will check if the URL's protocol is present in the protocols option.
10992 allow_underscores - if set to true, the validator will allow underscores in the URL.
10993 host_whitelist - if set to an array of strings or regexp, and the domain matches none of the strings
10994 defined in it, the validation fails.
10995 host_blacklist - if set to an array of strings or regexp, and the domain matches any of the strings
10996 defined in it, the validation fails.
10997 allow_trailing_dot - if set to true, the validator will allow the domain to end with
10998 a `.` character.
10999 allow_protocol_relative_urls - if set to true protocol relative URLs will be allowed.
11000 allow_fragments - if set to false isURL will return false if fragments are present.
11001 allow_query_components - if set to false isURL will return false if query components are present.
11002 disallow_auth - if set to true, the validator will fail if the URL contains an authentication
11003 component, e.g. `http://username:password@example.com`
11004 validate_length - if set to false isURL will skip string length validation. `max_allowed_length`
11005 will be ignored if this is set as `false`.
11006 max_allowed_length - if set, isURL will not allow URLs longer than the specified value (default is
11007 2084 that IE maximum URL length).
11008
11009 */
11010
11011 var default_url_options = {
11012 protocols: ['http', 'https', 'ftp'],
11013 require_tld: true,
11014 require_protocol: false,
11015 require_host: true,
11016 require_port: false,
11017 require_valid_protocol: true,
11018 allow_underscores: false,
11019 allow_trailing_dot: false,
11020 allow_protocol_relative_urls: false,
11021 allow_fragments: true,
11022 allow_query_components: true,
11023 validate_length: true,
11024 max_allowed_length: 2084
11025 };
11026 var wrapped_ipv6 = /^\[([^\]]+)\](?::([0-9]+))?$/;
11027 function isURL(url, options) {
11028 (0, _assertString.default)(url);
11029 if (!url || /[\s<>]/.test(url)) {
11030 return false;
11031 }
11032 if (url.indexOf('mailto:') === 0) {
11033 return false;
11034 }
11035 options = (0, _merge.default)(options, default_url_options);
11036 if (options.validate_length && url.length > options.max_allowed_length) {
11037 return false;
11038 }
11039 if (!options.allow_fragments && (0, _includesString.default)(url, '#')) {
11040 return false;
11041 }
11042 if (!options.allow_query_components && ((0, _includesString.default)(url, '?') || (0, _includesString.default)(url, '&'))) {
11043 return false;
11044 }
11045 var protocol, auth, host, hostname, port, port_str, split, ipv6;
11046 split = url.split('#');
11047 url = split.shift();
11048 split = url.split('?');
11049 url = split.shift();
11050
11051 // Replaced the 'split("://")' logic with a regex to match the protocol.
11052 // This correctly identifies schemes like `javascript:` which don't use `//`.
11053 // However, we need to be careful not to confuse authentication credentials (user:password@host)
11054 // with protocols. A colon before an @ symbol might be part of auth, not a protocol separator.
11055 var protocol_match = url.match(/^([a-z][a-z0-9+\-.]*):/i);
11056 var had_explicit_protocol = false;
11057 var cleanUpProtocol = function cleanUpProtocol(potential_protocol) {
11058 had_explicit_protocol = true;
11059 protocol = potential_protocol.toLowerCase();
11060 if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {
11061 // The identified protocol is not in the allowed list.
11062 return false;
11063 }
11064
11065 // Remove the protocol from the URL string.
11066 return url.substring(protocol_match[0].length);
11067 };
11068 if (protocol_match) {
11069 var potential_protocol = protocol_match[1];
11070 var after_colon = url.substring(protocol_match[0].length);
11071
11072 // Check if what follows looks like authentication credentials (user:password@host)
11073 // rather than a protocol. This happens when:
11074 // 1. There's no `//` after the colon (protocols like `http://` have this)
11075 // 2. There's an `@` symbol before any `/`
11076 // 3. The part before `@` contains only valid auth characters (alphanumeric, -, _, ., %, :)
11077 var starts_with_slashes = after_colon.slice(0, 2) === '//';
11078 if (!starts_with_slashes) {
11079 var first_slash_position = after_colon.indexOf('/');
11080 var before_slash = first_slash_position === -1 ? after_colon : after_colon.substring(0, first_slash_position);
11081 var at_position = before_slash.indexOf('@');
11082 if (at_position !== -1) {
11083 var before_at = before_slash.substring(0, at_position);
11084 var valid_auth_regex = /^[a-zA-Z0-9\-_.%:]*$/;
11085 var is_valid_auth = valid_auth_regex.test(before_at);
11086 if (is_valid_auth) {
11087 // This looks like authentication (e.g., user:password@host), not a protocol
11088 if (options.require_protocol) {
11089 return false;
11090 }
11091
11092 // Don't consume the colon; let the auth parsing handle it later
11093 } else {
11094 // This looks like a malicious protocol (e.g., javascript:alert();@host)
11095 url = cleanUpProtocol(potential_protocol);
11096 if (url === false) {
11097 return false;
11098 }
11099 }
11100 } else {
11101 // No @ symbol found. Check if this could be a port number instead of a protocol.
11102 // If what's after the colon is numeric (or starts with a digit and contains only
11103 // valid port characters until a path separator), it's likely hostname:port, not a protocol.
11104 var looks_like_port = /^[0-9]/.test(after_colon);
11105 if (looks_like_port) {
11106 // This looks like hostname:port, not a protocol
11107 if (options.require_protocol) {
11108 return false;
11109 }
11110 // Don't consume anything; let it be parsed as hostname:port
11111 } else {
11112 // This is definitely a protocol
11113 url = cleanUpProtocol(potential_protocol);
11114 if (url === false) {
11115 return false;
11116 }
11117 }
11118 }
11119 } else {
11120 // Starts with '//', this is definitely a protocol like http://
11121 url = cleanUpProtocol(potential_protocol);
11122 if (url === false) {
11123 return false;
11124 }
11125 }
11126 } else if (options.require_protocol) {
11127 return false;
11128 }
11129
11130 // Handle leading '//' only as protocol-relative when there was NO explicit protocol.
11131 // If there was an explicit protocol, '//' is the normal separator
11132 // and should be stripped unconditionally.
11133 if (url.slice(0, 2) === '//') {
11134 if (!had_explicit_protocol && !options.allow_protocol_relative_urls) {
11135 return false;
11136 }
11137 url = url.slice(2);
11138 }
11139 if (url === '') {
11140 return false;
11141 }
11142 split = url.split('/');
11143 url = split.shift();
11144 if (url === '' && !options.require_host) {
11145 return true;
11146 }
11147 split = url.split('@');
11148 if (split.length > 1) {
11149 if (options.disallow_auth) {
11150 return false;
11151 }
11152 if (split[0] === '') {
11153 return false;
11154 }
11155 auth = split.shift();
11156 if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {
11157 return false;
11158 }
11159 var _auth$split = auth.split(':'),
11160 _auth$split2 = _slicedToArray(_auth$split, 2),
11161 user = _auth$split2[0],
11162 password = _auth$split2[1];
11163 if (user === '' && password === '') {
11164 return false;
11165 }
11166 }
11167 hostname = split.join('@');
11168 port_str = null;
11169 ipv6 = null;
11170 var ipv6_match = hostname.match(wrapped_ipv6);
11171 if (ipv6_match) {
11172 host = '';
11173 ipv6 = ipv6_match[1];
11174 port_str = ipv6_match[2] || null;
11175 } else {
11176 split = hostname.split(':');
11177 host = split.shift();
11178 if (split.length) {
11179 port_str = split.join(':');
11180 }
11181 }
11182 if (port_str !== null && port_str.length > 0) {
11183 port = parseInt(port_str, 10);
11184 if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {
11185 return false;
11186 }
11187 } else if (options.require_port) {
11188 return false;
11189 }
11190 if (options.host_whitelist) {
11191 return (0, _checkHost.default)(host, options.host_whitelist);
11192 }
11193 if (host === '' && !options.require_host) {
11194 return true;
11195 }
11196 if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {
11197 return false;
11198 }
11199 host = host || ipv6;
11200 if (options.host_blacklist && (0, _checkHost.default)(host, options.host_blacklist)) {
11201 return false;
11202 }
11203 return true;
11204 }
11205 module.exports = exports.default;
11206 module.exports["default"] = exports.default;
11207
11208 /***/ }),
11209
11210 /***/ "../node_modules/validator/lib/util/assertString.js":
11211 /*!**********************************************************!*\
11212 !*** ../node_modules/validator/lib/util/assertString.js ***!
11213 \**********************************************************/
11214 /***/ ((module, exports) => {
11215
11216 "use strict";
11217
11218
11219 Object.defineProperty(exports, "__esModule", ({
11220 value: true
11221 }));
11222 exports["default"] = assertString;
11223 function assertString(input) {
11224 if (input === undefined || input === null) throw new TypeError("Expected a string but received a ".concat(input));
11225 if (input.constructor.name !== 'String') throw new TypeError("Expected a string but received a ".concat(input.constructor.name));
11226 }
11227 module.exports = exports.default;
11228 module.exports["default"] = exports.default;
11229
11230 /***/ }),
11231
11232 /***/ "../node_modules/validator/lib/util/checkHost.js":
11233 /*!*******************************************************!*\
11234 !*** ../node_modules/validator/lib/util/checkHost.js ***!
11235 \*******************************************************/
11236 /***/ ((module, exports) => {
11237
11238 "use strict";
11239
11240
11241 Object.defineProperty(exports, "__esModule", ({
11242 value: true
11243 }));
11244 exports["default"] = checkHost;
11245 function isRegExp(obj) {
11246 return Object.prototype.toString.call(obj) === '[object RegExp]';
11247 }
11248 function checkHost(host, matches) {
11249 for (var i = 0; i < matches.length; i++) {
11250 var match = matches[i];
11251 if (host === match || isRegExp(match) && match.test(host)) {
11252 return true;
11253 }
11254 }
11255 return false;
11256 }
11257 module.exports = exports.default;
11258 module.exports["default"] = exports.default;
11259
11260 /***/ }),
11261
11262 /***/ "../node_modules/validator/lib/util/includesString.js":
11263 /*!************************************************************!*\
11264 !*** ../node_modules/validator/lib/util/includesString.js ***!
11265 \************************************************************/
11266 /***/ ((module, exports) => {
11267
11268 "use strict";
11269
11270
11271 Object.defineProperty(exports, "__esModule", ({
11272 value: true
11273 }));
11274 exports["default"] = void 0;
11275 var includes = function includes(str, val) {
11276 return str.indexOf(val) !== -1;
11277 };
11278 var _default = exports["default"] = includes;
11279 module.exports = exports.default;
11280 module.exports["default"] = exports.default;
11281
11282 /***/ }),
11283
11284 /***/ "../node_modules/validator/lib/util/merge.js":
11285 /*!***************************************************!*\
11286 !*** ../node_modules/validator/lib/util/merge.js ***!
11287 \***************************************************/
11288 /***/ ((module, exports) => {
11289
11290 "use strict";
11291
11292
11293 Object.defineProperty(exports, "__esModule", ({
11294 value: true
11295 }));
11296 exports["default"] = merge;
11297 function merge() {
11298 var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
11299 var defaults = arguments.length > 1 ? arguments[1] : undefined;
11300 for (var key in defaults) {
11301 if (typeof obj[key] === 'undefined') {
11302 obj[key] = defaults[key];
11303 }
11304 }
11305 return obj;
11306 }
11307 module.exports = exports.default;
11308 module.exports["default"] = exports.default;
11309
11310 /***/ }),
11311
11312 /***/ "@elementor/icons":
11313 /*!************************************!*\
11314 !*** external "elementorV2.icons" ***!
11315 \************************************/
11316 /***/ ((module) => {
11317
11318 "use strict";
11319 module.exports = elementorV2.icons;
11320
11321 /***/ }),
11322
11323 /***/ "@elementor/ui":
11324 /*!*********************************!*\
11325 !*** external "elementorV2.ui" ***!
11326 \*********************************/
11327 /***/ ((module) => {
11328
11329 "use strict";
11330 module.exports = elementorV2.ui;
11331
11332 /***/ }),
11333
11334 /***/ "@wordpress/i18n":
11335 /*!**************************!*\
11336 !*** external "wp.i18n" ***!
11337 \**************************/
11338 /***/ ((module) => {
11339
11340 "use strict";
11341 module.exports = wp.i18n;
11342
11343 /***/ }),
11344
11345 /***/ "react":
11346 /*!************************!*\
11347 !*** external "React" ***!
11348 \************************/
11349 /***/ ((module) => {
11350
11351 "use strict";
11352 module.exports = React;
11353
11354 /***/ }),
11355
11356 /***/ "react-dom":
11357 /*!***************************!*\
11358 !*** external "ReactDOM" ***!
11359 \***************************/
11360 /***/ ((module) => {
11361
11362 "use strict";
11363 module.exports = ReactDOM;
11364
11365 /***/ })
11366
11367 /******/ });
11368 /************************************************************************/
11369 /******/ // The module cache
11370 /******/ var __webpack_module_cache__ = {};
11371 /******/
11372 /******/ // The require function
11373 /******/ function __webpack_require__(moduleId) {
11374 /******/ // Check if module is in cache
11375 /******/ var cachedModule = __webpack_module_cache__[moduleId];
11376 /******/ if (cachedModule !== undefined) {
11377 /******/ return cachedModule.exports;
11378 /******/ }
11379 /******/ // Create a new module (and put it into the cache)
11380 /******/ var module = __webpack_module_cache__[moduleId] = {
11381 /******/ // no module.id needed
11382 /******/ // no module.loaded needed
11383 /******/ exports: {}
11384 /******/ };
11385 /******/
11386 /******/ // Execute the module function
11387 /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
11388 /******/
11389 /******/ // Return the exports of the module
11390 /******/ return module.exports;
11391 /******/ }
11392 /******/
11393 /************************************************************************/
11394 /******/ /* webpack/runtime/define property getters */
11395 /******/ (() => {
11396 /******/ // define getter functions for harmony exports
11397 /******/ __webpack_require__.d = (exports, definition) => {
11398 /******/ for(var key in definition) {
11399 /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
11400 /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
11401 /******/ }
11402 /******/ }
11403 /******/ };
11404 /******/ })();
11405 /******/
11406 /******/ /* webpack/runtime/hasOwnProperty shorthand */
11407 /******/ (() => {
11408 /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
11409 /******/ })();
11410 /******/
11411 /******/ /* webpack/runtime/make namespace object */
11412 /******/ (() => {
11413 /******/ // define __esModule on exports
11414 /******/ __webpack_require__.r = (exports) => {
11415 /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
11416 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
11417 /******/ }
11418 /******/ Object.defineProperty(exports, '__esModule', { value: true });
11419 /******/ };
11420 /******/ })();
11421 /******/
11422 /************************************************************************/
11423 var __webpack_exports__ = {};
11424 // This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
11425 (() => {
11426 "use strict";
11427 var exports = __webpack_exports__;
11428 /*!*******************************************************!*\
11429 !*** ../modules/ai/assets/js/editor/layout-module.js ***!
11430 \*******************************************************/
11431
11432
11433 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
11434 Object.defineProperty(exports, "__esModule", ({
11435 value: true
11436 }));
11437 exports["default"] = exports.AI_ATTACHMENT = void 0;
11438 var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js"));
11439 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
11440 var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
11441 var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
11442 var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"));
11443 var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"));
11444 var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"));
11445 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
11446 var _aiLayoutBehavior = _interopRequireDefault(__webpack_require__(/*! ./ai-layout-behavior */ "../modules/ai/assets/js/editor/ai-layout-behavior.js"));
11447 var _editorIntegration = __webpack_require__(/*! ./utils/editor-integration */ "../modules/ai/assets/js/editor/utils/editor-integration.js");
11448 var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
11449 var _config = __webpack_require__(/*! ./pages/form-layout/context/config */ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js");
11450 var _applyTemplateForAiBehavior = _interopRequireDefault(__webpack_require__(/*! ./integration/library/apply-template-for-ai-behavior */ "../modules/ai/assets/js/editor/integration/library/apply-template-for-ai-behavior.js"));
11451 var _attachments = __webpack_require__(/*! ./pages/form-layout/components/attachments */ "../modules/ai/assets/js/editor/pages/form-layout/components/attachments.js");
11452 function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
11453 function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
11454 var AI_ATTACHMENT = exports.AI_ATTACHMENT = 'ai-attachment';
11455 var Module = exports["default"] = /*#__PURE__*/function (_elementorModules$edi) {
11456 function Module() {
11457 var _this;
11458 (0, _classCallCheck2.default)(this, Module);
11459 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
11460 args[_key] = arguments[_key];
11461 }
11462 _this = _callSuper(this, Module, [].concat(args));
11463 (0, _defineProperty2.default)(_this, "registerVariationsContextMenu", function (groups, currentElement) {
11464 var saveGroup = groups.find(function (group) {
11465 return 'save' === group.name;
11466 });
11467 if (!saveGroup) {
11468 return groups;
11469 }
11470 var contextMenu = {
11471 name: 'ai',
11472 icon: 'eicon-ai',
11473 isEnabled: function isEnabled() {
11474 return 0 !== currentElement.getContainer().children.length;
11475 },
11476 title: (0, _i18n.__)('Generate variations with AI', 'elementor'),
11477 callback: function () {
11478 var _callback = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
11479 var container, json, attachments;
11480 return _regenerator.default.wrap(function (_context) {
11481 while (1) switch (_context.prev = _context.next) {
11482 case 0:
11483 container = currentElement.getContainer();
11484 json = container.model.toJSON({
11485 remove: ['default']
11486 });
11487 attachments = [{
11488 type: 'json',
11489 previewHTML: '',
11490 content: json,
11491 label: container.model.get('title'),
11492 source: _attachments.USER_VARIATION_SOURCE
11493 }];
11494 (0, _editorIntegration.renderLayoutApp)({
11495 parentContainer: container.parent,
11496 mode: _config.MODE_VARIATION,
11497 at: container.view._index,
11498 attachments: attachments,
11499 onSelect: function onSelect() {
11500 container.view.$el.hide();
11501 },
11502 onClose: function onClose() {
11503 container.view.$el.show();
11504 },
11505 onInsert: function onInsert(template) {
11506 (0, _editorIntegration.importToEditor)({
11507 parentContainer: container.parent,
11508 at: container.view._index,
11509 template: template,
11510 historyTitle: (0, _i18n.__)('AI Variation', 'elementor'),
11511 replace: true
11512 });
11513 }
11514 });
11515 case 1:
11516 case "end":
11517 return _context.stop();
11518 }
11519 }, _callee);
11520 }));
11521 function callback() {
11522 return _callback.apply(this, arguments);
11523 }
11524 return callback;
11525 }()
11526 };
11527
11528 // Add on top of save group actions
11529 saveGroup.actions.unshift(contextMenu);
11530 return groups;
11531 });
11532 return _this;
11533 }
11534 (0, _inherits2.default)(Module, _elementorModules$edi);
11535 return (0, _createClass2.default)(Module, [{
11536 key: "onElementorInit",
11537 value: function onElementorInit() {
11538 var _this2 = this;
11539 elementor.hooks.addFilter('views/add-section/behaviors', this.registerAiLayoutBehavior);
11540 elementor.hooks.addFilter('elements/container/contextMenuGroups', this.registerVariationsContextMenu);
11541 elementor.hooks.addFilter('elementor/editor/template-library/template/behaviors', this.registerLibraryActionButtonBehavior);
11542 elementor.hooks.addFilter('elementor/editor/template-library/template/action-button', this.filterLibraryActionButtonTemplate, 11);
11543 $e.commands.register('library', 'generate-ai-variation', function (args) {
11544 return _this2.applyTemplate(args);
11545 });
11546 }
11547 }, {
11548 key: "applyTemplate",
11549 value: function applyTemplate(args) {
11550 window.postMessage({
11551 type: 'library/attach:start'
11552 });
11553 $e.components.get('library').downloadTemplate(args, function (data) {
11554 var model = args.model;
11555 window.postMessage({
11556 type: 'library/attach',
11557 json: data.content[0],
11558 html: "<img src=\"".concat(model.get('thumbnail'), "\" />"),
11559 label: "".concat(model.get('template_id'), " - ").concat(model.get('title')),
11560 source: _attachments.ELEMENTOR_LIBRARY_SOURCE
11561 }, window.location.origin);
11562 });
11563 }
11564 }, {
11565 key: "registerLibraryActionButtonBehavior",
11566 value: function registerLibraryActionButtonBehavior(behaviors) {
11567 behaviors.applyAiTemplate = {
11568 behaviorClass: _applyTemplateForAiBehavior.default
11569 };
11570 return behaviors;
11571 }
11572 }, {
11573 key: "registerAiLayoutBehavior",
11574 value: function registerAiLayoutBehavior(behaviors) {
11575 behaviors.ai = {
11576 behaviorClass: _aiLayoutBehavior.default,
11577 context: {
11578 documentType: window.elementor.documents.getCurrent().config.type
11579 }
11580 };
11581 return behaviors;
11582 }
11583 }, {
11584 key: "filterLibraryActionButtonTemplate",
11585 value: function filterLibraryActionButtonTemplate(viewId) {
11586 var modalConfig = $e.components.get('library').manager.modalConfig;
11587 var originalCoreViewId = '#tmpl-elementor-template-library-insert-button';
11588 if (originalCoreViewId !== viewId) {
11589 return viewId;
11590 }
11591 if ($e.routes.current.library !== 'library/templates/blocks') {
11592 return viewId;
11593 }
11594 if (AI_ATTACHMENT === modalConfig.mode) {
11595 viewId = '#tmpl-elementor-template-library-apply-ai-button';
11596 } else {
11597 viewId = '#tmpl-elementor-template-library-insert-and-ai-variations-buttons';
11598 }
11599 return viewId;
11600 }
11601 }]);
11602 }(elementorModules.editor.utils.Module);
11603 new Module();
11604 })();
11605
11606 /******/ })()
11607 ;
11608 //# sourceMappingURL=ai-layout.js.map