PluginProbe
Elementor Website Builder – more than just a page builder / 4.2.1
Elementor Website Builder – more than just a page builder v4.2.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 +5648 -2829 4.3.0 → 4.2.1 View file →
@@ -1,844 +1,781 @@
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) {
1 +/******/ (function() { // webpackBootstrap
2 +/******/ "use strict";
3 +/******/ var __webpack_modules__ = ({
2 4
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));
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__) {
45 10
46 -//#endregion
47 -react = __toESM(react);
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__);
48 20
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";
62 21
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 - };
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 +};
100 74
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 - });
75 +/***/ }),
106 76
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 - };
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__) {
220 82
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 - };
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");
282 93
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 - };
298 94
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 - });
317 95
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 - }
340 96
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 - });
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 +});
347 124
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 - };
125 +/***/ }),
356 126
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 - }
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__) {
366 132
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 - };
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__);
387 139
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 - };
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 +}
410 171
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 - };
172 +/***/ }),
422 173
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 - }
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__) {
494 179
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 - };
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__);
553 186
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 - };
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 +});
761 196
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 - }
197 +/***/ }),
788 198
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 - }
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__) {
799 204
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 - }
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");
827 218
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 - }
836 219
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 = `
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 = `
841 778 #elementor-panel-page-elements {
842 779 display: flex;
843 780 flex-direction: column;
844 781 height: 100%;
@@ -857,2078 +794,4960 @@
857 794 flex: 1;
858 795 min-height: 0;
859 796 }
860 797 `;
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 - };
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 +};
892 834
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 - }
835 +/***/ }),
920 836
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 - };
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__) {
941 842
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;
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__);
956 851
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 - }));
967 852
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 - }));
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 +};
977 911
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([]));
912 +/***/ }),
981 913
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 - }));
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__) {
988 919
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 - };
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__);
1023 929
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 - }
1063 930
1064 -//#endregion
1065 -//#region packages/packages/core/editor-components/src/consts.ts
1066 - var COMPONENT_WIDGET_TYPE$1 = "e-component";
1067 931
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 - }
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 +};
1073 963
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 - }
964 +/***/ }),
1126 965
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 - }
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__) {
1166 971
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 - }
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__);
1254 984
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 - }
1284 985
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 - }
1333 986
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 - };
1367 987
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 - }
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 +}
1388 1022
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;
1023 +/***/ }),
1397 1024
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 - }
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__) {
1416 1030
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 - };
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__);
1478 1043
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 - };
1515 1044
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 - }
1540 1045
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 - }
1554 1046
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 - }
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 +}
1564 1081
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 - };
1082 +/***/ }),
1575 1083
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 - });
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__) {
1586 1089
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 - }
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__);
1597 1100
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 - }
1635 1101
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 - }
1662 1102
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 - }
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 +};
1675 1114
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 - }
1115 +/***/ }),
1683 1116
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 - }
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__) {
1765 1122
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 - }
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__);
1824 1136
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 - }
1992 1137
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 - }
2047 1138
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 - }
2056 1139
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 - }
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 +}
2081 1158
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 - }
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 +}
2091 1173
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 - }
1174 +/***/ }),
2121 1175
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 - }
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__) {
2170 1181
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 - }
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__);
2205 1189
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 - }
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 +});
2214 1198
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 - }
1199 +/***/ }),
2232 1200
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 - }
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__) {
2246 1206
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 - }
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__);
2262 1221
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 - }
2308 1222
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 - }
2348 1223
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 - }
2660 1224
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 - }
2669 1225
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 - }
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 +};
2752 1261
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 - }
1262 +/***/ }),
2758 1263
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 - }
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__) {
2797 1269
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 - };
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");
2806 1285
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 - }
2821 1286
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 - }
2866 1287
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 - });
2926 1288
2927 -//#endregion
2928 -//#region \0elementor-package-library-entry
2929 - (window.elementorV2 = window.elementorV2 || {}).editorComponents = src_exports;
2930 1289
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);
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 +;
2933 5752 window.elementorV2.editorComponents?.init?.();
2934 5753 //# sourceMappingURL=editor-components.js.map