PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.1
Elementor Website Builder – more than just a page builder v4.3.1
4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 All 455 releases
← All changes | assets/js/packages/editor-components/editor-components.js +2829 -5648 4.2.0-dev2 → 4.3.1 View file →
@@ -1,781 +1,844 @@
1 -/******/ (function() { // webpackBootstrap
2 -/******/ "use strict";
3 -/******/ var __webpack_modules__ = ({
1 +(function(_elementor_editor, _elementor_editor_canvas, _elementor_editor_documents, _elementor_editor_editing_panel, _elementor_editor_elements_panel, _elementor_editor_embedded_documents_manager, _elementor_editor_v1_adapters, _elementor_store, _wordpress_i18n, _elementor_http_client, react, _elementor_editor_ui, _elementor_ui, _elementor_utils, _elementor_icons, _elementor_editor_current_user, _elementor_editor_notifications, _elementor_editor_elements, _elementor_editor_props, _elementor_schema, _elementor_events, _elementor_editor_panels, _elementor_editor_controls, _elementor_editor_templates) {
4 2
5 -/***/ "./packages/packages/core/editor-components/src/api.ts":
6 -/*!*************************************************************!*\
7 - !*** ./packages/packages/core/editor-components/src/api.ts ***!
8 - \*************************************************************/
9 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3 +//#region \0rolldown/runtime.js
4 + var __create = Object.create;
5 + var __defProp$1 = Object.defineProperty;
6 + var __name = (target, value) => __defProp$1(target, "name", {
7 + value,
8 + configurable: true
9 + });
10 + var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11 + var __getOwnPropNames = Object.getOwnPropertyNames;
12 + var __getProtoOf = Object.getPrototypeOf;
13 + var __hasOwnProp = Object.prototype.hasOwnProperty;
14 + var __exportAll = (all, no_symbols) => {
15 + let target = {};
16 + for (var name in all) {
17 + __defProp$1(target, name, {
18 + get: all[name],
19 + enumerable: true
20 + });
21 + }
22 + if (!no_symbols) {
23 + __defProp$1(target, Symbol.toStringTag, { value: "Module" });
24 + }
25 + return target;
26 + };
27 + var __copyProps = (to, from, except, desc) => {
28 + if (from && typeof from === "object" || typeof from === "function") {
29 + for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
30 + key = keys[i];
31 + if (!__hasOwnProp.call(to, key) && key !== except) {
32 + __defProp$1(to, key, {
33 + get: ((k) => from[k]).bind(null, key),
34 + enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
35 + });
36 + }
37 + }
38 + }
39 + return to;
40 + };
41 + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp$1(target, "default", {
42 + value: mod,
43 + enumerable: true
44 + }) : target, mod));
10 45
11 -__webpack_require__.r(__webpack_exports__);
12 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13 -/* harmony export */ apiClient: function() { return /* binding */ apiClient; },
14 -/* harmony export */ getParams: function() { return /* binding */ getParams; }
15 -/* harmony export */ });
16 -/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
17 -/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__);
18 -/* harmony import */ var _elementor_http_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/http-client */ "@elementor/http-client");
19 -/* harmony import */ var _elementor_http_client__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__);
46 +//#endregion
47 +react = __toESM(react);
20 48
49 +//#region packages/packages/core/editor-components/src/store/store-types.ts
50 + var initialState = {
51 + data: [],
52 + unpublishedData: [],
53 + loadStatus: "idle",
54 + createdThisSession: [],
55 + archivedThisSession: [],
56 + path: [],
57 + currentComponentId: null,
58 + updatedComponentNames: {},
59 + sanitized: {}
60 + };
61 + var SLICE_NAME = "components";
21 62
22 -const BASE_URL = 'elementor/v1/components';
23 -const getParams = id => ({
24 - action: 'get_document_config',
25 - unique_id: `document-config-${id}`,
26 - data: {
27 - id
28 - }
29 -});
30 -const apiClient = {
31 - get: () => (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().get(`${BASE_URL}`).then(res => res.data.data),
32 - create: payload => (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().post(`${BASE_URL}`, payload).then(res => res.data.data),
33 - updateStatuses: (ids, status) => (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().put(`${BASE_URL}/status`, {
34 - ids,
35 - status
36 - }),
37 - getComponentConfig: id => _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__.ajax.load(getParams(id)),
38 - invalidateComponentConfigCache: id => _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__.ajax.invalidateCache(getParams(id)),
39 - getComponentLockStatus: async componentId => await (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().get(`${BASE_URL}/lock-status`, {
40 - params: {
41 - componentId
42 - }
43 - }).then(res => {
44 - const {
45 - is_current_user_allow_to_edit: isAllowedToSwitchDocument,
46 - locked_by: lockedBy
47 - } = res.data.data;
48 - return {
49 - isAllowedToSwitchDocument,
50 - lockedBy: lockedBy || ''
51 - };
52 - }),
53 - lockComponent: async componentId => await (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().post(`${BASE_URL}/lock`, {
54 - componentId
55 - }).then(res => res.data),
56 - unlockComponent: async componentId => await (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().post(`${BASE_URL}/unlock`, {
57 - componentId
58 - }).then(res => res.data),
59 - getOverridableProps: async componentIds => await (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().get(`${BASE_URL}/overridable-props`, {
60 - params: {
61 - 'componentIds[]': componentIds
62 - }
63 - }).then(res => res.data),
64 - updateArchivedComponents: async (componentIds, status) => await (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().post(`${BASE_URL}/archive`, {
65 - componentIds,
66 - status
67 - }).then(res => res.data.data),
68 - updateComponentTitle: (updatedComponentNames, status) => (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().post(`${BASE_URL}/update-titles`, {
69 - components: updatedComponentNames,
70 - status
71 - }).then(res => res.data.data),
72 - validate: async payload => await (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().post(`${BASE_URL}/create-validate`, payload).then(res => res.data)
73 -};
63 +//#endregion
64 +//#region packages/packages/core/editor-components/src/api.ts
65 + var BASE_URL = "elementor/v1/components";
66 + var getParams = (id) => ({
67 + action: "get_document_config",
68 + unique_id: `document-config-${id}`,
69 + data: { id }
70 + });
71 + var apiClient = {
72 + get: () => (0, _elementor_http_client.httpService)().get(`${BASE_URL}`).then((res) => res.data.data),
73 + create: (payload) => (0, _elementor_http_client.httpService)().post(`${BASE_URL}`, payload).then((res) => res.data.data),
74 + updateStatuses: (ids, status) => (0, _elementor_http_client.httpService)().put(`${BASE_URL}/status`, {
75 + ids,
76 + status
77 + }),
78 + getComponentConfig: (id) => _elementor_editor_v1_adapters.ajax.load(getParams(id)),
79 + invalidateComponentConfigCache: (id) => _elementor_editor_v1_adapters.ajax.invalidateCache(getParams(id)),
80 + getComponentLockStatus: async (componentId) => await (0, _elementor_http_client.httpService)().get(`${BASE_URL}/lock-status`, { params: { componentId } }).then((res) => {
81 + const { is_current_user_allow_to_edit: isAllowedToSwitchDocument, locked_by: lockedBy } = res.data.data;
82 + return {
83 + isAllowedToSwitchDocument,
84 + lockedBy: lockedBy || ""
85 + };
86 + }),
87 + lockComponent: async (componentId) => await (0, _elementor_http_client.httpService)().post(`${BASE_URL}/lock`, { componentId }).then((res) => res.data),
88 + unlockComponent: async (componentId) => await (0, _elementor_http_client.httpService)().post(`${BASE_URL}/unlock`, { componentId }).then((res) => res.data),
89 + getOverridableProps: async (componentIds) => await (0, _elementor_http_client.httpService)().get(`${BASE_URL}/overridable-props`, { params: { "componentIds[]": componentIds } }).then((res) => res.data),
90 + updateArchivedComponents: async (componentIds, status) => await (0, _elementor_http_client.httpService)().post(`${BASE_URL}/archive`, {
91 + componentIds,
92 + status
93 + }).then((res) => res.data.data),
94 + updateComponentTitle: (updatedComponentNames, status) => (0, _elementor_http_client.httpService)().post(`${BASE_URL}/update-titles`, {
95 + components: updatedComponentNames,
96 + status
97 + }).then((res) => res.data.data),
98 + validate: async (payload) => await (0, _elementor_http_client.httpService)().post(`${BASE_URL}/create-validate`, payload).then((res) => res.data)
99 + };
74 100
75 -/***/ }),
101 +//#endregion
102 +//#region packages/packages/core/editor-components/src/store/thunks.ts
103 + var loadComponents = (0, _elementor_store.__createAsyncThunk)("components/load", async () => {
104 + return await apiClient.get();
105 + });
76 106
77 -/***/ "./packages/packages/core/editor-components/src/component-instance-transformer.ts":
78 -/*!****************************************************************************************!*\
79 - !*** ./packages/packages/core/editor-components/src/component-instance-transformer.ts ***!
80 - \****************************************************************************************/
81 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
107 +//#endregion
108 +//#region packages/packages/core/editor-components/src/store/extensible-slice.ts
109 + var extraReducersMap = /* @__PURE__ */ new Map();
110 + function registerComponentsReducer(name, reducer) {
111 + extraReducersMap.set(`${SLICE_NAME}/${name}`, reducer);
112 + }
113 + function createComponentsAction(name) {
114 + const action = (0, _elementor_store.__createAction)(`${SLICE_NAME}/${name}`);
115 + return {
116 + action,
117 + register(reducer) {
118 + registerComponentsReducer(name, reducer);
119 + },
120 + dispatch(payload) {
121 + (0, _elementor_store.__dispatch)(action(payload));
122 + }
123 + };
124 + }
125 + var baseSlice = (0, _elementor_store.__createSlice)({
126 + name: SLICE_NAME,
127 + initialState,
128 + reducers: {
129 + add: (state, { payload }) => {
130 + if (Array.isArray(payload)) state.data = [...payload, ...state.data];
131 + else state.data.unshift(payload);
132 + },
133 + load: (state, { payload }) => {
134 + state.data = payload;
135 + },
136 + addUnpublished: (state, { payload }) => {
137 + state.unpublishedData.unshift(payload);
138 + },
139 + removeUnpublished: (state, { payload }) => {
140 + const uidsToRemove = Array.isArray(payload) ? payload : [payload];
141 + state.unpublishedData = state.unpublishedData.filter((component) => !uidsToRemove.includes(component.uid));
142 + },
143 + resetUnpublished: (state) => {
144 + state.unpublishedData = [];
145 + },
146 + addCreatedThisSession: (state, { payload }) => {
147 + state.createdThisSession.push(payload);
148 + },
149 + removeCreatedThisSession: (state, { payload }) => {
150 + state.createdThisSession = state.createdThisSession.filter((uid) => uid !== payload);
151 + },
152 + archive: (state, { payload }) => {
153 + const component = state.data.find((comp) => comp.id === payload);
154 + if (component) {
155 + component.isArchived = true;
156 + state.archivedThisSession.push(payload);
157 + }
158 + },
159 + setCurrentComponentId: (state, { payload }) => {
160 + state.currentComponentId = payload;
161 + },
162 + setPath: (state, { payload }) => {
163 + state.path = payload;
164 + },
165 + setOverridableProps: (state, { payload }) => {
166 + const component = state.data.find((comp) => comp.id === payload.componentId);
167 + if (!component) return;
168 + component.overridableProps = payload.overridableProps;
169 + },
170 + loadOverridableProps: (state, { payload }) => {
171 + Object.keys(payload).forEach((id) => {
172 + const componentId = Number(id);
173 + const overridableProps = payload[componentId];
174 + const component = state.data.find((comp) => comp.id === componentId);
175 + if (!component || !overridableProps) return;
176 + component.overridableProps = overridableProps;
177 + });
178 + },
179 + rename: (state, { payload }) => {
180 + const component = state.data.find((comp) => comp.uid === payload.componentUid);
181 + if (!component) return;
182 + if (component.id) state.updatedComponentNames[component.id] = payload.name;
183 + component.name = payload.name;
184 + },
185 + cleanUpdatedComponentNames: (state) => {
186 + state.updatedComponentNames = {};
187 + },
188 + updateComponentSanitizedAttribute: (state, { payload: { componentId, attribute } }) => {
189 + if (!state.sanitized[componentId]) state.sanitized[componentId] = {};
190 + state.sanitized[componentId][attribute] = true;
191 + },
192 + resetSanitizedComponents: (state) => {
193 + state.sanitized = {};
194 + }
195 + },
196 + extraReducers: (builder) => {
197 + builder.addCase(loadComponents.fulfilled, (state, { payload }) => {
198 + state.data = payload;
199 + state.loadStatus = "idle";
200 + });
201 + builder.addCase(loadComponents.pending, (state) => {
202 + state.loadStatus = "pending";
203 + });
204 + builder.addCase(loadComponents.rejected, (state) => {
205 + state.loadStatus = "error";
206 + });
207 + }
208 + });
209 + var slice = {
210 + ...baseSlice,
211 + reducer(state, action) {
212 + const nextState = baseSlice.reducer(state, action);
213 + const extraReducer = extraReducersMap.get(action.type);
214 + if (!extraReducer || !nextState) return nextState;
215 + const clonedState = structuredClone(nextState);
216 + extraReducer(clonedState, action);
217 + return clonedState;
218 + }
219 + };
82 220
83 -__webpack_require__.r(__webpack_exports__);
84 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
85 -/* harmony export */ componentInstanceTransformer: function() { return /* binding */ componentInstanceTransformer; }
86 -/* harmony export */ });
87 -/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-canvas */ "@elementor/editor-canvas");
88 -/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__);
89 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
90 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_1__);
91 -/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
92 -/* harmony import */ var _utils_component_document_data__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/component-document-data */ "./packages/packages/core/editor-components/src/utils/component-document-data.ts");
221 +//#endregion
222 +//#region packages/packages/core/editor-components/src/store/store.ts
223 + var selectData = (state) => state[SLICE_NAME].data;
224 + var selectArchivedThisSession = (state) => state[SLICE_NAME].archivedThisSession;
225 + var selectLoadStatus = (state) => state[SLICE_NAME].loadStatus;
226 + var selectUnpublishedData = (state) => state[SLICE_NAME].unpublishedData;
227 + var getCreatedThisSession = (state) => state[SLICE_NAME].createdThisSession;
228 + var getPath = (state) => state[SLICE_NAME].path;
229 + var getCurrentComponentId = (state) => state[SLICE_NAME].currentComponentId;
230 + var selectComponent = (state, componentId) => state[SLICE_NAME].data.find((component) => component.id === componentId);
231 + var useComponent = (componentId) => {
232 + return (0, _elementor_store.__useSelector)((state) => componentId ? selectComponent(state, componentId) : null);
233 + };
234 + var selectComponentByUid = (state, componentUid) => state["components"].data.find((component) => component.uid === componentUid) ?? state["components"].unpublishedData.find((component) => component.uid === componentUid);
235 + var selectComponents = (0, _elementor_store.__createSelector)(selectData, selectUnpublishedData, (data, unpublishedData) => [...unpublishedData.map((item) => ({
236 + uid: item.uid,
237 + name: item.name,
238 + overridableProps: item.overridableProps
239 + })), ...data.filter((component) => !component.isArchived)]);
240 + var selectUnpublishedComponents = (0, _elementor_store.__createSelector)(selectUnpublishedData, (unpublishedData) => unpublishedData);
241 + var selectLoadIsPending = (0, _elementor_store.__createSelector)(selectLoadStatus, (status) => status === "pending");
242 + var selectLoadIsError = (0, _elementor_store.__createSelector)(selectLoadStatus, (status) => status === "error");
243 + var selectCreatedThisSession = (0, _elementor_store.__createSelector)(getCreatedThisSession, (createdThisSession) => createdThisSession);
244 + var DEFAULT_OVERRIDABLE_PROPS = {
245 + props: {},
246 + groups: {
247 + items: {},
248 + order: []
249 + }
250 + };
251 + var selectOverridableProps = (0, _elementor_store.__createSelector)(selectComponent, (component) => {
252 + if (!component) return;
253 + return component.overridableProps ?? DEFAULT_OVERRIDABLE_PROPS;
254 + });
255 + var useOverridableProps = (componentId) => {
256 + return (0, _elementor_store.__useSelector)((state) => componentId ? selectOverridableProps(state, componentId) : null);
257 + };
258 + var selectIsOverridablePropsLoaded = (0, _elementor_store.__createSelector)(selectComponent, (component) => {
259 + return !!component?.overridableProps;
260 + });
261 + var selectPath = (0, _elementor_store.__createSelector)(getPath, (path) => path);
262 + var selectCurrentComponentId = (0, _elementor_store.__createSelector)(getCurrentComponentId, (currentComponentId) => currentComponentId);
263 + var selectCurrentComponent = (0, _elementor_store.__createSelector)(selectData, getCurrentComponentId, (data, currentComponentId) => data.find((component) => component.id === currentComponentId));
264 + var useCurrentComponentId = () => {
265 + return (0, _elementor_store.__useSelector)(selectCurrentComponentId);
266 + };
267 + var useCurrentComponent = () => {
268 + return (0, _elementor_store.__useSelector)(selectCurrentComponent);
269 + };
270 + var selectUpdatedComponentNames = (0, _elementor_store.__createSelector)((state) => state[SLICE_NAME].updatedComponentNames, (updatedComponentNames) => Object.entries(updatedComponentNames).map(([componentId, title]) => ({
271 + componentId: Number(componentId),
272 + title
273 + })));
274 + var useSanitizedComponents = () => {
275 + return (0, _elementor_store.__useSelector)((state) => state[SLICE_NAME].sanitized);
276 + };
277 + var useIsSanitizedComponent = (componentId, key) => {
278 + const sanitizedComponents = useSanitizedComponents();
279 + if (!componentId) return false;
280 + return !!sanitizedComponents[componentId]?.[key];
281 + };
93 282
283 +//#endregion
284 +//#region packages/packages/core/editor-components/src/utils/component-document-data.ts
285 + var getComponentDocumentParams = (id) => ({
286 + action: "get_document_config",
287 + unique_id: `document-${id}`,
288 + data: { id }
289 + });
290 + var pendingRequests = /* @__PURE__ */ new Map();
291 + var getComponentDocumentData = (id) => {
292 + const pendingRequest = pendingRequests.get(id);
293 + if (pendingRequest) return pendingRequest;
294 + const request = _elementor_editor_v1_adapters.ajax.load(getComponentDocumentParams(id)).catch(() => null).finally(() => pendingRequests.delete(id));
295 + pendingRequests.set(id, request);
296 + return request;
297 + };
94 298
299 +//#endregion
300 +//#region packages/packages/core/editor-components/src/component-instance-transformer.ts
301 + var componentInstanceTransformer = (0, _elementor_editor_canvas.createTransformer)(async ({ component_id: id, overrides: overridesValue }) => {
302 + const unpublishedComponent = selectUnpublishedComponents((0, _elementor_store.__getState)()).find(({ uid }) => uid === id);
303 + const overrides = overridesValue?.reduce((acc, override) => ({
304 + ...acc,
305 + ...override
306 + }), {});
307 + if (unpublishedComponent) return {
308 + elements: structuredClone(unpublishedComponent.elements),
309 + overrides
310 + };
311 + if (typeof id !== "number") throw new Error(`Component ID "${id}" not valid.`);
312 + return {
313 + elements: (await getComponentDocumentData(id))?.elements ?? [],
314 + overrides
315 + };
316 + });
95 317
318 +//#endregion
319 +//#region packages/packages/core/editor-components/src/component-overridable-transformer.ts
320 + var componentOverridableTransformer = (0, _elementor_editor_canvas.createTransformer)((value, options) => {
321 + const { overrides } = options.renderContext ?? {};
322 + const overrideValue = overrides?.[value.override_key];
323 + if (overrideValue) {
324 + if (isOriginValueOverride(value.origin_value)) return transformOverride(value, options, overrideValue);
325 + return overrideValue;
326 + }
327 + return value.origin_value;
328 + });
329 + function transformOverride(value, options, overrideValue) {
330 + const transformer = _elementor_editor_canvas.settingsTransformersRegistry.get("override");
331 + if (!transformer) return null;
332 + const transformedValue = transformer(value.origin_value.value, options);
333 + if (!transformedValue) return null;
334 + const [key] = Object.keys(transformedValue);
335 + return { [key]: overrideValue };
336 + }
337 + function isOriginValueOverride(originValue) {
338 + return originValue.$$type === "override";
339 + }
96 340
97 -const componentInstanceTransformer = (0,_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__.createTransformer)(async ({
98 - component_id: id,
99 - overrides: overridesValue
100 -}) => {
101 - const unpublishedComponents = (0,_store_store__WEBPACK_IMPORTED_MODULE_2__.selectUnpublishedComponents)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__getState)());
102 - const unpublishedComponent = unpublishedComponents.find(({
103 - uid
104 - }) => uid === id);
105 - const overrides = overridesValue?.reduce((acc, override) => ({
106 - ...acc,
107 - ...override
108 - }), {});
109 - if (unpublishedComponent) {
110 - return {
111 - elements: structuredClone(unpublishedComponent.elements),
112 - overrides
113 - };
114 - }
115 - if (typeof id !== 'number') {
116 - throw new Error(`Component ID "${id}" not valid.`);
117 - }
118 - const data = await (0,_utils_component_document_data__WEBPACK_IMPORTED_MODULE_3__.getComponentDocumentData)(id);
119 - return {
120 - elements: data?.elements ?? [],
121 - overrides
122 - };
123 -});
341 +//#endregion
342 +//#region packages/packages/core/editor-components/src/component-override-transformer.ts
343 + var componentOverrideTransformer = (0, _elementor_editor_canvas.createTransformer)((override) => {
344 + const { override_key: key, override_value: overrideValue } = override;
345 + return { [key]: overrideValue };
346 + });
124 347
125 -/***/ }),
348 +//#endregion
349 +//#region packages/packages/core/editor-components/src/hooks/use-components.ts
350 + var useComponents = () => {
351 + return {
352 + components: (0, _elementor_store.__useSelector)(selectComponents),
353 + isLoading: (0, _elementor_store.__useSelector)(selectLoadIsPending)
354 + };
355 + };
126 356
127 -/***/ "./packages/packages/core/editor-components/src/component-overridable-transformer.ts":
128 -/*!*******************************************************************************************!*\
129 - !*** ./packages/packages/core/editor-components/src/component-overridable-transformer.ts ***!
130 - \*******************************************************************************************/
131 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
357 +//#endregion
358 +//#region packages/packages/core/editor-components/src/utils/is-pro-components-supported.ts
359 + var MIN_PRO_VERSION_FOR_COMPONENTS = "4.0";
360 + function isProComponentsSupported() {
361 + return (0, _elementor_utils.hasProInstalled)() && (0, _elementor_utils.isProAtLeast)(MIN_PRO_VERSION_FOR_COMPONENTS);
362 + }
363 + function isProOutdatedForComponents() {
364 + return (0, _elementor_utils.hasProInstalled)() && !(0, _elementor_utils.isProAtLeast)(MIN_PRO_VERSION_FOR_COMPONENTS);
365 + }
132 366
133 -__webpack_require__.r(__webpack_exports__);
134 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
135 -/* harmony export */ componentOverridableTransformer: function() { return /* binding */ componentOverridableTransformer; }
136 -/* harmony export */ });
137 -/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-canvas */ "@elementor/editor-canvas");
138 -/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__);
367 +//#endregion
368 +//#region packages/packages/core/editor-components/src/components/components-tab/search-provider.tsx
369 + var SearchContext = (0, react.createContext)(void 0);
370 + var SearchProvider = ({ children, localStorageKey }) => {
371 + const { debouncedValue, handleChange, inputValue } = (0, _elementor_utils.useSearchState)({ localStorageKey });
372 + const clearSearch = () => {
373 + handleChange("");
374 + };
375 + return /* @__PURE__ */ react.createElement(SearchContext.Provider, { value: {
376 + handleChange,
377 + clearSearch,
378 + searchValue: debouncedValue,
379 + inputValue
380 + } }, children);
381 + };
382 + var useSearch = () => {
383 + const context = (0, react.useContext)(SearchContext);
384 + if (!context) throw new Error("useSearch must be used within a SearchProvider");
385 + return context;
386 + };
139 387
140 -const componentOverridableTransformer = (0,_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__.createTransformer)((value, options) => {
141 - const {
142 - overrides
143 - } = options.renderContext ?? {};
144 - const overrideValue = overrides?.[value.override_key];
145 - if (overrideValue) {
146 - const isOverride = isOriginValueOverride(value.origin_value);
147 - if (isOverride) {
148 - return transformOverride(value, options, overrideValue);
149 - }
150 - return overrideValue;
151 - }
152 - return value.origin_value;
153 -});
154 -function transformOverride(value, options, overrideValue) {
155 - const transformer = _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__.settingsTransformersRegistry.get('override');
156 - if (!transformer) {
157 - return null;
158 - }
159 - const transformedValue = transformer(value.origin_value.value, options);
160 - if (!transformedValue) {
161 - return null;
162 - }
163 - const [key] = Object.keys(transformedValue);
164 - return {
165 - [key]: overrideValue
166 - };
167 -}
168 -function isOriginValueOverride(originValue) {
169 - return originValue.$$type === 'override';
170 -}
388 +//#endregion
389 +//#region packages/packages/core/editor-components/src/components/components-tab/component-search.tsx
390 + var ComponentSearch = () => {
391 + const { inputValue, handleChange } = useSearch();
392 + return /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
393 + direction: "row",
394 + gap: .5,
395 + sx: {
396 + width: "100%",
397 + px: 2,
398 + py: 1.5
399 + }
400 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Box, { sx: { flexGrow: 1 } }, /* @__PURE__ */ react.createElement(_elementor_ui.TextField, {
401 + role: "search",
402 + fullWidth: true,
403 + size: "tiny",
404 + value: inputValue,
405 + placeholder: (0, _wordpress_i18n.__)("Search", "elementor"),
406 + onChange: (e) => handleChange(e.target.value),
407 + InputProps: { startAdornment: /* @__PURE__ */ react.createElement(_elementor_ui.InputAdornment, { position: "start" }, /* @__PURE__ */ react.createElement(_elementor_icons.SearchIcon, { fontSize: "tiny" })) }
408 + })));
409 + };
171 410
172 -/***/ }),
411 +//#endregion
412 +//#region packages/packages/core/editor-components/src/hooks/use-components-permissions.ts
413 + var useComponentsPermissions = () => {
414 + const { isAdmin } = (0, _elementor_editor_current_user.useCurrentUserCapabilities)();
415 + return {
416 + canCreate: isAdmin,
417 + canEdit: isAdmin,
418 + canDelete: isAdmin,
419 + canRename: isAdmin
420 + };
421 + };
173 422
174 -/***/ "./packages/packages/core/editor-components/src/component-override-transformer.ts":
175 -/*!****************************************************************************************!*\
176 - !*** ./packages/packages/core/editor-components/src/component-override-transformer.ts ***!
177 - \****************************************************************************************/
178 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
423 +//#endregion
424 +//#region packages/packages/core/editor-components/src/components/components-tab/components-item.tsx
425 + var ComponentItem = (0, react.forwardRef)(({ component, disabled = true, draggable, onDragStart, onDragEnd, onClick, isEditing = false, error = null, nameSlot, endSlot, ...props }, ref) => {
426 + return /* @__PURE__ */ react.createElement(_elementor_ui.ListItemButton, {
427 + disabled,
428 + draggable,
429 + onDragStart,
430 + onDragEnd,
431 + shape: "rounded",
432 + ref,
433 + sx: {
434 + border: "solid 1px",
435 + borderColor: "divider",
436 + py: .5,
437 + px: 1,
438 + display: "flex",
439 + width: "100%",
440 + alignItems: "center",
441 + gap: 1
442 + },
443 + ...props
444 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Box, {
445 + display: "flex",
446 + alignItems: "center",
447 + gap: 1,
448 + minWidth: 0,
449 + flexGrow: 1,
450 + onClick
451 + }, /* @__PURE__ */ react.createElement(_elementor_ui.ListItemIcon, { size: "tiny" }, /* @__PURE__ */ react.createElement(_elementor_icons.ComponentsIcon, { fontSize: "tiny" })), /* @__PURE__ */ react.createElement(Indicator, {
452 + isActive: isEditing,
453 + isError: !!error
454 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Box, {
455 + display: "flex",
456 + flex: 1,
457 + minWidth: 0,
458 + flexGrow: 1
459 + }, nameSlot ?? /* @__PURE__ */ react.createElement(ComponentName, { name: component.name })))), endSlot);
460 + });
461 + var Indicator = (0, _elementor_ui.styled)(_elementor_ui.Box, { shouldForwardProp: (prop) => prop !== "isActive" && prop !== "isError" })(({ theme, isActive, isError }) => ({
462 + display: "flex",
463 + width: "100%",
464 + flexGrow: 1,
465 + borderRadius: theme.spacing(.5),
466 + border: getIndicatorBorder({
467 + isActive,
468 + isError,
469 + theme
470 + }),
471 + padding: `0 ${theme.spacing(1)}`,
472 + marginLeft: isActive ? theme.spacing(1) : 0,
473 + minWidth: 0
474 + }));
475 + var getIndicatorBorder = ({ isActive, isError, theme }) => {
476 + if (isError) return `2px solid ${theme.palette.error.main}`;
477 + if (isActive) return `2px solid ${theme.palette.secondary.main}`;
478 + return "none";
479 + };
480 + function ComponentName({ name, editable }) {
481 + if (editable?.isEditing) return /* @__PURE__ */ react.createElement(_elementor_editor_ui.EditableField, {
482 + ref: editable.ref,
483 + as: _elementor_ui.Typography,
484 + variant: "caption",
485 + ...editable.getProps()
486 + });
487 + return /* @__PURE__ */ react.createElement(_elementor_editor_ui.EllipsisWithTooltip, {
488 + title: name,
489 + as: _elementor_ui.Typography,
490 + variant: "caption",
491 + color: "text.primary"
492 + });
493 + }
179 494
180 -__webpack_require__.r(__webpack_exports__);
181 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
182 -/* harmony export */ componentOverrideTransformer: function() { return /* binding */ componentOverrideTransformer; }
183 -/* harmony export */ });
184 -/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-canvas */ "@elementor/editor-canvas");
185 -/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__);
495 +//#endregion
496 +//#region packages/packages/core/editor-components/src/components/components-tab/loading-components.tsx
497 + var ROWS = Array.from({ length: 3 }, (_, index) => index);
498 + var STAGGER_DELAY_MS = 80;
499 + var LoadingComponents = () => {
500 + return /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
501 + "aria-label": "Loading components",
502 + gap: 1.5,
503 + sx: {
504 + pointerEvents: "none",
505 + position: "relative",
506 + maxHeight: "300px",
507 + overflow: "hidden",
508 + px: 1,
509 + "&:after": {
510 + position: "absolute",
511 + bottom: 0,
512 + content: "\"\"",
513 + left: 0,
514 + width: "100%",
515 + height: "40%",
516 + pointerEvents: "none",
517 + zIndex: 1
518 + }
519 + }
520 + }, ROWS.map((row) => /* @__PURE__ */ react.createElement(_elementor_ui.Box, {
521 + key: row,
522 + display: "flex",
523 + alignItems: "center",
524 + gap: 1.5,
525 + sx: {
526 + py: .75,
527 + px: 1.5,
528 + opacity: 0,
529 + animation: `e-loading-fade-in 0.4s ease-out ${row * STAGGER_DELAY_MS}ms forwards`,
530 + "@keyframes e-loading-fade-in": {
531 + from: {
532 + opacity: 0,
533 + transform: "translateY(4px)"
534 + },
535 + to: {
536 + opacity: 1,
537 + transform: "translateY(0)"
538 + }
539 + }
540 + }
541 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Skeleton, {
542 + animation: "wave",
543 + variant: "rounded",
544 + width: 24,
545 + height: 24
546 + }), /* @__PURE__ */ react.createElement(_elementor_ui.Skeleton, {
547 + animation: "wave",
548 + variant: "rounded",
549 + width: "60%",
550 + height: 14
551 + }))));
552 + };
186 553
187 -const componentOverrideTransformer = (0,_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__.createTransformer)(override => {
188 - const {
189 - override_key: key,
190 - override_value: overrideValue
191 - } = override;
192 - return {
193 - [key]: overrideValue
194 - };
195 -});
554 +//#endregion
555 +//#region packages/packages/core/editor-components/src/components/components-tab/components-list.tsx
556 + var LEARN_MORE_URL = "http://go.elementor.com/components-guide-article";
557 + var UPGRADE_URL$1 = "https://go.elementor.com/go-pro-components/";
558 + var UPDATE_PLUGINS_URL$2 = "/wp-admin/plugins.php";
559 + var SUBTITLE_OVERRIDE_SX = {
560 + fontSize: "0.875rem !important",
561 + fontWeight: "500 !important"
562 + };
563 + function ComponentsList() {
564 + const { components, isLoading, searchValue } = useFilteredComponents();
565 + if (isLoading) return /* @__PURE__ */ react.createElement(LoadingComponents, null);
566 + if (!components?.length) {
567 + if (searchValue.length) return /* @__PURE__ */ react.createElement(EmptySearchResult, null);
568 + if (isProOutdatedForComponents()) return /* @__PURE__ */ react.createElement(ProOutdatedEmptyState, null);
569 + return isProComponentsSupported() ? /* @__PURE__ */ react.createElement(EmptyState$1, null) : /* @__PURE__ */ react.createElement(ProUpgradeEmptyState, null);
570 + }
571 + return /* @__PURE__ */ react.createElement(_elementor_ui.List, { sx: {
572 + display: "flex",
573 + flexDirection: "column",
574 + gap: 1,
575 + px: 2
576 + } }, components.map((component) => /* @__PURE__ */ react.createElement(ComponentItem, {
577 + key: component.uid,
578 + component
579 + })));
580 + }
581 + var ProUpgradeEmptyState = () => {
582 + return /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
583 + alignItems: "center",
584 + justifyContent: "start",
585 + height: "100%",
586 + sx: {
587 + px: 2,
588 + py: 4
589 + },
590 + gap: 2,
591 + overflow: "hidden"
592 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
593 + alignItems: "center",
594 + gap: 1
595 + }, /* @__PURE__ */ react.createElement(_elementor_icons.ComponentsIcon, {
596 + fontSize: "large",
597 + sx: { color: "text.secondary" }
598 + }), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
599 + align: "center",
600 + variant: "subtitle2",
601 + color: "text.secondary",
602 + sx: SUBTITLE_OVERRIDE_SX
603 + }, (0, _wordpress_i18n.__)("Create Reusable Components", "elementor")), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
604 + align: "center",
605 + variant: "caption",
606 + color: "secondary",
607 + sx: { maxWidth: 200 }
608 + }, (0, _wordpress_i18n.__)("Create design elements that sync across your entire site.", "elementor"))), /* @__PURE__ */ react.createElement(_elementor_ui.Button, {
609 + variant: "contained",
610 + color: "promotion",
611 + size: "small",
612 + startIcon: /* @__PURE__ */ react.createElement(_elementor_icons.CrownFilledIcon, null),
613 + href: UPGRADE_URL$1,
614 + target: "_blank",
615 + rel: "noopener noreferrer"
616 + }, (0, _wordpress_i18n.__)("Upgrade now", "elementor")));
617 + };
618 + var ProOutdatedEmptyState = () => {
619 + return /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
620 + alignItems: "center",
621 + justifyContent: "start",
622 + height: "100%",
623 + sx: {
624 + px: 2,
625 + py: 4,
626 + maxWidth: 268,
627 + m: "auto"
628 + },
629 + gap: 2,
630 + overflow: "hidden"
631 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
632 + alignItems: "center",
633 + gap: 1
634 + }, /* @__PURE__ */ react.createElement(_elementor_icons.ComponentsIcon, {
635 + fontSize: "large",
636 + sx: { color: "text.secondary" }
637 + }), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
638 + align: "center",
639 + variant: "subtitle2",
640 + color: "text.secondary",
641 + sx: SUBTITLE_OVERRIDE_SX
642 + }, (0, _wordpress_i18n.__)("Create Reusable Components", "elementor")), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
643 + align: "center",
644 + variant: "caption",
645 + color: "secondary"
646 + }, (0, _wordpress_i18n.__)("Create design elements that sync across your entire site.", "elementor")), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
647 + align: "center",
648 + variant: "caption",
649 + color: "secondary",
650 + sx: { mt: 1 }
651 + }, (0, _wordpress_i18n.__)("To create components, update Elementor Pro to the latest version.", "elementor"))), /* @__PURE__ */ react.createElement(_elementor_ui.Button, {
652 + variant: "text",
653 + color: "info",
654 + size: "small",
655 + href: UPDATE_PLUGINS_URL$2,
656 + target: "_blank",
657 + rel: "noopener noreferrer"
658 + }, (0, _wordpress_i18n.__)("Update Elementor Pro", "elementor")));
659 + };
660 + var EmptyState$1 = /* @__PURE__ */ __name(() => {
661 + const { canCreate } = useComponentsPermissions();
662 + return /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
663 + alignItems: "center",
664 + justifyContent: "start",
665 + height: "100%",
666 + sx: {
667 + px: 2,
668 + py: 4
669 + },
670 + gap: 2,
671 + overflow: "hidden"
672 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
673 + alignItems: "center",
674 + gap: 1
675 + }, /* @__PURE__ */ react.createElement(_elementor_icons.ComponentsIcon, {
676 + fontSize: "large",
677 + sx: { color: "text.secondary" }
678 + }), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
679 + align: "center",
680 + variant: "subtitle2",
681 + color: "text.secondary",
682 + sx: SUBTITLE_OVERRIDE_SX
683 + }, (0, _wordpress_i18n.__)("No components yet", "elementor")), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
684 + align: "center",
685 + variant: "caption",
686 + color: "secondary",
687 + sx: { maxWidth: 200 }
688 + }, (0, _wordpress_i18n.__)("Components are reusable blocks that sync across your site.", "elementor"), /* @__PURE__ */ react.createElement("br", null), canCreate ? (0, _wordpress_i18n.__)("Create once, use everywhere.", "elementor") : (0, _wordpress_i18n.__)("With your current role, you cannot create components. Contact an administrator to create one.", "elementor")), /* @__PURE__ */ react.createElement(_elementor_ui.Link, {
689 + href: LEARN_MORE_URL,
690 + target: "_blank",
691 + rel: "noopener noreferrer",
692 + variant: "caption",
693 + color: "info.main"
694 + }, (0, _wordpress_i18n.__)("Learn more about components", "elementor"))), canCreate && /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(_elementor_ui.Divider, { sx: { width: "100%" } }), /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
695 + alignItems: "center",
696 + gap: 1,
697 + width: "100%"
698 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
699 + align: "center",
700 + variant: "subtitle2",
701 + color: "text.secondary",
702 + sx: SUBTITLE_OVERRIDE_SX
703 + }, (0, _wordpress_i18n.__)("Create your first one:", "elementor")), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
704 + align: "center",
705 + variant: "caption",
706 + color: "secondary",
707 + sx: { maxWidth: 228 }
708 + }, (0, _wordpress_i18n.__)("Right-click any div-block or flexbox on your canvas or structure and select \"Create component\"", "elementor")))));
709 + }, "EmptyState");
710 + var EmptySearchResult = () => {
711 + const { searchValue, clearSearch } = useSearch();
712 + return /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
713 + color: "text.secondary",
714 + pt: 5,
715 + alignItems: "center",
716 + gap: 1,
717 + overflow: "hidden",
718 + justifySelf: "center"
719 + }, /* @__PURE__ */ react.createElement(_elementor_icons.ComponentsIcon, null), /* @__PURE__ */ react.createElement(_elementor_ui.Box, { sx: { width: "100%" } }, /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
720 + align: "center",
721 + variant: "subtitle2",
722 + color: "inherit",
723 + sx: SUBTITLE_OVERRIDE_SX
724 + }, (0, _wordpress_i18n.__)("Sorry, nothing matched", "elementor")), searchValue && /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
725 + variant: "subtitle2",
726 + color: "inherit",
727 + sx: {
728 + ...SUBTITLE_OVERRIDE_SX,
729 + display: "flex",
730 + width: "100%",
731 + justifyContent: "center"
732 + }
733 + }, /* @__PURE__ */ react.createElement("span", null, "“"), /* @__PURE__ */ react.createElement("span", { style: {
734 + maxWidth: "80%",
735 + overflow: "hidden",
736 + textOverflow: "ellipsis"
737 + } }, searchValue), /* @__PURE__ */ react.createElement("span", null, "”."))), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
738 + align: "center",
739 + variant: "caption",
740 + color: "inherit"
741 + }, (0, _wordpress_i18n.__)("Try something else.", "elementor")), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
742 + align: "center",
743 + variant: "caption",
744 + color: "inherit"
745 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Link, {
746 + color: "secondary",
747 + variant: "caption",
748 + component: "button",
749 + onClick: clearSearch
750 + }, (0, _wordpress_i18n.__)("Clear & try again", "elementor"))));
751 + };
752 + var useFilteredComponents = () => {
753 + const { components, isLoading } = useComponents();
754 + const { searchValue } = useSearch();
755 + return {
756 + components: components.filter((component) => component.name.toLowerCase().includes(searchValue.toLowerCase())),
757 + isLoading,
758 + searchValue
759 + };
760 + };
196 761
197 -/***/ }),
762 +//#endregion
763 +//#region packages/packages/core/editor-components/src/components/components-upgrade-alert.tsx
764 + function ComponentsUpgradeAlert({ title, description, upgradeUrl }) {
765 + return /* @__PURE__ */ react.createElement(_elementor_ui.Box, { sx: {
766 + mt: "auto",
767 + position: "sticky",
768 + bottom: 0
769 + } }, /* @__PURE__ */ react.createElement(_elementor_ui.Alert, {
770 + variant: "standard",
771 + color: "promotion",
772 + icon: /* @__PURE__ */ react.createElement(_elementor_icons.CrownFilledIcon, { fontSize: "tiny" }),
773 + role: "status",
774 + size: "small",
775 + action: /* @__PURE__ */ react.createElement(_elementor_ui.AlertAction, {
776 + variant: "contained",
777 + color: "promotion",
778 + href: upgradeUrl,
779 + target: "_blank",
780 + rel: "noopener noreferrer"
781 + }, (0, _wordpress_i18n.__)("Upgrade now", "elementor")),
782 + sx: {
783 + m: 2,
784 + mt: 1
785 + }
786 + }, /* @__PURE__ */ react.createElement(_elementor_ui.AlertTitle, null, title), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, { variant: "caption" }, description)));
787 + }
198 788
199 -/***/ "./packages/packages/core/editor-components/src/components/components-tab/component-search.tsx":
200 -/*!*****************************************************************************************************!*\
201 - !*** ./packages/packages/core/editor-components/src/components/components-tab/component-search.tsx ***!
202 - \*****************************************************************************************************/
203 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
789 +//#endregion
790 +//#region packages/packages/core/editor-components/src/components/components-tab/components-pro-notification.tsx
791 + var UPGRADE_URL = "https://go.elementor.com/go-pro-components-exist-footer/";
792 + function ComponentsProNotification() {
793 + return /* @__PURE__ */ react.createElement(ComponentsUpgradeAlert, {
794 + title: (0, _wordpress_i18n.__)("Create new components", "elementor"),
795 + description: (0, _wordpress_i18n.__)("Creating new components requires an active Pro subscription.", "elementor"),
796 + upgradeUrl: UPGRADE_URL
797 + });
798 + }
204 799
205 -__webpack_require__.r(__webpack_exports__);
206 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
207 -/* harmony export */ ComponentSearch: function() { return /* binding */ ComponentSearch; }
208 -/* harmony export */ });
209 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
210 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
211 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
212 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__);
213 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
214 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
215 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
216 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
217 -/* harmony import */ var _search_provider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./search-provider */ "./packages/packages/core/editor-components/src/components/components-tab/search-provider.tsx");
800 +//#endregion
801 +//#region packages/packages/core/editor-components/src/components/components-update-alert.tsx
802 + var UPDATE_PLUGINS_URL$1 = "/wp-admin/plugins.php";
803 + function ComponentsUpdateAlert({ title, description }) {
804 + return /* @__PURE__ */ react.createElement(_elementor_ui.Box, { sx: {
805 + mt: "auto",
806 + position: "sticky",
807 + bottom: 0
808 + } }, /* @__PURE__ */ react.createElement(_elementor_ui.Alert, {
809 + variant: "standard",
810 + color: "info",
811 + icon: /* @__PURE__ */ react.createElement(_elementor_icons.InfoCircleFilledIcon, { fontSize: "tiny" }),
812 + role: "status",
813 + size: "small",
814 + action: /* @__PURE__ */ react.createElement(_elementor_ui.AlertAction, {
815 + variant: "contained",
816 + color: "info",
817 + href: UPDATE_PLUGINS_URL$1,
818 + target: "_blank",
819 + rel: "noopener noreferrer"
820 + }, (0, _wordpress_i18n.__)("Upgrade Now", "elementor")),
821 + sx: {
822 + m: 2,
823 + mt: 1
824 + }
825 + }, /* @__PURE__ */ react.createElement(_elementor_ui.AlertTitle, null, title), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, { variant: "caption" }, description)));
826 + }
218 827
828 +//#endregion
829 +//#region packages/packages/core/editor-components/src/components/components-tab/components-update-notification.tsx
830 + function ComponentsUpdateNotification() {
831 + return /* @__PURE__ */ react.createElement(ComponentsUpdateAlert, {
832 + title: (0, _wordpress_i18n.__)("Create new Components", "elementor"),
833 + description: (0, _wordpress_i18n.__)("To create new components, update Elementor Pro to the latest version.", "elementor")
834 + });
835 + }
219 836
220 -
221 -
222 -
223 -const ComponentSearch = () => {
224 - const {
225 - inputValue,
226 - handleChange
227 - } = (0,_search_provider__WEBPACK_IMPORTED_MODULE_4__.useSearch)();
228 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
229 - direction: "row",
230 - gap: 0.5,
231 - sx: {
232 - width: '100%',
233 - px: 2,
234 - py: 1.5
235 - }
236 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Box, {
237 - sx: {
238 - flexGrow: 1
239 - }
240 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.TextField, {
241 - role: 'search',
242 - fullWidth: true,
243 - size: 'tiny',
244 - value: inputValue,
245 - placeholder: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Search', 'elementor'),
246 - onChange: e => handleChange(e.target.value),
247 - InputProps: {
248 - startAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.InputAdornment, {
249 - position: "start"
250 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.SearchIcon, {
251 - fontSize: 'tiny'
252 - }))
253 - }
254 - })));
255 -};
256 -
257 -/***/ }),
258 -
259 -/***/ "./packages/packages/core/editor-components/src/components/components-tab/components-item.tsx":
260 -/*!****************************************************************************************************!*\
261 - !*** ./packages/packages/core/editor-components/src/components/components-tab/components-item.tsx ***!
262 - \****************************************************************************************************/
263 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
264 -
265 -__webpack_require__.r(__webpack_exports__);
266 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
267 -/* harmony export */ ComponentItem: function() { return /* binding */ ComponentItem; },
268 -/* harmony export */ ComponentName: function() { return /* binding */ ComponentName; }
269 -/* harmony export */ });
270 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
271 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
272 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
273 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__);
274 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
275 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__);
276 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
277 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__);
278 -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); }
279 -
280 -
281 -
282 -
283 -
284 -const ComponentItem = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(({
285 - component,
286 - disabled = true,
287 - draggable,
288 - onDragStart,
289 - onDragEnd,
290 - onClick,
291 - isEditing = false,
292 - error = null,
293 - nameSlot,
294 - endSlot,
295 - ...props
296 -}, ref) => {
297 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.ListItemButton, _extends({
298 - disabled: disabled,
299 - draggable: draggable,
300 - onDragStart: onDragStart,
301 - onDragEnd: onDragEnd,
302 - shape: "rounded",
303 - ref: ref,
304 - sx: {
305 - border: 'solid 1px',
306 - borderColor: 'divider',
307 - py: 0.5,
308 - px: 1,
309 - display: 'flex',
310 - width: '100%',
311 - alignItems: 'center',
312 - gap: 1
313 - }
314 - }, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, {
315 - display: "flex",
316 - alignItems: "center",
317 - gap: 1,
318 - minWidth: 0,
319 - flexGrow: 1,
320 - onClick: onClick
321 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.ListItemIcon, {
322 - size: "tiny"
323 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__.ComponentsIcon, {
324 - fontSize: "tiny"
325 - })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Indicator, {
326 - isActive: isEditing,
327 - isError: !!error
328 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, {
329 - display: "flex",
330 - flex: 1,
331 - minWidth: 0,
332 - flexGrow: 1
333 - }, nameSlot ?? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ComponentName, {
334 - name: component.name
335 - })))), endSlot);
336 -});
337 -const Indicator = (0,_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.styled)(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, {
338 - shouldForwardProp: prop => prop !== 'isActive' && prop !== 'isError'
339 -})(({
340 - theme,
341 - isActive,
342 - isError
343 -}) => ({
344 - display: 'flex',
345 - width: '100%',
346 - flexGrow: 1,
347 - borderRadius: theme.spacing(0.5),
348 - border: getIndicatorBorder({
349 - isActive,
350 - isError,
351 - theme
352 - }),
353 - padding: `0 ${theme.spacing(1)}`,
354 - marginLeft: isActive ? theme.spacing(1) : 0,
355 - minWidth: 0
356 -}));
357 -const getIndicatorBorder = ({
358 - isActive,
359 - isError,
360 - theme
361 -}) => {
362 - if (isError) {
363 - return `2px solid ${theme.palette.error.main}`;
364 - }
365 - if (isActive) {
366 - return `2px solid ${theme.palette.secondary.main}`;
367 - }
368 - return 'none';
369 -};
370 -function ComponentName({
371 - name,
372 - editable
373 -}) {
374 - if (editable?.isEditing) {
375 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.EditableField, _extends({
376 - ref: editable.ref,
377 - as: _elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Typography,
378 - variant: "caption"
379 - }, editable.getProps()));
380 - }
381 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.EllipsisWithTooltip, {
382 - title: name,
383 - as: _elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Typography,
384 - variant: "caption",
385 - color: "text.primary"
386 - });
387 -}
388 -
389 -/***/ }),
390 -
391 -/***/ "./packages/packages/core/editor-components/src/components/components-tab/components-list.tsx":
392 -/*!****************************************************************************************************!*\
393 - !*** ./packages/packages/core/editor-components/src/components/components-tab/components-list.tsx ***!
394 - \****************************************************************************************************/
395 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
396 -
397 -__webpack_require__.r(__webpack_exports__);
398 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
399 -/* harmony export */ ComponentsList: function() { return /* binding */ ComponentsList; },
400 -/* harmony export */ EmptySearchResult: function() { return /* binding */ EmptySearchResult; },
401 -/* harmony export */ useFilteredComponents: function() { return /* binding */ useFilteredComponents; }
402 -/* harmony export */ });
403 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
404 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
405 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
406 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__);
407 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
408 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
409 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
410 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
411 -/* harmony import */ var _hooks_use_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/use-components */ "./packages/packages/core/editor-components/src/hooks/use-components.ts");
412 -/* harmony import */ var _hooks_use_components_permissions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../hooks/use-components-permissions */ "./packages/packages/core/editor-components/src/hooks/use-components-permissions.ts");
413 -/* harmony import */ var _utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/is-pro-components-supported */ "./packages/packages/core/editor-components/src/utils/is-pro-components-supported.ts");
414 -/* harmony import */ var _components_item__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components-item */ "./packages/packages/core/editor-components/src/components/components-tab/components-item.tsx");
415 -/* harmony import */ var _loading_components__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./loading-components */ "./packages/packages/core/editor-components/src/components/components-tab/loading-components.tsx");
416 -/* harmony import */ var _search_provider__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./search-provider */ "./packages/packages/core/editor-components/src/components/components-tab/search-provider.tsx");
417 -
418 -
419 -
420 -
421 -
422 -
423 -
424 -
425 -
426 -
427 -const LEARN_MORE_URL = 'http://go.elementor.com/components-guide-article';
428 -const UPGRADE_URL = 'https://go.elementor.com/go-pro-components/';
429 -const UPDATE_PLUGINS_URL = '/wp-admin/plugins.php';
430 -
431 -// Override legacy panel CSS reset that sets h1-h6 to font-size:100% and font-weight:normal.
432 -// See: assets/dev/scss/editor/panel/_reset.scss (applied via :where() selector in panel.scss).
433 -const SUBTITLE_OVERRIDE_SX = {
434 - fontSize: '0.875rem !important',
435 - fontWeight: '500 !important'
436 -};
437 -function ComponentsList() {
438 - const {
439 - components,
440 - isLoading,
441 - searchValue
442 - } = useFilteredComponents();
443 - if (isLoading) {
444 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_loading_components__WEBPACK_IMPORTED_MODULE_8__.LoadingComponents, null);
445 - }
446 - const isEmpty = !components?.length;
447 - if (isEmpty) {
448 - if (searchValue.length) {
449 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(EmptySearchResult, null);
450 - }
451 - if ((0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_6__.isProOutdatedForComponents)()) {
452 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ProOutdatedEmptyState, null);
453 - }
454 - return (0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_6__.isProComponentsSupported)() ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(EmptyState, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ProUpgradeEmptyState, null);
455 - }
456 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.List, {
457 - sx: {
458 - display: 'flex',
459 - flexDirection: 'column',
460 - gap: 1,
461 - px: 2
462 - }
463 - }, components.map(component => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_item__WEBPACK_IMPORTED_MODULE_7__.ComponentItem, {
464 - key: component.uid,
465 - component: component
466 - })));
467 -}
468 -const ProUpgradeEmptyState = () => {
469 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
470 - alignItems: "center",
471 - justifyContent: "start",
472 - height: "100%",
473 - sx: {
474 - px: 2,
475 - py: 4
476 - },
477 - gap: 2,
478 - overflow: "hidden"
479 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
480 - alignItems: "center",
481 - gap: 1
482 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.ComponentsIcon, {
483 - fontSize: "large",
484 - sx: {
485 - color: 'text.secondary'
486 - }
487 - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
488 - align: "center",
489 - variant: "subtitle2",
490 - color: "text.secondary",
491 - sx: SUBTITLE_OVERRIDE_SX
492 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Create Reusable Components', 'elementor')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
493 - align: "center",
494 - variant: "caption",
495 - color: "secondary",
496 - sx: {
497 - maxWidth: 200
498 - }
499 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Create design elements that sync across your entire site.', 'elementor'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Button, {
500 - variant: "contained",
501 - color: "promotion",
502 - size: "small",
503 - startIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.CrownFilledIcon, null),
504 - href: UPGRADE_URL,
505 - target: "_blank",
506 - rel: "noopener noreferrer"
507 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Upgrade now', 'elementor')));
508 -};
509 -const ProOutdatedEmptyState = () => {
510 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
511 - alignItems: "center",
512 - justifyContent: "start",
513 - height: "100%",
514 - sx: {
515 - px: 2,
516 - py: 4,
517 - maxWidth: 268,
518 - m: 'auto'
519 - },
520 - gap: 2,
521 - overflow: "hidden"
522 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
523 - alignItems: "center",
524 - gap: 1
525 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.ComponentsIcon, {
526 - fontSize: "large",
527 - sx: {
528 - color: 'text.secondary'
529 - }
530 - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
531 - align: "center",
532 - variant: "subtitle2",
533 - color: "text.secondary",
534 - sx: SUBTITLE_OVERRIDE_SX
535 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Create Reusable Components', 'elementor')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
536 - align: "center",
537 - variant: "caption",
538 - color: "secondary"
539 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Create design elements that sync across your entire site.', 'elementor')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
540 - align: "center",
541 - variant: "caption",
542 - color: "secondary",
543 - sx: {
544 - mt: 1
545 - }
546 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('To create components, update Elementor Pro to the latest version.', 'elementor'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Button, {
547 - variant: "text",
548 - color: "info",
549 - size: "small",
550 - href: UPDATE_PLUGINS_URL,
551 - target: "_blank",
552 - rel: "noopener noreferrer"
553 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Update Elementor Pro', 'elementor')));
554 -};
555 -const EmptyState = () => {
556 - const {
557 - canCreate
558 - } = (0,_hooks_use_components_permissions__WEBPACK_IMPORTED_MODULE_5__.useComponentsPermissions)();
559 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
560 - alignItems: "center",
561 - justifyContent: "start",
562 - height: "100%",
563 - sx: {
564 - px: 2,
565 - py: 4
566 - },
567 - gap: 2,
568 - overflow: "hidden"
569 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
570 - alignItems: "center",
571 - gap: 1
572 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.ComponentsIcon, {
573 - fontSize: "large",
574 - sx: {
575 - color: 'text.secondary'
576 - }
577 - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
578 - align: "center",
579 - variant: "subtitle2",
580 - color: "text.secondary",
581 - sx: SUBTITLE_OVERRIDE_SX
582 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('No components yet', 'elementor')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
583 - align: "center",
584 - variant: "caption",
585 - color: "secondary",
586 - sx: {
587 - maxWidth: 200
588 - }
589 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Components are reusable blocks that sync across your site.', 'elementor'), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("br", null), canCreate ? (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Create once, use everywhere.', 'elementor') : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('With your current role, you cannot create components. Contact an administrator to create one.', 'elementor')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Link, {
590 - href: LEARN_MORE_URL,
591 - target: "_blank",
592 - rel: "noopener noreferrer",
593 - variant: "caption",
594 - color: "info.main"
595 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Learn more about components', 'elementor'))), canCreate && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Divider, {
596 - sx: {
597 - width: '100%'
598 - }
599 - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
600 - alignItems: "center",
601 - gap: 1,
602 - width: "100%"
603 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
604 - align: "center",
605 - variant: "subtitle2",
606 - color: "text.secondary",
607 - sx: SUBTITLE_OVERRIDE_SX
608 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Create your first one:', 'elementor')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
609 - align: "center",
610 - variant: "caption",
611 - color: "secondary",
612 - sx: {
613 - maxWidth: 228
614 - }
615 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Right-click any div-block or flexbox on your canvas or structure and select "Create component"', 'elementor')))));
616 -};
617 -const EmptySearchResult = () => {
618 - const {
619 - searchValue,
620 - clearSearch
621 - } = (0,_search_provider__WEBPACK_IMPORTED_MODULE_9__.useSearch)();
622 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
623 - color: 'text.secondary',
624 - pt: 5,
625 - alignItems: "center",
626 - gap: 1,
627 - overflow: 'hidden',
628 - justifySelf: 'center'
629 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.ComponentsIcon, null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Box, {
630 - sx: {
631 - width: '100%'
632 - }
633 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
634 - align: "center",
635 - variant: "subtitle2",
636 - color: "inherit",
637 - sx: SUBTITLE_OVERRIDE_SX
638 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Sorry, nothing matched', 'elementor')), searchValue && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
639 - variant: "subtitle2",
640 - color: "inherit",
641 - sx: {
642 - ...SUBTITLE_OVERRIDE_SX,
643 - display: 'flex',
644 - width: '100%',
645 - justifyContent: 'center'
646 - }
647 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, "\u201C"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", {
648 - style: {
649 - maxWidth: '80%',
650 - overflow: 'hidden',
651 - textOverflow: 'ellipsis'
652 - }
653 - }, searchValue), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, "\u201D."))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
654 - align: "center",
655 - variant: "caption",
656 - color: "inherit"
657 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Try something else.', 'elementor')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
658 - align: "center",
659 - variant: "caption",
660 - color: "inherit"
661 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Link, {
662 - color: "secondary",
663 - variant: "caption",
664 - component: "button",
665 - onClick: clearSearch
666 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Clear & try again', 'elementor'))));
667 -};
668 -const useFilteredComponents = () => {
669 - const {
670 - components,
671 - isLoading
672 - } = (0,_hooks_use_components__WEBPACK_IMPORTED_MODULE_4__.useComponents)();
673 - const {
674 - searchValue
675 - } = (0,_search_provider__WEBPACK_IMPORTED_MODULE_9__.useSearch)();
676 - return {
677 - components: components.filter(component => component.name.toLowerCase().includes(searchValue.toLowerCase())),
678 - isLoading,
679 - searchValue
680 - };
681 -};
682 -
683 -/***/ }),
684 -
685 -/***/ "./packages/packages/core/editor-components/src/components/components-tab/components-pro-notification.tsx":
686 -/*!****************************************************************************************************************!*\
687 - !*** ./packages/packages/core/editor-components/src/components/components-tab/components-pro-notification.tsx ***!
688 - \****************************************************************************************************************/
689 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
690 -
691 -__webpack_require__.r(__webpack_exports__);
692 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
693 -/* harmony export */ ComponentsProNotification: function() { return /* binding */ ComponentsProNotification; },
694 -/* harmony export */ UPGRADE_URL: function() { return /* binding */ UPGRADE_URL; }
695 -/* harmony export */ });
696 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
697 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
698 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
699 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
700 -/* harmony import */ var _components_upgrade_alert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components-upgrade-alert */ "./packages/packages/core/editor-components/src/components/components-upgrade-alert.tsx");
701 -
702 -
703 -
704 -const UPGRADE_URL = 'https://go.elementor.com/go-pro-components-exist-footer/';
705 -function ComponentsProNotification() {
706 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_upgrade_alert__WEBPACK_IMPORTED_MODULE_2__.ComponentsUpgradeAlert, {
707 - title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Create new components', 'elementor'),
708 - description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Creating new components requires an active Pro subscription.', 'elementor'),
709 - upgradeUrl: UPGRADE_URL
710 - });
711 -}
712 -
713 -/***/ }),
714 -
715 -/***/ "./packages/packages/core/editor-components/src/components/components-tab/components-update-notification.tsx":
716 -/*!*******************************************************************************************************************!*\
717 - !*** ./packages/packages/core/editor-components/src/components/components-tab/components-update-notification.tsx ***!
718 - \*******************************************************************************************************************/
719 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
720 -
721 -__webpack_require__.r(__webpack_exports__);
722 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
723 -/* harmony export */ ComponentsUpdateNotification: function() { return /* binding */ ComponentsUpdateNotification; }
724 -/* harmony export */ });
725 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
726 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
727 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
728 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
729 -/* harmony import */ var _components_update_alert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components-update-alert */ "./packages/packages/core/editor-components/src/components/components-update-alert.tsx");
730 -
731 -
732 -
733 -function ComponentsUpdateNotification() {
734 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_update_alert__WEBPACK_IMPORTED_MODULE_2__.ComponentsUpdateAlert, {
735 - title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Create new Components', 'elementor'),
736 - description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('To create new components, update Elementor Pro to the latest version.', 'elementor')
737 - });
738 -}
739 -
740 -/***/ }),
741 -
742 -/***/ "./packages/packages/core/editor-components/src/components/components-tab/components.tsx":
743 -/*!***********************************************************************************************!*\
744 - !*** ./packages/packages/core/editor-components/src/components/components-tab/components.tsx ***!
745 - \***********************************************************************************************/
746 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
747 -
748 -__webpack_require__.r(__webpack_exports__);
749 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
750 -/* harmony export */ Components: function() { return /* binding */ Components; }
751 -/* harmony export */ });
752 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
753 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
754 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
755 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__);
756 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
757 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
758 -/* harmony import */ var _hooks_use_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/use-components */ "./packages/packages/core/editor-components/src/hooks/use-components.ts");
759 -/* harmony import */ var _utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/is-pro-components-supported */ "./packages/packages/core/editor-components/src/utils/is-pro-components-supported.ts");
760 -/* harmony import */ var _component_search__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./component-search */ "./packages/packages/core/editor-components/src/components/components-tab/component-search.tsx");
761 -/* harmony import */ var _components_list__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components-list */ "./packages/packages/core/editor-components/src/components/components-tab/components-list.tsx");
762 -/* harmony import */ var _components_pro_notification__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components-pro-notification */ "./packages/packages/core/editor-components/src/components/components-tab/components-pro-notification.tsx");
763 -/* harmony import */ var _components_update_notification__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components-update-notification */ "./packages/packages/core/editor-components/src/components/components-tab/components-update-notification.tsx");
764 -/* harmony import */ var _search_provider__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./search-provider */ "./packages/packages/core/editor-components/src/components/components-tab/search-provider.tsx");
765 -
766 -
767 -
768 -
769 -
770 -
771 -
772 -
773 -
774 -
775 -
776 -const FULL_HEIGHT_STYLE_ID = 'components-full-height-panel';
777 -const FULL_HEIGHT_CSS = `
837 +//#endregion
838 +//#region packages/packages/core/editor-components/src/components/components-tab/components.tsx
839 + var FULL_HEIGHT_STYLE_ID = "components-full-height-panel";
840 + var FULL_HEIGHT_CSS = `
778 841 #elementor-panel-page-elements {
779 842 display: flex;
780 843 flex-direction: column;
781 844 height: 100%;
@@ -794,4960 +857,2078 @@
794 857 flex: 1;
795 858 min-height: 0;
796 859 }
797 860 `;
798 -const useFullHeightPanel = () => {
799 - (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {
800 - let style = document.getElementById(FULL_HEIGHT_STYLE_ID);
801 - if (!style) {
802 - style = document.createElement('style');
803 - style.id = FULL_HEIGHT_STYLE_ID;
804 - style.textContent = FULL_HEIGHT_CSS;
805 - document.head.appendChild(style);
806 - }
807 - return () => {
808 - document.getElementById(FULL_HEIGHT_STYLE_ID)?.remove();
809 - };
810 - }, []);
811 -};
812 -const ComponentsContent = () => {
813 - const {
814 - components,
815 - isLoading
816 - } = (0,_hooks_use_components__WEBPACK_IMPORTED_MODULE_3__.useComponents)();
817 - const hasComponents = !isLoading && components.length > 0;
818 - const showProNotification = !(0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_4__.isProComponentsSupported)() && hasComponents;
819 - const isOutdated = (0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_4__.isProOutdatedForComponents)();
820 - useFullHeightPanel();
821 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
822 - justifyContent: "space-between",
823 - sx: {
824 - flex: 1,
825 - minHeight: 0
826 - }
827 - }, hasComponents && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_component_search__WEBPACK_IMPORTED_MODULE_5__.ComponentSearch, null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_list__WEBPACK_IMPORTED_MODULE_6__.ComponentsList, null), showProNotification && (isOutdated ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_update_notification__WEBPACK_IMPORTED_MODULE_8__.ComponentsUpdateNotification, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_pro_notification__WEBPACK_IMPORTED_MODULE_7__.ComponentsProNotification, null)));
828 -};
829 -const Components = () => {
830 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.ThemeProvider, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_search_provider__WEBPACK_IMPORTED_MODULE_9__.SearchProvider, {
831 - localStorageKey: "elementor-components-search"
832 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ComponentsContent, null)));
833 -};
861 + var useFullHeightPanel = () => {
862 + (0, react.useLayoutEffect)(() => {
863 + let style = document.getElementById(FULL_HEIGHT_STYLE_ID);
864 + if (!style) {
865 + style = document.createElement("style");
866 + style.id = FULL_HEIGHT_STYLE_ID;
867 + style.textContent = FULL_HEIGHT_CSS;
868 + document.head.appendChild(style);
869 + }
870 + return () => {
871 + document.getElementById(FULL_HEIGHT_STYLE_ID)?.remove();
872 + };
873 + }, []);
874 + };
875 + var ComponentsContent = () => {
876 + const { components, isLoading } = useComponents();
877 + const hasComponents = !isLoading && components.length > 0;
878 + const showProNotification = !isProComponentsSupported() && hasComponents;
879 + const isOutdated = isProOutdatedForComponents();
880 + useFullHeightPanel();
881 + return /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
882 + justifyContent: "space-between",
883 + sx: {
884 + flex: 1,
885 + minHeight: 0
886 + }
887 + }, hasComponents && /* @__PURE__ */ react.createElement(ComponentSearch, null), /* @__PURE__ */ react.createElement(ComponentsList, null), showProNotification && (isOutdated ? /* @__PURE__ */ react.createElement(ComponentsUpdateNotification, null) : /* @__PURE__ */ react.createElement(ComponentsProNotification, null)));
888 + };
889 + var Components = () => {
890 + return /* @__PURE__ */ react.createElement(_elementor_editor_ui.ThemeProvider, null, /* @__PURE__ */ react.createElement(SearchProvider, { localStorageKey: "elementor-components-search" }, /* @__PURE__ */ react.createElement(ComponentsContent, null)));
891 + };
834 892
835 -/***/ }),
893 +//#endregion
894 +//#region packages/packages/core/editor-components/src/components/detach-instance-confirmation-dialog.tsx
895 + function DetachInstanceConfirmationDialog({ open, onClose, onConfirm }) {
896 + return /* @__PURE__ */ react.createElement(_elementor_editor_ui.ConfirmationDialog, {
897 + open,
898 + onClose
899 + }, /* @__PURE__ */ react.createElement(_elementor_editor_ui.ConfirmationDialog.Title, {
900 + icon: _elementor_icons.AlertTriangleFilledIcon,
901 + iconColor: "secondary"
902 + }, (0, _wordpress_i18n.__)("Detach from Component?", "elementor")), /* @__PURE__ */ react.createElement(_elementor_editor_ui.ConfirmationDialog.Content, null, /* @__PURE__ */ react.createElement(_elementor_editor_ui.ConfirmationDialog.ContentText, null, (0, _wordpress_i18n.__)("Detaching this instance will break its link to the Component. Changes to the Component will no longer apply. Continue?", "elementor"))), /* @__PURE__ */ react.createElement(_elementor_editor_ui.ConfirmationDialog.Actions, {
903 + onClose,
904 + onConfirm,
905 + confirmLabel: (0, _wordpress_i18n.__)("Detach", "elementor"),
906 + color: "primary"
907 + }));
908 + }
909 + function openDetachConfirmDialog(onConfirm) {
910 + const handleConfirm = () => {
911 + (0, _elementor_editor_ui.closeDialog)();
912 + onConfirm();
913 + };
914 + (0, _elementor_editor_ui.openDialog)({ component: /* @__PURE__ */ react.createElement(DetachInstanceConfirmationDialog, {
915 + open: true,
916 + onClose: _elementor_editor_ui.closeDialog,
917 + onConfirm: handleConfirm
918 + }) });
919 + }
836 920
837 -/***/ "./packages/packages/core/editor-components/src/components/components-tab/loading-components.tsx":
838 -/*!*******************************************************************************************************!*\
839 - !*** ./packages/packages/core/editor-components/src/components/components-tab/loading-components.tsx ***!
840 - \*******************************************************************************************************/
841 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
921 +//#endregion
922 +//#region packages/packages/core/editor-components/src/components/in-edit-mode.tsx
923 + var openEditModeDialog = (lockedBy) => {
924 + (0, _elementor_editor_ui.openDialog)({ component: /* @__PURE__ */ react.createElement(EditModeDialog, { lockedBy }) });
925 + };
926 + var EditModeDialog = ({ lockedBy }) => {
927 + const content = (0, _wordpress_i18n.__)("%s is currently editing this document", "elementor").replace("%s", lockedBy);
928 + return /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(_elementor_ui.DialogHeader, { logo: false }, /* @__PURE__ */ react.createElement(_elementor_ui.Box, {
929 + display: "flex",
930 + alignItems: "center",
931 + gap: 1
932 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Icon, { color: "secondary" }, /* @__PURE__ */ react.createElement(_elementor_icons.InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, { variant: "subtitle1" }, content))), /* @__PURE__ */ react.createElement(_elementor_ui.DialogContent, null, /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
933 + spacing: 2,
934 + direction: "column"
935 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Typography, { variant: "body2" }, (0, _wordpress_i18n.__)("You can wait for them to finish or reach out to coordinate your changes together.", "elementor")), /* @__PURE__ */ react.createElement(_elementor_ui.DialogActions, null, /* @__PURE__ */ react.createElement(_elementor_ui.Button, {
936 + color: "secondary",
937 + variant: "contained",
938 + onClick: _elementor_editor_ui.closeDialog
939 + }, (0, _wordpress_i18n.__)("Close", "elementor"))))));
940 + };
842 941
843 -__webpack_require__.r(__webpack_exports__);
844 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
845 -/* harmony export */ LoadingComponents: function() { return /* binding */ LoadingComponents; }
846 -/* harmony export */ });
847 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
848 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
849 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
850 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_1__);
942 +//#endregion
943 +//#region packages/packages/core/editor-components/src/provider/component-instance-context.tsx
944 + var ComponentInstanceContext = (0, react.createContext)(null);
945 + function ComponentInstanceProvider({ children, ...props }) {
946 + return /* @__PURE__ */ react.createElement(ComponentInstanceContext.Provider, { value: props }, children);
947 + }
948 + function useComponentInstanceContext() {
949 + const context = (0, react.useContext)(ComponentInstanceContext);
950 + if (!context) throw new Error("useComponentInstanceContext must be used within a ComponentInstanceProvider");
951 + return context;
952 + }
953 + var useComponentId = () => useComponentInstanceContext().componentId;
954 + var useComponentInstanceOverrides = () => useComponentInstanceContext().overrides;
955 + var useComponentOverridableProps = () => useComponentInstanceContext().overridableProps;
851 956
957 +//#endregion
958 +//#region packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts
959 + var componentInstanceOverridePropTypeUtil = (0, _elementor_editor_props.createPropUtils)("override", _elementor_schema.z.object({
960 + override_key: _elementor_schema.z.string(),
961 + override_value: _elementor_schema.z.unknown(),
962 + schema_source: _elementor_schema.z.object({
963 + type: _elementor_schema.z.literal("component"),
964 + id: _elementor_schema.z.number()
965 + })
966 + }));
852 967
853 -const ROWS = Array.from({
854 - length: 3
855 -}, (_, index) => index);
856 -const STAGGER_DELAY_MS = 80;
857 -const LoadingComponents = () => {
858 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_1__.Stack, {
859 - "aria-label": "Loading components",
860 - gap: 1.5,
861 - sx: {
862 - pointerEvents: 'none',
863 - position: 'relative',
864 - maxHeight: '300px',
865 - overflow: 'hidden',
866 - px: 1,
867 - '&:after': {
868 - position: 'absolute',
869 - bottom: 0,
870 - content: '""',
871 - left: 0,
872 - width: '100%',
873 - height: '40%',
874 - pointerEvents: 'none',
875 - zIndex: 1
876 - }
877 - }
878 - }, ROWS.map(row => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_1__.Box, {
879 - key: row,
880 - display: "flex",
881 - alignItems: "center",
882 - gap: 1.5,
883 - sx: {
884 - py: 0.75,
885 - px: 1.5,
886 - opacity: 0,
887 - animation: `e-loading-fade-in 0.4s ease-out ${row * STAGGER_DELAY_MS}ms forwards`,
888 - '@keyframes e-loading-fade-in': {
889 - from: {
890 - opacity: 0,
891 - transform: 'translateY(4px)'
892 - },
893 - to: {
894 - opacity: 1,
895 - transform: 'translateY(0)'
896 - }
897 - }
898 - }
899 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_1__.Skeleton, {
900 - animation: "wave",
901 - variant: "rounded",
902 - width: 24,
903 - height: 24
904 - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_1__.Skeleton, {
905 - animation: "wave",
906 - variant: "rounded",
907 - width: "60%",
908 - height: 14
909 - }))));
910 -};
968 +//#endregion
969 +//#region packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts
970 + var componentOverridablePropTypeUtil = (0, _elementor_editor_props.createPropUtils)("overridable", _elementor_schema.z.object({
971 + override_key: _elementor_schema.z.string(),
972 + origin_value: _elementor_schema.z.object({
973 + $$type: _elementor_schema.z.string(),
974 + value: _elementor_schema.z.unknown()
975 + }).nullable()
976 + }));
911 977
912 -/***/ }),
978 +//#endregion
979 +//#region packages/packages/core/editor-components/src/prop-types/component-instance-overrides-prop-type.ts
980 + var componentInstanceOverridesPropTypeUtil = (0, _elementor_editor_props.createPropUtils)("overrides", _elementor_schema.z.array(_elementor_schema.z.union([componentInstanceOverridePropTypeUtil.schema, componentOverridablePropTypeUtil.schema])).optional().default([]));
913 981
914 -/***/ "./packages/packages/core/editor-components/src/components/components-tab/search-provider.tsx":
915 -/*!****************************************************************************************************!*\
916 - !*** ./packages/packages/core/editor-components/src/components/components-tab/search-provider.tsx ***!
917 - \****************************************************************************************************/
918 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
982 +//#endregion
983 +//#region packages/packages/core/editor-components/src/prop-types/component-instance-prop-type.ts
984 + var componentInstancePropTypeUtil = (0, _elementor_editor_props.createPropUtils)("component-instance", _elementor_schema.z.object({
985 + component_id: _elementor_editor_props.numberPropTypeUtil.schema,
986 + overrides: _elementor_schema.z.optional(componentInstanceOverridesPropTypeUtil.schema)
987 + }));
919 988
920 -__webpack_require__.r(__webpack_exports__);
921 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
922 -/* harmony export */ SearchProvider: function() { return /* binding */ SearchProvider; },
923 -/* harmony export */ useSearch: function() { return /* binding */ useSearch; }
924 -/* harmony export */ });
925 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
926 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
927 -/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/utils */ "@elementor/utils");
928 -/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_utils__WEBPACK_IMPORTED_MODULE_1__);
989 +//#endregion
990 +//#region packages/packages/core/editor-components/src/utils/tracking.ts
991 + var FEATURE_NAME = "Components";
992 + var trackComponentEvent = ({ action, source, executedBy, ...data }) => {
993 + if (source === "system" || executedBy === "system") return;
994 + const { dispatchEvent, config } = (0, _elementor_events.getMixpanel)();
995 + if (!config?.names?.components?.[action]) return;
996 + const name = config.names.components[action];
997 + dispatchEvent?.(name, {
998 + ...data,
999 + executed_by: executedBy ?? source,
1000 + "Feature name": FEATURE_NAME
1001 + });
1002 + };
1003 + var onElementDrop = (_args, element) => {
1004 + if (!(element?.model?.get("widgetType") === "e-component")) return;
1005 + const editorSettings = element.model.get("editor_settings");
1006 + const componentName = editorSettings?.title;
1007 + const componentUID = editorSettings?.component_uid;
1008 + const instanceId = element.id;
1009 + const createdThisSession = selectCreatedThisSession((0, _elementor_store.__getState)());
1010 + const isSameSessionReuse = componentUID && createdThisSession.includes(componentUID);
1011 + const { locations, secondaryLocations } = window.elementorCommon.eventsManager.config;
1012 + trackComponentEvent({
1013 + action: "instanceAdded",
1014 + executedBy: "user",
1015 + instance_id: instanceId,
1016 + component_uid: componentUID,
1017 + component_name: componentName,
1018 + is_same_session_reuse: isSameSessionReuse,
1019 + location: locations.widgetPanel,
1020 + secondary_location: secondaryLocations.componentsTab
1021 + });
1022 + };
929 1023
1024 +//#endregion
1025 +//#region packages/packages/core/editor-components/src/utils/detach-component-instance/regenerate-local-style-ids.ts
1026 + function regenerateLocalStyleIds(element) {
1027 + const originalStyles = element.styles;
1028 + if (!originalStyles || Object.keys(originalStyles).length === 0) return {
1029 + styles: void 0,
1030 + settings: void 0
1031 + };
1032 + const newStyles = {};
1033 + const styleIdMapping = {};
1034 + for (const [originalStyleId, style] of Object.entries(originalStyles)) {
1035 + const newStyleId = generateLocalStyleId(element.id);
1036 + newStyles[newStyleId] = {
1037 + ...style,
1038 + id: newStyleId
1039 + };
1040 + styleIdMapping[originalStyleId] = newStyleId;
1041 + }
1042 + const settings = element.settings;
1043 + if (!settings || Object.keys(settings).length === 0) return {
1044 + styles: newStyles,
1045 + settings: void 0
1046 + };
1047 + const updatedSettings = { ...settings };
1048 + for (const [propKey, propValue] of Object.entries(updatedSettings)) if (isClassesProp(propValue) && propValue.value.length > 0) {
1049 + const updatedClasses = propValue.value.map((classId) => styleIdMapping[classId] ?? classId);
1050 + updatedSettings[propKey] = _elementor_editor_props.classesPropTypeUtil.create(updatedClasses);
1051 + }
1052 + return {
1053 + styles: newStyles,
1054 + settings: updatedSettings
1055 + };
1056 + }
1057 + function isClassesProp(prop) {
1058 + return _elementor_editor_props.classesPropTypeUtil.isValid(prop);
1059 + }
1060 + function generateLocalStyleId(elementId) {
1061 + return `e-${elementId}-${(0, _elementor_editor_elements.generateElementId)()}`;
1062 + }
930 1063
1064 +//#endregion
1065 +//#region packages/packages/core/editor-components/src/consts.ts
1066 + var COMPONENT_WIDGET_TYPE$1 = "e-component";
931 1067
932 -const SearchContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);
933 -const SearchProvider = ({
934 - children,
935 - localStorageKey
936 -}) => {
937 - const {
938 - debouncedValue,
939 - handleChange,
940 - inputValue
941 - } = (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_1__.useSearchState)({
942 - localStorageKey
943 - });
944 - const clearSearch = () => {
945 - handleChange('');
946 - };
947 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(SearchContext.Provider, {
948 - value: {
949 - handleChange,
950 - clearSearch,
951 - searchValue: debouncedValue,
952 - inputValue
953 - }
954 - }, children);
955 -};
956 -const useSearch = () => {
957 - const context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(SearchContext);
958 - if (!context) {
959 - throw new Error('useSearch must be used within a SearchProvider');
960 - }
961 - return context;
962 -};
1068 +//#endregion
1069 +//#region packages/packages/core/editor-components/src/utils/is-component-instance.ts
1070 + function isComponentInstance(elementModel) {
1071 + return [elementModel.widgetType, elementModel.elType].includes(COMPONENT_WIDGET_TYPE$1);
1072 + }
963 1073
964 -/***/ }),
1074 +//#endregion
1075 +//#region packages/packages/core/editor-components/src/utils/detach-component-instance/resolve-overridable-settings.ts
1076 + function resolveOverridableSettings(element, overrideMap) {
1077 + if (isComponentInstance({
1078 + widgetType: element.widgetType,
1079 + elType: element.elType
1080 + })) return resolveOverridableSettingsForComponentInstance(element, overrideMap);
1081 + return resolveOverridableSettingsForElement(element, overrideMap);
1082 + }
1083 + function resolveOverridableSettingsForElement(element, overrideMap) {
1084 + const updatedSettings = element.settings ? { ...element.settings } : {};
1085 + for (const [settingKey, settingValue] of Object.entries(element.settings ?? {})) updatedSettings[settingKey] = resolvePropValue(settingValue, overrideMap);
1086 + return updatedSettings;
1087 + }
1088 + function resolveOverridableSettingsForComponentInstance(element, overrideMap) {
1089 + const componentInstance = element.settings?.component_instance;
1090 + if (!componentInstancePropTypeUtil.isValid(componentInstance)) return element.settings ?? {};
1091 + const instanceOverrides = componentInstance.value.overrides?.value;
1092 + if (!instanceOverrides?.length) return element.settings ?? {};
1093 + const updatedOverrides = instanceOverrides.map((item) => resolvePropValue(item, overrideMap, { isOverridableOverride: true }));
1094 + return {
1095 + ...element.settings,
1096 + component_instance: {
1097 + ...componentInstance,
1098 + value: {
1099 + ...componentInstance.value,
1100 + overrides: {
1101 + ...componentInstance.value.overrides,
1102 + value: updatedOverrides
1103 + }
1104 + }
1105 + }
1106 + };
1107 + }
1108 + function resolvePropValue(propValue, overrideMap, options) {
1109 + const { isOverridableOverride = false } = options ?? {};
1110 + if (!componentOverridablePropTypeUtil.isValid(propValue)) return propValue;
1111 + const overridableKey = propValue.value.override_key;
1112 + const matchingOverride = overrideMap.get(overridableKey);
1113 + const originValue = componentOverridablePropTypeUtil.extract(propValue)?.origin_value;
1114 + if (!matchingOverride) return originValue;
1115 + if (isOverridableOverride) return resolveOverridableOverride(matchingOverride, originValue);
1116 + return componentInstanceOverridePropTypeUtil.extract(matchingOverride)?.override_value ?? originValue;
1117 + }
1118 + function resolveOverridableOverride(matchingOverride, originValue) {
1119 + if (!originValue || !componentInstanceOverridePropTypeUtil.isValid(originValue)) return null;
1120 + return componentInstanceOverridePropTypeUtil.create({
1121 + override_value: matchingOverride.value.override_value,
1122 + override_key: originValue.value.override_key,
1123 + schema_source: originValue.value.schema_source
1124 + });
1125 + }
965 1126
966 -/***/ "./packages/packages/core/editor-components/src/components/components-update-alert.tsx":
967 -/*!*********************************************************************************************!*\
968 - !*** ./packages/packages/core/editor-components/src/components/components-update-alert.tsx ***!
969 - \*********************************************************************************************/
970 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1127 +//#endregion
1128 +//#region packages/packages/core/editor-components/src/utils/detach-component-instance/resolve-detached-instance.ts
1129 + function resolveDetachedInstance(element, overrides) {
1130 + const overrideMap = createOverrideMap(overrides);
1131 + return resolveElementRecursive(structuredClone(element), overrideMap);
1132 + }
1133 + function resolveElementRecursive(element, overrideMap) {
1134 + element.id = (0, _elementor_editor_elements.generateElementId)();
1135 + if (element.styles) {
1136 + const { styles, settings } = regenerateLocalStyleIds(element);
1137 + element.styles = styles;
1138 + if (settings) element.settings = {
1139 + ...element.settings,
1140 + ...settings
1141 + };
1142 + }
1143 + if (element.settings) element.settings = resolveOverridableSettings(element, overrideMap);
1144 + if (element.elements?.length) element.elements = element.elements.map((child) => resolveElementRecursive(child, overrideMap));
1145 + return element;
1146 + }
1147 + function createOverrideMap(overrides) {
1148 + const map = /* @__PURE__ */ new Map();
1149 + overrides.forEach((item) => {
1150 + let override = null;
1151 + if (componentInstanceOverridePropTypeUtil.isValid(item)) override = item;
1152 + else if (componentOverridablePropTypeUtil.isValid(item)) override = getOverridableOverride(item);
1153 + if (override) {
1154 + const overrideKey = override.value.override_key;
1155 + map.set(overrideKey, override);
1156 + }
1157 + });
1158 + return map;
1159 + }
1160 + function getOverridableOverride(propValue) {
1161 + if (!componentOverridablePropTypeUtil.isValid(propValue)) return null;
1162 + const originValue = componentOverridablePropTypeUtil.extract(propValue)?.origin_value;
1163 + if (!componentInstanceOverridePropTypeUtil.isValid(originValue)) return null;
1164 + return originValue;
1165 + }
971 1166
972 -__webpack_require__.r(__webpack_exports__);
973 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
974 -/* harmony export */ ComponentsUpdateAlert: function() { return /* binding */ ComponentsUpdateAlert; }
975 -/* harmony export */ });
976 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
977 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
978 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
979 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__);
980 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
981 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
982 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
983 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
1167 +//#endregion
1168 +//#region packages/packages/core/editor-components/src/utils/detach-component-instance/detach-component-instance.ts
1169 + var DETACH_EVENT = "elementor/components/detach-instance";
1170 + var DETACH_UNDO_EVENT = "elementor/components/undo-detach-instance";
1171 + var DETACH_REDO_EVENT = "elementor/components/redo-detach-instance";
1172 + async function detachComponentInstance({ instanceId, componentId, trackingInfo }) {
1173 + const instanceContainer = (0, _elementor_editor_elements.getContainer)(instanceId);
1174 + if (!instanceContainer) throw new Error(`Instance container with ID "${instanceId}" not found.`);
1175 + const componentData = await getComponentDocumentData(componentId);
1176 + if (!componentData) throw new Error(`Component with ID "${componentId}" not found.`);
1177 + const rootElement = componentData.elements?.[0];
1178 + if (!rootElement) throw new Error(`Component with ID "${componentId}" has no root element.`);
1179 + return (0, _elementor_editor_v1_adapters.undoable)({
1180 + do: () => {
1181 + const overrides = extractInstanceOverrides(instanceContainer);
1182 + const detachedInstanceElementData = resolveDetachedInstance(rootElement, overrides);
1183 + const originalInstanceModel = instanceContainer.model.toJSON();
1184 + const actionId = (/* @__PURE__ */ new Date()).getTime();
1185 + window.dispatchEvent(new CustomEvent(DETACH_EVENT, { detail: {
1186 + detachedInstanceId: instanceId,
1187 + detachActionId: actionId
1188 + } }));
1189 + const detachedElement = (0, _elementor_editor_elements.replaceElement)({
1190 + currentElementId: instanceId,
1191 + newElement: detachedInstanceElementData,
1192 + withHistory: false
1193 + });
1194 + (0, _elementor_editor_elements.selectElement)(detachedElement.id);
1195 + const componentUid = selectComponent((0, _elementor_store.__getState)(), componentId)?.uid;
1196 + trackComponentEvent({
1197 + action: "detached",
1198 + executedBy: "user",
1199 + component_uid: componentUid,
1200 + instance_id: instanceId,
1201 + location: trackingInfo.location,
1202 + secondary_location: trackingInfo.secondaryLocation,
1203 + trigger: trackingInfo.trigger
1204 + });
1205 + return {
1206 + detachedElement,
1207 + detachedInstanceElementData,
1208 + originalInstanceModel,
1209 + actionId
1210 + };
1211 + },
1212 + undo: (_, { detachedElement, originalInstanceModel, actionId }) => {
1213 + const restoredInstance = (0, _elementor_editor_elements.replaceElement)({
1214 + currentElementId: detachedElement.id,
1215 + newElement: originalInstanceModel,
1216 + withHistory: false
1217 + });
1218 + window.dispatchEvent(new CustomEvent(DETACH_UNDO_EVENT, { detail: {
1219 + restoredInstanceId: restoredInstance.id,
1220 + detachActionId: actionId
1221 + } }));
1222 + (0, _elementor_editor_canvas.doAfterRender)([restoredInstance.id], () => {
1223 + (0, _elementor_editor_elements.selectElement)(restoredInstance.id);
1224 + });
1225 + return restoredInstance;
1226 + },
1227 + redo: (_, doReturn, restoredInstance) => {
1228 + const { detachedInstanceElementData, actionId } = doReturn;
1229 + const detachedElement = (0, _elementor_editor_elements.replaceElement)({
1230 + currentElementId: restoredInstance.id,
1231 + newElement: detachedInstanceElementData,
1232 + withHistory: false
1233 + });
1234 + window.dispatchEvent(new CustomEvent(DETACH_REDO_EVENT, { detail: {
1235 + detachedInstanceId: detachedElement.id,
1236 + detachActionId: actionId
1237 + } }));
1238 + (0, _elementor_editor_elements.selectElement)(detachedElement.id);
1239 + return {
1240 + ...doReturn,
1241 + detachedElement
1242 + };
1243 + }
1244 + }, {
1245 + title: (0, _wordpress_i18n.__)("Detach from Component", "elementor"),
1246 + subtitle: (0, _wordpress_i18n.__)("Instance detached", "elementor")
1247 + })();
1248 + }
1249 + function extractInstanceOverrides(instanceContainer) {
1250 + const settings = instanceContainer.model.toJSON().settings;
1251 + const componentInstance = componentInstancePropTypeUtil.extract(settings?.component_instance);
1252 + return componentInstanceOverridesPropTypeUtil.extract(componentInstance?.overrides) ?? [];
1253 + }
984 1254
1255 +//#endregion
1256 +//#region packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-header.tsx
1257 + function InstancePanelHeader({ componentName, actions }) {
1258 + return /* @__PURE__ */ react.createElement(_elementor_editor_panels.PanelHeader, { sx: {
1259 + justifyContent: "start",
1260 + px: 2
1261 + } }, /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
1262 + direction: "row",
1263 + alignItems: "center",
1264 + flexGrow: 1,
1265 + gap: 1,
1266 + maxWidth: "100%"
1267 + }, /* @__PURE__ */ react.createElement(_elementor_icons.ComponentsIcon, {
1268 + fontSize: "small",
1269 + sx: { color: "text.tertiary" }
1270 + }), /* @__PURE__ */ react.createElement(_elementor_editor_ui.EllipsisWithTooltip, {
1271 + title: componentName,
1272 + as: _elementor_editor_panels.PanelHeaderTitle,
1273 + sx: { flexGrow: 1 }
1274 + }), actions));
1275 + }
1276 + function EditComponentAction({ label, onClick, disabled = false, icon: Icon }) {
1277 + return /* @__PURE__ */ react.createElement(_elementor_ui.Tooltip, { title: label }, /* @__PURE__ */ react.createElement(_elementor_ui.IconButton, {
1278 + size: "tiny",
1279 + onClick,
1280 + "aria-label": label,
1281 + disabled
1282 + }, /* @__PURE__ */ react.createElement(Icon, { fontSize: "tiny" })));
1283 + }
985 1284
1285 +//#endregion
1286 +//#region packages/packages/core/editor-components/src/components/instance-editing-panel/detach-action.tsx
1287 + var DetachAction = ({ componentInstanceId, componentId }) => {
1288 + const [isDetachDialogOpen, setIsDetachDialogOpen] = (0, react.useState)(false);
1289 + const handleDetachConfirm = async () => {
1290 + setIsDetachDialogOpen(false);
1291 + try {
1292 + await detachComponentInstance({
1293 + instanceId: componentInstanceId,
1294 + componentId,
1295 + trackingInfo: getDetachTrackingInfo()
1296 + });
1297 + } catch {
1298 + (0, _elementor_editor_notifications.notify)({
1299 + type: "error",
1300 + message: (0, _wordpress_i18n.__)("Failed to detach component instance.", "elementor"),
1301 + id: "detach-component-instance-failed"
1302 + });
1303 + }
1304 + };
1305 + const handleDetachCancel = () => {
1306 + setIsDetachDialogOpen(false);
1307 + };
1308 + const handleDetachClick = () => {
1309 + setIsDetachDialogOpen(true);
1310 + };
1311 + const detachLabel = (0, _wordpress_i18n.__)("Detach from Component", "elementor");
1312 + return /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(EditComponentAction, {
1313 + label: detachLabel,
1314 + icon: _elementor_icons.DetachIcon,
1315 + onClick: handleDetachClick
1316 + }), /* @__PURE__ */ react.createElement(DetachInstanceConfirmationDialog, {
1317 + open: isDetachDialogOpen,
1318 + onClose: handleDetachCancel,
1319 + onConfirm: handleDetachConfirm
1320 + }));
1321 + };
1322 + function getDetachTrackingInfo() {
1323 + const config = window?.elementorCommon?.eventsManager?.config;
1324 + if (!config) return {
1325 + location: "",
1326 + trigger: ""
1327 + };
1328 + return {
1329 + location: config.locations.components.instanceEditingPanel,
1330 + trigger: config.triggers.click
1331 + };
1332 + }
986 1333
1334 +//#endregion
1335 +//#region packages/packages/core/editor-components/src/components/instance-editing-panel/empty-state.tsx
1336 + var EmptyState = ({ onEditComponent }) => {
1337 + const { canEdit } = useComponentsPermissions();
1338 + const message = canEdit ? (0, _wordpress_i18n.__)("Edit the component to add properties, manage them or update the design across all instances.", "elementor") : (0, _wordpress_i18n.__)("With your current role, you cannot edit this component. Contact an administrator to add properties.", "elementor");
1339 + return /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
1340 + alignItems: "center",
1341 + justifyContent: "start",
1342 + height: "100%",
1343 + color: "text.secondary",
1344 + sx: {
1345 + p: 2.5,
1346 + pt: 8,
1347 + pb: 5.5,
1348 + mt: 1
1349 + },
1350 + gap: 1.5
1351 + }, /* @__PURE__ */ react.createElement(_elementor_icons.ComponentPropListIcon, { fontSize: "large" }), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
1352 + align: "center",
1353 + variant: "subtitle2"
1354 + }, (0, _wordpress_i18n.__)("No properties yet", "elementor")), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
1355 + align: "center",
1356 + variant: "caption",
1357 + maxWidth: "170px"
1358 + }, message), canEdit && /* @__PURE__ */ react.createElement(_elementor_ui.Button, {
1359 + variant: "outlined",
1360 + color: "secondary",
1361 + size: "small",
1362 + sx: { mt: 1 },
1363 + disabled: !onEditComponent,
1364 + onClick: onEditComponent
1365 + }, /* @__PURE__ */ react.createElement(_elementor_icons.PencilIcon, { fontSize: "small" }), (0, _wordpress_i18n.__)("Edit component", "elementor")));
1366 + };
987 1367
988 -const UPDATE_PLUGINS_URL = '/wp-admin/plugins.php';
989 -function ComponentsUpdateAlert({
990 - title,
991 - description
992 -}) {
993 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Box, {
994 - sx: {
995 - mt: 'auto',
996 - position: 'sticky',
997 - bottom: 0
998 - }
999 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Alert, {
1000 - variant: "standard",
1001 - color: "info",
1002 - icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.InfoCircleFilledIcon, {
1003 - fontSize: "tiny"
1004 - }),
1005 - role: "status",
1006 - size: "small",
1007 - action: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.AlertAction, {
1008 - variant: "contained",
1009 - color: "info",
1010 - href: UPDATE_PLUGINS_URL,
1011 - target: "_blank",
1012 - rel: "noopener noreferrer"
1013 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Upgrade Now', 'elementor')),
1014 - sx: {
1015 - m: 2,
1016 - mt: 1
1017 - }
1018 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.AlertTitle, null, title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
1019 - variant: "caption"
1020 - }, description)));
1021 -}
1368 +//#endregion
1369 +//#region packages/packages/core/editor-components/src/hooks/use-controls-by-widget-type.ts
1370 + function useControlsByWidgetType(type) {
1371 + const elementType = (0, _elementor_editor_elements.getElementType)(type);
1372 + if (!elementType) return {};
1373 + return getControlsByBind(iterateControls(elementType.controls));
1374 + }
1375 + function iterateControls(controls) {
1376 + return controls.map((control) => {
1377 + if (control.type === "control" && "bind" in control.value) return control;
1378 + if (control.type === "section") return iterateControls(control.value.items);
1379 + return null;
1380 + }).filter(Boolean).flat();
1381 + }
1382 + function getControlsByBind(controls) {
1383 + return controls.reduce((controlsByBind, control) => ({
1384 + ...controlsByBind,
1385 + [control.value.bind]: control
1386 + }), {});
1387 + }
1022 1388
1023 -/***/ }),
1389 +//#endregion
1390 +//#region packages/packages/core/editor-components/src/provider/overridable-prop-context.tsx
1391 + var OverridablePropContext = (0, react.createContext)(null);
1392 + function OverridablePropProvider({ children, ...props }) {
1393 + return /* @__PURE__ */ react.createElement(OverridablePropContext.Provider, { value: props }, children);
1394 + }
1395 + var useOverridablePropValue = () => (0, react.useContext)(OverridablePropContext)?.value;
1396 + var useComponentInstanceElement = () => (0, react.useContext)(OverridablePropContext)?.componentInstanceElement;
1024 1397
1025 -/***/ "./packages/packages/core/editor-components/src/components/components-upgrade-alert.tsx":
1026 -/*!**********************************************************************************************!*\
1027 - !*** ./packages/packages/core/editor-components/src/components/components-upgrade-alert.tsx ***!
1028 - \**********************************************************************************************/
1029 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1398 +//#endregion
1399 +//#region packages/packages/core/editor-components/src/utils/resolve-override-prop-value.ts
1400 + var resolveOverridePropValue = (originalPropValue) => {
1401 + if (componentOverridablePropTypeUtil.isValid(originalPropValue)) return getOverridableValue(originalPropValue);
1402 + if (componentInstanceOverridePropTypeUtil.isValid(originalPropValue)) return getOverrideValue(originalPropValue);
1403 + return originalPropValue;
1404 + };
1405 + function getOverridableValue(overridableProp) {
1406 + const overridableValue = componentOverridablePropTypeUtil.extract(overridableProp);
1407 + if (!overridableValue) return null;
1408 + if (componentInstanceOverridePropTypeUtil.isValid(overridableValue.origin_value)) return getOverrideValue(overridableValue.origin_value);
1409 + return overridableValue.origin_value;
1410 + }
1411 + function getOverrideValue(overrideProp) {
1412 + const overrideValue = componentInstanceOverridePropTypeUtil.extract(overrideProp);
1413 + if (!overrideValue) return null;
1414 + return overrideValue.override_value;
1415 + }
1030 1416
1031 -__webpack_require__.r(__webpack_exports__);
1032 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1033 -/* harmony export */ ComponentsUpgradeAlert: function() { return /* binding */ ComponentsUpgradeAlert; }
1034 -/* harmony export */ });
1035 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1036 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1037 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
1038 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__);
1039 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1040 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
1041 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
1042 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
1417 +//#endregion
1418 +//#region packages/packages/core/editor-components/src/store/dispatchers.ts
1419 + function safeDispatch() {
1420 + return (0, _elementor_store.__getStore)()?.dispatch;
1421 + }
1422 + var componentsActions = {
1423 + add(components) {
1424 + (0, _elementor_store.__dispatch)(slice.actions.add(components));
1425 + },
1426 + load(components) {
1427 + (0, _elementor_store.__dispatch)(slice.actions.load(components));
1428 + },
1429 + addUnpublished(component) {
1430 + (0, _elementor_store.__dispatch)(slice.actions.addUnpublished(component));
1431 + },
1432 + removeUnpublished(uids) {
1433 + (0, _elementor_store.__dispatch)(slice.actions.removeUnpublished(uids));
1434 + },
1435 + resetUnpublished() {
1436 + (0, _elementor_store.__dispatch)(slice.actions.resetUnpublished());
1437 + },
1438 + addCreatedThisSession(uid) {
1439 + (0, _elementor_store.__dispatch)(slice.actions.addCreatedThisSession(uid));
1440 + },
1441 + removeCreatedThisSession(uid) {
1442 + (0, _elementor_store.__dispatch)(slice.actions.removeCreatedThisSession(uid));
1443 + },
1444 + archive(componentId) {
1445 + (0, _elementor_store.__dispatch)(slice.actions.archive(componentId));
1446 + },
1447 + setCurrentComponentId(id) {
1448 + safeDispatch()?.(slice.actions.setCurrentComponentId(id));
1449 + },
1450 + setPath(path) {
1451 + safeDispatch()?.(slice.actions.setPath(path));
1452 + },
1453 + setOverridableProps(componentId, overridableProps) {
1454 + (0, _elementor_store.__dispatch)(slice.actions.setOverridableProps({
1455 + componentId,
1456 + overridableProps
1457 + }));
1458 + },
1459 + rename(componentUid, name) {
1460 + (0, _elementor_store.__dispatch)(slice.actions.rename({
1461 + componentUid,
1462 + name
1463 + }));
1464 + },
1465 + cleanUpdatedComponentNames() {
1466 + (0, _elementor_store.__dispatch)(slice.actions.cleanUpdatedComponentNames());
1467 + },
1468 + updateComponentSanitizedAttribute(componentId, attribute) {
1469 + (0, _elementor_store.__dispatch)(slice.actions.updateComponentSanitizedAttribute({
1470 + componentId,
1471 + attribute
1472 + }));
1473 + },
1474 + resetSanitizedComponents() {
1475 + (0, _elementor_store.__dispatch)(slice.actions.resetSanitizedComponents());
1476 + }
1477 + };
1043 1478
1479 +//#endregion
1480 +//#region packages/packages/core/editor-components/src/store/selectors.ts
1481 + function safeGetState() {
1482 + return (0, _elementor_store.__getStore)()?.getState();
1483 + }
1484 + var componentsSelectors = {
1485 + getOverridableProps(componentId) {
1486 + return selectOverridableProps((0, _elementor_store.__getState)(), componentId);
1487 + },
1488 + getCurrentComponent() {
1489 + return selectCurrentComponent((0, _elementor_store.__getState)());
1490 + },
1491 + getCurrentComponentId() {
1492 + const state = safeGetState();
1493 + if (!state) return null;
1494 + return selectCurrentComponentId(state);
1495 + },
1496 + getUnpublishedComponents() {
1497 + return selectUnpublishedComponents((0, _elementor_store.__getState)());
1498 + },
1499 + getUpdatedComponentNames() {
1500 + return selectUpdatedComponentNames((0, _elementor_store.__getState)());
1501 + },
1502 + getArchivedThisSession() {
1503 + return selectArchivedThisSession((0, _elementor_store.__getState)());
1504 + },
1505 + getCreatedThisSession() {
1506 + return selectCreatedThisSession((0, _elementor_store.__getState)());
1507 + },
1508 + getComponents() {
1509 + return selectComponents((0, _elementor_store.__getState)());
1510 + },
1511 + getComponentByUid(componentUid) {
1512 + return selectComponentByUid((0, _elementor_store.__getState)(), componentUid);
1513 + }
1514 + };
1044 1515
1516 +//#endregion
1517 +//#region packages/packages/core/editor-components/src/store/actions/update-overridable-prop.ts
1518 + function updateOverridableProp(componentId, propValue, originPropFields) {
1519 + const overridableProps = componentsSelectors.getOverridableProps(componentId);
1520 + if (!overridableProps) return;
1521 + const existingOverridableProp = overridableProps.props[propValue.override_key];
1522 + if (!existingOverridableProp) return;
1523 + const originValue = resolveOverridePropValue(propValue.origin_value);
1524 + const newOverridableProp = originPropFields ? {
1525 + originValue,
1526 + originPropFields
1527 + } : { originValue };
1528 + const newOverridableProps = {
1529 + ...overridableProps,
1530 + props: {
1531 + ...overridableProps.props,
1532 + [existingOverridableProp.overrideKey]: {
1533 + ...existingOverridableProp,
1534 + ...newOverridableProp
1535 + }
1536 + }
1537 + };
1538 + componentsActions.setOverridableProps(componentId, newOverridableProps);
1539 + }
1045 1540
1541 +//#endregion
1542 +//#region packages/packages/core/editor-components/src/utils/get-prop-type-for-component-override.ts
1543 + var getPropTypeForComponentOverride = (overridableProp) => {
1544 + if (overridableProp.originPropFields) return getPropType(overridableProp.originPropFields);
1545 + const { widgetType, propKey } = overridableProp;
1546 + return getPropType({
1547 + widgetType,
1548 + propKey
1549 + });
1550 + };
1551 + function getPropType({ widgetType, propKey }) {
1552 + return ((0, _elementor_editor_elements.getWidgetsCache)()?.[widgetType]?.atomic_props_schema)?.[propKey];
1553 + }
1046 1554
1047 -function ComponentsUpgradeAlert({
1048 - title,
1049 - description,
1050 - upgradeUrl
1051 -}) {
1052 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Box, {
1053 - sx: {
1054 - mt: 'auto',
1055 - position: 'sticky',
1056 - bottom: 0
1057 - }
1058 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Alert, {
1059 - variant: "standard",
1060 - color: "promotion",
1061 - icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.CrownFilledIcon, {
1062 - fontSize: "tiny"
1063 - }),
1064 - role: "status",
1065 - size: "small",
1066 - action: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.AlertAction, {
1067 - variant: "contained",
1068 - color: "promotion",
1069 - href: upgradeUrl,
1070 - target: "_blank",
1071 - rel: "noopener noreferrer"
1072 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Upgrade now', 'elementor')),
1073 - sx: {
1074 - m: 2,
1075 - mt: 1
1076 - }
1077 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.AlertTitle, null, title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
1078 - variant: "caption"
1079 - }, description)));
1080 -}
1555 +//#endregion
1556 +//#region packages/packages/core/editor-components/src/utils/overridable-props-utils.ts
1557 + function getMatchingOverride(overrides, overrideKey) {
1558 + return overrides?.find((override) => {
1559 + const overridableValue = componentOverridablePropTypeUtil.extract(override);
1560 + if (overridableValue) return componentInstanceOverridePropTypeUtil.extract(overridableValue.origin_value)?.override_key === overrideKey;
1561 + return override.value.override_key === overrideKey;
1562 + }) ?? null;
1563 + }
1081 1564
1082 -/***/ }),
1565 +//#endregion
1566 +//#region packages/packages/core/editor-components/src/components/control-label.tsx
1567 + var ControlLabel = ({ children, ...props }) => {
1568 + return /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
1569 + direction: "row",
1570 + alignItems: "center",
1571 + justifyItems: "start",
1572 + gap: .25
1573 + }, /* @__PURE__ */ react.createElement(_elementor_editor_controls.ControlFormLabel, { ...props }, children), /* @__PURE__ */ react.createElement(_elementor_editor_controls.ControlAdornments, null));
1574 + };
1083 1575
1084 -/***/ "./packages/packages/core/editor-components/src/components/control-label.tsx":
1085 -/*!***********************************************************************************!*\
1086 - !*** ./packages/packages/core/editor-components/src/components/control-label.tsx ***!
1087 - \***********************************************************************************/
1088 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1576 +//#endregion
1577 +//#region packages/packages/core/editor-components/src/components/errors.ts
1578 + var OverrideControlInnerElementNotFoundError = (0, _elementor_utils.createError)({
1579 + code: "override_control_inner_element_not_found",
1580 + message: `Component inner element not found for override control. The element may have been deleted without updating the overridable props, or the component has not finished rendering yet.`
1581 + });
1582 + var OverrideControlPropTypeNotFoundError = (0, _elementor_utils.createError)({
1583 + code: "override_control_prop_type_not_found",
1584 + message: "Prop type not found for override control."
1585 + });
1089 1586
1090 -__webpack_require__.r(__webpack_exports__);
1091 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1092 -/* harmony export */ ControlLabel: function() { return /* binding */ ControlLabel; }
1093 -/* harmony export */ });
1094 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1095 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1096 -/* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-controls */ "@elementor/editor-controls");
1097 -/* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__);
1098 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1099 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
1587 +//#endregion
1588 +//#region packages/packages/core/editor-components/src/components/instance-editing-panel/utils/correct-exposed-empty-override.ts
1589 + function correctExposedEmptyOverride(newPropValue, matchingOverride) {
1590 + const newOverridableValue = componentOverridablePropTypeUtil.extract(newPropValue);
1591 + if (!(newOverridableValue && matchingOverride === null)) return newPropValue;
1592 + return componentOverridablePropTypeUtil.create({
1593 + override_key: newOverridableValue.override_key,
1594 + origin_value: null
1595 + });
1596 + }
1100 1597
1598 +//#endregion
1599 +//#region packages/packages/core/editor-components/src/components/instance-editing-panel/utils/resolve-element-settings.ts
1600 + function applyOverridesToSettings(elementSettings, overrides) {
1601 + const result = {};
1602 + for (const [propKey, propValue] of Object.entries(elementSettings)) {
1603 + const overridable = componentOverridablePropTypeUtil.extract(propValue);
1604 + if (!overridable) {
1605 + result[propKey] = propValue;
1606 + continue;
1607 + }
1608 + const override = overrides[overridable.override_key];
1609 + if (!override) {
1610 + result[propKey] = propValue;
1611 + continue;
1612 + }
1613 + if (override.outermostKey && override.outermostKey !== overridable.override_key) {
1614 + const originValue = overridable.origin_value;
1615 + result[propKey] = componentOverridablePropTypeUtil.create({
1616 + override_key: override.outermostKey,
1617 + origin_value: override.value ?? originValue
1618 + });
1619 + } else result[propKey] = override.value ?? propValue;
1620 + }
1621 + return result;
1622 + }
1623 + function unwrapOverridableSettings(elementSettings) {
1624 + const result = {};
1625 + for (const [propKey, propValue] of Object.entries(elementSettings)) {
1626 + const overridable = componentOverridablePropTypeUtil.extract(propValue);
1627 + if (!overridable) {
1628 + result[propKey] = propValue;
1629 + continue;
1630 + }
1631 + result[propKey] = overridable.origin_value;
1632 + }
1633 + return result;
1634 + }
1101 1635
1636 +//#endregion
1637 +//#region packages/packages/core/editor-components/src/components/instance-editing-panel/utils/use-override-dependencies.ts
1638 + function useOverrideControlDependencies({ existingOverride, resolvedElementSettings, elementId, elementType, propKey }) {
1639 + return (0, react.useMemo)(() => {
1640 + const { isDisabled, isHidden } = (0, _elementor_editor_editing_panel.extractDependencyEffect)(propKey, elementType.propsSchema, resolvedElementSettings);
1641 + const existingOverrideValue = existingOverride ? resolveOverridePropValue(existingOverride) : null;
1642 + const settingsForDepsNewValuesCalculation = {
1643 + ...resolvedElementSettings,
1644 + [propKey]: existingOverrideValue
1645 + };
1646 + const resolvedSettingsWithDefaults = (0, _elementor_editor_editing_panel.getElementSettingsWithDefaults)(elementType.propsSchema, settingsForDepsNewValuesCalculation);
1647 + const dependents = (0, _elementor_editor_editing_panel.extractOrderedDependencies)(elementType.dependenciesPerTargetMapping ?? {});
1648 + return {
1649 + overrideValue: (0, _elementor_editor_editing_panel.getUpdatedValues)({ [propKey]: existingOverrideValue }, dependents, elementType.propsSchema, resolvedSettingsWithDefaults, elementId)[propKey],
1650 + isDisabled,
1651 + isHidden
1652 + };
1653 + }, [
1654 + existingOverride,
1655 + resolvedElementSettings,
1656 + propKey,
1657 + elementType.propsSchema,
1658 + elementType.dependenciesPerTargetMapping,
1659 + elementId
1660 + ]);
1661 + }
1102 1662
1103 -const ControlLabel = ({
1104 - children,
1105 - ...props
1106 -}) => {
1107 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
1108 - direction: "row",
1109 - alignItems: "center",
1110 - justifyItems: "start",
1111 - gap: 0.25
1112 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.ControlFormLabel, props, children), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.ControlAdornments, null));
1113 -};
1663 +//#endregion
1664 +//#region packages/packages/core/editor-components/src/utils/get-container-by-origin-id.ts
1665 + function getContainerByOriginId(originElementId, instanceElementId) {
1666 + if (!instanceElementId) return (0, _elementor_editor_elements.getContainer)(originElementId);
1667 + const instanceContainer = (0, _elementor_editor_elements.getContainer)(instanceElementId);
1668 + if (!instanceContainer) return null;
1669 + return window.elementor?.getContainerByKeyValue?.({
1670 + key: "originId",
1671 + value: originElementId,
1672 + parent: instanceContainer.view
1673 + }) ?? null;
1674 + }
1114 1675
1115 -/***/ }),
1676 +//#endregion
1677 +//#region packages/packages/core/editor-components/src/utils/get-overridable-prop.ts
1678 + function getOverridableProp({ componentId, overrideKey }) {
1679 + const overridableProps = selectOverridableProps((0, _elementor_store.__getState)(), componentId);
1680 + if (!overridableProps) return;
1681 + return overridableProps.props[overrideKey];
1682 + }
1116 1683
1117 -/***/ "./packages/packages/core/editor-components/src/components/detach-instance-confirmation-dialog.tsx":
1118 -/*!*********************************************************************************************************!*\
1119 - !*** ./packages/packages/core/editor-components/src/components/detach-instance-confirmation-dialog.tsx ***!
1120 - \*********************************************************************************************************/
1121 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1684 +//#endregion
1685 +//#region packages/packages/core/editor-components/src/utils/resolve-overrides-chain.ts
1686 + function resolveOverridesChain({ outerOverridableProp, outerInstanceId, overridesMapping = {} }) {
1687 + if (!outerOverridableProp.originPropFields) {
1688 + const innerElement = getContainerByOriginId(outerOverridableProp.elementId, outerInstanceId);
1689 + if (!innerElement) throw new Error(`Inner element not found inside instance. elementId: ${outerOverridableProp.elementId}, instanceId: ${outerInstanceId}`);
1690 + return {
1691 + isChainBroken: false,
1692 + innerElement,
1693 + overridesMapping
1694 + };
1695 + }
1696 + const currentInstance = getContainerByOriginId(outerOverridableProp.elementId, outerInstanceId);
1697 + if (!currentInstance) return { isChainBroken: true };
1698 + const { componentId, overrides } = extractComponentInstanceSettings(currentInstance);
1699 + if (!componentId) throw new Error(`Component ID not found for current instance. currentInstanceId: ${currentInstance.id}. outerInstanceId: ${outerInstanceId}`);
1700 + const mergedOverrides = buildOverridesMap(overridesMapping, overrides ?? []);
1701 + const override = findOverrideByOuterKey(overrides, outerOverridableProp.overrideKey);
1702 + const overrideKey = componentInstanceOverridePropTypeUtil.extract(override)?.override_key;
1703 + if (!override || !overrideKey) return { isChainBroken: true };
1704 + const overridableProp = getOverridableProp({
1705 + componentId,
1706 + overrideKey
1707 + });
1708 + if (!overridableProp) throw new Error(`Overridable prop not found. componentId: ${componentId}, overrideKey: ${overrideKey}`);
1709 + return resolveOverridesChain({
1710 + outerOverridableProp: overridableProp,
1711 + outerInstanceId: currentInstance.id,
1712 + overridesMapping: mergedOverrides
1713 + });
1714 + }
1715 + function buildOverridesMap(existing, levelOverrides) {
1716 + const result = { ...existing };
1717 + for (const item of levelOverrides) {
1718 + const overridableValue = componentOverridablePropTypeUtil.extract(item);
1719 + if (overridableValue) {
1720 + const override = componentInstanceOverridePropTypeUtil.extract(overridableValue.origin_value);
1721 + if (!override) continue;
1722 + const outerKey = overridableValue.override_key;
1723 + const innerKey = override.override_key;
1724 + const innerValue = override.override_value;
1725 + const higherLevelOverride = existing[outerKey];
1726 + if (higherLevelOverride) {
1727 + result[innerKey] = {
1728 + value: higherLevelOverride.value ?? innerValue,
1729 + outermostKey: higherLevelOverride.outermostKey ?? outerKey
1730 + };
1731 + continue;
1732 + }
1733 + result[innerKey] = {
1734 + value: innerValue,
1735 + outermostKey: outerKey
1736 + };
1737 + } else {
1738 + const override = componentInstanceOverridePropTypeUtil.extract(item);
1739 + if (!override) continue;
1740 + const key = override.override_key;
1741 + result[key] = { value: override.override_value };
1742 + }
1743 + }
1744 + return result;
1745 + }
1746 + function extractComponentInstanceSettings(element) {
1747 + const instanceSetting = element.settings?.get("component_instance");
1748 + const instanceValue = componentInstancePropTypeUtil.extract(instanceSetting);
1749 + return {
1750 + componentId: instanceValue?.component_id?.value,
1751 + overrides: componentInstanceOverridesPropTypeUtil.extract(instanceValue?.overrides)
1752 + };
1753 + }
1754 + function findOverrideByOuterKey(overrides, outerKey) {
1755 + if (!overrides) return null;
1756 + const overridableOverride = overrides.find((item) => {
1757 + const overridableValue = componentOverridablePropTypeUtil.extract(item);
1758 + if (!overridableValue) return false;
1759 + return overridableValue.override_key === outerKey;
1760 + });
1761 + const override = componentOverridablePropTypeUtil.extract(overridableOverride)?.origin_value;
1762 + if (!override || !componentInstanceOverridePropTypeUtil.isValid(override)) return null;
1763 + return override;
1764 + }
1122 1765
1123 -__webpack_require__.r(__webpack_exports__);
1124 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1125 -/* harmony export */ DetachInstanceConfirmationDialog: function() { return /* binding */ DetachInstanceConfirmationDialog; },
1126 -/* harmony export */ openDetachConfirmDialog: function() { return /* binding */ openDetachConfirmDialog; }
1127 -/* harmony export */ });
1128 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1129 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1130 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
1131 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__);
1132 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
1133 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__);
1134 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
1135 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
1766 +//#endregion
1767 +//#region packages/packages/core/editor-components/src/components/instance-editing-panel/utils/use-resolved-inner-element.ts
1768 + function useResolvedInnerElement(overridableProp) {
1769 + const componentInstanceElement = (0, _elementor_editor_editing_panel.useElement)();
1770 + const componentId = useComponentId();
1771 + const overrides = useComponentInstanceOverrides();
1772 + const { elementId: originElementId, widgetType, elType } = overridableProp.originPropFields ?? overridableProp;
1773 + const type = elType === "widget" ? widgetType : elType;
1774 + const elementType = (0, _elementor_editor_elements.getElementType)(type);
1775 + if (!elementType) throw new Error(`Element type not found for ${type}`);
1776 + const { elementId, overridesMapping } = (0, react.useMemo)(() => {
1777 + const overridesChainResult = resolveOverridesChain({
1778 + outerOverridableProp: overridableProp,
1779 + outerInstanceId: componentInstanceElement.element.id
1780 + });
1781 + if (overridesChainResult.isChainBroken) throw new OverrideControlInnerElementNotFoundError({ context: {
1782 + componentId,
1783 + elementId: originElementId
1784 + } });
1785 + return {
1786 + elementId: overridesChainResult.innerElement.id,
1787 + overridesMapping: overridesChainResult.overridesMapping
1788 + };
1789 + }, [
1790 + overridableProp,
1791 + componentInstanceElement.element.id,
1792 + componentId,
1793 + originElementId
1794 + ]);
1795 + const settingsWithInnerOverrides = (0, react.useMemo)(() => {
1796 + return applyOverridesToSettings((0, _elementor_editor_elements.getElementSettings)(elementId, Object.keys(elementType?.propsSchema ?? {})), overridesMapping);
1797 + }, [
1798 + elementId,
1799 + elementType?.propsSchema,
1800 + overridesMapping
1801 + ]);
1802 + return {
1803 + elementId,
1804 + elementType,
1805 + resolvedOriginValues: settingsWithInnerOverrides,
1806 + resolvedElementSettings: (0, react.useMemo)(() => {
1807 + return unwrapOverridableSettings(applyOverridesToSettings(settingsWithInnerOverrides, formatOverridesToApply(overrides)));
1808 + }, [settingsWithInnerOverrides, overrides])
1809 + };
1810 + }
1811 + function formatOverridesToApply(overrides) {
1812 + if (!overrides) return {};
1813 + const result = {};
1814 + for (const item of overrides) {
1815 + const overridable = componentOverridablePropTypeUtil.extract(item);
1816 + let override = item;
1817 + if (overridable) override = overridable.origin_value;
1818 + const extractedOverride = componentInstanceOverridePropTypeUtil.extract(override);
1819 + if (!extractedOverride) continue;
1820 + result[extractedOverride.override_key] = { value: extractedOverride.override_value };
1821 + }
1822 + return result;
1823 + }
1136 1824
1825 +//#endregion
1826 +//#region packages/packages/core/editor-components/src/components/instance-editing-panel/override-prop-control.tsx
1827 + function OverridePropControl({ overrideKey }) {
1828 + const overridableProp = useComponentOverridableProps().props[overrideKey];
1829 + if (!overridableProp) return null;
1830 + return /* @__PURE__ */ react.createElement(_elementor_editor_editing_panel.SettingsField, {
1831 + bind: "component_instance",
1832 + propDisplayName: overridableProp.label
1833 + }, /* @__PURE__ */ react.createElement(OverrideControl, { overridableProp }));
1834 + }
1835 + function OverrideControl({ overridableProp }) {
1836 + const componentInstanceElement = (0, _elementor_editor_editing_panel.useElement)();
1837 + const { value: instanceValue, setValue: setInstanceValue } = (0, _elementor_editor_controls.useBoundProp)(componentInstancePropTypeUtil);
1838 + const wrappingComponentId = useCurrentComponentId();
1839 + const componentId = useComponentId();
1840 + const overridableProps = useComponentOverridableProps();
1841 + const overrides = useComponentInstanceOverrides();
1842 + const controls = useControlsByWidgetType(overridableProp.originPropFields?.widgetType ?? overridableProp.widgetType);
1843 + const controlReplacements = (0, _elementor_editor_controls.getControlReplacements)();
1844 + const matchingOverride = getMatchingOverride(overrides, overridableProp.overrideKey);
1845 + const { propKey } = overridableProp.originPropFields ?? overridableProp;
1846 + const propType = getPropTypeForComponentOverride(overridableProp);
1847 + if (!propType) throw new OverrideControlPropTypeNotFoundError({ context: { overridableProp } });
1848 + const { elementId, elementType, resolvedElementSettings, resolvedOriginValues } = useResolvedInnerElement(overridableProp);
1849 + const { overrideValue, isDisabled, isHidden } = useOverrideControlDependencies({
1850 + existingOverride: matchingOverride,
1851 + resolvedElementSettings,
1852 + elementType,
1853 + elementId,
1854 + propKey
1855 + });
1856 + if (isHidden) return null;
1857 + const { propValue, baseValue: resolvedBaseValue } = resolveOverrideValues(overrideValue, resolvedOriginValues, propKey);
1858 + const value = { [overridableProp.overrideKey]: propValue };
1859 + const baseValue = { [overridableProp.overrideKey]: resolvedBaseValue };
1860 + const { control, controlProps, layout } = getControlParams(controls, overridableProp.originPropFields ?? overridableProp, overridableProp.label);
1861 + const propTypeSchema = (0, _elementor_editor_editing_panel.createTopLevelObjectType)({ schema: { [overridableProp.overrideKey]: propType } });
1862 + const setValue = (newValue, options, meta) => {
1863 + let newPropValue = getTempNewValueForDynamicProp(propType, propValue, newValue[overridableProp.overrideKey]);
1864 + newPropValue = correctExposedEmptyOverride(newPropValue, matchingOverride);
1865 + const newOverrideValue = createOverrideValue({
1866 + matchingOverride,
1867 + overrideKey: overridableProp.overrideKey,
1868 + overrideValue: newPropValue,
1869 + componentId
1870 + });
1871 + let newOverrides = (overrides ?? []).filter((override) => isValidOverride(overridableProps, override)).map((override) => override === matchingOverride ? newOverrideValue : override);
1872 + if (!matchingOverride) newOverrides = [...newOverrides, newOverrideValue];
1873 + setInstanceValue({
1874 + ...instanceValue,
1875 + overrides: componentInstanceOverridesPropTypeUtil.create(newOverrides)
1876 + }, options, meta);
1877 + const overridableValue = componentOverridablePropTypeUtil.extract(newOverrideValue);
1878 + if (overridableValue && wrappingComponentId) {
1879 + if (overridableProp.originPropFields) {
1880 + updateOverridableProp(wrappingComponentId, overridableValue, overridableProp.originPropFields);
1881 + return;
1882 + }
1883 + const originPropFields = {
1884 + elType: overridableProp.elType,
1885 + widgetType: overridableProp.widgetType,
1886 + propKey: overridableProp.propKey,
1887 + elementId: overridableProp.elementId
1888 + };
1889 + updateOverridableProp(wrappingComponentId, overridableValue, originPropFields);
1890 + }
1891 + };
1892 + return /* @__PURE__ */ react.createElement(OverridablePropProvider, {
1893 + value: componentOverridablePropTypeUtil.extract(matchingOverride) ?? void 0,
1894 + componentInstanceElement
1895 + }, /* @__PURE__ */ react.createElement(_elementor_editor_editing_panel.ElementProvider, {
1896 + element: {
1897 + id: elementId,
1898 + type: elementType.key
1899 + },
1900 + elementType,
1901 + settings: resolvedElementSettings
1902 + }, /* @__PURE__ */ react.createElement(_elementor_editor_controls.PropProvider, {
1903 + propType: propTypeSchema,
1904 + value,
1905 + setValue,
1906 + baseValue,
1907 + isDisabled
1908 + }, /* @__PURE__ */ react.createElement(_elementor_editor_controls.PropKeyProvider, { bind: overridableProp.overrideKey }, /* @__PURE__ */ react.createElement(_elementor_editor_controls.ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ react.createElement(_elementor_ui.Box, { mb: 1.5 }, /* @__PURE__ */ react.createElement(_elementor_editor_editing_panel.ControlTypeContainer, { layout }, layout !== "custom" && /* @__PURE__ */ react.createElement(ControlLabel, null, overridableProp.label), /* @__PURE__ */ react.createElement(OriginalControl, {
1909 + control,
1910 + controlProps
1911 + }))))))));
1912 + }
1913 + function resolveOverrideValues(overrideValue, resolvedOriginValues, propKey) {
1914 + const inheritedValue = unwrapOverridableSettings(resolvedOriginValues)[propKey] ?? null;
1915 + const isInheritedDynamic = (0, _elementor_editor_editing_panel.isDynamicPropValue)(inheritedValue);
1916 + return {
1917 + propValue: isInheritedDynamic && !overrideValue ? inheritedValue : overrideValue,
1918 + baseValue: overrideValue || isInheritedDynamic ? null : inheritedValue
1919 + };
1920 + }
1921 + function getTempNewValueForDynamicProp(propType, propValue, newPropValue) {
1922 + if (newPropValue === null && (0, _elementor_editor_editing_panel.isDynamicPropValue)(propValue)) return propType.default ?? null;
1923 + return newPropValue;
1924 + }
1925 + function createOverrideValue({ matchingOverride, overrideKey, overrideValue, componentId }) {
1926 + const overridableValue = componentOverridablePropTypeUtil.extract(matchingOverride);
1927 + const anyOverridable = componentOverridablePropTypeUtil.extract(overrideValue) ?? overridableValue;
1928 + if (anyOverridable) {
1929 + const innerOverride = componentInstanceOverridePropTypeUtil.create({
1930 + override_key: overrideKey,
1931 + override_value: resolveOverridePropValue(overrideValue),
1932 + schema_source: {
1933 + type: "component",
1934 + id: componentId
1935 + }
1936 + });
1937 + return componentOverridablePropTypeUtil.create({
1938 + override_key: anyOverridable.override_key,
1939 + origin_value: innerOverride
1940 + });
1941 + }
1942 + return componentInstanceOverridePropTypeUtil.create({
1943 + override_key: overrideKey,
1944 + override_value: overrideValue,
1945 + schema_source: {
1946 + type: "component",
1947 + id: componentId
1948 + }
1949 + });
1950 + }
1951 + function getControlParams(controls, originPropFields, label) {
1952 + const control = controls[originPropFields.propKey];
1953 + const { value } = control;
1954 + const layout = getControlLayout(control);
1955 + const controlProps = populateChildControlProps(value.props);
1956 + if (layout === "custom") controlProps.label = label ?? value.label;
1957 + return {
1958 + control,
1959 + controlProps,
1960 + layout
1961 + };
1962 + }
1963 + function OriginalControl({ control, controlProps }) {
1964 + const { value } = control;
1965 + return /* @__PURE__ */ react.createElement(_elementor_editor_editing_panel.BaseControl, {
1966 + type: value.type,
1967 + props: controlProps
1968 + });
1969 + }
1970 + function getControlLayout(control) {
1971 + return control.value.meta?.layout || _elementor_editor_editing_panel.controlsRegistry.getLayout(control.value.type);
1972 + }
1973 + function populateChildControlProps(props) {
1974 + if (props.childControlType) {
1975 + const childComponent = _elementor_editor_editing_panel.controlsRegistry.get(props.childControlType);
1976 + const childPropType = _elementor_editor_editing_panel.controlsRegistry.getPropTypeUtil(props.childControlType);
1977 + props = {
1978 + ...props,
1979 + childControlConfig: {
1980 + component: childComponent,
1981 + props: props.childControlProps || {},
1982 + propTypeUtil: childPropType
1983 + }
1984 + };
1985 + }
1986 + return props;
1987 + }
1988 + function isValidOverride(overridableProps, override) {
1989 + const overridableKey = componentOverridablePropTypeUtil.isValid(override) ? override.value.origin_value?.value.override_key : override.value.override_key;
1990 + return !!overridableProps.props[overridableKey];
1991 + }
1137 1992
1993 +//#endregion
1994 +//#region packages/packages/core/editor-components/src/components/instance-editing-panel/override-props-group.tsx
1995 + function OverridePropsGroup({ group }) {
1996 + const [isOpen, setIsOpen] = (0, _elementor_editor_editing_panel.useStateByElement)(group.id, true);
1997 + const handleClick = () => {
1998 + setIsOpen(!isOpen);
1999 + };
2000 + const id = (0, react.useId)();
2001 + const labelId = `label-${id}`;
2002 + const contentId = `content-${id}`;
2003 + const title = group.label;
2004 + return /* @__PURE__ */ react.createElement(_elementor_ui.Box, { "aria-label": `${title} section` }, /* @__PURE__ */ react.createElement(_elementor_ui.ListItemButton, {
2005 + id: labelId,
2006 + "aria-controls": contentId,
2007 + "aria-label": `${title} section`,
2008 + onClick: handleClick,
2009 + p: 0,
2010 + sx: { "&:hover": { backgroundColor: "transparent" } }
2011 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
2012 + direction: "row",
2013 + alignItems: "center",
2014 + justifyItems: "start",
2015 + flexGrow: 1,
2016 + gap: .5
2017 + }, /* @__PURE__ */ react.createElement(_elementor_ui.ListItemText, {
2018 + secondary: title,
2019 + secondaryTypographyProps: {
2020 + color: "text.primary",
2021 + variant: "caption",
2022 + fontWeight: "bold"
2023 + },
2024 + sx: {
2025 + flexGrow: 0,
2026 + flexShrink: 1,
2027 + marginInlineEnd: 1
2028 + }
2029 + })), /* @__PURE__ */ react.createElement(_elementor_editor_ui.CollapseIcon, {
2030 + open: isOpen,
2031 + color: "secondary",
2032 + fontSize: "tiny"
2033 + })), /* @__PURE__ */ react.createElement(_elementor_ui.Collapse, {
2034 + id: contentId,
2035 + "aria-labelledby": labelId,
2036 + in: isOpen,
2037 + timeout: "auto"
2038 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
2039 + direction: "column",
2040 + gap: 1,
2041 + p: 2
2042 + }, group.props.map((overrideKey) => /* @__PURE__ */ react.createElement(OverridePropControl, {
2043 + key: overrideKey,
2044 + overrideKey
2045 + })))));
2046 + }
1138 2047
2048 +//#endregion
2049 +//#region packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-body.tsx
2050 + function InstancePanelBody({ groups, isEmpty, emptyState, componentInstanceId }) {
2051 + return /* @__PURE__ */ react.createElement(_elementor_editor_panels.PanelBody, null, /* @__PURE__ */ react.createElement(_elementor_editor_controls.ControlAdornmentsProvider, { items: (0, _elementor_editor_editing_panel.getFieldIndicators)("settings") }, isEmpty ? emptyState : /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
2052 + direction: "column",
2053 + alignItems: "stretch"
2054 + }, groups.map((group) => /* @__PURE__ */ react.createElement(react.Fragment, { key: group.id + componentInstanceId }, /* @__PURE__ */ react.createElement(OverridePropsGroup, { group }), /* @__PURE__ */ react.createElement(_elementor_ui.Divider, null))))));
2055 + }
1139 2056
1140 -function DetachInstanceConfirmationDialog({
1141 - open,
1142 - onClose,
1143 - onConfirm
1144 -}) {
1145 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.ConfirmationDialog, {
1146 - open: open,
1147 - onClose: onClose
1148 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.ConfirmationDialog.Title, {
1149 - icon: _elementor_icons__WEBPACK_IMPORTED_MODULE_2__.AlertTriangleFilledIcon,
1150 - iconColor: "secondary"
1151 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Detach from Component?', 'elementor')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.ConfirmationDialog.Content, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.ConfirmationDialog.ContentText, null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Detaching this instance will break its link to the Component. Changes to the Component will no longer apply. Continue?', 'elementor'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.ConfirmationDialog.Actions, {
1152 - onClose: onClose,
1153 - onConfirm: onConfirm,
1154 - confirmLabel: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Detach', 'elementor'),
1155 - color: "primary"
1156 - }));
1157 -}
2057 +//#endregion
2058 +//#region packages/packages/core/editor-components/src/utils/filter-valid-overridable-props.ts
2059 + function filterValidOverridableProps(overridableProps, instanceElementId) {
2060 + const validProps = {};
2061 + for (const [key, prop] of Object.entries(overridableProps.props)) if (isExposedPropValid(prop, instanceElementId)) validProps[key] = prop;
2062 + const validPropKeys = new Set(Object.keys(validProps));
2063 + return {
2064 + props: validProps,
2065 + groups: {
2066 + items: Object.fromEntries(Object.entries(overridableProps.groups.items).map(([groupId, group]) => [groupId, {
2067 + ...group,
2068 + props: group.props.filter((propKey) => validPropKeys.has(propKey))
2069 + }])),
2070 + order: overridableProps.groups.order
2071 + }
2072 + };
2073 + }
2074 + function isExposedPropValid(prop, instanceElementId) {
2075 + const { isChainBroken } = resolveOverridesChain({
2076 + outerOverridableProp: prop,
2077 + outerInstanceId: instanceElementId
2078 + });
2079 + return !isChainBroken;
2080 + }
1158 2081
1159 -// Used imperatively from the context menu (Marionette view).
1160 -function openDetachConfirmDialog(onConfirm) {
1161 - const handleConfirm = () => {
1162 - (0,_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.closeDialog)();
1163 - onConfirm();
1164 - };
1165 - (0,_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.openDialog)({
1166 - component: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(DetachInstanceConfirmationDialog, {
1167 - open: true,
1168 - onClose: _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.closeDialog,
1169 - onConfirm: handleConfirm
1170 - })
1171 - });
1172 -}
2082 +//#endregion
2083 +//#region packages/packages/core/editor-components/src/hooks/use-sanitize-overridable-props.ts
2084 + function useSanitizeOverridableProps(componentId, instanceElementId) {
2085 + const overridableProps = useOverridableProps(componentId);
2086 + const isSanitized = useIsSanitizedComponent(componentId, "overridableProps");
2087 + if (!overridableProps || !componentId) return;
2088 + if (isSanitized) return overridableProps;
2089 + return filterValidOverridableProps(overridableProps, instanceElementId);
2090 + }
1173 2091
1174 -/***/ }),
2092 +//#endregion
2093 +//#region packages/packages/core/editor-components/src/components/instance-editing-panel/use-instance-panel-data.ts
2094 + function useInstancePanelData() {
2095 + const { element, settings } = useComponentInstanceSettings();
2096 + const componentId = settings?.component_id?.value;
2097 + const overrides = settings?.overrides?.value;
2098 + const component = useComponent(componentId ?? null);
2099 + const componentInstanceId = element?.id;
2100 + const overridableProps = useSanitizeOverridableProps(componentId ?? null, componentInstanceId);
2101 + if (!componentId || !overridableProps || !component || !componentInstanceId) return null;
2102 + const isNonEmptyGroup = (group) => group !== null && group.props.length > 0;
2103 + const groups = overridableProps.groups.order.map((groupId) => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
2104 + return {
2105 + componentId,
2106 + component,
2107 + overrides,
2108 + overridableProps,
2109 + groups,
2110 + isEmpty: groups.length === 0 || Object.keys(overridableProps.props).length === 0,
2111 + componentInstanceId
2112 + };
2113 + }
2114 + function useComponentInstanceSettings() {
2115 + const { element, settings } = (0, _elementor_editor_editing_panel.useElement)();
2116 + return {
2117 + element,
2118 + settings: componentInstancePropTypeUtil.extract(settings.component_instance)
2119 + };
2120 + }
1175 2121
1176 -/***/ "./packages/packages/core/editor-components/src/components/errors.ts":
1177 -/*!***************************************************************************!*\
1178 - !*** ./packages/packages/core/editor-components/src/components/errors.ts ***!
1179 - \***************************************************************************/
1180 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2122 +//#endregion
2123 +//#region packages/packages/core/editor-components/src/components/instance-editing-panel/instance-editing-panel.tsx
2124 + var EDIT_UPGRADE_URL = "https://go.elementor.com/go-pro-components-Instance-edit-footer/";
2125 + function InstanceEditingPanel() {
2126 + const { canEdit } = useComponentsPermissions();
2127 + const data = useInstancePanelData();
2128 + if (!data) return null;
2129 + const { componentId, component, overrides, overridableProps, groups, isEmpty, componentInstanceId } = data;
2130 + const panelTitle = (0, _wordpress_i18n.__)("Edit %s", "elementor").replace("%s", component.name);
2131 + const actions = /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
2132 + direction: "row",
2133 + gap: .5
2134 + }, /* @__PURE__ */ react.createElement(DetachAction, {
2135 + componentInstanceId,
2136 + componentId
2137 + }), canEdit && /* @__PURE__ */ react.createElement(EditComponentAction, {
2138 + disabled: true,
2139 + label: panelTitle,
2140 + icon: _elementor_icons.PencilIcon
2141 + }));
2142 + return /* @__PURE__ */ react.createElement(_elementor_ui.Box, {
2143 + "data-testid": "instance-editing-panel",
2144 + sx: {
2145 + display: "flex",
2146 + flexDirection: "column",
2147 + height: "100%"
2148 + }
2149 + }, /* @__PURE__ */ react.createElement(ComponentInstanceProvider, {
2150 + componentId,
2151 + overrides,
2152 + overridableProps
2153 + }, /* @__PURE__ */ react.createElement(InstancePanelHeader, {
2154 + componentName: component.name,
2155 + actions
2156 + }), /* @__PURE__ */ react.createElement(InstancePanelBody, {
2157 + groups,
2158 + isEmpty,
2159 + emptyState: /* @__PURE__ */ react.createElement(EmptyState, null),
2160 + componentInstanceId
2161 + })), !isProComponentsSupported() && (isProOutdatedForComponents() ? /* @__PURE__ */ react.createElement(ComponentsUpdateAlert, {
2162 + title: (0, _wordpress_i18n.__)("Edit Component", "elementor"),
2163 + description: (0, _wordpress_i18n.__)("To edit components, update Elementor Pro to the latest version.", "elementor")
2164 + }) : /* @__PURE__ */ react.createElement(ComponentsUpgradeAlert, {
2165 + title: (0, _wordpress_i18n.__)("Edit components", "elementor"),
2166 + description: (0, _wordpress_i18n.__)("Editing components requires an active Pro subscription.", "elementor"),
2167 + upgradeUrl: EDIT_UPGRADE_URL
2168 + })));
2169 + }
1181 2170
1182 -__webpack_require__.r(__webpack_exports__);
1183 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1184 -/* harmony export */ OverrideControlInnerElementNotFoundError: function() { return /* binding */ OverrideControlInnerElementNotFoundError; },
1185 -/* harmony export */ OverrideControlPropTypeNotFoundError: function() { return /* binding */ OverrideControlPropTypeNotFoundError; }
1186 -/* harmony export */ });
1187 -/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/utils */ "@elementor/utils");
1188 -/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_utils__WEBPACK_IMPORTED_MODULE_0__);
2171 +//#endregion
2172 +//#region packages/packages/core/editor-components/src/utils/get-component-documents.ts
2173 + async function getComponentDocuments({ elements, cache = /* @__PURE__ */ new Map(), isRecursive = true }) {
2174 + return getDocumentsMap(await getComponentIds(elements, cache, isRecursive), cache);
2175 + }
2176 + async function getComponentIds(elements, cache, isRecursive) {
2177 + const results = await Promise.all(elements.filter(Boolean).map(async ({ widgetType, elType, elements: childElements, settings }) => {
2178 + const ids = [];
2179 + if (isComponentInstance({
2180 + widgetType,
2181 + elType
2182 + })) {
2183 + const componentId = settings?.component_instance?.value?.component_id.value;
2184 + if (!componentId) return ids;
2185 + ids.push(componentId);
2186 + if (!cache.has(componentId)) cache.set(componentId, getComponentDocumentData(componentId));
2187 + if (isRecursive) childElements = (await cache.get(componentId))?.elements;
2188 + }
2189 + if (childElements?.length) {
2190 + const childIds = await getComponentIds(childElements, cache, isRecursive);
2191 + ids.push(...childIds);
2192 + }
2193 + return ids;
2194 + }));
2195 + return [...new Set(results.flat())];
2196 + }
2197 + async function getDocumentsMap(ids, cache) {
2198 + const documents = await Promise.all(ids.map(async (id) => {
2199 + const document = await cache.get(id);
2200 + if (!document) return null;
2201 + return [id, document];
2202 + }));
2203 + return new Map(documents.filter((document) => document !== null));
2204 + }
1189 2205
1190 -const OverrideControlInnerElementNotFoundError = (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.createError)({
1191 - code: 'override_control_inner_element_not_found',
1192 - message: `Component inner element not found for override control. The element may have been deleted without updating the overridable props, or the component has not finished rendering yet.`
1193 -});
1194 -const OverrideControlPropTypeNotFoundError = (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.createError)({
1195 - code: 'override_control_prop_type_not_found',
1196 - message: 'Prop type not found for override control.'
1197 -});
2206 +//#endregion
2207 +//#region packages/packages/core/editor-components/src/store/actions/load-components-overridable-props.ts
2208 + async function loadComponentsOverridableProps(componentIds, { force = false } = {}) {
2209 + const idsToLoad = force ? componentIds : componentIds.filter((id) => !selectIsOverridablePropsLoaded((0, _elementor_store.__getState)(), id));
2210 + if (!idsToLoad.length) return;
2211 + const { data } = await apiClient.getOverridableProps(idsToLoad);
2212 + (0, _elementor_store.__dispatch)(slice.actions.loadOverridableProps(data));
2213 + }
1198 2214
1199 -/***/ }),
2215 +//#endregion
2216 +//#region packages/packages/core/editor-components/src/store/actions/load-components-assets.ts
2217 + async function loadComponentsAssets(elements) {
2218 + if (!elements.length) return;
2219 + const documents = await getComponentDocuments({
2220 + elements,
2221 + isRecursive: false
2222 + });
2223 + updateDocumentState(documents);
2224 + documents.forEach((document, id) => {
2225 + _elementor_editor_embedded_documents_manager.embeddedDocumentsManager.setDocument(id, document);
2226 + });
2227 + await loadComponentsOverridableProps([...documents.keys()]);
2228 + }
2229 + function updateDocumentState(documents) {
2230 + if ([...documents.values()].some(_elementor_editor_documents.isDocumentDirty)) (0, _elementor_editor_documents.setDocumentModifiedStatus)(true);
2231 + }
1200 2232
1201 -/***/ "./packages/packages/core/editor-components/src/components/in-edit-mode.tsx":
1202 -/*!**********************************************************************************!*\
1203 - !*** ./packages/packages/core/editor-components/src/components/in-edit-mode.tsx ***!
1204 - \**********************************************************************************/
1205 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2233 +//#endregion
2234 +//#region packages/packages/core/editor-components/src/components/load-template-components.tsx
2235 + var LoadTemplateComponents = () => {
2236 + if ((0, _elementor_editor_templates.isHandlingTemplateStyles)()) return /* @__PURE__ */ react.createElement(LoadTemplateComponentsInternal, null);
2237 + return null;
2238 + };
2239 + function LoadTemplateComponentsInternal() {
2240 + const templates = (0, _elementor_editor_templates.useLoadedTemplates)();
2241 + (0, react.useEffect)(() => {
2242 + loadComponentsAssets(templates.flatMap((elements) => elements ?? []));
2243 + }, [templates]);
2244 + return null;
2245 + }
1206 2246
1207 -__webpack_require__.r(__webpack_exports__);
1208 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1209 -/* harmony export */ openEditModeDialog: function() { return /* binding */ openEditModeDialog; }
1210 -/* harmony export */ });
1211 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1212 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1213 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
1214 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__);
1215 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
1216 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__);
1217 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1218 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__);
1219 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
1220 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__);
2247 +//#endregion
2248 +//#region packages/packages/core/editor-components/src/utils/format-component-elements-id.ts
2249 + var ELEMENT_ID_LENGTH$1 = 7;
2250 + function formatComponentElementsId(elements, path) {
2251 + return elements.map((element) => {
2252 + const nestingPath = [...path, element.id];
2253 + const id = (0, _elementor_utils.hashString)(nestingPath.join("_"), ELEMENT_ID_LENGTH$1);
2254 + return {
2255 + ...element,
2256 + id,
2257 + originId: element.id,
2258 + elements: element.elements ? formatComponentElementsId(element.elements, nestingPath) : void 0
2259 + };
2260 + });
2261 + }
1221 2262
2263 +//#endregion
2264 +//#region packages/packages/core/editor-components/src/utils/reconcile-component-instance-elements.ts
2265 + var ELEMENT_ID_LENGTH = 7;
2266 + function overridesRecordToMapping(overrides) {
2267 + const mapping = {};
2268 + for (const [key, value] of Object.entries(overrides)) mapping[key] = { value };
2269 + return mapping;
2270 + }
2271 + function getElementConfig(element) {
2272 + const type = element.elType === "widget" ? element.widgetType : element.elType;
2273 + if (!type) return;
2274 + return (0, _elementor_editor_elements.getWidgetsCache)()?.[type];
2275 + }
2276 + function deriveIds(element, seed) {
2277 + const id = (0, _elementor_utils.hashString)(seed, ELEMENT_ID_LENGTH);
2278 + return {
2279 + ...element,
2280 + id,
2281 + elements: (element.elements ?? []).map((child, index) => deriveIds(child, `${id}_${index}`))
2282 + };
2283 + }
2284 + function reconcileElementTree(element, overridesMapping) {
2285 + const elementConfig = getElementConfig(element);
2286 + const effectiveSettings = unwrapOverridableSettings(applyOverridesToSettings(element.settings ?? {}, overridesMapping));
2287 + const originalChildren = element.elements ?? [];
2288 + const originalChildIds = new Set(originalChildren.map((child) => child.id));
2289 + const attributes = {
2290 + elements: [...originalChildren],
2291 + settings: effectiveSettings
2292 + };
2293 + if (elementConfig?.children_dependencies?.length) (0, _elementor_editor_elements.reconcileInitialChildren)({
2294 + elementId: element.id,
2295 + elementConfig,
2296 + attributes
2297 + });
2298 + const reconciledChildren = (attributes.elements ?? []).map((child) => originalChildIds.has(child.id) ? child : deriveIds(child, `${element.id}_${child.elType}`)).map((child) => reconcileElementTree(child, overridesMapping));
2299 + return {
2300 + ...element,
2301 + elements: reconciledChildren
2302 + };
2303 + }
2304 + function reconcileComponentInstanceElements(elements, overrides = {}) {
2305 + const overridesMapping = overridesRecordToMapping(overrides);
2306 + return elements.map((element) => reconcileElementTree(element, overridesMapping));
2307 + }
1222 2308
2309 +//#endregion
2310 +//#region packages/packages/core/editor-components/src/utils/switch-to-component.ts
2311 + async function switchToComponent(componentId, componentInstanceId, element) {
2312 + const selector = getSelector(element, componentInstanceId);
2313 + (0, _elementor_editor_documents.invalidateDocumentData)(componentId);
2314 + await (0, _elementor_editor_documents.switchToDocument)(componentId, {
2315 + selector,
2316 + mode: "autosave",
2317 + setAsInitial: false,
2318 + shouldScroll: false
2319 + });
2320 + await loadComponentsOverridableProps([componentId], { force: true });
2321 + const topLevelElement = (0, _elementor_editor_elements.getCurrentDocumentContainer)()?.children?.[0];
2322 + if (topLevelElement) {
2323 + (0, _elementor_editor_elements.selectElement)(topLevelElement.id);
2324 + expandNavigator();
2325 + }
2326 + }
2327 + async function expandNavigator() {
2328 + await (0, _elementor_editor_v1_adapters.__privateRunCommand)("navigator/expand-all");
2329 + }
2330 + function getSelector(element, componentInstanceId) {
2331 + if (element) return buildUniqueSelector(element);
2332 + if (componentInstanceId) return `[data-id="${componentInstanceId}"]`;
2333 + }
2334 + function buildUniqueSelector(element) {
2335 + const selectors = [];
2336 + let current = element.closest("[data-id]");
2337 + while (current) {
2338 + const dataId = current.dataset.id;
2339 + if (current.hasAttribute("data-elementor-id")) selectors.unshift(`[data-id="${dataId}"]`);
2340 + current = current.parentElement?.closest("[data-id]") ?? null;
2341 + }
2342 + if (selectors.length === 0) {
2343 + const closestElement = element.closest("[data-id]");
2344 + if (closestElement?.dataset?.id) return `[data-id="${closestElement.dataset.id}"]`;
2345 + }
2346 + return selectors.join(" ");
2347 + }
1223 2348
2349 +//#endregion
2350 +//#region packages/packages/core/editor-components/src/create-component-type.ts
2351 + var __defProp = Object.defineProperty;
2352 + var __typeError = (msg) => {
2353 + throw TypeError(msg);
2354 + };
2355 + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
2356 + enumerable: true,
2357 + configurable: true,
2358 + writable: true,
2359 + value
2360 + }) : obj[key] = value;
2361 + var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
2362 + var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
2363 + var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
2364 + var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
2365 + var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
2366 + var COMPONENT_WIDGET_TYPE = "e-component";
2367 + var EDIT_COMPONENT_DB_CLICK_UPGRADE_URL = "https://go.elementor.com/go-pro-components-Instance-edit-canvas-double-click/";
2368 + var EDIT_COMPONENT_CONTEXT_MENU_UPGRADE_URL = "https://go.elementor.com/go-pro-components-Instance-edit-context-menu/";
2369 + var UPDATE_PLUGINS_URL = "/wp-admin/plugins.php";
2370 + var COMPONENT_EDIT_UPGRADE_NOTIFICATION_ID = "component-edit-upgrade";
2371 + var COMPONENT_EDIT_UPDATE_NOTIFICATION_ID = "component-edit-update";
2372 + var COMPONENT_EDIT_UPGRADE_AUTO_HIDE_DURATION = 2e3;
2373 + function notifyComponentEditUpgrade() {
2374 + (0, _elementor_editor_notifications.notify)({
2375 + type: "promotion",
2376 + id: COMPONENT_EDIT_UPGRADE_NOTIFICATION_ID,
2377 + message: (0, _wordpress_i18n.__)("Editing components requires an active Pro subscription.", "elementor"),
2378 + autoHideDuration: COMPONENT_EDIT_UPGRADE_AUTO_HIDE_DURATION,
2379 + additionalActionProps: [{
2380 + size: "small",
2381 + variant: "contained",
2382 + color: "promotion",
2383 + href: EDIT_COMPONENT_DB_CLICK_UPGRADE_URL,
2384 + target: "_blank",
2385 + children: (0, _wordpress_i18n.__)("Upgrade Now", "elementor")
2386 + }]
2387 + });
2388 + }
2389 + function notifyComponentEditUpdate() {
2390 + (0, _elementor_editor_notifications.notify)({
2391 + type: "info",
2392 + id: COMPONENT_EDIT_UPDATE_NOTIFICATION_ID,
2393 + message: (0, _wordpress_i18n.__)("To edit components, update Elementor Pro to the latest version.", "elementor"),
2394 + additionalActionProps: [{
2395 + size: "small",
2396 + variant: "contained",
2397 + color: "info",
2398 + href: UPDATE_PLUGINS_URL,
2399 + target: "_blank",
2400 + children: (0, _wordpress_i18n.__)("Update Now", "elementor")
2401 + }]
2402 + });
2403 + }
2404 + var updateGroups = (groups, config) => {
2405 + const disableMap = new Map(Object.entries(config.disable ?? {}));
2406 + const addMap = new Map(Object.entries(config.add ?? {}));
2407 + return groups.map((group) => {
2408 + const disabledActions = disableMap.get(group.name) ?? [];
2409 + const addConfig = addMap.get(group.name);
2410 + const updatedActions = group.actions.map((action) => disabledActions.includes(action.name) ? {
2411 + ...action,
2412 + isEnabled: () => false
2413 + } : action);
2414 + if (addConfig) updatedActions.splice(addConfig.index, 0, ...addConfig.actions);
2415 + return {
2416 + ...group,
2417 + actions: updatedActions
2418 + };
2419 + });
2420 + };
2421 + function createComponentType(options) {
2422 + const WidgetType = window.elementor.modules.elements.types.Widget;
2423 + const view = createComponentView({ ...options });
2424 + return class extends WidgetType {
2425 + getType() {
2426 + return options.type;
2427 + }
2428 + getView() {
2429 + return view;
2430 + }
2431 + getModel() {
2432 + return createComponentModel();
2433 + }
2434 + };
2435 + }
2436 + function createComponentView(options) {
2437 + var _componentRenderContext;
2438 + var _a;
2439 + const legacyWindow = window;
2440 + return _a = class extends (0, _elementor_editor_canvas.createTemplatedElementView)(options) {
2441 + constructor() {
2442 + super(...arguments);
2443 + __publicField(this, "eventsManagerConfig", legacyWindow.elementorCommon.eventsManager.config);
2444 + __privateAdd(this, _componentRenderContext);
2445 + }
2446 + isComponentCurrentlyEdited() {
2447 + return (0, _elementor_editor_documents.getCurrentDocument)()?.id === this.getComponentId();
2448 + }
2449 + getRenderContext() {
2450 + const namespaceKey = this.getNamespaceKey();
2451 + const parentContext = this._parent?.getRenderContext?.();
2452 + const parentComponentContext = parentContext?.[namespaceKey];
2453 + if (!__privateGet(this, _componentRenderContext)) return parentContext;
2454 + const ownOverrides = __privateGet(this, _componentRenderContext).overrides ?? {};
2455 + const parentOverrides = parentComponentContext?.overrides ?? {};
2456 + return {
2457 + ...parentContext,
2458 + [namespaceKey]: { overrides: {
2459 + ...parentOverrides,
2460 + ...ownOverrides
2461 + } }
2462 + };
2463 + }
2464 + getResolverRenderContext() {
2465 + const namespaceKey = this.getNamespaceKey();
2466 + const ownContext = this.getRenderContext()?.[namespaceKey];
2467 + if (!ownContext) return this._parent?.getResolverRenderContext?.();
2468 + return {
2469 + ...this._parent?.getResolverRenderContext?.(),
2470 + ...ownContext
2471 + };
2472 + }
2473 + afterSettingsResolve(settings) {
2474 + const componentInstance = settings.component_instance;
2475 + if (componentInstance) {
2476 + __privateSet(this, _componentRenderContext, { overrides: componentInstance.overrides ?? {} });
2477 + const instanceId = this.model.get("id");
2478 + const formattedElements = formatComponentElementsId(reconcileComponentInstanceElements(componentInstance.elements ?? [], componentInstance.overrides ?? {}), [instanceId]);
2479 + this.collection = legacyWindow.elementor.createBackboneElementsCollection(formattedElements);
2480 + this.collection.models.forEach(setInactiveRecursively);
2481 + settings.component_instance = "<template data-children-placeholder></template>";
2482 + }
2483 + return settings;
2484 + }
2485 + getDomElement() {
2486 + return this.children.findByIndex(0)?.getDomElement() ?? this.$el;
2487 + }
2488 + attachBuffer(collectionView, buffer) {
2489 + const childrenPlaceholder = collectionView.$el.find("[data-children-placeholder]").get(0);
2490 + if (!childrenPlaceholder) {
2491 + super.attachBuffer(collectionView, buffer);
2492 + return;
2493 + }
2494 + childrenPlaceholder.replaceWith(buffer);
2495 + }
2496 + getComponentId() {
2497 + return (this.options?.model?.get("settings")?.get("component_instance")?.value).component_id.value;
2498 + }
2499 + getContextMenuGroups() {
2500 + const filteredGroups = super.getContextMenuGroups().filter((group) => group.name !== "save");
2501 + if (!this.getComponentId()) return filteredGroups;
2502 + return updateGroups(filteredGroups, this._getContextMenuConfig());
2503 + }
2504 + _getContextMenuConfig() {
2505 + const isAdministrator = isUserAdministrator();
2506 + const hasPro = (0, _elementor_utils.hasProInstalled)();
2507 + const isOutdated = isProOutdatedForComponents();
2508 + const editComponentAction = {
2509 + name: "edit component",
2510 + icon: "eicon-edit",
2511 + title: () => (0, _wordpress_i18n.__)("Edit Component", "elementor"),
2512 + ...!hasPro && !isOutdated && {
2513 + shortcut: `<a href="${EDIT_COMPONENT_CONTEXT_MENU_UPGRADE_URL}" target="_blank" onclick="event.stopPropagation()" class="elementor-context-menu-list__item__shortcut__promotion-badge"><i class="eicon-upgrade-crown"></i></a>`,
2514 + hasShortcutAction: true
2515 + },
2516 + isEnabled: () => isProComponentsSupported() || isOutdated,
2517 + callback: (_, eventData) => this.editComponent(eventData)
2518 + };
2519 + const detachInstanceAction = {
2520 + name: "detach instance",
2521 + icon: "eicon-chain-broken",
2522 + title: () => (0, _wordpress_i18n.__)("Detach from Component", "elementor"),
2523 + isEnabled: () => true,
2524 + callback: (_, eventData) => this.detachInstance(eventData)
2525 + };
2526 + return {
2527 + add: { general: {
2528 + index: 1,
2529 + actions: isAdministrator ? [editComponentAction, detachInstanceAction] : [detachInstanceAction]
2530 + } },
2531 + disable: { clipboard: ["pasteStyle", "resetStyle"] }
2532 + };
2533 + }
2534 + async switchDocument() {
2535 + const { isAllowedToSwitchDocument, lockedBy } = await apiClient.getComponentLockStatus(this.getComponentId());
2536 + if (!isAllowedToSwitchDocument) options.showLockedByModal?.(lockedBy || "");
2537 + else switchToComponent(this.getComponentId(), this.model.get("id"), this.el);
2538 + }
2539 + editComponent({ trigger, location, secondaryLocation }) {
2540 + if (isProOutdatedForComponents()) {
2541 + notifyComponentEditUpdate();
2542 + return;
2543 + }
2544 + if (!isProComponentsSupported() || this.isComponentCurrentlyEdited()) return;
2545 + this.switchDocument();
2546 + const editorSettings = this.model.get("editor_settings");
2547 + trackComponentEvent({
2548 + action: "edited",
2549 + executedBy: "user",
2550 + component_uid: editorSettings?.component_uid,
2551 + component_name: editorSettings?.title,
2552 + location,
2553 + secondary_location: secondaryLocation,
2554 + trigger
2555 + });
2556 + }
2557 + detachInstance({ trigger, location, secondaryLocation }) {
2558 + const componentId = this.getComponentId();
2559 + const instanceId = this.model.get("id");
2560 + if (!componentId || !instanceId) return;
2561 + const handleConfirm = async () => {
2562 + try {
2563 + await detachComponentInstance({
2564 + instanceId,
2565 + componentId,
2566 + trackingInfo: {
2567 + location,
2568 + secondaryLocation,
2569 + trigger
2570 + }
2571 + });
2572 + } catch {
2573 + (0, _elementor_editor_notifications.notify)({
2574 + type: "error",
2575 + message: (0, _wordpress_i18n.__)("Failed to detach component instance.", "elementor"),
2576 + id: "detach-component-instance-failed"
2577 + });
2578 + }
2579 + };
2580 + options.showDetachConfirmDialog?.(handleConfirm);
2581 + }
2582 + handleDblClick(e) {
2583 + e.stopPropagation();
2584 + if (!isUserAdministrator()) return;
2585 + if (isProOutdatedForComponents()) {
2586 + notifyComponentEditUpdate();
2587 + return;
2588 + }
2589 + if (!(0, _elementor_utils.hasProInstalled)()) {
2590 + notifyComponentEditUpgrade();
2591 + return;
2592 + }
2593 + const { triggers, locations, secondaryLocations } = this.eventsManagerConfig;
2594 + this.editComponent({
2595 + trigger: triggers.doubleClick,
2596 + location: locations.canvas,
2597 + secondaryLocation: secondaryLocations.canvasElement
2598 + });
2599 + }
2600 + events() {
2601 + return {
2602 + ...super.events(),
2603 + dblclick: this.handleDblClick
2604 + };
2605 + }
2606 + attributes() {
2607 + return {
2608 + ...super.attributes(),
2609 + "data-elementor-id": this.getComponentId()
2610 + };
2611 + }
2612 + }, _componentRenderContext = /* @__PURE__ */ new WeakMap(), _a;
2613 + }
2614 + function setInactiveRecursively(model) {
2615 + const editSettings = model.get("editSettings");
2616 + if (editSettings) editSettings.set("inactive", true);
2617 + const elements = model.get("elements");
2618 + if (elements) elements.forEach((childModel) => {
2619 + setInactiveRecursively(childModel);
2620 + });
2621 + }
2622 + function isUserAdministrator() {
2623 + return window.elementor.config?.user?.is_administrator ?? false;
2624 + }
2625 + function createComponentModel() {
2626 + const WidgetType = window.elementor.modules.elements.types.Widget;
2627 + const BaseWidgetModel = new WidgetType().getModel();
2628 + return BaseWidgetModel.extend({
2629 + initialize(attributes, options) {
2630 + BaseWidgetModel.prototype.initialize.call(this, attributes, options);
2631 + const componentInstance = this.get("settings")?.get("component_instance");
2632 + if (componentInstance?.value) {
2633 + const componentId = componentInstance.value.component_id?.value;
2634 + if (componentId && typeof componentId === "number") this.set("componentId", componentId);
2635 + }
2636 + this.set("isGlobal", true);
2637 + },
2638 + getTitle() {
2639 + const editorSettings = this.get("editor_settings");
2640 + const instanceTitle = editorSettings?.title;
2641 + if (instanceTitle) return instanceTitle;
2642 + const componentUid = editorSettings?.component_uid;
2643 + if (componentUid) {
2644 + const component = selectComponentByUid((0, _elementor_store.__getState)(), componentUid);
2645 + if (component?.name) return component.name;
2646 + }
2647 + return window.elementor.getElementData(this).title;
2648 + },
2649 + getComponentId() {
2650 + return this.get("componentId") || null;
2651 + },
2652 + getComponentName() {
2653 + return this.getTitle();
2654 + },
2655 + getComponentUid() {
2656 + return this.get("editor_settings")?.component_uid || null;
2657 + }
2658 + });
2659 + }
1224 2660
2661 +//#endregion
2662 +//#region packages/packages/core/editor-components/src/populate-store.ts
2663 + function PopulateStore() {
2664 + (0, react.useEffect)(() => {
2665 + (0, _elementor_store.__dispatch)(loadComponents());
2666 + }, []);
2667 + return null;
2668 + }
1225 2669
1226 -const openEditModeDialog = lockedBy => {
1227 - (0,_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.openDialog)({
1228 - component: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(EditModeDialog, {
1229 - lockedBy: lockedBy
1230 - })
1231 - });
1232 -};
1233 -const EditModeDialog = ({
1234 - lockedBy
1235 -}) => {
1236 - /* translators: %s is the name of the user who is currently editing the document */
1237 - const content = (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('%s is currently editing this document', 'elementor').replace('%s', lockedBy);
1238 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.DialogHeader, {
1239 - logo: false
1240 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, {
1241 - display: "flex",
1242 - alignItems: "center",
1243 - gap: 1
1244 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Icon, {
1245 - color: "secondary"
1246 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__.InfoCircleFilledIcon, {
1247 - fontSize: "medium"
1248 - })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Typography, {
1249 - variant: "subtitle1"
1250 - }, content))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.DialogContent, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Stack, {
1251 - spacing: 2,
1252 - direction: "column"
1253 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Typography, {
1254 - variant: "body2"
1255 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('You can wait for them to finish or reach out to coordinate your changes together.', 'elementor')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.DialogActions, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Button, {
1256 - color: "secondary",
1257 - variant: "contained",
1258 - onClick: _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.closeDialog
1259 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('Close', 'elementor'))))));
1260 -};
2670 +//#endregion
2671 +//#region packages/packages/core/editor-components/src/prevent-circular-nesting.ts
2672 + var COMPONENT_TYPE = "e-component";
2673 + var COMPONENT_CIRCULAR_NESTING_ALERT = {
2674 + type: "default",
2675 + message: (0, _wordpress_i18n.__)("Can't add this component - components that contain each other can't be nested.", "elementor"),
2676 + id: "circular-component-nesting-blocked"
2677 + };
2678 + function initCircularNestingPrevention() {
2679 + (0, _elementor_editor_v1_adapters.blockCommand)({
2680 + command: "document/elements/create",
2681 + condition: blockCircularCreate
2682 + });
2683 + (0, _elementor_editor_v1_adapters.blockCommand)({
2684 + command: "document/elements/move",
2685 + condition: blockCircularMove
2686 + });
2687 + (0, _elementor_editor_v1_adapters.blockCommand)({
2688 + command: "document/elements/paste",
2689 + condition: blockCircularPaste
2690 + });
2691 + }
2692 + function wouldCreateCircularNesting(componentIdToAdd) {
2693 + if (componentIdToAdd === void 0) return false;
2694 + const state = (0, _elementor_store.__getState)();
2695 + const currentComponentId = selectCurrentComponentId(state);
2696 + const path = selectPath(state);
2697 + if (currentComponentId === null) return false;
2698 + if (componentIdToAdd === currentComponentId) return true;
2699 + return path.some((item) => item.componentId === componentIdToAdd);
2700 + }
2701 + function extractComponentIdFromModel(model) {
2702 + if (!model) return null;
2703 + if (!(model.widgetType === COMPONENT_TYPE)) return null;
2704 + return model.settings?.component_instance?.value?.component_id?.value ?? null;
2705 + }
2706 + function extractComponentIdFromElement(element) {
2707 + if (element.widgetType !== COMPONENT_TYPE) return null;
2708 + return element.settings?.component_instance?.value?.component_id?.value ?? null;
2709 + }
2710 + function extractComponentIdsFromElements(elements) {
2711 + const ids = [];
2712 + for (const element of elements) {
2713 + const componentId = extractComponentIdFromElement(element);
2714 + if (componentId !== null) ids.push(componentId);
2715 + if (element.elements?.length) ids.push(...extractComponentIdsFromElements(element.elements));
2716 + }
2717 + return ids;
2718 + }
2719 + function extractComponentIdFromContainer(container) {
2720 + if (container.model?.get?.("widgetType") !== COMPONENT_TYPE) return null;
2721 + return ((container.model?.get?.("settings"))?.get?.("component_instance"))?.value?.component_id?.value ?? null;
2722 + }
2723 + function blockCircularCreate(args) {
2724 + const componentId = extractComponentIdFromModel(args.model);
2725 + if (componentId === null) return false;
2726 + const isBlocked = wouldCreateCircularNesting(componentId);
2727 + if (isBlocked) (0, _elementor_editor_notifications.notify)(COMPONENT_CIRCULAR_NESTING_ALERT);
2728 + return isBlocked;
2729 + }
2730 + function blockCircularMove(args) {
2731 + const { containers = [args.container] } = args;
2732 + const hasCircularComponent = containers.some((container) => {
2733 + if (!container) return false;
2734 + return (0, _elementor_editor_elements.getAllDescendants)(container).some((element) => {
2735 + const componentId = extractComponentIdFromContainer(element);
2736 + if (componentId === null) return false;
2737 + return wouldCreateCircularNesting(componentId);
2738 + });
2739 + });
2740 + if (hasCircularComponent) (0, _elementor_editor_notifications.notify)(COMPONENT_CIRCULAR_NESTING_ALERT);
2741 + return hasCircularComponent;
2742 + }
2743 + function blockCircularPaste(args) {
2744 + const { storageType } = args;
2745 + if (storageType !== "localstorage") return false;
2746 + const data = window?.elementorCommon?.storage?.get();
2747 + if (!data?.clipboard?.elements) return false;
2748 + const hasCircularComponent = extractComponentIdsFromElements(data.clipboard.elements).some(wouldCreateCircularNesting);
2749 + if (hasCircularComponent) (0, _elementor_editor_notifications.notify)(COMPONENT_CIRCULAR_NESTING_ALERT);
2750 + return hasCircularComponent;
2751 + }
1261 2752
1262 -/***/ }),
2753 +//#endregion
2754 +//#region packages/packages/core/editor-components/src/store/actions/remove-component-styles.ts
2755 + function removeComponentStyles(id) {
2756 + apiClient.invalidateComponentConfigCache(id);
2757 + }
1263 2758
1264 -/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/detach-action.tsx":
1265 -/*!**********************************************************************************************************!*\
1266 - !*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/detach-action.tsx ***!
1267 - \**********************************************************************************************************/
1268 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2759 +//#endregion
2760 +//#region packages/packages/core/editor-components/src/sync/publish-draft-components-in-page-before-save.ts
2761 + var INSUFFICIENT_PERMISSIONS_ERROR_CODE = "insufficient_permissions";
2762 + var PUBLISH_UPGRADE_URL = "https://go.elementor.com/go-pro-components-Instance-draft-failure/";
2763 + var PUBLISH_UPGRADE_NOTIFICATION_ID = "component-publish-upgrade";
2764 + async function publishDraftComponentsInPageBeforeSave({ status, elements }) {
2765 + if (status !== "publish") return;
2766 + const draftIds = [...(await getComponentDocuments({ elements })).values()].filter(_elementor_editor_documents.isDocumentDirty).map((document) => document.id);
2767 + if (draftIds.length === 0) return;
2768 + try {
2769 + await apiClient.updateStatuses(draftIds, "publish");
2770 + } catch (error) {
2771 + if (isInsufficientPermissionsError(error)) {
2772 + notifyPublishUpgrade();
2773 + return;
2774 + }
2775 + throw error;
2776 + }
2777 + draftIds.forEach((id) => (0, _elementor_editor_documents.invalidateDocumentData)(id));
2778 + }
2779 + function isInsufficientPermissionsError(error) {
2780 + return error instanceof _elementor_http_client.AxiosError && error.response?.data?.code === INSUFFICIENT_PERMISSIONS_ERROR_CODE;
2781 + }
2782 + function notifyPublishUpgrade() {
2783 + (0, _elementor_editor_notifications.notify)({
2784 + type: "promotion",
2785 + id: PUBLISH_UPGRADE_NOTIFICATION_ID,
2786 + message: (0, _wordpress_i18n.__)("You have unpublished component on this page. You need a pro version to publish it.", "elementor"),
2787 + additionalActionProps: [{
2788 + size: "small",
2789 + variant: "contained",
2790 + color: "promotion",
2791 + href: PUBLISH_UPGRADE_URL,
2792 + target: "_blank",
2793 + children: (0, _wordpress_i18n.__)("Upgrade Now", "elementor")
2794 + }]
2795 + });
2796 + }
1269 2797
1270 -__webpack_require__.r(__webpack_exports__);
1271 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1272 -/* harmony export */ DetachAction: function() { return /* binding */ DetachAction; }
1273 -/* harmony export */ });
1274 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1275 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1276 -/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-notifications */ "@elementor/editor-notifications");
1277 -/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__);
1278 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
1279 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__);
1280 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
1281 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
1282 -/* harmony import */ var _utils_detach_component_instance__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/detach-component-instance */ "./packages/packages/core/editor-components/src/utils/detach-component-instance/index.ts");
1283 -/* harmony import */ var _detach_instance_confirmation_dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../detach-instance-confirmation-dialog */ "./packages/packages/core/editor-components/src/components/detach-instance-confirmation-dialog.tsx");
1284 -/* harmony import */ var _instance_panel_header__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./instance-panel-header */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-header.tsx");
2798 +//#endregion
2799 +//#region packages/packages/core/editor-components/src/sync/before-save.ts
2800 + var beforeSave = ({ container, status }) => {
2801 + return publishDraftComponentsInPageBeforeSave({
2802 + elements: container?.model.get("elements").toJSON?.() ?? [],
2803 + status
2804 + });
2805 + };
1285 2806
2807 +//#endregion
2808 +//#region packages/packages/core/editor-components/src/sync/load-component-data-after-instance-added.ts
2809 + function initLoadComponentDataAfterInstanceAdded() {
2810 + (0, _elementor_editor_v1_adapters.registerDataHook)("after", "document/elements/paste", (_args, result) => {
2811 + load(result);
2812 + });
2813 + (0, _elementor_editor_v1_adapters.registerDataHook)("after", "document/elements/import", (_args, result) => {
2814 + load(result);
2815 + });
2816 + }
2817 + function load(result) {
2818 + if (!result) return;
2819 + loadComponentsAssets((Array.isArray(result) ? result : [result]).map((container) => container.model?.toJSON()).filter((element) => !!element));
2820 + }
1286 2821
2822 +//#endregion
2823 +//#region packages/packages/core/editor-components/src/init.ts
2824 + function init() {
2825 + (0, _elementor_store.__registerSlice)(slice);
2826 + (0, _elementor_editor_canvas.registerElementType)(COMPONENT_WIDGET_TYPE, (options) => createComponentType({
2827 + ...options,
2828 + showLockedByModal: openEditModeDialog,
2829 + showDetachConfirmDialog: openDetachConfirmDialog
2830 + }));
2831 + window.elementorCommon.__beforeSave = beforeSave;
2832 + (0, _elementor_editor_elements_panel.injectTab)({
2833 + id: "components",
2834 + label: (0, _wordpress_i18n.__)("Components", "elementor"),
2835 + component: Components,
2836 + position: 1
2837 + });
2838 + (0, _elementor_editor.injectIntoLogic)({
2839 + id: "components-populate-store",
2840 + component: PopulateStore
2841 + });
2842 + (0, _elementor_editor_v1_adapters.registerDataHook)("after", "editor/documents/attach-preview", () => {
2843 + const { id, config } = (0, _elementor_editor_documents.getV1CurrentDocument)() ?? {};
2844 + if (!id) return;
2845 + removeComponentStyles(id);
2846 + loadComponentsAssets(config?.elements ?? []);
2847 + });
2848 + _elementor_editor_embedded_documents_manager.embeddedDocumentsManager.onDocumentLoad((_documentId, data) => {
2849 + loadComponentsAssets(data.elements ?? []);
2850 + });
2851 + (0, _elementor_editor.injectIntoLogic)({
2852 + id: "templates",
2853 + component: LoadTemplateComponents
2854 + });
2855 + (0, _elementor_editor_editing_panel.registerEditingPanelReplacement)({
2856 + id: "component-instance-edit-panel",
2857 + condition: (_, elementType) => elementType.key === "e-component",
2858 + component: InstanceEditingPanel
2859 + });
2860 + _elementor_editor_canvas.settingsTransformersRegistry.register("component-instance", componentInstanceTransformer);
2861 + _elementor_editor_canvas.settingsTransformersRegistry.register("overridable", componentOverridableTransformer);
2862 + _elementor_editor_canvas.settingsTransformersRegistry.register("override", componentOverrideTransformer);
2863 + initCircularNestingPrevention();
2864 + initLoadComponentDataAfterInstanceAdded();
2865 + }
1287 2866
2867 +//#endregion
2868 +//#region packages/packages/core/editor-components/src/index.ts
2869 + var src_exports = /* @__PURE__ */ __exportAll({
2870 + COMPONENT_WIDGET_TYPE: () => COMPONENT_WIDGET_TYPE,
2871 + ComponentInstanceProvider: () => ComponentInstanceProvider,
2872 + ComponentItem: () => ComponentItem,
2873 + ComponentName: () => ComponentName,
2874 + ComponentSearch: () => ComponentSearch,
2875 + ComponentsList: () => ComponentsList,
2876 + DetachAction: () => DetachAction,
2877 + EditComponentAction: () => EditComponentAction,
2878 + EmptySearchResult: () => EmptySearchResult,
2879 + InstanceEmptyState: () => EmptyState,
2880 + InstancePanelBody: () => InstancePanelBody,
2881 + InstancePanelHeader: () => InstancePanelHeader,
2882 + LoadingComponents: () => LoadingComponents,
2883 + OverridablePropProvider: () => OverridablePropProvider,
2884 + SLICE_NAME: () => SLICE_NAME,
2885 + SearchProvider: () => SearchProvider,
2886 + apiClient: () => apiClient,
2887 + componentInstanceOverridePropTypeUtil: () => componentInstanceOverridePropTypeUtil,
2888 + componentInstanceOverridesPropTypeUtil: () => componentInstanceOverridesPropTypeUtil,
2889 + componentInstancePropTypeUtil: () => componentInstancePropTypeUtil,
2890 + componentOverridablePropTypeUtil: () => componentOverridablePropTypeUtil,
2891 + componentsActions: () => componentsActions,
2892 + componentsSelectors: () => componentsSelectors,
2893 + createComponentsAction: () => createComponentsAction,
2894 + filterValidOverridableProps: () => filterValidOverridableProps,
2895 + getComponentDocumentData: () => getComponentDocumentData,
2896 + getContainerByOriginId: () => getContainerByOriginId,
2897 + getOverridableProp: () => getOverridableProp,
2898 + getPropTypeForComponentOverride: () => getPropTypeForComponentOverride,
2899 + init: () => init,
2900 + isComponentInstance: () => isComponentInstance,
2901 + loadComponentsAssets: () => loadComponentsAssets,
2902 + onElementDrop: () => onElementDrop,
2903 + publishDraftComponentsInPageBeforeSave: () => publishDraftComponentsInPageBeforeSave,
2904 + registerComponentsReducer: () => registerComponentsReducer,
2905 + resolveOverridePropValue: () => resolveOverridePropValue,
2906 + selectComponentByUid: () => selectComponentByUid,
2907 + selectCreatedThisSession: () => selectCreatedThisSession,
2908 + selectOverridableProps: () => selectOverridableProps,
2909 + selectPath: () => selectPath,
2910 + slice: () => slice,
2911 + switchToComponent: () => switchToComponent,
2912 + trackComponentEvent: () => trackComponentEvent,
2913 + updateOverridableProp: () => updateOverridableProp,
2914 + useComponentInstanceElement: () => useComponentInstanceElement,
2915 + useComponents: () => useComponents,
2916 + useComponentsPermissions: () => useComponentsPermissions,
2917 + useCurrentComponent: () => useCurrentComponent,
2918 + useCurrentComponentId: () => useCurrentComponentId,
2919 + useFilteredComponents: () => useFilteredComponents,
2920 + useInstancePanelData: () => useInstancePanelData,
2921 + useIsSanitizedComponent: () => useIsSanitizedComponent,
2922 + useOverridablePropValue: () => useOverridablePropValue,
2923 + useOverridableProps: () => useOverridableProps,
2924 + useSanitizeOverridableProps: () => useSanitizeOverridableProps
2925 + });
1288 2926
2927 +//#endregion
2928 +//#region \0elementor-package-library-entry
2929 + (window.elementorV2 = window.elementorV2 || {}).editorComponents = src_exports;
1289 2930
1290 -
1291 -
1292 -
1293 -const DetachAction = ({
1294 - componentInstanceId,
1295 - componentId
1296 -}) => {
1297 - const [isDetachDialogOpen, setIsDetachDialogOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
1298 - const handleDetachConfirm = async () => {
1299 - setIsDetachDialogOpen(false);
1300 - try {
1301 - await (0,_utils_detach_component_instance__WEBPACK_IMPORTED_MODULE_4__.detachComponentInstance)({
1302 - instanceId: componentInstanceId,
1303 - componentId,
1304 - trackingInfo: getDetachTrackingInfo()
1305 - });
1306 - } catch {
1307 - (0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__.notify)({
1308 - type: 'error',
1309 - message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Failed to detach component instance.', 'elementor'),
1310 - id: 'detach-component-instance-failed'
1311 - });
1312 - }
1313 - };
1314 - const handleDetachCancel = () => {
1315 - setIsDetachDialogOpen(false);
1316 - };
1317 - const handleDetachClick = () => {
1318 - setIsDetachDialogOpen(true);
1319 - };
1320 - const detachLabel = (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Detach from Component', 'elementor');
1321 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_instance_panel_header__WEBPACK_IMPORTED_MODULE_6__.EditComponentAction, {
1322 - label: detachLabel,
1323 - icon: _elementor_icons__WEBPACK_IMPORTED_MODULE_2__.DetachIcon,
1324 - onClick: handleDetachClick
1325 - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_detach_instance_confirmation_dialog__WEBPACK_IMPORTED_MODULE_5__.DetachInstanceConfirmationDialog, {
1326 - open: isDetachDialogOpen,
1327 - onClose: handleDetachCancel,
1328 - onConfirm: handleDetachConfirm
1329 - }));
1330 -};
1331 -function getDetachTrackingInfo() {
1332 - const extendedWindow = window;
1333 - const config = extendedWindow?.elementorCommon?.eventsManager?.config;
1334 - if (!config) {
1335 - return {
1336 - location: '',
1337 - trigger: ''
1338 - };
1339 - }
1340 - return {
1341 - location: config.locations.components.instanceEditingPanel,
1342 - trigger: config.triggers.click
1343 - };
1344 -}
1345 -
1346 -/***/ }),
1347 -
1348 -/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/empty-state.tsx":
1349 -/*!********************************************************************************************************!*\
1350 - !*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/empty-state.tsx ***!
1351 - \********************************************************************************************************/
1352 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1353 -
1354 -__webpack_require__.r(__webpack_exports__);
1355 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1356 -/* harmony export */ EmptyState: function() { return /* binding */ EmptyState; }
1357 -/* harmony export */ });
1358 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1359 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1360 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
1361 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__);
1362 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1363 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
1364 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
1365 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
1366 -/* harmony import */ var _hooks_use_components_permissions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/use-components-permissions */ "./packages/packages/core/editor-components/src/hooks/use-components-permissions.ts");
1367 -
1368 -
1369 -
1370 -
1371 -
1372 -const EmptyState = ({
1373 - onEditComponent
1374 -}) => {
1375 - const {
1376 - canEdit
1377 - } = (0,_hooks_use_components_permissions__WEBPACK_IMPORTED_MODULE_4__.useComponentsPermissions)();
1378 - const message = canEdit ? (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Edit the component to add properties, manage them or update the design across all instances.', 'elementor') : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('With your current role, you cannot edit this component. Contact an administrator to add properties.', 'elementor');
1379 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
1380 - alignItems: "center",
1381 - justifyContent: "start",
1382 - height: "100%",
1383 - color: "text.secondary",
1384 - sx: {
1385 - p: 2.5,
1386 - pt: 8,
1387 - pb: 5.5,
1388 - mt: 1
1389 - },
1390 - gap: 1.5
1391 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.ComponentPropListIcon, {
1392 - fontSize: "large"
1393 - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
1394 - align: "center",
1395 - variant: "subtitle2"
1396 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('No properties yet', 'elementor')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
1397 - align: "center",
1398 - variant: "caption",
1399 - maxWidth: "170px"
1400 - }, message), canEdit && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Button, {
1401 - variant: "outlined",
1402 - color: "secondary",
1403 - size: "small",
1404 - sx: {
1405 - mt: 1
1406 - },
1407 - disabled: !onEditComponent,
1408 - onClick: onEditComponent
1409 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.PencilIcon, {
1410 - fontSize: "small"
1411 - }), (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Edit component', 'elementor')));
1412 -};
1413 -
1414 -/***/ }),
1415 -
1416 -/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-editing-panel.tsx":
1417 -/*!*******************************************************************************************************************!*\
1418 - !*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-editing-panel.tsx ***!
1419 - \*******************************************************************************************************************/
1420 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1421 -
1422 -__webpack_require__.r(__webpack_exports__);
1423 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1424 -/* harmony export */ InstanceEditingPanel: function() { return /* binding */ InstanceEditingPanel; }
1425 -/* harmony export */ });
1426 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1427 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1428 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
1429 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__);
1430 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1431 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
1432 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
1433 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
1434 -/* harmony import */ var _hooks_use_components_permissions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/use-components-permissions */ "./packages/packages/core/editor-components/src/hooks/use-components-permissions.ts");
1435 -/* harmony import */ var _provider_component_instance_context__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../provider/component-instance-context */ "./packages/packages/core/editor-components/src/provider/component-instance-context.tsx");
1436 -/* harmony import */ var _utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/is-pro-components-supported */ "./packages/packages/core/editor-components/src/utils/is-pro-components-supported.ts");
1437 -/* harmony import */ var _components_update_alert__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../components-update-alert */ "./packages/packages/core/editor-components/src/components/components-update-alert.tsx");
1438 -/* harmony import */ var _components_upgrade_alert__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../components-upgrade-alert */ "./packages/packages/core/editor-components/src/components/components-upgrade-alert.tsx");
1439 -/* harmony import */ var _detach_action__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./detach-action */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/detach-action.tsx");
1440 -/* harmony import */ var _empty_state__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./empty-state */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/empty-state.tsx");
1441 -/* harmony import */ var _instance_panel_body__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./instance-panel-body */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-body.tsx");
1442 -/* harmony import */ var _instance_panel_header__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./instance-panel-header */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-header.tsx");
1443 -/* harmony import */ var _use_instance_panel_data__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./use-instance-panel-data */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/use-instance-panel-data.ts");
1444 -
1445 -
1446 -
1447 -
1448 -
1449 -
1450 -
1451 -
1452 -
1453 -
1454 -
1455 -
1456 -
1457 -
1458 -const EDIT_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-Instance-edit-footer/';
1459 -function InstanceEditingPanel() {
1460 - const {
1461 - canEdit
1462 - } = (0,_hooks_use_components_permissions__WEBPACK_IMPORTED_MODULE_4__.useComponentsPermissions)();
1463 - const data = (0,_use_instance_panel_data__WEBPACK_IMPORTED_MODULE_13__.useInstancePanelData)();
1464 - if (!data) {
1465 - return null;
1466 - }
1467 - const {
1468 - componentId,
1469 - component,
1470 - overrides,
1471 - overridableProps,
1472 - groups,
1473 - isEmpty,
1474 - componentInstanceId
1475 - } = data;
1476 -
1477 - /* translators: %s: component name. */
1478 - const panelTitle = (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Edit %s', 'elementor').replace('%s', component.name);
1479 - const actions = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
1480 - direction: "row",
1481 - gap: 0.5
1482 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_detach_action__WEBPACK_IMPORTED_MODULE_9__.DetachAction, {
1483 - componentInstanceId: componentInstanceId,
1484 - componentId: componentId
1485 - }), canEdit && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_instance_panel_header__WEBPACK_IMPORTED_MODULE_12__.EditComponentAction, {
1486 - disabled: true,
1487 - label: panelTitle,
1488 - icon: _elementor_icons__WEBPACK_IMPORTED_MODULE_1__.PencilIcon
1489 - }));
1490 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Box, {
1491 - "data-testid": "instance-editing-panel",
1492 - sx: {
1493 - display: 'flex',
1494 - flexDirection: 'column',
1495 - height: '100%'
1496 - }
1497 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_5__.ComponentInstanceProvider, {
1498 - componentId: componentId,
1499 - overrides: overrides,
1500 - overridableProps: overridableProps
1501 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_instance_panel_header__WEBPACK_IMPORTED_MODULE_12__.InstancePanelHeader, {
1502 - componentName: component.name,
1503 - actions: actions
1504 - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_instance_panel_body__WEBPACK_IMPORTED_MODULE_11__.InstancePanelBody, {
1505 - groups: groups,
1506 - isEmpty: isEmpty,
1507 - emptyState: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_empty_state__WEBPACK_IMPORTED_MODULE_10__.EmptyState, null),
1508 - componentInstanceId: componentInstanceId
1509 - })), !(0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_6__.isProComponentsSupported)() && ((0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_6__.isProOutdatedForComponents)() ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_update_alert__WEBPACK_IMPORTED_MODULE_7__.ComponentsUpdateAlert, {
1510 - title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Edit Component', 'elementor'),
1511 - description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('To edit components, update Elementor Pro to the latest version.', 'elementor')
1512 - }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_upgrade_alert__WEBPACK_IMPORTED_MODULE_8__.ComponentsUpgradeAlert, {
1513 - title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Edit components', 'elementor'),
1514 - description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Editing components requires an active Pro subscription.', 'elementor'),
1515 - upgradeUrl: EDIT_UPGRADE_URL
1516 - })));
1517 -}
1518 -
1519 -/***/ }),
1520 -
1521 -/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-body.tsx":
1522 -/*!****************************************************************************************************************!*\
1523 - !*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-body.tsx ***!
1524 - \****************************************************************************************************************/
1525 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1526 -
1527 -__webpack_require__.r(__webpack_exports__);
1528 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1529 -/* harmony export */ InstancePanelBody: function() { return /* binding */ InstancePanelBody; }
1530 -/* harmony export */ });
1531 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1532 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1533 -/* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-controls */ "@elementor/editor-controls");
1534 -/* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__);
1535 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
1536 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__);
1537 -/* harmony import */ var _elementor_editor_panels__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/editor-panels */ "@elementor/editor-panels");
1538 -/* harmony import */ var _elementor_editor_panels__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_panels__WEBPACK_IMPORTED_MODULE_3__);
1539 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1540 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__);
1541 -/* harmony import */ var _override_props_group__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./override-props-group */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/override-props-group.tsx");
1542 -
1543 -
1544 -
1545 -
1546 -
1547 -
1548 -function InstancePanelBody({
1549 - groups,
1550 - isEmpty,
1551 - emptyState,
1552 - componentInstanceId
1553 -}) {
1554 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_panels__WEBPACK_IMPORTED_MODULE_3__.PanelBody, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.ControlAdornmentsProvider, {
1555 - items: (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.getFieldIndicators)('settings')
1556 - }, isEmpty ? emptyState : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Stack, {
1557 - direction: "column",
1558 - alignItems: "stretch"
1559 - }, groups.map(group => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
1560 - key: group.id + componentInstanceId
1561 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_override_props_group__WEBPACK_IMPORTED_MODULE_5__.OverridePropsGroup, {
1562 - group: group
1563 - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Divider, null))))));
1564 -}
1565 -
1566 -/***/ }),
1567 -
1568 -/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-header.tsx":
1569 -/*!******************************************************************************************************************!*\
1570 - !*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-header.tsx ***!
1571 - \******************************************************************************************************************/
1572 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1573 -
1574 -__webpack_require__.r(__webpack_exports__);
1575 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1576 -/* harmony export */ EditComponentAction: function() { return /* binding */ EditComponentAction; },
1577 -/* harmony export */ InstancePanelHeader: function() { return /* binding */ InstancePanelHeader; }
1578 -/* harmony export */ });
1579 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1580 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1581 -/* harmony import */ var _elementor_editor_panels__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-panels */ "@elementor/editor-panels");
1582 -/* harmony import */ var _elementor_editor_panels__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_panels__WEBPACK_IMPORTED_MODULE_1__);
1583 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
1584 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__);
1585 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
1586 -/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_3__);
1587 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1588 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__);
1589 -
1590 -
1591 -
1592 -
1593 -
1594 -function InstancePanelHeader({
1595 - componentName,
1596 - actions
1597 -}) {
1598 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_panels__WEBPACK_IMPORTED_MODULE_1__.PanelHeader, {
1599 - sx: {
1600 - justifyContent: 'start',
1601 - px: 2
1602 - }
1603 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Stack, {
1604 - direction: "row",
1605 - alignItems: "center",
1606 - flexGrow: 1,
1607 - gap: 1,
1608 - maxWidth: "100%"
1609 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_3__.ComponentsIcon, {
1610 - fontSize: "small",
1611 - sx: {
1612 - color: 'text.tertiary'
1613 - }
1614 - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__.EllipsisWithTooltip, {
1615 - title: componentName,
1616 - as: _elementor_editor_panels__WEBPACK_IMPORTED_MODULE_1__.PanelHeaderTitle,
1617 - sx: {
1618 - flexGrow: 1
1619 - }
1620 - }), actions));
1621 -}
1622 -function EditComponentAction({
1623 - label,
1624 - onClick,
1625 - disabled = false,
1626 - icon: Icon
1627 -}) {
1628 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Tooltip, {
1629 - title: label
1630 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.IconButton, {
1631 - size: "tiny",
1632 - onClick: onClick,
1633 - "aria-label": label,
1634 - disabled: disabled
1635 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Icon, {
1636 - fontSize: "tiny"
1637 - })));
1638 -}
1639 -
1640 -/***/ }),
1641 -
1642 -/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/override-prop-control.tsx":
1643 -/*!******************************************************************************************************************!*\
1644 - !*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/override-prop-control.tsx ***!
1645 - \******************************************************************************************************************/
1646 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1647 -
1648 -__webpack_require__.r(__webpack_exports__);
1649 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1650 -/* harmony export */ OverridePropControl: function() { return /* binding */ OverridePropControl; }
1651 -/* harmony export */ });
1652 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1653 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1654 -/* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-controls */ "@elementor/editor-controls");
1655 -/* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__);
1656 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
1657 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__);
1658 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1659 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__);
1660 -/* harmony import */ var _hooks_use_controls_by_widget_type__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/use-controls-by-widget-type */ "./packages/packages/core/editor-components/src/hooks/use-controls-by-widget-type.ts");
1661 -/* harmony import */ var _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../prop-types/component-instance-override-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts");
1662 -/* harmony import */ var _prop_types_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../prop-types/component-instance-overrides-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-overrides-prop-type.ts");
1663 -/* harmony import */ var _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../prop-types/component-instance-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-prop-type.ts");
1664 -/* harmony import */ var _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/component-overridable-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts");
1665 -/* harmony import */ var _provider_component_instance_context__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../provider/component-instance-context */ "./packages/packages/core/editor-components/src/provider/component-instance-context.tsx");
1666 -/* harmony import */ var _provider_overridable_prop_context__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../provider/overridable-prop-context */ "./packages/packages/core/editor-components/src/provider/overridable-prop-context.tsx");
1667 -/* harmony import */ var _store_actions_update_overridable_prop__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../store/actions/update-overridable-prop */ "./packages/packages/core/editor-components/src/store/actions/update-overridable-prop.ts");
1668 -/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
1669 -/* harmony import */ var _utils_get_prop_type_for_component_override__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../utils/get-prop-type-for-component-override */ "./packages/packages/core/editor-components/src/utils/get-prop-type-for-component-override.ts");
1670 -/* harmony import */ var _utils_overridable_props_utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../utils/overridable-props-utils */ "./packages/packages/core/editor-components/src/utils/overridable-props-utils.ts");
1671 -/* harmony import */ var _utils_resolve_override_prop_value__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../utils/resolve-override-prop-value */ "./packages/packages/core/editor-components/src/utils/resolve-override-prop-value.ts");
1672 -/* harmony import */ var _control_label__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../control-label */ "./packages/packages/core/editor-components/src/components/control-label.tsx");
1673 -/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../errors */ "./packages/packages/core/editor-components/src/components/errors.ts");
1674 -/* harmony import */ var _utils_correct_exposed_empty_override__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./utils/correct-exposed-empty-override */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/correct-exposed-empty-override.ts");
1675 -/* harmony import */ var _utils_resolve_element_settings__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./utils/resolve-element-settings */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/resolve-element-settings.ts");
1676 -/* harmony import */ var _utils_use_override_dependencies__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./utils/use-override-dependencies */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/use-override-dependencies.ts");
1677 -/* harmony import */ var _utils_use_resolved_inner_element__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./utils/use-resolved-inner-element */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/use-resolved-inner-element.ts");
1678 -
1679 -
1680 -
1681 -
1682 -
1683 -
1684 -
1685 -
1686 -
1687 -
1688 -
1689 -
1690 -
1691 -
1692 -
1693 -
1694 -
1695 -
1696 -
1697 -
1698 -
1699 -
1700 -function OverridePropControl({
1701 - overrideKey
1702 -}) {
1703 - const overridableProps = (0,_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_9__.useComponentOverridableProps)();
1704 - const overridableProp = overridableProps.props[overrideKey];
1705 - if (!overridableProp) {
1706 - return null;
1707 - }
1708 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.SettingsField, {
1709 - bind: "component_instance",
1710 - propDisplayName: overridableProp.label
1711 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(OverrideControl, {
1712 - overridableProp: overridableProp
1713 - }));
1714 -}
1715 -function OverrideControl({
1716 - overridableProp
1717 -}) {
1718 - const componentInstanceElement = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.useElement)();
1719 - const {
1720 - value: instanceValue,
1721 - setValue: setInstanceValue
1722 - } = (0,_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.useBoundProp)(_prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_7__.componentInstancePropTypeUtil);
1723 - const wrappingComponentId = (0,_store_store__WEBPACK_IMPORTED_MODULE_12__.useCurrentComponentId)();
1724 - const componentId = (0,_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_9__.useComponentId)();
1725 - const overridableProps = (0,_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_9__.useComponentOverridableProps)();
1726 - const overrides = (0,_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_9__.useComponentInstanceOverrides)();
1727 - const controls = (0,_hooks_use_controls_by_widget_type__WEBPACK_IMPORTED_MODULE_4__.useControlsByWidgetType)(overridableProp.originPropFields?.widgetType ?? overridableProp.widgetType);
1728 - const controlReplacements = (0,_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.getControlReplacements)();
1729 - const matchingOverride = (0,_utils_overridable_props_utils__WEBPACK_IMPORTED_MODULE_14__.getMatchingOverride)(overrides, overridableProp.overrideKey);
1730 - const {
1731 - propKey
1732 - } = overridableProp.originPropFields ?? overridableProp;
1733 - const propType = (0,_utils_get_prop_type_for_component_override__WEBPACK_IMPORTED_MODULE_13__.getPropTypeForComponentOverride)(overridableProp);
1734 - if (!propType) {
1735 - throw new _errors__WEBPACK_IMPORTED_MODULE_17__.OverrideControlPropTypeNotFoundError({
1736 - context: {
1737 - overridableProp
1738 - }
1739 - });
1740 - }
1741 - const {
1742 - elementId,
1743 - elementType,
1744 - resolvedElementSettings,
1745 - resolvedOriginValues
1746 - } = (0,_utils_use_resolved_inner_element__WEBPACK_IMPORTED_MODULE_21__.useResolvedInnerElement)(overridableProp);
1747 - const {
1748 - overrideValue,
1749 - isDisabled,
1750 - isHidden
1751 - } = (0,_utils_use_override_dependencies__WEBPACK_IMPORTED_MODULE_20__.useOverrideControlDependencies)({
1752 - existingOverride: matchingOverride,
1753 - resolvedElementSettings,
1754 - elementType,
1755 - elementId,
1756 - propKey
1757 - });
1758 - if (isHidden) {
1759 - return null;
1760 - }
1761 - const {
1762 - propValue,
1763 - baseValue: resolvedBaseValue
1764 - } = resolveOverrideValues(overrideValue, resolvedOriginValues, propKey);
1765 - const value = {
1766 - [overridableProp.overrideKey]: propValue
1767 - };
1768 - const baseValue = {
1769 - [overridableProp.overrideKey]: resolvedBaseValue
1770 - };
1771 - const {
1772 - control,
1773 - controlProps,
1774 - layout
1775 - } = getControlParams(controls, overridableProp.originPropFields ?? overridableProp, overridableProp.label);
1776 - const propTypeSchema = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.createTopLevelObjectType)({
1777 - schema: {
1778 - [overridableProp.overrideKey]: propType
1779 - }
1780 - });
1781 - const setValue = (newValue, options, meta) => {
1782 - let newPropValue = getTempNewValueForDynamicProp(propType, propValue, newValue[overridableProp.overrideKey]);
1783 - newPropValue = (0,_utils_correct_exposed_empty_override__WEBPACK_IMPORTED_MODULE_18__.correctExposedEmptyOverride)(newPropValue, matchingOverride);
1784 - const newOverrideValue = createOverrideValue({
1785 - matchingOverride,
1786 - overrideKey: overridableProp.overrideKey,
1787 - overrideValue: newPropValue,
1788 - componentId
1789 - });
1790 - let newOverrides = (overrides ?? []).filter(override => isValidOverride(overridableProps, override)).map(override => override === matchingOverride ? newOverrideValue : override);
1791 - if (!matchingOverride) {
1792 - newOverrides = [...newOverrides, newOverrideValue];
1793 - }
1794 - setInstanceValue({
1795 - ...instanceValue,
1796 - overrides: _prop_types_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_6__.componentInstanceOverridesPropTypeUtil.create(newOverrides)
1797 - }, options, meta);
1798 - const overridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_8__.componentOverridablePropTypeUtil.extract(newOverrideValue);
1799 - if (overridableValue && wrappingComponentId) {
1800 - if (overridableProp.originPropFields) {
1801 - (0,_store_actions_update_overridable_prop__WEBPACK_IMPORTED_MODULE_11__.updateOverridableProp)(wrappingComponentId, overridableValue, overridableProp.originPropFields);
1802 - return;
1803 - }
1804 - const originPropFields = {
1805 - elType: overridableProp.elType,
1806 - widgetType: overridableProp.widgetType,
1807 - propKey: overridableProp.propKey,
1808 - elementId: overridableProp.elementId
1809 - };
1810 - (0,_store_actions_update_overridable_prop__WEBPACK_IMPORTED_MODULE_11__.updateOverridableProp)(wrappingComponentId, overridableValue, originPropFields);
1811 - }
1812 - };
1813 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_provider_overridable_prop_context__WEBPACK_IMPORTED_MODULE_10__.OverridablePropProvider, {
1814 - value: _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_8__.componentOverridablePropTypeUtil.extract(matchingOverride) ?? undefined,
1815 - componentInstanceElement: componentInstanceElement
1816 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.ElementProvider, {
1817 - element: {
1818 - id: elementId,
1819 - type: elementType.key
1820 - },
1821 - elementType: elementType,
1822 - settings: resolvedElementSettings
1823 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.PropProvider, {
1824 - propType: propTypeSchema,
1825 - value: value,
1826 - setValue: setValue,
1827 - baseValue: baseValue,
1828 - isDisabled: isDisabled
1829 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.PropKeyProvider, {
1830 - bind: overridableProp.overrideKey
1831 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.ControlReplacementsProvider, {
1832 - replacements: controlReplacements
1833 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, {
1834 - mb: 1.5
1835 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.ControlTypeContainer, {
1836 - layout: layout
1837 - }, layout !== 'custom' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_control_label__WEBPACK_IMPORTED_MODULE_16__.ControlLabel, null, overridableProp.label), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(OriginalControl, {
1838 - control: control,
1839 - controlProps: controlProps
1840 - }))))))));
1841 -}
1842 -function resolveOverrideValues(overrideValue, resolvedOriginValues, propKey) {
1843 - const unwrappedSettings = (0,_utils_resolve_element_settings__WEBPACK_IMPORTED_MODULE_19__.unwrapOverridableSettings)(resolvedOriginValues);
1844 - const inheritedValue = unwrappedSettings[propKey] ?? null;
1845 - const isInheritedDynamic = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.isDynamicPropValue)(inheritedValue);
1846 - const shouldUseInheritedAsValue = isInheritedDynamic && !overrideValue;
1847 - const propValue = shouldUseInheritedAsValue ? inheritedValue : overrideValue;
1848 - const baseValue = overrideValue || isInheritedDynamic ? null : inheritedValue;
1849 - return {
1850 - propValue,
1851 - baseValue
1852 - };
1853 -}
1854 -
1855 -// Temp solution: when removing an override on a dynamic value, fall back to propType.default
1856 -// instead of null, since we don't have placeholder support for dynamics yet.
1857 -function getTempNewValueForDynamicProp(propType, propValue, newPropValue) {
1858 - const isRemovingOverride = newPropValue === null;
1859 - if (isRemovingOverride && (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.isDynamicPropValue)(propValue)) {
1860 - return propType.default ?? null;
1861 - }
1862 - return newPropValue;
1863 -}
1864 -function createOverrideValue({
1865 - matchingOverride,
1866 - overrideKey,
1867 - overrideValue,
1868 - componentId
1869 -}) {
1870 - const overridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_8__.componentOverridablePropTypeUtil.extract(matchingOverride);
1871 - const newOverridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_8__.componentOverridablePropTypeUtil.extract(overrideValue);
1872 - const anyOverridable = newOverridableValue ?? overridableValue;
1873 - if (anyOverridable) {
1874 - const innerOverride = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_5__.componentInstanceOverridePropTypeUtil.create({
1875 - override_key: overrideKey,
1876 - override_value: (0,_utils_resolve_override_prop_value__WEBPACK_IMPORTED_MODULE_15__.resolveOverridePropValue)(overrideValue),
1877 - schema_source: {
1878 - type: 'component',
1879 - id: componentId
1880 - }
1881 - });
1882 - return _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_8__.componentOverridablePropTypeUtil.create({
1883 - override_key: anyOverridable.override_key,
1884 - origin_value: innerOverride
1885 - });
1886 - }
1887 - return _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_5__.componentInstanceOverridePropTypeUtil.create({
1888 - override_key: overrideKey,
1889 - override_value: overrideValue,
1890 - schema_source: {
1891 - type: 'component',
1892 - id: componentId
1893 - }
1894 - });
1895 -}
1896 -function getControlParams(controls, originPropFields, label) {
1897 - const control = controls[originPropFields.propKey];
1898 - const {
1899 - value
1900 - } = control;
1901 - const layout = getControlLayout(control);
1902 - const controlProps = populateChildControlProps(value.props);
1903 - if (layout === 'custom') {
1904 - controlProps.label = label ?? value.label;
1905 - }
1906 - return {
1907 - control,
1908 - controlProps,
1909 - layout
1910 - };
1911 -}
1912 -function OriginalControl({
1913 - control,
1914 - controlProps
1915 -}) {
1916 - const {
1917 - value
1918 - } = control;
1919 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.BaseControl, {
1920 - type: value.type,
1921 - props: controlProps
1922 - });
1923 -}
1924 -function getControlLayout(control) {
1925 - return control.value.meta?.layout || _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.controlsRegistry.getLayout(control.value.type);
1926 -}
1927 -function populateChildControlProps(props) {
1928 - if (props.childControlType) {
1929 - const childComponent = _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.controlsRegistry.get(props.childControlType);
1930 - const childPropType = _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.controlsRegistry.getPropTypeUtil(props.childControlType);
1931 - props = {
1932 - ...props,
1933 - childControlConfig: {
1934 - component: childComponent,
1935 - props: props.childControlProps || {},
1936 - propTypeUtil: childPropType
1937 - }
1938 - };
1939 - }
1940 - return props;
1941 -}
1942 -function isValidOverride(overridableProps, override) {
1943 - const overridableKey = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_8__.componentOverridablePropTypeUtil.isValid(override) ? override.value.origin_value?.value.override_key : override.value.override_key;
1944 - return !!overridableProps.props[overridableKey];
1945 -}
1946 -
1947 -/***/ }),
1948 -
1949 -/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/override-props-group.tsx":
1950 -/*!*****************************************************************************************************************!*\
1951 - !*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/override-props-group.tsx ***!
1952 - \*****************************************************************************************************************/
1953 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1954 -
1955 -__webpack_require__.r(__webpack_exports__);
1956 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1957 -/* harmony export */ OverridePropsGroup: function() { return /* binding */ OverridePropsGroup; }
1958 -/* harmony export */ });
1959 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1960 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1961 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
1962 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__);
1963 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
1964 -/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__);
1965 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
1966 -/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__);
1967 -/* harmony import */ var _override_prop_control__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./override-prop-control */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/override-prop-control.tsx");
1968 -
1969 -
1970 -
1971 -
1972 -
1973 -
1974 -function OverridePropsGroup({
1975 - group
1976 -}) {
1977 - const [isOpen, setIsOpen] = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__.useStateByElement)(group.id, true);
1978 - const handleClick = () => {
1979 - setIsOpen(!isOpen);
1980 - };
1981 - const id = (0,react__WEBPACK_IMPORTED_MODULE_0__.useId)();
1982 - const labelId = `label-${id}`;
1983 - const contentId = `content-${id}`;
1984 - const title = group.label;
1985 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, {
1986 - "aria-label": `${title} section`
1987 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.ListItemButton, {
1988 - id: labelId,
1989 - "aria-controls": contentId,
1990 - "aria-label": `${title} section`,
1991 - onClick: handleClick,
1992 - p: 0,
1993 - sx: {
1994 - '&:hover': {
1995 - backgroundColor: 'transparent'
1996 - }
1997 - }
1998 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Stack, {
1999 - direction: "row",
2000 - alignItems: "center",
2001 - justifyItems: "start",
2002 - flexGrow: 1,
2003 - gap: 0.5
2004 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.ListItemText, {
2005 - secondary: title,
2006 - secondaryTypographyProps: {
2007 - color: 'text.primary',
2008 - variant: 'caption',
2009 - fontWeight: 'bold'
2010 - },
2011 - sx: {
2012 - flexGrow: 0,
2013 - flexShrink: 1,
2014 - marginInlineEnd: 1
2015 - }
2016 - })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__.CollapseIcon, {
2017 - open: isOpen,
2018 - color: "secondary",
2019 - fontSize: "tiny"
2020 - })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Collapse, {
2021 - id: contentId,
2022 - "aria-labelledby": labelId,
2023 - in: isOpen,
2024 - timeout: "auto"
2025 - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Stack, {
2026 - direction: "column",
2027 - gap: 1,
2028 - p: 2
2029 - }, group.props.map(overrideKey => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_override_prop_control__WEBPACK_IMPORTED_MODULE_4__.OverridePropControl, {
2030 - key: overrideKey,
2031 - overrideKey: overrideKey
2032 - })))));
2033 -}
2034 -
2035 -/***/ }),
2036 -
2037 -/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/use-instance-panel-data.ts":
2038 -/*!*******************************************************************************************************************!*\
2039 - !*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/use-instance-panel-data.ts ***!
2040 - \*******************************************************************************************************************/
2041 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2042 -
2043 -__webpack_require__.r(__webpack_exports__);
2044 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2045 -/* harmony export */ useInstancePanelData: function() { return /* binding */ useInstancePanelData; }
2046 -/* harmony export */ });
2047 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
2048 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_0__);
2049 -/* harmony import */ var _hooks_use_sanitize_overridable_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/use-sanitize-overridable-props */ "./packages/packages/core/editor-components/src/hooks/use-sanitize-overridable-props.ts");
2050 -/* harmony import */ var _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../prop-types/component-instance-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-prop-type.ts");
2051 -/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
2052 -
2053 -
2054 -
2055 -
2056 -function useInstancePanelData() {
2057 - const {
2058 - element,
2059 - settings
2060 - } = useComponentInstanceSettings();
2061 - const componentId = settings?.component_id?.value;
2062 - const overrides = settings?.overrides?.value;
2063 - const component = (0,_store_store__WEBPACK_IMPORTED_MODULE_3__.useComponent)(componentId ?? null);
2064 - const componentInstanceId = element?.id;
2065 - const overridableProps = (0,_hooks_use_sanitize_overridable_props__WEBPACK_IMPORTED_MODULE_1__.useSanitizeOverridableProps)(componentId ?? null, componentInstanceId);
2066 - if (!componentId || !overridableProps || !component || !componentInstanceId) {
2067 - return null;
2068 - }
2069 - const isNonEmptyGroup = group => group !== null && group.props.length > 0;
2070 - const groups = overridableProps.groups.order.map(groupId => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
2071 - const isEmpty = groups.length === 0 || Object.keys(overridableProps.props).length === 0;
2072 - return {
2073 - componentId,
2074 - component,
2075 - overrides,
2076 - overridableProps,
2077 - groups,
2078 - isEmpty,
2079 - componentInstanceId
2080 - };
2081 -}
2082 -function useComponentInstanceSettings() {
2083 - const {
2084 - element,
2085 - settings
2086 - } = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_0__.useElement)();
2087 - return {
2088 - element,
2089 - settings: _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentInstancePropTypeUtil.extract(settings.component_instance)
2090 - };
2091 -}
2092 -
2093 -/***/ }),
2094 -
2095 -/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/correct-exposed-empty-override.ts":
2096 -/*!********************************************************************************************************************************!*\
2097 - !*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/correct-exposed-empty-override.ts ***!
2098 - \********************************************************************************************************************************/
2099 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2100 -
2101 -__webpack_require__.r(__webpack_exports__);
2102 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2103 -/* harmony export */ correctExposedEmptyOverride: function() { return /* binding */ correctExposedEmptyOverride; }
2104 -/* harmony export */ });
2105 -/* harmony import */ var _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../prop-types/component-overridable-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts");
2106 -
2107 -// The control receives the resolved value, so when exposing a prop that was never overridden,
2108 -// origin_value will be the resolved value instead of null.
2109 -// So here, we correct this by resetting origin_value to null.
2110 -function correctExposedEmptyOverride(newPropValue, matchingOverride) {
2111 - const newOverridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentOverridablePropTypeUtil.extract(newPropValue);
2112 - const isExposingEmptyOverride = newOverridableValue && matchingOverride === null;
2113 - if (!isExposingEmptyOverride) {
2114 - return newPropValue;
2115 - }
2116 - return _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentOverridablePropTypeUtil.create({
2117 - override_key: newOverridableValue.override_key,
2118 - origin_value: null
2119 - });
2120 -}
2121 -
2122 -/***/ }),
2123 -
2124 -/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/resolve-element-settings.ts":
2125 -/*!**************************************************************************************************************************!*\
2126 - !*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/resolve-element-settings.ts ***!
2127 - \**************************************************************************************************************************/
2128 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2129 -
2130 -__webpack_require__.r(__webpack_exports__);
2131 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2132 -/* harmony export */ applyOverridesToSettings: function() { return /* binding */ applyOverridesToSettings; },
2133 -/* harmony export */ unwrapOverridableSettings: function() { return /* binding */ unwrapOverridableSettings; }
2134 -/* harmony export */ });
2135 -/* harmony import */ var _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../prop-types/component-overridable-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts");
2136 -
2137 -function applyOverridesToSettings(elementSettings, overrides) {
2138 - const result = {};
2139 - for (const [propKey, propValue] of Object.entries(elementSettings)) {
2140 - const overridable = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentOverridablePropTypeUtil.extract(propValue);
2141 - if (!overridable) {
2142 - result[propKey] = propValue;
2143 - continue;
2144 - }
2145 - const override = overrides[overridable.override_key];
2146 - if (!override) {
2147 - result[propKey] = propValue;
2148 - continue;
2149 - }
2150 - if (override.outermostKey && override.outermostKey !== overridable.override_key) {
2151 - const originValue = overridable.origin_value;
2152 - result[propKey] = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentOverridablePropTypeUtil.create({
2153 - override_key: override.outermostKey,
2154 - origin_value: override.value ?? originValue
2155 - });
2156 - } else {
2157 - result[propKey] = override.value ?? propValue;
2158 - }
2159 - }
2160 - return result;
2161 -}
2162 -function unwrapOverridableSettings(elementSettings) {
2163 - const result = {};
2164 - for (const [propKey, propValue] of Object.entries(elementSettings)) {
2165 - const overridable = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentOverridablePropTypeUtil.extract(propValue);
2166 - if (!overridable) {
2167 - result[propKey] = propValue;
2168 - continue;
2169 - }
2170 - result[propKey] = overridable.origin_value;
2171 - }
2172 - return result;
2173 -}
2174 -
2175 -/***/ }),
2176 -
2177 -/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/use-override-dependencies.ts":
2178 -/*!***************************************************************************************************************************!*\
2179 - !*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/use-override-dependencies.ts ***!
2180 - \***************************************************************************************************************************/
2181 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2182 -
2183 -__webpack_require__.r(__webpack_exports__);
2184 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2185 -/* harmony export */ useOverrideControlDependencies: function() { return /* binding */ useOverrideControlDependencies; }
2186 -/* harmony export */ });
2187 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2188 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2189 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
2190 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__);
2191 -/* harmony import */ var _utils_resolve_override_prop_value__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/resolve-override-prop-value */ "./packages/packages/core/editor-components/src/utils/resolve-override-prop-value.ts");
2192 -
2193 -
2194 -
2195 -function useOverrideControlDependencies({
2196 - existingOverride,
2197 - resolvedElementSettings,
2198 - elementId,
2199 - elementType,
2200 - propKey
2201 -}) {
2202 - return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
2203 - const {
2204 - isDisabled,
2205 - isHidden
2206 - } = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__.extractDependencyEffect)(propKey, elementType.propsSchema, resolvedElementSettings);
2207 - const existingOverrideValue = existingOverride ? (0,_utils_resolve_override_prop_value__WEBPACK_IMPORTED_MODULE_2__.resolveOverridePropValue)(existingOverride) : null;
2208 - const settingsForDepsNewValuesCalculation = {
2209 - ...resolvedElementSettings,
2210 - [propKey]: existingOverrideValue
2211 - };
2212 - const resolvedSettingsWithDefaults = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__.getElementSettingsWithDefaults)(elementType.propsSchema, settingsForDepsNewValuesCalculation);
2213 - const dependents = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__.extractOrderedDependencies)(elementType.dependenciesPerTargetMapping ?? {});
2214 - const settingsWithDepsNewValues = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__.getUpdatedValues)({
2215 - [propKey]: existingOverrideValue
2216 - }, dependents, elementType.propsSchema, resolvedSettingsWithDefaults, elementId);
2217 - const overrideValue = settingsWithDepsNewValues[propKey];
2218 - return {
2219 - overrideValue,
2220 - isDisabled,
2221 - isHidden
2222 - };
2223 - }, [existingOverride, resolvedElementSettings, propKey, elementType.propsSchema, elementType.dependenciesPerTargetMapping, elementId]);
2224 -}
2225 -
2226 -/***/ }),
2227 -
2228 -/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/use-resolved-inner-element.ts":
2229 -/*!****************************************************************************************************************************!*\
2230 - !*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/use-resolved-inner-element.ts ***!
2231 - \****************************************************************************************************************************/
2232 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2233 -
2234 -__webpack_require__.r(__webpack_exports__);
2235 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2236 -/* harmony export */ useResolvedInnerElement: function() { return /* binding */ useResolvedInnerElement; }
2237 -/* harmony export */ });
2238 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2239 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2240 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
2241 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__);
2242 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
2243 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_2__);
2244 -/* harmony import */ var _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../prop-types/component-instance-override-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts");
2245 -/* harmony import */ var _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../prop-types/component-overridable-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts");
2246 -/* harmony import */ var _provider_component_instance_context__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../provider/component-instance-context */ "./packages/packages/core/editor-components/src/provider/component-instance-context.tsx");
2247 -/* harmony import */ var _utils_resolve_overrides_chain__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../utils/resolve-overrides-chain */ "./packages/packages/core/editor-components/src/utils/resolve-overrides-chain.ts");
2248 -/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../errors */ "./packages/packages/core/editor-components/src/components/errors.ts");
2249 -/* harmony import */ var _resolve_element_settings__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./resolve-element-settings */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/resolve-element-settings.ts");
2250 -
2251 -
2252 -
2253 -
2254 -
2255 -
2256 -
2257 -
2258 -
2259 -function useResolvedInnerElement(overridableProp) {
2260 - const componentInstanceElement = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__.useElement)();
2261 - const componentId = (0,_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_5__.useComponentId)();
2262 - const overrides = (0,_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_5__.useComponentInstanceOverrides)();
2263 - const {
2264 - elementId: originElementId,
2265 - widgetType,
2266 - elType
2267 - } = overridableProp.originPropFields ?? overridableProp;
2268 - const type = elType === 'widget' ? widgetType : elType;
2269 - const elementType = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_2__.getElementType)(type);
2270 - if (!elementType) {
2271 - throw new Error(`Element type not found for ${type}`);
2272 - }
2273 - const {
2274 - elementId,
2275 - overridesMapping
2276 - } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
2277 - const overridesChainResult = (0,_utils_resolve_overrides_chain__WEBPACK_IMPORTED_MODULE_6__.resolveOverridesChain)({
2278 - outerOverridableProp: overridableProp,
2279 - outerInstanceId: componentInstanceElement.element.id
2280 - });
2281 - if (overridesChainResult.isChainBroken) {
2282 - throw new _errors__WEBPACK_IMPORTED_MODULE_7__.OverrideControlInnerElementNotFoundError({
2283 - context: {
2284 - componentId,
2285 - elementId: originElementId
2286 - }
2287 - });
2288 - }
2289 - return {
2290 - elementId: overridesChainResult.innerElement.id,
2291 - overridesMapping: overridesChainResult.overridesMapping
2292 - };
2293 - }, [overridableProp, componentInstanceElement.element.id, componentId, originElementId]);
2294 -
2295 - // Not reactive to inner element store changes — intentional.
2296 - // Inner element settings can only change in component edit mode, which unmounts this component.
2297 - const settingsWithInnerOverrides = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
2298 - const settings = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_2__.getElementSettings)(elementId, Object.keys(elementType?.propsSchema ?? {}));
2299 - return (0,_resolve_element_settings__WEBPACK_IMPORTED_MODULE_8__.applyOverridesToSettings)(settings, overridesMapping);
2300 - }, [elementId, elementType?.propsSchema, overridesMapping]);
2301 - const resolvedElementSettings = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
2302 - const withAllOverrides = (0,_resolve_element_settings__WEBPACK_IMPORTED_MODULE_8__.applyOverridesToSettings)(settingsWithInnerOverrides, formatOverridesToApply(overrides));
2303 - return (0,_resolve_element_settings__WEBPACK_IMPORTED_MODULE_8__.unwrapOverridableSettings)(withAllOverrides);
2304 - }, [settingsWithInnerOverrides, overrides]);
2305 - return {
2306 - elementId,
2307 - elementType,
2308 - resolvedOriginValues: settingsWithInnerOverrides,
2309 - resolvedElementSettings
2310 - };
2311 -}
2312 -function formatOverridesToApply(overrides) {
2313 - if (!overrides) {
2314 - return {};
2315 - }
2316 - const result = {};
2317 - for (const item of overrides) {
2318 - const overridable = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_4__.componentOverridablePropTypeUtil.extract(item);
2319 - let override = item;
2320 - if (overridable) {
2321 - override = overridable.origin_value;
2322 - }
2323 - const extractedOverride = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_3__.componentInstanceOverridePropTypeUtil.extract(override);
2324 - if (!extractedOverride) {
2325 - continue;
2326 - }
2327 - result[extractedOverride.override_key] = {
2328 - value: extractedOverride.override_value
2329 - };
2330 - }
2331 - return result;
2332 -}
2333 -
2334 -/***/ }),
2335 -
2336 -/***/ "./packages/packages/core/editor-components/src/components/load-template-components.tsx":
2337 -/*!**********************************************************************************************!*\
2338 - !*** ./packages/packages/core/editor-components/src/components/load-template-components.tsx ***!
2339 - \**********************************************************************************************/
2340 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2341 -
2342 -__webpack_require__.r(__webpack_exports__);
2343 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2344 -/* harmony export */ LoadTemplateComponents: function() { return /* binding */ LoadTemplateComponents; }
2345 -/* harmony export */ });
2346 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2347 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2348 -/* harmony import */ var _elementor_editor_templates__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-templates */ "@elementor/editor-templates");
2349 -/* harmony import */ var _elementor_editor_templates__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_templates__WEBPACK_IMPORTED_MODULE_1__);
2350 -/* harmony import */ var _store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../store/actions/load-components-assets */ "./packages/packages/core/editor-components/src/store/actions/load-components-assets.ts");
2351 -
2352 -
2353 -
2354 -
2355 -const LoadTemplateComponents = () => {
2356 - if ((0,_elementor_editor_templates__WEBPACK_IMPORTED_MODULE_1__.isHandlingTemplateStyles)()) {
2357 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(LoadTemplateComponentsInternal, null);
2358 - }
2359 - return null;
2360 -};
2361 -function LoadTemplateComponentsInternal() {
2362 - const templates = (0,_elementor_editor_templates__WEBPACK_IMPORTED_MODULE_1__.useLoadedTemplates)();
2363 - (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
2364 - (0,_store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_2__.loadComponentsAssets)(templates.flatMap(elements => elements ?? []));
2365 - }, [templates]);
2366 - return null;
2367 -}
2368 -
2369 -/***/ }),
2370 -
2371 -/***/ "./packages/packages/core/editor-components/src/consts.ts":
2372 -/*!****************************************************************!*\
2373 - !*** ./packages/packages/core/editor-components/src/consts.ts ***!
2374 - \****************************************************************/
2375 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2376 -
2377 -__webpack_require__.r(__webpack_exports__);
2378 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2379 -/* harmony export */ COMPONENT_WIDGET_TYPE: function() { return /* binding */ COMPONENT_WIDGET_TYPE; }
2380 -/* harmony export */ });
2381 -const COMPONENT_WIDGET_TYPE = 'e-component';
2382 -
2383 -/***/ }),
2384 -
2385 -/***/ "./packages/packages/core/editor-components/src/create-component-type.ts":
2386 -/*!*******************************************************************************!*\
2387 - !*** ./packages/packages/core/editor-components/src/create-component-type.ts ***!
2388 - \*******************************************************************************/
2389 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2390 -
2391 -__webpack_require__.r(__webpack_exports__);
2392 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2393 -/* harmony export */ COMPONENT_WIDGET_TYPE: function() { return /* binding */ COMPONENT_WIDGET_TYPE; },
2394 -/* harmony export */ createComponentType: function() { return /* binding */ createComponentType; }
2395 -/* harmony export */ });
2396 -/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-canvas */ "@elementor/editor-canvas");
2397 -/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__);
2398 -/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
2399 -/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_1__);
2400 -/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-notifications */ "@elementor/editor-notifications");
2401 -/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_2__);
2402 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
2403 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_3__);
2404 -/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @elementor/utils */ "@elementor/utils");
2405 -/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_elementor_utils__WEBPACK_IMPORTED_MODULE_4__);
2406 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
2407 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__);
2408 -/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./api */ "./packages/packages/core/editor-components/src/api.ts");
2409 -/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
2410 -/* harmony import */ var _utils_detach_component_instance__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/detach-component-instance */ "./packages/packages/core/editor-components/src/utils/detach-component-instance/index.ts");
2411 -/* harmony import */ var _utils_format_component_elements_id__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils/format-component-elements-id */ "./packages/packages/core/editor-components/src/utils/format-component-elements-id.ts");
2412 -/* harmony import */ var _utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils/is-pro-components-supported */ "./packages/packages/core/editor-components/src/utils/is-pro-components-supported.ts");
2413 -/* harmony import */ var _utils_switch_to_component__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils/switch-to-component */ "./packages/packages/core/editor-components/src/utils/switch-to-component.ts");
2414 -/* harmony import */ var _utils_tracking__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/tracking */ "./packages/packages/core/editor-components/src/utils/tracking.ts");
2415 -
2416 -
2417 -
2418 -
2419 -
2420 -
2421 -
2422 -
2423 -
2424 -
2425 -
2426 -
2427 -
2428 -const COMPONENT_WIDGET_TYPE = 'e-component';
2429 -const EDIT_COMPONENT_DB_CLICK_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-Instance-edit-canvas-double-click/';
2430 -const EDIT_COMPONENT_CONTEXT_MENU_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-Instance-edit-context-menu/';
2431 -const UPDATE_PLUGINS_URL = '/wp-admin/plugins.php';
2432 -const COMPONENT_EDIT_UPGRADE_NOTIFICATION_ID = 'component-edit-upgrade';
2433 -const COMPONENT_EDIT_UPDATE_NOTIFICATION_ID = 'component-edit-update';
2434 -const COMPONENT_EDIT_UPGRADE_AUTO_HIDE_DURATION = 2000;
2435 -function notifyComponentEditUpgrade() {
2436 - (0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_2__.notify)({
2437 - type: 'promotion',
2438 - id: COMPONENT_EDIT_UPGRADE_NOTIFICATION_ID,
2439 - message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Editing components requires an active Pro subscription.', 'elementor'),
2440 - autoHideDuration: COMPONENT_EDIT_UPGRADE_AUTO_HIDE_DURATION,
2441 - additionalActionProps: [{
2442 - size: 'small',
2443 - variant: 'contained',
2444 - color: 'promotion',
2445 - href: EDIT_COMPONENT_DB_CLICK_UPGRADE_URL,
2446 - target: '_blank',
2447 - children: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Upgrade Now', 'elementor')
2448 - }]
2449 - });
2450 -}
2451 -function notifyComponentEditUpdate() {
2452 - (0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_2__.notify)({
2453 - type: 'info',
2454 - id: COMPONENT_EDIT_UPDATE_NOTIFICATION_ID,
2455 - message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('To edit components, update Elementor Pro to the latest version.', 'elementor'),
2456 - additionalActionProps: [{
2457 - size: 'small',
2458 - variant: 'contained',
2459 - color: 'info',
2460 - href: UPDATE_PLUGINS_URL,
2461 - target: '_blank',
2462 - children: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Update Now', 'elementor')
2463 - }]
2464 - });
2465 -}
2466 -const updateGroups = (groups, config) => {
2467 - const disableMap = new Map(Object.entries(config.disable ?? {}));
2468 - const addMap = new Map(Object.entries(config.add ?? {}));
2469 - return groups.map(group => {
2470 - const disabledActions = disableMap.get(group.name) ?? [];
2471 - const addConfig = addMap.get(group.name);
2472 -
2473 - // Update disabled actions
2474 - const updatedActions = group.actions.map(action => disabledActions.includes(action.name) ? {
2475 - ...action,
2476 - isEnabled: () => false
2477 - } : action);
2478 -
2479 - // Insert additional actions if needed
2480 - if (addConfig) {
2481 - updatedActions.splice(addConfig.index, 0, ...addConfig.actions);
2482 - }
2483 - return {
2484 - ...group,
2485 - actions: updatedActions
2486 - };
2487 - });
2488 -};
2489 -function createComponentType(options) {
2490 - const legacyWindow = window;
2491 - const WidgetType = legacyWindow.elementor.modules.elements.types.Widget;
2492 - const view = createComponentView({
2493 - ...options
2494 - });
2495 - return class extends WidgetType {
2496 - getType() {
2497 - return options.type;
2498 - }
2499 - getView() {
2500 - return view;
2501 - }
2502 - getModel() {
2503 - return createComponentModel();
2504 - }
2505 - };
2506 -}
2507 -function createComponentView(options) {
2508 - const legacyWindow = window;
2509 - return class extends (0,_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__.createTemplatedElementView)(options) {
2510 - eventsManagerConfig = legacyWindow.elementorCommon.eventsManager.config;
2511 - #componentRenderContext;
2512 - isComponentCurrentlyEdited() {
2513 - const currentDocument = (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_1__.getCurrentDocument)();
2514 - return currentDocument?.id === this.getComponentId();
2515 - }
2516 - getRenderContext() {
2517 - const namespaceKey = this.getNamespaceKey();
2518 - const parentContext = this._parent?.getRenderContext?.();
2519 - const parentComponentContext = parentContext?.[namespaceKey];
2520 - if (!this.#componentRenderContext) {
2521 - return parentContext;
2522 - }
2523 - const ownOverrides = this.#componentRenderContext.overrides ?? {};
2524 - const parentOverrides = parentComponentContext?.overrides ?? {};
2525 - return {
2526 - ...parentContext,
2527 - [namespaceKey]: {
2528 - overrides: {
2529 - ...parentOverrides,
2530 - ...ownOverrides
2531 - }
2532 - }
2533 - };
2534 - }
2535 - getResolverRenderContext() {
2536 - const namespaceKey = this.getNamespaceKey();
2537 - const context = this.getRenderContext();
2538 - const ownContext = context?.[namespaceKey];
2539 - if (!ownContext) {
2540 - return this._parent?.getResolverRenderContext?.();
2541 - }
2542 - const parentResolverContext = this._parent?.getResolverRenderContext?.();
2543 - return {
2544 - ...parentResolverContext,
2545 - ...ownContext
2546 - };
2547 - }
2548 - afterSettingsResolve(settings) {
2549 - const componentInstance = settings.component_instance;
2550 - if (componentInstance) {
2551 - this.#componentRenderContext = {
2552 - overrides: componentInstance.overrides ?? {}
2553 - };
2554 - const instanceId = this.model.get('id');
2555 - const elements = componentInstance.elements ?? [];
2556 - const formattedElements = (0,_utils_format_component_elements_id__WEBPACK_IMPORTED_MODULE_9__.formatComponentElementsId)(elements, [instanceId]);
2557 - this.collection = legacyWindow.elementor.createBackboneElementsCollection(formattedElements);
2558 - this.collection.models.forEach(setInactiveRecursively);
2559 - settings.component_instance = '<template data-children-placeholder></template>';
2560 - }
2561 - return settings;
2562 - }
2563 - getDomElement() {
2564 - // Component does not have a DOM element, so we return the first child's DOM element.
2565 - return this.children.findByIndex(0)?.getDomElement() ?? this.$el;
2566 - }
2567 - attachBuffer(collectionView, buffer) {
2568 - const childrenPlaceholder = collectionView.$el.find('[data-children-placeholder]').get(0);
2569 - if (!childrenPlaceholder) {
2570 - super.attachBuffer(collectionView, buffer);
2571 - return;
2572 - }
2573 - childrenPlaceholder.replaceWith(buffer);
2574 - }
2575 - getComponentId() {
2576 - const componentInstance = this.options?.model?.get('settings')?.get('component_instance')?.value;
2577 - return componentInstance.component_id.value;
2578 - }
2579 - getContextMenuGroups() {
2580 - const filteredGroups = super.getContextMenuGroups().filter(group => group.name !== 'save');
2581 - const componentId = this.getComponentId();
2582 - if (!componentId) {
2583 - return filteredGroups;
2584 - }
2585 - const newGroups = updateGroups(filteredGroups, this._getContextMenuConfig());
2586 - return newGroups;
2587 - }
2588 - _getContextMenuConfig() {
2589 - const isAdministrator = isUserAdministrator();
2590 - const hasPro = (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_4__.hasProInstalled)();
2591 - const isOutdated = (0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_10__.isProOutdatedForComponents)();
2592 - const showPromoBadge = !hasPro && !isOutdated;
2593 - const badgeClass = 'elementor-context-menu-list__item__shortcut__promotion-badge';
2594 - const proBadge = `<a href="${EDIT_COMPONENT_CONTEXT_MENU_UPGRADE_URL}" target="_blank" onclick="event.stopPropagation()" class="${badgeClass}"><i class="eicon-upgrade-crown"></i></a>`;
2595 - const editComponentAction = {
2596 - name: 'edit component',
2597 - icon: 'eicon-edit',
2598 - title: () => (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Edit Component', 'elementor'),
2599 - ...(showPromoBadge && {
2600 - shortcut: proBadge,
2601 - hasShortcutAction: true
2602 - }),
2603 - isEnabled: () => (0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_10__.isProComponentsSupported)() || isOutdated,
2604 - callback: (_, eventData) => this.editComponent(eventData)
2605 - };
2606 - const detachInstanceAction = {
2607 - name: 'detach instance',
2608 - icon: 'eicon-chain-broken',
2609 - title: () => (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Detach from Component', 'elementor'),
2610 - isEnabled: () => true,
2611 - callback: (_, eventData) => this.detachInstance(eventData)
2612 - };
2613 - const actions = isAdministrator ? [editComponentAction, detachInstanceAction] : [detachInstanceAction];
2614 - const addedGroup = {
2615 - general: {
2616 - index: 1,
2617 - actions
2618 - }
2619 - };
2620 - const disabledGroup = {
2621 - clipboard: ['pasteStyle', 'resetStyle']
2622 - };
2623 - return {
2624 - add: addedGroup,
2625 - disable: disabledGroup
2626 - };
2627 - }
2628 - async switchDocument() {
2629 - //todo: handle unpublished
2630 - const {
2631 - isAllowedToSwitchDocument,
2632 - lockedBy
2633 - } = await _api__WEBPACK_IMPORTED_MODULE_6__.apiClient.getComponentLockStatus(this.getComponentId());
2634 - if (!isAllowedToSwitchDocument) {
2635 - options.showLockedByModal?.(lockedBy || '');
2636 - } else {
2637 - (0,_utils_switch_to_component__WEBPACK_IMPORTED_MODULE_11__.switchToComponent)(this.getComponentId(), this.model.get('id'), this.el);
2638 - }
2639 - }
2640 - editComponent({
2641 - trigger,
2642 - location,
2643 - secondaryLocation
2644 - }) {
2645 - if ((0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_10__.isProOutdatedForComponents)()) {
2646 - notifyComponentEditUpdate();
2647 - return;
2648 - }
2649 - if (!(0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_10__.isProComponentsSupported)() || this.isComponentCurrentlyEdited()) {
2650 - return;
2651 - }
2652 - this.switchDocument();
2653 - const editorSettings = this.model.get('editor_settings');
2654 - (0,_utils_tracking__WEBPACK_IMPORTED_MODULE_12__.trackComponentEvent)({
2655 - action: 'edited',
2656 - executedBy: 'user',
2657 - component_uid: editorSettings?.component_uid,
2658 - component_name: editorSettings?.title,
2659 - location,
2660 - secondary_location: secondaryLocation,
2661 - trigger
2662 - });
2663 - }
2664 - detachInstance({
2665 - trigger,
2666 - location,
2667 - secondaryLocation
2668 - }) {
2669 - const componentId = this.getComponentId();
2670 - const instanceId = this.model.get('id');
2671 - if (!componentId || !instanceId) {
2672 - return;
2673 - }
2674 - const handleConfirm = async () => {
2675 - try {
2676 - await (0,_utils_detach_component_instance__WEBPACK_IMPORTED_MODULE_8__.detachComponentInstance)({
2677 - instanceId,
2678 - componentId,
2679 - trackingInfo: {
2680 - location,
2681 - secondaryLocation,
2682 - trigger
2683 - }
2684 - });
2685 - } catch {
2686 - (0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_2__.notify)({
2687 - type: 'error',
2688 - message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Failed to detach component instance.', 'elementor'),
2689 - id: 'detach-component-instance-failed'
2690 - });
2691 - }
2692 - };
2693 - options.showDetachConfirmDialog?.(handleConfirm);
2694 - }
2695 - handleDblClick(e) {
2696 - e.stopPropagation();
2697 - if (!isUserAdministrator()) {
2698 - return;
2699 - }
2700 - if ((0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_10__.isProOutdatedForComponents)()) {
2701 - notifyComponentEditUpdate();
2702 - return;
2703 - }
2704 - if (!(0,_elementor_utils__WEBPACK_IMPORTED_MODULE_4__.hasProInstalled)()) {
2705 - notifyComponentEditUpgrade();
2706 - return;
2707 - }
2708 - const {
2709 - triggers,
2710 - locations,
2711 - secondaryLocations
2712 - } = this.eventsManagerConfig;
2713 - this.editComponent({
2714 - trigger: triggers.doubleClick,
2715 - location: locations.canvas,
2716 - secondaryLocation: secondaryLocations.canvasElement
2717 - });
2718 - }
2719 - events() {
2720 - return {
2721 - ...super.events(),
2722 - dblclick: this.handleDblClick
2723 - };
2724 - }
2725 - attributes() {
2726 - return {
2727 - ...super.attributes(),
2728 - 'data-elementor-id': this.getComponentId()
2729 - };
2730 - }
2731 - };
2732 -}
2733 -function setInactiveRecursively(model) {
2734 - const editSettings = model.get('editSettings');
2735 - if (editSettings) {
2736 - editSettings.set('inactive', true);
2737 - }
2738 - const elements = model.get('elements');
2739 - if (elements) {
2740 - elements.forEach(childModel => {
2741 - setInactiveRecursively(childModel);
2742 - });
2743 - }
2744 -}
2745 -function isUserAdministrator() {
2746 - const legacyWindow = window;
2747 - return legacyWindow.elementor.config?.user?.is_administrator ?? false;
2748 -}
2749 -function createComponentModel() {
2750 - const legacyWindow = window;
2751 - const WidgetType = legacyWindow.elementor.modules.elements.types.Widget;
2752 - const widgetTypeInstance = new WidgetType();
2753 - const BaseWidgetModel = widgetTypeInstance.getModel();
2754 - return BaseWidgetModel.extend({
2755 - initialize(attributes, options) {
2756 - BaseWidgetModel.prototype.initialize.call(this, attributes, options);
2757 - const componentInstance = this.get('settings')?.get('component_instance');
2758 - if (componentInstance?.value) {
2759 - const componentId = componentInstance.value.component_id?.value;
2760 - if (componentId && typeof componentId === 'number') {
2761 - this.set('componentId', componentId);
2762 - }
2763 - }
2764 - this.set('isGlobal', true);
2765 - },
2766 - getTitle() {
2767 - const editorSettings = this.get('editor_settings');
2768 - const instanceTitle = editorSettings?.title;
2769 - if (instanceTitle) {
2770 - return instanceTitle;
2771 - }
2772 - const componentUid = editorSettings?.component_uid;
2773 - if (componentUid) {
2774 - const component = (0,_store_store__WEBPACK_IMPORTED_MODULE_7__.selectComponentByUid)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_3__.__getState)(), componentUid);
2775 - if (component?.name) {
2776 - return component.name;
2777 - }
2778 - }
2779 - return window.elementor.getElementData(this).title;
2780 - },
2781 - getComponentId() {
2782 - return this.get('componentId') || null;
2783 - },
2784 - getComponentName() {
2785 - return this.getTitle();
2786 - },
2787 - getComponentUid() {
2788 - const editorSettings = this.get('editor_settings');
2789 - return editorSettings?.component_uid || null;
2790 - }
2791 - });
2792 -}
2793 -
2794 -/***/ }),
2795 -
2796 -/***/ "./packages/packages/core/editor-components/src/hooks/use-components-permissions.ts":
2797 -/*!******************************************************************************************!*\
2798 - !*** ./packages/packages/core/editor-components/src/hooks/use-components-permissions.ts ***!
2799 - \******************************************************************************************/
2800 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2801 -
2802 -__webpack_require__.r(__webpack_exports__);
2803 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2804 -/* harmony export */ useComponentsPermissions: function() { return /* binding */ useComponentsPermissions; }
2805 -/* harmony export */ });
2806 -/* harmony import */ var _elementor_editor_current_user__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-current-user */ "@elementor/editor-current-user");
2807 -/* harmony import */ var _elementor_editor_current_user__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_current_user__WEBPACK_IMPORTED_MODULE_0__);
2808 -
2809 -const useComponentsPermissions = () => {
2810 - const {
2811 - isAdmin
2812 - } = (0,_elementor_editor_current_user__WEBPACK_IMPORTED_MODULE_0__.useCurrentUserCapabilities)();
2813 - return {
2814 - canCreate: isAdmin,
2815 - canEdit: isAdmin,
2816 - canDelete: isAdmin,
2817 - canRename: isAdmin
2818 - };
2819 -};
2820 -
2821 -/***/ }),
2822 -
2823 -/***/ "./packages/packages/core/editor-components/src/hooks/use-components.ts":
2824 -/*!******************************************************************************!*\
2825 - !*** ./packages/packages/core/editor-components/src/hooks/use-components.ts ***!
2826 - \******************************************************************************/
2827 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2828 -
2829 -__webpack_require__.r(__webpack_exports__);
2830 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2831 -/* harmony export */ useComponents: function() { return /* binding */ useComponents; }
2832 -/* harmony export */ });
2833 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
2834 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
2835 -/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
2836 -
2837 -
2838 -const useComponents = () => {
2839 - const components = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(_store_store__WEBPACK_IMPORTED_MODULE_1__.selectComponents);
2840 - const isLoading = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(_store_store__WEBPACK_IMPORTED_MODULE_1__.selectLoadIsPending);
2841 - return {
2842 - components,
2843 - isLoading
2844 - };
2845 -};
2846 -
2847 -/***/ }),
2848 -
2849 -/***/ "./packages/packages/core/editor-components/src/hooks/use-controls-by-widget-type.ts":
2850 -/*!*******************************************************************************************!*\
2851 - !*** ./packages/packages/core/editor-components/src/hooks/use-controls-by-widget-type.ts ***!
2852 - \*******************************************************************************************/
2853 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2854 -
2855 -__webpack_require__.r(__webpack_exports__);
2856 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2857 -/* harmony export */ useControlsByWidgetType: function() { return /* binding */ useControlsByWidgetType; }
2858 -/* harmony export */ });
2859 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
2860 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__);
2861 -
2862 -function useControlsByWidgetType(type) {
2863 - const elementType = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.getElementType)(type);
2864 - if (!elementType) {
2865 - return {};
2866 - }
2867 - const controls = iterateControls(elementType.controls);
2868 - return getControlsByBind(controls);
2869 -}
2870 -function iterateControls(controls) {
2871 - return controls.map(control => {
2872 - if (control.type === 'control' && 'bind' in control.value) {
2873 - return control;
2874 - }
2875 - if (control.type === 'section') {
2876 - return iterateControls(control.value.items);
2877 - }
2878 - return null;
2879 - }).filter(Boolean).flat();
2880 -}
2881 -function getControlsByBind(controls) {
2882 - return controls.reduce((controlsByBind, control) => ({
2883 - ...controlsByBind,
2884 - [control.value.bind]: control
2885 - }), {});
2886 -}
2887 -
2888 -/***/ }),
2889 -
2890 -/***/ "./packages/packages/core/editor-components/src/hooks/use-sanitize-overridable-props.ts":
2891 -/*!**********************************************************************************************!*\
2892 - !*** ./packages/packages/core/editor-components/src/hooks/use-sanitize-overridable-props.ts ***!
2893 - \**********************************************************************************************/
2894 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2895 -
2896 -__webpack_require__.r(__webpack_exports__);
2897 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2898 -/* harmony export */ useSanitizeOverridableProps: function() { return /* binding */ useSanitizeOverridableProps; }
2899 -/* harmony export */ });
2900 -/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
2901 -/* harmony import */ var _utils_filter_valid_overridable_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/filter-valid-overridable-props */ "./packages/packages/core/editor-components/src/utils/filter-valid-overridable-props.ts");
2902 -
2903 -
2904 -function useSanitizeOverridableProps(componentId, instanceElementId) {
2905 - const overridableProps = (0,_store_store__WEBPACK_IMPORTED_MODULE_0__.useOverridableProps)(componentId);
2906 - const isSanitized = (0,_store_store__WEBPACK_IMPORTED_MODULE_0__.useIsSanitizedComponent)(componentId, 'overridableProps');
2907 - if (!overridableProps || !componentId) {
2908 - return undefined;
2909 - }
2910 - if (isSanitized) {
2911 - return overridableProps;
2912 - }
2913 - return (0,_utils_filter_valid_overridable_props__WEBPACK_IMPORTED_MODULE_1__.filterValidOverridableProps)(overridableProps, instanceElementId);
2914 -}
2915 -
2916 -/***/ }),
2917 -
2918 -/***/ "./packages/packages/core/editor-components/src/init.ts":
2919 -/*!**************************************************************!*\
2920 - !*** ./packages/packages/core/editor-components/src/init.ts ***!
2921 - \**************************************************************/
2922 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2923 -
2924 -__webpack_require__.r(__webpack_exports__);
2925 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2926 -/* harmony export */ init: function() { return /* binding */ init; }
2927 -/* harmony export */ });
2928 -/* harmony import */ var _elementor_editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor */ "@elementor/editor");
2929 -/* harmony import */ var _elementor_editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor__WEBPACK_IMPORTED_MODULE_0__);
2930 -/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-canvas */ "@elementor/editor-canvas");
2931 -/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1__);
2932 -/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
2933 -/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_2__);
2934 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
2935 -/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_3__);
2936 -/* harmony import */ var _elementor_editor_elements_panel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @elementor/editor-elements-panel */ "@elementor/editor-elements-panel");
2937 -/* harmony import */ var _elementor_editor_elements_panel__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements_panel__WEBPACK_IMPORTED_MODULE_4__);
2938 -/* harmony import */ var _elementor_editor_embedded_documents_manager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @elementor/editor-embedded-documents-manager */ "@elementor/editor-embedded-documents-manager");
2939 -/* harmony import */ var _elementor_editor_embedded_documents_manager__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_embedded_documents_manager__WEBPACK_IMPORTED_MODULE_5__);
2940 -/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
2941 -/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_6__);
2942 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
2943 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_7__);
2944 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
2945 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_8__);
2946 -/* harmony import */ var _component_instance_transformer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./component-instance-transformer */ "./packages/packages/core/editor-components/src/component-instance-transformer.ts");
2947 -/* harmony import */ var _component_overridable_transformer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./component-overridable-transformer */ "./packages/packages/core/editor-components/src/component-overridable-transformer.ts");
2948 -/* harmony import */ var _component_override_transformer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./component-override-transformer */ "./packages/packages/core/editor-components/src/component-override-transformer.ts");
2949 -/* harmony import */ var _components_components_tab_components__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/components-tab/components */ "./packages/packages/core/editor-components/src/components/components-tab/components.tsx");
2950 -/* harmony import */ var _components_detach_instance_confirmation_dialog__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/detach-instance-confirmation-dialog */ "./packages/packages/core/editor-components/src/components/detach-instance-confirmation-dialog.tsx");
2951 -/* harmony import */ var _components_in_edit_mode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/in-edit-mode */ "./packages/packages/core/editor-components/src/components/in-edit-mode.tsx");
2952 -/* harmony import */ var _components_instance_editing_panel_instance_editing_panel__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/instance-editing-panel/instance-editing-panel */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-editing-panel.tsx");
2953 -/* harmony import */ var _components_load_template_components__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/load-template-components */ "./packages/packages/core/editor-components/src/components/load-template-components.tsx");
2954 -/* harmony import */ var _create_component_type__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./create-component-type */ "./packages/packages/core/editor-components/src/create-component-type.ts");
2955 -/* harmony import */ var _populate_store__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./populate-store */ "./packages/packages/core/editor-components/src/populate-store.ts");
2956 -/* harmony import */ var _prevent_circular_nesting__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./prevent-circular-nesting */ "./packages/packages/core/editor-components/src/prevent-circular-nesting.ts");
2957 -/* harmony import */ var _store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./store/actions/load-components-assets */ "./packages/packages/core/editor-components/src/store/actions/load-components-assets.ts");
2958 -/* harmony import */ var _store_actions_remove_component_styles__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./store/actions/remove-component-styles */ "./packages/packages/core/editor-components/src/store/actions/remove-component-styles.ts");
2959 -/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
2960 -/* harmony import */ var _sync_before_save__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./sync/before-save */ "./packages/packages/core/editor-components/src/sync/before-save.ts");
2961 -/* harmony import */ var _sync_load_component_data_after_instance_added__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./sync/load-component-data-after-instance-added */ "./packages/packages/core/editor-components/src/sync/load-component-data-after-instance-added.ts");
2962 -
2963 -
2964 -
2965 -
2966 -
2967 -
2968 -
2969 -
2970 -
2971 -
2972 -
2973 -
2974 -
2975 -
2976 -
2977 -
2978 -
2979 -
2980 -
2981 -
2982 -
2983 -
2984 -
2985 -
2986 -
2987 -function init() {
2988 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_7__.__registerSlice)(_store_store__WEBPACK_IMPORTED_MODULE_22__.slice);
2989 - (0,_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1__.registerElementType)(_create_component_type__WEBPACK_IMPORTED_MODULE_17__.COMPONENT_WIDGET_TYPE, options => (0,_create_component_type__WEBPACK_IMPORTED_MODULE_17__.createComponentType)({
2990 - ...options,
2991 - showLockedByModal: _components_in_edit_mode__WEBPACK_IMPORTED_MODULE_14__.openEditModeDialog,
2992 - showDetachConfirmDialog: _components_detach_instance_confirmation_dialog__WEBPACK_IMPORTED_MODULE_13__.openDetachConfirmDialog
2993 - }));
2994 - window.elementorCommon.__beforeSave = _sync_before_save__WEBPACK_IMPORTED_MODULE_23__.beforeSave;
2995 - (0,_elementor_editor_elements_panel__WEBPACK_IMPORTED_MODULE_4__.injectTab)({
2996 - id: 'components',
2997 - label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_8__.__)('Components', 'elementor'),
2998 - component: _components_components_tab_components__WEBPACK_IMPORTED_MODULE_12__.Components,
2999 - position: 1
3000 - });
3001 - (0,_elementor_editor__WEBPACK_IMPORTED_MODULE_0__.injectIntoLogic)({
3002 - id: 'components-populate-store',
3003 - component: _populate_store__WEBPACK_IMPORTED_MODULE_18__.PopulateStore
3004 - });
3005 - (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_6__.registerDataHook)('after', 'editor/documents/attach-preview', () => {
3006 - const {
3007 - id,
3008 - config
3009 - } = (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_2__.getV1CurrentDocument)() ?? {};
3010 - if (!id) {
3011 - return;
3012 - }
3013 - (0,_store_actions_remove_component_styles__WEBPACK_IMPORTED_MODULE_21__.removeComponentStyles)(id);
3014 - void (0,_store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_20__.loadComponentsAssets)(config?.elements ?? []);
3015 - });
3016 - _elementor_editor_embedded_documents_manager__WEBPACK_IMPORTED_MODULE_5__.embeddedDocumentsManager.onDocumentLoad((_documentId, data) => {
3017 - void (0,_store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_20__.loadComponentsAssets)(data.elements ?? []);
3018 - });
3019 - (0,_elementor_editor__WEBPACK_IMPORTED_MODULE_0__.injectIntoLogic)({
3020 - id: 'templates',
3021 - component: _components_load_template_components__WEBPACK_IMPORTED_MODULE_16__.LoadTemplateComponents
3022 - });
3023 - (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_3__.registerEditingPanelReplacement)({
3024 - id: 'component-instance-edit-panel',
3025 - condition: (_, elementType) => elementType.key === 'e-component',
3026 - component: _components_instance_editing_panel_instance_editing_panel__WEBPACK_IMPORTED_MODULE_15__.InstanceEditingPanel
3027 - });
3028 - _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1__.settingsTransformersRegistry.register('component-instance', _component_instance_transformer__WEBPACK_IMPORTED_MODULE_9__.componentInstanceTransformer);
3029 - _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1__.settingsTransformersRegistry.register('overridable', _component_overridable_transformer__WEBPACK_IMPORTED_MODULE_10__.componentOverridableTransformer);
3030 - _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1__.settingsTransformersRegistry.register('override', _component_override_transformer__WEBPACK_IMPORTED_MODULE_11__.componentOverrideTransformer);
3031 - (0,_prevent_circular_nesting__WEBPACK_IMPORTED_MODULE_19__.initCircularNestingPrevention)();
3032 - (0,_sync_load_component_data_after_instance_added__WEBPACK_IMPORTED_MODULE_24__.initLoadComponentDataAfterInstanceAdded)();
3033 -}
3034 -
3035 -/***/ }),
3036 -
3037 -/***/ "./packages/packages/core/editor-components/src/populate-store.ts":
3038 -/*!************************************************************************!*\
3039 - !*** ./packages/packages/core/editor-components/src/populate-store.ts ***!
3040 - \************************************************************************/
3041 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3042 -
3043 -__webpack_require__.r(__webpack_exports__);
3044 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3045 -/* harmony export */ PopulateStore: function() { return /* binding */ PopulateStore; }
3046 -/* harmony export */ });
3047 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
3048 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
3049 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
3050 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_1__);
3051 -/* harmony import */ var _store_thunks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./store/thunks */ "./packages/packages/core/editor-components/src/store/thunks.ts");
3052 -
3053 -
3054 -
3055 -function PopulateStore() {
3056 - (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
3057 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__dispatch)((0,_store_thunks__WEBPACK_IMPORTED_MODULE_2__.loadComponents)());
3058 - }, []);
3059 - return null;
3060 -}
3061 -
3062 -/***/ }),
3063 -
3064 -/***/ "./packages/packages/core/editor-components/src/prevent-circular-nesting.ts":
3065 -/*!**********************************************************************************!*\
3066 - !*** ./packages/packages/core/editor-components/src/prevent-circular-nesting.ts ***!
3067 - \**********************************************************************************/
3068 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3069 -
3070 -__webpack_require__.r(__webpack_exports__);
3071 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3072 -/* harmony export */ extractComponentIdsFromElements: function() { return /* binding */ extractComponentIdsFromElements; },
3073 -/* harmony export */ initCircularNestingPrevention: function() { return /* binding */ initCircularNestingPrevention; },
3074 -/* harmony export */ wouldCreateCircularNesting: function() { return /* binding */ wouldCreateCircularNesting; }
3075 -/* harmony export */ });
3076 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
3077 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__);
3078 -/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-notifications */ "@elementor/editor-notifications");
3079 -/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__);
3080 -/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
3081 -/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__);
3082 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
3083 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_3__);
3084 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
3085 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__);
3086 -/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
3087 -
3088 -
3089 -
3090 -
3091 -
3092 -
3093 -const COMPONENT_TYPE = 'e-component';
3094 -const COMPONENT_CIRCULAR_NESTING_ALERT = {
3095 - type: 'default',
3096 - message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)("Can't add this component - components that contain each other can't be nested.", 'elementor'),
3097 - id: 'circular-component-nesting-blocked'
3098 -};
3099 -function initCircularNestingPrevention() {
3100 - (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__.blockCommand)({
3101 - command: 'document/elements/create',
3102 - condition: blockCircularCreate
3103 - });
3104 - (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__.blockCommand)({
3105 - command: 'document/elements/move',
3106 - condition: blockCircularMove
3107 - });
3108 - (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__.blockCommand)({
3109 - command: 'document/elements/paste',
3110 - condition: blockCircularPaste
3111 - });
3112 -}
3113 -
3114 -// Note that this function only checks for direct circular nesting, not indirect nesting
3115 -function wouldCreateCircularNesting(componentIdToAdd) {
3116 - if (componentIdToAdd === undefined) {
3117 - return false;
3118 - }
3119 - const state = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_3__.__getState)();
3120 - const currentComponentId = (0,_store_store__WEBPACK_IMPORTED_MODULE_5__.selectCurrentComponentId)(state);
3121 - const path = (0,_store_store__WEBPACK_IMPORTED_MODULE_5__.selectPath)(state);
3122 - if (currentComponentId === null) {
3123 - return false;
3124 - }
3125 - if (componentIdToAdd === currentComponentId) {
3126 - return true;
3127 - }
3128 - return path.some(item => item.componentId === componentIdToAdd);
3129 -}
3130 -function extractComponentIdFromModel(model) {
3131 - if (!model) {
3132 - return null;
3133 - }
3134 - const isComponent = model.widgetType === COMPONENT_TYPE;
3135 - if (!isComponent) {
3136 - return null;
3137 - }
3138 - return model.settings?.component_instance?.value?.component_id?.value ?? null;
3139 -}
3140 -function extractComponentIdFromElement(element) {
3141 - if (element.widgetType !== COMPONENT_TYPE) {
3142 - return null;
3143 - }
3144 - return element.settings?.component_instance?.value?.component_id?.value ?? null;
3145 -}
3146 -function extractComponentIdsFromElements(elements) {
3147 - const ids = [];
3148 - for (const element of elements) {
3149 - const componentId = extractComponentIdFromElement(element);
3150 - if (componentId !== null) {
3151 - ids.push(componentId);
3152 - }
3153 - if (element.elements?.length) {
3154 - ids.push(...extractComponentIdsFromElements(element.elements));
3155 - }
3156 - }
3157 - return ids;
3158 -}
3159 -function extractComponentIdFromContainer(container) {
3160 - const widgetType = container.model?.get?.('widgetType');
3161 - if (widgetType !== COMPONENT_TYPE) {
3162 - return null;
3163 - }
3164 - const settings = container.model?.get?.('settings');
3165 - const componentInstance = settings?.get?.('component_instance');
3166 - return componentInstance?.value?.component_id?.value ?? null;
3167 -}
3168 -function blockCircularCreate(args) {
3169 - const componentId = extractComponentIdFromModel(args.model);
3170 - if (componentId === null) {
3171 - return false;
3172 - }
3173 - const isBlocked = wouldCreateCircularNesting(componentId);
3174 - if (isBlocked) {
3175 - (0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__.notify)(COMPONENT_CIRCULAR_NESTING_ALERT);
3176 - }
3177 - return isBlocked;
3178 -}
3179 -function blockCircularMove(args) {
3180 - const {
3181 - containers = [args.container]
3182 - } = args;
3183 - const hasCircularComponent = containers.some(container => {
3184 - if (!container) {
3185 - return false;
3186 - }
3187 - const allElements = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.getAllDescendants)(container);
3188 - return allElements.some(element => {
3189 - const componentId = extractComponentIdFromContainer(element);
3190 - if (componentId === null) {
3191 - return false;
3192 - }
3193 - return wouldCreateCircularNesting(componentId);
3194 - });
3195 - });
3196 - if (hasCircularComponent) {
3197 - (0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__.notify)(COMPONENT_CIRCULAR_NESTING_ALERT);
3198 - }
3199 - return hasCircularComponent;
3200 -}
3201 -function blockCircularPaste(args) {
3202 - const {
3203 - storageType
3204 - } = args;
3205 - if (storageType !== 'localstorage') {
3206 - return false;
3207 - }
3208 - const data = window?.elementorCommon?.storage?.get();
3209 - if (!data?.clipboard?.elements) {
3210 - return false;
3211 - }
3212 - const allComponentIds = extractComponentIdsFromElements(data.clipboard.elements);
3213 - const hasCircularComponent = allComponentIds.some(wouldCreateCircularNesting);
3214 - if (hasCircularComponent) {
3215 - (0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__.notify)(COMPONENT_CIRCULAR_NESTING_ALERT);
3216 - }
3217 - return hasCircularComponent;
3218 -}
3219 -
3220 -/***/ }),
3221 -
3222 -/***/ "./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts":
3223 -/*!**********************************************************************************************************!*\
3224 - !*** ./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts ***!
3225 - \**********************************************************************************************************/
3226 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3227 -
3228 -__webpack_require__.r(__webpack_exports__);
3229 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3230 -/* harmony export */ componentInstanceOverridePropTypeUtil: function() { return /* binding */ componentInstanceOverridePropTypeUtil; }
3231 -/* harmony export */ });
3232 -/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props");
3233 -/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__);
3234 -/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/schema */ "@elementor/schema");
3235 -/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_schema__WEBPACK_IMPORTED_MODULE_1__);
3236 -
3237 -
3238 -const componentInstanceOverridePropTypeUtil = (0,_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.createPropUtils)('override', _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.object({
3239 - override_key: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.string(),
3240 - override_value: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.unknown(),
3241 - schema_source: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.object({
3242 - type: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.literal('component'),
3243 - id: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.number()
3244 - })
3245 -}));
3246 -
3247 -/***/ }),
3248 -
3249 -/***/ "./packages/packages/core/editor-components/src/prop-types/component-instance-overrides-prop-type.ts":
3250 -/*!***********************************************************************************************************!*\
3251 - !*** ./packages/packages/core/editor-components/src/prop-types/component-instance-overrides-prop-type.ts ***!
3252 - \***********************************************************************************************************/
3253 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3254 -
3255 -__webpack_require__.r(__webpack_exports__);
3256 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3257 -/* harmony export */ componentInstanceOverridesPropTypeUtil: function() { return /* binding */ componentInstanceOverridesPropTypeUtil; }
3258 -/* harmony export */ });
3259 -/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props");
3260 -/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__);
3261 -/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/schema */ "@elementor/schema");
3262 -/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_schema__WEBPACK_IMPORTED_MODULE_1__);
3263 -/* harmony import */ var _component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./component-instance-override-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts");
3264 -/* harmony import */ var _component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./component-overridable-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts");
3265 -
3266 -
3267 -
3268 -
3269 -const componentInstanceOverridesPropTypeUtil = (0,_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.createPropUtils)('overrides', _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.array(_elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.union([_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentInstanceOverridePropTypeUtil.schema, _component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_3__.componentOverridablePropTypeUtil.schema])).optional().default([]));
3270 -
3271 -/***/ }),
3272 -
3273 -/***/ "./packages/packages/core/editor-components/src/prop-types/component-instance-prop-type.ts":
3274 -/*!*************************************************************************************************!*\
3275 - !*** ./packages/packages/core/editor-components/src/prop-types/component-instance-prop-type.ts ***!
3276 - \*************************************************************************************************/
3277 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3278 -
3279 -__webpack_require__.r(__webpack_exports__);
3280 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3281 -/* harmony export */ componentInstancePropTypeUtil: function() { return /* binding */ componentInstancePropTypeUtil; }
3282 -/* harmony export */ });
3283 -/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props");
3284 -/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__);
3285 -/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/schema */ "@elementor/schema");
3286 -/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_schema__WEBPACK_IMPORTED_MODULE_1__);
3287 -/* harmony import */ var _component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./component-instance-overrides-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-overrides-prop-type.ts");
3288 -
3289 -
3290 -
3291 -const componentInstancePropTypeUtil = (0,_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.createPropUtils)('component-instance', _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.object({
3292 - component_id: _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.numberPropTypeUtil.schema,
3293 - overrides: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.optional(_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentInstanceOverridesPropTypeUtil.schema)
3294 -}));
3295 -
3296 -/***/ }),
3297 -
3298 -/***/ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts":
3299 -/*!****************************************************************************************************!*\
3300 - !*** ./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts ***!
3301 - \****************************************************************************************************/
3302 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3303 -
3304 -__webpack_require__.r(__webpack_exports__);
3305 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3306 -/* harmony export */ componentOverridablePropTypeUtil: function() { return /* binding */ componentOverridablePropTypeUtil; }
3307 -/* harmony export */ });
3308 -/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props");
3309 -/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__);
3310 -/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/schema */ "@elementor/schema");
3311 -/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_schema__WEBPACK_IMPORTED_MODULE_1__);
3312 -
3313 -
3314 -const componentOverridablePropTypeUtil = (0,_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.createPropUtils)('overridable', _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.object({
3315 - override_key: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.string(),
3316 - origin_value: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.object({
3317 - $$type: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.string(),
3318 - value: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.unknown()
3319 - }).nullable()
3320 -}));
3321 -
3322 -/***/ }),
3323 -
3324 -/***/ "./packages/packages/core/editor-components/src/provider/component-instance-context.tsx":
3325 -/*!**********************************************************************************************!*\
3326 - !*** ./packages/packages/core/editor-components/src/provider/component-instance-context.tsx ***!
3327 - \**********************************************************************************************/
3328 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3329 -
3330 -__webpack_require__.r(__webpack_exports__);
3331 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3332 -/* harmony export */ ComponentInstanceProvider: function() { return /* binding */ ComponentInstanceProvider; },
3333 -/* harmony export */ useComponentId: function() { return /* binding */ useComponentId; },
3334 -/* harmony export */ useComponentInstanceOverrides: function() { return /* binding */ useComponentInstanceOverrides; },
3335 -/* harmony export */ useComponentOverridableProps: function() { return /* binding */ useComponentOverridableProps; }
3336 -/* harmony export */ });
3337 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
3338 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
3339 -
3340 -
3341 -const ComponentInstanceContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);
3342 -function ComponentInstanceProvider({
3343 - children,
3344 - ...props
3345 -}) {
3346 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ComponentInstanceContext.Provider, {
3347 - value: props
3348 - }, children);
3349 -}
3350 -function useComponentInstanceContext() {
3351 - const context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ComponentInstanceContext);
3352 - if (!context) {
3353 - throw new Error('useComponentInstanceContext must be used within a ComponentInstanceProvider');
3354 - }
3355 - return context;
3356 -}
3357 -const useComponentId = () => useComponentInstanceContext().componentId;
3358 -const useComponentInstanceOverrides = () => useComponentInstanceContext().overrides;
3359 -const useComponentOverridableProps = () => useComponentInstanceContext().overridableProps;
3360 -
3361 -/***/ }),
3362 -
3363 -/***/ "./packages/packages/core/editor-components/src/provider/overridable-prop-context.tsx":
3364 -/*!********************************************************************************************!*\
3365 - !*** ./packages/packages/core/editor-components/src/provider/overridable-prop-context.tsx ***!
3366 - \********************************************************************************************/
3367 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3368 -
3369 -__webpack_require__.r(__webpack_exports__);
3370 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3371 -/* harmony export */ OverridablePropProvider: function() { return /* binding */ OverridablePropProvider; },
3372 -/* harmony export */ useComponentInstanceElement: function() { return /* binding */ useComponentInstanceElement; },
3373 -/* harmony export */ useOverridablePropValue: function() { return /* binding */ useOverridablePropValue; }
3374 -/* harmony export */ });
3375 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
3376 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
3377 -
3378 -
3379 -const OverridablePropContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);
3380 -function OverridablePropProvider({
3381 - children,
3382 - ...props
3383 -}) {
3384 - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(OverridablePropContext.Provider, {
3385 - value: props
3386 - }, children);
3387 -}
3388 -const useOverridablePropValue = () => (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(OverridablePropContext)?.value;
3389 -const useComponentInstanceElement = () => (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(OverridablePropContext)?.componentInstanceElement;
3390 -
3391 -/***/ }),
3392 -
3393 -/***/ "./packages/packages/core/editor-components/src/store/actions/load-components-assets.ts":
3394 -/*!**********************************************************************************************!*\
3395 - !*** ./packages/packages/core/editor-components/src/store/actions/load-components-assets.ts ***!
3396 - \**********************************************************************************************/
3397 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3398 -
3399 -__webpack_require__.r(__webpack_exports__);
3400 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3401 -/* harmony export */ loadComponentsAssets: function() { return /* binding */ loadComponentsAssets; }
3402 -/* harmony export */ });
3403 -/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
3404 -/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__);
3405 -/* harmony import */ var _elementor_editor_embedded_documents_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-embedded-documents-manager */ "@elementor/editor-embedded-documents-manager");
3406 -/* harmony import */ var _elementor_editor_embedded_documents_manager__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_embedded_documents_manager__WEBPACK_IMPORTED_MODULE_1__);
3407 -/* harmony import */ var _utils_get_component_documents__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/get-component-documents */ "./packages/packages/core/editor-components/src/utils/get-component-documents.ts");
3408 -/* harmony import */ var _load_components_overridable_props__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./load-components-overridable-props */ "./packages/packages/core/editor-components/src/store/actions/load-components-overridable-props.ts");
3409 -
3410 -
3411 -
3412 -
3413 -async function loadComponentsAssets(elements) {
3414 - if (!elements.length) {
3415 - return;
3416 - }
3417 - const documents = await (0,_utils_get_component_documents__WEBPACK_IMPORTED_MODULE_2__.getComponentDocuments)({
3418 - elements,
3419 - isRecursive: false
3420 - });
3421 - updateDocumentState(documents);
3422 - documents.forEach((document, id) => {
3423 - _elementor_editor_embedded_documents_manager__WEBPACK_IMPORTED_MODULE_1__.embeddedDocumentsManager.setDocument(id, document);
3424 - });
3425 - await (0,_load_components_overridable_props__WEBPACK_IMPORTED_MODULE_3__.loadComponentsOverridableProps)([...documents.keys()]);
3426 -}
3427 -function updateDocumentState(documents) {
3428 - const isDrafted = [...documents.values()].some(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.isDocumentDirty);
3429 - if (isDrafted) {
3430 - (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.setDocumentModifiedStatus)(true);
3431 - }
3432 -}
3433 -
3434 -/***/ }),
3435 -
3436 -/***/ "./packages/packages/core/editor-components/src/store/actions/load-components-overridable-props.ts":
3437 -/*!*********************************************************************************************************!*\
3438 - !*** ./packages/packages/core/editor-components/src/store/actions/load-components-overridable-props.ts ***!
3439 - \*********************************************************************************************************/
3440 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3441 -
3442 -__webpack_require__.r(__webpack_exports__);
3443 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3444 -/* harmony export */ loadComponentsOverridableProps: function() { return /* binding */ loadComponentsOverridableProps; }
3445 -/* harmony export */ });
3446 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
3447 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
3448 -/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../api */ "./packages/packages/core/editor-components/src/api.ts");
3449 -/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../store */ "./packages/packages/core/editor-components/src/store/store.ts");
3450 -
3451 -
3452 -
3453 -async function loadComponentsOverridableProps(componentIds) {
3454 - const unloadedIds = componentIds.filter(id => !(0,_store__WEBPACK_IMPORTED_MODULE_2__.selectIsOverridablePropsLoaded)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)(), id));
3455 - if (!unloadedIds.length) {
3456 - return;
3457 - }
3458 - const {
3459 - data
3460 - } = await _api__WEBPACK_IMPORTED_MODULE_1__.apiClient.getOverridableProps(unloadedIds);
3461 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_2__.slice.actions.loadOverridableProps(data));
3462 -}
3463 -
3464 -/***/ }),
3465 -
3466 -/***/ "./packages/packages/core/editor-components/src/store/actions/remove-component-styles.ts":
3467 -/*!***********************************************************************************************!*\
3468 - !*** ./packages/packages/core/editor-components/src/store/actions/remove-component-styles.ts ***!
3469 - \***********************************************************************************************/
3470 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3471 -
3472 -__webpack_require__.r(__webpack_exports__);
3473 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3474 -/* harmony export */ removeComponentStyles: function() { return /* binding */ removeComponentStyles; }
3475 -/* harmony export */ });
3476 -/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../api */ "./packages/packages/core/editor-components/src/api.ts");
3477 -
3478 -function removeComponentStyles(id) {
3479 - _api__WEBPACK_IMPORTED_MODULE_0__.apiClient.invalidateComponentConfigCache(id);
3480 -}
3481 -
3482 -/***/ }),
3483 -
3484 -/***/ "./packages/packages/core/editor-components/src/store/actions/update-overridable-prop.ts":
3485 -/*!***********************************************************************************************!*\
3486 - !*** ./packages/packages/core/editor-components/src/store/actions/update-overridable-prop.ts ***!
3487 - \***********************************************************************************************/
3488 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3489 -
3490 -__webpack_require__.r(__webpack_exports__);
3491 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3492 -/* harmony export */ updateOverridableProp: function() { return /* binding */ updateOverridableProp; }
3493 -/* harmony export */ });
3494 -/* harmony import */ var _utils_resolve_override_prop_value__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/resolve-override-prop-value */ "./packages/packages/core/editor-components/src/utils/resolve-override-prop-value.ts");
3495 -/* harmony import */ var _dispatchers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dispatchers */ "./packages/packages/core/editor-components/src/store/dispatchers.ts");
3496 -/* harmony import */ var _selectors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../selectors */ "./packages/packages/core/editor-components/src/store/selectors.ts");
3497 -
3498 -
3499 -
3500 -function updateOverridableProp(componentId, propValue, originPropFields) {
3501 - const overridableProps = _selectors__WEBPACK_IMPORTED_MODULE_2__.componentsSelectors.getOverridableProps(componentId);
3502 - if (!overridableProps) {
3503 - return;
3504 - }
3505 - const existingOverridableProp = overridableProps.props[propValue.override_key];
3506 - if (!existingOverridableProp) {
3507 - return;
3508 - }
3509 - const originValue = (0,_utils_resolve_override_prop_value__WEBPACK_IMPORTED_MODULE_0__.resolveOverridePropValue)(propValue.origin_value);
3510 - const newOverridableProp = originPropFields ? {
3511 - originValue,
3512 - originPropFields
3513 - } : {
3514 - originValue
3515 - };
3516 - const newOverridableProps = {
3517 - ...overridableProps,
3518 - props: {
3519 - ...overridableProps.props,
3520 - [existingOverridableProp.overrideKey]: {
3521 - ...existingOverridableProp,
3522 - ...newOverridableProp
3523 - }
3524 - }
3525 - };
3526 - _dispatchers__WEBPACK_IMPORTED_MODULE_1__.componentsActions.setOverridableProps(componentId, newOverridableProps);
3527 -}
3528 -
3529 -/***/ }),
3530 -
3531 -/***/ "./packages/packages/core/editor-components/src/store/dispatchers.ts":
3532 -/*!***************************************************************************!*\
3533 - !*** ./packages/packages/core/editor-components/src/store/dispatchers.ts ***!
3534 - \***************************************************************************/
3535 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3536 -
3537 -__webpack_require__.r(__webpack_exports__);
3538 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3539 -/* harmony export */ componentsActions: function() { return /* binding */ componentsActions; }
3540 -/* harmony export */ });
3541 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
3542 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
3543 -/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./store */ "./packages/packages/core/editor-components/src/store/store.ts");
3544 -
3545 -
3546 -function safeDispatch() {
3547 - return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getStore)()?.dispatch;
3548 -}
3549 -const componentsActions = {
3550 - add(components) {
3551 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.add(components));
3552 - },
3553 - load(components) {
3554 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.load(components));
3555 - },
3556 - addUnpublished(component) {
3557 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.addUnpublished(component));
3558 - },
3559 - removeUnpublished(uids) {
3560 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.removeUnpublished(uids));
3561 - },
3562 - resetUnpublished() {
3563 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.resetUnpublished());
3564 - },
3565 - addCreatedThisSession(uid) {
3566 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.addCreatedThisSession(uid));
3567 - },
3568 - removeCreatedThisSession(uid) {
3569 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.removeCreatedThisSession(uid));
3570 - },
3571 - archive(componentId) {
3572 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.archive(componentId));
3573 - },
3574 - setCurrentComponentId(id) {
3575 - safeDispatch()?.(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.setCurrentComponentId(id));
3576 - },
3577 - setPath(path) {
3578 - safeDispatch()?.(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.setPath(path));
3579 - },
3580 - setOverridableProps(componentId, overridableProps) {
3581 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.setOverridableProps({
3582 - componentId,
3583 - overridableProps
3584 - }));
3585 - },
3586 - rename(componentUid, name) {
3587 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.rename({
3588 - componentUid,
3589 - name
3590 - }));
3591 - },
3592 - cleanUpdatedComponentNames() {
3593 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.cleanUpdatedComponentNames());
3594 - },
3595 - updateComponentSanitizedAttribute(componentId, attribute) {
3596 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.updateComponentSanitizedAttribute({
3597 - componentId,
3598 - attribute
3599 - }));
3600 - },
3601 - resetSanitizedComponents() {
3602 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.resetSanitizedComponents());
3603 - }
3604 -};
3605 -
3606 -/***/ }),
3607 -
3608 -/***/ "./packages/packages/core/editor-components/src/store/extensible-slice.ts":
3609 -/*!********************************************************************************!*\
3610 - !*** ./packages/packages/core/editor-components/src/store/extensible-slice.ts ***!
3611 - \********************************************************************************/
3612 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3613 -
3614 -__webpack_require__.r(__webpack_exports__);
3615 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3616 -/* harmony export */ __resetExtraReducers: function() { return /* binding */ __resetExtraReducers; },
3617 -/* harmony export */ createComponentsAction: function() { return /* binding */ createComponentsAction; },
3618 -/* harmony export */ registerComponentsReducer: function() { return /* binding */ registerComponentsReducer; },
3619 -/* harmony export */ slice: function() { return /* binding */ slice; }
3620 -/* harmony export */ });
3621 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
3622 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
3623 -/* harmony import */ var _store_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./store-types */ "./packages/packages/core/editor-components/src/store/store-types.ts");
3624 -/* harmony import */ var _thunks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./thunks */ "./packages/packages/core/editor-components/src/store/thunks.ts");
3625 -
3626 -
3627 -
3628 -const extraReducersMap = new Map();
3629 -function registerComponentsReducer(name, reducer) {
3630 - extraReducersMap.set(`${_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME}/${name}`, reducer);
3631 -}
3632 -function createComponentsAction(name) {
3633 - const action = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createAction)(`${_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME}/${name}`);
3634 - return {
3635 - action,
3636 - register(reducer) {
3637 - registerComponentsReducer(name, reducer);
3638 - },
3639 - dispatch(payload) {
3640 - (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(action(payload));
3641 - }
3642 - };
3643 -}
3644 -function __resetExtraReducers() {
3645 - extraReducersMap.clear();
3646 -}
3647 -const baseSlice = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSlice)({
3648 - name: _store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME,
3649 - initialState: _store_types__WEBPACK_IMPORTED_MODULE_1__.initialState,
3650 - reducers: {
3651 - add: (state, {
3652 - payload
3653 - }) => {
3654 - if (Array.isArray(payload)) {
3655 - state.data = [...payload, ...state.data];
3656 - } else {
3657 - state.data.unshift(payload);
3658 - }
3659 - },
3660 - load: (state, {
3661 - payload
3662 - }) => {
3663 - state.data = payload;
3664 - },
3665 - addUnpublished: (state, {
3666 - payload
3667 - }) => {
3668 - state.unpublishedData.unshift(payload);
3669 - },
3670 - removeUnpublished: (state, {
3671 - payload
3672 - }) => {
3673 - const uidsToRemove = Array.isArray(payload) ? payload : [payload];
3674 - state.unpublishedData = state.unpublishedData.filter(component => !uidsToRemove.includes(component.uid));
3675 - },
3676 - resetUnpublished: state => {
3677 - state.unpublishedData = [];
3678 - },
3679 - addCreatedThisSession: (state, {
3680 - payload
3681 - }) => {
3682 - state.createdThisSession.push(payload);
3683 - },
3684 - removeCreatedThisSession: (state, {
3685 - payload
3686 - }) => {
3687 - state.createdThisSession = state.createdThisSession.filter(uid => uid !== payload);
3688 - },
3689 - archive: (state, {
3690 - payload
3691 - }) => {
3692 - const component = state.data.find(comp => comp.id === payload);
3693 - if (component) {
3694 - component.isArchived = true;
3695 - state.archivedThisSession.push(payload);
3696 - }
3697 - },
3698 - setCurrentComponentId: (state, {
3699 - payload
3700 - }) => {
3701 - state.currentComponentId = payload;
3702 - },
3703 - setPath: (state, {
3704 - payload
3705 - }) => {
3706 - state.path = payload;
3707 - },
3708 - setOverridableProps: (state, {
3709 - payload
3710 - }) => {
3711 - const component = state.data.find(comp => comp.id === payload.componentId);
3712 - if (!component) {
3713 - return;
3714 - }
3715 - component.overridableProps = payload.overridableProps;
3716 - },
3717 - loadOverridableProps: (state, {
3718 - payload
3719 - }) => {
3720 - const componentIds = Object.keys(payload);
3721 - componentIds.forEach(id => {
3722 - const componentId = Number(id);
3723 - const overridableProps = payload[componentId];
3724 - const component = state.data.find(comp => comp.id === componentId);
3725 - if (!component || !overridableProps) {
3726 - return;
3727 - }
3728 - component.overridableProps = overridableProps;
3729 - });
3730 - },
3731 - rename: (state, {
3732 - payload
3733 - }) => {
3734 - const component = state.data.find(comp => comp.uid === payload.componentUid);
3735 - if (!component) {
3736 - return;
3737 - }
3738 - if (component.id) {
3739 - state.updatedComponentNames[component.id] = payload.name;
3740 - }
3741 - component.name = payload.name;
3742 - },
3743 - cleanUpdatedComponentNames: state => {
3744 - state.updatedComponentNames = {};
3745 - },
3746 - updateComponentSanitizedAttribute: (state, {
3747 - payload: {
3748 - componentId,
3749 - attribute
3750 - }
3751 - }) => {
3752 - if (!state.sanitized[componentId]) {
3753 - state.sanitized[componentId] = {};
3754 - }
3755 - state.sanitized[componentId][attribute] = true;
3756 - },
3757 - resetSanitizedComponents: state => {
3758 - state.sanitized = {};
3759 - }
3760 - },
3761 - extraReducers: builder => {
3762 - builder.addCase(_thunks__WEBPACK_IMPORTED_MODULE_2__.loadComponents.fulfilled, (state, {
3763 - payload
3764 - }) => {
3765 - state.data = payload;
3766 - state.loadStatus = 'idle';
3767 - });
3768 - builder.addCase(_thunks__WEBPACK_IMPORTED_MODULE_2__.loadComponents.pending, state => {
3769 - state.loadStatus = 'pending';
3770 - });
3771 - builder.addCase(_thunks__WEBPACK_IMPORTED_MODULE_2__.loadComponents.rejected, state => {
3772 - state.loadStatus = 'error';
3773 - });
3774 - }
3775 -});
3776 -const slice = {
3777 - ...baseSlice,
3778 - reducer(state, action) {
3779 - const nextState = baseSlice.reducer(state, action);
3780 - const extraReducer = extraReducersMap.get(action.type);
3781 - if (!extraReducer || !nextState) {
3782 - return nextState;
3783 - }
3784 - const clonedState = structuredClone(nextState);
3785 - extraReducer(clonedState, action);
3786 - return clonedState;
3787 - }
3788 -};
3789 -
3790 -/***/ }),
3791 -
3792 -/***/ "./packages/packages/core/editor-components/src/store/selectors.ts":
3793 -/*!*************************************************************************!*\
3794 - !*** ./packages/packages/core/editor-components/src/store/selectors.ts ***!
3795 - \*************************************************************************/
3796 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3797 -
3798 -__webpack_require__.r(__webpack_exports__);
3799 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3800 -/* harmony export */ componentsSelectors: function() { return /* binding */ componentsSelectors; }
3801 -/* harmony export */ });
3802 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
3803 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
3804 -/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./store */ "./packages/packages/core/editor-components/src/store/store.ts");
3805 -
3806 -
3807 -function safeGetState() {
3808 - return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getStore)()?.getState();
3809 -}
3810 -const componentsSelectors = {
3811 - getOverridableProps(componentId) {
3812 - return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectOverridableProps)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)(), componentId);
3813 - },
3814 - getCurrentComponent() {
3815 - return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectCurrentComponent)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)());
3816 - },
3817 - getCurrentComponentId() {
3818 - const state = safeGetState();
3819 - if (!state) {
3820 - return null;
3821 - }
3822 - return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectCurrentComponentId)(state);
3823 - },
3824 - getUnpublishedComponents() {
3825 - return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectUnpublishedComponents)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)());
3826 - },
3827 - getUpdatedComponentNames() {
3828 - return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectUpdatedComponentNames)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)());
3829 - },
3830 - getArchivedThisSession() {
3831 - return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectArchivedThisSession)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)());
3832 - },
3833 - getCreatedThisSession() {
3834 - return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectCreatedThisSession)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)());
3835 - },
3836 - getComponents() {
3837 - return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectComponents)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)());
3838 - },
3839 - getComponentByUid(componentUid) {
3840 - return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectComponentByUid)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)(), componentUid);
3841 - }
3842 -};
3843 -
3844 -/***/ }),
3845 -
3846 -/***/ "./packages/packages/core/editor-components/src/store/store-types.ts":
3847 -/*!***************************************************************************!*\
3848 - !*** ./packages/packages/core/editor-components/src/store/store-types.ts ***!
3849 - \***************************************************************************/
3850 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3851 -
3852 -__webpack_require__.r(__webpack_exports__);
3853 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3854 -/* harmony export */ SLICE_NAME: function() { return /* binding */ SLICE_NAME; },
3855 -/* harmony export */ initialState: function() { return /* binding */ initialState; }
3856 -/* harmony export */ });
3857 -const initialState = {
3858 - data: [],
3859 - unpublishedData: [],
3860 - loadStatus: 'idle',
3861 - createdThisSession: [],
3862 - archivedThisSession: [],
3863 - path: [],
3864 - currentComponentId: null,
3865 - updatedComponentNames: {},
3866 - sanitized: {}
3867 -};
3868 -const SLICE_NAME = 'components';
3869 -
3870 -/***/ }),
3871 -
3872 -/***/ "./packages/packages/core/editor-components/src/store/store.ts":
3873 -/*!*********************************************************************!*\
3874 - !*** ./packages/packages/core/editor-components/src/store/store.ts ***!
3875 - \*********************************************************************/
3876 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3877 -
3878 -__webpack_require__.r(__webpack_exports__);
3879 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3880 -/* harmony export */ SLICE_NAME: function() { return /* reexport safe */ _store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME; },
3881 -/* harmony export */ __resetExtraReducers: function() { return /* reexport safe */ _extensible_slice__WEBPACK_IMPORTED_MODULE_2__.__resetExtraReducers; },
3882 -/* harmony export */ createComponentsAction: function() { return /* reexport safe */ _extensible_slice__WEBPACK_IMPORTED_MODULE_2__.createComponentsAction; },
3883 -/* harmony export */ initialState: function() { return /* reexport safe */ _store_types__WEBPACK_IMPORTED_MODULE_1__.initialState; },
3884 -/* harmony export */ registerComponentsReducer: function() { return /* reexport safe */ _extensible_slice__WEBPACK_IMPORTED_MODULE_2__.registerComponentsReducer; },
3885 -/* harmony export */ selectArchivedThisSession: function() { return /* binding */ selectArchivedThisSession; },
3886 -/* harmony export */ selectComponent: function() { return /* binding */ selectComponent; },
3887 -/* harmony export */ selectComponentByUid: function() { return /* binding */ selectComponentByUid; },
3888 -/* harmony export */ selectComponents: function() { return /* binding */ selectComponents; },
3889 -/* harmony export */ selectCreatedThisSession: function() { return /* binding */ selectCreatedThisSession; },
3890 -/* harmony export */ selectCurrentComponent: function() { return /* binding */ selectCurrentComponent; },
3891 -/* harmony export */ selectCurrentComponentId: function() { return /* binding */ selectCurrentComponentId; },
3892 -/* harmony export */ selectData: function() { return /* binding */ selectData; },
3893 -/* harmony export */ selectIsOverridablePropsLoaded: function() { return /* binding */ selectIsOverridablePropsLoaded; },
3894 -/* harmony export */ selectLoadIsError: function() { return /* binding */ selectLoadIsError; },
3895 -/* harmony export */ selectLoadIsPending: function() { return /* binding */ selectLoadIsPending; },
3896 -/* harmony export */ selectOverridableProps: function() { return /* binding */ selectOverridableProps; },
3897 -/* harmony export */ selectPath: function() { return /* binding */ selectPath; },
3898 -/* harmony export */ selectUnpublishedComponents: function() { return /* binding */ selectUnpublishedComponents; },
3899 -/* harmony export */ selectUpdatedComponentNames: function() { return /* binding */ selectUpdatedComponentNames; },
3900 -/* harmony export */ slice: function() { return /* reexport safe */ _extensible_slice__WEBPACK_IMPORTED_MODULE_2__.slice; },
3901 -/* harmony export */ useComponent: function() { return /* binding */ useComponent; },
3902 -/* harmony export */ useCurrentComponent: function() { return /* binding */ useCurrentComponent; },
3903 -/* harmony export */ useCurrentComponentId: function() { return /* binding */ useCurrentComponentId; },
3904 -/* harmony export */ useIsSanitizedComponent: function() { return /* binding */ useIsSanitizedComponent; },
3905 -/* harmony export */ useOverridableProps: function() { return /* binding */ useOverridableProps; }
3906 -/* harmony export */ });
3907 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
3908 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
3909 -/* harmony import */ var _store_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./store-types */ "./packages/packages/core/editor-components/src/store/store-types.ts");
3910 -/* harmony import */ var _extensible_slice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./extensible-slice */ "./packages/packages/core/editor-components/src/store/extensible-slice.ts");
3911 -
3912 -
3913 -
3914 -
3915 -const selectData = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].data;
3916 -const selectArchivedThisSession = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].archivedThisSession;
3917 -const selectLoadStatus = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].loadStatus;
3918 -const selectUnpublishedData = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].unpublishedData;
3919 -const getCreatedThisSession = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].createdThisSession;
3920 -const getPath = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].path;
3921 -const getCurrentComponentId = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].currentComponentId;
3922 -const selectComponent = (state, componentId) => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].data.find(component => component.id === componentId);
3923 -const useComponent = componentId => {
3924 - return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(state => componentId ? selectComponent(state, componentId) : null);
3925 -};
3926 -const selectComponentByUid = (state, componentUid) => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].data.find(component => component.uid === componentUid) ?? state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].unpublishedData.find(component => component.uid === componentUid);
3927 -const selectComponents = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectData, selectUnpublishedData, (data, unpublishedData) => [...unpublishedData.map(item => ({
3928 - uid: item.uid,
3929 - name: item.name,
3930 - overridableProps: item.overridableProps
3931 -})), ...data.filter(component => !component.isArchived)]);
3932 -const selectUnpublishedComponents = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectUnpublishedData, unpublishedData => unpublishedData);
3933 -const selectLoadIsPending = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectLoadStatus, status => status === 'pending');
3934 -const selectLoadIsError = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectLoadStatus, status => status === 'error');
3935 -const selectCreatedThisSession = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(getCreatedThisSession, createdThisSession => createdThisSession);
3936 -const DEFAULT_OVERRIDABLE_PROPS = {
3937 - props: {},
3938 - groups: {
3939 - items: {},
3940 - order: []
3941 - }
3942 -};
3943 -const selectOverridableProps = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectComponent, component => {
3944 - if (!component) {
3945 - return undefined;
3946 - }
3947 - return component.overridableProps ?? DEFAULT_OVERRIDABLE_PROPS;
3948 -});
3949 -const useOverridableProps = componentId => {
3950 - return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(state => componentId ? selectOverridableProps(state, componentId) : null);
3951 -};
3952 -const selectIsOverridablePropsLoaded = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectComponent, component => {
3953 - return !!component?.overridableProps;
3954 -});
3955 -const selectPath = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(getPath, path => path);
3956 -const selectCurrentComponentId = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(getCurrentComponentId, currentComponentId => currentComponentId);
3957 -const selectCurrentComponent = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectData, getCurrentComponentId, (data, currentComponentId) => data.find(component => component.id === currentComponentId));
3958 -const useCurrentComponentId = () => {
3959 - return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(selectCurrentComponentId);
3960 -};
3961 -const useCurrentComponent = () => {
3962 - return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(selectCurrentComponent);
3963 -};
3964 -const selectUpdatedComponentNames = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].updatedComponentNames, updatedComponentNames => Object.entries(updatedComponentNames).map(([componentId, title]) => ({
3965 - componentId: Number(componentId),
3966 - title
3967 -})));
3968 -const useSanitizedComponents = () => {
3969 - return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].sanitized);
3970 -};
3971 -const useIsSanitizedComponent = (componentId, key) => {
3972 - const sanitizedComponents = useSanitizedComponents();
3973 - if (!componentId) {
3974 - return false;
3975 - }
3976 - return !!sanitizedComponents[componentId]?.[key];
3977 -};
3978 -
3979 -/***/ }),
3980 -
3981 -/***/ "./packages/packages/core/editor-components/src/store/thunks.ts":
3982 -/*!**********************************************************************!*\
3983 - !*** ./packages/packages/core/editor-components/src/store/thunks.ts ***!
3984 - \**********************************************************************/
3985 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3986 -
3987 -__webpack_require__.r(__webpack_exports__);
3988 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3989 -/* harmony export */ loadComponents: function() { return /* binding */ loadComponents; }
3990 -/* harmony export */ });
3991 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
3992 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
3993 -/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../api */ "./packages/packages/core/editor-components/src/api.ts");
3994 -
3995 -
3996 -const loadComponents = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createAsyncThunk)('components/load', async () => {
3997 - const response = await _api__WEBPACK_IMPORTED_MODULE_1__.apiClient.get();
3998 - return response;
3999 -});
4000 -
4001 -
4002 -/***/ }),
4003 -
4004 -/***/ "./packages/packages/core/editor-components/src/sync/before-save.ts":
4005 -/*!**************************************************************************!*\
4006 - !*** ./packages/packages/core/editor-components/src/sync/before-save.ts ***!
4007 - \**************************************************************************/
4008 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4009 -
4010 -__webpack_require__.r(__webpack_exports__);
4011 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4012 -/* harmony export */ beforeSave: function() { return /* binding */ beforeSave; }
4013 -/* harmony export */ });
4014 -/* harmony import */ var _publish_draft_components_in_page_before_save__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./publish-draft-components-in-page-before-save */ "./packages/packages/core/editor-components/src/sync/publish-draft-components-in-page-before-save.ts");
4015 -
4016 -const beforeSave = ({
4017 - container,
4018 - status
4019 -}) => {
4020 - const elements = container?.model.get('elements').toJSON?.() ?? [];
4021 - return (0,_publish_draft_components_in_page_before_save__WEBPACK_IMPORTED_MODULE_0__.publishDraftComponentsInPageBeforeSave)({
4022 - elements,
4023 - status
4024 - });
4025 -};
4026 -
4027 -/***/ }),
4028 -
4029 -/***/ "./packages/packages/core/editor-components/src/sync/load-component-data-after-instance-added.ts":
4030 -/*!*******************************************************************************************************!*\
4031 - !*** ./packages/packages/core/editor-components/src/sync/load-component-data-after-instance-added.ts ***!
4032 - \*******************************************************************************************************/
4033 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4034 -
4035 -__webpack_require__.r(__webpack_exports__);
4036 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4037 -/* harmony export */ initLoadComponentDataAfterInstanceAdded: function() { return /* binding */ initLoadComponentDataAfterInstanceAdded; }
4038 -/* harmony export */ });
4039 -/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
4040 -/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__);
4041 -/* harmony import */ var _store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../store/actions/load-components-assets */ "./packages/packages/core/editor-components/src/store/actions/load-components-assets.ts");
4042 -
4043 -
4044 -function initLoadComponentDataAfterInstanceAdded() {
4045 - (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__.registerDataHook)('after', 'document/elements/paste', (_args, result) => {
4046 - load(result);
4047 - });
4048 - (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__.registerDataHook)('after', 'document/elements/import', (_args, result) => {
4049 - load(result);
4050 - });
4051 -}
4052 -function load(result) {
4053 - if (!result) {
4054 - return;
4055 - }
4056 - const containers = Array.isArray(result) ? result : [result];
4057 - const elements = containers.map(container => container.model?.toJSON()).filter(element => !!element);
4058 - (0,_store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_1__.loadComponentsAssets)(elements);
4059 -}
4060 -
4061 -/***/ }),
4062 -
4063 -/***/ "./packages/packages/core/editor-components/src/sync/publish-draft-components-in-page-before-save.ts":
4064 -/*!***********************************************************************************************************!*\
4065 - !*** ./packages/packages/core/editor-components/src/sync/publish-draft-components-in-page-before-save.ts ***!
4066 - \***********************************************************************************************************/
4067 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4068 -
4069 -__webpack_require__.r(__webpack_exports__);
4070 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4071 -/* harmony export */ publishDraftComponentsInPageBeforeSave: function() { return /* binding */ publishDraftComponentsInPageBeforeSave; }
4072 -/* harmony export */ });
4073 -/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
4074 -/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__);
4075 -/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-notifications */ "@elementor/editor-notifications");
4076 -/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__);
4077 -/* harmony import */ var _elementor_http_client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/http-client */ "@elementor/http-client");
4078 -/* harmony import */ var _elementor_http_client__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_http_client__WEBPACK_IMPORTED_MODULE_2__);
4079 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
4080 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
4081 -/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../api */ "./packages/packages/core/editor-components/src/api.ts");
4082 -/* harmony import */ var _utils_get_component_documents__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/get-component-documents */ "./packages/packages/core/editor-components/src/utils/get-component-documents.ts");
4083 -
4084 -
4085 -
4086 -
4087 -
4088 -
4089 -const INSUFFICIENT_PERMISSIONS_ERROR_CODE = 'insufficient_permissions';
4090 -const PUBLISH_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-Instance-draft-failure/';
4091 -const PUBLISH_UPGRADE_NOTIFICATION_ID = 'component-publish-upgrade';
4092 -async function publishDraftComponentsInPageBeforeSave({
4093 - status,
4094 - elements
4095 -}) {
4096 - if (status !== 'publish') {
4097 - return;
4098 - }
4099 - const documents = await (0,_utils_get_component_documents__WEBPACK_IMPORTED_MODULE_5__.getComponentDocuments)({
4100 - elements
4101 - });
4102 - const draftIds = [...documents.values()].filter(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.isDocumentDirty).map(document => document.id);
4103 - if (draftIds.length === 0) {
4104 - return;
4105 - }
4106 - try {
4107 - await _api__WEBPACK_IMPORTED_MODULE_4__.apiClient.updateStatuses(draftIds, 'publish');
4108 - } catch (error) {
4109 - if (isInsufficientPermissionsError(error)) {
4110 - notifyPublishUpgrade();
4111 - return;
4112 - }
4113 - throw error;
4114 - }
4115 - draftIds.forEach(id => (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.invalidateDocumentData)(id));
4116 -}
4117 -function isInsufficientPermissionsError(error) {
4118 - return error instanceof _elementor_http_client__WEBPACK_IMPORTED_MODULE_2__.AxiosError && error.response?.data?.code === INSUFFICIENT_PERMISSIONS_ERROR_CODE;
4119 -}
4120 -function notifyPublishUpgrade() {
4121 - (0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__.notify)({
4122 - type: 'promotion',
4123 - id: PUBLISH_UPGRADE_NOTIFICATION_ID,
4124 - message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('You have unpublished component on this page. You need a pro version to publish it.', 'elementor'),
4125 - additionalActionProps: [{
4126 - size: 'small',
4127 - variant: 'contained',
4128 - color: 'promotion',
4129 - href: PUBLISH_UPGRADE_URL,
4130 - target: '_blank',
4131 - children: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Upgrade Now', 'elementor')
4132 - }]
4133 - });
4134 -}
4135 -
4136 -/***/ }),
4137 -
4138 -/***/ "./packages/packages/core/editor-components/src/utils/component-document-data.ts":
4139 -/*!***************************************************************************************!*\
4140 - !*** ./packages/packages/core/editor-components/src/utils/component-document-data.ts ***!
4141 - \***************************************************************************************/
4142 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4143 -
4144 -__webpack_require__.r(__webpack_exports__);
4145 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4146 -/* harmony export */ getComponentDocumentData: function() { return /* binding */ getComponentDocumentData; }
4147 -/* harmony export */ });
4148 -/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
4149 -/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__);
4150 -
4151 -const getComponentDocumentData = async id => {
4152 - const documentManager = (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.getV1DocumentsManager)();
4153 - try {
4154 - return await documentManager.request(id);
4155 - } catch {
4156 - return null;
4157 - }
4158 -};
4159 -
4160 -/***/ }),
4161 -
4162 -/***/ "./packages/packages/core/editor-components/src/utils/detach-component-instance/detach-component-instance.ts":
4163 -/*!*******************************************************************************************************************!*\
4164 - !*** ./packages/packages/core/editor-components/src/utils/detach-component-instance/detach-component-instance.ts ***!
4165 - \*******************************************************************************************************************/
4166 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4167 -
4168 -__webpack_require__.r(__webpack_exports__);
4169 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4170 -/* harmony export */ detachComponentInstance: function() { return /* binding */ detachComponentInstance; }
4171 -/* harmony export */ });
4172 -/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-canvas */ "@elementor/editor-canvas");
4173 -/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__);
4174 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
4175 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__);
4176 -/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
4177 -/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__);
4178 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
4179 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_3__);
4180 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
4181 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__);
4182 -/* harmony import */ var _prop_types_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../prop-types/component-instance-overrides-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-overrides-prop-type.ts");
4183 -/* harmony import */ var _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../prop-types/component-instance-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-prop-type.ts");
4184 -/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
4185 -/* harmony import */ var _component_document_data__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../component-document-data */ "./packages/packages/core/editor-components/src/utils/component-document-data.ts");
4186 -/* harmony import */ var _tracking__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../tracking */ "./packages/packages/core/editor-components/src/utils/tracking.ts");
4187 -/* harmony import */ var _resolve_detached_instance__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./resolve-detached-instance */ "./packages/packages/core/editor-components/src/utils/detach-component-instance/resolve-detached-instance.ts");
4188 -
4189 -
4190 -
4191 -
4192 -
4193 -
4194 -
4195 -
4196 -
4197 -
4198 -
4199 -const DETACH_EVENT = 'elementor/components/detach-instance';
4200 -const DETACH_UNDO_EVENT = 'elementor/components/undo-detach-instance';
4201 -const DETACH_REDO_EVENT = 'elementor/components/redo-detach-instance';
4202 -async function detachComponentInstance({
4203 - instanceId,
4204 - componentId,
4205 - trackingInfo
4206 -}) {
4207 - const instanceContainer = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.getContainer)(instanceId);
4208 - if (!instanceContainer) {
4209 - throw new Error(`Instance container with ID "${instanceId}" not found.`);
4210 - }
4211 - const componentData = await (0,_component_document_data__WEBPACK_IMPORTED_MODULE_8__.getComponentDocumentData)(componentId);
4212 - if (!componentData) {
4213 - throw new Error(`Component with ID "${componentId}" not found.`);
4214 - }
4215 - const rootElement = componentData.elements?.[0];
4216 - if (!rootElement) {
4217 - throw new Error(`Component with ID "${componentId}" has no root element.`);
4218 - }
4219 - const undoableDetach = (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__.undoable)({
4220 - do: () => {
4221 - const overrides = extractInstanceOverrides(instanceContainer);
4222 - const detachedInstanceElementData = (0,_resolve_detached_instance__WEBPACK_IMPORTED_MODULE_10__.resolveDetachedInstance)(rootElement, overrides);
4223 - const originalInstanceModel = instanceContainer.model.toJSON();
4224 - const actionId = new Date().getTime();
4225 -
4226 - // We should fire the event *before* replacing the element, so it will happen before delete event is fired.
4227 - // As we do overridable props cleanup for both events.
4228 - window.dispatchEvent(new CustomEvent(DETACH_EVENT, {
4229 - detail: {
4230 - detachedInstanceId: instanceId,
4231 - detachActionId: actionId
4232 - }
4233 - }));
4234 - const detachedElement = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.replaceElement)({
4235 - currentElementId: instanceId,
4236 - newElement: detachedInstanceElementData,
4237 - withHistory: false
4238 - });
4239 - (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.selectElement)(detachedElement.id);
4240 - const componentUid = (0,_store_store__WEBPACK_IMPORTED_MODULE_7__.selectComponent)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_3__.__getState)(), componentId)?.uid;
4241 - (0,_tracking__WEBPACK_IMPORTED_MODULE_9__.trackComponentEvent)({
4242 - action: 'detached',
4243 - executedBy: 'user',
4244 - component_uid: componentUid,
4245 - instance_id: instanceId,
4246 - location: trackingInfo.location,
4247 - secondary_location: trackingInfo.secondaryLocation,
4248 - trigger: trackingInfo.trigger
4249 - });
4250 - return {
4251 - detachedElement,
4252 - detachedInstanceElementData,
4253 - originalInstanceModel,
4254 - actionId
4255 - };
4256 - },
4257 - undo: (_, {
4258 - detachedElement,
4259 - originalInstanceModel,
4260 - actionId
4261 - }) => {
4262 - const restoredInstance = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.replaceElement)({
4263 - currentElementId: detachedElement.id,
4264 - newElement: originalInstanceModel,
4265 - withHistory: false
4266 - });
4267 - window.dispatchEvent(new CustomEvent(DETACH_UNDO_EVENT, {
4268 - detail: {
4269 - restoredInstanceId: restoredInstance.id,
4270 - detachActionId: actionId
4271 - }
4272 - }));
4273 -
4274 - // Wait for the instance to be restored
4275 - (0,_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__.doAfterRender)([restoredInstance.id], () => {
4276 - (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.selectElement)(restoredInstance.id);
4277 - });
4278 - return restoredInstance;
4279 - },
4280 - redo: (_, doReturn, restoredInstance) => {
4281 - const {
4282 - detachedInstanceElementData,
4283 - actionId
4284 - } = doReturn;
4285 - const detachedElement = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.replaceElement)({
4286 - currentElementId: restoredInstance.id,
4287 - newElement: detachedInstanceElementData,
4288 - withHistory: false
4289 - });
4290 - window.dispatchEvent(new CustomEvent(DETACH_REDO_EVENT, {
4291 - detail: {
4292 - detachedInstanceId: detachedElement.id,
4293 - detachActionId: actionId
4294 - }
4295 - }));
4296 - (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.selectElement)(detachedElement.id);
4297 - return {
4298 - ...doReturn,
4299 - detachedElement
4300 - };
4301 - }
4302 - }, {
4303 - title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('Detach from Component', 'elementor'),
4304 - subtitle: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('Instance detached', 'elementor')
4305 - });
4306 - return undoableDetach();
4307 -}
4308 -function extractInstanceOverrides(instanceContainer) {
4309 - const settings = instanceContainer.model.toJSON().settings;
4310 - const componentInstance = _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_6__.componentInstancePropTypeUtil.extract(settings?.component_instance);
4311 - const overrides = _prop_types_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_5__.componentInstanceOverridesPropTypeUtil.extract(componentInstance?.overrides);
4312 - return overrides ?? [];
4313 -}
4314 -
4315 -/***/ }),
4316 -
4317 -/***/ "./packages/packages/core/editor-components/src/utils/detach-component-instance/index.ts":
4318 -/*!***********************************************************************************************!*\
4319 - !*** ./packages/packages/core/editor-components/src/utils/detach-component-instance/index.ts ***!
4320 - \***********************************************************************************************/
4321 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4322 -
4323 -__webpack_require__.r(__webpack_exports__);
4324 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4325 -/* harmony export */ detachComponentInstance: function() { return /* reexport safe */ _detach_component_instance__WEBPACK_IMPORTED_MODULE_0__.detachComponentInstance; }
4326 -/* harmony export */ });
4327 -/* harmony import */ var _detach_component_instance__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./detach-component-instance */ "./packages/packages/core/editor-components/src/utils/detach-component-instance/detach-component-instance.ts");
4328 -
4329 -
4330 -/***/ }),
4331 -
4332 -/***/ "./packages/packages/core/editor-components/src/utils/detach-component-instance/regenerate-local-style-ids.ts":
4333 -/*!********************************************************************************************************************!*\
4334 - !*** ./packages/packages/core/editor-components/src/utils/detach-component-instance/regenerate-local-style-ids.ts ***!
4335 - \********************************************************************************************************************/
4336 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4337 -
4338 -__webpack_require__.r(__webpack_exports__);
4339 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4340 -/* harmony export */ regenerateLocalStyleIds: function() { return /* binding */ regenerateLocalStyleIds; }
4341 -/* harmony export */ });
4342 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
4343 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__);
4344 -/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props");
4345 -/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_1__);
4346 -
4347 -
4348 -// Ts version for atomic-widgets/assets/js/editor/utils/regenerate-local-style-ids.js
4349 -function regenerateLocalStyleIds(element) {
4350 - const originalStyles = element.styles;
4351 - if (!originalStyles || Object.keys(originalStyles).length === 0) {
4352 - return {
4353 - styles: undefined,
4354 - settings: undefined
4355 - };
4356 - }
4357 - const newStyles = {};
4358 - const styleIdMapping = {};
4359 - for (const [originalStyleId, style] of Object.entries(originalStyles)) {
4360 - const newStyleId = generateLocalStyleId(element.id);
4361 - newStyles[newStyleId] = {
4362 - ...style,
4363 - id: newStyleId
4364 - };
4365 - styleIdMapping[originalStyleId] = newStyleId;
4366 - }
4367 - const settings = element.settings;
4368 - if (!settings || Object.keys(settings).length === 0) {
4369 - return {
4370 - styles: newStyles,
4371 - settings: undefined
4372 - };
4373 - }
4374 - const updatedSettings = {
4375 - ...settings
4376 - };
4377 - for (const [propKey, propValue] of Object.entries(updatedSettings)) {
4378 - if (isClassesProp(propValue) && propValue.value.length > 0) {
4379 - const updatedClasses = propValue.value.map(classId => styleIdMapping[classId] ?? classId);
4380 - updatedSettings[propKey] = _elementor_editor_props__WEBPACK_IMPORTED_MODULE_1__.classesPropTypeUtil.create(updatedClasses);
4381 - }
4382 - }
4383 - return {
4384 - styles: newStyles,
4385 - settings: updatedSettings
4386 - };
4387 -}
4388 -function isClassesProp(prop) {
4389 - return _elementor_editor_props__WEBPACK_IMPORTED_MODULE_1__.classesPropTypeUtil.isValid(prop);
4390 -}
4391 -function generateLocalStyleId(elementId) {
4392 - return `e-${elementId}-${(0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.generateElementId)()}`;
4393 -}
4394 -
4395 -/***/ }),
4396 -
4397 -/***/ "./packages/packages/core/editor-components/src/utils/detach-component-instance/resolve-detached-instance.ts":
4398 -/*!*******************************************************************************************************************!*\
4399 - !*** ./packages/packages/core/editor-components/src/utils/detach-component-instance/resolve-detached-instance.ts ***!
4400 - \*******************************************************************************************************************/
4401 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4402 -
4403 -__webpack_require__.r(__webpack_exports__);
4404 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4405 -/* harmony export */ getOverridableOverride: function() { return /* binding */ getOverridableOverride; },
4406 -/* harmony export */ resolveDetachedInstance: function() { return /* binding */ resolveDetachedInstance; }
4407 -/* harmony export */ });
4408 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
4409 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__);
4410 -/* harmony import */ var _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../prop-types/component-instance-override-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts");
4411 -/* harmony import */ var _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../prop-types/component-overridable-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts");
4412 -/* harmony import */ var _regenerate_local_style_ids__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./regenerate-local-style-ids */ "./packages/packages/core/editor-components/src/utils/detach-component-instance/regenerate-local-style-ids.ts");
4413 -/* harmony import */ var _resolve_overridable_settings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./resolve-overridable-settings */ "./packages/packages/core/editor-components/src/utils/detach-component-instance/resolve-overridable-settings.ts");
4414 -
4415 -
4416 -
4417 -
4418 -
4419 -
4420 -/**
4421 - * Creates detached element from component instance
4422 - * by applying overrides, reverting overridables, and regenerating IDs.
4423 - * This is used when detaching a component instance from its origin component.
4424 - *
4425 - * The function goes through all nested elements recursively and:
4426 - * - Regenerates element IDs and local style IDs
4427 - * - Resolves overridable settings - applies all instance overrides to element settings,
4428 - * or replaces overridable with origin_value when no matching override exists.
4429 - *
4430 - * @param element - The component's root element
4431 - * @param overrides - Array of overrides from the component instance
4432 - * @return A new element data with all overrides applied and new IDs
4433 - */
4434 -function resolveDetachedInstance(element, overrides) {
4435 - const overrideMap = createOverrideMap(overrides);
4436 - return resolveElementRecursive(structuredClone(element), overrideMap);
4437 -}
4438 -function resolveElementRecursive(element, overrideMap) {
4439 - element.id = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.generateElementId)();
4440 - if (element.styles) {
4441 - const {
4442 - styles,
4443 - settings
4444 - } = (0,_regenerate_local_style_ids__WEBPACK_IMPORTED_MODULE_3__.regenerateLocalStyleIds)(element);
4445 - element.styles = styles;
4446 - if (settings) {
4447 - element.settings = {
4448 - ...element.settings,
4449 - ...settings
4450 - };
4451 - }
4452 - }
4453 - if (element.settings) {
4454 - element.settings = (0,_resolve_overridable_settings__WEBPACK_IMPORTED_MODULE_4__.resolveOverridableSettings)(element, overrideMap);
4455 - }
4456 - if (element.elements?.length) {
4457 - element.elements = element.elements.map(child => resolveElementRecursive(child, overrideMap));
4458 - }
4459 - return element;
4460 -}
4461 -function createOverrideMap(overrides) {
4462 - const map = new Map();
4463 - overrides.forEach(item => {
4464 - let override = null;
4465 - if (_prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentInstanceOverridePropTypeUtil.isValid(item)) {
4466 - override = item;
4467 - } else if (_prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentOverridablePropTypeUtil.isValid(item)) {
4468 - override = getOverridableOverride(item);
4469 - }
4470 - if (override) {
4471 - const overrideKey = override.value.override_key;
4472 - map.set(overrideKey, override);
4473 - }
4474 - });
4475 - return map;
4476 -}
4477 -function getOverridableOverride(propValue) {
4478 - if (!_prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentOverridablePropTypeUtil.isValid(propValue)) {
4479 - return null;
4480 - }
4481 - const originValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentOverridablePropTypeUtil.extract(propValue)?.origin_value;
4482 - if (!_prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentInstanceOverridePropTypeUtil.isValid(originValue)) {
4483 - return null;
4484 - }
4485 - return originValue;
4486 -}
4487 -
4488 -/***/ }),
4489 -
4490 -/***/ "./packages/packages/core/editor-components/src/utils/detach-component-instance/resolve-overridable-settings.ts":
4491 -/*!**********************************************************************************************************************!*\
4492 - !*** ./packages/packages/core/editor-components/src/utils/detach-component-instance/resolve-overridable-settings.ts ***!
4493 - \**********************************************************************************************************************/
4494 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4495 -
4496 -__webpack_require__.r(__webpack_exports__);
4497 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4498 -/* harmony export */ resolveOverridableSettings: function() { return /* binding */ resolveOverridableSettings; }
4499 -/* harmony export */ });
4500 -/* harmony import */ var _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../prop-types/component-instance-override-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts");
4501 -/* harmony import */ var _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../prop-types/component-instance-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-prop-type.ts");
4502 -/* harmony import */ var _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../prop-types/component-overridable-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts");
4503 -/* harmony import */ var _is_component_instance__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../is-component-instance */ "./packages/packages/core/editor-components/src/utils/is-component-instance.ts");
4504 -
4505 -
4506 -
4507 -
4508 -function resolveOverridableSettings(element, overrideMap) {
4509 - if ((0,_is_component_instance__WEBPACK_IMPORTED_MODULE_3__.isComponentInstance)({
4510 - widgetType: element.widgetType,
4511 - elType: element.elType
4512 - })) {
4513 - return resolveOverridableSettingsForComponentInstance(element, overrideMap);
4514 - }
4515 - return resolveOverridableSettingsForElement(element, overrideMap);
4516 -}
4517 -function resolveOverridableSettingsForElement(element, overrideMap) {
4518 - const updatedSettings = element.settings ? {
4519 - ...element.settings
4520 - } : {};
4521 - for (const [settingKey, settingValue] of Object.entries(element.settings ?? {})) {
4522 - updatedSettings[settingKey] = resolvePropValue(settingValue, overrideMap);
4523 - }
4524 - return updatedSettings;
4525 -}
4526 -function resolveOverridableSettingsForComponentInstance(element, overrideMap) {
4527 - const componentInstance = element.settings?.component_instance;
4528 - if (!_prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentInstancePropTypeUtil.isValid(componentInstance)) {
4529 - return element.settings ?? {};
4530 - }
4531 - const instanceOverrides = componentInstance.value.overrides?.value;
4532 - if (!instanceOverrides?.length) {
4533 - return element.settings ?? {};
4534 - }
4535 - const updatedOverrides = instanceOverrides.map(item => resolvePropValue(item, overrideMap, {
4536 - isOverridableOverride: true
4537 - }));
4538 - return {
4539 - ...element.settings,
4540 - component_instance: {
4541 - ...componentInstance,
4542 - value: {
4543 - ...componentInstance.value,
4544 - overrides: {
4545 - ...componentInstance.value.overrides,
4546 - value: updatedOverrides
4547 - }
4548 - }
4549 - }
4550 - };
4551 -}
4552 -function resolvePropValue(propValue, overrideMap, options) {
4553 - const {
4554 - isOverridableOverride = false
4555 - } = options ?? {};
4556 -
4557 - // if it's not an overridable, return the prop value as is
4558 - if (!_prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentOverridablePropTypeUtil.isValid(propValue)) {
4559 - return propValue;
4560 - }
4561 - const overridableKey = propValue.value.override_key;
4562 - const matchingOverride = overrideMap.get(overridableKey);
4563 - const originValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentOverridablePropTypeUtil.extract(propValue)?.origin_value;
4564 -
4565 - // if no matching override, return the overridable's origin value
4566 - if (!matchingOverride) {
4567 - return originValue;
4568 - }
4569 - if (isOverridableOverride) {
4570 - return resolveOverridableOverride(matchingOverride, originValue);
4571 - }
4572 -
4573 - // for regular props, when there's a non null matching override, return the matching override value,
4574 - // otherwise return the origin value
4575 - const matchingOverrideValue = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.extract(matchingOverride)?.override_value;
4576 - return matchingOverrideValue ?? originValue;
4577 -}
4578 -function resolveOverridableOverride(matchingOverride, originValue) {
4579 - if (!originValue || !_prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.isValid(originValue)) {
4580 - return null;
4581 - }
4582 -
4583 - // for overridable overrides, we should create a new override with the matching override value
4584 - // but keep the origin value's override key and schema source, so they'll match the inner component.
4585 - return _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.create({
4586 - override_value: matchingOverride.value.override_value,
4587 - override_key: originValue.value.override_key,
4588 - schema_source: originValue.value.schema_source
4589 - });
4590 -}
4591 -
4592 -/***/ }),
4593 -
4594 -/***/ "./packages/packages/core/editor-components/src/utils/filter-valid-overridable-props.ts":
4595 -/*!**********************************************************************************************!*\
4596 - !*** ./packages/packages/core/editor-components/src/utils/filter-valid-overridable-props.ts ***!
4597 - \**********************************************************************************************/
4598 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4599 -
4600 -__webpack_require__.r(__webpack_exports__);
4601 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4602 -/* harmony export */ filterValidOverridableProps: function() { return /* binding */ filterValidOverridableProps; },
4603 -/* harmony export */ isExposedPropValid: function() { return /* binding */ isExposedPropValid; }
4604 -/* harmony export */ });
4605 -/* harmony import */ var _resolve_overrides_chain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./resolve-overrides-chain */ "./packages/packages/core/editor-components/src/utils/resolve-overrides-chain.ts");
4606 -
4607 -function filterValidOverridableProps(overridableProps,
4608 -// instanceElementId is used to find the component inner elements,
4609 -// and should be passed when editing component instance (not in component edit mode)
4610 -instanceElementId) {
4611 - const validProps = {};
4612 - for (const [key, prop] of Object.entries(overridableProps.props)) {
4613 - if (isExposedPropValid(prop, instanceElementId)) {
4614 - validProps[key] = prop;
4615 - }
4616 - }
4617 - const validPropKeys = new Set(Object.keys(validProps));
4618 - const filteredGroups = {
4619 - items: Object.fromEntries(Object.entries(overridableProps.groups.items).map(([groupId, group]) => [groupId, {
4620 - ...group,
4621 - props: group.props.filter(propKey => validPropKeys.has(propKey))
4622 - }])),
4623 - order: overridableProps.groups.order
4624 - };
4625 - return {
4626 - props: validProps,
4627 - groups: filteredGroups
4628 - };
4629 -}
4630 -function isExposedPropValid(prop, instanceElementId) {
4631 - const {
4632 - isChainBroken
4633 - } = (0,_resolve_overrides_chain__WEBPACK_IMPORTED_MODULE_0__.resolveOverridesChain)({
4634 - outerOverridableProp: prop,
4635 - outerInstanceId: instanceElementId
4636 - });
4637 - return !isChainBroken;
4638 -}
4639 -
4640 -/***/ }),
4641 -
4642 -/***/ "./packages/packages/core/editor-components/src/utils/format-component-elements-id.ts":
4643 -/*!********************************************************************************************!*\
4644 - !*** ./packages/packages/core/editor-components/src/utils/format-component-elements-id.ts ***!
4645 - \********************************************************************************************/
4646 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4647 -
4648 -__webpack_require__.r(__webpack_exports__);
4649 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4650 -/* harmony export */ formatComponentElementsId: function() { return /* binding */ formatComponentElementsId; }
4651 -/* harmony export */ });
4652 -/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/utils */ "@elementor/utils");
4653 -/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_utils__WEBPACK_IMPORTED_MODULE_0__);
4654 -
4655 -const ELEMENT_ID_LENGTH = 7;
4656 -// The purpose of this function is to solve the issue of component inner elements having the same ID
4657 -// when there are multiple instances of the same component on a page.
4658 -// We change the ID of the inner elements to a hash of the nesting path of the element and the element's originalID.
4659 -function formatComponentElementsId(elements, path) {
4660 - return elements.map(element => {
4661 - const nestingPath = [...path, element.id];
4662 - const id = (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.hashString)(nestingPath.join('_'), ELEMENT_ID_LENGTH);
4663 - return {
4664 - ...element,
4665 - id,
4666 - originId: element.id,
4667 - elements: element.elements ? formatComponentElementsId(element.elements, nestingPath) : undefined
4668 - };
4669 - });
4670 -}
4671 -
4672 -/***/ }),
4673 -
4674 -/***/ "./packages/packages/core/editor-components/src/utils/get-component-documents.ts":
4675 -/*!***************************************************************************************!*\
4676 - !*** ./packages/packages/core/editor-components/src/utils/get-component-documents.ts ***!
4677 - \***************************************************************************************/
4678 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4679 -
4680 -__webpack_require__.r(__webpack_exports__);
4681 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4682 -/* harmony export */ getComponentDocuments: function() { return /* binding */ getComponentDocuments; }
4683 -/* harmony export */ });
4684 -/* harmony import */ var _component_document_data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./component-document-data */ "./packages/packages/core/editor-components/src/utils/component-document-data.ts");
4685 -/* harmony import */ var _is_component_instance__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-component-instance */ "./packages/packages/core/editor-components/src/utils/is-component-instance.ts");
4686 -
4687 -
4688 -async function getComponentDocuments({
4689 - elements,
4690 - cache = new Map(),
4691 - isRecursive = true
4692 -}) {
4693 - const componentIds = await getComponentIds(elements, cache, isRecursive);
4694 - return getDocumentsMap(componentIds, cache);
4695 -}
4696 -async function getComponentIds(elements, cache, isRecursive) {
4697 - const results = await Promise.all(elements.filter(Boolean).map(async ({
4698 - widgetType,
4699 - elType,
4700 - elements: childElements,
4701 - settings
4702 - }) => {
4703 - const ids = [];
4704 - if ((0,_is_component_instance__WEBPACK_IMPORTED_MODULE_1__.isComponentInstance)({
4705 - widgetType,
4706 - elType
4707 - })) {
4708 - const componentId = settings?.component_instance?.value?.component_id.value;
4709 - if (!componentId) {
4710 - return ids;
4711 - }
4712 - ids.push(componentId);
4713 - if (!cache.has(componentId)) {
4714 - cache.set(componentId, (0,_component_document_data__WEBPACK_IMPORTED_MODULE_0__.getComponentDocumentData)(componentId));
4715 - }
4716 - if (isRecursive) {
4717 - const doc = await cache.get(componentId);
4718 - childElements = doc?.elements;
4719 - }
4720 - }
4721 - if (childElements?.length) {
4722 - const childIds = await getComponentIds(childElements, cache, isRecursive);
4723 - ids.push(...childIds);
4724 - }
4725 - return ids;
4726 - }));
4727 - return [...new Set(results.flat())];
4728 -}
4729 -async function getDocumentsMap(ids, cache) {
4730 - const documents = await Promise.all(ids.map(async id => {
4731 - const document = await cache.get(id);
4732 - if (!document) {
4733 - return null;
4734 - }
4735 - return [id, document];
4736 - }));
4737 - return new Map(documents.filter(document => document !== null));
4738 -}
4739 -
4740 -/***/ }),
4741 -
4742 -/***/ "./packages/packages/core/editor-components/src/utils/get-container-by-origin-id.ts":
4743 -/*!******************************************************************************************!*\
4744 - !*** ./packages/packages/core/editor-components/src/utils/get-container-by-origin-id.ts ***!
4745 - \******************************************************************************************/
4746 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4747 -
4748 -__webpack_require__.r(__webpack_exports__);
4749 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4750 -/* harmony export */ getContainerByOriginId: function() { return /* binding */ getContainerByOriginId; }
4751 -/* harmony export */ });
4752 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
4753 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__);
4754 -
4755 -/**
4756 - * Resolves a container by its origin ID, with optional scoping to a component instance.
4757 - *
4758 - * When component instances are rendered, their inner elements get prefixed IDs
4759 - * (e.g., `{instanceId}_{originalId}`), but store data uses original IDs.
4760 - * This function bridges between the two by searching for elements with a matching `originId`.
4761 - *
4762 - * @param originElementId - The original (unprefixed) element ID from store data
4763 - * @param instanceElementId - Optional instance widget ID to scope the search
4764 - *
4765 - * @return The container with prefixed runtime ID, or null if not found
4766 - *
4767 - * @example
4768 - * // Component editing mode (no prefixing)
4769 - * getContainerByOriginId('element-1') // returns container with id='element-1'
4770 - *
4771 - * @example
4772 - * // Instance editing mode (with hash prefixing)
4773 - * getContainerByOriginId('element-1', 'instance-abc')
4774 - * // returns container with id='{hash}_element-1' and originId='element-1'
4775 - */
4776 -function getContainerByOriginId(originElementId, instanceElementId) {
4777 - if (!instanceElementId) {
4778 - return (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.getContainer)(originElementId);
4779 - }
4780 - const instanceContainer = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.getContainer)(instanceElementId);
4781 - if (!instanceContainer) {
4782 - return null;
4783 - }
4784 - const legacyWindow = window;
4785 - return legacyWindow.elementor?.getContainerByKeyValue?.({
4786 - key: 'originId',
4787 - value: originElementId,
4788 - parent: instanceContainer.view
4789 - }) ?? null;
4790 -}
4791 -
4792 -/***/ }),
4793 -
4794 -/***/ "./packages/packages/core/editor-components/src/utils/get-overridable-prop.ts":
4795 -/*!************************************************************************************!*\
4796 - !*** ./packages/packages/core/editor-components/src/utils/get-overridable-prop.ts ***!
4797 - \************************************************************************************/
4798 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4799 -
4800 -__webpack_require__.r(__webpack_exports__);
4801 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4802 -/* harmony export */ getOverridableProp: function() { return /* binding */ getOverridableProp; }
4803 -/* harmony export */ });
4804 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
4805 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
4806 -/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
4807 -
4808 -
4809 -function getOverridableProp({
4810 - componentId,
4811 - overrideKey
4812 -}) {
4813 - const overridableProps = (0,_store_store__WEBPACK_IMPORTED_MODULE_1__.selectOverridableProps)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)(), componentId);
4814 - if (!overridableProps) {
4815 - return undefined;
4816 - }
4817 - return overridableProps.props[overrideKey];
4818 -}
4819 -
4820 -/***/ }),
4821 -
4822 -/***/ "./packages/packages/core/editor-components/src/utils/get-prop-type-for-component-override.ts":
4823 -/*!****************************************************************************************************!*\
4824 - !*** ./packages/packages/core/editor-components/src/utils/get-prop-type-for-component-override.ts ***!
4825 - \****************************************************************************************************/
4826 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4827 -
4828 -__webpack_require__.r(__webpack_exports__);
4829 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4830 -/* harmony export */ getPropTypeForComponentOverride: function() { return /* binding */ getPropTypeForComponentOverride; }
4831 -/* harmony export */ });
4832 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
4833 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__);
4834 -
4835 -const getPropTypeForComponentOverride = overridableProp => {
4836 - if (overridableProp.originPropFields) {
4837 - return getPropType(overridableProp.originPropFields);
4838 - }
4839 - const {
4840 - widgetType,
4841 - propKey
4842 - } = overridableProp;
4843 - return getPropType({
4844 - widgetType,
4845 - propKey
4846 - });
4847 -};
4848 -function getPropType({
4849 - widgetType,
4850 - propKey
4851 -}) {
4852 - const widgetPropsSchema = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.getWidgetsCache)()?.[widgetType]?.atomic_props_schema;
4853 - return widgetPropsSchema?.[propKey];
4854 -}
4855 -
4856 -/***/ }),
4857 -
4858 -/***/ "./packages/packages/core/editor-components/src/utils/is-component-instance.ts":
4859 -/*!*************************************************************************************!*\
4860 - !*** ./packages/packages/core/editor-components/src/utils/is-component-instance.ts ***!
4861 - \*************************************************************************************/
4862 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4863 -
4864 -__webpack_require__.r(__webpack_exports__);
4865 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4866 -/* harmony export */ isComponentInstance: function() { return /* binding */ isComponentInstance; }
4867 -/* harmony export */ });
4868 -/* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../consts */ "./packages/packages/core/editor-components/src/consts.ts");
4869 -
4870 -function isComponentInstance(elementModel) {
4871 - return [elementModel.widgetType, elementModel.elType].includes(_consts__WEBPACK_IMPORTED_MODULE_0__.COMPONENT_WIDGET_TYPE);
4872 -}
4873 -
4874 -/***/ }),
4875 -
4876 -/***/ "./packages/packages/core/editor-components/src/utils/is-pro-components-supported.ts":
4877 -/*!*******************************************************************************************!*\
4878 - !*** ./packages/packages/core/editor-components/src/utils/is-pro-components-supported.ts ***!
4879 - \*******************************************************************************************/
4880 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4881 -
4882 -__webpack_require__.r(__webpack_exports__);
4883 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4884 -/* harmony export */ isProComponentsSupported: function() { return /* binding */ isProComponentsSupported; },
4885 -/* harmony export */ isProOutdatedForComponents: function() { return /* binding */ isProOutdatedForComponents; }
4886 -/* harmony export */ });
4887 -/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/utils */ "@elementor/utils");
4888 -/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_utils__WEBPACK_IMPORTED_MODULE_0__);
4889 -
4890 -const MIN_PRO_VERSION_FOR_COMPONENTS = '4.0';
4891 -function isProComponentsSupported() {
4892 - return (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.hasProInstalled)() && (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.isProAtLeast)(MIN_PRO_VERSION_FOR_COMPONENTS);
4893 -}
4894 -function isProOutdatedForComponents() {
4895 - return (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.hasProInstalled)() && !(0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.isProAtLeast)(MIN_PRO_VERSION_FOR_COMPONENTS);
4896 -}
4897 -
4898 -/***/ }),
4899 -
4900 -/***/ "./packages/packages/core/editor-components/src/utils/overridable-props-utils.ts":
4901 -/*!***************************************************************************************!*\
4902 - !*** ./packages/packages/core/editor-components/src/utils/overridable-props-utils.ts ***!
4903 - \***************************************************************************************/
4904 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4905 -
4906 -__webpack_require__.r(__webpack_exports__);
4907 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4908 -/* harmony export */ getMatchingOverride: function() { return /* binding */ getMatchingOverride; }
4909 -/* harmony export */ });
4910 -/* harmony import */ var _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../prop-types/component-instance-override-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts");
4911 -/* harmony import */ var _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../prop-types/component-overridable-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts");
4912 -
4913 -
4914 -function getMatchingOverride(overrides, overrideKey) {
4915 - return overrides?.find(override => {
4916 - const overridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentOverridablePropTypeUtil.extract(override);
4917 - if (overridableValue) {
4918 - const overrideValue = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.extract(overridableValue.origin_value);
4919 - return overrideValue?.override_key === overrideKey;
4920 - }
4921 - return override.value.override_key === overrideKey;
4922 - }) ?? null;
4923 -}
4924 -
4925 -/***/ }),
4926 -
4927 -/***/ "./packages/packages/core/editor-components/src/utils/resolve-override-prop-value.ts":
4928 -/*!*******************************************************************************************!*\
4929 - !*** ./packages/packages/core/editor-components/src/utils/resolve-override-prop-value.ts ***!
4930 - \*******************************************************************************************/
4931 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4932 -
4933 -__webpack_require__.r(__webpack_exports__);
4934 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4935 -/* harmony export */ resolveOverridePropValue: function() { return /* binding */ resolveOverridePropValue; }
4936 -/* harmony export */ });
4937 -/* harmony import */ var _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../prop-types/component-instance-override-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts");
4938 -/* harmony import */ var _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../prop-types/component-overridable-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts");
4939 -
4940 -
4941 -const resolveOverridePropValue = originalPropValue => {
4942 - const isOverridable = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentOverridablePropTypeUtil.isValid(originalPropValue);
4943 - if (isOverridable) {
4944 - return getOverridableValue(originalPropValue);
4945 - }
4946 - const isOverride = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.isValid(originalPropValue);
4947 - if (isOverride) {
4948 - return getOverrideValue(originalPropValue);
4949 - }
4950 - return originalPropValue;
4951 -};
4952 -function getOverridableValue(overridableProp) {
4953 - const overridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentOverridablePropTypeUtil.extract(overridableProp);
4954 - if (!overridableValue) {
4955 - return null;
4956 - }
4957 - const isOverride = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.isValid(overridableValue.origin_value);
4958 - if (isOverride) {
4959 - return getOverrideValue(overridableValue.origin_value);
4960 - }
4961 - return overridableValue.origin_value;
4962 -}
4963 -function getOverrideValue(overrideProp) {
4964 - const overrideValue = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.extract(overrideProp);
4965 - if (!overrideValue) {
4966 - return null;
4967 - }
4968 - return overrideValue.override_value;
4969 -}
4970 -
4971 -/***/ }),
4972 -
4973 -/***/ "./packages/packages/core/editor-components/src/utils/resolve-overrides-chain.ts":
4974 -/*!***************************************************************************************!*\
4975 - !*** ./packages/packages/core/editor-components/src/utils/resolve-overrides-chain.ts ***!
4976 - \***************************************************************************************/
4977 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4978 -
4979 -__webpack_require__.r(__webpack_exports__);
4980 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4981 -/* harmony export */ buildOverridesMap: function() { return /* binding */ buildOverridesMap; },
4982 -/* harmony export */ resolveOverridesChain: function() { return /* binding */ resolveOverridesChain; }
4983 -/* harmony export */ });
4984 -/* harmony import */ var _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../prop-types/component-instance-override-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts");
4985 -/* harmony import */ var _prop_types_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../prop-types/component-instance-overrides-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-overrides-prop-type.ts");
4986 -/* harmony import */ var _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../prop-types/component-instance-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-prop-type.ts");
4987 -/* harmony import */ var _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../prop-types/component-overridable-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts");
4988 -/* harmony import */ var _get_container_by_origin_id__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./get-container-by-origin-id */ "./packages/packages/core/editor-components/src/utils/get-container-by-origin-id.ts");
4989 -/* harmony import */ var _get_overridable_prop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./get-overridable-prop */ "./packages/packages/core/editor-components/src/utils/get-overridable-prop.ts");
4990 -
4991 -
4992 -
4993 -
4994 -
4995 -
4996 -// Recursively walks down a chain of nested component instances to find the innermost element
4997 -// and collect the overrides mapping for it.
4998 -// Returns the resolved inner element with its overrides mapping,
4999 -// or { isChainBroken: true } if any level in the chain is no longer overridable.
5000 -function resolveOverridesChain({
5001 - outerOverridableProp,
5002 - outerInstanceId,
5003 - overridesMapping = {}
5004 -}) {
5005 - // Stop condition: no originPropFields means we've reached the most inner component instance
5006 - if (!outerOverridableProp.originPropFields) {
5007 - const innerElement = (0,_get_container_by_origin_id__WEBPACK_IMPORTED_MODULE_4__.getContainerByOriginId)(outerOverridableProp.elementId, outerInstanceId);
5008 - if (!innerElement) {
5009 - throw new Error(`Inner element not found inside instance. elementId: ${outerOverridableProp.elementId}, instanceId: ${outerInstanceId}`);
5010 - }
5011 - return {
5012 - isChainBroken: false,
5013 - innerElement,
5014 - overridesMapping
5015 - };
5016 - }
5017 -
5018 - // Step 1: Find the intermediate component instance and read its settings.
5019 - const currentInstance = (0,_get_container_by_origin_id__WEBPACK_IMPORTED_MODULE_4__.getContainerByOriginId)(outerOverridableProp.elementId, outerInstanceId);
5020 - if (!currentInstance) {
5021 - // One of the instances in the chain was deleted.
5022 - return {
5023 - isChainBroken: true
5024 - };
5025 - }
5026 - const {
5027 - componentId,
5028 - overrides
5029 - } = extractComponentInstanceSettings(currentInstance);
5030 - if (!componentId) {
5031 - throw new Error(`Component ID not found for current instance. currentInstanceId: ${currentInstance.id}. outerInstanceId: ${outerInstanceId}`);
5032 - }
5033 -
5034 - // Collect overrides from this level, translating keys for exposed-further props.
5035 - const mergedOverrides = buildOverridesMap(overridesMapping, overrides ?? []);
5036 -
5037 - // Find the overridable-override that matches the outer overridable prop's key,
5038 - // to get the next level's overridable prop.
5039 - const override = findOverrideByOuterKey(overrides, outerOverridableProp.overrideKey);
5040 - const overrideKey = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.extract(override)?.override_key;
5041 - if (!override || !overrideKey) {
5042 - // No matching override found for the current level - it means it's no longer overridable.
5043 - return {
5044 - isChainBroken: true
5045 - };
5046 - }
5047 - const overridableProp = (0,_get_overridable_prop__WEBPACK_IMPORTED_MODULE_5__.getOverridableProp)({
5048 - componentId,
5049 - overrideKey
5050 - });
5051 - if (!overridableProp) {
5052 - throw new Error(`Overridable prop not found. componentId: ${componentId}, overrideKey: ${overrideKey}`);
5053 - }
5054 -
5055 - // Step 4: Recurse into the next nesting level.
5056 - return resolveOverridesChain({
5057 - outerOverridableProp: overridableProp,
5058 - outerInstanceId: currentInstance.id,
5059 - overridesMapping: mergedOverrides
5060 - });
5061 -}
5062 -
5063 -/**
5064 - * Builds overrides map from instances chain:
5065 - * At each level, we collect overrides from the current instance and merge them with the overrides from the outer levels.
5066 - *
5067 - * For exposed-further overrides (overridable wrapping an override), we have outer key (overridable's) and inner key (override's).
5068 - * If a higher level already set a value for the outer key, that value is carried forward to the inner key
5069 - * — same logic as the componentOverridableTransformer in the render pipeline.
5070 - *
5071 - * For simple overrides, that are not exposed further, we just use the override's key and value.
5072 - *
5073 - * @param existing - Previously accumulated overrides from outer levels.
5074 - * @param levelOverrides - The overrides array from the current level instance.
5075 - */
5076 -function buildOverridesMap(existing, levelOverrides) {
5077 - const result = {
5078 - ...existing
5079 - };
5080 - for (const item of levelOverrides) {
5081 - const overridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_3__.componentOverridablePropTypeUtil.extract(item);
5082 - if (overridableValue) {
5083 - // Exposed-further: overridable wraps an inner override with a different key.
5084 - const override = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.extract(overridableValue.origin_value);
5085 - if (!override) {
5086 - continue;
5087 - }
5088 - const outerKey = overridableValue.override_key;
5089 - const innerKey = override.override_key;
5090 - const innerValue = override.override_value;
5091 -
5092 - // If an upper level already set a value for the outer key, carry it forward to the inner key.
5093 - const higherLevelOverride = existing[outerKey];
5094 - if (higherLevelOverride) {
5095 - const outerValue = higherLevelOverride.value;
5096 - result[innerKey] = {
5097 - value: outerValue ?? innerValue,
5098 - outermostKey: higherLevelOverride.outermostKey ?? outerKey
5099 - };
5100 - continue;
5101 - }
5102 - result[innerKey] = {
5103 - value: innerValue,
5104 - outermostKey: outerKey
5105 - };
5106 - } else {
5107 - // Simple override: not exposed further, we just store the override's key and value.
5108 - const override = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.extract(item);
5109 - if (!override) {
5110 - continue;
5111 - }
5112 - const key = override.override_key;
5113 - const value = override.override_value;
5114 - result[key] = {
5115 - value
5116 - };
5117 - }
5118 - }
5119 - return result;
5120 -}
5121 -function extractComponentInstanceSettings(element) {
5122 - const instanceSetting = element.settings?.get('component_instance');
5123 - const instanceValue = _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentInstancePropTypeUtil.extract(instanceSetting);
5124 - const componentId = instanceValue?.component_id?.value;
5125 - const overrides = _prop_types_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentInstanceOverridesPropTypeUtil.extract(instanceValue?.overrides);
5126 - return {
5127 - componentId,
5128 - overrides
5129 - };
5130 -}
5131 -
5132 -// Finds the inner override prop whose wrapping overridable matches the given outer key.
5133 -function findOverrideByOuterKey(overrides, outerKey) {
5134 - if (!overrides) {
5135 - return null;
5136 - }
5137 - const overridableOverride = overrides.find(item => {
5138 - const overridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_3__.componentOverridablePropTypeUtil.extract(item);
5139 - if (!overridableValue) {
5140 - return false;
5141 - }
5142 - return overridableValue.override_key === outerKey;
5143 - });
5144 - const override = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_3__.componentOverridablePropTypeUtil.extract(overridableOverride)?.origin_value;
5145 - if (!override || !_prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.isValid(override)) {
5146 - return null;
5147 - }
5148 - return override;
5149 -}
5150 -
5151 -/***/ }),
5152 -
5153 -/***/ "./packages/packages/core/editor-components/src/utils/switch-to-component.ts":
5154 -/*!***********************************************************************************!*\
5155 - !*** ./packages/packages/core/editor-components/src/utils/switch-to-component.ts ***!
5156 - \***********************************************************************************/
5157 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5158 -
5159 -__webpack_require__.r(__webpack_exports__);
5160 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5161 -/* harmony export */ buildUniqueSelector: function() { return /* binding */ buildUniqueSelector; },
5162 -/* harmony export */ expandNavigator: function() { return /* binding */ expandNavigator; },
5163 -/* harmony export */ switchToComponent: function() { return /* binding */ switchToComponent; }
5164 -/* harmony export */ });
5165 -/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
5166 -/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__);
5167 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
5168 -/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__);
5169 -/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
5170 -/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__);
5171 -
5172 -
5173 -
5174 -async function switchToComponent(componentId, componentInstanceId, element) {
5175 - const selector = getSelector(element, componentInstanceId);
5176 - (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.invalidateDocumentData)(componentId);
5177 - await (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.switchToDocument)(componentId, {
5178 - selector,
5179 - mode: 'autosave',
5180 - setAsInitial: false,
5181 - shouldScroll: false
5182 - });
5183 - const currentDocumentContainer = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.getCurrentDocumentContainer)();
5184 - const topLevelElement = currentDocumentContainer?.children?.[0];
5185 - if (topLevelElement) {
5186 - (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.selectElement)(topLevelElement.id);
5187 - expandNavigator();
5188 - }
5189 -}
5190 -async function expandNavigator() {
5191 - await (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__.__privateRunCommand)('navigator/expand-all');
5192 -}
5193 -function getSelector(element, componentInstanceId) {
5194 - if (element) {
5195 - return buildUniqueSelector(element);
5196 - }
5197 - if (componentInstanceId) {
5198 - return `[data-id="${componentInstanceId}"]`;
5199 - }
5200 - return undefined;
5201 -}
5202 -function buildUniqueSelector(element) {
5203 - const selectors = [];
5204 - let current = element.closest('[data-id]');
5205 - while (current) {
5206 - const dataId = current.dataset.id;
5207 - const isComponentInstance = current.hasAttribute('data-elementor-id');
5208 - if (isComponentInstance) {
5209 - selectors.unshift(`[data-id="${dataId}"]`);
5210 - }
5211 - current = current.parentElement?.closest('[data-id]') ?? null;
5212 - }
5213 - if (selectors.length === 0) {
5214 - const closestElement = element.closest('[data-id]');
5215 - if (closestElement?.dataset?.id) {
5216 - return `[data-id="${closestElement.dataset.id}"]`;
5217 - }
5218 - }
5219 - return selectors.join(' ');
5220 -}
5221 -
5222 -/***/ }),
5223 -
5224 -/***/ "./packages/packages/core/editor-components/src/utils/tracking.ts":
5225 -/*!************************************************************************!*\
5226 - !*** ./packages/packages/core/editor-components/src/utils/tracking.ts ***!
5227 - \************************************************************************/
5228 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5229 -
5230 -__webpack_require__.r(__webpack_exports__);
5231 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5232 -/* harmony export */ onElementDrop: function() { return /* binding */ onElementDrop; },
5233 -/* harmony export */ trackComponentEvent: function() { return /* binding */ trackComponentEvent; }
5234 -/* harmony export */ });
5235 -/* harmony import */ var _elementor_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/events */ "@elementor/events");
5236 -/* harmony import */ var _elementor_events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_events__WEBPACK_IMPORTED_MODULE_0__);
5237 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
5238 -/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_1__);
5239 -/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
5240 -
5241 -
5242 -
5243 -
5244 -// TODO: Remove this type in version 4.4.0
5245 -/** @deprecated since 4.2.1 - use `ExecutedBy` instead */
5246 -
5247 -const FEATURE_NAME = 'Components';
5248 -const trackComponentEvent = ({
5249 - action,
5250 - source,
5251 - executedBy,
5252 - ...data
5253 -}) => {
5254 - if (source === 'system' || executedBy === 'system') {
5255 - return;
5256 - }
5257 - const {
5258 - dispatchEvent,
5259 - config
5260 - } = (0,_elementor_events__WEBPACK_IMPORTED_MODULE_0__.getMixpanel)();
5261 - if (!config?.names?.components?.[action]) {
5262 - return;
5263 - }
5264 - const name = config.names.components[action];
5265 - dispatchEvent?.(name, {
5266 - ...data,
5267 - executed_by: executedBy ?? source,
5268 - 'Feature name': FEATURE_NAME
5269 - });
5270 -};
5271 -
5272 -// TODO: Remove this function in version 4.4.0 - moved to pro
5273 -const onElementDrop = (_args, element) => {
5274 - if (!(element?.model?.get('widgetType') === 'e-component')) {
5275 - return;
5276 - }
5277 - const editorSettings = element.model.get('editor_settings');
5278 - const componentName = editorSettings?.title;
5279 - const componentUID = editorSettings?.component_uid;
5280 - const instanceId = element.id;
5281 - const createdThisSession = (0,_store_store__WEBPACK_IMPORTED_MODULE_2__.selectCreatedThisSession)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__getState)());
5282 - const isSameSessionReuse = componentUID && createdThisSession.includes(componentUID);
5283 - const eventsManagerConfig = window.elementorCommon.eventsManager.config;
5284 - const {
5285 - locations,
5286 - secondaryLocations
5287 - } = eventsManagerConfig;
5288 - trackComponentEvent({
5289 - action: 'instanceAdded',
5290 - executedBy: 'user',
5291 - instance_id: instanceId,
5292 - component_uid: componentUID,
5293 - component_name: componentName,
5294 - is_same_session_reuse: isSameSessionReuse,
5295 - location: locations.widgetPanel,
5296 - secondary_location: secondaryLocations.componentsTab
5297 - });
5298 -};
5299 -
5300 -/***/ }),
5301 -
5302 -/***/ "@elementor/editor":
5303 -/*!*****************************************!*\
5304 - !*** external ["elementorV2","editor"] ***!
5305 - \*****************************************/
5306 -/***/ (function(module) {
5307 -
5308 -module.exports = window["elementorV2"]["editor"];
5309 -
5310 -/***/ }),
5311 -
5312 -/***/ "@elementor/editor-canvas":
5313 -/*!***********************************************!*\
5314 - !*** external ["elementorV2","editorCanvas"] ***!
5315 - \***********************************************/
5316 -/***/ (function(module) {
5317 -
5318 -module.exports = window["elementorV2"]["editorCanvas"];
5319 -
5320 -/***/ }),
5321 -
5322 -/***/ "@elementor/editor-controls":
5323 -/*!*************************************************!*\
5324 - !*** external ["elementorV2","editorControls"] ***!
5325 - \*************************************************/
5326 -/***/ (function(module) {
5327 -
5328 -module.exports = window["elementorV2"]["editorControls"];
5329 -
5330 -/***/ }),
5331 -
5332 -/***/ "@elementor/editor-current-user":
5333 -/*!****************************************************!*\
5334 - !*** external ["elementorV2","editorCurrentUser"] ***!
5335 - \****************************************************/
5336 -/***/ (function(module) {
5337 -
5338 -module.exports = window["elementorV2"]["editorCurrentUser"];
5339 -
5340 -/***/ }),
5341 -
5342 -/***/ "@elementor/editor-documents":
5343 -/*!**************************************************!*\
5344 - !*** external ["elementorV2","editorDocuments"] ***!
5345 - \**************************************************/
5346 -/***/ (function(module) {
5347 -
5348 -module.exports = window["elementorV2"]["editorDocuments"];
5349 -
5350 -/***/ }),
5351 -
5352 -/***/ "@elementor/editor-editing-panel":
5353 -/*!*****************************************************!*\
5354 - !*** external ["elementorV2","editorEditingPanel"] ***!
5355 - \*****************************************************/
5356 -/***/ (function(module) {
5357 -
5358 -module.exports = window["elementorV2"]["editorEditingPanel"];
5359 -
5360 -/***/ }),
5361 -
5362 -/***/ "@elementor/editor-elements":
5363 -/*!*************************************************!*\
5364 - !*** external ["elementorV2","editorElements"] ***!
5365 - \*************************************************/
5366 -/***/ (function(module) {
5367 -
5368 -module.exports = window["elementorV2"]["editorElements"];
5369 -
5370 -/***/ }),
5371 -
5372 -/***/ "@elementor/editor-elements-panel":
5373 -/*!******************************************************!*\
5374 - !*** external ["elementorV2","editorElementsPanel"] ***!
5375 - \******************************************************/
5376 -/***/ (function(module) {
5377 -
5378 -module.exports = window["elementorV2"]["editorElementsPanel"];
5379 -
5380 -/***/ }),
5381 -
5382 -/***/ "@elementor/editor-embedded-documents-manager":
5383 -/*!*****************************************************************!*\
5384 - !*** external ["elementorV2","editorEmbeddedDocumentsManager"] ***!
5385 - \*****************************************************************/
5386 -/***/ (function(module) {
5387 -
5388 -module.exports = window["elementorV2"]["editorEmbeddedDocumentsManager"];
5389 -
5390 -/***/ }),
5391 -
5392 -/***/ "@elementor/editor-notifications":
5393 -/*!******************************************************!*\
5394 - !*** external ["elementorV2","editorNotifications"] ***!
5395 - \******************************************************/
5396 -/***/ (function(module) {
5397 -
5398 -module.exports = window["elementorV2"]["editorNotifications"];
5399 -
5400 -/***/ }),
5401 -
5402 -/***/ "@elementor/editor-panels":
5403 -/*!***********************************************!*\
5404 - !*** external ["elementorV2","editorPanels"] ***!
5405 - \***********************************************/
5406 -/***/ (function(module) {
5407 -
5408 -module.exports = window["elementorV2"]["editorPanels"];
5409 -
5410 -/***/ }),
5411 -
5412 -/***/ "@elementor/editor-props":
5413 -/*!**********************************************!*\
5414 - !*** external ["elementorV2","editorProps"] ***!
5415 - \**********************************************/
5416 -/***/ (function(module) {
5417 -
5418 -module.exports = window["elementorV2"]["editorProps"];
5419 -
5420 -/***/ }),
5421 -
5422 -/***/ "@elementor/editor-templates":
5423 -/*!**************************************************!*\
5424 - !*** external ["elementorV2","editorTemplates"] ***!
5425 - \**************************************************/
5426 -/***/ (function(module) {
5427 -
5428 -module.exports = window["elementorV2"]["editorTemplates"];
5429 -
5430 -/***/ }),
5431 -
5432 -/***/ "@elementor/editor-ui":
5433 -/*!*******************************************!*\
5434 - !*** external ["elementorV2","editorUi"] ***!
5435 - \*******************************************/
5436 -/***/ (function(module) {
5437 -
5438 -module.exports = window["elementorV2"]["editorUi"];
5439 -
5440 -/***/ }),
5441 -
5442 -/***/ "@elementor/editor-v1-adapters":
5443 -/*!***************************************************!*\
5444 - !*** external ["elementorV2","editorV1Adapters"] ***!
5445 - \***************************************************/
5446 -/***/ (function(module) {
5447 -
5448 -module.exports = window["elementorV2"]["editorV1Adapters"];
5449 -
5450 -/***/ }),
5451 -
5452 -/***/ "@elementor/events":
5453 -/*!*****************************************!*\
5454 - !*** external ["elementorV2","events"] ***!
5455 - \*****************************************/
5456 -/***/ (function(module) {
5457 -
5458 -module.exports = window["elementorV2"]["events"];
5459 -
5460 -/***/ }),
5461 -
5462 -/***/ "@elementor/http-client":
5463 -/*!*********************************************!*\
5464 - !*** external ["elementorV2","httpClient"] ***!
5465 - \*********************************************/
5466 -/***/ (function(module) {
5467 -
5468 -module.exports = window["elementorV2"]["httpClient"];
5469 -
5470 -/***/ }),
5471 -
5472 -/***/ "@elementor/icons":
5473 -/*!****************************************!*\
5474 - !*** external ["elementorV2","icons"] ***!
5475 - \****************************************/
5476 -/***/ (function(module) {
5477 -
5478 -module.exports = window["elementorV2"]["icons"];
5479 -
5480 -/***/ }),
5481 -
5482 -/***/ "@elementor/schema":
5483 -/*!*****************************************!*\
5484 - !*** external ["elementorV2","schema"] ***!
5485 - \*****************************************/
5486 -/***/ (function(module) {
5487 -
5488 -module.exports = window["elementorV2"]["schema"];
5489 -
5490 -/***/ }),
5491 -
5492 -/***/ "@elementor/store":
5493 -/*!****************************************!*\
5494 - !*** external ["elementorV2","store"] ***!
5495 - \****************************************/
5496 -/***/ (function(module) {
5497 -
5498 -module.exports = window["elementorV2"]["store"];
5499 -
5500 -/***/ }),
5501 -
5502 -/***/ "@elementor/ui":
5503 -/*!*************************************!*\
5504 - !*** external ["elementorV2","ui"] ***!
5505 - \*************************************/
5506 -/***/ (function(module) {
5507 -
5508 -module.exports = window["elementorV2"]["ui"];
5509 -
5510 -/***/ }),
5511 -
5512 -/***/ "@elementor/utils":
5513 -/*!****************************************!*\
5514 - !*** external ["elementorV2","utils"] ***!
5515 - \****************************************/
5516 -/***/ (function(module) {
5517 -
5518 -module.exports = window["elementorV2"]["utils"];
5519 -
5520 -/***/ }),
5521 -
5522 -/***/ "@wordpress/i18n":
5523 -/*!******************************!*\
5524 - !*** external ["wp","i18n"] ***!
5525 - \******************************/
5526 -/***/ (function(module) {
5527 -
5528 -module.exports = window["wp"]["i18n"];
5529 -
5530 -/***/ }),
5531 -
5532 -/***/ "react":
5533 -/*!**************************!*\
5534 - !*** external ["React"] ***!
5535 - \**************************/
5536 -/***/ (function(module) {
5537 -
5538 -module.exports = window["React"];
5539 -
5540 -/***/ })
5541 -
5542 -/******/ });
5543 -/************************************************************************/
5544 -/******/ // The module cache
5545 -/******/ var __webpack_module_cache__ = {};
5546 -/******/
5547 -/******/ // The require function
5548 -/******/ function __webpack_require__(moduleId) {
5549 -/******/ // Check if module is in cache
5550 -/******/ var cachedModule = __webpack_module_cache__[moduleId];
5551 -/******/ if (cachedModule !== undefined) {
5552 -/******/ return cachedModule.exports;
5553 -/******/ }
5554 -/******/ // Create a new module (and put it into the cache)
5555 -/******/ var module = __webpack_module_cache__[moduleId] = {
5556 -/******/ // no module.id needed
5557 -/******/ // no module.loaded needed
5558 -/******/ exports: {}
5559 -/******/ };
5560 -/******/
5561 -/******/ // Execute the module function
5562 -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
5563 -/******/
5564 -/******/ // Return the exports of the module
5565 -/******/ return module.exports;
5566 -/******/ }
5567 -/******/
5568 -/************************************************************************/
5569 -/******/ /* webpack/runtime/compat get default export */
5570 -/******/ !function() {
5571 -/******/ // getDefaultExport function for compatibility with non-harmony modules
5572 -/******/ __webpack_require__.n = function(module) {
5573 -/******/ var getter = module && module.__esModule ?
5574 -/******/ function() { return module['default']; } :
5575 -/******/ function() { return module; };
5576 -/******/ __webpack_require__.d(getter, { a: getter });
5577 -/******/ return getter;
5578 -/******/ };
5579 -/******/ }();
5580 -/******/
5581 -/******/ /* webpack/runtime/define property getters */
5582 -/******/ !function() {
5583 -/******/ // define getter functions for harmony exports
5584 -/******/ __webpack_require__.d = function(exports, definition) {
5585 -/******/ for(var key in definition) {
5586 -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
5587 -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
5588 -/******/ }
5589 -/******/ }
5590 -/******/ };
5591 -/******/ }();
5592 -/******/
5593 -/******/ /* webpack/runtime/hasOwnProperty shorthand */
5594 -/******/ !function() {
5595 -/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
5596 -/******/ }();
5597 -/******/
5598 -/******/ /* webpack/runtime/make namespace object */
5599 -/******/ !function() {
5600 -/******/ // define __esModule on exports
5601 -/******/ __webpack_require__.r = function(exports) {
5602 -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
5603 -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5604 -/******/ }
5605 -/******/ Object.defineProperty(exports, '__esModule', { value: true });
5606 -/******/ };
5607 -/******/ }();
5608 -/******/
5609 -/************************************************************************/
5610 -var __webpack_exports__ = {};
5611 -// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
5612 -!function() {
5613 -/*!***************************************************************!*\
5614 - !*** ./packages/packages/core/editor-components/src/index.ts ***!
5615 - \***************************************************************/
5616 -__webpack_require__.r(__webpack_exports__);
5617 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5618 -/* harmony export */ COMPONENT_WIDGET_TYPE: function() { return /* reexport safe */ _create_component_type__WEBPACK_IMPORTED_MODULE_12__.COMPONENT_WIDGET_TYPE; },
5619 -/* harmony export */ ComponentInstanceProvider: function() { return /* reexport safe */ _provider_component_instance_context__WEBPACK_IMPORTED_MODULE_20__.ComponentInstanceProvider; },
5620 -/* harmony export */ ComponentItem: function() { return /* reexport safe */ _components_components_tab_components_item__WEBPACK_IMPORTED_MODULE_3__.ComponentItem; },
5621 -/* harmony export */ ComponentName: function() { return /* reexport safe */ _components_components_tab_components_item__WEBPACK_IMPORTED_MODULE_3__.ComponentName; },
5622 -/* harmony export */ ComponentSearch: function() { return /* reexport safe */ _components_components_tab_component_search__WEBPACK_IMPORTED_MODULE_2__.ComponentSearch; },
5623 -/* harmony export */ ComponentsList: function() { return /* reexport safe */ _components_components_tab_components_list__WEBPACK_IMPORTED_MODULE_4__.ComponentsList; },
5624 -/* harmony export */ DetachAction: function() { return /* reexport safe */ _components_instance_editing_panel_detach_action__WEBPACK_IMPORTED_MODULE_11__.DetachAction; },
5625 -/* harmony export */ EditComponentAction: function() { return /* reexport safe */ _components_instance_editing_panel_instance_panel_header__WEBPACK_IMPORTED_MODULE_9__.EditComponentAction; },
5626 -/* harmony export */ EmptySearchResult: function() { return /* reexport safe */ _components_components_tab_components_list__WEBPACK_IMPORTED_MODULE_4__.EmptySearchResult; },
5627 -/* harmony export */ InstanceEmptyState: function() { return /* reexport safe */ _components_instance_editing_panel_empty_state__WEBPACK_IMPORTED_MODULE_7__.EmptyState; },
5628 -/* harmony export */ InstancePanelBody: function() { return /* reexport safe */ _components_instance_editing_panel_instance_panel_body__WEBPACK_IMPORTED_MODULE_8__.InstancePanelBody; },
5629 -/* harmony export */ InstancePanelHeader: function() { return /* reexport safe */ _components_instance_editing_panel_instance_panel_header__WEBPACK_IMPORTED_MODULE_9__.InstancePanelHeader; },
5630 -/* harmony export */ LoadingComponents: function() { return /* reexport safe */ _components_components_tab_loading_components__WEBPACK_IMPORTED_MODULE_5__.LoadingComponents; },
5631 -/* harmony export */ OverridablePropProvider: function() { return /* reexport safe */ _provider_overridable_prop_context__WEBPACK_IMPORTED_MODULE_21__.OverridablePropProvider; },
5632 -/* harmony export */ SLICE_NAME: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.SLICE_NAME; },
5633 -/* harmony export */ SearchProvider: function() { return /* reexport safe */ _components_components_tab_search_provider__WEBPACK_IMPORTED_MODULE_6__.SearchProvider; },
5634 -/* harmony export */ apiClient: function() { return /* reexport safe */ _api__WEBPACK_IMPORTED_MODULE_1__.apiClient; },
5635 -/* harmony export */ componentInstanceOverridePropTypeUtil: function() { return /* reexport safe */ _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_16__.componentInstanceOverridePropTypeUtil; },
5636 -/* harmony export */ componentInstanceOverridesPropTypeUtil: function() { return /* reexport safe */ _prop_types_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_17__.componentInstanceOverridesPropTypeUtil; },
5637 -/* harmony export */ componentInstancePropTypeUtil: function() { return /* reexport safe */ _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_18__.componentInstancePropTypeUtil; },
5638 -/* harmony export */ componentOverridablePropTypeUtil: function() { return /* reexport safe */ _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_19__.componentOverridablePropTypeUtil; },
5639 -/* harmony export */ componentsActions: function() { return /* reexport safe */ _store_dispatchers__WEBPACK_IMPORTED_MODULE_24__.componentsActions; },
5640 -/* harmony export */ componentsSelectors: function() { return /* reexport safe */ _store_selectors__WEBPACK_IMPORTED_MODULE_25__.componentsSelectors; },
5641 -/* harmony export */ createComponentsAction: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.createComponentsAction; },
5642 -/* harmony export */ filterValidOverridableProps: function() { return /* reexport safe */ _utils_filter_valid_overridable_props__WEBPACK_IMPORTED_MODULE_28__.filterValidOverridableProps; },
5643 -/* harmony export */ getComponentDocumentData: function() { return /* reexport safe */ _utils_component_document_data__WEBPACK_IMPORTED_MODULE_36__.getComponentDocumentData; },
5644 -/* harmony export */ getContainerByOriginId: function() { return /* reexport safe */ _utils_get_container_by_origin_id__WEBPACK_IMPORTED_MODULE_29__.getContainerByOriginId; },
5645 -/* harmony export */ getOverridableProp: function() { return /* reexport safe */ _utils_get_overridable_prop__WEBPACK_IMPORTED_MODULE_30__.getOverridableProp; },
5646 -/* harmony export */ getPropTypeForComponentOverride: function() { return /* reexport safe */ _utils_get_prop_type_for_component_override__WEBPACK_IMPORTED_MODULE_31__.getPropTypeForComponentOverride; },
5647 -/* harmony export */ init: function() { return /* reexport safe */ _init__WEBPACK_IMPORTED_MODULE_0__.init; },
5648 -/* harmony export */ isComponentInstance: function() { return /* reexport safe */ _utils_is_component_instance__WEBPACK_IMPORTED_MODULE_32__.isComponentInstance; },
5649 -/* harmony export */ loadComponentsAssets: function() { return /* reexport safe */ _store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_22__.loadComponentsAssets; },
5650 -/* harmony export */ onElementDrop: function() { return /* reexport safe */ _utils_tracking__WEBPACK_IMPORTED_MODULE_35__.onElementDrop; },
5651 -/* harmony export */ publishDraftComponentsInPageBeforeSave: function() { return /* reexport safe */ _sync_publish_draft_components_in_page_before_save__WEBPACK_IMPORTED_MODULE_27__.publishDraftComponentsInPageBeforeSave; },
5652 -/* harmony export */ registerComponentsReducer: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.registerComponentsReducer; },
5653 -/* harmony export */ resolveOverridePropValue: function() { return /* reexport safe */ _utils_resolve_override_prop_value__WEBPACK_IMPORTED_MODULE_33__.resolveOverridePropValue; },
5654 -/* harmony export */ selectComponentByUid: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.selectComponentByUid; },
5655 -/* harmony export */ selectCreatedThisSession: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.selectCreatedThisSession; },
5656 -/* harmony export */ selectOverridableProps: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.selectOverridableProps; },
5657 -/* harmony export */ selectPath: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.selectPath; },
5658 -/* harmony export */ slice: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.slice; },
5659 -/* harmony export */ switchToComponent: function() { return /* reexport safe */ _utils_switch_to_component__WEBPACK_IMPORTED_MODULE_34__.switchToComponent; },
5660 -/* harmony export */ trackComponentEvent: function() { return /* reexport safe */ _utils_tracking__WEBPACK_IMPORTED_MODULE_35__.trackComponentEvent; },
5661 -/* harmony export */ updateOverridableProp: function() { return /* reexport safe */ _store_actions_update_overridable_prop__WEBPACK_IMPORTED_MODULE_23__.updateOverridableProp; },
5662 -/* harmony export */ useComponentInstanceElement: function() { return /* reexport safe */ _provider_overridable_prop_context__WEBPACK_IMPORTED_MODULE_21__.useComponentInstanceElement; },
5663 -/* harmony export */ useComponents: function() { return /* reexport safe */ _hooks_use_components__WEBPACK_IMPORTED_MODULE_13__.useComponents; },
5664 -/* harmony export */ useComponentsPermissions: function() { return /* reexport safe */ _hooks_use_components_permissions__WEBPACK_IMPORTED_MODULE_14__.useComponentsPermissions; },
5665 -/* harmony export */ useCurrentComponent: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.useCurrentComponent; },
5666 -/* harmony export */ useCurrentComponentId: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.useCurrentComponentId; },
5667 -/* harmony export */ useFilteredComponents: function() { return /* reexport safe */ _components_components_tab_components_list__WEBPACK_IMPORTED_MODULE_4__.useFilteredComponents; },
5668 -/* harmony export */ useInstancePanelData: function() { return /* reexport safe */ _components_instance_editing_panel_use_instance_panel_data__WEBPACK_IMPORTED_MODULE_10__.useInstancePanelData; },
5669 -/* harmony export */ useIsSanitizedComponent: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.useIsSanitizedComponent; },
5670 -/* harmony export */ useOverridablePropValue: function() { return /* reexport safe */ _provider_overridable_prop_context__WEBPACK_IMPORTED_MODULE_21__.useOverridablePropValue; },
5671 -/* harmony export */ useOverridableProps: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.useOverridableProps; },
5672 -/* harmony export */ useSanitizeOverridableProps: function() { return /* reexport safe */ _hooks_use_sanitize_overridable_props__WEBPACK_IMPORTED_MODULE_15__.useSanitizeOverridableProps; }
5673 -/* harmony export */ });
5674 -/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./init */ "./packages/packages/core/editor-components/src/init.ts");
5675 -/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./api */ "./packages/packages/core/editor-components/src/api.ts");
5676 -/* harmony import */ var _components_components_tab_component_search__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/components-tab/component-search */ "./packages/packages/core/editor-components/src/components/components-tab/component-search.tsx");
5677 -/* harmony import */ var _components_components_tab_components_item__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/components-tab/components-item */ "./packages/packages/core/editor-components/src/components/components-tab/components-item.tsx");
5678 -/* harmony import */ var _components_components_tab_components_list__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/components-tab/components-list */ "./packages/packages/core/editor-components/src/components/components-tab/components-list.tsx");
5679 -/* harmony import */ var _components_components_tab_loading_components__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/components-tab/loading-components */ "./packages/packages/core/editor-components/src/components/components-tab/loading-components.tsx");
5680 -/* harmony import */ var _components_components_tab_search_provider__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/components-tab/search-provider */ "./packages/packages/core/editor-components/src/components/components-tab/search-provider.tsx");
5681 -/* harmony import */ var _components_instance_editing_panel_empty_state__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/instance-editing-panel/empty-state */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/empty-state.tsx");
5682 -/* harmony import */ var _components_instance_editing_panel_instance_panel_body__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/instance-editing-panel/instance-panel-body */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-body.tsx");
5683 -/* harmony import */ var _components_instance_editing_panel_instance_panel_header__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/instance-editing-panel/instance-panel-header */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-header.tsx");
5684 -/* harmony import */ var _components_instance_editing_panel_use_instance_panel_data__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/instance-editing-panel/use-instance-panel-data */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/use-instance-panel-data.ts");
5685 -/* harmony import */ var _components_instance_editing_panel_detach_action__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/instance-editing-panel/detach-action */ "./packages/packages/core/editor-components/src/components/instance-editing-panel/detach-action.tsx");
5686 -/* harmony import */ var _create_component_type__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./create-component-type */ "./packages/packages/core/editor-components/src/create-component-type.ts");
5687 -/* harmony import */ var _hooks_use_components__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./hooks/use-components */ "./packages/packages/core/editor-components/src/hooks/use-components.ts");
5688 -/* harmony import */ var _hooks_use_components_permissions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./hooks/use-components-permissions */ "./packages/packages/core/editor-components/src/hooks/use-components-permissions.ts");
5689 -/* harmony import */ var _hooks_use_sanitize_overridable_props__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./hooks/use-sanitize-overridable-props */ "./packages/packages/core/editor-components/src/hooks/use-sanitize-overridable-props.ts");
5690 -/* harmony import */ var _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./prop-types/component-instance-override-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts");
5691 -/* harmony import */ var _prop_types_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./prop-types/component-instance-overrides-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-overrides-prop-type.ts");
5692 -/* harmony import */ var _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./prop-types/component-instance-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-instance-prop-type.ts");
5693 -/* harmony import */ var _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./prop-types/component-overridable-prop-type */ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts");
5694 -/* harmony import */ var _provider_component_instance_context__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./provider/component-instance-context */ "./packages/packages/core/editor-components/src/provider/component-instance-context.tsx");
5695 -/* harmony import */ var _provider_overridable_prop_context__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./provider/overridable-prop-context */ "./packages/packages/core/editor-components/src/provider/overridable-prop-context.tsx");
5696 -/* harmony import */ var _store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./store/actions/load-components-assets */ "./packages/packages/core/editor-components/src/store/actions/load-components-assets.ts");
5697 -/* harmony import */ var _store_actions_update_overridable_prop__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./store/actions/update-overridable-prop */ "./packages/packages/core/editor-components/src/store/actions/update-overridable-prop.ts");
5698 -/* harmony import */ var _store_dispatchers__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./store/dispatchers */ "./packages/packages/core/editor-components/src/store/dispatchers.ts");
5699 -/* harmony import */ var _store_selectors__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./store/selectors */ "./packages/packages/core/editor-components/src/store/selectors.ts");
5700 -/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
5701 -/* harmony import */ var _sync_publish_draft_components_in_page_before_save__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./sync/publish-draft-components-in-page-before-save */ "./packages/packages/core/editor-components/src/sync/publish-draft-components-in-page-before-save.ts");
5702 -/* harmony import */ var _utils_filter_valid_overridable_props__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./utils/filter-valid-overridable-props */ "./packages/packages/core/editor-components/src/utils/filter-valid-overridable-props.ts");
5703 -/* harmony import */ var _utils_get_container_by_origin_id__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./utils/get-container-by-origin-id */ "./packages/packages/core/editor-components/src/utils/get-container-by-origin-id.ts");
5704 -/* harmony import */ var _utils_get_overridable_prop__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./utils/get-overridable-prop */ "./packages/packages/core/editor-components/src/utils/get-overridable-prop.ts");
5705 -/* harmony import */ var _utils_get_prop_type_for_component_override__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./utils/get-prop-type-for-component-override */ "./packages/packages/core/editor-components/src/utils/get-prop-type-for-component-override.ts");
5706 -/* harmony import */ var _utils_is_component_instance__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./utils/is-component-instance */ "./packages/packages/core/editor-components/src/utils/is-component-instance.ts");
5707 -/* harmony import */ var _utils_resolve_override_prop_value__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./utils/resolve-override-prop-value */ "./packages/packages/core/editor-components/src/utils/resolve-override-prop-value.ts");
5708 -/* harmony import */ var _utils_switch_to_component__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./utils/switch-to-component */ "./packages/packages/core/editor-components/src/utils/switch-to-component.ts");
5709 -/* harmony import */ var _utils_tracking__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./utils/tracking */ "./packages/packages/core/editor-components/src/utils/tracking.ts");
5710 -/* harmony import */ var _utils_component_document_data__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./utils/component-document-data */ "./packages/packages/core/editor-components/src/utils/component-document-data.ts");
5711 -
5712 -
5713 -
5714 -
5715 -
5716 -
5717 -
5718 -
5719 -
5720 -
5721 -
5722 -
5723 -
5724 -
5725 -
5726 -
5727 -
5728 -
5729 -
5730 -
5731 -
5732 -
5733 -
5734 -
5735 -
5736 -
5737 -
5738 -
5739 -
5740 -
5741 -
5742 -
5743 -
5744 -
5745 -
5746 -
5747 -
5748 -}();
5749 -(window.elementorV2 = window.elementorV2 || {}).editorComponents = __webpack_exports__;
5750 -/******/ })()
5751 -;
2931 +//#endregion
2932 +})(elementorV2.editor, elementorV2.editorCanvas, elementorV2.editorDocuments, elementorV2.editorEditingPanel, elementorV2.editorElementsPanel, elementorV2.editorEmbeddedDocumentsManager, elementorV2.editorV1Adapters, elementorV2.store, wp.i18n, elementorV2.httpClient, React, elementorV2.editorUi, elementorV2.ui, elementorV2.utils, elementorV2.icons, elementorV2.editorCurrentUser, elementorV2.editorNotifications, elementorV2.editorElements, elementorV2.editorProps, elementorV2.schema, elementorV2.events, elementorV2.editorPanels, elementorV2.editorControls, elementorV2.editorTemplates);
5752 2933 window.elementorV2.editorComponents?.init?.();
5753 2934 //# sourceMappingURL=editor-components.js.map